OPTION DOTNAME
.text$ SEGMENT ALIGN(256) 'CODE'
PUBLIC ct_inverse_pasta
ALIGN 32
ct_inverse_pasta 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_ct_inverse_pasta::
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
mov rcx,r9
push rbp
push rbx
push r12
push r13
push r14
push r15
sub rsp,1072
$L$SEH_body_ct_inverse_pasta::
lea rax,QWORD PTR[((48+511))+rsp]
and rax,-512
mov QWORD PTR[32+rsp],rdi
mov QWORD PTR[40+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[rdx]
mov r13,QWORD PTR[8+rdx]
mov r14,QWORD PTR[16+rdx]
mov r15,QWORD PTR[24+rdx]
mov QWORD PTR[rax],r8
mov QWORD PTR[8+rax],r9
mov QWORD PTR[16+rax],r10
mov QWORD PTR[24+rax],r11
mov QWORD PTR[32+rax],r12
mov QWORD PTR[40+rax],r13
mov QWORD PTR[48+rax],r14
mov QWORD PTR[56+rax],r15
mov rsi,rax
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[64+rdi],rdx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[72+rdi],rdx
xor rsi,256
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov r8,QWORD PTR[64+rsi]
mov r12,QWORD PTR[104+rsi]
mov r9,r8
imul r8,QWORD PTR[rsp]
mov r13,r12
imul r12,QWORD PTR[8+rsp]
add r8,r12
mov QWORD PTR[32+rdi],r8
sar r8,63
mov QWORD PTR[40+rdi],r8
mov QWORD PTR[48+rdi],r8
mov QWORD PTR[56+rdi],r8
mov QWORD PTR[64+rdi],r8
lea rsi,QWORD PTR[64+rsi]
imul r9,rdx
imul r13,rcx
add r9,r13
mov QWORD PTR[72+rdi],r9
sar r9,63
mov QWORD PTR[80+rdi],r9
mov QWORD PTR[88+rdi],r9
mov QWORD PTR[96+rdi],r9
mov QWORD PTR[104+rdi],r9
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_256x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_256x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_256x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_256x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_256x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_256x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_256x63
sar rbp,63
mov QWORD PTR[40+rdi],rbp
mov QWORD PTR[48+rdi],rbp
mov QWORD PTR[56+rdi],rbp
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_512x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_512x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_512x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_512x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_512x63
xor rsi,256+8*8
mov edx,31
call __ab_approximation_31_256
mov QWORD PTR[16+rsp],r12
mov QWORD PTR[24+rsp],r13
mov rdi,256
xor rdi,rsi
call __smulq_256_n_shift_by_31
mov QWORD PTR[rsp],rdx
mov QWORD PTR[8+rsp],rcx
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256_n_shift_by_31
mov QWORD PTR[16+rsp],rdx
mov QWORD PTR[24+rsp],rcx
mov rdx,QWORD PTR[rsp]
mov rcx,QWORD PTR[8+rsp]
lea rsi,QWORD PTR[64+rsi]
lea rdi,QWORD PTR[32+rdi]
call __smulq_256x63
mov rdx,QWORD PTR[16+rsp]
mov rcx,QWORD PTR[24+rsp]
lea rdi,QWORD PTR[40+rdi]
call __smulq_512x63
xor rsi,256+8*8
mov edx,47
mov r8,QWORD PTR[rsi]
mov r10,QWORD PTR[32+rsi]
call __inner_loop_62_256
lea rsi,QWORD PTR[64+rsi]
mov rdx,r12
mov rcx,r13
mov rdi,QWORD PTR[32+rsp]
call __smulq_512x63
adc rdx,rbp
mov rsi,QWORD PTR[40+rsp]
mov rax,rdx
sar rdx,63
mov r8,rdx
mov r9,rdx
and r8,QWORD PTR[rsi]
mov r10,rdx
and r9,QWORD PTR[8+rsi]
and r10,QWORD PTR[16+rsi]
and rdx,QWORD PTR[24+rsi]
add r12,r8
adc r13,r9
adc r14,r10
adc r15,rdx
adc rax,0
mov rdx,rax
neg rax
or rdx,rax
sar rax,63
mov r8,rdx
mov r9,rdx
and r8,QWORD PTR[rsi]
mov r10,rdx
and r9,QWORD PTR[8+rsi]
and r10,QWORD PTR[16+rsi]
and rdx,QWORD PTR[24+rsi]
xor r8,rax
xor rcx,rcx
xor r9,rax
sub rcx,rax
xor r10,rax
xor rdx,rax
add r8,rcx
adc r9,0
adc r10,0
adc rdx,0
add r12,r8
adc r13,r9
adc r14,r10
adc r15,rdx
mov QWORD PTR[32+rdi],r12
mov QWORD PTR[40+rdi],r13
mov QWORD PTR[48+rdi],r14
mov QWORD PTR[56+rdi],r15
lea r8,QWORD PTR[1072+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_ct_inverse_pasta::
mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
mov rsi,QWORD PTR[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_ct_inverse_pasta::
ct_inverse_pasta ENDP
ALIGN 32
__smulq_512x63 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 rbp,QWORD PTR[32+rsi]
mov rbx,rdx
sar rdx,63
xor rax,rax
sub rax,rdx
xor rbx,rdx
add rbx,rax
xor r8,rdx
xor r9,rdx
xor r10,rdx
xor r11,rdx
xor rbp,rdx
add rax,r8
adc r9,0
adc r10,0
adc r11,0
adc rbp,0
mul rbx
mov QWORD PTR[rdi],rax
mov rax,r9
mov r9,rdx
mul rbx
add r9,rax
mov rax,r10
adc rdx,0
mov QWORD PTR[8+rdi],r9
mov r10,rdx
mul rbx
add r10,rax
mov rax,r11
adc rdx,0
mov QWORD PTR[16+rdi],r10
mov r11,rdx
and rbp,rbx
neg rbp
mul rbx
add r11,rax
adc rbp,rdx
mov QWORD PTR[24+rdi],r11
mov r8,QWORD PTR[40+rsi]
mov r9,QWORD PTR[48+rsi]
mov r10,QWORD PTR[56+rsi]
mov r11,QWORD PTR[64+rsi]
mov r12,QWORD PTR[72+rsi]
mov r13,QWORD PTR[80+rsi]
mov r14,QWORD PTR[88+rsi]
mov r15,QWORD PTR[96+rsi]
mov rdx,rcx
sar rdx,63
xor rax,rax
sub rax,rdx
xor rcx,rdx
add rcx,rax
xor r8,rdx
xor r9,rdx
xor r10,rdx
xor r11,rdx
xor r12,rdx
xor r13,rdx
xor r14,rdx
xor r15,rdx
add rax,r8
adc r9,0
adc r10,0
adc r11,0
adc r12,0
adc r13,0
adc r14,0
adc r15,0
mul rcx
mov r8,rax
mov rax,r9
mov r9,rdx
mul rcx
add r9,rax
mov rax,r10
adc rdx,0
mov r10,rdx
mul rcx
add r10,rax
mov rax,r11
adc rdx,0
mov r11,rdx
mul rcx
add r11,rax
mov rax,r12
adc rdx,0
mov r12,rdx
mul rcx
add r12,rax
mov rax,r13
adc rdx,0
mov r13,rdx
mul rcx
add r13,rax
mov rax,r14
adc rdx,0
mov r14,rdx
mul rcx
add r14,rax
mov rax,r15
adc rdx,0
mov r15,rdx
imul rcx
add r15,rax
adc rdx,0
mov rbx,rbp
sar rbp,63
add r8,QWORD PTR[rdi]
adc r9,QWORD PTR[8+rdi]
adc r10,QWORD PTR[16+rdi]
adc r11,QWORD PTR[24+rdi]
adc r12,rbx
adc r13,rbp
adc r14,rbp
adc r15,rbp
mov QWORD PTR[rdi],r8
mov QWORD PTR[8+rdi],r9
mov QWORD PTR[16+rdi],r10
mov QWORD PTR[24+rdi],r11
mov QWORD PTR[32+rdi],r12
mov QWORD PTR[40+rdi],r13
mov QWORD PTR[48+rdi],r14
mov QWORD PTR[56+rdi],r15
DB 0F3h,0C3h ;repret
__smulq_512x63 ENDP
ALIGN 32
__smulq_256x63 PROC PRIVATE
DB 243,15,30,250
mov r8,QWORD PTR[((0+0))+rsi]
mov r9,QWORD PTR[((0+8))+rsi]
mov r10,QWORD PTR[((0+16))+rsi]
mov r11,QWORD PTR[((0+24))+rsi]
mov rbp,QWORD PTR[((0+32))+rsi]
mov rbx,rdx
sar rdx,63
xor rax,rax
sub rax,rdx
xor rbx,rdx
add rbx,rax
xor r8,rdx
xor r9,rdx
xor r10,rdx
xor r11,rdx
xor rbp,rdx
add rax,r8
adc r9,0
adc r10,0
adc r11,0
adc rbp,0
mul rbx
mov r8,rax
mov rax,r9
mov r9,rdx
mul rbx
add r9,rax
mov rax,r10
adc rdx,0
mov r10,rdx
mul rbx
add r10,rax
mov rax,r11
adc rdx,0
mov r11,rdx
and rbp,rbx
neg rbp
mul rbx
add r11,rax
adc rbp,rdx
mov rdx,rcx
mov r12,QWORD PTR[((40+0))+rsi]
mov r13,QWORD PTR[((40+8))+rsi]
mov r14,QWORD PTR[((40+16))+rsi]
mov r15,QWORD PTR[((40+24))+rsi]
mov rcx,QWORD PTR[((40+32))+rsi]
mov rbx,rdx
sar rdx,63
xor rax,rax
sub rax,rdx
xor rbx,rdx
add rbx,rax
xor r12,rdx
xor r13,rdx
xor r14,rdx
xor r15,rdx
xor rcx,rdx
add rax,r12
adc r13,0
adc r14,0
adc r15,0
adc rcx,0
mul rbx
mov r12,rax
mov rax,r13
mov r13,rdx
mul rbx
add r13,rax
mov rax,r14
adc rdx,0
mov r14,rdx
mul rbx
add r14,rax
mov rax,r15
adc rdx,0
mov r15,rdx
and rcx,rbx
neg rcx
mul rbx
add r15,rax
adc rcx,rdx
add r8,r12
adc r9,r13
adc r10,r14
adc r11,r15
adc rbp,rcx
mov QWORD PTR[rdi],r8
mov QWORD PTR[8+rdi],r9
mov QWORD PTR[16+rdi],r10
mov QWORD PTR[24+rdi],r11
mov QWORD PTR[32+rdi],rbp
DB 0F3h,0C3h ;repret
__smulq_256x63 ENDP
ALIGN 32
__smulq_256_n_shift_by_31 PROC PRIVATE
DB 243,15,30,250
mov QWORD PTR[rdi],rdx
mov QWORD PTR[8+rdi],rcx
mov rbp,rdx
mov r8,QWORD PTR[((0+0))+rsi]
mov r9,QWORD PTR[((0+8))+rsi]
mov r10,QWORD PTR[((0+16))+rsi]
mov r11,QWORD PTR[((0+24))+rsi]
mov rbx,rbp
sar rbp,63
xor rax,rax
sub rax,rbp
xor rbx,rbp
add rbx,rax
xor r8,rbp
xor r9,rbp
xor r10,rbp
xor r11,rbp
add rax,r8
adc r9,0
adc r10,0
adc r11,0
mul rbx
mov r8,rax
mov rax,r9
and rbp,rbx
neg rbp
mov r9,rdx
mul rbx
add r9,rax
mov rax,r10
adc rdx,0
mov r10,rdx
mul rbx
add r10,rax
mov rax,r11
adc rdx,0
mov r11,rdx
mul rbx
add r11,rax
adc rbp,rdx
mov r12,QWORD PTR[((32+0))+rsi]
mov r13,QWORD PTR[((32+8))+rsi]
mov r14,QWORD PTR[((32+16))+rsi]
mov r15,QWORD PTR[((32+24))+rsi]
mov rbx,rcx
sar rcx,63
xor rax,rax
sub rax,rcx
xor rbx,rcx
add rbx,rax
xor r12,rcx
xor r13,rcx
xor r14,rcx
xor r15,rcx
add rax,r12
adc r13,0
adc r14,0
adc r15,0
mul rbx
mov r12,rax
mov rax,r13
and rcx,rbx
neg rcx
mov r13,rdx
mul rbx
add r13,rax
mov rax,r14
adc rdx,0
mov r14,rdx
mul rbx
add r14,rax
mov rax,r15
adc rdx,0
mov r15,rdx
mul rbx
add r15,rax
adc rcx,rdx
add r8,r12
adc r9,r13
adc r10,r14
adc r11,r15
adc rbp,rcx
mov rdx,QWORD PTR[rdi]
mov rcx,QWORD PTR[8+rdi]
shrd r8,r9,31
shrd r9,r10,31
shrd r10,r11,31
shrd r11,rbp,31
sar rbp,63
xor rax,rax
sub rax,rbp
xor r8,rbp
xor r9,rbp
xor r10,rbp
xor r11,rbp
add r8,rax
adc r9,0
adc r10,0
adc r11,0
mov QWORD PTR[rdi],r8
mov QWORD PTR[8+rdi],r9
mov QWORD PTR[16+rdi],r10
mov QWORD PTR[24+rdi],r11
xor rdx,rbp
xor rcx,rbp
add rdx,rax
add rcx,rax
DB 0F3h,0C3h ;repret
__smulq_256_n_shift_by_31 ENDP
ALIGN 32
__ab_approximation_31_256 PROC PRIVATE
DB 243,15,30,250
mov r9,QWORD PTR[24+rsi]
mov r11,QWORD PTR[56+rsi]
mov rbx,QWORD PTR[16+rsi]
mov rbp,QWORD PTR[48+rsi]
mov r8,QWORD PTR[8+rsi]
mov r10,QWORD PTR[40+rsi]
mov rax,r9
or rax,r11
cmovz r9,rbx
cmovz r11,rbp
cmovz rbx,r8
mov r8,QWORD PTR[rsi]
cmovz rbp,r10
mov r10,QWORD PTR[32+rsi]
mov rax,r9
or rax,r11
cmovz r9,rbx
cmovz r11,rbp
cmovz rbx,r8
cmovz rbp,r10
mov rax,r9
or rax,r11
bsr rcx,rax
lea rcx,QWORD PTR[1+rcx]
cmovz r9,r8
cmovz r11,r10
cmovz rcx,rax
neg rcx
shld r9,rbx,cl
shld r11,rbp,cl
mov eax,07FFFFFFFh
and r8,rax
and r10,rax
not rax
and r9,rax
and r11,rax
or r8,r9
or r10,r11
jmp __inner_loop_31_256
DB 0F3h,0C3h ;repret
__ab_approximation_31_256 ENDP
ALIGN 32
__inner_loop_31_256 PROC PRIVATE
DB 243,15,30,250
mov rcx,07FFFFFFF80000000h
mov r13,0800000007FFFFFFFh
mov r15,07FFFFFFF7FFFFFFFh
$L$oop_31_256::
cmp r8,r10
mov rax,r8
mov rbx,r10
mov rbp,rcx
mov r14,r13
cmovb r8,r10
cmovb r10,rax
cmovb rcx,r13
cmovb r13,rbp
sub r8,r10
sub rcx,r13
add rcx,r15
test rax,1
cmovz r8,rax
cmovz r10,rbx
cmovz rcx,rbp
cmovz r13,r14
shr r8,1
add r13,r13
sub r13,r15
sub edx,1
jnz $L$oop_31_256
shr r15,32
mov edx,ecx
mov r12d,r13d
shr rcx,32
shr r13,32
sub rdx,r15
sub rcx,r15
sub r12,r15
sub r13,r15
DB 0F3h,0C3h ;repret
__inner_loop_31_256 ENDP
ALIGN 32
__inner_loop_62_256 PROC PRIVATE
DB 243,15,30,250
mov r15d,edx
mov rdx,1
xor rcx,rcx
xor r12,r12
mov r13,rdx
mov r14,rdx
$L$oop_62_256::
xor rax,rax
test r8,r14
mov rbx,r10
cmovnz rax,r10
sub rbx,r8
mov rbp,r8
sub r8,rax
cmovc r8,rbx
cmovc r10,rbp
mov rax,rdx
cmovc rdx,r12
cmovc r12,rax
mov rbx,rcx
cmovc rcx,r13
cmovc r13,rbx
xor rax,rax
xor rbx,rbx
shr r8,1
test rbp,r14
cmovnz rax,r12
cmovnz rbx,r13
add r12,r12
add r13,r13
sub rdx,rax
sub rcx,rbx
sub r15d,1
jnz $L$oop_62_256
DB 0F3h,0C3h ;repret
__inner_loop_62_256 ENDP
.text$ ENDS
.pdata SEGMENT READONLY ALIGN(4)
ALIGN 4
DD imagerel $L$SEH_begin_ct_inverse_pasta
DD imagerel $L$SEH_body_ct_inverse_pasta
DD imagerel $L$SEH_info_ct_inverse_pasta_prologue
DD imagerel $L$SEH_body_ct_inverse_pasta
DD imagerel $L$SEH_epilogue_ct_inverse_pasta
DD imagerel $L$SEH_info_ct_inverse_pasta_body
DD imagerel $L$SEH_epilogue_ct_inverse_pasta
DD imagerel $L$SEH_end_ct_inverse_pasta
DD imagerel $L$SEH_info_ct_inverse_pasta_epilogue
.pdata ENDS
.xdata SEGMENT READONLY ALIGN(8)
ALIGN 8
$L$SEH_info_ct_inverse_pasta_prologue::
DB 1,0,5,00bh
DB 0,074h,1,0
DB 0,064h,2,0
DB 0,003h
DB 0,0
$L$SEH_info_ct_inverse_pasta_body::
DB 1,0,18,0
DB 000h,0f4h,086h,000h
DB 000h,0e4h,087h,000h
DB 000h,0d4h,088h,000h
DB 000h,0c4h,089h,000h
DB 000h,034h,08ah,000h
DB 000h,054h,08bh,000h
DB 000h,074h,08dh,000h
DB 000h,064h,08eh,000h
DB 000h,001h,08ch,000h
$L$SEH_info_ct_inverse_pasta_epilogue::
DB 1,0,4,0
DB 000h,074h,001h,000h
DB 000h,064h,002h,000h
DB 000h,000h,000h,000h
.xdata ENDS
END