OPTION DOTNAME EXTERN mul_mont_384x$1:NEAR EXTERN sqr_mont_384x$1:NEAR EXTERN mul_382x$1:NEAR EXTERN sqr_382x$1:NEAR EXTERN mul_384$1:NEAR EXTERN sqr_384$1:NEAR EXTERN redc_mont_384$1:NEAR EXTERN from_mont_384$1:NEAR EXTERN sgn0_pty_mont_384$1:NEAR EXTERN sgn0_pty_mont_384x$1:NEAR EXTERN mul_mont_384$1:NEAR EXTERN sqr_mont_384$1:NEAR EXTERN sqr_n_mul_mont_384$1:NEAR EXTERN sqr_n_mul_mont_383$1:NEAR EXTERN sqr_mont_382x$1:NEAR _DATA SEGMENT COMM __blst_platform_cap:DWORD:1 _DATA ENDS .text$ SEGMENT ALIGN(256) 'CODE' ALIGN 32 __subq_mod_384x384 PROC PRIVATE DB 243,15,30,250 mov r8,QWORD PTR[rsi] mov r9,QWORD PTR[8+rsi] mov r10,QWORD PTR[16+rsi] mov r11,QWORD PTR[24+rsi] mov r12,QWORD PTR[32+rsi] mov r13,QWORD PTR[40+rsi] mov r14,QWORD PTR[48+rsi] sub r8,QWORD PTR[rdx] mov r15,QWORD PTR[56+rsi] sbb r9,QWORD PTR[8+rdx] mov rax,QWORD PTR[64+rsi] sbb r10,QWORD PTR[16+rdx] mov rbx,QWORD PTR[72+rsi] sbb r11,QWORD PTR[24+rdx] mov rbp,QWORD PTR[80+rsi] sbb r12,QWORD PTR[32+rdx] mov rsi,QWORD PTR[88+rsi] sbb r13,QWORD PTR[40+rdx] mov QWORD PTR[rdi],r8 sbb r14,QWORD PTR[48+rdx] mov r8,QWORD PTR[rcx] mov QWORD PTR[8+rdi],r9 sbb r15,QWORD PTR[56+rdx] mov r9,QWORD PTR[8+rcx] mov QWORD PTR[16+rdi],r10 sbb rax,QWORD PTR[64+rdx] mov r10,QWORD PTR[16+rcx] mov QWORD PTR[24+rdi],r11 sbb rbx,QWORD PTR[72+rdx] mov r11,QWORD PTR[24+rcx] mov QWORD PTR[32+rdi],r12 sbb rbp,QWORD PTR[80+rdx] mov r12,QWORD PTR[32+rcx] mov QWORD PTR[40+rdi],r13 sbb rsi,QWORD PTR[88+rdx] mov r13,QWORD PTR[40+rcx] sbb rdx,rdx and r8,rdx and r9,rdx and r10,rdx and r11,rdx and r12,rdx and r13,rdx add r14,r8 adc r15,r9 mov QWORD PTR[48+rdi],r14 adc rax,r10 mov QWORD PTR[56+rdi],r15 adc rbx,r11 mov QWORD PTR[64+rdi],rax adc rbp,r12 mov QWORD PTR[72+rdi],rbx adc rsi,r13 mov QWORD PTR[80+rdi],rbp mov QWORD PTR[88+rdi],rsi ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif __subq_mod_384x384 ENDP ALIGN 32 __addq_mod_384 PROC PRIVATE DB 243,15,30,250 mov r8,QWORD PTR[rsi] mov r9,QWORD PTR[8+rsi] mov r10,QWORD PTR[16+rsi] mov r11,QWORD PTR[24+rsi] mov r12,QWORD PTR[32+rsi] mov r13,QWORD PTR[40+rsi] add r8,QWORD PTR[rdx] adc r9,QWORD PTR[8+rdx] adc r10,QWORD PTR[16+rdx] mov r14,r8 adc r11,QWORD PTR[24+rdx] mov r15,r9 adc r12,QWORD PTR[32+rdx] mov rax,r10 adc r13,QWORD PTR[40+rdx] mov rbx,r11 sbb rdx,rdx sub r8,QWORD PTR[rcx] sbb r9,QWORD PTR[8+rcx] mov rbp,r12 sbb r10,QWORD PTR[16+rcx] sbb r11,QWORD PTR[24+rcx] sbb r12,QWORD PTR[32+rcx] mov rsi,r13 sbb r13,QWORD PTR[40+rcx] sbb rdx,0 cmovc r8,r14 cmovc r9,r15 cmovc r10,rax mov QWORD PTR[rdi],r8 cmovc r11,rbx mov QWORD PTR[8+rdi],r9 cmovc r12,rbp mov QWORD PTR[16+rdi],r10 cmovc r13,rsi mov QWORD PTR[24+rdi],r11 mov QWORD PTR[32+rdi],r12 mov QWORD PTR[40+rdi],r13 ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif __addq_mod_384 ENDP ALIGN 32 __subq_mod_384 PROC PRIVATE DB 243,15,30,250 mov r8,QWORD PTR[rsi] mov r9,QWORD PTR[8+rsi] mov r10,QWORD PTR[16+rsi] mov r11,QWORD PTR[24+rsi] mov r12,QWORD PTR[32+rsi] mov r13,QWORD PTR[40+rsi] __subq_mod_384_a_is_loaded:: sub r8,QWORD PTR[rdx] mov r14,QWORD PTR[rcx] sbb r9,QWORD PTR[8+rdx] mov r15,QWORD PTR[8+rcx] sbb r10,QWORD PTR[16+rdx] mov rax,QWORD PTR[16+rcx] sbb r11,QWORD PTR[24+rdx] mov rbx,QWORD PTR[24+rcx] sbb r12,QWORD PTR[32+rdx] mov rbp,QWORD PTR[32+rcx] sbb r13,QWORD PTR[40+rdx] mov rsi,QWORD PTR[40+rcx] sbb rdx,rdx and r14,rdx and r15,rdx and rax,rdx and rbx,rdx and rbp,rdx and rsi,rdx add r8,r14 adc r9,r15 mov QWORD PTR[rdi],r8 adc r10,rax mov QWORD PTR[8+rdi],r9 adc r11,rbx mov QWORD PTR[16+rdi],r10 adc r12,rbp mov QWORD PTR[24+rdi],r11 adc r13,rsi mov QWORD PTR[32+rdi],r12 mov QWORD PTR[40+rdi],r13 ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif __subq_mod_384 ENDP PUBLIC mul_mont_384x ALIGN 32 mul_mont_384x PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_mul_mont_384x:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 mov r8,QWORD PTR[40+rsp] ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz mul_mont_384x$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,328 $L$SEH_body_mul_mont_384x:: mov rbx,rdx mov QWORD PTR[32+rsp],rdi mov QWORD PTR[24+rsp],rsi mov QWORD PTR[16+rsp],rdx mov QWORD PTR[8+rsp],rcx mov QWORD PTR[rsp],r8 lea rdi,QWORD PTR[40+rsp] call __mulq_384 lea rbx,QWORD PTR[48+rbx] lea rsi,QWORD PTR[48+rsi] lea rdi,QWORD PTR[((40+96))+rsp] call __mulq_384 mov rcx,QWORD PTR[8+rsp] lea rdx,QWORD PTR[((-48))+rsi] lea rdi,QWORD PTR[((40+192+48))+rsp] call __addq_mod_384 mov rsi,QWORD PTR[16+rsp] lea rdx,QWORD PTR[48+rsi] lea rdi,QWORD PTR[((-48))+rdi] call __addq_mod_384 lea rbx,QWORD PTR[rdi] lea rsi,QWORD PTR[48+rdi] call __mulq_384 lea rsi,QWORD PTR[rdi] lea rdx,QWORD PTR[40+rsp] mov rcx,QWORD PTR[8+rsp] call __subq_mod_384x384 lea rsi,QWORD PTR[rdi] lea rdx,QWORD PTR[((-96))+rdi] call __subq_mod_384x384 lea rsi,QWORD PTR[40+rsp] lea rdx,QWORD PTR[((40+96))+rsp] lea rdi,QWORD PTR[40+rsp] call __subq_mod_384x384 mov rbx,rcx lea rsi,QWORD PTR[40+rsp] mov rcx,QWORD PTR[rsp] mov rdi,QWORD PTR[32+rsp] call __mulq_by_1_mont_384 call __redq_tail_mont_384 lea rsi,QWORD PTR[((40+192))+rsp] mov rcx,QWORD PTR[rsp] lea rdi,QWORD PTR[48+rdi] call __mulq_by_1_mont_384 call __redq_tail_mont_384 lea r8,QWORD PTR[328+rsp] mov r15,QWORD PTR[r8] mov r14,QWORD PTR[8+r8] mov r13,QWORD PTR[16+r8] mov r12,QWORD PTR[24+r8] mov rbx,QWORD PTR[32+r8] mov rbp,QWORD PTR[40+r8] lea rsp,QWORD PTR[48+r8] $L$SEH_epilogue_mul_mont_384x:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_mul_mont_384x:: mul_mont_384x ENDP PUBLIC sqr_mont_384x ALIGN 32 sqr_mont_384x PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_sqr_mont_384x:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz sqr_mont_384x$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,136 $L$SEH_body_sqr_mont_384x:: mov QWORD PTR[rsp],rcx mov rcx,rdx mov QWORD PTR[8+rsp],rdi mov QWORD PTR[16+rsp],rsi lea rdx,QWORD PTR[48+rsi] lea rdi,QWORD PTR[32+rsp] call __addq_mod_384 mov rsi,QWORD PTR[16+rsp] lea rdx,QWORD PTR[48+rsi] lea rdi,QWORD PTR[((32+48))+rsp] call __subq_mod_384 mov rsi,QWORD PTR[16+rsp] lea rbx,QWORD PTR[48+rsi] mov rax,QWORD PTR[48+rsi] mov r14,QWORD PTR[rsi] mov r15,QWORD PTR[8+rsi] mov r12,QWORD PTR[16+rsi] mov r13,QWORD PTR[24+rsi] call __mulq_mont_384 add r14,r14 adc r15,r15 adc r8,r8 mov r12,r14 adc r9,r9 mov r13,r15 adc r10,r10 mov rax,r8 adc r11,r11 mov rbx,r9 sbb rdx,rdx sub r14,QWORD PTR[rcx] sbb r15,QWORD PTR[8+rcx] mov rbp,r10 sbb r8,QWORD PTR[16+rcx] sbb r9,QWORD PTR[24+rcx] sbb r10,QWORD PTR[32+rcx] mov rsi,r11 sbb r11,QWORD PTR[40+rcx] sbb rdx,0 cmovc r14,r12 cmovc r15,r13 cmovc r8,rax mov QWORD PTR[48+rdi],r14 cmovc r9,rbx mov QWORD PTR[56+rdi],r15 cmovc r10,rbp mov QWORD PTR[64+rdi],r8 cmovc r11,rsi mov QWORD PTR[72+rdi],r9 mov QWORD PTR[80+rdi],r10 mov QWORD PTR[88+rdi],r11 lea rsi,QWORD PTR[32+rsp] lea rbx,QWORD PTR[((32+48))+rsp] mov rax,QWORD PTR[((32+48))+rsp] mov r14,QWORD PTR[((32+0))+rsp] mov r15,QWORD PTR[((32+8))+rsp] mov r12,QWORD PTR[((32+16))+rsp] mov r13,QWORD PTR[((32+24))+rsp] call __mulq_mont_384 lea r8,QWORD PTR[136+rsp] mov r15,QWORD PTR[r8] mov r14,QWORD PTR[8+r8] mov r13,QWORD PTR[16+r8] mov r12,QWORD PTR[24+r8] mov rbx,QWORD PTR[32+r8] mov rbp,QWORD PTR[40+r8] lea rsp,QWORD PTR[48+r8] $L$SEH_epilogue_sqr_mont_384x:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_sqr_mont_384x:: sqr_mont_384x ENDP PUBLIC mul_382x ALIGN 32 mul_382x PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_mul_382x:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz mul_382x$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,136 $L$SEH_body_mul_382x:: lea rdi,QWORD PTR[96+rdi] mov QWORD PTR[rsp],rsi mov QWORD PTR[8+rsp],rdx mov QWORD PTR[16+rsp],rdi mov QWORD PTR[24+rsp],rcx mov r8,QWORD PTR[rsi] mov r9,QWORD PTR[8+rsi] mov r10,QWORD PTR[16+rsi] mov r11,QWORD PTR[24+rsi] mov r12,QWORD PTR[32+rsi] mov r13,QWORD PTR[40+rsi] add r8,QWORD PTR[48+rsi] adc r9,QWORD PTR[56+rsi] adc r10,QWORD PTR[64+rsi] adc r11,QWORD PTR[72+rsi] adc r12,QWORD PTR[80+rsi] adc r13,QWORD PTR[88+rsi] mov QWORD PTR[((32+0))+rsp],r8 mov QWORD PTR[((32+8))+rsp],r9 mov QWORD PTR[((32+16))+rsp],r10 mov QWORD PTR[((32+24))+rsp],r11 mov QWORD PTR[((32+32))+rsp],r12 mov QWORD PTR[((32+40))+rsp],r13 mov r8,QWORD PTR[rdx] mov r9,QWORD PTR[8+rdx] mov r10,QWORD PTR[16+rdx] mov r11,QWORD PTR[24+rdx] mov r12,QWORD PTR[32+rdx] mov r13,QWORD PTR[40+rdx] add r8,QWORD PTR[48+rdx] adc r9,QWORD PTR[56+rdx] adc r10,QWORD PTR[64+rdx] adc r11,QWORD PTR[72+rdx] adc r12,QWORD PTR[80+rdx] adc r13,QWORD PTR[88+rdx] mov QWORD PTR[((32+48))+rsp],r8 mov QWORD PTR[((32+56))+rsp],r9 mov QWORD PTR[((32+64))+rsp],r10 mov QWORD PTR[((32+72))+rsp],r11 mov QWORD PTR[((32+80))+rsp],r12 mov QWORD PTR[((32+88))+rsp],r13 lea rsi,QWORD PTR[((32+0))+rsp] lea rbx,QWORD PTR[((32+48))+rsp] call __mulq_384 mov rsi,QWORD PTR[rsp] mov rbx,QWORD PTR[8+rsp] lea rdi,QWORD PTR[((-96))+rdi] call __mulq_384 lea rsi,QWORD PTR[48+rsi] lea rbx,QWORD PTR[48+rbx] lea rdi,QWORD PTR[32+rsp] call __mulq_384 mov rsi,QWORD PTR[16+rsp] lea rdx,QWORD PTR[32+rsp] mov rcx,QWORD PTR[24+rsp] mov rdi,rsi call __subq_mod_384x384 lea rsi,QWORD PTR[rdi] lea rdx,QWORD PTR[((-96))+rdi] call __subq_mod_384x384 lea rsi,QWORD PTR[((-96))+rdi] lea rdx,QWORD PTR[32+rsp] lea rdi,QWORD PTR[((-96))+rdi] call __subq_mod_384x384 lea r8,QWORD PTR[136+rsp] mov r15,QWORD PTR[r8] mov r14,QWORD PTR[8+r8] mov r13,QWORD PTR[16+r8] mov r12,QWORD PTR[24+r8] mov rbx,QWORD PTR[32+r8] mov rbp,QWORD PTR[40+r8] lea rsp,QWORD PTR[48+r8] $L$SEH_epilogue_mul_382x:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_mul_382x:: mul_382x ENDP PUBLIC sqr_382x ALIGN 32 sqr_382x PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_sqr_382x:: mov rdi,rcx mov rsi,rdx mov rdx,r8 ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz sqr_382x$1 endif push rbp push rbx push r12 push r13 push r14 push r15 push rsi $L$SEH_body_sqr_382x:: mov rcx,rdx mov r14,QWORD PTR[rsi] mov r15,QWORD PTR[8+rsi] mov rax,QWORD PTR[16+rsi] mov rbx,QWORD PTR[24+rsi] mov rbp,QWORD PTR[32+rsi] mov rdx,QWORD PTR[40+rsi] mov r8,r14 add r14,QWORD PTR[48+rsi] mov r9,r15 adc r15,QWORD PTR[56+rsi] mov r10,rax adc rax,QWORD PTR[64+rsi] mov r11,rbx adc rbx,QWORD PTR[72+rsi] mov r12,rbp adc rbp,QWORD PTR[80+rsi] mov r13,rdx adc rdx,QWORD PTR[88+rsi] mov QWORD PTR[rdi],r14 mov QWORD PTR[8+rdi],r15 mov QWORD PTR[16+rdi],rax mov QWORD PTR[24+rdi],rbx mov QWORD PTR[32+rdi],rbp mov QWORD PTR[40+rdi],rdx lea rdx,QWORD PTR[48+rsi] lea rdi,QWORD PTR[48+rdi] call __subq_mod_384_a_is_loaded lea rsi,QWORD PTR[rdi] lea rbx,QWORD PTR[((-48))+rdi] lea rdi,QWORD PTR[((-48))+rdi] call __mulq_384 mov rsi,QWORD PTR[rsp] lea rbx,QWORD PTR[48+rsi] lea rdi,QWORD PTR[96+rdi] call __mulq_384 mov r8,QWORD PTR[rdi] mov r9,QWORD PTR[8+rdi] mov r10,QWORD PTR[16+rdi] mov r11,QWORD PTR[24+rdi] mov r12,QWORD PTR[32+rdi] mov r13,QWORD PTR[40+rdi] mov r14,QWORD PTR[48+rdi] mov r15,QWORD PTR[56+rdi] mov rax,QWORD PTR[64+rdi] mov rbx,QWORD PTR[72+rdi] mov rbp,QWORD PTR[80+rdi] add r8,r8 mov rdx,QWORD PTR[88+rdi] adc r9,r9 mov QWORD PTR[rdi],r8 adc r10,r10 mov QWORD PTR[8+rdi],r9 adc r11,r11 mov QWORD PTR[16+rdi],r10 adc r12,r12 mov QWORD PTR[24+rdi],r11 adc r13,r13 mov QWORD PTR[32+rdi],r12 adc r14,r14 mov QWORD PTR[40+rdi],r13 adc r15,r15 mov QWORD PTR[48+rdi],r14 adc rax,rax mov QWORD PTR[56+rdi],r15 adc rbx,rbx mov QWORD PTR[64+rdi],rax adc rbp,rbp mov QWORD PTR[72+rdi],rbx adc rdx,rdx mov QWORD PTR[80+rdi],rbp mov QWORD PTR[88+rdi],rdx mov r15,QWORD PTR[8+rsp] mov r14,QWORD PTR[16+rsp] mov r13,QWORD PTR[24+rsp] mov r12,QWORD PTR[32+rsp] mov rbx,QWORD PTR[40+rsp] mov rbp,QWORD PTR[48+rsp] lea rsp,QWORD PTR[56+rsp] $L$SEH_epilogue_sqr_382x:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_sqr_382x:: sqr_382x ENDP PUBLIC mul_384 ALIGN 32 mul_384 PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_mul_384:: mov rdi,rcx mov rsi,rdx mov rdx,r8 ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz mul_384$1 endif push rbp push rbx push r12 $L$SEH_body_mul_384:: mov rbx,rdx call __mulq_384 mov r12,QWORD PTR[rsp] mov rbx,QWORD PTR[8+rsp] mov rbp,QWORD PTR[16+rsp] lea rsp,QWORD PTR[24+rsp] $L$SEH_epilogue_mul_384:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_mul_384:: mul_384 ENDP ALIGN 32 __mulq_384 PROC PRIVATE DB 243,15,30,250 mov rax,QWORD PTR[rbx] mov rbp,rax mul QWORD PTR[rsi] mov QWORD PTR[rdi],rax mov rax,rbp mov rcx,rdx mul QWORD PTR[8+rsi] add rcx,rax mov rax,rbp adc rdx,0 mov r8,rdx mul QWORD PTR[16+rsi] add r8,rax mov rax,rbp adc rdx,0 mov r9,rdx mul QWORD PTR[24+rsi] add r9,rax mov rax,rbp adc rdx,0 mov r10,rdx mul QWORD PTR[32+rsi] add r10,rax mov rax,rbp adc rdx,0 mov r11,rdx mul QWORD PTR[40+rsi] add r11,rax mov rax,QWORD PTR[8+rbx] adc rdx,0 mov r12,rdx mov rbp,rax mul QWORD PTR[rsi] add rcx,rax mov rax,rbp adc rdx,0 mov QWORD PTR[8+rdi],rcx mov rcx,rdx mul QWORD PTR[8+rsi] add r8,rax mov rax,rbp adc rdx,0 add rcx,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[16+rsi] add r9,rax mov rax,rbp adc rdx,0 add r8,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[24+rsi] add r10,rax mov rax,rbp adc rdx,0 add r9,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[32+rsi] add r11,rax mov rax,rbp adc rdx,0 add r10,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[40+rsi] add r12,rax mov rax,QWORD PTR[16+rbx] adc rdx,0 add r11,r12 adc rdx,0 mov r12,rdx mov rbp,rax mul QWORD PTR[rsi] add rcx,rax mov rax,rbp adc rdx,0 mov QWORD PTR[16+rdi],rcx mov rcx,rdx mul QWORD PTR[8+rsi] add r8,rax mov rax,rbp adc rdx,0 add rcx,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[16+rsi] add r9,rax mov rax,rbp adc rdx,0 add r8,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[24+rsi] add r10,rax mov rax,rbp adc rdx,0 add r9,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[32+rsi] add r11,rax mov rax,rbp adc rdx,0 add r10,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[40+rsi] add r12,rax mov rax,QWORD PTR[24+rbx] adc rdx,0 add r11,r12 adc rdx,0 mov r12,rdx mov rbp,rax mul QWORD PTR[rsi] add rcx,rax mov rax,rbp adc rdx,0 mov QWORD PTR[24+rdi],rcx mov rcx,rdx mul QWORD PTR[8+rsi] add r8,rax mov rax,rbp adc rdx,0 add rcx,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[16+rsi] add r9,rax mov rax,rbp adc rdx,0 add r8,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[24+rsi] add r10,rax mov rax,rbp adc rdx,0 add r9,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[32+rsi] add r11,rax mov rax,rbp adc rdx,0 add r10,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[40+rsi] add r12,rax mov rax,QWORD PTR[32+rbx] adc rdx,0 add r11,r12 adc rdx,0 mov r12,rdx mov rbp,rax mul QWORD PTR[rsi] add rcx,rax mov rax,rbp adc rdx,0 mov QWORD PTR[32+rdi],rcx mov rcx,rdx mul QWORD PTR[8+rsi] add r8,rax mov rax,rbp adc rdx,0 add rcx,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[16+rsi] add r9,rax mov rax,rbp adc rdx,0 add r8,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[24+rsi] add r10,rax mov rax,rbp adc rdx,0 add r9,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[32+rsi] add r11,rax mov rax,rbp adc rdx,0 add r10,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[40+rsi] add r12,rax mov rax,QWORD PTR[40+rbx] adc rdx,0 add r11,r12 adc rdx,0 mov r12,rdx mov rbp,rax mul QWORD PTR[rsi] add rcx,rax mov rax,rbp adc rdx,0 mov QWORD PTR[40+rdi],rcx mov rcx,rdx mul QWORD PTR[8+rsi] add r8,rax mov rax,rbp adc rdx,0 add rcx,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[16+rsi] add r9,rax mov rax,rbp adc rdx,0 add r8,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[24+rsi] add r10,rax mov rax,rbp adc rdx,0 add r9,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[32+rsi] add r11,rax mov rax,rbp adc rdx,0 add r10,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[40+rsi] add r12,rax mov rax,rax adc rdx,0 add r11,r12 adc rdx,0 mov r12,rdx mov QWORD PTR[48+rdi],rcx mov QWORD PTR[56+rdi],r8 mov QWORD PTR[64+rdi],r9 mov QWORD PTR[72+rdi],r10 mov QWORD PTR[80+rdi],r11 mov QWORD PTR[88+rdi],r12 ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif __mulq_384 ENDP PUBLIC sqr_384 ALIGN 32 sqr_384 PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_sqr_384:: mov rdi,rcx mov rsi,rdx ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz sqr_384$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,8 $L$SEH_body_sqr_384:: call __sqrq_384 mov r15,QWORD PTR[8+rsp] mov r14,QWORD PTR[16+rsp] mov r13,QWORD PTR[24+rsp] mov r12,QWORD PTR[32+rsp] mov rbx,QWORD PTR[40+rsp] mov rbp,QWORD PTR[48+rsp] lea rsp,QWORD PTR[56+rsp] $L$SEH_epilogue_sqr_384:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_sqr_384:: sqr_384 ENDP ALIGN 32 __sqrq_384 PROC PRIVATE DB 243,15,30,250 mov rax,QWORD PTR[rsi] mov r15,QWORD PTR[8+rsi] mov rcx,QWORD PTR[16+rsi] mov rbx,QWORD PTR[24+rsi] mov r14,rax mul r15 mov r9,rax mov rax,r14 mov rbp,QWORD PTR[32+rsi] mov r10,rdx mul rcx add r10,rax mov rax,r14 adc rdx,0 mov rsi,QWORD PTR[40+rsi] mov r11,rdx mul rbx add r11,rax mov rax,r14 adc rdx,0 mov r12,rdx mul rbp add r12,rax mov rax,r14 adc rdx,0 mov r13,rdx mul rsi add r13,rax mov rax,r14 adc rdx,0 mov r14,rdx mul rax xor r8,r8 mov QWORD PTR[rdi],rax mov rax,r15 add r9,r9 adc r8,0 add r9,rdx adc r8,0 mov QWORD PTR[8+rdi],r9 mul rcx add r11,rax mov rax,r15 adc rdx,0 mov r9,rdx mul rbx add r12,rax mov rax,r15 adc rdx,0 add r12,r9 adc rdx,0 mov r9,rdx mul rbp add r13,rax mov rax,r15 adc rdx,0 add r13,r9 adc rdx,0 mov r9,rdx mul rsi add r14,rax mov rax,r15 adc rdx,0 add r14,r9 adc rdx,0 mov r15,rdx mul rax xor r9,r9 add r8,rax mov rax,rcx add r10,r10 adc r11,r11 adc r9,0 add r10,r8 adc r11,rdx adc r9,0 mov QWORD PTR[16+rdi],r10 mul rbx add r13,rax mov rax,rcx adc rdx,0 mov QWORD PTR[24+rdi],r11 mov r8,rdx mul rbp add r14,rax mov rax,rcx adc rdx,0 add r14,r8 adc rdx,0 mov r8,rdx mul rsi add r15,rax mov rax,rcx adc rdx,0 add r15,r8 adc rdx,0 mov rcx,rdx mul rax xor r11,r11 add r9,rax mov rax,rbx add r12,r12 adc r13,r13 adc r11,0 add r12,r9 adc r13,rdx adc r11,0 mov QWORD PTR[32+rdi],r12 mul rbp add r15,rax mov rax,rbx adc rdx,0 mov QWORD PTR[40+rdi],r13 mov r8,rdx mul rsi add rcx,rax mov rax,rbx adc rdx,0 add rcx,r8 adc rdx,0 mov rbx,rdx mul rax xor r12,r12 add r11,rax mov rax,rbp add r14,r14 adc r15,r15 adc r12,0 add r14,r11 adc r15,rdx mov QWORD PTR[48+rdi],r14 adc r12,0 mov QWORD PTR[56+rdi],r15 mul rsi add rbx,rax mov rax,rbp adc rdx,0 mov rbp,rdx mul rax xor r13,r13 add r12,rax mov rax,rsi add rcx,rcx adc rbx,rbx adc r13,0 add rcx,r12 adc rbx,rdx mov QWORD PTR[64+rdi],rcx adc r13,0 mov QWORD PTR[72+rdi],rbx mul rax add rax,r13 add rbp,rbp adc rdx,0 add rax,rbp adc rdx,0 mov QWORD PTR[80+rdi],rax mov QWORD PTR[88+rdi],rdx ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif __sqrq_384 ENDP PUBLIC sqr_mont_384 ALIGN 32 sqr_mont_384 PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_sqr_mont_384:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz sqr_mont_384$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,8*15 $L$SEH_body_sqr_mont_384:: mov QWORD PTR[96+rsp],rcx mov QWORD PTR[104+rsp],rdx mov QWORD PTR[112+rsp],rdi mov rdi,rsp call __sqrq_384 lea rsi,QWORD PTR[rsp] mov rcx,QWORD PTR[96+rsp] mov rbx,QWORD PTR[104+rsp] mov rdi,QWORD PTR[112+rsp] call __mulq_by_1_mont_384 call __redq_tail_mont_384 lea r8,QWORD PTR[120+rsp] mov r15,QWORD PTR[120+rsp] mov r14,QWORD PTR[8+r8] mov r13,QWORD PTR[16+r8] mov r12,QWORD PTR[24+r8] mov rbx,QWORD PTR[32+r8] mov rbp,QWORD PTR[40+r8] lea rsp,QWORD PTR[48+r8] $L$SEH_epilogue_sqr_mont_384:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_sqr_mont_384:: sqr_mont_384 ENDP PUBLIC redc_mont_384 ALIGN 32 redc_mont_384 PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_redc_mont_384:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz redc_mont_384$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,8 $L$SEH_body_redc_mont_384:: mov rbx,rdx call __mulq_by_1_mont_384 call __redq_tail_mont_384 mov r15,QWORD PTR[8+rsp] mov r14,QWORD PTR[16+rsp] mov r13,QWORD PTR[24+rsp] mov r12,QWORD PTR[32+rsp] mov rbx,QWORD PTR[40+rsp] mov rbp,QWORD PTR[48+rsp] lea rsp,QWORD PTR[56+rsp] $L$SEH_epilogue_redc_mont_384:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_redc_mont_384:: redc_mont_384 ENDP PUBLIC from_mont_384 ALIGN 32 from_mont_384 PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_from_mont_384:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz from_mont_384$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,8 $L$SEH_body_from_mont_384:: mov rbx,rdx call __mulq_by_1_mont_384 mov rcx,r15 mov rdx,r8 mov rbp,r9 sub r14,QWORD PTR[rbx] sbb r15,QWORD PTR[8+rbx] mov r13,r10 sbb r8,QWORD PTR[16+rbx] sbb r9,QWORD PTR[24+rbx] sbb r10,QWORD PTR[32+rbx] mov rsi,r11 sbb r11,QWORD PTR[40+rbx] cmovc r14,rax cmovc r15,rcx cmovc r8,rdx mov QWORD PTR[rdi],r14 cmovc r9,rbp mov QWORD PTR[8+rdi],r15 cmovc r10,r13 mov QWORD PTR[16+rdi],r8 cmovc r11,rsi mov QWORD PTR[24+rdi],r9 mov QWORD PTR[32+rdi],r10 mov QWORD PTR[40+rdi],r11 mov r15,QWORD PTR[8+rsp] mov r14,QWORD PTR[16+rsp] mov r13,QWORD PTR[24+rsp] mov r12,QWORD PTR[32+rsp] mov rbx,QWORD PTR[40+rsp] mov rbp,QWORD PTR[48+rsp] lea rsp,QWORD PTR[56+rsp] $L$SEH_epilogue_from_mont_384:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_from_mont_384:: from_mont_384 ENDP ALIGN 32 __mulq_by_1_mont_384 PROC PRIVATE DB 243,15,30,250 mov rax,QWORD PTR[rsi] mov r9,QWORD PTR[8+rsi] mov r10,QWORD PTR[16+rsi] mov r11,QWORD PTR[24+rsi] mov r12,QWORD PTR[32+rsi] mov r13,QWORD PTR[40+rsi] mov r14,rax imul rax,rcx mov r8,rax mul QWORD PTR[rbx] add r14,rax mov rax,r8 adc r14,rdx mul QWORD PTR[8+rbx] add r9,rax mov rax,r8 adc rdx,0 add r9,r14 adc rdx,0 mov r14,rdx mul QWORD PTR[16+rbx] add r10,rax mov rax,r8 adc rdx,0 add r10,r14 adc rdx,0 mov r14,rdx mul QWORD PTR[24+rbx] add r11,rax mov rax,r8 adc rdx,0 mov r15,r9 imul r9,rcx add r11,r14 adc rdx,0 mov r14,rdx mul QWORD PTR[32+rbx] add r12,rax mov rax,r8 adc rdx,0 add r12,r14 adc rdx,0 mov r14,rdx mul QWORD PTR[40+rbx] add r13,rax mov rax,r9 adc rdx,0 add r13,r14 adc rdx,0 mov r14,rdx mul QWORD PTR[rbx] add r15,rax mov rax,r9 adc r15,rdx mul QWORD PTR[8+rbx] add r10,rax mov rax,r9 adc rdx,0 add r10,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[16+rbx] add r11,rax mov rax,r9 adc rdx,0 add r11,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[24+rbx] add r12,rax mov rax,r9 adc rdx,0 mov r8,r10 imul r10,rcx add r12,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[32+rbx] add r13,rax mov rax,r9 adc rdx,0 add r13,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[40+rbx] add r14,rax mov rax,r10 adc rdx,0 add r14,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[rbx] add r8,rax mov rax,r10 adc r8,rdx mul QWORD PTR[8+rbx] add r11,rax mov rax,r10 adc rdx,0 add r11,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[16+rbx] add r12,rax mov rax,r10 adc rdx,0 add r12,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[24+rbx] add r13,rax mov rax,r10 adc rdx,0 mov r9,r11 imul r11,rcx add r13,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[32+rbx] add r14,rax mov rax,r10 adc rdx,0 add r14,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[40+rbx] add r15,rax mov rax,r11 adc rdx,0 add r15,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[rbx] add r9,rax mov rax,r11 adc r9,rdx mul QWORD PTR[8+rbx] add r12,rax mov rax,r11 adc rdx,0 add r12,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[16+rbx] add r13,rax mov rax,r11 adc rdx,0 add r13,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[24+rbx] add r14,rax mov rax,r11 adc rdx,0 mov r10,r12 imul r12,rcx add r14,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[32+rbx] add r15,rax mov rax,r11 adc rdx,0 add r15,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[40+rbx] add r8,rax mov rax,r12 adc rdx,0 add r8,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[rbx] add r10,rax mov rax,r12 adc r10,rdx mul QWORD PTR[8+rbx] add r13,rax mov rax,r12 adc rdx,0 add r13,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[16+rbx] add r14,rax mov rax,r12 adc rdx,0 add r14,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[24+rbx] add r15,rax mov rax,r12 adc rdx,0 mov r11,r13 imul r13,rcx add r15,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[32+rbx] add r8,rax mov rax,r12 adc rdx,0 add r8,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[40+rbx] add r9,rax mov rax,r13 adc rdx,0 add r9,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[rbx] add r11,rax mov rax,r13 adc r11,rdx mul QWORD PTR[8+rbx] add r14,rax mov rax,r13 adc rdx,0 add r14,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[16+rbx] add r15,rax mov rax,r13 adc rdx,0 add r15,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[24+rbx] add r8,rax mov rax,r13 adc rdx,0 add r8,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[32+rbx] add r9,rax mov rax,r13 adc rdx,0 add r9,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[40+rbx] add r10,rax mov rax,r14 adc rdx,0 add r10,r11 adc rdx,0 mov r11,rdx ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif __mulq_by_1_mont_384 ENDP ALIGN 32 __redq_tail_mont_384 PROC PRIVATE DB 243,15,30,250 add r14,QWORD PTR[48+rsi] mov rax,r14 adc r15,QWORD PTR[56+rsi] adc r8,QWORD PTR[64+rsi] adc r9,QWORD PTR[72+rsi] mov rcx,r15 adc r10,QWORD PTR[80+rsi] adc r11,QWORD PTR[88+rsi] sbb r12,r12 mov rdx,r8 mov rbp,r9 sub r14,QWORD PTR[rbx] sbb r15,QWORD PTR[8+rbx] mov r13,r10 sbb r8,QWORD PTR[16+rbx] sbb r9,QWORD PTR[24+rbx] sbb r10,QWORD PTR[32+rbx] mov rsi,r11 sbb r11,QWORD PTR[40+rbx] sbb r12,0 cmovc r14,rax cmovc r15,rcx cmovc r8,rdx mov QWORD PTR[rdi],r14 cmovc r9,rbp mov QWORD PTR[8+rdi],r15 cmovc r10,r13 mov QWORD PTR[16+rdi],r8 cmovc r11,rsi mov QWORD PTR[24+rdi],r9 mov QWORD PTR[32+rdi],r10 mov QWORD PTR[40+rdi],r11 ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif __redq_tail_mont_384 ENDP PUBLIC sgn0_pty_mont_384 ALIGN 32 sgn0_pty_mont_384 PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_sgn0_pty_mont_384:: mov rdi,rcx mov rsi,rdx mov rdx,r8 ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz sgn0_pty_mont_384$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,8 $L$SEH_body_sgn0_pty_mont_384:: mov rbx,rsi lea rsi,QWORD PTR[rdi] mov rcx,rdx call __mulq_by_1_mont_384 xor rax,rax mov r13,r14 add r14,r14 adc r15,r15 adc r8,r8 adc r9,r9 adc r10,r10 adc r11,r11 adc rax,0 sub r14,QWORD PTR[rbx] sbb r15,QWORD PTR[8+rbx] sbb r8,QWORD PTR[16+rbx] sbb r9,QWORD PTR[24+rbx] sbb r10,QWORD PTR[32+rbx] sbb r11,QWORD PTR[40+rbx] sbb rax,0 not rax and r13,1 and rax,2 or rax,r13 mov r15,QWORD PTR[8+rsp] mov r14,QWORD PTR[16+rsp] mov r13,QWORD PTR[24+rsp] mov r12,QWORD PTR[32+rsp] mov rbx,QWORD PTR[40+rsp] mov rbp,QWORD PTR[48+rsp] lea rsp,QWORD PTR[56+rsp] $L$SEH_epilogue_sgn0_pty_mont_384:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_sgn0_pty_mont_384:: sgn0_pty_mont_384 ENDP PUBLIC sgn0_pty_mont_384x ALIGN 32 sgn0_pty_mont_384x PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_sgn0_pty_mont_384x:: mov rdi,rcx mov rsi,rdx mov rdx,r8 ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz sgn0_pty_mont_384x$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,8 $L$SEH_body_sgn0_pty_mont_384x:: mov rbx,rsi lea rsi,QWORD PTR[48+rdi] mov rcx,rdx call __mulq_by_1_mont_384 mov r12,r14 or r14,r15 or r14,r8 or r14,r9 or r14,r10 or r14,r11 lea rsi,QWORD PTR[rdi] xor rdi,rdi mov r13,r12 add r12,r12 adc r15,r15 adc r8,r8 adc r9,r9 adc r10,r10 adc r11,r11 adc rdi,0 sub r12,QWORD PTR[rbx] sbb r15,QWORD PTR[8+rbx] sbb r8,QWORD PTR[16+rbx] sbb r9,QWORD PTR[24+rbx] sbb r10,QWORD PTR[32+rbx] sbb r11,QWORD PTR[40+rbx] sbb rdi,0 mov QWORD PTR[rsp],r14 not rdi and r13,1 and rdi,2 or rdi,r13 call __mulq_by_1_mont_384 mov r12,r14 or r14,r15 or r14,r8 or r14,r9 or r14,r10 or r14,r11 xor rax,rax mov r13,r12 add r12,r12 adc r15,r15 adc r8,r8 adc r9,r9 adc r10,r10 adc r11,r11 adc rax,0 sub r12,QWORD PTR[rbx] sbb r15,QWORD PTR[8+rbx] sbb r8,QWORD PTR[16+rbx] sbb r9,QWORD PTR[24+rbx] sbb r10,QWORD PTR[32+rbx] sbb r11,QWORD PTR[40+rbx] sbb rax,0 mov r12,QWORD PTR[rsp] not rax test r14,r14 cmovz r13,rdi test r12,r12 cmovnz rax,rdi and r13,1 and rax,2 or rax,r13 mov r15,QWORD PTR[8+rsp] mov r14,QWORD PTR[16+rsp] mov r13,QWORD PTR[24+rsp] mov r12,QWORD PTR[32+rsp] mov rbx,QWORD PTR[40+rsp] mov rbp,QWORD PTR[48+rsp] lea rsp,QWORD PTR[56+rsp] $L$SEH_epilogue_sgn0_pty_mont_384x:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_sgn0_pty_mont_384x:: sgn0_pty_mont_384x ENDP PUBLIC mul_mont_384 ALIGN 32 mul_mont_384 PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_mul_mont_384:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 mov r8,QWORD PTR[40+rsp] ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz mul_mont_384$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,8*3 $L$SEH_body_mul_mont_384:: mov rax,QWORD PTR[rdx] mov r14,QWORD PTR[rsi] mov r15,QWORD PTR[8+rsi] mov r12,QWORD PTR[16+rsi] mov r13,QWORD PTR[24+rsi] mov rbx,rdx mov QWORD PTR[rsp],r8 mov QWORD PTR[8+rsp],rdi call __mulq_mont_384 mov r15,QWORD PTR[24+rsp] mov r14,QWORD PTR[32+rsp] mov r13,QWORD PTR[40+rsp] mov r12,QWORD PTR[48+rsp] mov rbx,QWORD PTR[56+rsp] mov rbp,QWORD PTR[64+rsp] lea rsp,QWORD PTR[72+rsp] $L$SEH_epilogue_mul_mont_384:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_mul_mont_384:: mul_mont_384 ENDP ALIGN 32 __mulq_mont_384 PROC PRIVATE DB 243,15,30,250 mov rdi,rax mul r14 mov r8,rax mov rax,rdi mov r9,rdx mul r15 add r9,rax mov rax,rdi adc rdx,0 mov r10,rdx mul r12 add r10,rax mov rax,rdi adc rdx,0 mov r11,rdx mov rbp,r8 imul r8,QWORD PTR[8+rsp] mul r13 add r11,rax mov rax,rdi adc rdx,0 mov r12,rdx mul QWORD PTR[32+rsi] add r12,rax mov rax,rdi adc rdx,0 mov r13,rdx mul QWORD PTR[40+rsi] add r13,rax mov rax,r8 adc rdx,0 xor r15,r15 mov r14,rdx mul QWORD PTR[rcx] add rbp,rax mov rax,r8 adc rbp,rdx mul QWORD PTR[8+rcx] add r9,rax mov rax,r8 adc rdx,0 add r9,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[16+rcx] add r10,rax mov rax,r8 adc rdx,0 add r10,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[24+rcx] add r11,rbp adc rdx,0 add r11,rax mov rax,r8 adc rdx,0 mov rbp,rdx mul QWORD PTR[32+rcx] add r12,rax mov rax,r8 adc rdx,0 add r12,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[40+rcx] add r13,rax mov rax,QWORD PTR[8+rbx] adc rdx,0 add r13,rbp adc r14,rdx adc r15,0 mov rdi,rax mul QWORD PTR[rsi] add r9,rax mov rax,rdi adc rdx,0 mov r8,rdx mul QWORD PTR[8+rsi] add r10,rax mov rax,rdi adc rdx,0 add r10,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[16+rsi] add r11,rax mov rax,rdi adc rdx,0 add r11,r8 adc rdx,0 mov r8,rdx mov rbp,r9 imul r9,QWORD PTR[8+rsp] mul QWORD PTR[24+rsi] add r12,rax mov rax,rdi adc rdx,0 add r12,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[32+rsi] add r13,rax mov rax,rdi adc rdx,0 add r13,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[40+rsi] add r14,r8 adc rdx,0 xor r8,r8 add r14,rax mov rax,r9 adc r15,rdx adc r8,0 mul QWORD PTR[rcx] add rbp,rax mov rax,r9 adc rbp,rdx mul QWORD PTR[8+rcx] add r10,rax mov rax,r9 adc rdx,0 add r10,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[16+rcx] add r11,rax mov rax,r9 adc rdx,0 add r11,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[24+rcx] add r12,rbp adc rdx,0 add r12,rax mov rax,r9 adc rdx,0 mov rbp,rdx mul QWORD PTR[32+rcx] add r13,rax mov rax,r9 adc rdx,0 add r13,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[40+rcx] add r14,rax mov rax,QWORD PTR[16+rbx] adc rdx,0 add r14,rbp adc r15,rdx adc r8,0 mov rdi,rax mul QWORD PTR[rsi] add r10,rax mov rax,rdi adc rdx,0 mov r9,rdx mul QWORD PTR[8+rsi] add r11,rax mov rax,rdi adc rdx,0 add r11,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[16+rsi] add r12,rax mov rax,rdi adc rdx,0 add r12,r9 adc rdx,0 mov r9,rdx mov rbp,r10 imul r10,QWORD PTR[8+rsp] mul QWORD PTR[24+rsi] add r13,rax mov rax,rdi adc rdx,0 add r13,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[32+rsi] add r14,rax mov rax,rdi adc rdx,0 add r14,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[40+rsi] add r15,r9 adc rdx,0 xor r9,r9 add r15,rax mov rax,r10 adc r8,rdx adc r9,0 mul QWORD PTR[rcx] add rbp,rax mov rax,r10 adc rbp,rdx mul QWORD PTR[8+rcx] add r11,rax mov rax,r10 adc rdx,0 add r11,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[16+rcx] add r12,rax mov rax,r10 adc rdx,0 add r12,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[24+rcx] add r13,rbp adc rdx,0 add r13,rax mov rax,r10 adc rdx,0 mov rbp,rdx mul QWORD PTR[32+rcx] add r14,rax mov rax,r10 adc rdx,0 add r14,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[40+rcx] add r15,rax mov rax,QWORD PTR[24+rbx] adc rdx,0 add r15,rbp adc r8,rdx adc r9,0 mov rdi,rax mul QWORD PTR[rsi] add r11,rax mov rax,rdi adc rdx,0 mov r10,rdx mul QWORD PTR[8+rsi] add r12,rax mov rax,rdi adc rdx,0 add r12,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[16+rsi] add r13,rax mov rax,rdi adc rdx,0 add r13,r10 adc rdx,0 mov r10,rdx mov rbp,r11 imul r11,QWORD PTR[8+rsp] mul QWORD PTR[24+rsi] add r14,rax mov rax,rdi adc rdx,0 add r14,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[32+rsi] add r15,rax mov rax,rdi adc rdx,0 add r15,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[40+rsi] add r8,r10 adc rdx,0 xor r10,r10 add r8,rax mov rax,r11 adc r9,rdx adc r10,0 mul QWORD PTR[rcx] add rbp,rax mov rax,r11 adc rbp,rdx mul QWORD PTR[8+rcx] add r12,rax mov rax,r11 adc rdx,0 add r12,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[16+rcx] add r13,rax mov rax,r11 adc rdx,0 add r13,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[24+rcx] add r14,rbp adc rdx,0 add r14,rax mov rax,r11 adc rdx,0 mov rbp,rdx mul QWORD PTR[32+rcx] add r15,rax mov rax,r11 adc rdx,0 add r15,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[40+rcx] add r8,rax mov rax,QWORD PTR[32+rbx] adc rdx,0 add r8,rbp adc r9,rdx adc r10,0 mov rdi,rax mul QWORD PTR[rsi] add r12,rax mov rax,rdi adc rdx,0 mov r11,rdx mul QWORD PTR[8+rsi] add r13,rax mov rax,rdi adc rdx,0 add r13,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[16+rsi] add r14,rax mov rax,rdi adc rdx,0 add r14,r11 adc rdx,0 mov r11,rdx mov rbp,r12 imul r12,QWORD PTR[8+rsp] mul QWORD PTR[24+rsi] add r15,rax mov rax,rdi adc rdx,0 add r15,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[32+rsi] add r8,rax mov rax,rdi adc rdx,0 add r8,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[40+rsi] add r9,r11 adc rdx,0 xor r11,r11 add r9,rax mov rax,r12 adc r10,rdx adc r11,0 mul QWORD PTR[rcx] add rbp,rax mov rax,r12 adc rbp,rdx mul QWORD PTR[8+rcx] add r13,rax mov rax,r12 adc rdx,0 add r13,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[16+rcx] add r14,rax mov rax,r12 adc rdx,0 add r14,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[24+rcx] add r15,rbp adc rdx,0 add r15,rax mov rax,r12 adc rdx,0 mov rbp,rdx mul QWORD PTR[32+rcx] add r8,rax mov rax,r12 adc rdx,0 add r8,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[40+rcx] add r9,rax mov rax,QWORD PTR[40+rbx] adc rdx,0 add r9,rbp adc r10,rdx adc r11,0 mov rdi,rax mul QWORD PTR[rsi] add r13,rax mov rax,rdi adc rdx,0 mov r12,rdx mul QWORD PTR[8+rsi] add r14,rax mov rax,rdi adc rdx,0 add r14,r12 adc rdx,0 mov r12,rdx mul QWORD PTR[16+rsi] add r15,rax mov rax,rdi adc rdx,0 add r15,r12 adc rdx,0 mov r12,rdx mov rbp,r13 imul r13,QWORD PTR[8+rsp] mul QWORD PTR[24+rsi] add r8,rax mov rax,rdi adc rdx,0 add r8,r12 adc rdx,0 mov r12,rdx mul QWORD PTR[32+rsi] add r9,rax mov rax,rdi adc rdx,0 add r9,r12 adc rdx,0 mov r12,rdx mul QWORD PTR[40+rsi] add r10,r12 adc rdx,0 xor r12,r12 add r10,rax mov rax,r13 adc r11,rdx adc r12,0 mul QWORD PTR[rcx] add rbp,rax mov rax,r13 adc rbp,rdx mul QWORD PTR[8+rcx] add r14,rax mov rax,r13 adc rdx,0 add r14,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[16+rcx] add r15,rax mov rax,r13 adc rdx,0 add r15,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[24+rcx] add r8,rbp adc rdx,0 add r8,rax mov rax,r13 adc rdx,0 mov rbp,rdx mul QWORD PTR[32+rcx] add r9,rax mov rax,r13 adc rdx,0 add r9,rbp adc rdx,0 mov rbp,rdx mul QWORD PTR[40+rcx] add r10,rax mov rax,r14 adc rdx,0 add r10,rbp adc r11,rdx adc r12,0 mov rdi,QWORD PTR[16+rsp] sub r14,QWORD PTR[rcx] mov rdx,r15 sbb r15,QWORD PTR[8+rcx] mov rbx,r8 sbb r8,QWORD PTR[16+rcx] mov rsi,r9 sbb r9,QWORD PTR[24+rcx] mov rbp,r10 sbb r10,QWORD PTR[32+rcx] mov r13,r11 sbb r11,QWORD PTR[40+rcx] sbb r12,0 cmovc r14,rax cmovc r15,rdx cmovc r8,rbx mov QWORD PTR[rdi],r14 cmovc r9,rsi mov QWORD PTR[8+rdi],r15 cmovc r10,rbp mov QWORD PTR[16+rdi],r8 cmovc r11,r13 mov QWORD PTR[24+rdi],r9 mov QWORD PTR[32+rdi],r10 mov QWORD PTR[40+rdi],r11 ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif __mulq_mont_384 ENDP PUBLIC sqr_n_mul_mont_384 ALIGN 32 sqr_n_mul_mont_384 PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_sqr_n_mul_mont_384:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 mov r8,QWORD PTR[40+rsp] mov r9,QWORD PTR[48+rsp] ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz sqr_n_mul_mont_384$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,8*17 $L$SEH_body_sqr_n_mul_mont_384:: mov QWORD PTR[rsp],r8 mov QWORD PTR[8+rsp],rdi mov QWORD PTR[16+rsp],rcx lea rdi,QWORD PTR[32+rsp] mov QWORD PTR[24+rsp],r9 movq xmm2,QWORD PTR[r9] $L$oop_sqr_384:: movd xmm1,edx call __sqrq_384 lea rsi,QWORD PTR[rdi] mov rcx,QWORD PTR[rsp] mov rbx,QWORD PTR[16+rsp] call __mulq_by_1_mont_384 call __redq_tail_mont_384 movd edx,xmm1 lea rsi,QWORD PTR[rdi] dec edx jnz $L$oop_sqr_384 DB 102,72,15,126,208 mov rcx,rbx mov rbx,QWORD PTR[24+rsp] mov r12,r8 mov r13,r9 call __mulq_mont_384 lea r8,QWORD PTR[136+rsp] mov r15,QWORD PTR[136+rsp] mov r14,QWORD PTR[8+r8] mov r13,QWORD PTR[16+r8] mov r12,QWORD PTR[24+r8] mov rbx,QWORD PTR[32+r8] mov rbp,QWORD PTR[40+r8] lea rsp,QWORD PTR[48+r8] $L$SEH_epilogue_sqr_n_mul_mont_384:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_sqr_n_mul_mont_384:: sqr_n_mul_mont_384 ENDP PUBLIC sqr_n_mul_mont_383 ALIGN 32 sqr_n_mul_mont_383 PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_sqr_n_mul_mont_383:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 mov r8,QWORD PTR[40+rsp] mov r9,QWORD PTR[48+rsp] ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz sqr_n_mul_mont_383$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,8*17 $L$SEH_body_sqr_n_mul_mont_383:: mov QWORD PTR[rsp],r8 mov QWORD PTR[8+rsp],rdi mov QWORD PTR[16+rsp],rcx lea rdi,QWORD PTR[32+rsp] mov QWORD PTR[24+rsp],r9 movq xmm2,QWORD PTR[r9] $L$oop_sqr_383:: movd xmm1,edx call __sqrq_384 lea rsi,QWORD PTR[rdi] mov rcx,QWORD PTR[rsp] mov rbx,QWORD PTR[16+rsp] call __mulq_by_1_mont_384 movd edx,xmm1 add r14,QWORD PTR[48+rsi] adc r15,QWORD PTR[56+rsi] adc r8,QWORD PTR[64+rsi] adc r9,QWORD PTR[72+rsi] adc r10,QWORD PTR[80+rsi] adc r11,QWORD PTR[88+rsi] lea rsi,QWORD PTR[rdi] mov QWORD PTR[rdi],r14 mov QWORD PTR[8+rdi],r15 mov QWORD PTR[16+rdi],r8 mov QWORD PTR[24+rdi],r9 mov QWORD PTR[32+rdi],r10 mov QWORD PTR[40+rdi],r11 dec edx jnz $L$oop_sqr_383 DB 102,72,15,126,208 mov rcx,rbx mov rbx,QWORD PTR[24+rsp] mov r12,r8 mov r13,r9 call __mulq_mont_384 lea r8,QWORD PTR[136+rsp] mov r15,QWORD PTR[136+rsp] mov r14,QWORD PTR[8+r8] mov r13,QWORD PTR[16+r8] mov r12,QWORD PTR[24+r8] mov rbx,QWORD PTR[32+r8] mov rbp,QWORD PTR[40+r8] lea rsp,QWORD PTR[48+r8] $L$SEH_epilogue_sqr_n_mul_mont_383:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_sqr_n_mul_mont_383:: sqr_n_mul_mont_383 ENDP ALIGN 32 __mulq_mont_383_nonred PROC PRIVATE DB 243,15,30,250 mov rbp,rax mul r14 mov r8,rax mov rax,rbp mov r9,rdx mul r15 add r9,rax mov rax,rbp adc rdx,0 mov r10,rdx mul r12 add r10,rax mov rax,rbp adc rdx,0 mov r11,rdx mov r15,r8 imul r8,QWORD PTR[8+rsp] mul r13 add r11,rax mov rax,rbp adc rdx,0 mov r12,rdx mul QWORD PTR[32+rsi] add r12,rax mov rax,rbp adc rdx,0 mov r13,rdx mul QWORD PTR[40+rsi] add r13,rax mov rax,r8 adc rdx,0 mov r14,rdx mul QWORD PTR[rcx] add r15,rax mov rax,r8 adc r15,rdx mul QWORD PTR[8+rcx] add r9,rax mov rax,r8 adc rdx,0 add r9,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[16+rcx] add r10,rax mov rax,r8 adc rdx,0 add r10,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[24+rcx] add r11,r15 adc rdx,0 add r11,rax mov rax,r8 adc rdx,0 mov r15,rdx mul QWORD PTR[32+rcx] add r12,rax mov rax,r8 adc rdx,0 add r12,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[40+rcx] add r13,rax mov rax,QWORD PTR[8+rbx] adc rdx,0 add r13,r15 adc r14,rdx mov rbp,rax mul QWORD PTR[rsi] add r9,rax mov rax,rbp adc rdx,0 mov r15,rdx mul QWORD PTR[8+rsi] add r10,rax mov rax,rbp adc rdx,0 add r10,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[16+rsi] add r11,rax mov rax,rbp adc rdx,0 add r11,r15 adc rdx,0 mov r15,rdx mov r8,r9 imul r9,QWORD PTR[8+rsp] mul QWORD PTR[24+rsi] add r12,rax mov rax,rbp adc rdx,0 add r12,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[32+rsi] add r13,rax mov rax,rbp adc rdx,0 add r13,r15 adc rdx,0 mov r15,rdx mul QWORD PTR[40+rsi] add r14,r15 adc rdx,0 add r14,rax mov rax,r9 adc rdx,0 mov r15,rdx mul QWORD PTR[rcx] add r8,rax mov rax,r9 adc r8,rdx mul QWORD PTR[8+rcx] add r10,rax mov rax,r9 adc rdx,0 add r10,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[16+rcx] add r11,rax mov rax,r9 adc rdx,0 add r11,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[24+rcx] add r12,r8 adc rdx,0 add r12,rax mov rax,r9 adc rdx,0 mov r8,rdx mul QWORD PTR[32+rcx] add r13,rax mov rax,r9 adc rdx,0 add r13,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[40+rcx] add r14,rax mov rax,QWORD PTR[16+rbx] adc rdx,0 add r14,r8 adc r15,rdx mov rbp,rax mul QWORD PTR[rsi] add r10,rax mov rax,rbp adc rdx,0 mov r8,rdx mul QWORD PTR[8+rsi] add r11,rax mov rax,rbp adc rdx,0 add r11,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[16+rsi] add r12,rax mov rax,rbp adc rdx,0 add r12,r8 adc rdx,0 mov r8,rdx mov r9,r10 imul r10,QWORD PTR[8+rsp] mul QWORD PTR[24+rsi] add r13,rax mov rax,rbp adc rdx,0 add r13,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[32+rsi] add r14,rax mov rax,rbp adc rdx,0 add r14,r8 adc rdx,0 mov r8,rdx mul QWORD PTR[40+rsi] add r15,r8 adc rdx,0 add r15,rax mov rax,r10 adc rdx,0 mov r8,rdx mul QWORD PTR[rcx] add r9,rax mov rax,r10 adc r9,rdx mul QWORD PTR[8+rcx] add r11,rax mov rax,r10 adc rdx,0 add r11,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[16+rcx] add r12,rax mov rax,r10 adc rdx,0 add r12,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[24+rcx] add r13,r9 adc rdx,0 add r13,rax mov rax,r10 adc rdx,0 mov r9,rdx mul QWORD PTR[32+rcx] add r14,rax mov rax,r10 adc rdx,0 add r14,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[40+rcx] add r15,rax mov rax,QWORD PTR[24+rbx] adc rdx,0 add r15,r9 adc r8,rdx mov rbp,rax mul QWORD PTR[rsi] add r11,rax mov rax,rbp adc rdx,0 mov r9,rdx mul QWORD PTR[8+rsi] add r12,rax mov rax,rbp adc rdx,0 add r12,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[16+rsi] add r13,rax mov rax,rbp adc rdx,0 add r13,r9 adc rdx,0 mov r9,rdx mov r10,r11 imul r11,QWORD PTR[8+rsp] mul QWORD PTR[24+rsi] add r14,rax mov rax,rbp adc rdx,0 add r14,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[32+rsi] add r15,rax mov rax,rbp adc rdx,0 add r15,r9 adc rdx,0 mov r9,rdx mul QWORD PTR[40+rsi] add r8,r9 adc rdx,0 add r8,rax mov rax,r11 adc rdx,0 mov r9,rdx mul QWORD PTR[rcx] add r10,rax mov rax,r11 adc r10,rdx mul QWORD PTR[8+rcx] add r12,rax mov rax,r11 adc rdx,0 add r12,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[16+rcx] add r13,rax mov rax,r11 adc rdx,0 add r13,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[24+rcx] add r14,r10 adc rdx,0 add r14,rax mov rax,r11 adc rdx,0 mov r10,rdx mul QWORD PTR[32+rcx] add r15,rax mov rax,r11 adc rdx,0 add r15,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[40+rcx] add r8,rax mov rax,QWORD PTR[32+rbx] adc rdx,0 add r8,r10 adc r9,rdx mov rbp,rax mul QWORD PTR[rsi] add r12,rax mov rax,rbp adc rdx,0 mov r10,rdx mul QWORD PTR[8+rsi] add r13,rax mov rax,rbp adc rdx,0 add r13,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[16+rsi] add r14,rax mov rax,rbp adc rdx,0 add r14,r10 adc rdx,0 mov r10,rdx mov r11,r12 imul r12,QWORD PTR[8+rsp] mul QWORD PTR[24+rsi] add r15,rax mov rax,rbp adc rdx,0 add r15,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[32+rsi] add r8,rax mov rax,rbp adc rdx,0 add r8,r10 adc rdx,0 mov r10,rdx mul QWORD PTR[40+rsi] add r9,r10 adc rdx,0 add r9,rax mov rax,r12 adc rdx,0 mov r10,rdx mul QWORD PTR[rcx] add r11,rax mov rax,r12 adc r11,rdx mul QWORD PTR[8+rcx] add r13,rax mov rax,r12 adc rdx,0 add r13,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[16+rcx] add r14,rax mov rax,r12 adc rdx,0 add r14,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[24+rcx] add r15,r11 adc rdx,0 add r15,rax mov rax,r12 adc rdx,0 mov r11,rdx mul QWORD PTR[32+rcx] add r8,rax mov rax,r12 adc rdx,0 add r8,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[40+rcx] add r9,rax mov rax,QWORD PTR[40+rbx] adc rdx,0 add r9,r11 adc r10,rdx mov rbp,rax mul QWORD PTR[rsi] add r13,rax mov rax,rbp adc rdx,0 mov r11,rdx mul QWORD PTR[8+rsi] add r14,rax mov rax,rbp adc rdx,0 add r14,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[16+rsi] add r15,rax mov rax,rbp adc rdx,0 add r15,r11 adc rdx,0 mov r11,rdx mov r12,r13 imul r13,QWORD PTR[8+rsp] mul QWORD PTR[24+rsi] add r8,rax mov rax,rbp adc rdx,0 add r8,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[32+rsi] add r9,rax mov rax,rbp adc rdx,0 add r9,r11 adc rdx,0 mov r11,rdx mul QWORD PTR[40+rsi] add r10,r11 adc rdx,0 add r10,rax mov rax,r13 adc rdx,0 mov r11,rdx mul QWORD PTR[rcx] add r12,rax mov rax,r13 adc r12,rdx mul QWORD PTR[8+rcx] add r14,rax mov rax,r13 adc rdx,0 add r14,r12 adc rdx,0 mov r12,rdx mul QWORD PTR[16+rcx] add r15,rax mov rax,r13 adc rdx,0 add r15,r12 adc rdx,0 mov r12,rdx mul QWORD PTR[24+rcx] add r8,r12 adc rdx,0 add r8,rax mov rax,r13 adc rdx,0 mov r12,rdx mul QWORD PTR[32+rcx] add r9,rax mov rax,r13 adc rdx,0 add r9,r12 adc rdx,0 mov r12,rdx mul QWORD PTR[40+rcx] add r10,rax mov rax,r14 adc rdx,0 add r10,r12 adc r11,rdx ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif __mulq_mont_383_nonred ENDP PUBLIC sqr_mont_382x ALIGN 32 sqr_mont_382x PROC PUBLIC DB 243,15,30,250 mov QWORD PTR[8+rsp],rdi ;WIN64 prologue mov QWORD PTR[16+rsp],rsi mov r11,rsp $L$SEH_begin_sqr_mont_382x:: mov rdi,rcx mov rsi,rdx mov rdx,r8 mov rcx,r9 ifdef __BLST_PORTABLE__ test DWORD PTR[__blst_platform_cap],1 jnz sqr_mont_382x$1 endif push rbp push rbx push r12 push r13 push r14 push r15 sub rsp,136 $L$SEH_body_sqr_mont_382x:: mov QWORD PTR[rsp],rcx mov rcx,rdx mov QWORD PTR[16+rsp],rsi mov QWORD PTR[24+rsp],rdi mov r8,QWORD PTR[rsi] mov r9,QWORD PTR[8+rsi] mov r10,QWORD PTR[16+rsi] mov r11,QWORD PTR[24+rsi] mov r12,QWORD PTR[32+rsi] mov r13,QWORD PTR[40+rsi] mov r14,r8 add r8,QWORD PTR[48+rsi] mov r15,r9 adc r9,QWORD PTR[56+rsi] mov rax,r10 adc r10,QWORD PTR[64+rsi] mov rdx,r11 adc r11,QWORD PTR[72+rsi] mov rbx,r12 adc r12,QWORD PTR[80+rsi] mov rbp,r13 adc r13,QWORD PTR[88+rsi] sub r14,QWORD PTR[48+rsi] sbb r15,QWORD PTR[56+rsi] sbb rax,QWORD PTR[64+rsi] sbb rdx,QWORD PTR[72+rsi] sbb rbx,QWORD PTR[80+rsi] sbb rbp,QWORD PTR[88+rsi] sbb rdi,rdi mov QWORD PTR[((32+0))+rsp],r8 mov QWORD PTR[((32+8))+rsp],r9 mov QWORD PTR[((32+16))+rsp],r10 mov QWORD PTR[((32+24))+rsp],r11 mov QWORD PTR[((32+32))+rsp],r12 mov QWORD PTR[((32+40))+rsp],r13 mov QWORD PTR[((32+48))+rsp],r14 mov QWORD PTR[((32+56))+rsp],r15 mov QWORD PTR[((32+64))+rsp],rax mov QWORD PTR[((32+72))+rsp],rdx mov QWORD PTR[((32+80))+rsp],rbx mov QWORD PTR[((32+88))+rsp],rbp mov QWORD PTR[((32+96))+rsp],rdi lea rbx,QWORD PTR[48+rsi] mov rax,QWORD PTR[48+rsi] mov r14,QWORD PTR[rsi] mov r15,QWORD PTR[8+rsi] mov r12,QWORD PTR[16+rsi] mov r13,QWORD PTR[24+rsi] mov rdi,QWORD PTR[24+rsp] call __mulq_mont_383_nonred add r14,r14 adc r15,r15 adc r8,r8 adc r9,r9 adc r10,r10 adc r11,r11 mov QWORD PTR[48+rdi],r14 mov QWORD PTR[56+rdi],r15 mov QWORD PTR[64+rdi],r8 mov QWORD PTR[72+rdi],r9 mov QWORD PTR[80+rdi],r10 mov QWORD PTR[88+rdi],r11 lea rsi,QWORD PTR[32+rsp] lea rbx,QWORD PTR[((32+48))+rsp] mov rax,QWORD PTR[((32+48))+rsp] mov r14,QWORD PTR[((32+0))+rsp] mov r15,QWORD PTR[((32+8))+rsp] mov r12,QWORD PTR[((32+16))+rsp] mov r13,QWORD PTR[((32+24))+rsp] call __mulq_mont_383_nonred mov rsi,QWORD PTR[((32+96))+rsp] mov r12,QWORD PTR[((32+0))+rsp] mov r13,QWORD PTR[((32+8))+rsp] and r12,rsi mov rax,QWORD PTR[((32+16))+rsp] and r13,rsi mov rbx,QWORD PTR[((32+24))+rsp] and rax,rsi mov rbp,QWORD PTR[((32+32))+rsp] and rbx,rsi and rbp,rsi and rsi,QWORD PTR[((32+40))+rsp] sub r14,r12 mov r12,QWORD PTR[rcx] sbb r15,r13 mov r13,QWORD PTR[8+rcx] sbb r8,rax mov rax,QWORD PTR[16+rcx] sbb r9,rbx mov rbx,QWORD PTR[24+rcx] sbb r10,rbp mov rbp,QWORD PTR[32+rcx] sbb r11,rsi sbb rsi,rsi and r12,rsi and r13,rsi and rax,rsi and rbx,rsi and rbp,rsi and rsi,QWORD PTR[40+rcx] add r14,r12 adc r15,r13 adc r8,rax adc r9,rbx adc r10,rbp adc r11,rsi mov QWORD PTR[rdi],r14 mov QWORD PTR[8+rdi],r15 mov QWORD PTR[16+rdi],r8 mov QWORD PTR[24+rdi],r9 mov QWORD PTR[32+rdi],r10 mov QWORD PTR[40+rdi],r11 lea r8,QWORD PTR[136+rsp] mov r15,QWORD PTR[r8] mov r14,QWORD PTR[8+r8] mov r13,QWORD PTR[16+r8] mov r12,QWORD PTR[24+r8] mov rbx,QWORD PTR[32+r8] mov rbp,QWORD PTR[40+r8] lea rsp,QWORD PTR[48+r8] $L$SEH_epilogue_sqr_mont_382x:: mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue mov rsi,QWORD PTR[16+rsp] ifdef __SGX_LVI_HARDENING__ pop rdx lfence jmp rdx ud2 else DB 0F3h,0C3h endif $L$SEH_end_sqr_mont_382x:: sqr_mont_382x ENDP .text$ ENDS .pdata SEGMENT READONLY ALIGN(4) ALIGN 4 DD imagerel $L$SEH_begin_mul_mont_384x DD imagerel $L$SEH_body_mul_mont_384x DD imagerel $L$SEH_info_mul_mont_384x_prologue DD imagerel $L$SEH_body_mul_mont_384x DD imagerel $L$SEH_epilogue_mul_mont_384x DD imagerel $L$SEH_info_mul_mont_384x_body DD imagerel $L$SEH_epilogue_mul_mont_384x DD imagerel $L$SEH_end_mul_mont_384x DD imagerel $L$SEH_info_mul_mont_384x_epilogue DD imagerel $L$SEH_begin_sqr_mont_384x DD imagerel $L$SEH_body_sqr_mont_384x DD imagerel $L$SEH_info_sqr_mont_384x_prologue DD imagerel $L$SEH_body_sqr_mont_384x DD imagerel $L$SEH_epilogue_sqr_mont_384x DD imagerel $L$SEH_info_sqr_mont_384x_body DD imagerel $L$SEH_epilogue_sqr_mont_384x DD imagerel $L$SEH_end_sqr_mont_384x DD imagerel $L$SEH_info_sqr_mont_384x_epilogue DD imagerel $L$SEH_begin_mul_382x DD imagerel $L$SEH_body_mul_382x DD imagerel $L$SEH_info_mul_382x_prologue DD imagerel $L$SEH_body_mul_382x DD imagerel $L$SEH_epilogue_mul_382x DD imagerel $L$SEH_info_mul_382x_body DD imagerel $L$SEH_epilogue_mul_382x DD imagerel $L$SEH_end_mul_382x DD imagerel $L$SEH_info_mul_382x_epilogue DD imagerel $L$SEH_begin_sqr_382x DD imagerel $L$SEH_body_sqr_382x DD imagerel $L$SEH_info_sqr_382x_prologue DD imagerel $L$SEH_body_sqr_382x DD imagerel $L$SEH_epilogue_sqr_382x DD imagerel $L$SEH_info_sqr_382x_body DD imagerel $L$SEH_epilogue_sqr_382x DD imagerel $L$SEH_end_sqr_382x DD imagerel $L$SEH_info_sqr_382x_epilogue DD imagerel $L$SEH_begin_mul_384 DD imagerel $L$SEH_body_mul_384 DD imagerel $L$SEH_info_mul_384_prologue DD imagerel $L$SEH_body_mul_384 DD imagerel $L$SEH_epilogue_mul_384 DD imagerel $L$SEH_info_mul_384_body DD imagerel $L$SEH_epilogue_mul_384 DD imagerel $L$SEH_end_mul_384 DD imagerel $L$SEH_info_mul_384_epilogue DD imagerel $L$SEH_begin_sqr_384 DD imagerel $L$SEH_body_sqr_384 DD imagerel $L$SEH_info_sqr_384_prologue DD imagerel $L$SEH_body_sqr_384 DD imagerel $L$SEH_epilogue_sqr_384 DD imagerel $L$SEH_info_sqr_384_body DD imagerel $L$SEH_epilogue_sqr_384 DD imagerel $L$SEH_end_sqr_384 DD imagerel $L$SEH_info_sqr_384_epilogue DD imagerel $L$SEH_begin_sqr_mont_384 DD imagerel $L$SEH_body_sqr_mont_384 DD imagerel $L$SEH_info_sqr_mont_384_prologue DD imagerel $L$SEH_body_sqr_mont_384 DD imagerel $L$SEH_epilogue_sqr_mont_384 DD imagerel $L$SEH_info_sqr_mont_384_body DD imagerel $L$SEH_epilogue_sqr_mont_384 DD imagerel $L$SEH_end_sqr_mont_384 DD imagerel $L$SEH_info_sqr_mont_384_epilogue DD imagerel $L$SEH_begin_redc_mont_384 DD imagerel $L$SEH_body_redc_mont_384 DD imagerel $L$SEH_info_redc_mont_384_prologue DD imagerel $L$SEH_body_redc_mont_384 DD imagerel $L$SEH_epilogue_redc_mont_384 DD imagerel $L$SEH_info_redc_mont_384_body DD imagerel $L$SEH_epilogue_redc_mont_384 DD imagerel $L$SEH_end_redc_mont_384 DD imagerel $L$SEH_info_redc_mont_384_epilogue DD imagerel $L$SEH_begin_from_mont_384 DD imagerel $L$SEH_body_from_mont_384 DD imagerel $L$SEH_info_from_mont_384_prologue DD imagerel $L$SEH_body_from_mont_384 DD imagerel $L$SEH_epilogue_from_mont_384 DD imagerel $L$SEH_info_from_mont_384_body DD imagerel $L$SEH_epilogue_from_mont_384 DD imagerel $L$SEH_end_from_mont_384 DD imagerel $L$SEH_info_from_mont_384_epilogue DD imagerel $L$SEH_begin_sgn0_pty_mont_384 DD imagerel $L$SEH_body_sgn0_pty_mont_384 DD imagerel $L$SEH_info_sgn0_pty_mont_384_prologue DD imagerel $L$SEH_body_sgn0_pty_mont_384 DD imagerel $L$SEH_epilogue_sgn0_pty_mont_384 DD imagerel $L$SEH_info_sgn0_pty_mont_384_body DD imagerel $L$SEH_epilogue_sgn0_pty_mont_384 DD imagerel $L$SEH_end_sgn0_pty_mont_384 DD imagerel $L$SEH_info_sgn0_pty_mont_384_epilogue DD imagerel $L$SEH_begin_sgn0_pty_mont_384x DD imagerel $L$SEH_body_sgn0_pty_mont_384x DD imagerel $L$SEH_info_sgn0_pty_mont_384x_prologue DD imagerel $L$SEH_body_sgn0_pty_mont_384x DD imagerel $L$SEH_epilogue_sgn0_pty_mont_384x DD imagerel $L$SEH_info_sgn0_pty_mont_384x_body DD imagerel $L$SEH_epilogue_sgn0_pty_mont_384x DD imagerel $L$SEH_end_sgn0_pty_mont_384x DD imagerel $L$SEH_info_sgn0_pty_mont_384x_epilogue DD imagerel $L$SEH_begin_mul_mont_384 DD imagerel $L$SEH_body_mul_mont_384 DD imagerel $L$SEH_info_mul_mont_384_prologue DD imagerel $L$SEH_body_mul_mont_384 DD imagerel $L$SEH_epilogue_mul_mont_384 DD imagerel $L$SEH_info_mul_mont_384_body DD imagerel $L$SEH_epilogue_mul_mont_384 DD imagerel $L$SEH_end_mul_mont_384 DD imagerel $L$SEH_info_mul_mont_384_epilogue DD imagerel $L$SEH_begin_sqr_n_mul_mont_384 DD imagerel $L$SEH_body_sqr_n_mul_mont_384 DD imagerel $L$SEH_info_sqr_n_mul_mont_384_prologue DD imagerel $L$SEH_body_sqr_n_mul_mont_384 DD imagerel $L$SEH_epilogue_sqr_n_mul_mont_384 DD imagerel $L$SEH_info_sqr_n_mul_mont_384_body DD imagerel $L$SEH_epilogue_sqr_n_mul_mont_384 DD imagerel $L$SEH_end_sqr_n_mul_mont_384 DD imagerel $L$SEH_info_sqr_n_mul_mont_384_epilogue DD imagerel $L$SEH_begin_sqr_n_mul_mont_383 DD imagerel $L$SEH_body_sqr_n_mul_mont_383 DD imagerel $L$SEH_info_sqr_n_mul_mont_383_prologue DD imagerel $L$SEH_body_sqr_n_mul_mont_383 DD imagerel $L$SEH_epilogue_sqr_n_mul_mont_383 DD imagerel $L$SEH_info_sqr_n_mul_mont_383_body DD imagerel $L$SEH_epilogue_sqr_n_mul_mont_383 DD imagerel $L$SEH_end_sqr_n_mul_mont_383 DD imagerel $L$SEH_info_sqr_n_mul_mont_383_epilogue DD imagerel $L$SEH_begin_sqr_mont_382x DD imagerel $L$SEH_body_sqr_mont_382x DD imagerel $L$SEH_info_sqr_mont_382x_prologue DD imagerel $L$SEH_body_sqr_mont_382x DD imagerel $L$SEH_epilogue_sqr_mont_382x DD imagerel $L$SEH_info_sqr_mont_382x_body DD imagerel $L$SEH_epilogue_sqr_mont_382x DD imagerel $L$SEH_end_sqr_mont_382x DD imagerel $L$SEH_info_sqr_mont_382x_epilogue .pdata ENDS .xdata SEGMENT READONLY ALIGN(8) ALIGN 8 $L$SEH_info_mul_mont_384x_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_mul_mont_384x_body:: DB 1,0,18,0 DB 000h,0f4h,029h,000h DB 000h,0e4h,02ah,000h DB 000h,0d4h,02bh,000h DB 000h,0c4h,02ch,000h DB 000h,034h,02dh,000h DB 000h,054h,02eh,000h DB 000h,074h,030h,000h DB 000h,064h,031h,000h DB 000h,001h,02fh,000h DB 000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_mul_mont_384x_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_mont_384x_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_sqr_mont_384x_body:: DB 1,0,18,0 DB 000h,0f4h,011h,000h DB 000h,0e4h,012h,000h DB 000h,0d4h,013h,000h DB 000h,0c4h,014h,000h DB 000h,034h,015h,000h DB 000h,054h,016h,000h DB 000h,074h,018h,000h DB 000h,064h,019h,000h DB 000h,001h,017h,000h DB 000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_mont_384x_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_mul_382x_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_mul_382x_body:: DB 1,0,18,0 DB 000h,0f4h,011h,000h DB 000h,0e4h,012h,000h DB 000h,0d4h,013h,000h DB 000h,0c4h,014h,000h DB 000h,034h,015h,000h DB 000h,054h,016h,000h DB 000h,074h,018h,000h DB 000h,064h,019h,000h DB 000h,001h,017h,000h DB 000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_mul_382x_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_382x_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_sqr_382x_body:: DB 1,0,17,0 DB 000h,0f4h,001h,000h DB 000h,0e4h,002h,000h DB 000h,0d4h,003h,000h DB 000h,0c4h,004h,000h DB 000h,034h,005h,000h DB 000h,054h,006h,000h DB 000h,074h,008h,000h DB 000h,064h,009h,000h DB 000h,062h DB 000h,000h,000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_382x_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_mul_384_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_mul_384_body:: DB 1,0,11,0 DB 000h,0c4h,000h,000h DB 000h,034h,001h,000h DB 000h,054h,002h,000h DB 000h,074h,004h,000h DB 000h,064h,005h,000h DB 000h,022h DB 000h,000h,000h,000h,000h,000h $L$SEH_info_mul_384_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_384_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_sqr_384_body:: DB 1,0,17,0 DB 000h,0f4h,001h,000h DB 000h,0e4h,002h,000h DB 000h,0d4h,003h,000h DB 000h,0c4h,004h,000h DB 000h,034h,005h,000h DB 000h,054h,006h,000h DB 000h,074h,008h,000h DB 000h,064h,009h,000h DB 000h,062h DB 000h,000h,000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_384_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_mont_384_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_sqr_mont_384_body:: DB 1,0,18,0 DB 000h,0f4h,00fh,000h DB 000h,0e4h,010h,000h DB 000h,0d4h,011h,000h DB 000h,0c4h,012h,000h DB 000h,034h,013h,000h DB 000h,054h,014h,000h DB 000h,074h,016h,000h DB 000h,064h,017h,000h DB 000h,001h,015h,000h DB 000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_mont_384_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_redc_mont_384_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_redc_mont_384_body:: DB 1,0,17,0 DB 000h,0f4h,001h,000h DB 000h,0e4h,002h,000h DB 000h,0d4h,003h,000h DB 000h,0c4h,004h,000h DB 000h,034h,005h,000h DB 000h,054h,006h,000h DB 000h,074h,008h,000h DB 000h,064h,009h,000h DB 000h,062h DB 000h,000h,000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_redc_mont_384_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_from_mont_384_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_from_mont_384_body:: DB 1,0,17,0 DB 000h,0f4h,001h,000h DB 000h,0e4h,002h,000h DB 000h,0d4h,003h,000h DB 000h,0c4h,004h,000h DB 000h,034h,005h,000h DB 000h,054h,006h,000h DB 000h,074h,008h,000h DB 000h,064h,009h,000h DB 000h,062h DB 000h,000h,000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_from_mont_384_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_sgn0_pty_mont_384_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_sgn0_pty_mont_384_body:: DB 1,0,17,0 DB 000h,0f4h,001h,000h DB 000h,0e4h,002h,000h DB 000h,0d4h,003h,000h DB 000h,0c4h,004h,000h DB 000h,034h,005h,000h DB 000h,054h,006h,000h DB 000h,074h,008h,000h DB 000h,064h,009h,000h DB 000h,062h DB 000h,000h,000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_sgn0_pty_mont_384_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_sgn0_pty_mont_384x_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_sgn0_pty_mont_384x_body:: DB 1,0,17,0 DB 000h,0f4h,001h,000h DB 000h,0e4h,002h,000h DB 000h,0d4h,003h,000h DB 000h,0c4h,004h,000h DB 000h,034h,005h,000h DB 000h,054h,006h,000h DB 000h,074h,008h,000h DB 000h,064h,009h,000h DB 000h,062h DB 000h,000h,000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_sgn0_pty_mont_384x_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_mul_mont_384_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_mul_mont_384_body:: DB 1,0,17,0 DB 000h,0f4h,003h,000h DB 000h,0e4h,004h,000h DB 000h,0d4h,005h,000h DB 000h,0c4h,006h,000h DB 000h,034h,007h,000h DB 000h,054h,008h,000h DB 000h,074h,00ah,000h DB 000h,064h,00bh,000h DB 000h,082h DB 000h,000h,000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_mul_mont_384_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_n_mul_mont_384_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_sqr_n_mul_mont_384_body:: DB 1,0,18,0 DB 000h,0f4h,011h,000h DB 000h,0e4h,012h,000h DB 000h,0d4h,013h,000h DB 000h,0c4h,014h,000h DB 000h,034h,015h,000h DB 000h,054h,016h,000h DB 000h,074h,018h,000h DB 000h,064h,019h,000h DB 000h,001h,017h,000h DB 000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_n_mul_mont_384_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_n_mul_mont_383_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_sqr_n_mul_mont_383_body:: DB 1,0,18,0 DB 000h,0f4h,011h,000h DB 000h,0e4h,012h,000h DB 000h,0d4h,013h,000h DB 000h,0c4h,014h,000h DB 000h,034h,015h,000h DB 000h,054h,016h,000h DB 000h,074h,018h,000h DB 000h,064h,019h,000h DB 000h,001h,017h,000h DB 000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_n_mul_mont_383_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_mont_382x_prologue:: DB 1,0,5,00bh DB 0,074h,1,0 DB 0,064h,2,0 DB 0,0b3h DB 0,0 DD 0,0 $L$SEH_info_sqr_mont_382x_body:: DB 1,0,18,0 DB 000h,0f4h,011h,000h DB 000h,0e4h,012h,000h DB 000h,0d4h,013h,000h DB 000h,0c4h,014h,000h DB 000h,034h,015h,000h DB 000h,054h,016h,000h DB 000h,074h,018h,000h DB 000h,064h,019h,000h DB 000h,001h,017h,000h DB 000h,000h,000h,000h DB 000h,000h,000h,000h $L$SEH_info_sqr_mont_382x_epilogue:: DB 1,0,4,0 DB 000h,074h,001h,000h DB 000h,064h,002h,000h DB 000h,000h,000h,000h .xdata ENDS END