5 section .text code
align=64
8 EXTERN OPENSSL_ia32cap_P
9 global sha512_block_data_order
12 sha512_block_data_order:
13 mov QWORD[8+rsp
],rdi
;WIN64 prologue
16 $L$
SEH_begin_sha512_block_data_order:
33 mov QWORD[((128+0))+rsp
],rdi
34 mov QWORD[((128+8))+rsp
],rsi
35 mov QWORD[((128+16))+rsp
],rdx
36 mov QWORD[((128+24))+rsp
],r11
136 mov r12
,QWORD[16+rsi
]
147 mov QWORD[16+rsp
],r12
177 mov r12
,QWORD[24+rsi
]
188 mov QWORD[24+rsp
],r12
218 mov r12
,QWORD[32+rsi
]
229 mov QWORD[32+rsp
],r12
259 mov r12
,QWORD[40+rsi
]
270 mov QWORD[40+rsp
],r12
300 mov r12
,QWORD[48+rsi
]
311 mov QWORD[48+rsp
],r12
341 mov r12
,QWORD[56+rsi
]
352 mov QWORD[56+rsp
],r12
382 mov r12
,QWORD[64+rsi
]
393 mov QWORD[64+rsp
],r12
423 mov r12
,QWORD[72+rsi
]
434 mov QWORD[72+rsp
],r12
464 mov r12
,QWORD[80+rsi
]
475 mov QWORD[80+rsp
],r12
505 mov r12
,QWORD[88+rsi
]
516 mov QWORD[88+rsp
],r12
546 mov r12
,QWORD[96+rsi
]
557 mov QWORD[96+rsp
],r12
587 mov r12
,QWORD[104+rsi
]
598 mov QWORD[104+rsp
],r12
628 mov r12
,QWORD[112+rsi
]
639 mov QWORD[112+rsp
],r12
669 mov r12
,QWORD[120+rsi
]
680 mov QWORD[120+rsp
],r12
709 jmp NEAR $L$rounds_16_xx
713 mov r15
,QWORD[112+rsp
]
730 add r12
,QWORD[72+rsp
]
772 mov r13
,QWORD[16+rsp
]
773 mov rdi
,QWORD[120+rsp
]
790 add r12
,QWORD[80+rsp
]
832 mov r13
,QWORD[24+rsp
]
850 add r12
,QWORD[88+rsp
]
852 add r12
,QWORD[16+rsp
]
863 mov QWORD[16+rsp
],r12
892 mov r13
,QWORD[32+rsp
]
910 add r12
,QWORD[96+rsp
]
912 add r12
,QWORD[24+rsp
]
923 mov QWORD[24+rsp
],r12
952 mov r13
,QWORD[40+rsp
]
953 mov r15
,QWORD[16+rsp
]
970 add r12
,QWORD[104+rsp
]
972 add r12
,QWORD[32+rsp
]
983 mov QWORD[32+rsp
],r12
1012 mov r13
,QWORD[48+rsp
]
1013 mov rdi
,QWORD[24+rsp
]
1030 add r12
,QWORD[112+rsp
]
1032 add r12
,QWORD[40+rsp
]
1043 mov QWORD[40+rsp
],r12
1072 mov r13
,QWORD[56+rsp
]
1073 mov r15
,QWORD[32+rsp
]
1090 add r12
,QWORD[120+rsp
]
1092 add r12
,QWORD[48+rsp
]
1103 mov QWORD[48+rsp
],r12
1132 mov r13
,QWORD[64+rsp
]
1133 mov rdi
,QWORD[40+rsp
]
1152 add r12
,QWORD[56+rsp
]
1163 mov QWORD[56+rsp
],r12
1192 mov r13
,QWORD[72+rsp
]
1193 mov r15
,QWORD[48+rsp
]
1210 add r12
,QWORD[8+rsp
]
1212 add r12
,QWORD[64+rsp
]
1223 mov QWORD[64+rsp
],r12
1252 mov r13
,QWORD[80+rsp
]
1253 mov rdi
,QWORD[56+rsp
]
1270 add r12
,QWORD[16+rsp
]
1272 add r12
,QWORD[72+rsp
]
1283 mov QWORD[72+rsp
],r12
1312 mov r13
,QWORD[88+rsp
]
1313 mov r15
,QWORD[64+rsp
]
1330 add r12
,QWORD[24+rsp
]
1332 add r12
,QWORD[80+rsp
]
1343 mov QWORD[80+rsp
],r12
1372 mov r13
,QWORD[96+rsp
]
1373 mov rdi
,QWORD[72+rsp
]
1390 add r12
,QWORD[32+rsp
]
1392 add r12
,QWORD[88+rsp
]
1403 mov QWORD[88+rsp
],r12
1432 mov r13
,QWORD[104+rsp
]
1433 mov r15
,QWORD[80+rsp
]
1450 add r12
,QWORD[40+rsp
]
1452 add r12
,QWORD[96+rsp
]
1463 mov QWORD[96+rsp
],r12
1492 mov r13
,QWORD[112+rsp
]
1493 mov rdi
,QWORD[88+rsp
]
1510 add r12
,QWORD[48+rsp
]
1512 add r12
,QWORD[104+rsp
]
1523 mov QWORD[104+rsp
],r12
1552 mov r13
,QWORD[120+rsp
]
1553 mov r15
,QWORD[96+rsp
]
1570 add r12
,QWORD[56+rsp
]
1572 add r12
,QWORD[112+rsp
]
1583 mov QWORD[112+rsp
],r12
1613 mov rdi
,QWORD[104+rsp
]
1630 add r12
,QWORD[64+rsp
]
1632 add r12
,QWORD[120+rsp
]
1643 mov QWORD[120+rsp
],r12
1673 jnz NEAR $L$rounds_16_xx
1675 mov rdi
,QWORD[((128+0))+rsp
]
1680 add rbx
,QWORD[8+rdi
]
1681 add rcx
,QWORD[16+rdi
]
1682 add rdx
,QWORD[24+rdi
]
1683 add r8
,QWORD[32+rdi
]
1684 add r9
,QWORD[40+rdi
]
1685 add r10
,QWORD[48+rdi
]
1686 add r11
,QWORD[56+rdi
]
1688 cmp rsi
,QWORD[((128+16))+rsp
]
1691 mov QWORD[8+rdi
],rbx
1692 mov QWORD[16+rdi
],rcx
1693 mov QWORD[24+rdi
],rdx
1694 mov QWORD[32+rdi
],r8
1695 mov QWORD[40+rdi
],r9
1696 mov QWORD[48+rdi
],r10
1697 mov QWORD[56+rdi
],r11
1700 mov rsi
,QWORD[((128+24))+rsp
]
1702 mov r14
,QWORD[8+rsi
]
1703 mov r13
,QWORD[16+rsi
]
1704 mov r12
,QWORD[24+rsi
]
1705 mov rbp
,QWORD[32+rsi
]
1706 mov rbx
,QWORD[40+rsi
]
1709 mov rdi
,QWORD[8+rsp
] ;WIN64 epilogue
1710 mov rsi
,QWORD[16+rsp
]
1711 DB 0F3h
,0C3h
;repret
1712 $L$
SEH_end_sha512_block_data_order:
1716 DQ 0x428a2f98d728ae22,0x7137449123ef65cd
1717 DQ 0x428a2f98d728ae22,0x7137449123ef65cd
1718 DQ 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
1719 DQ 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
1720 DQ 0x3956c25bf348b538,0x59f111f1b605d019
1721 DQ 0x3956c25bf348b538,0x59f111f1b605d019
1722 DQ 0x923f82a4af194f9b,0xab1c5ed5da6d8118
1723 DQ 0x923f82a4af194f9b,0xab1c5ed5da6d8118
1724 DQ 0xd807aa98a3030242,0x12835b0145706fbe
1725 DQ 0xd807aa98a3030242,0x12835b0145706fbe
1726 DQ 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
1727 DQ 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
1728 DQ 0x72be5d74f27b896f,0x80deb1fe3b1696b1
1729 DQ 0x72be5d74f27b896f,0x80deb1fe3b1696b1
1730 DQ 0x9bdc06a725c71235,0xc19bf174cf692694
1731 DQ 0x9bdc06a725c71235,0xc19bf174cf692694
1732 DQ 0xe49b69c19ef14ad2,0xefbe4786384f25e3
1733 DQ 0xe49b69c19ef14ad2,0xefbe4786384f25e3
1734 DQ 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
1735 DQ 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
1736 DQ 0x2de92c6f592b0275,0x4a7484aa6ea6e483
1737 DQ 0x2de92c6f592b0275,0x4a7484aa6ea6e483
1738 DQ 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
1739 DQ 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
1740 DQ 0x983e5152ee66dfab,0xa831c66d2db43210
1741 DQ 0x983e5152ee66dfab,0xa831c66d2db43210
1742 DQ 0xb00327c898fb213f,0xbf597fc7beef0ee4
1743 DQ 0xb00327c898fb213f,0xbf597fc7beef0ee4
1744 DQ 0xc6e00bf33da88fc2,0xd5a79147930aa725
1745 DQ 0xc6e00bf33da88fc2,0xd5a79147930aa725
1746 DQ 0x06ca6351e003826f,0x142929670a0e6e70
1747 DQ 0x06ca6351e003826f,0x142929670a0e6e70
1748 DQ 0x27b70a8546d22ffc,0x2e1b21385c26c926
1749 DQ 0x27b70a8546d22ffc,0x2e1b21385c26c926
1750 DQ 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
1751 DQ 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
1752 DQ 0x650a73548baf63de,0x766a0abb3c77b2a8
1753 DQ 0x650a73548baf63de,0x766a0abb3c77b2a8
1754 DQ 0x81c2c92e47edaee6,0x92722c851482353b
1755 DQ 0x81c2c92e47edaee6,0x92722c851482353b
1756 DQ 0xa2bfe8a14cf10364,0xa81a664bbc423001
1757 DQ 0xa2bfe8a14cf10364,0xa81a664bbc423001
1758 DQ 0xc24b8b70d0f89791,0xc76c51a30654be30
1759 DQ 0xc24b8b70d0f89791,0xc76c51a30654be30
1760 DQ 0xd192e819d6ef5218,0xd69906245565a910
1761 DQ 0xd192e819d6ef5218,0xd69906245565a910
1762 DQ 0xf40e35855771202a,0x106aa07032bbd1b8
1763 DQ 0xf40e35855771202a,0x106aa07032bbd1b8
1764 DQ 0x19a4c116b8d2d0c8,0x1e376c085141ab53
1765 DQ 0x19a4c116b8d2d0c8,0x1e376c085141ab53
1766 DQ 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
1767 DQ 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
1768 DQ 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
1769 DQ 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
1770 DQ 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
1771 DQ 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
1772 DQ 0x748f82ee5defb2fc,0x78a5636f43172f60
1773 DQ 0x748f82ee5defb2fc,0x78a5636f43172f60
1774 DQ 0x84c87814a1f0ab72,0x8cc702081a6439ec
1775 DQ 0x84c87814a1f0ab72,0x8cc702081a6439ec
1776 DQ 0x90befffa23631e28,0xa4506cebde82bde9
1777 DQ 0x90befffa23631e28,0xa4506cebde82bde9
1778 DQ 0xbef9a3f7b2c67915,0xc67178f2e372532b
1779 DQ 0xbef9a3f7b2c67915,0xc67178f2e372532b
1780 DQ 0xca273eceea26619c,0xd186b8c721c0c207
1781 DQ 0xca273eceea26619c,0xd186b8c721c0c207
1782 DQ 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
1783 DQ 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
1784 DQ 0x06f067aa72176fba,0x0a637dc5a2c898a6
1785 DQ 0x06f067aa72176fba,0x0a637dc5a2c898a6
1786 DQ 0x113f9804bef90dae,0x1b710b35131c471b
1787 DQ 0x113f9804bef90dae,0x1b710b35131c471b
1788 DQ 0x28db77f523047d84,0x32caab7b40c72493
1789 DQ 0x28db77f523047d84,0x32caab7b40c72493
1790 DQ 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
1791 DQ 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
1792 DQ 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
1793 DQ 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
1794 DQ 0x5fcb6fab3ad6faec,0x6c44198c4a475817
1795 DQ 0x5fcb6fab3ad6faec,0x6c44198c4a475817
1797 DQ 0x0001020304050607,0x08090a0b0c0d0e0f
1798 DQ 0x0001020304050607,0x08090a0b0c0d0e0f
1799 DB 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
1800 DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54
1801 DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
1802 DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
1804 EXTERN __imp_RtlVirtualUnwind
1819 mov rax
,QWORD[120+r8
]
1820 mov rbx
,QWORD[248+r8
]
1823 mov r11
,QWORD[56+r9
]
1828 jb NEAR $L$in_prologue
1830 mov rax
,QWORD[152+r8
]
1832 mov r10d
,DWORD[4+r11
]
1835 jae NEAR $L$in_prologue
1837 mov rax
,QWORD[((128+24))+rax
]
1840 mov rbx
,QWORD[((-8))+rax
]
1841 mov rbp
,QWORD[((-16))+rax
]
1842 mov r12
,QWORD[((-24))+rax
]
1843 mov r13
,QWORD[((-32))+rax
]
1844 mov r14
,QWORD[((-40))+rax
]
1845 mov r15
,QWORD[((-48))+rax
]
1846 mov QWORD[144+r8
],rbx
1847 mov QWORD[160+r8
],rbp
1848 mov QWORD[216+r8
],r12
1849 mov QWORD[224+r8
],r13
1850 mov QWORD[232+r8
],r14
1851 mov QWORD[240+r8
],r15
1853 lea r10
,[$L
$epilogue
]
1855 jb NEAR $L$in_prologue
1857 lea rsi
,[((128+32))+rsi
]
1863 mov rdi
,QWORD[8+rax
]
1864 mov rsi
,QWORD[16+rax
]
1865 mov QWORD[152+r8
],rax
1866 mov QWORD[168+r8
],rsi
1867 mov QWORD[176+r8
],rdi
1869 mov rdi
,QWORD[40+r9
]
1876 mov rdx
,QWORD[8+rsi
]
1878 mov r9
,QWORD[16+rsi
]
1879 mov r10
,QWORD[40+rsi
]
1882 mov QWORD[32+rsp
],r10
1883 mov QWORD[40+rsp
],r11
1884 mov QWORD[48+rsp
],r12
1885 mov QWORD[56+rsp
],rcx
1886 call QWORD[__imp_RtlVirtualUnwind
]
1899 DB 0F3h
,0C3h
;repret
1901 section .pdata rdata
align=4
1903 DD $L$SEH_begin_sha512_block_data_order wrt ..imagebase
1904 DD $L$SEH_end_sha512_block_data_order wrt ..imagebase
1905 DD $L$SEH_info_sha512_block_data_order wrt ..imagebase
1906 section .xdata rdata
align=8
1908 $L$
SEH_info_sha512_block_data_order:
1910 DD se_handler wrt ..imagebase
1911 DD $L$prologue wrt ..imagebase
,$L
$epilogue wrt ..imagebase