blob: fbfef1be13ebe5d6415b3f371a3298dc267594a7 [file] [log] [blame]
; This file is generated from a similarly-named Perl script in the BoringSSL
; source tree. Do not edit by hand.
default rel
%define XMMWORD
%define YMMWORD
%define ZMMWORD
%ifdef BORINGSSL_PREFIX
%include "boringssl_prefix_symbols_nasm.inc"
%endif
section .text code align=64
$L$p434x2:
DQ 0xFFFFFFFFFFFFFFFE
DQ 0xFFFFFFFFFFFFFFFF
DQ 0xFB82ECF5C5FFFFFF
DQ 0xF78CB8F062B15D47
DQ 0xD9F8BFAD038A40AC
DQ 0x0004683E4E2EE688
$L$p434p1:
DQ 0xFDC1767AE3000000
DQ 0x7BC65C783158AEA3
DQ 0x6CFC5FD681C52056
DQ 0x0002341F27177344
EXTERN OPENSSL_ia32cap_P
global sike_fpadd
sike_fpadd:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_sike_fpadd:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
push r12
push r13
push r14
xor rax,rax
mov r8,QWORD[rdi]
add r8,QWORD[rsi]
mov r9,QWORD[8+rdi]
adc r9,QWORD[8+rsi]
mov r10,QWORD[16+rdi]
adc r10,QWORD[16+rsi]
mov r11,QWORD[24+rdi]
adc r11,QWORD[24+rsi]
mov r12,QWORD[32+rdi]
adc r12,QWORD[32+rsi]
mov r13,QWORD[40+rdi]
adc r13,QWORD[40+rsi]
mov r14,QWORD[48+rdi]
adc r14,QWORD[48+rsi]
mov rcx,QWORD[$L$p434x2]
sub r8,rcx
mov rcx,QWORD[((8+$L$p434x2))]
sbb r9,rcx
sbb r10,rcx
mov rcx,QWORD[((16+$L$p434x2))]
sbb r11,rcx
mov rcx,QWORD[((24+$L$p434x2))]
sbb r12,rcx
mov rcx,QWORD[((32+$L$p434x2))]
sbb r13,rcx
mov rcx,QWORD[((40+$L$p434x2))]
sbb r14,rcx
sbb rax,0
mov rdi,QWORD[$L$p434x2]
and rdi,rax
mov rsi,QWORD[((8+$L$p434x2))]
and rsi,rax
mov rcx,QWORD[((16+$L$p434x2))]
and rcx,rax
add r8,rdi
mov QWORD[rdx],r8
adc r9,rsi
mov QWORD[8+rdx],r9
adc r10,rsi
mov QWORD[16+rdx],r10
adc r11,rcx
mov QWORD[24+rdx],r11
setc cl
mov r8,QWORD[((24+$L$p434x2))]
and r8,rax
mov r9,QWORD[((32+$L$p434x2))]
and r9,rax
mov r10,QWORD[((40+$L$p434x2))]
and r10,rax
bt rcx,0
adc r12,r8
mov QWORD[32+rdx],r12
adc r13,r9
mov QWORD[40+rdx],r13
adc r14,r10
mov QWORD[48+rdx],r14
pop r14
pop r13
pop r12
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
global sike_cswap_asm
sike_cswap_asm:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_sike_cswap_asm:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
movq xmm3,rdx
pshufd xmm3,xmm3,68
movdqu xmm0,XMMWORD[rdi]
movdqu xmm1,XMMWORD[rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[rdi],xmm0
movdqu XMMWORD[rsi],xmm1
movdqu xmm0,XMMWORD[16+rdi]
movdqu xmm1,XMMWORD[16+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[16+rdi],xmm0
movdqu XMMWORD[16+rsi],xmm1
movdqu xmm0,XMMWORD[32+rdi]
movdqu xmm1,XMMWORD[32+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[32+rdi],xmm0
movdqu XMMWORD[32+rsi],xmm1
movdqu xmm0,XMMWORD[48+rdi]
movdqu xmm1,XMMWORD[48+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[48+rdi],xmm0
movdqu XMMWORD[48+rsi],xmm1
movdqu xmm0,XMMWORD[64+rdi]
movdqu xmm1,XMMWORD[64+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[64+rdi],xmm0
movdqu XMMWORD[64+rsi],xmm1
movdqu xmm0,XMMWORD[80+rdi]
movdqu xmm1,XMMWORD[80+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[80+rdi],xmm0
movdqu XMMWORD[80+rsi],xmm1
movdqu xmm0,XMMWORD[96+rdi]
movdqu xmm1,XMMWORD[96+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[96+rdi],xmm0
movdqu XMMWORD[96+rsi],xmm1
movdqu xmm0,XMMWORD[112+rdi]
movdqu xmm1,XMMWORD[112+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[112+rdi],xmm0
movdqu XMMWORD[112+rsi],xmm1
movdqu xmm0,XMMWORD[128+rdi]
movdqu xmm1,XMMWORD[128+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[128+rdi],xmm0
movdqu XMMWORD[128+rsi],xmm1
movdqu xmm0,XMMWORD[144+rdi]
movdqu xmm1,XMMWORD[144+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[144+rdi],xmm0
movdqu XMMWORD[144+rsi],xmm1
movdqu xmm0,XMMWORD[160+rdi]
movdqu xmm1,XMMWORD[160+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[160+rdi],xmm0
movdqu XMMWORD[160+rsi],xmm1
movdqu xmm0,XMMWORD[176+rdi]
movdqu xmm1,XMMWORD[176+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[176+rdi],xmm0
movdqu XMMWORD[176+rsi],xmm1
movdqu xmm0,XMMWORD[192+rdi]
movdqu xmm1,XMMWORD[192+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[192+rdi],xmm0
movdqu XMMWORD[192+rsi],xmm1
movdqu xmm0,XMMWORD[208+rdi]
movdqu xmm1,XMMWORD[208+rsi]
movdqa xmm2,xmm1
pxor xmm2,xmm0
pand xmm2,xmm3
pxor xmm0,xmm2
pxor xmm1,xmm2
movdqu XMMWORD[208+rdi],xmm0
movdqu XMMWORD[208+rsi],xmm1
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
global sike_fpsub
sike_fpsub:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_sike_fpsub:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
push r12
push r13
push r14
xor rax,rax
mov r8,QWORD[rdi]
sub r8,QWORD[rsi]
mov r9,QWORD[8+rdi]
sbb r9,QWORD[8+rsi]
mov r10,QWORD[16+rdi]
sbb r10,QWORD[16+rsi]
mov r11,QWORD[24+rdi]
sbb r11,QWORD[24+rsi]
mov r12,QWORD[32+rdi]
sbb r12,QWORD[32+rsi]
mov r13,QWORD[40+rdi]
sbb r13,QWORD[40+rsi]
mov r14,QWORD[48+rdi]
sbb r14,QWORD[48+rsi]
sbb rax,0x0
mov rdi,QWORD[$L$p434x2]
and rdi,rax
mov rsi,QWORD[((8+$L$p434x2))]
and rsi,rax
mov rcx,QWORD[((16+$L$p434x2))]
and rcx,rax
add r8,rdi
mov QWORD[rdx],r8
adc r9,rsi
mov QWORD[8+rdx],r9
adc r10,rsi
mov QWORD[16+rdx],r10
adc r11,rcx
mov QWORD[24+rdx],r11
setc cl
mov r8,QWORD[((24+$L$p434x2))]
and r8,rax
mov r9,QWORD[((32+$L$p434x2))]
and r9,rax
mov r10,QWORD[((40+$L$p434x2))]
and r10,rax
bt rcx,0x0
adc r12,r8
adc r13,r9
adc r14,r10
mov QWORD[32+rdx],r12
mov QWORD[40+rdx],r13
mov QWORD[48+rdx],r14
pop r14
pop r13
pop r12
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
global sike_mpadd_asm
sike_mpadd_asm:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_sike_mpadd_asm:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
mov r8,QWORD[rdi];
mov r9,QWORD[8+rdi]
mov r10,QWORD[16+rdi]
mov r11,QWORD[24+rdi]
mov rcx,QWORD[32+rdi]
add r8,QWORD[rsi]
adc r9,QWORD[8+rsi]
adc r10,QWORD[16+rsi]
adc r11,QWORD[24+rsi]
adc rcx,QWORD[32+rsi]
mov QWORD[rdx],r8
mov QWORD[8+rdx],r9
mov QWORD[16+rdx],r10
mov QWORD[24+rdx],r11
mov QWORD[32+rdx],rcx
mov r8,QWORD[40+rdi]
mov r9,QWORD[48+rdi]
adc r8,QWORD[40+rsi]
adc r9,QWORD[48+rsi]
mov QWORD[40+rdx],r8
mov QWORD[48+rdx],r9
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
global sike_mpsubx2_asm
sike_mpsubx2_asm:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_sike_mpsubx2_asm:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
xor rax,rax
mov r8,QWORD[rdi]
mov r9,QWORD[8+rdi]
mov r10,QWORD[16+rdi]
mov r11,QWORD[24+rdi]
mov rcx,QWORD[32+rdi]
sub r8,QWORD[rsi]
sbb r9,QWORD[8+rsi]
sbb r10,QWORD[16+rsi]
sbb r11,QWORD[24+rsi]
sbb rcx,QWORD[32+rsi]
mov QWORD[rdx],r8
mov QWORD[8+rdx],r9
mov QWORD[16+rdx],r10
mov QWORD[24+rdx],r11
mov QWORD[32+rdx],rcx
mov r8,QWORD[40+rdi]
mov r9,QWORD[48+rdi]
mov r10,QWORD[56+rdi]
mov r11,QWORD[64+rdi]
mov rcx,QWORD[72+rdi]
sbb r8,QWORD[40+rsi]
sbb r9,QWORD[48+rsi]
sbb r10,QWORD[56+rsi]
sbb r11,QWORD[64+rsi]
sbb rcx,QWORD[72+rsi]
mov QWORD[40+rdx],r8
mov QWORD[48+rdx],r9
mov QWORD[56+rdx],r10
mov QWORD[64+rdx],r11
mov QWORD[72+rdx],rcx
mov r8,QWORD[80+rdi]
mov r9,QWORD[88+rdi]
mov r10,QWORD[96+rdi]
mov r11,QWORD[104+rdi]
sbb r8,QWORD[80+rsi]
sbb r9,QWORD[88+rsi]
sbb r10,QWORD[96+rsi]
sbb r11,QWORD[104+rsi]
sbb rax,0x0
mov QWORD[80+rdx],r8
mov QWORD[88+rdx],r9
mov QWORD[96+rdx],r10
mov QWORD[104+rdx],r11
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
global sike_mpdblsubx2_asm
sike_mpdblsubx2_asm:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_sike_mpdblsubx2_asm:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
push r12
push r13
xor rax,rax
mov r8,QWORD[rdx]
mov r9,QWORD[8+rdx]
mov r10,QWORD[16+rdx]
mov r11,QWORD[24+rdx]
mov r12,QWORD[32+rdx]
mov r13,QWORD[40+rdx]
mov rcx,QWORD[48+rdx]
sub r8,QWORD[rdi]
sbb r9,QWORD[8+rdi]
sbb r10,QWORD[16+rdi]
sbb r11,QWORD[24+rdi]
sbb r12,QWORD[32+rdi]
sbb r13,QWORD[40+rdi]
sbb rcx,QWORD[48+rdi]
adc rax,0x0
sub r8,QWORD[rsi]
sbb r9,QWORD[8+rsi]
sbb r10,QWORD[16+rsi]
sbb r11,QWORD[24+rsi]
sbb r12,QWORD[32+rsi]
sbb r13,QWORD[40+rsi]
sbb rcx,QWORD[48+rsi]
adc rax,0x0
mov QWORD[rdx],r8
mov QWORD[8+rdx],r9
mov QWORD[16+rdx],r10
mov QWORD[24+rdx],r11
mov QWORD[32+rdx],r12
mov QWORD[40+rdx],r13
mov QWORD[48+rdx],rcx
mov r8,QWORD[56+rdx]
mov r9,QWORD[64+rdx]
mov r10,QWORD[72+rdx]
mov r11,QWORD[80+rdx]
mov r12,QWORD[88+rdx]
mov r13,QWORD[96+rdx]
mov rcx,QWORD[104+rdx]
sub r8,rax
sbb r8,QWORD[56+rdi]
sbb r9,QWORD[64+rdi]
sbb r10,QWORD[72+rdi]
sbb r11,QWORD[80+rdi]
sbb r12,QWORD[88+rdi]
sbb r13,QWORD[96+rdi]
sbb rcx,QWORD[104+rdi]
sub r8,QWORD[56+rsi]
sbb r9,QWORD[64+rsi]
sbb r10,QWORD[72+rsi]
sbb r11,QWORD[80+rsi]
sbb r12,QWORD[88+rsi]
sbb r13,QWORD[96+rsi]
sbb rcx,QWORD[104+rsi]
mov QWORD[56+rdx],r8
mov QWORD[64+rdx],r9
mov QWORD[72+rdx],r10
mov QWORD[80+rdx],r11
mov QWORD[88+rdx],r12
mov QWORD[96+rdx],r13
mov QWORD[104+rdx],rcx
pop r13
pop r12
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$rdc_bdw:
xor rax,rax
mov rdx,QWORD[((0+0))+rdi]
mulx r9,r8,QWORD[((0+$L$p434p1))]
mulx r10,r12,QWORD[((8+$L$p434p1))]
mulx r11,r13,QWORD[((16+$L$p434p1))]
adox r9,r12
adox r10,r13
mulx r12,r13,QWORD[((24+$L$p434p1))]
adox r11,r13
adox r12,rax
xor rax,rax
mov rdx,QWORD[((0+8))+rdi]
mulx rcx,r13,QWORD[((0+$L$p434p1))]
adcx r9,r13
adcx r10,rcx
mulx r13,rcx,QWORD[((8+$L$p434p1))]
adcx r11,r13
adox r10,rcx
mulx r13,rcx,QWORD[((16+$L$p434p1))]
adcx r12,r13
adox r11,rcx
mulx r13,rcx,QWORD[((24+$L$p434p1))]
adcx r13,rax
adox r12,rcx
adox r13,rax
xor rcx,rcx
add r8,QWORD[24+rdi]
adc r9,QWORD[32+rdi]
adc r10,QWORD[40+rdi]
adc r11,QWORD[48+rdi]
adc r12,QWORD[56+rdi]
adc r13,QWORD[64+rdi]
adc rcx,QWORD[72+rdi]
mov QWORD[24+rdi],r8
mov QWORD[32+rdi],r9
mov QWORD[40+rdi],r10
mov QWORD[48+rdi],r11
mov QWORD[56+rdi],r12
mov QWORD[64+rdi],r13
mov QWORD[72+rdi],rcx
mov r8,QWORD[80+rdi]
mov r9,QWORD[88+rdi]
mov r10,QWORD[96+rdi]
mov r11,QWORD[104+rdi]
adc r8,0x0
adc r9,0x0
adc r10,0x0
adc r11,0x0
mov QWORD[80+rdi],r8
mov QWORD[88+rdi],r9
mov QWORD[96+rdi],r10
mov QWORD[104+rdi],r11
xor rax,rax
mov rdx,QWORD[((16+0))+rdi]
mulx r9,r8,QWORD[((0+$L$p434p1))]
mulx r10,r12,QWORD[((8+$L$p434p1))]
mulx r11,r13,QWORD[((16+$L$p434p1))]
adox r9,r12
adox r10,r13
mulx r12,r13,QWORD[((24+$L$p434p1))]
adox r11,r13
adox r12,rax
xor rax,rax
mov rdx,QWORD[((16+8))+rdi]
mulx rcx,r13,QWORD[((0+$L$p434p1))]
adcx r9,r13
adcx r10,rcx
mulx r13,rcx,QWORD[((8+$L$p434p1))]
adcx r11,r13
adox r10,rcx
mulx r13,rcx,QWORD[((16+$L$p434p1))]
adcx r12,r13
adox r11,rcx
mulx r13,rcx,QWORD[((24+$L$p434p1))]
adcx r13,rax
adox r12,rcx
adox r13,rax
xor rcx,rcx
add r8,QWORD[40+rdi]
adc r9,QWORD[48+rdi]
adc r10,QWORD[56+rdi]
adc r11,QWORD[64+rdi]
adc r12,QWORD[72+rdi]
adc r13,QWORD[80+rdi]
adc rcx,QWORD[88+rdi]
mov QWORD[40+rdi],r8
mov QWORD[48+rdi],r9
mov QWORD[56+rdi],r10
mov QWORD[64+rdi],r11
mov QWORD[72+rdi],r12
mov QWORD[80+rdi],r13
mov QWORD[88+rdi],rcx
mov r8,QWORD[96+rdi]
mov r9,QWORD[104+rdi]
adc r8,0x0
adc r9,0x0
mov QWORD[96+rdi],r8
mov QWORD[104+rdi],r9
xor rax,rax
mov rdx,QWORD[((32+0))+rdi]
mulx r9,r8,QWORD[((0+$L$p434p1))]
mulx r10,r12,QWORD[((8+$L$p434p1))]
mulx r11,r13,QWORD[((16+$L$p434p1))]
adox r9,r12
adox r10,r13
mulx r12,r13,QWORD[((24+$L$p434p1))]
adox r11,r13
adox r12,rax
xor rax,rax
mov rdx,QWORD[((32+8))+rdi]
mulx rcx,r13,QWORD[((0+$L$p434p1))]
adcx r9,r13
adcx r10,rcx
mulx r13,rcx,QWORD[((8+$L$p434p1))]
adcx r11,r13
adox r10,rcx
mulx r13,rcx,QWORD[((16+$L$p434p1))]
adcx r12,r13
adox r11,rcx
mulx r13,rcx,QWORD[((24+$L$p434p1))]
adcx r13,rax
adox r12,rcx
adox r13,rax
xor rcx,rcx
add r8,QWORD[56+rdi]
adc r9,QWORD[64+rdi]
adc r10,QWORD[72+rdi]
adc r11,QWORD[80+rdi]
adc r12,QWORD[88+rdi]
adc r13,QWORD[96+rdi]
adc rcx,QWORD[104+rdi]
mov QWORD[rsi],r8
mov QWORD[8+rsi],r9
mov QWORD[72+rdi],r10
mov QWORD[80+rdi],r11
mov QWORD[88+rdi],r12
mov QWORD[96+rdi],r13
mov QWORD[104+rdi],rcx
xor rax,rax
mov rdx,QWORD[48+rdi]
mulx r9,r8,QWORD[((0+$L$p434p1))]
mulx r10,r12,QWORD[((8+$L$p434p1))]
mulx r11,r13,QWORD[((16+$L$p434p1))]
adox r9,r12
adox r10,r13
mulx r12,r13,QWORD[((24+$L$p434p1))]
adox r11,r13
adox r12,rax
add r8,QWORD[72+rdi]
adc r9,QWORD[80+rdi]
adc r10,QWORD[88+rdi]
adc r11,QWORD[96+rdi]
adc r12,QWORD[104+rdi]
mov QWORD[16+rsi],r8
mov QWORD[24+rsi],r9
mov QWORD[32+rsi],r10
mov QWORD[40+rsi],r11
mov QWORD[48+rsi],r12
pop r15
pop r14
pop r13
pop r12
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
global sike_fprdc
sike_fprdc:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_sike_fprdc:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
push r12
push r13
push r14
push r15
lea rcx,[OPENSSL_ia32cap_P]
mov rcx,QWORD[8+rcx]
and ecx,0x80100
cmp ecx,0x80100
je NEAR $L$rdc_bdw
mov r14,QWORD[((0+0))+rdi]
mov rax,QWORD[((0+$L$p434p1))]
mul r14
xor r10,r10
mov r8,rax
mov r9,rdx
mov rax,QWORD[((8+$L$p434p1))]
mul r14
xor r11,r11
add r9,rax
adc r10,rdx
mov rcx,QWORD[((0+8))+rdi]
mov rax,QWORD[((0+$L$p434p1))]
mul rcx
add r9,rax
adc r10,rdx
adc r11,0x0
xor r12,r12
mov rax,QWORD[((16+$L$p434p1))]
mul r14
add r10,rax
adc r11,rdx
adc r12,0x0
mov rax,QWORD[((8+$L$p434p1))]
mul rcx
add r10,rax
adc r11,rdx
adc r12,0x0
mov rax,QWORD[((24+$L$p434p1))]
mul r14
xor r13,r13
add r11,rax
adc r12,rdx
adc r13,0x0
mov rax,QWORD[((16+$L$p434p1))]
mul rcx
add r11,rax
adc r12,rdx
adc r13,0x0
mov rax,QWORD[((24+$L$p434p1))]
mul rcx
add r12,rax
adc r13,rdx
xor rcx,rcx
add r8,QWORD[24+rdi]
adc r9,QWORD[32+rdi]
adc r10,QWORD[40+rdi]
adc r11,QWORD[48+rdi]
adc r12,QWORD[56+rdi]
adc r13,QWORD[64+rdi]
adc rcx,QWORD[72+rdi]
mov QWORD[24+rdi],r8
mov QWORD[32+rdi],r9
mov QWORD[40+rdi],r10
mov QWORD[48+rdi],r11
mov QWORD[56+rdi],r12
mov QWORD[64+rdi],r13
mov QWORD[72+rdi],rcx
mov r8,QWORD[80+rdi]
mov r9,QWORD[88+rdi]
mov r10,QWORD[96+rdi]
mov r11,QWORD[104+rdi]
adc r8,0x0
adc r9,0x0
adc r10,0x0
adc r11,0x0
mov QWORD[80+rdi],r8
mov QWORD[88+rdi],r9
mov QWORD[96+rdi],r10
mov QWORD[104+rdi],r11
mov r14,QWORD[((16+0))+rdi]
mov rax,QWORD[((0+$L$p434p1))]
mul r14
xor r10,r10
mov r8,rax
mov r9,rdx
mov rax,QWORD[((8+$L$p434p1))]
mul r14
xor r11,r11
add r9,rax
adc r10,rdx
mov rcx,QWORD[((16+8))+rdi]
mov rax,QWORD[((0+$L$p434p1))]
mul rcx
add r9,rax
adc r10,rdx
adc r11,0x0
xor r12,r12
mov rax,QWORD[((16+$L$p434p1))]
mul r14
add r10,rax
adc r11,rdx
adc r12,0x0
mov rax,QWORD[((8+$L$p434p1))]
mul rcx
add r10,rax
adc r11,rdx
adc r12,0x0
mov rax,QWORD[((24+$L$p434p1))]
mul r14
xor r13,r13
add r11,rax
adc r12,rdx
adc r13,0x0
mov rax,QWORD[((16+$L$p434p1))]
mul rcx
add r11,rax
adc r12,rdx
adc r13,0x0
mov rax,QWORD[((24+$L$p434p1))]
mul rcx
add r12,rax
adc r13,rdx
xor rcx,rcx
add r8,QWORD[40+rdi]
adc r9,QWORD[48+rdi]
adc r10,QWORD[56+rdi]
adc r11,QWORD[64+rdi]
adc r12,QWORD[72+rdi]
adc r13,QWORD[80+rdi]
adc rcx,QWORD[88+rdi]
mov QWORD[40+rdi],r8
mov QWORD[48+rdi],r9
mov QWORD[56+rdi],r10
mov QWORD[64+rdi],r11
mov QWORD[72+rdi],r12
mov QWORD[80+rdi],r13
mov QWORD[88+rdi],rcx
mov r8,QWORD[96+rdi]
mov r9,QWORD[104+rdi]
adc r8,0x0
adc r9,0x0
mov QWORD[96+rdi],r8
mov QWORD[104+rdi],r9
mov r14,QWORD[((32+0))+rdi]
mov rax,QWORD[((0+$L$p434p1))]
mul r14
xor r10,r10
mov r8,rax
mov r9,rdx
mov rax,QWORD[((8+$L$p434p1))]
mul r14
xor r11,r11
add r9,rax
adc r10,rdx
mov rcx,QWORD[((32+8))+rdi]
mov rax,QWORD[((0+$L$p434p1))]
mul rcx
add r9,rax
adc r10,rdx
adc r11,0x0
xor r12,r12
mov rax,QWORD[((16+$L$p434p1))]
mul r14
add r10,rax
adc r11,rdx
adc r12,0x0
mov rax,QWORD[((8+$L$p434p1))]
mul rcx
add r10,rax
adc r11,rdx
adc r12,0x0
mov rax,QWORD[((24+$L$p434p1))]
mul r14
xor r13,r13
add r11,rax
adc r12,rdx
adc r13,0x0
mov rax,QWORD[((16+$L$p434p1))]
mul rcx
add r11,rax
adc r12,rdx
adc r13,0x0
mov rax,QWORD[((24+$L$p434p1))]
mul rcx
add r12,rax
adc r13,rdx
xor rcx,rcx
add r8,QWORD[56+rdi]
adc r9,QWORD[64+rdi]
adc r10,QWORD[72+rdi]
adc r11,QWORD[80+rdi]
adc r12,QWORD[88+rdi]
adc r13,QWORD[96+rdi]
adc rcx,QWORD[104+rdi]
mov QWORD[rsi],r8
mov QWORD[8+rsi],r9
mov QWORD[72+rdi],r10
mov QWORD[80+rdi],r11
mov QWORD[88+rdi],r12
mov QWORD[96+rdi],r13
mov QWORD[104+rdi],rcx
mov r13,QWORD[48+rdi]
xor r10,r10
mov rax,QWORD[((0+$L$p434p1))]
mul r13
mov r8,rax
mov r9,rdx
xor r11,r11
mov rax,QWORD[((8+$L$p434p1))]
mul r13
add r9,rax
adc r10,rdx
xor r12,r12
mov rax,QWORD[((16+$L$p434p1))]
mul r13
add r10,rax
adc r11,rdx
mov rax,QWORD[((24+$L$p434p1))]
mul r13
add r11,rax
adc r12,rdx
add r8,QWORD[72+rdi]
adc r9,QWORD[80+rdi]
adc r10,QWORD[88+rdi]
adc r11,QWORD[96+rdi]
adc r12,QWORD[104+rdi]
mov QWORD[16+rsi],r8
mov QWORD[24+rsi],r9
mov QWORD[32+rsi],r10
mov QWORD[40+rsi],r11
mov QWORD[48+rsi],r12
pop r15
pop r14
pop r13
pop r12
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$mul_bdw:
mov rcx,rdx
xor rax,rax
mov r8,QWORD[rdi]
mov r9,QWORD[8+rdi]
mov r10,QWORD[16+rdi]
mov r11,QWORD[24+rdi]
push rbx
push rbp
sub rsp,96
add r8,QWORD[32+rdi]
adc r9,QWORD[40+rdi]
adc r10,QWORD[48+rdi]
adc r11,0x0
sbb rax,0x0
mov QWORD[rsp],r8
mov QWORD[8+rsp],r9
mov QWORD[16+rsp],r10
mov QWORD[24+rsp],r11
xor rbx,rbx
mov r12,QWORD[rsi]
mov r13,QWORD[8+rsi]
mov r14,QWORD[16+rsi]
mov r15,QWORD[24+rsi]
add r12,QWORD[32+rsi]
adc r13,QWORD[40+rsi]
adc r14,QWORD[48+rsi]
adc r15,0x0
sbb rbx,0x0
mov QWORD[32+rsp],r12
mov QWORD[40+rsp],r13
mov QWORD[48+rsp],r14
mov QWORD[56+rsp],r15
and r12,rax
and r13,rax
and r14,rax
and r15,rax
and r8,rbx
and r9,rbx
and r10,rbx
and r11,rbx
add r8,r12
adc r9,r13
adc r10,r14
adc r11,r15
mov QWORD[64+rsp],r8
mov QWORD[72+rsp],r9
mov QWORD[80+rsp],r10
mov QWORD[88+rsp],r11
mov rdx,QWORD[((0+0))+rsp]
mulx r8,r9,QWORD[((32+0))+rsp]
mov QWORD[((0+0))+rsp],r9
mulx r9,r10,QWORD[((32+8))+rsp]
xor rax,rax
adox r8,r10
mulx r10,r11,QWORD[((32+16))+rsp]
adox r9,r11
mulx r11,r12,QWORD[((32+24))+rsp]
adox r10,r12
mov rdx,QWORD[((0+8))+rsp]
mulx r13,r12,QWORD[((32+0))+rsp]
adox r11,rax
xor rax,rax
mulx r14,r15,QWORD[((32+8))+rsp]
adox r12,r8
mov QWORD[((0+8))+rsp],r12
adcx r13,r15
mulx r15,rbx,QWORD[((32+16))+rsp]
adcx r14,rbx
adox r13,r9
mulx rbx,rbp,QWORD[((32+24))+rsp]
adcx r15,rbp
adcx rbx,rax
adox r14,r10
mov rdx,QWORD[((0+16))+rsp]
mulx r9,r8,QWORD[((32+0))+rsp]
adox r15,r11
adox rbx,rax
xor rax,rax
mulx r10,r11,QWORD[((32+8))+rsp]
adox r8,r13
mov QWORD[((0+16))+rsp],r8
adcx r9,r11
mulx r11,r12,QWORD[((32+16))+rsp]
adcx r10,r12
adox r9,r14
mulx r12,rbp,QWORD[((32+24))+rsp]
adcx r11,rbp
adcx r12,rax
adox r10,r15
adox r11,rbx
adox r12,rax
mov rdx,QWORD[((0+24))+rsp]
mulx r13,r8,QWORD[((32+0))+rsp]
xor rax,rax
mulx r14,r15,QWORD[((32+8))+rsp]
adcx r13,r15
adox r9,r8
mulx r15,rbx,QWORD[((32+16))+rsp]
adcx r14,rbx
adox r10,r13
mulx rbx,rbp,QWORD[((32+24))+rsp]
adcx r15,rbp
adcx rbx,rax
adox r11,r14
adox r12,r15
adox rbx,rax
mov QWORD[((0+24))+rsp],r9
mov QWORD[((0+32))+rsp],r10
mov QWORD[((0+40))+rsp],r11
mov QWORD[((0+48))+rsp],r12
mov QWORD[((0+56))+rsp],rbx
mov rdx,QWORD[((0+0))+rdi]
mulx r8,r9,QWORD[((0+0))+rsi]
mov QWORD[((0+0))+rcx],r9
mulx r9,r10,QWORD[((0+8))+rsi]
xor rax,rax
adox r8,r10
mulx r10,r11,QWORD[((0+16))+rsi]
adox r9,r11
mulx r11,r12,QWORD[((0+24))+rsi]
adox r10,r12
mov rdx,QWORD[((0+8))+rdi]
mulx r13,r12,QWORD[((0+0))+rsi]
adox r11,rax
xor rax,rax
mulx r14,r15,QWORD[((0+8))+rsi]
adox r12,r8
mov QWORD[((0+8))+rcx],r12
adcx r13,r15
mulx r15,rbx,QWORD[((0+16))+rsi]
adcx r14,rbx
adox r13,r9
mulx rbx,rbp,QWORD[((0+24))+rsi]
adcx r15,rbp
adcx rbx,rax
adox r14,r10
mov rdx,QWORD[((0+16))+rdi]
mulx r9,r8,QWORD[((0+0))+rsi]
adox r15,r11
adox rbx,rax
xor rax,rax
mulx r10,r11,QWORD[((0+8))+rsi]
adox r8,r13
mov QWORD[((0+16))+rcx],r8
adcx r9,r11
mulx r11,r12,QWORD[((0+16))+rsi]
adcx r10,r12
adox r9,r14
mulx r12,rbp,QWORD[((0+24))+rsi]
adcx r11,rbp
adcx r12,rax
adox r10,r15
adox r11,rbx
adox r12,rax
mov rdx,QWORD[((0+24))+rdi]
mulx r13,r8,QWORD[((0+0))+rsi]
xor rax,rax
mulx r14,r15,QWORD[((0+8))+rsi]
adcx r13,r15
adox r9,r8
mulx r15,rbx,QWORD[((0+16))+rsi]
adcx r14,rbx
adox r10,r13
mulx rbx,rbp,QWORD[((0+24))+rsi]
adcx r15,rbp
adcx rbx,rax
adox r11,r14
adox r12,r15
adox rbx,rax
mov QWORD[((0+24))+rcx],r9
mov QWORD[((0+32))+rcx],r10
mov QWORD[((0+40))+rcx],r11
mov QWORD[((0+48))+rcx],r12
mov QWORD[((0+56))+rcx],rbx
mov rdx,QWORD[((32+0))+rdi]
mulx r8,r9,QWORD[((32+0))+rsi]
mov QWORD[((64+0))+rcx],r9
mulx r9,r10,QWORD[((32+8))+rsi]
xor rax,rax
adox r8,r10
mulx r10,r11,QWORD[((32+16))+rsi]
adox r9,r11
mov rdx,QWORD[((32+8))+rdi]
mulx r11,r12,QWORD[((32+0))+rsi]
adox r10,rax
xor rax,rax
mulx r13,r14,QWORD[((32+8))+rsi]
adox r12,r8
mov QWORD[((64+8))+rcx],r12
adcx r11,r14
mulx r14,r8,QWORD[((32+16))+rsi]
adox r11,r9
adcx r13,r8
adcx r14,rax
adox r13,r10
mov rdx,QWORD[((32+16))+rdi]
mulx r9,r8,QWORD[((32+0))+rsi]
adox r14,rax
xor rax,rax
mulx r12,r10,QWORD[((32+8))+rsi]
adox r8,r11
mov QWORD[((64+16))+rcx],r8
adcx r9,r13
mulx r8,r11,QWORD[((32+16))+rsi]
adcx r12,r14
adcx r8,rax
adox r9,r10
adox r11,r12
adox r8,rax
mov QWORD[((64+24))+rcx],r9
mov QWORD[((64+32))+rcx],r11
mov QWORD[((64+40))+rcx],r8
mov r8,QWORD[64+rsp]
mov r9,QWORD[72+rsp]
mov r10,QWORD[80+rsp]
mov r11,QWORD[88+rsp]
mov rax,QWORD[32+rsp]
add r8,rax
mov rax,QWORD[40+rsp]
adc r9,rax
mov rax,QWORD[48+rsp]
adc r10,rax
mov rax,QWORD[56+rsp]
adc r11,rax
mov r12,QWORD[rsp]
mov r13,QWORD[8+rsp]
mov r14,QWORD[16+rsp]
mov r15,QWORD[24+rsp]
sub r12,QWORD[rcx]
sbb r13,QWORD[8+rcx]
sbb r14,QWORD[16+rcx]
sbb r15,QWORD[24+rcx]
sbb r8,QWORD[32+rcx]
sbb r9,QWORD[40+rcx]
sbb r10,QWORD[48+rcx]
sbb r11,QWORD[56+rcx]
sub r12,QWORD[64+rcx]
sbb r13,QWORD[72+rcx]
sbb r14,QWORD[80+rcx]
sbb r15,QWORD[88+rcx]
sbb r8,QWORD[96+rcx]
sbb r9,QWORD[104+rcx]
sbb r10,0x0
sbb r11,0x0
add r12,QWORD[32+rcx]
mov QWORD[32+rcx],r12
adc r13,QWORD[40+rcx]
mov QWORD[40+rcx],r13
adc r14,QWORD[48+rcx]
mov QWORD[48+rcx],r14
adc r15,QWORD[56+rcx]
mov QWORD[56+rcx],r15
adc r8,QWORD[64+rcx]
mov QWORD[64+rcx],r8
adc r9,QWORD[72+rcx]
mov QWORD[72+rcx],r9
adc r10,QWORD[80+rcx]
mov QWORD[80+rcx],r10
adc r11,QWORD[88+rcx]
mov QWORD[88+rcx],r11
mov r12,QWORD[96+rcx]
adc r12,0x0
mov QWORD[96+rcx],r12
mov r13,QWORD[104+rcx]
adc r13,0x0
mov QWORD[104+rcx],r13
add rsp,96
pop rbp
pop rbx
pop r15
pop r14
pop r13
pop r12
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
global sike_mpmul
sike_mpmul:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_sike_mpmul:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
push r12
push r13
push r14
push r15
lea rcx,[OPENSSL_ia32cap_P]
mov rcx,QWORD[8+rcx]
and ecx,0x80100
cmp ecx,0x80100
je NEAR $L$mul_bdw
mov rcx,rdx
sub rsp,112
xor rax,rax
mov r8,QWORD[32+rdi]
mov r9,QWORD[40+rdi]
mov r10,QWORD[48+rdi]
xor r11,r11
add r8,QWORD[rdi]
adc r9,QWORD[8+rdi]
adc r10,QWORD[16+rdi]
adc r11,QWORD[24+rdi]
sbb rax,0
mov QWORD[64+rsp],rax
mov QWORD[rcx],r8
mov QWORD[8+rcx],r9
mov QWORD[16+rcx],r10
mov QWORD[24+rcx],r11
xor rdx,rdx
mov r12,QWORD[32+rsi]
mov r13,QWORD[40+rsi]
mov r14,QWORD[48+rsi]
xor r15,r15
add r12,QWORD[rsi]
adc r13,QWORD[8+rsi]
adc r14,QWORD[16+rsi]
adc r15,QWORD[24+rsi]
sbb rdx,0x0
mov QWORD[72+rsp],rdx
mov rax,QWORD[rcx]
mul r12
mov QWORD[rsp],rax
mov r8,rdx
xor r9,r9
mov rax,QWORD[rcx]
mul r13
add r8,rax
adc r9,rdx
xor r10,r10
mov rax,QWORD[8+rcx]
mul r12
add r8,rax
mov QWORD[8+rsp],r8
adc r9,rdx
adc r10,0x0
xor r8,r8
mov rax,QWORD[rcx]
mul r14
add r9,rax
adc r10,rdx
adc r8,0x0
mov rax,QWORD[16+rcx]
mul r12
add r9,rax
adc r10,rdx
adc r8,0x0
mov rax,QWORD[8+rcx]
mul r13
add r9,rax
mov QWORD[16+rsp],r9
adc r10,rdx
adc r8,0x0
xor r9,r9
mov rax,QWORD[rcx]
mul r15
add r10,rax
adc r8,rdx
adc r9,0x0
mov rax,QWORD[24+rcx]
mul r12
add r10,rax
adc r8,rdx
adc r9,0x0
mov rax,QWORD[8+rcx]
mul r14
add r10,rax
adc r8,rdx
adc r9,0x0
mov rax,QWORD[16+rcx]
mul r13
add r10,rax
mov QWORD[24+rsp],r10
adc r8,rdx
adc r9,0x0
xor r10,r10
mov rax,QWORD[8+rcx]
mul r15
add r8,rax
adc r9,rdx
adc r10,0x0
mov rax,QWORD[24+rcx]
mul r13
add r8,rax
adc r9,rdx
adc r10,0x0
mov rax,QWORD[16+rcx]
mul r14
add r8,rax
mov QWORD[32+rsp],r8
adc r9,rdx
adc r10,0x0
xor r11,r11
mov rax,QWORD[16+rcx]
mul r15
add r9,rax
adc r10,rdx
adc r11,0x0
mov rax,QWORD[24+rcx]
mul r14
add r9,rax
mov QWORD[40+rsp],r9
adc r10,rdx
adc r11,0x0
mov rax,QWORD[24+rcx]
mul r15
add r10,rax
mov QWORD[48+rsp],r10
adc r11,rdx
mov QWORD[56+rsp],r11
mov rax,QWORD[64+rsp]
and r12,rax
and r13,rax
and r14,rax
and r15,rax
mov rax,QWORD[72+rsp]
mov r8,QWORD[rcx]
and r8,rax
mov r9,QWORD[8+rcx]
and r9,rax
mov r10,QWORD[16+rcx]
and r10,rax
mov r11,QWORD[24+rcx]
and r11,rax
add r12,r8
adc r13,r9
adc r14,r10
adc r15,r11
mov rax,QWORD[32+rsp]
add r12,rax
mov rax,QWORD[40+rsp]
adc r13,rax
mov rax,QWORD[48+rsp]
adc r14,rax
mov rax,QWORD[56+rsp]
adc r15,rax
mov QWORD[80+rsp],r12
mov QWORD[88+rsp],r13
mov QWORD[96+rsp],r14
mov QWORD[104+rsp],r15
mov r11,QWORD[rdi]
mov rax,QWORD[rsi]
mul r11
xor r9,r9
mov QWORD[rcx],rax
mov r8,rdx
mov r14,QWORD[16+rdi]
mov rax,QWORD[8+rsi]
mul r11
xor r10,r10
add r8,rax
adc r9,rdx
mov r12,QWORD[8+rdi]
mov rax,QWORD[rsi]
mul r12
add r8,rax
mov QWORD[8+rcx],r8
adc r9,rdx
adc r10,0x0
xor r8,r8
mov rax,QWORD[16+rsi]
mul r11
add r9,rax
adc r10,rdx
adc r8,0x0
mov r13,QWORD[rsi]
mov rax,r14
mul r13
add r9,rax
adc r10,rdx
adc r8,0x0
mov rax,QWORD[8+rsi]
mul r12
add r9,rax
mov QWORD[16+rcx],r9
adc r10,rdx
adc r8,0x0
xor r9,r9
mov rax,QWORD[24+rsi]
mul r11
mov r15,QWORD[24+rdi]
add r10,rax
adc r8,rdx
adc r9,0x0
mov rax,r15
mul r13
add r10,rax
adc r8,rdx
adc r9,0x0
mov rax,QWORD[16+rsi]
mul r12
add r10,rax
adc r8,rdx
adc r9,0x0
mov rax,QWORD[8+rsi]
mul r14
add r10,rax
mov QWORD[24+rcx],r10
adc r8,rdx
adc r9,0x0
xor r10,r10
mov rax,QWORD[24+rsi]
mul r12
add r8,rax
adc r9,rdx
adc r10,0x0
mov rax,QWORD[8+rsi]
mul r15
add r8,rax
adc r9,rdx
adc r10,0x0
mov rax,QWORD[16+rsi]
mul r14
add r8,rax
mov QWORD[32+rcx],r8
adc r9,rdx
adc r10,0x0
xor r8,r8
mov rax,QWORD[24+rsi]
mul r14
add r9,rax
adc r10,rdx
adc r8,0x0
mov rax,QWORD[16+rsi]
mul r15
add r9,rax
mov QWORD[40+rcx],r9
adc r10,rdx
adc r8,0x0
mov rax,QWORD[24+rsi]
mul r15
add r10,rax
mov QWORD[48+rcx],r10
adc r8,rdx
mov QWORD[56+rcx],r8
mov r11,QWORD[32+rdi]
mov rax,QWORD[32+rsi]
mul r11
xor r9,r9
mov QWORD[64+rcx],rax
mov r8,rdx
mov r14,QWORD[48+rdi]
mov rax,QWORD[40+rsi]
mul r11
xor r10,r10
add r8,rax
adc r9,rdx
mov r12,QWORD[40+rdi]
mov rax,QWORD[32+rsi]
mul r12
add r8,rax
mov QWORD[72+rcx],r8
adc r9,rdx
adc r10,0x0
xor r8,r8
mov rax,QWORD[48+rsi]
mul r11
add r9,rax
adc r10,rdx
adc r8,0x0
mov r13,QWORD[32+rsi]
mov rax,r14
mul r13
add r9,rax
adc r10,rdx
adc r8,0x0
mov rax,QWORD[40+rsi]
mul r12
add r9,rax
mov QWORD[80+rcx],r9
adc r10,rdx
adc r8,0x0
mov rax,QWORD[48+rsi]
mul r12
xor r12,r12
add r10,rax
adc r8,rdx
adc r12,0x0
mov rax,QWORD[40+rsi]
mul r14
add r10,rax
adc r8,rdx
adc r12,0x0
mov QWORD[88+rcx],r10
mov rax,QWORD[48+rsi]
mul r14
add r8,rax
adc r12,0x0
mov QWORD[96+rcx],r8
add rdx,r12
mov r8,QWORD[rsp]
sub r8,QWORD[rcx]
mov r9,QWORD[8+rsp]
sbb r9,QWORD[8+rcx]
mov r10,QWORD[16+rsp]
sbb r10,QWORD[16+rcx]
mov r11,QWORD[24+rsp]
sbb r11,QWORD[24+rcx]
mov r12,QWORD[80+rsp]
sbb r12,QWORD[32+rcx]
mov r13,QWORD[88+rsp]
sbb r13,QWORD[40+rcx]
mov r14,QWORD[96+rsp]
sbb r14,QWORD[48+rcx]
mov r15,QWORD[104+rsp]
sbb r15,QWORD[56+rcx]
mov rax,QWORD[64+rcx]
sub r8,rax
mov rax,QWORD[72+rcx]
sbb r9,rax
mov rax,QWORD[80+rcx]
sbb r10,rax
mov rax,QWORD[88+rcx]
sbb r11,rax
mov rax,QWORD[96+rcx]
sbb r12,rax
sbb r13,rdx
sbb r14,0x0
sbb r15,0x0
add r8,QWORD[32+rcx]
mov QWORD[32+rcx],r8
adc r9,QWORD[40+rcx]
mov QWORD[40+rcx],r9
adc r10,QWORD[48+rcx]
mov QWORD[48+rcx],r10
adc r11,QWORD[56+rcx]
mov QWORD[56+rcx],r11
adc r12,QWORD[64+rcx]
mov QWORD[64+rcx],r12
adc r13,QWORD[72+rcx]
mov QWORD[72+rcx],r13
adc r14,QWORD[80+rcx]
mov QWORD[80+rcx],r14
adc r15,QWORD[88+rcx]
mov QWORD[88+rcx],r15
mov r12,QWORD[96+rcx]
adc r12,0x0
mov QWORD[96+rcx],r12
adc rdx,0x0
mov QWORD[104+rcx],rdx
add rsp,112
pop r15
pop r14
pop r13
pop r12
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret