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)