5 section .text code align=64
105 mov rax,QWORD[32+rsi]
113 mov rax,QWORD[40+rsi]
121 mov rax,QWORD[48+rsi]
129 mov rax,QWORD[56+rsi]
142 mov rsi,QWORD[32+rsp]
146 mov rbp,QWORD[96+rcx]
164 mov rax,QWORD[16+rsi]
166 mov r10,QWORD[16+rcx]
173 mov rax,QWORD[24+rsi]
175 mov r11,QWORD[24+rcx]
182 mov rax,QWORD[32+rsi]
184 mov r12,QWORD[32+rcx]
191 mov rax,QWORD[40+rsi]
193 mov r13,QWORD[40+rcx]
200 mov rax,QWORD[48+rsi]
202 mov r14,QWORD[48+rcx]
209 mov rax,QWORD[56+rsi]
211 mov r15,QWORD[56+rcx]
217 mov rbp,QWORD[104+rcx]
233 mov rax,QWORD[16+rsi]
241 mov rax,QWORD[24+rsi]
249 mov rax,QWORD[32+rsi]
257 mov rax,QWORD[40+rsi]
265 mov rax,QWORD[48+rsi]
273 mov rax,QWORD[56+rsi]
280 mov rbp,QWORD[112+rcx]
285 mov QWORD[16+rdi],r10
296 mov rax,QWORD[16+rsi]
304 mov rax,QWORD[24+rsi]
312 mov rax,QWORD[32+rsi]
320 mov rax,QWORD[40+rsi]
328 mov rax,QWORD[48+rsi]
336 mov rax,QWORD[56+rsi]
343 mov rbp,QWORD[120+rcx]
348 mov QWORD[24+rdi],r11
359 mov rax,QWORD[16+rsi]
367 mov rax,QWORD[24+rsi]
375 mov rax,QWORD[32+rsi]
383 mov rax,QWORD[40+rsi]
391 mov rax,QWORD[48+rsi]
399 mov rax,QWORD[56+rsi]
410 adc r10,QWORD[80+rcx]
411 adc r11,QWORD[88+rcx]
420 mov QWORD[88+rdi],r11
422 mov QWORD[384+rsp],rax
426 mov r10,QWORD[16+rdi]
427 mov r11,QWORD[24+rdi]
443 mov rax,QWORD[384+rsp]
446 add r8,QWORD[((-16))+rdi]
447 adc r9,QWORD[((-8))+rdi]
452 mov QWORD[384+rsp],rax
492 mov rdi,QWORD[16+rsi]
493 mov rdx,QWORD[24+rsi]
496 mov rbp,QWORD[384+rsp]
507 mov rcx,QWORD[32+rsp]
514 adc r11,QWORD[64+rbp]
515 adc r12,QWORD[128+rbp]
516 adc r13,QWORD[192+rbp]
517 adc r14,QWORD[256+rbp]
518 adc r15,QWORD[320+rbp]
519 adc r8,QWORD[384+rbp]
520 adc r9,QWORD[448+rbp]
546 mov rax,QWORD[32+rcx]
547 mov rbx,QWORD[40+rcx]
548 mov rdi,QWORD[48+rcx]
549 mov rdx,QWORD[56+rcx]
569 mov rsi,QWORD[144+rsp]
572 mov QWORD[16+rsi],r12
573 mov QWORD[24+rsi],r13
574 mov QWORD[32+rsi],r14
575 mov QWORD[40+rsi],r15
592 mov QWORD[520+rsp],rax
634 mov QWORD[528+rsp],r10
645 mov rax,QWORD[16+rsi]
653 mov rax,QWORD[24+rsi]
661 mov rax,QWORD[32+rsi]
669 mov rax,QWORD[40+rsi]
677 mov rax,QWORD[48+rsi]
685 mov rax,QWORD[56+rsi]
692 mov rbp,QWORD[16+rdi]
697 mov QWORD[536+rsp],r11
708 mov rax,QWORD[16+rsi]
716 mov rax,QWORD[24+rsi]
724 mov rax,QWORD[32+rsi]
732 mov rax,QWORD[40+rsi]
740 mov rax,QWORD[48+rsi]
748 mov rax,QWORD[56+rsi]
755 mov rbp,QWORD[24+rdi]
760 mov QWORD[544+rsp],r12
771 mov rax,QWORD[16+rsi]
779 mov rax,QWORD[24+rsi]
787 mov rax,QWORD[32+rsi]
795 mov rax,QWORD[40+rsi]
803 mov rax,QWORD[48+rsi]
811 mov rax,QWORD[56+rsi]
818 mov rbp,QWORD[32+rdi]
823 mov QWORD[552+rsp],r13
834 mov rax,QWORD[16+rsi]
842 mov rax,QWORD[24+rsi]
850 mov rax,QWORD[32+rsi]
858 mov rax,QWORD[40+rsi]
866 mov rax,QWORD[48+rsi]
874 mov rax,QWORD[56+rsi]
881 mov rbp,QWORD[40+rdi]
886 mov QWORD[560+rsp],r14
897 mov rax,QWORD[16+rsi]
905 mov rax,QWORD[24+rsi]
913 mov rax,QWORD[32+rsi]
921 mov rax,QWORD[40+rsi]
929 mov rax,QWORD[48+rsi]
937 mov rax,QWORD[56+rsi]
944 mov rbp,QWORD[48+rdi]
949 mov QWORD[568+rsp],r15
960 mov rax,QWORD[16+rsi]
968 mov rax,QWORD[24+rsi]
976 mov rax,QWORD[32+rsi]
984 mov rax,QWORD[40+rsi]
992 mov rax,QWORD[48+rsi]
1000 mov rax,QWORD[56+rsi]
1007 mov rbp,QWORD[56+rdi]
1012 mov QWORD[576+rsp],r8
1015 mov rax,QWORD[8+rsi]
1023 mov rax,QWORD[16+rsi]
1031 mov rax,QWORD[24+rsi]
1039 mov rax,QWORD[32+rsi]
1047 mov rax,QWORD[40+rsi]
1055 mov rax,QWORD[48+rsi]
1063 mov rax,QWORD[56+rsi]
1070 mov QWORD[584+rsp],r9
1071 mov QWORD[592+rsp],r10
1072 mov QWORD[600+rsp],r11
1073 mov QWORD[608+rsp],r12
1074 mov QWORD[616+rsp],r13
1075 mov QWORD[624+rsp],r14
1076 mov QWORD[632+rsp],r15
1077 mov QWORD[640+rsp],r8
1083 jmp NEAR mont_reduce
1090 mov rcx,QWORD[16+rsp]
1098 mov QWORD[528+rsp],rax
1131 mov QWORD[536+rsp],r10
1137 mov rbx,QWORD[8+rcx]
1139 mov rax,QWORD[16+rcx]
1143 mov QWORD[544+rsp],r11
1146 mov rax,QWORD[24+rcx]
1152 mov QWORD[552+rsp],r12
1155 mov rax,QWORD[32+rcx]
1163 mov rax,QWORD[40+rcx]
1191 mov rbx,QWORD[16+rcx]
1193 mov rax,QWORD[24+rcx]
1197 mov QWORD[560+rsp],r13
1200 mov rax,QWORD[32+rcx]
1206 mov QWORD[568+rsp],r14
1209 mov rax,QWORD[40+rcx]
1238 mov rbx,QWORD[24+rcx]
1240 mov rax,QWORD[32+rcx]
1244 mov QWORD[576+rsp],r15
1247 mov rax,QWORD[40+rcx]
1253 mov QWORD[584+rsp],rsi
1276 mov rbx,QWORD[32+rcx]
1278 mov rax,QWORD[40+rcx]
1282 mov QWORD[592+rsp],r11
1291 mov QWORD[600+rsp],r12
1306 mov rbx,QWORD[40+rcx]
1312 mov QWORD[608+rsp],r15
1321 mov QWORD[616+rsp],r11
1334 mov QWORD[624+rsp],r12
1336 mov QWORD[632+rsp],rdx
1339 mov r10,QWORD[528+rsp]
1340 mov r11,QWORD[536+rsp]
1341 mov r12,QWORD[544+rsp]
1342 mov r13,QWORD[552+rsp]
1343 mov r14,QWORD[560+rsp]
1344 mov r15,QWORD[568+rsp]
1346 mov rax,QWORD[24+rcx]
1361 mov QWORD[520+rsp],rax
1364 mov rax,QWORD[8+rcx]
1372 mov QWORD[528+rsp],r10
1373 mov QWORD[536+rsp],r11
1375 mov rax,QWORD[16+rcx]
1384 mov QWORD[544+rsp],r12
1385 mov QWORD[552+rsp],r13
1392 mov QWORD[560+rsp],r14
1393 mov QWORD[568+rsp],r15
1398 mov r10,QWORD[576+rsp]
1399 mov r11,QWORD[584+rsp]
1400 mov r12,QWORD[592+rsp]
1401 mov r13,QWORD[600+rsp]
1402 mov r14,QWORD[608+rsp]
1403 mov r15,QWORD[616+rsp]
1404 mov rdi,QWORD[624+rsp]
1405 mov rsi,QWORD[632+rsp]
1424 mov rax,QWORD[32+rcx]
1433 mov QWORD[576+rsp],r10
1434 mov QWORD[584+rsp],r11
1436 mov rax,QWORD[40+rcx]
1445 mov QWORD[592+rsp],r12
1446 mov QWORD[600+rsp],r13
1448 mov rax,QWORD[48+rcx]
1455 mov QWORD[608+rsp],r14
1456 mov QWORD[616+rsp],r15
1462 mov QWORD[624+rsp],rdi
1463 mov QWORD[632+rsp],rsi
1464 mov QWORD[640+rsp],rbx
1466 jmp NEAR mont_reduce
1473 mov QWORD[8+rsp],rdi ;WIN64 prologue
1474 mov QWORD[16+rsp],rsi
1476 $L$SEH_begin_mod_exp_512:
1497 mov QWORD[8+rsp],rdi
1498 mov QWORD[16+rsp],rsi
1499 mov QWORD[24+rsp],rcx
1505 movdqu xmm0,XMMWORD[rsi]
1506 movdqu xmm1,XMMWORD[16+rsi]
1507 movdqu xmm2,XMMWORD[32+rsi]
1508 movdqu xmm3,XMMWORD[48+rsi]
1509 movdqa XMMWORD[512+rsp],xmm4
1510 movdqa XMMWORD[528+rsp],xmm4
1511 movdqa XMMWORD[608+rsp],xmm4
1512 movdqa XMMWORD[624+rsp],xmm4
1513 movdqa XMMWORD[544+rsp],xmm0
1514 movdqa XMMWORD[560+rsp],xmm1
1515 movdqa XMMWORD[576+rsp],xmm2
1516 movdqa XMMWORD[592+rsp],xmm3
1519 movdqu xmm0,XMMWORD[rdx]
1520 movdqu xmm1,XMMWORD[16+rdx]
1521 movdqu xmm2,XMMWORD[32+rdx]
1522 movdqu xmm3,XMMWORD[48+rdx]
1525 mov QWORD[136+rsp],rbx
1532 mov QWORD[8+rcx],rax
1533 mov QWORD[24+rcx],rax
1534 mov QWORD[32+rcx],rax
1535 mov QWORD[40+rcx],rax
1536 mov QWORD[48+rcx],rax
1537 mov QWORD[56+rcx],rax
1538 mov QWORD[128+rsp],rax
1551 mov WORD[128+rdi],bx
1553 mov WORD[192+rdi],bx
1559 mov QWORD[32+rsp],rax
1560 mov QWORD[40+rsp],rbp
1562 mov QWORD[136+rsp],rsi
1564 mov r11,QWORD[8+rsi]
1565 mov r12,QWORD[16+rsi]
1566 mov r13,QWORD[24+rsi]
1567 mov r14,QWORD[32+rsi]
1568 mov r15,QWORD[40+rsi]
1569 mov r8,QWORD[48+rsi]
1570 mov r9,QWORD[56+rsi]
1575 mov rbp,QWORD[40+rsp]
1577 mov QWORD[40+rsp],rbp
1586 mov WORD[128+rbp],bx
1588 mov WORD[192+rbp],bx
1593 mov rax,QWORD[32+rsp]
1595 mov QWORD[32+rsp],rax
1600 movdqa XMMWORD[64+rsp],xmm0
1601 movdqa XMMWORD[80+rsp],xmm1
1602 movdqa XMMWORD[96+rsp],xmm2
1603 movdqa XMMWORD[112+rsp],xmm3
1609 mov eax,DWORD[126+rsp]
1613 mov DWORD[126+rsp],edx
1614 lea rsi,[640+rax*2+rsp]
1615 mov rdx,QWORD[8+rsp]
1618 movzx rbx,WORD[192+rsi]
1619 movzx rax,WORD[448+rsi]
1622 mov bx,WORD[128+rsi]
1623 mov ax,WORD[384+rsi]
1627 mov ax,WORD[320+rsi]
1631 mov ax,WORD[256+rsi]
1633 mov QWORD[8+rdx],rax
1638 mov QWORD[48+rsp],505
1640 mov rcx,QWORD[8+rsp]
1641 mov QWORD[136+rsp],rcx
1643 mov r11,QWORD[8+rcx]
1644 mov r12,QWORD[16+rcx]
1645 mov r13,QWORD[24+rcx]
1646 mov r14,QWORD[32+rcx]
1647 mov r15,QWORD[40+rcx]
1648 mov r8,QWORD[48+rcx]
1649 mov r9,QWORD[56+rcx]
1662 mov rcx,QWORD[48+rsp]
1665 mov edx,DWORD[64+rax*2+rsp]
1670 lea rsi,[640+rdx*2+rsp]
1675 movzx rbx,WORD[192+rsi]
1676 movzx rax,WORD[448+rsi]
1679 mov bx,WORD[128+rsi]
1680 mov ax,WORD[384+rsi]
1684 mov ax,WORD[320+rsi]
1688 mov ax,WORD[256+rsi]
1690 mov QWORD[8+rdx],rax
1695 mov rsi,QWORD[8+rsp]
1700 mov rcx,QWORD[48+rsp]
1702 mov QWORD[48+rsp],rcx
1703 jge NEAR main_loop_a3b
1710 mov rdx,QWORD[8+rsp]
1712 movdqu xmm0,XMMWORD[rdx]
1713 movdqu xmm1,XMMWORD[16+rdx]
1714 movdqu xmm2,XMMWORD[32+rdx]
1715 movdqu xmm3,XMMWORD[48+rdx]
1716 movdqa XMMWORD[576+rsp],xmm4
1717 movdqa XMMWORD[592+rsp],xmm4
1718 movdqa XMMWORD[608+rsp],xmm4
1719 movdqa XMMWORD[624+rsp],xmm4
1720 movdqa XMMWORD[512+rsp],xmm0
1721 movdqa XMMWORD[528+rsp],xmm1
1722 movdqa XMMWORD[544+rsp],xmm2
1723 movdqa XMMWORD[560+rsp],xmm3
1728 mov rax,QWORD[8+rsp]
1731 mov r10,QWORD[16+rax]
1732 mov r11,QWORD[24+rax]
1733 mov r12,QWORD[32+rax]
1734 mov r13,QWORD[40+rax]
1735 mov r14,QWORD[48+rax]
1736 mov r15,QWORD[56+rax]
1739 mov rbx,QWORD[24+rsp]
1744 sbb r10,QWORD[16+rbx]
1745 sbb r11,QWORD[24+rbx]
1746 sbb r12,QWORD[32+rbx]
1747 sbb r13,QWORD[40+rbx]
1748 sbb r14,QWORD[48+rbx]
1749 sbb r15,QWORD[56+rbx]
1753 mov rdi,QWORD[8+rax]
1754 mov rcx,QWORD[16+rax]
1755 mov rdx,QWORD[24+rax]
1761 mov QWORD[8+rax],rdi
1762 mov QWORD[16+rax],rcx
1763 mov QWORD[24+rax],rdx
1765 mov rsi,QWORD[32+rax]
1766 mov rdi,QWORD[40+rax]
1767 mov rcx,QWORD[48+rax]
1768 mov rdx,QWORD[56+rax]
1773 mov QWORD[32+rax],rsi
1774 mov QWORD[40+rax],rdi
1775 mov QWORD[48+rax],rcx
1776 mov QWORD[56+rax],rdx
1780 mov r14,QWORD[8+rsi]
1781 mov r13,QWORD[16+rsi]
1782 mov r12,QWORD[24+rsi]
1783 mov rbx,QWORD[32+rsi]
1784 mov rbp,QWORD[40+rsi]
1787 mov rdi,QWORD[8+rsp] ;WIN64 epilogue
1788 mov rsi,QWORD[16+rsp]
1789 DB 0F3h,0C3h ;repret
1790 $L$SEH_end_mod_exp_512:
1791 EXTERN __imp_RtlVirtualUnwind
1794 mod_exp_512_se_handler:
1806 mov rax,QWORD[120+r8]
1807 mov rbx,QWORD[248+r8]
1811 jb NEAR $L$in_prologue
1813 mov rax,QWORD[152+r8]
1815 lea r10,[$L$epilogue]
1817 jae NEAR $L$in_prologue
1821 mov rbx,QWORD[32+rax]
1822 mov rbp,QWORD[40+rax]
1823 mov r12,QWORD[24+rax]
1824 mov r13,QWORD[16+rax]
1825 mov r14,QWORD[8+rax]
1828 mov QWORD[144+r8],rbx
1829 mov QWORD[160+r8],rbp
1830 mov QWORD[216+r8],r12
1831 mov QWORD[224+r8],r13
1832 mov QWORD[232+r8],r14
1833 mov QWORD[240+r8],r15
1836 mov rdi,QWORD[8+rax]
1837 mov rsi,QWORD[16+rax]
1838 mov QWORD[152+r8],rax
1839 mov QWORD[168+r8],rsi
1840 mov QWORD[176+r8],rdi
1842 mov rdi,QWORD[40+r9]
1849 mov rdx,QWORD[8+rsi]
1851 mov r9,QWORD[16+rsi]
1852 mov r10,QWORD[40+rsi]
1855 mov QWORD[32+rsp],r10
1856 mov QWORD[40+rsp],r11
1857 mov QWORD[48+rsp],r12
1858 mov QWORD[56+rsp],rcx
1859 call QWORD[__imp_RtlVirtualUnwind]
1872 DB 0F3h,0C3h ;repret
1875 section .pdata rdata align=4
1877 DD $L$SEH_begin_mod_exp_512 wrt ..imagebase
1878 DD $L$SEH_end_mod_exp_512 wrt ..imagebase
1879 DD $L$SEH_info_mod_exp_512 wrt ..imagebase
1881 section .xdata rdata align=8
1883 $L$SEH_info_mod_exp_512:
1885 DD mod_exp_512_se_handler wrt ..imagebase