2 /* -*- Fundamental -*- Emacs' assembler mode hoses this file */
4 /* Run the C pre-processor over this file with one of the following defined
5 * ELF - elf object files,
6 * OUT - a.out object files,
7 * BSDI - BSDI style a.out object files
8 * SOL - Solaris style elf
11 #define TYPE(a,b) .type a,b
12 #define SIZE(a,b) .size a,b
14 #if defined(OUT) || defined(BSDI)
15 #define sha1_block_x86 _sha1_block_x86
33 #if defined(ELF) || defined(SOL)
39 You need to define one of
40 ELF - elf systems - linux-elf, NetBSD and DG-UX
41 OUT - a.out systems - linux-a.out and FreeBSD
42 SOL - solaris systems, which are elf with strange comment lines
43 BSDI - a.out with a very primative version of as.
46 /* Let the Assembler begin :-) */
47 /* Don't even think of reading this code */
48 /* It was automatically generated by sha1-586.pl */
49 /* Which is a perl program used to generate the x86 assember for */
50 /* any of elf, a.out, BSDI,Win32, or Solaris */
51 /* eric <eay@cryptsoft.com> */
59 TYPE(sha1_block_x86,@function)
76 /* First we need to setup the X array */
79 /* First, load the words onto the stack in network byte order */
81 .byte 200 /* bswapl %eax */
85 .byte 200 /* bswapl %eax */
89 .byte 200 /* bswapl %eax */
93 .byte 200 /* bswapl %eax */
97 .byte 200 /* bswapl %eax */
101 .byte 200 /* bswapl %eax */
105 .byte 200 /* bswapl %eax */
109 .byte 200 /* bswapl %eax */
113 .byte 200 /* bswapl %eax */
117 .byte 200 /* bswapl %eax */
121 .byte 200 /* bswapl %eax */
125 .byte 200 /* bswapl %eax */
129 .byte 200 /* bswapl %eax */
133 .byte 200 /* bswapl %eax */
137 .byte 200 /* bswapl %eax */
141 .byte 200 /* bswapl %eax */
143 /* We now have the X array on the stack */
144 /* starting at sp-4 */
147 /* Start processing */
157 .byte 203 /* rorl $1 %ebx */
160 .byte 203 /* rorl $1 %ebx */
162 leal 1518500249(%ebp,%edi,1),%ebp
172 .byte 200 /* rorl $1 %eax */
175 .byte 200 /* rorl $1 %eax */
176 leal 1518500249(%ebp,%edx,1),%ebp
186 .byte 206 /* rorl $1 %esi */
189 .byte 206 /* rorl $1 %esi */
191 leal 1518500249(%ebp,%ecx,1),%ebp
201 .byte 207 /* rorl $1 %edi */
204 .byte 207 /* rorl $1 %edi */
205 leal 1518500249(%ebp,%ebx,1),%ebp
215 .byte 202 /* rorl $1 %edx */
218 .byte 202 /* rorl $1 %edx */
220 leal 1518500249(%ebp,%eax,1),%ebp
230 .byte 201 /* rorl $1 %ecx */
233 .byte 201 /* rorl $1 %ecx */
234 leal 1518500249(%ebp,%esi,1),%ebp
244 .byte 203 /* rorl $1 %ebx */
247 .byte 203 /* rorl $1 %ebx */
249 leal 1518500249(%ebp,%edi,1),%ebp
259 .byte 200 /* rorl $1 %eax */
262 .byte 200 /* rorl $1 %eax */
263 leal 1518500249(%ebp,%edx,1),%ebp
273 .byte 206 /* rorl $1 %esi */
276 .byte 206 /* rorl $1 %esi */
278 leal 1518500249(%ebp,%ecx,1),%ebp
288 .byte 207 /* rorl $1 %edi */
291 .byte 207 /* rorl $1 %edi */
292 leal 1518500249(%ebp,%ebx,1),%ebp
302 .byte 202 /* rorl $1 %edx */
305 .byte 202 /* rorl $1 %edx */
307 leal 1518500249(%ebp,%eax,1),%ebp
317 .byte 201 /* rorl $1 %ecx */
320 .byte 201 /* rorl $1 %ecx */
321 leal 1518500249(%ebp,%esi,1),%ebp
331 .byte 203 /* rorl $1 %ebx */
334 .byte 203 /* rorl $1 %ebx */
336 leal 1518500249(%ebp,%edi,1),%ebp
346 .byte 200 /* rorl $1 %eax */
349 .byte 200 /* rorl $1 %eax */
350 leal 1518500249(%ebp,%edx,1),%ebp
360 .byte 206 /* rorl $1 %esi */
363 .byte 206 /* rorl $1 %esi */
365 leal 1518500249(%ebp,%ecx,1),%ebp
375 .byte 207 /* rorl $1 %edi */
378 .byte 207 /* rorl $1 %edi */
379 leal 1518500249(%ebp,%ebx,1),%ebp
392 .byte 195 /* roll $1 %ebx */
396 leal 1518500249(%ebx,%eax,1),%ebx
402 .byte 202 /* rorl $1 %edx */
411 .byte 202 /* rorl $1 %edx */
414 .byte 192 /* roll $1 %eax */
419 leal 1518500249(%eax,%esi,1),%eax
424 .byte 201 /* rorl $1 %ecx */
427 .byte 201 /* rorl $1 %ecx */
439 .byte 198 /* roll $1 %esi */
443 leal 1518500249(%esi,%edi,1),%esi
449 .byte 203 /* rorl $1 %ebx */
458 .byte 203 /* rorl $1 %ebx */
461 .byte 199 /* roll $1 %edi */
466 leal 1518500249(%edi,%edx,1),%edi
471 .byte 200 /* rorl $1 %eax */
474 .byte 200 /* rorl $1 %eax */
486 .byte 194 /* roll $1 %edx */
490 leal 1859775393(%edx,%ecx,1),%edx
494 .byte 206 /* rorl $1 %esi */
497 .byte 206 /* rorl $1 %esi */
509 .byte 193 /* roll $1 %ecx */
513 leal 1859775393(%ecx,%ebx,1),%ecx
517 .byte 207 /* rorl $1 %edi */
520 .byte 207 /* rorl $1 %edi */
532 .byte 195 /* roll $1 %ebx */
536 leal 1859775393(%ebx,%eax,1),%ebx
540 .byte 202 /* rorl $1 %edx */
543 .byte 202 /* rorl $1 %edx */
555 .byte 192 /* roll $1 %eax */
559 leal 1859775393(%eax,%esi,1),%eax
563 .byte 201 /* rorl $1 %ecx */
566 .byte 201 /* rorl $1 %ecx */
578 .byte 198 /* roll $1 %esi */
582 leal 1859775393(%esi,%edi,1),%esi
586 .byte 203 /* rorl $1 %ebx */
589 .byte 203 /* rorl $1 %ebx */
601 .byte 199 /* roll $1 %edi */
605 leal 1859775393(%edi,%edx,1),%edi
609 .byte 200 /* rorl $1 %eax */
612 .byte 200 /* rorl $1 %eax */
624 .byte 194 /* roll $1 %edx */
628 leal 1859775393(%edx,%ecx,1),%edx
632 .byte 206 /* rorl $1 %esi */
635 .byte 206 /* rorl $1 %esi */
647 .byte 193 /* roll $1 %ecx */
651 leal 1859775393(%ecx,%ebx,1),%ecx
655 .byte 207 /* rorl $1 %edi */
658 .byte 207 /* rorl $1 %edi */
670 .byte 195 /* roll $1 %ebx */
674 leal 1859775393(%ebx,%eax,1),%ebx
678 .byte 202 /* rorl $1 %edx */
681 .byte 202 /* rorl $1 %edx */
693 .byte 192 /* roll $1 %eax */
697 leal 1859775393(%eax,%esi,1),%eax
701 .byte 201 /* rorl $1 %ecx */
704 .byte 201 /* rorl $1 %ecx */
716 .byte 198 /* roll $1 %esi */
720 leal 1859775393(%esi,%edi,1),%esi
724 .byte 203 /* rorl $1 %ebx */
727 .byte 203 /* rorl $1 %ebx */
739 .byte 199 /* roll $1 %edi */
743 leal 1859775393(%edi,%edx,1),%edi
747 .byte 200 /* rorl $1 %eax */
750 .byte 200 /* rorl $1 %eax */
762 .byte 194 /* roll $1 %edx */
766 leal 1859775393(%edx,%ecx,1),%edx
770 .byte 206 /* rorl $1 %esi */
773 .byte 206 /* rorl $1 %esi */
785 .byte 193 /* roll $1 %ecx */
789 leal 1859775393(%ecx,%ebx,1),%ecx
793 .byte 207 /* rorl $1 %edi */
796 .byte 207 /* rorl $1 %edi */
808 .byte 195 /* roll $1 %ebx */
812 leal 1859775393(%ebx,%eax,1),%ebx
816 .byte 202 /* rorl $1 %edx */
819 .byte 202 /* rorl $1 %edx */
831 .byte 192 /* roll $1 %eax */
835 leal 1859775393(%eax,%esi,1),%eax
839 .byte 201 /* rorl $1 %ecx */
842 .byte 201 /* rorl $1 %ecx */
854 .byte 198 /* roll $1 %esi */
858 leal 1859775393(%esi,%edi,1),%esi
862 .byte 203 /* rorl $1 %ebx */
865 .byte 203 /* rorl $1 %ebx */
877 .byte 199 /* roll $1 %edi */
881 leal 1859775393(%edi,%edx,1),%edi
885 .byte 200 /* rorl $1 %eax */
888 .byte 200 /* rorl $1 %eax */
900 .byte 194 /* roll $1 %edx */
904 leal 1859775393(%edx,%ecx,1),%edx
908 .byte 206 /* rorl $1 %esi */
911 .byte 206 /* rorl $1 %esi */
923 .byte 193 /* roll $1 %ecx */
927 leal 1859775393(%ecx,%ebx,1),%ecx
931 .byte 207 /* rorl $1 %edi */
934 .byte 207 /* rorl $1 %edi */
946 .byte 195 /* roll $1 %ebx */
950 leal 2400959708(%ebx,%eax,1),%ebx
953 .byte 202 /* rorl $1 %edx */
967 .byte 202 /* rorl $1 %edx */
970 .byte 192 /* roll $1 %eax */
974 leal 2400959708(%eax,%esi,1),%eax
982 .byte 201 /* rorl $1 %ecx */
985 .byte 201 /* rorl $1 %ecx */
998 .byte 198 /* roll $1 %esi */
1002 leal 2400959708(%esi,%edi,1),%esi
1005 .byte 203 /* rorl $1 %ebx */
1019 .byte 203 /* rorl $1 %ebx */
1022 .byte 199 /* roll $1 %edi */
1026 leal 2400959708(%edi,%edx,1),%edi
1034 .byte 200 /* rorl $1 %eax */
1037 .byte 200 /* rorl $1 %eax */
1050 .byte 194 /* roll $1 %edx */
1054 leal 2400959708(%edx,%ecx,1),%edx
1057 .byte 206 /* rorl $1 %esi */
1071 .byte 206 /* rorl $1 %esi */
1074 .byte 193 /* roll $1 %ecx */
1078 leal 2400959708(%ecx,%ebx,1),%ecx
1086 .byte 207 /* rorl $1 %edi */
1089 .byte 207 /* rorl $1 %edi */
1102 .byte 195 /* roll $1 %ebx */
1106 leal 2400959708(%ebx,%eax,1),%ebx
1109 .byte 202 /* rorl $1 %edx */
1123 .byte 202 /* rorl $1 %edx */
1126 .byte 192 /* roll $1 %eax */
1130 leal 2400959708(%eax,%esi,1),%eax
1138 .byte 201 /* rorl $1 %ecx */
1141 .byte 201 /* rorl $1 %ecx */
1154 .byte 198 /* roll $1 %esi */
1158 leal 2400959708(%esi,%edi,1),%esi
1161 .byte 203 /* rorl $1 %ebx */
1175 .byte 203 /* rorl $1 %ebx */
1178 .byte 199 /* roll $1 %edi */
1182 leal 2400959708(%edi,%edx,1),%edi
1190 .byte 200 /* rorl $1 %eax */
1193 .byte 200 /* rorl $1 %eax */
1206 .byte 194 /* roll $1 %edx */
1210 leal 2400959708(%edx,%ecx,1),%edx
1213 .byte 206 /* rorl $1 %esi */
1227 .byte 206 /* rorl $1 %esi */
1230 .byte 193 /* roll $1 %ecx */
1234 leal 2400959708(%ecx,%ebx,1),%ecx
1242 .byte 207 /* rorl $1 %edi */
1245 .byte 207 /* rorl $1 %edi */
1258 .byte 195 /* roll $1 %ebx */
1262 leal 2400959708(%ebx,%eax,1),%ebx
1265 .byte 202 /* rorl $1 %edx */
1279 .byte 202 /* rorl $1 %edx */
1282 .byte 192 /* roll $1 %eax */
1286 leal 2400959708(%eax,%esi,1),%eax
1294 .byte 201 /* rorl $1 %ecx */
1297 .byte 201 /* rorl $1 %ecx */
1310 .byte 198 /* roll $1 %esi */
1314 leal 2400959708(%esi,%edi,1),%esi
1317 .byte 203 /* rorl $1 %ebx */
1331 .byte 203 /* rorl $1 %ebx */
1334 .byte 199 /* roll $1 %edi */
1338 leal 2400959708(%edi,%edx,1),%edi
1346 .byte 200 /* rorl $1 %eax */
1349 .byte 200 /* rorl $1 %eax */
1362 .byte 194 /* roll $1 %edx */
1366 leal 2400959708(%edx,%ecx,1),%edx
1369 .byte 206 /* rorl $1 %esi */
1383 .byte 206 /* rorl $1 %esi */
1386 .byte 193 /* roll $1 %ecx */
1390 leal 2400959708(%ecx,%ebx,1),%ecx
1398 .byte 207 /* rorl $1 %edi */
1401 .byte 207 /* rorl $1 %edi */
1414 .byte 195 /* roll $1 %ebx */
1418 leal 2400959708(%ebx,%eax,1),%ebx
1421 .byte 202 /* rorl $1 %edx */
1435 .byte 202 /* rorl $1 %edx */
1438 .byte 192 /* roll $1 %eax */
1442 leal 2400959708(%eax,%esi,1),%eax
1450 .byte 201 /* rorl $1 %ecx */
1453 .byte 201 /* rorl $1 %ecx */
1466 .byte 198 /* roll $1 %esi */
1470 leal 3395469782(%esi,%edi,1),%esi
1474 .byte 203 /* rorl $1 %ebx */
1477 .byte 203 /* rorl $1 %ebx */
1489 .byte 199 /* roll $1 %edi */
1493 leal 3395469782(%edi,%edx,1),%edi
1497 .byte 200 /* rorl $1 %eax */
1500 .byte 200 /* rorl $1 %eax */
1512 .byte 194 /* roll $1 %edx */
1516 leal 3395469782(%edx,%ecx,1),%edx
1520 .byte 206 /* rorl $1 %esi */
1523 .byte 206 /* rorl $1 %esi */
1535 .byte 193 /* roll $1 %ecx */
1539 leal 3395469782(%ecx,%ebx,1),%ecx
1543 .byte 207 /* rorl $1 %edi */
1546 .byte 207 /* rorl $1 %edi */
1558 .byte 195 /* roll $1 %ebx */
1562 leal 3395469782(%ebx,%eax,1),%ebx
1566 .byte 202 /* rorl $1 %edx */
1569 .byte 202 /* rorl $1 %edx */
1581 .byte 192 /* roll $1 %eax */
1585 leal 3395469782(%eax,%esi,1),%eax
1589 .byte 201 /* rorl $1 %ecx */
1592 .byte 201 /* rorl $1 %ecx */
1604 .byte 198 /* roll $1 %esi */
1608 leal 3395469782(%esi,%edi,1),%esi
1612 .byte 203 /* rorl $1 %ebx */
1615 .byte 203 /* rorl $1 %ebx */
1627 .byte 199 /* roll $1 %edi */
1631 leal 3395469782(%edi,%edx,1),%edi
1635 .byte 200 /* rorl $1 %eax */
1638 .byte 200 /* rorl $1 %eax */
1650 .byte 194 /* roll $1 %edx */
1654 leal 3395469782(%edx,%ecx,1),%edx
1658 .byte 206 /* rorl $1 %esi */
1661 .byte 206 /* rorl $1 %esi */
1673 .byte 193 /* roll $1 %ecx */
1677 leal 3395469782(%ecx,%ebx,1),%ecx
1681 .byte 207 /* rorl $1 %edi */
1684 .byte 207 /* rorl $1 %edi */
1696 .byte 195 /* roll $1 %ebx */
1700 leal 3395469782(%ebx,%eax,1),%ebx
1704 .byte 202 /* rorl $1 %edx */
1707 .byte 202 /* rorl $1 %edx */
1719 .byte 192 /* roll $1 %eax */
1723 leal 3395469782(%eax,%esi,1),%eax
1727 .byte 201 /* rorl $1 %ecx */
1730 .byte 201 /* rorl $1 %ecx */
1742 .byte 198 /* roll $1 %esi */
1746 leal 3395469782(%esi,%edi,1),%esi
1750 .byte 203 /* rorl $1 %ebx */
1753 .byte 203 /* rorl $1 %ebx */
1765 .byte 199 /* roll $1 %edi */
1769 leal 3395469782(%edi,%edx,1),%edi
1773 .byte 200 /* rorl $1 %eax */
1776 .byte 200 /* rorl $1 %eax */
1788 .byte 194 /* roll $1 %edx */
1792 leal 3395469782(%edx,%ecx,1),%edx
1796 .byte 206 /* rorl $1 %esi */
1799 .byte 206 /* rorl $1 %esi */
1811 .byte 193 /* roll $1 %ecx */
1815 leal 3395469782(%ecx,%ebx,1),%ecx
1819 .byte 207 /* rorl $1 %edi */
1822 .byte 207 /* rorl $1 %edi */
1834 .byte 195 /* roll $1 %ebx */
1838 leal 3395469782(%ebx,%eax,1),%ebx
1842 .byte 202 /* rorl $1 %edx */
1845 .byte 202 /* rorl $1 %edx */
1857 .byte 192 /* roll $1 %eax */
1861 leal 3395469782(%eax,%esi,1),%eax
1865 .byte 201 /* rorl $1 %ecx */
1868 .byte 201 /* rorl $1 %ecx */
1880 .byte 198 /* roll $1 %esi */
1884 leal 3395469782(%esi,%edi,1),%esi
1888 .byte 203 /* rorl $1 %ebx */
1891 .byte 203 /* rorl $1 %ebx */
1903 .byte 199 /* roll $1 %edi */
1907 leal 3395469782(%edi,%edx,1),%edi
1913 .byte 200 /* rorl $1 %eax */
1916 .byte 200 /* rorl $1 %eax */
1917 /* End processing */
1949 .sha1_block_x86_end:
1950 SIZE(sha1_block_x86,.sha1_block_x86_end-sha1_block_x86)