1 /* -*- Fundamental -*- Emacs' assembler mode hoses this file */
3 /* Run the C pre-processor over this file with one of the following defined
4 * ELF - elf object files,
5 * OUT - a.out object files,
6 * BSDI - BSDI style a.out object files
7 * SOL - Solaris style elf
10 #define TYPE(a,b) .type a,b
11 #define SIZE(a,b) .size a,b
13 #if defined(OUT) || defined(BSDI)
14 #define sha1_block_x86 _sha1_block_x86
32 #if defined(ELF) || defined(SOL)
38 You need to define one of
39 ELF - elf systems - linux-elf, NetBSD and DG-UX
40 OUT - a.out systems - linux-a.out and FreeBSD
41 SOL - solaris systems, which are elf with strange comment lines
42 BSDI - a.out with a very primative version of as.
45 /* Let the Assembler begin :-) */
46 /* Don't even think of reading this code */
47 /* It was automatically generated by sha1-586.pl */
48 /* Which is a perl program used to generate the x86 assember for */
49 /* any of elf, a.out, BSDI,Win32, or Solaris */
50 /* eric <eay@cryptsoft.com> */
58 TYPE(sha1_block_x86,@function)
75 /* First we need to setup the X array */
78 /* First, load the words onto the stack in network byte order */
80 .byte 200 /* bswapl %eax */
84 .byte 200 /* bswapl %eax */
88 .byte 200 /* bswapl %eax */
92 .byte 200 /* bswapl %eax */
96 .byte 200 /* bswapl %eax */
100 .byte 200 /* bswapl %eax */
104 .byte 200 /* bswapl %eax */
108 .byte 200 /* bswapl %eax */
112 .byte 200 /* bswapl %eax */
116 .byte 200 /* bswapl %eax */
120 .byte 200 /* bswapl %eax */
124 .byte 200 /* bswapl %eax */
128 .byte 200 /* bswapl %eax */
132 .byte 200 /* bswapl %eax */
136 .byte 200 /* bswapl %eax */
140 .byte 200 /* bswapl %eax */
142 /* We now have the X array on the stack */
143 /* starting at sp-4 */
146 /* Start processing */
156 .byte 203 /* rorl $1 %ebx */
159 .byte 203 /* rorl $1 %ebx */
161 leal 1518500249(%ebp,%edi,1),%ebp
171 .byte 200 /* rorl $1 %eax */
174 .byte 200 /* rorl $1 %eax */
175 leal 1518500249(%ebp,%edx,1),%ebp
185 .byte 206 /* rorl $1 %esi */
188 .byte 206 /* rorl $1 %esi */
190 leal 1518500249(%ebp,%ecx,1),%ebp
200 .byte 207 /* rorl $1 %edi */
203 .byte 207 /* rorl $1 %edi */
204 leal 1518500249(%ebp,%ebx,1),%ebp
214 .byte 202 /* rorl $1 %edx */
217 .byte 202 /* rorl $1 %edx */
219 leal 1518500249(%ebp,%eax,1),%ebp
229 .byte 201 /* rorl $1 %ecx */
232 .byte 201 /* rorl $1 %ecx */
233 leal 1518500249(%ebp,%esi,1),%ebp
243 .byte 203 /* rorl $1 %ebx */
246 .byte 203 /* rorl $1 %ebx */
248 leal 1518500249(%ebp,%edi,1),%ebp
258 .byte 200 /* rorl $1 %eax */
261 .byte 200 /* rorl $1 %eax */
262 leal 1518500249(%ebp,%edx,1),%ebp
272 .byte 206 /* rorl $1 %esi */
275 .byte 206 /* rorl $1 %esi */
277 leal 1518500249(%ebp,%ecx,1),%ebp
287 .byte 207 /* rorl $1 %edi */
290 .byte 207 /* rorl $1 %edi */
291 leal 1518500249(%ebp,%ebx,1),%ebp
301 .byte 202 /* rorl $1 %edx */
304 .byte 202 /* rorl $1 %edx */
306 leal 1518500249(%ebp,%eax,1),%ebp
316 .byte 201 /* rorl $1 %ecx */
319 .byte 201 /* rorl $1 %ecx */
320 leal 1518500249(%ebp,%esi,1),%ebp
330 .byte 203 /* rorl $1 %ebx */
333 .byte 203 /* rorl $1 %ebx */
335 leal 1518500249(%ebp,%edi,1),%ebp
345 .byte 200 /* rorl $1 %eax */
348 .byte 200 /* rorl $1 %eax */
349 leal 1518500249(%ebp,%edx,1),%ebp
359 .byte 206 /* rorl $1 %esi */
362 .byte 206 /* rorl $1 %esi */
364 leal 1518500249(%ebp,%ecx,1),%ebp
374 .byte 207 /* rorl $1 %edi */
377 .byte 207 /* rorl $1 %edi */
378 leal 1518500249(%ebp,%ebx,1),%ebp
391 .byte 195 /* roll $1 %ebx */
395 leal 1518500249(%ebx,%eax,1),%ebx
401 .byte 202 /* rorl $1 %edx */
410 .byte 202 /* rorl $1 %edx */
413 .byte 192 /* roll $1 %eax */
418 leal 1518500249(%eax,%esi,1),%eax
423 .byte 201 /* rorl $1 %ecx */
426 .byte 201 /* rorl $1 %ecx */
438 .byte 198 /* roll $1 %esi */
442 leal 1518500249(%esi,%edi,1),%esi
448 .byte 203 /* rorl $1 %ebx */
457 .byte 203 /* rorl $1 %ebx */
460 .byte 199 /* roll $1 %edi */
465 leal 1518500249(%edi,%edx,1),%edi
470 .byte 200 /* rorl $1 %eax */
473 .byte 200 /* rorl $1 %eax */
485 .byte 194 /* roll $1 %edx */
489 leal 1859775393(%edx,%ecx,1),%edx
493 .byte 206 /* rorl $1 %esi */
496 .byte 206 /* rorl $1 %esi */
508 .byte 193 /* roll $1 %ecx */
512 leal 1859775393(%ecx,%ebx,1),%ecx
516 .byte 207 /* rorl $1 %edi */
519 .byte 207 /* rorl $1 %edi */
531 .byte 195 /* roll $1 %ebx */
535 leal 1859775393(%ebx,%eax,1),%ebx
539 .byte 202 /* rorl $1 %edx */
542 .byte 202 /* rorl $1 %edx */
554 .byte 192 /* roll $1 %eax */
558 leal 1859775393(%eax,%esi,1),%eax
562 .byte 201 /* rorl $1 %ecx */
565 .byte 201 /* rorl $1 %ecx */
577 .byte 198 /* roll $1 %esi */
581 leal 1859775393(%esi,%edi,1),%esi
585 .byte 203 /* rorl $1 %ebx */
588 .byte 203 /* rorl $1 %ebx */
600 .byte 199 /* roll $1 %edi */
604 leal 1859775393(%edi,%edx,1),%edi
608 .byte 200 /* rorl $1 %eax */
611 .byte 200 /* rorl $1 %eax */
623 .byte 194 /* roll $1 %edx */
627 leal 1859775393(%edx,%ecx,1),%edx
631 .byte 206 /* rorl $1 %esi */
634 .byte 206 /* rorl $1 %esi */
646 .byte 193 /* roll $1 %ecx */
650 leal 1859775393(%ecx,%ebx,1),%ecx
654 .byte 207 /* rorl $1 %edi */
657 .byte 207 /* rorl $1 %edi */
669 .byte 195 /* roll $1 %ebx */
673 leal 1859775393(%ebx,%eax,1),%ebx
677 .byte 202 /* rorl $1 %edx */
680 .byte 202 /* rorl $1 %edx */
692 .byte 192 /* roll $1 %eax */
696 leal 1859775393(%eax,%esi,1),%eax
700 .byte 201 /* rorl $1 %ecx */
703 .byte 201 /* rorl $1 %ecx */
715 .byte 198 /* roll $1 %esi */
719 leal 1859775393(%esi,%edi,1),%esi
723 .byte 203 /* rorl $1 %ebx */
726 .byte 203 /* rorl $1 %ebx */
738 .byte 199 /* roll $1 %edi */
742 leal 1859775393(%edi,%edx,1),%edi
746 .byte 200 /* rorl $1 %eax */
749 .byte 200 /* rorl $1 %eax */
761 .byte 194 /* roll $1 %edx */
765 leal 1859775393(%edx,%ecx,1),%edx
769 .byte 206 /* rorl $1 %esi */
772 .byte 206 /* rorl $1 %esi */
784 .byte 193 /* roll $1 %ecx */
788 leal 1859775393(%ecx,%ebx,1),%ecx
792 .byte 207 /* rorl $1 %edi */
795 .byte 207 /* rorl $1 %edi */
807 .byte 195 /* roll $1 %ebx */
811 leal 1859775393(%ebx,%eax,1),%ebx
815 .byte 202 /* rorl $1 %edx */
818 .byte 202 /* rorl $1 %edx */
830 .byte 192 /* roll $1 %eax */
834 leal 1859775393(%eax,%esi,1),%eax
838 .byte 201 /* rorl $1 %ecx */
841 .byte 201 /* rorl $1 %ecx */
853 .byte 198 /* roll $1 %esi */
857 leal 1859775393(%esi,%edi,1),%esi
861 .byte 203 /* rorl $1 %ebx */
864 .byte 203 /* rorl $1 %ebx */
876 .byte 199 /* roll $1 %edi */
880 leal 1859775393(%edi,%edx,1),%edi
884 .byte 200 /* rorl $1 %eax */
887 .byte 200 /* rorl $1 %eax */
899 .byte 194 /* roll $1 %edx */
903 leal 1859775393(%edx,%ecx,1),%edx
907 .byte 206 /* rorl $1 %esi */
910 .byte 206 /* rorl $1 %esi */
922 .byte 193 /* roll $1 %ecx */
926 leal 1859775393(%ecx,%ebx,1),%ecx
930 .byte 207 /* rorl $1 %edi */
933 .byte 207 /* rorl $1 %edi */
945 .byte 195 /* roll $1 %ebx */
949 leal 2400959708(%ebx,%eax,1),%ebx
952 .byte 202 /* rorl $1 %edx */
966 .byte 202 /* rorl $1 %edx */
969 .byte 192 /* roll $1 %eax */
973 leal 2400959708(%eax,%esi,1),%eax
981 .byte 201 /* rorl $1 %ecx */
984 .byte 201 /* rorl $1 %ecx */
997 .byte 198 /* roll $1 %esi */
1001 leal 2400959708(%esi,%edi,1),%esi
1004 .byte 203 /* rorl $1 %ebx */
1018 .byte 203 /* rorl $1 %ebx */
1021 .byte 199 /* roll $1 %edi */
1025 leal 2400959708(%edi,%edx,1),%edi
1033 .byte 200 /* rorl $1 %eax */
1036 .byte 200 /* rorl $1 %eax */
1049 .byte 194 /* roll $1 %edx */
1053 leal 2400959708(%edx,%ecx,1),%edx
1056 .byte 206 /* rorl $1 %esi */
1070 .byte 206 /* rorl $1 %esi */
1073 .byte 193 /* roll $1 %ecx */
1077 leal 2400959708(%ecx,%ebx,1),%ecx
1085 .byte 207 /* rorl $1 %edi */
1088 .byte 207 /* rorl $1 %edi */
1101 .byte 195 /* roll $1 %ebx */
1105 leal 2400959708(%ebx,%eax,1),%ebx
1108 .byte 202 /* rorl $1 %edx */
1122 .byte 202 /* rorl $1 %edx */
1125 .byte 192 /* roll $1 %eax */
1129 leal 2400959708(%eax,%esi,1),%eax
1137 .byte 201 /* rorl $1 %ecx */
1140 .byte 201 /* rorl $1 %ecx */
1153 .byte 198 /* roll $1 %esi */
1157 leal 2400959708(%esi,%edi,1),%esi
1160 .byte 203 /* rorl $1 %ebx */
1174 .byte 203 /* rorl $1 %ebx */
1177 .byte 199 /* roll $1 %edi */
1181 leal 2400959708(%edi,%edx,1),%edi
1189 .byte 200 /* rorl $1 %eax */
1192 .byte 200 /* rorl $1 %eax */
1205 .byte 194 /* roll $1 %edx */
1209 leal 2400959708(%edx,%ecx,1),%edx
1212 .byte 206 /* rorl $1 %esi */
1226 .byte 206 /* rorl $1 %esi */
1229 .byte 193 /* roll $1 %ecx */
1233 leal 2400959708(%ecx,%ebx,1),%ecx
1241 .byte 207 /* rorl $1 %edi */
1244 .byte 207 /* rorl $1 %edi */
1257 .byte 195 /* roll $1 %ebx */
1261 leal 2400959708(%ebx,%eax,1),%ebx
1264 .byte 202 /* rorl $1 %edx */
1278 .byte 202 /* rorl $1 %edx */
1281 .byte 192 /* roll $1 %eax */
1285 leal 2400959708(%eax,%esi,1),%eax
1293 .byte 201 /* rorl $1 %ecx */
1296 .byte 201 /* rorl $1 %ecx */
1309 .byte 198 /* roll $1 %esi */
1313 leal 2400959708(%esi,%edi,1),%esi
1316 .byte 203 /* rorl $1 %ebx */
1330 .byte 203 /* rorl $1 %ebx */
1333 .byte 199 /* roll $1 %edi */
1337 leal 2400959708(%edi,%edx,1),%edi
1345 .byte 200 /* rorl $1 %eax */
1348 .byte 200 /* rorl $1 %eax */
1361 .byte 194 /* roll $1 %edx */
1365 leal 2400959708(%edx,%ecx,1),%edx
1368 .byte 206 /* rorl $1 %esi */
1382 .byte 206 /* rorl $1 %esi */
1385 .byte 193 /* roll $1 %ecx */
1389 leal 2400959708(%ecx,%ebx,1),%ecx
1397 .byte 207 /* rorl $1 %edi */
1400 .byte 207 /* rorl $1 %edi */
1413 .byte 195 /* roll $1 %ebx */
1417 leal 2400959708(%ebx,%eax,1),%ebx
1420 .byte 202 /* rorl $1 %edx */
1434 .byte 202 /* rorl $1 %edx */
1437 .byte 192 /* roll $1 %eax */
1441 leal 2400959708(%eax,%esi,1),%eax
1449 .byte 201 /* rorl $1 %ecx */
1452 .byte 201 /* rorl $1 %ecx */
1465 .byte 198 /* roll $1 %esi */
1469 leal 3395469782(%esi,%edi,1),%esi
1473 .byte 203 /* rorl $1 %ebx */
1476 .byte 203 /* rorl $1 %ebx */
1488 .byte 199 /* roll $1 %edi */
1492 leal 3395469782(%edi,%edx,1),%edi
1496 .byte 200 /* rorl $1 %eax */
1499 .byte 200 /* rorl $1 %eax */
1511 .byte 194 /* roll $1 %edx */
1515 leal 3395469782(%edx,%ecx,1),%edx
1519 .byte 206 /* rorl $1 %esi */
1522 .byte 206 /* rorl $1 %esi */
1534 .byte 193 /* roll $1 %ecx */
1538 leal 3395469782(%ecx,%ebx,1),%ecx
1542 .byte 207 /* rorl $1 %edi */
1545 .byte 207 /* rorl $1 %edi */
1557 .byte 195 /* roll $1 %ebx */
1561 leal 3395469782(%ebx,%eax,1),%ebx
1565 .byte 202 /* rorl $1 %edx */
1568 .byte 202 /* rorl $1 %edx */
1580 .byte 192 /* roll $1 %eax */
1584 leal 3395469782(%eax,%esi,1),%eax
1588 .byte 201 /* rorl $1 %ecx */
1591 .byte 201 /* rorl $1 %ecx */
1603 .byte 198 /* roll $1 %esi */
1607 leal 3395469782(%esi,%edi,1),%esi
1611 .byte 203 /* rorl $1 %ebx */
1614 .byte 203 /* rorl $1 %ebx */
1626 .byte 199 /* roll $1 %edi */
1630 leal 3395469782(%edi,%edx,1),%edi
1634 .byte 200 /* rorl $1 %eax */
1637 .byte 200 /* rorl $1 %eax */
1649 .byte 194 /* roll $1 %edx */
1653 leal 3395469782(%edx,%ecx,1),%edx
1657 .byte 206 /* rorl $1 %esi */
1660 .byte 206 /* rorl $1 %esi */
1672 .byte 193 /* roll $1 %ecx */
1676 leal 3395469782(%ecx,%ebx,1),%ecx
1680 .byte 207 /* rorl $1 %edi */
1683 .byte 207 /* rorl $1 %edi */
1695 .byte 195 /* roll $1 %ebx */
1699 leal 3395469782(%ebx,%eax,1),%ebx
1703 .byte 202 /* rorl $1 %edx */
1706 .byte 202 /* rorl $1 %edx */
1718 .byte 192 /* roll $1 %eax */
1722 leal 3395469782(%eax,%esi,1),%eax
1726 .byte 201 /* rorl $1 %ecx */
1729 .byte 201 /* rorl $1 %ecx */
1741 .byte 198 /* roll $1 %esi */
1745 leal 3395469782(%esi,%edi,1),%esi
1749 .byte 203 /* rorl $1 %ebx */
1752 .byte 203 /* rorl $1 %ebx */
1764 .byte 199 /* roll $1 %edi */
1768 leal 3395469782(%edi,%edx,1),%edi
1772 .byte 200 /* rorl $1 %eax */
1775 .byte 200 /* rorl $1 %eax */
1787 .byte 194 /* roll $1 %edx */
1791 leal 3395469782(%edx,%ecx,1),%edx
1795 .byte 206 /* rorl $1 %esi */
1798 .byte 206 /* rorl $1 %esi */
1810 .byte 193 /* roll $1 %ecx */
1814 leal 3395469782(%ecx,%ebx,1),%ecx
1818 .byte 207 /* rorl $1 %edi */
1821 .byte 207 /* rorl $1 %edi */
1833 .byte 195 /* roll $1 %ebx */
1837 leal 3395469782(%ebx,%eax,1),%ebx
1841 .byte 202 /* rorl $1 %edx */
1844 .byte 202 /* rorl $1 %edx */
1856 .byte 192 /* roll $1 %eax */
1860 leal 3395469782(%eax,%esi,1),%eax
1864 .byte 201 /* rorl $1 %ecx */
1867 .byte 201 /* rorl $1 %ecx */
1879 .byte 198 /* roll $1 %esi */
1883 leal 3395469782(%esi,%edi,1),%esi
1887 .byte 203 /* rorl $1 %ebx */
1890 .byte 203 /* rorl $1 %ebx */
1902 .byte 199 /* roll $1 %edi */
1906 leal 3395469782(%edi,%edx,1),%edi
1912 .byte 200 /* rorl $1 %eax */
1915 .byte 200 /* rorl $1 %eax */
1916 /* End processing */
1948 .sha1_block_x86_end:
1949 SIZE(sha1_block_x86,.sha1_block_x86_end-sha1_block_x86)