1 /* Run the C pre-processor over this file with one of the following defined
2 * ELF - elf object files,
3 * OUT - a.out object files,
4 * BSDI - BSDI style a.out object files
5 * SOL - Solaris style elf
8 #define TYPE(a,b) .type a,b
9 #define SIZE(a,b) .size a,b
11 #if defined(OUT) || defined(BSDI)
12 #define sha1_block_x86 _sha1_block_x86
30 #if defined(ELF) || defined(SOL)
36 You need to define one of
37 ELF
- elf systems
- linux
-elf
, NetBSD
and DG
-UX
38 OUT
- a
.out systems
- linux
-a
.out
and FreeBSD
39 SOL
- solaris systems
, which are elf with strange comment lines
40 BSDI
- a
.out with a very primative version of as
.
43 /* Let the Assembler begin :-) */
44 /* Don't even think of reading this code */
45 /* It was automatically generated by sha1-586.pl */
46 /* Which is a perl program used to generate the x86 assember for */
47 /* any of elf, a.out, BSDI,Win32, or Solaris */
48 /* eric <eay@cryptsoft.com> */
56 TYPE(sha1_block_x86
,@function
)
73 /* First we need to setup the X array */
76 /* First, load the words onto the stack in network byte order */
78 .byte
200 /* bswapl %eax */
82 .byte
200 /* bswapl %eax */
86 .byte
200 /* bswapl %eax */
90 .byte
200 /* bswapl %eax */
94 .byte
200 /* bswapl %eax */
98 .byte
200 /* bswapl %eax */
102 .byte
200 /* bswapl %eax */
106 .byte
200 /* bswapl %eax */
110 .byte
200 /* bswapl %eax */
114 .byte
200 /* bswapl %eax */
118 .byte
200 /* bswapl %eax */
122 .byte
200 /* bswapl %eax */
126 .byte
200 /* bswapl %eax */
130 .byte
200 /* bswapl %eax */
134 .byte
200 /* bswapl %eax */
138 .byte
200 /* bswapl %eax */
140 /* We now have the X array on the stack */
141 /* starting at sp-4 */
144 /* Start processing */
154 .byte
203 /* rorl $1 %ebx */
157 .byte
203 /* rorl $1 %ebx */
159 leal
1518500249(%ebp
,%edi
,1),%ebp
169 .byte
200 /* rorl $1 %eax */
172 .byte
200 /* rorl $1 %eax */
173 leal
1518500249(%ebp
,%edx
,1),%ebp
183 .byte
206 /* rorl $1 %esi */
186 .byte
206 /* rorl $1 %esi */
188 leal
1518500249(%ebp
,%ecx
,1),%ebp
198 .byte
207 /* rorl $1 %edi */
201 .byte
207 /* rorl $1 %edi */
202 leal
1518500249(%ebp
,%ebx
,1),%ebp
212 .byte
202 /* rorl $1 %edx */
215 .byte
202 /* rorl $1 %edx */
217 leal
1518500249(%ebp
,%eax
,1),%ebp
227 .byte
201 /* rorl $1 %ecx */
230 .byte
201 /* rorl $1 %ecx */
231 leal
1518500249(%ebp
,%esi
,1),%ebp
241 .byte
203 /* rorl $1 %ebx */
244 .byte
203 /* rorl $1 %ebx */
246 leal
1518500249(%ebp
,%edi
,1),%ebp
256 .byte
200 /* rorl $1 %eax */
259 .byte
200 /* rorl $1 %eax */
260 leal
1518500249(%ebp
,%edx
,1),%ebp
270 .byte
206 /* rorl $1 %esi */
273 .byte
206 /* rorl $1 %esi */
275 leal
1518500249(%ebp
,%ecx
,1),%ebp
285 .byte
207 /* rorl $1 %edi */
288 .byte
207 /* rorl $1 %edi */
289 leal
1518500249(%ebp
,%ebx
,1),%ebp
299 .byte
202 /* rorl $1 %edx */
302 .byte
202 /* rorl $1 %edx */
304 leal
1518500249(%ebp
,%eax
,1),%ebp
314 .byte
201 /* rorl $1 %ecx */
317 .byte
201 /* rorl $1 %ecx */
318 leal
1518500249(%ebp
,%esi
,1),%ebp
328 .byte
203 /* rorl $1 %ebx */
331 .byte
203 /* rorl $1 %ebx */
333 leal
1518500249(%ebp
,%edi
,1),%ebp
343 .byte
200 /* rorl $1 %eax */
346 .byte
200 /* rorl $1 %eax */
347 leal
1518500249(%ebp
,%edx
,1),%ebp
357 .byte
206 /* rorl $1 %esi */
360 .byte
206 /* rorl $1 %esi */
362 leal
1518500249(%ebp
,%ecx
,1),%ebp
372 .byte
207 /* rorl $1 %edi */
375 .byte
207 /* rorl $1 %edi */
376 leal
1518500249(%ebp
,%ebx
,1),%ebp
389 .byte
195 /* roll $1 %ebx */
393 leal
1518500249(%ebx
,%eax
,1),%ebx
399 .byte
202 /* rorl $1 %edx */
408 .byte
202 /* rorl $1 %edx */
411 .byte
192 /* roll $1 %eax */
416 leal
1518500249(%eax
,%esi
,1),%eax
421 .byte
201 /* rorl $1 %ecx */
424 .byte
201 /* rorl $1 %ecx */
436 .byte
198 /* roll $1 %esi */
440 leal
1518500249(%esi
,%edi
,1),%esi
446 .byte
203 /* rorl $1 %ebx */
455 .byte
203 /* rorl $1 %ebx */
458 .byte
199 /* roll $1 %edi */
463 leal
1518500249(%edi
,%edx
,1),%edi
468 .byte
200 /* rorl $1 %eax */
471 .byte
200 /* rorl $1 %eax */
483 .byte
194 /* roll $1 %edx */
487 leal
1859775393(%edx
,%ecx
,1),%edx
491 .byte
206 /* rorl $1 %esi */
494 .byte
206 /* rorl $1 %esi */
506 .byte
193 /* roll $1 %ecx */
510 leal
1859775393(%ecx
,%ebx
,1),%ecx
514 .byte
207 /* rorl $1 %edi */
517 .byte
207 /* rorl $1 %edi */
529 .byte
195 /* roll $1 %ebx */
533 leal
1859775393(%ebx
,%eax
,1),%ebx
537 .byte
202 /* rorl $1 %edx */
540 .byte
202 /* rorl $1 %edx */
552 .byte
192 /* roll $1 %eax */
556 leal
1859775393(%eax
,%esi
,1),%eax
560 .byte
201 /* rorl $1 %ecx */
563 .byte
201 /* rorl $1 %ecx */
575 .byte
198 /* roll $1 %esi */
579 leal
1859775393(%esi
,%edi
,1),%esi
583 .byte
203 /* rorl $1 %ebx */
586 .byte
203 /* rorl $1 %ebx */
598 .byte
199 /* roll $1 %edi */
602 leal
1859775393(%edi
,%edx
,1),%edi
606 .byte
200 /* rorl $1 %eax */
609 .byte
200 /* rorl $1 %eax */
621 .byte
194 /* roll $1 %edx */
625 leal
1859775393(%edx
,%ecx
,1),%edx
629 .byte
206 /* rorl $1 %esi */
632 .byte
206 /* rorl $1 %esi */
644 .byte
193 /* roll $1 %ecx */
648 leal
1859775393(%ecx
,%ebx
,1),%ecx
652 .byte
207 /* rorl $1 %edi */
655 .byte
207 /* rorl $1 %edi */
667 .byte
195 /* roll $1 %ebx */
671 leal
1859775393(%ebx
,%eax
,1),%ebx
675 .byte
202 /* rorl $1 %edx */
678 .byte
202 /* rorl $1 %edx */
690 .byte
192 /* roll $1 %eax */
694 leal
1859775393(%eax
,%esi
,1),%eax
698 .byte
201 /* rorl $1 %ecx */
701 .byte
201 /* rorl $1 %ecx */
713 .byte
198 /* roll $1 %esi */
717 leal
1859775393(%esi
,%edi
,1),%esi
721 .byte
203 /* rorl $1 %ebx */
724 .byte
203 /* rorl $1 %ebx */
736 .byte
199 /* roll $1 %edi */
740 leal
1859775393(%edi
,%edx
,1),%edi
744 .byte
200 /* rorl $1 %eax */
747 .byte
200 /* rorl $1 %eax */
759 .byte
194 /* roll $1 %edx */
763 leal
1859775393(%edx
,%ecx
,1),%edx
767 .byte
206 /* rorl $1 %esi */
770 .byte
206 /* rorl $1 %esi */
782 .byte
193 /* roll $1 %ecx */
786 leal
1859775393(%ecx
,%ebx
,1),%ecx
790 .byte
207 /* rorl $1 %edi */
793 .byte
207 /* rorl $1 %edi */
805 .byte
195 /* roll $1 %ebx */
809 leal
1859775393(%ebx
,%eax
,1),%ebx
813 .byte
202 /* rorl $1 %edx */
816 .byte
202 /* rorl $1 %edx */
828 .byte
192 /* roll $1 %eax */
832 leal
1859775393(%eax
,%esi
,1),%eax
836 .byte
201 /* rorl $1 %ecx */
839 .byte
201 /* rorl $1 %ecx */
851 .byte
198 /* roll $1 %esi */
855 leal
1859775393(%esi
,%edi
,1),%esi
859 .byte
203 /* rorl $1 %ebx */
862 .byte
203 /* rorl $1 %ebx */
874 .byte
199 /* roll $1 %edi */
878 leal
1859775393(%edi
,%edx
,1),%edi
882 .byte
200 /* rorl $1 %eax */
885 .byte
200 /* rorl $1 %eax */
897 .byte
194 /* roll $1 %edx */
901 leal
1859775393(%edx
,%ecx
,1),%edx
905 .byte
206 /* rorl $1 %esi */
908 .byte
206 /* rorl $1 %esi */
920 .byte
193 /* roll $1 %ecx */
924 leal
1859775393(%ecx
,%ebx
,1),%ecx
928 .byte
207 /* rorl $1 %edi */
931 .byte
207 /* rorl $1 %edi */
943 .byte
195 /* roll $1 %ebx */
947 leal
2400959708(%ebx
,%eax
,1),%ebx
950 .byte
202 /* rorl $1 %edx */
964 .byte
202 /* rorl $1 %edx */
967 .byte
192 /* roll $1 %eax */
971 leal
2400959708(%eax
,%esi
,1),%eax
979 .byte
201 /* rorl $1 %ecx */
982 .byte
201 /* rorl $1 %ecx */
995 .byte
198 /* roll $1 %esi */
999 leal
2400959708(%esi
,%edi
,1),%esi
1002 .byte
203 /* rorl $1 %ebx */
1016 .byte
203 /* rorl $1 %ebx */
1019 .byte
199 /* roll $1 %edi */
1023 leal
2400959708(%edi
,%edx
,1),%edi
1031 .byte
200 /* rorl $1 %eax */
1034 .byte
200 /* rorl $1 %eax */
1047 .byte
194 /* roll $1 %edx */
1051 leal
2400959708(%edx
,%ecx
,1),%edx
1054 .byte
206 /* rorl $1 %esi */
1068 .byte
206 /* rorl $1 %esi */
1071 .byte
193 /* roll $1 %ecx */
1075 leal
2400959708(%ecx
,%ebx
,1),%ecx
1083 .byte
207 /* rorl $1 %edi */
1086 .byte
207 /* rorl $1 %edi */
1099 .byte
195 /* roll $1 %ebx */
1103 leal
2400959708(%ebx
,%eax
,1),%ebx
1106 .byte
202 /* rorl $1 %edx */
1120 .byte
202 /* rorl $1 %edx */
1123 .byte
192 /* roll $1 %eax */
1127 leal
2400959708(%eax
,%esi
,1),%eax
1135 .byte
201 /* rorl $1 %ecx */
1138 .byte
201 /* rorl $1 %ecx */
1151 .byte
198 /* roll $1 %esi */
1155 leal
2400959708(%esi
,%edi
,1),%esi
1158 .byte
203 /* rorl $1 %ebx */
1172 .byte
203 /* rorl $1 %ebx */
1175 .byte
199 /* roll $1 %edi */
1179 leal
2400959708(%edi
,%edx
,1),%edi
1187 .byte
200 /* rorl $1 %eax */
1190 .byte
200 /* rorl $1 %eax */
1203 .byte
194 /* roll $1 %edx */
1207 leal
2400959708(%edx
,%ecx
,1),%edx
1210 .byte
206 /* rorl $1 %esi */
1224 .byte
206 /* rorl $1 %esi */
1227 .byte
193 /* roll $1 %ecx */
1231 leal
2400959708(%ecx
,%ebx
,1),%ecx
1239 .byte
207 /* rorl $1 %edi */
1242 .byte
207 /* rorl $1 %edi */
1255 .byte
195 /* roll $1 %ebx */
1259 leal
2400959708(%ebx
,%eax
,1),%ebx
1262 .byte
202 /* rorl $1 %edx */
1276 .byte
202 /* rorl $1 %edx */
1279 .byte
192 /* roll $1 %eax */
1283 leal
2400959708(%eax
,%esi
,1),%eax
1291 .byte
201 /* rorl $1 %ecx */
1294 .byte
201 /* rorl $1 %ecx */
1307 .byte
198 /* roll $1 %esi */
1311 leal
2400959708(%esi
,%edi
,1),%esi
1314 .byte
203 /* rorl $1 %ebx */
1328 .byte
203 /* rorl $1 %ebx */
1331 .byte
199 /* roll $1 %edi */
1335 leal
2400959708(%edi
,%edx
,1),%edi
1343 .byte
200 /* rorl $1 %eax */
1346 .byte
200 /* rorl $1 %eax */
1359 .byte
194 /* roll $1 %edx */
1363 leal
2400959708(%edx
,%ecx
,1),%edx
1366 .byte
206 /* rorl $1 %esi */
1380 .byte
206 /* rorl $1 %esi */
1383 .byte
193 /* roll $1 %ecx */
1387 leal
2400959708(%ecx
,%ebx
,1),%ecx
1395 .byte
207 /* rorl $1 %edi */
1398 .byte
207 /* rorl $1 %edi */
1411 .byte
195 /* roll $1 %ebx */
1415 leal
2400959708(%ebx
,%eax
,1),%ebx
1418 .byte
202 /* rorl $1 %edx */
1432 .byte
202 /* rorl $1 %edx */
1435 .byte
192 /* roll $1 %eax */
1439 leal
2400959708(%eax
,%esi
,1),%eax
1447 .byte
201 /* rorl $1 %ecx */
1450 .byte
201 /* rorl $1 %ecx */
1463 .byte
198 /* roll $1 %esi */
1467 leal
3395469782(%esi
,%edi
,1),%esi
1471 .byte
203 /* rorl $1 %ebx */
1474 .byte
203 /* rorl $1 %ebx */
1486 .byte
199 /* roll $1 %edi */
1490 leal
3395469782(%edi
,%edx
,1),%edi
1494 .byte
200 /* rorl $1 %eax */
1497 .byte
200 /* rorl $1 %eax */
1509 .byte
194 /* roll $1 %edx */
1513 leal
3395469782(%edx
,%ecx
,1),%edx
1517 .byte
206 /* rorl $1 %esi */
1520 .byte
206 /* rorl $1 %esi */
1532 .byte
193 /* roll $1 %ecx */
1536 leal
3395469782(%ecx
,%ebx
,1),%ecx
1540 .byte
207 /* rorl $1 %edi */
1543 .byte
207 /* rorl $1 %edi */
1555 .byte
195 /* roll $1 %ebx */
1559 leal
3395469782(%ebx
,%eax
,1),%ebx
1563 .byte
202 /* rorl $1 %edx */
1566 .byte
202 /* rorl $1 %edx */
1578 .byte
192 /* roll $1 %eax */
1582 leal
3395469782(%eax
,%esi
,1),%eax
1586 .byte
201 /* rorl $1 %ecx */
1589 .byte
201 /* rorl $1 %ecx */
1601 .byte
198 /* roll $1 %esi */
1605 leal
3395469782(%esi
,%edi
,1),%esi
1609 .byte
203 /* rorl $1 %ebx */
1612 .byte
203 /* rorl $1 %ebx */
1624 .byte
199 /* roll $1 %edi */
1628 leal
3395469782(%edi
,%edx
,1),%edi
1632 .byte
200 /* rorl $1 %eax */
1635 .byte
200 /* rorl $1 %eax */
1647 .byte
194 /* roll $1 %edx */
1651 leal
3395469782(%edx
,%ecx
,1),%edx
1655 .byte
206 /* rorl $1 %esi */
1658 .byte
206 /* rorl $1 %esi */
1670 .byte
193 /* roll $1 %ecx */
1674 leal
3395469782(%ecx
,%ebx
,1),%ecx
1678 .byte
207 /* rorl $1 %edi */
1681 .byte
207 /* rorl $1 %edi */
1693 .byte
195 /* roll $1 %ebx */
1697 leal
3395469782(%ebx
,%eax
,1),%ebx
1701 .byte
202 /* rorl $1 %edx */
1704 .byte
202 /* rorl $1 %edx */
1716 .byte
192 /* roll $1 %eax */
1720 leal
3395469782(%eax
,%esi
,1),%eax
1724 .byte
201 /* rorl $1 %ecx */
1727 .byte
201 /* rorl $1 %ecx */
1739 .byte
198 /* roll $1 %esi */
1743 leal
3395469782(%esi
,%edi
,1),%esi
1747 .byte
203 /* rorl $1 %ebx */
1750 .byte
203 /* rorl $1 %ebx */
1762 .byte
199 /* roll $1 %edi */
1766 leal
3395469782(%edi
,%edx
,1),%edi
1770 .byte
200 /* rorl $1 %eax */
1773 .byte
200 /* rorl $1 %eax */
1785 .byte
194 /* roll $1 %edx */
1789 leal
3395469782(%edx
,%ecx
,1),%edx
1793 .byte
206 /* rorl $1 %esi */
1796 .byte
206 /* rorl $1 %esi */
1808 .byte
193 /* roll $1 %ecx */
1812 leal
3395469782(%ecx
,%ebx
,1),%ecx
1816 .byte
207 /* rorl $1 %edi */
1819 .byte
207 /* rorl $1 %edi */
1831 .byte
195 /* roll $1 %ebx */
1835 leal
3395469782(%ebx
,%eax
,1),%ebx
1839 .byte
202 /* rorl $1 %edx */
1842 .byte
202 /* rorl $1 %edx */
1854 .byte
192 /* roll $1 %eax */
1858 leal
3395469782(%eax
,%esi
,1),%eax
1862 .byte
201 /* rorl $1 %ecx */
1865 .byte
201 /* rorl $1 %ecx */
1877 .byte
198 /* roll $1 %esi */
1881 leal
3395469782(%esi
,%edi
,1),%esi
1885 .byte
203 /* rorl $1 %ebx */
1888 .byte
203 /* rorl $1 %ebx */
1900 .byte
199 /* roll $1 %edi */
1904 leal
3395469782(%edi
,%edx
,1),%edi
1910 .byte
200 /* rorl $1 %eax */
1913 .byte
200 /* rorl $1 %eax */
1914 /* End processing */
1946 .sha1_block_x86_end
:
1947 SIZE(sha1_block_x86
,.sha1_block_x86_end
-sha1_block_x86
)