6825 lines
105 KiB
NASM
6825 lines
105 KiB
NASM
default rel
|
|
%define XMMWORD
|
|
%define YMMWORD
|
|
%define ZMMWORD
|
|
|
|
section .text code align=64
|
|
|
|
|
|
global curve25519_donna_x64
|
|
|
|
# donna function.
|
|
# linux arguments: RDI, RSI, RDX
|
|
# windows arguments: RCX, RDX, R8
|
|
curve25519_donna_x64:
|
|
$L$FB13:
|
|
push r15
|
|
push r14
|
|
xor r15d,r15d
|
|
push r13
|
|
push r12
|
|
push rbp
|
|
push rbx
|
|
push rsi
|
|
push rdi
|
|
|
|
mov rdi, rcx
|
|
mov rsi, rdx
|
|
mov rdx, r8
|
|
|
|
xor r8d,r8d
|
|
xor r11d,r11d
|
|
xor ebp,ebp
|
|
xor r9d,r9d
|
|
xor r13d,r13d
|
|
sub rsp,784
|
|
|
|
mov rcx,QWORD[6+rdx]
|
|
mov r10,QWORD[rdx]
|
|
movdqu xmm0,XMMWORD[rsi]
|
|
lea r14,[488+rsp]
|
|
mov QWORD[352+rsp],rdi
|
|
movaps XMMWORD[360+rsp],xmm0
|
|
shr rcx,3
|
|
and BYTE[360+rsp],-8
|
|
mov rbx,rcx
|
|
mov rcx,QWORD[12+rdx]
|
|
movdqu xmm0,XMMWORD[16+rsi]
|
|
shr rcx,6
|
|
movaps XMMWORD[376+rsp],xmm0
|
|
movzx eax,BYTE[391+rsp]
|
|
and eax,127
|
|
or eax,64
|
|
mov BYTE[391+rsp],al
|
|
mov rax,2251799813685247
|
|
and rcx,rax
|
|
and rbx,rax
|
|
and r10,rax
|
|
mov rdi,rcx
|
|
mov QWORD[184+rsp],rcx
|
|
mov rcx,QWORD[19+rdx]
|
|
mov rdx,QWORD[24+rdx]
|
|
mov QWORD[24+rsp],r10
|
|
mov QWORD[120+rsp],rbx
|
|
shr rcx,1
|
|
shr rdx,12
|
|
and rcx,rax
|
|
mov rsi,rdx
|
|
mov r12,rcx
|
|
mov QWORD[264+rsp],rcx
|
|
and rsi,rax
|
|
lea rdx,[rsi*8+rsi]
|
|
mov QWORD[320+rsp],rsi
|
|
mov QWORD[((-120))+rsp],rsi
|
|
lea rdx,[rdx*2+rsi]
|
|
mov rsi,r14
|
|
mov r14,r15
|
|
mov QWORD[192+rsp],rdx
|
|
lea rdx,[rbx*8+rbx]
|
|
lea rdx,[rdx*2+rbx]
|
|
mov QWORD[328+rsp],rdx
|
|
lea rdx,[rdi*8+rdi]
|
|
lea rdx,[rdx*2+rdi]
|
|
mov QWORD[336+rsp],rdx
|
|
lea rdx,[rcx*8+rcx]
|
|
lea rdx,[rdx*2+rcx]
|
|
lea rcx,[728+rsp]
|
|
mov QWORD[200+rsp],rdx
|
|
lea rdx,[391+rsp]
|
|
mov QWORD[344+rsp],rdx
|
|
mov QWORD[((-24))+rsp],rdi
|
|
lea rdx,[536+rsp]
|
|
mov QWORD[88+rsp],rcx
|
|
lea rcx,[680+rsp]
|
|
mov QWORD[40+rsp],rbx
|
|
mov QWORD[((-88))+rsp],r10
|
|
mov ebx,1
|
|
xor r10d,r10d
|
|
mov QWORD[232+rsp],rcx
|
|
lea rcx,[632+rsp]
|
|
mov QWORD[((-104))+rsp],rbx
|
|
mov r15,QWORD[40+rsp]
|
|
xor edi,edi
|
|
mov QWORD[40+rsp],r12
|
|
mov QWORD[80+rsp],rcx
|
|
lea rcx,[584+rsp]
|
|
mov QWORD[((-32))+rsp],0
|
|
mov QWORD[((-56))+rsp],0
|
|
mov QWORD[72+rsp],1
|
|
mov rbx,r8
|
|
mov QWORD[104+rsp],rcx
|
|
lea rcx,[440+rsp]
|
|
mov QWORD[8+rsp],rdx
|
|
mov QWORD[56+rsp],r10
|
|
mov r12,r11
|
|
mov QWORD[((-8))+rsp],rcx
|
|
lea rcx,[392+rsp]
|
|
mov QWORD[((-72))+rsp],rcx
|
|
mov rcx,rax
|
|
mov rax,QWORD[344+rsp]
|
|
|
|
|
|
$L$3:
|
|
movzx eax,BYTE[rax]
|
|
mov rdx,QWORD[((-8))+rsp]
|
|
mov QWORD[240+rsp],rsi
|
|
mov DWORD[316+rsp],8
|
|
mov rsi,r15
|
|
mov r15,QWORD[72+rsp]
|
|
mov BYTE[315+rsp],al
|
|
mov rax,QWORD[80+rsp]
|
|
mov QWORD[80+rsp],rdx
|
|
mov rdx,r9
|
|
mov QWORD[((-8))+rsp],rax
|
|
mov rax,QWORD[8+rsp]
|
|
mov QWORD[256+rsp],rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
mov QWORD[((-72))+rsp],rbp
|
|
mov QWORD[248+rsp],rax
|
|
mov rax,r8
|
|
jmp NEAR $L$2
|
|
|
|
|
|
$L$10:
|
|
mov r9,r8
|
|
mov r8,QWORD[80+rsp]
|
|
mov QWORD[80+rsp],r9
|
|
mov r9,QWORD[88+rsp]
|
|
mov QWORD[((-8))+rsp],r8
|
|
mov r8,QWORD[256+rsp]
|
|
mov QWORD[256+rsp],r9
|
|
mov r9,QWORD[104+rsp]
|
|
mov QWORD[88+rsp],r8
|
|
mov r8,QWORD[248+rsp]
|
|
mov QWORD[248+rsp],r9
|
|
mov r9,QWORD[232+rsp]
|
|
mov QWORD[104+rsp],r8
|
|
mov r8,QWORD[240+rsp]
|
|
mov QWORD[240+rsp],r9
|
|
mov QWORD[232+rsp],r8
|
|
$L$2:
|
|
movzx r8d,BYTE[315+rsp]
|
|
mov QWORD[208+rsp],rcx
|
|
mov rcx,QWORD[((-88))+rsp]
|
|
shr r8b,7
|
|
mov r9,rcx
|
|
movzx r8d,r8b
|
|
xor r9,r15
|
|
neg r8
|
|
and r9,r8
|
|
mov rbp,r8
|
|
xor r15,r9
|
|
xor r9,rcx
|
|
mov rcx,rbp
|
|
mov QWORD[((-88))+rsp],r15
|
|
mov r15,QWORD[((-56))+rsp]
|
|
mov QWORD[160+rsp],r9
|
|
mov QWORD[128+rsp],rcx
|
|
mov r9,r15
|
|
xor r9,rsi
|
|
mov r8,r9
|
|
and r8,rbp
|
|
xor r15,r8
|
|
mov r9,r15
|
|
mov r15,r8
|
|
xor r15,rsi
|
|
mov QWORD[72+rsp],r15
|
|
mov r15,QWORD[((-24))+rsp]
|
|
mov rsi,r15
|
|
xor rsi,r10
|
|
and rsi,rbp
|
|
mov rbp,QWORD[((-72))+rsp]
|
|
xor r10,rsi
|
|
xor rsi,r15
|
|
mov r15,QWORD[40+rsp]
|
|
mov QWORD[8+rsp],rsi
|
|
mov rsi,r15
|
|
xor rsi,rbp
|
|
and rsi,rcx
|
|
xor rbp,rsi
|
|
xor rsi,r15
|
|
mov r15,QWORD[((-32))+rsp]
|
|
mov QWORD[40+rsp],rsi
|
|
mov rsi,QWORD[((-120))+rsp]
|
|
xor rsi,r15
|
|
mov r8,rsi
|
|
and r8,rcx
|
|
xor r15,r8
|
|
mov rsi,r15
|
|
mov r15,QWORD[((-120))+rsp]
|
|
xor r15,r8
|
|
mov r8,QWORD[((-104))+rsp]
|
|
mov QWORD[152+rsp],r15
|
|
mov r15,QWORD[((-104))+rsp]
|
|
xor r8,r12
|
|
and r8,rcx
|
|
xor r15,r8
|
|
xor r12,r8
|
|
mov r8,r11
|
|
mov QWORD[((-32))+rsp],r15
|
|
mov r15,QWORD[56+rsp]
|
|
xor r8,rdx
|
|
and r8,rcx
|
|
xor r11,r8
|
|
xor r8,rdx
|
|
mov rdx,r15
|
|
mov QWORD[((-72))+rsp],r8
|
|
mov r8,r14
|
|
xor rdx,rdi
|
|
and rdx,rcx
|
|
xor rdi,rdx
|
|
xor r8,r13
|
|
xor rdx,r15
|
|
and r8,rcx
|
|
mov r15,QWORD[((-88))+rsp]
|
|
xor r14,r8
|
|
xor r13,r8
|
|
mov r8,rbx
|
|
xor r8,rax
|
|
and r8,rcx
|
|
mov rcx,18014398509481832
|
|
xor rbx,r8
|
|
xor r8,rax
|
|
lea rax,[r15*1+r12]
|
|
mov r15,QWORD[240+rsp]
|
|
mov QWORD[((-56))+rsp],rax
|
|
mov QWORD[r15],rax
|
|
lea rax,[r9*1+r11]
|
|
mov QWORD[8+r15],rax
|
|
mov QWORD[((-120))+rsp],rax
|
|
lea rax,[r10*1+rdi]
|
|
mov QWORD[16+r15],rax
|
|
mov QWORD[136+rsp],rax
|
|
lea rax,[rbp*1+r14]
|
|
mov QWORD[24+r15],rax
|
|
mov QWORD[144+rsp],rax
|
|
lea rax,[rsi*1+rbx]
|
|
mov QWORD[((-104))+rsp],rax
|
|
mov QWORD[32+r15],rax
|
|
mov r15,QWORD[((-88))+rsp]
|
|
mov rax,QWORD[256+rsp]
|
|
add r15,rcx
|
|
sub r15,r12
|
|
mov r12,18014398509481976
|
|
mov QWORD[rax],r15
|
|
mov QWORD[((-24))+rsp],r15
|
|
mov r15,r12
|
|
add r9,r12
|
|
add r10,r15
|
|
add rbp,r15
|
|
sub r10,rdi
|
|
mov r12,r9
|
|
mov rdi,r15
|
|
mov r15,rbp
|
|
sub r12,r11
|
|
mov r11,rax
|
|
sub r15,r14
|
|
mov QWORD[8+rax],r12
|
|
mov QWORD[16+r11],r10
|
|
mov QWORD[24+r11],r15
|
|
mov r11,rdi
|
|
mov r14,r15
|
|
add r11,rsi
|
|
mov r15,QWORD[((-32))+rsp]
|
|
mov QWORD[((-88))+rsp],r10
|
|
sub r11,rbx
|
|
mov r10,QWORD[((-72))+rsp]
|
|
mov rbx,QWORD[8+rsp]
|
|
add r10,QWORD[72+rsp]
|
|
mov QWORD[32+rax],r11
|
|
mov rsi,QWORD[40+rsp]
|
|
mov rax,QWORD[160+rsp]
|
|
mov rdi,r15
|
|
mov r9,QWORD[152+rsp]
|
|
mov rbp,QWORD[248+rsp]
|
|
add rbx,rdx
|
|
add rdi,rax
|
|
add rsi,r13
|
|
add rcx,rax
|
|
add r9,r8
|
|
mov QWORD[rbp],rdi
|
|
mov QWORD[8+rbp],r10
|
|
mov QWORD[16+rbp],rbx
|
|
mov QWORD[24+rbp],rsi
|
|
mov QWORD[32+rbp],r9
|
|
mov rbp,rcx
|
|
mov rcx,18014398509481976
|
|
add rcx,QWORD[72+rsp]
|
|
sub rbp,r15
|
|
mov rax,QWORD[80+rsp]
|
|
mov QWORD[((-32))+rsp],rbp
|
|
mov QWORD[rax],rbp
|
|
mov r15,rcx
|
|
mov rcx,18014398509481976
|
|
add rcx,QWORD[8+rsp]
|
|
sub r15,QWORD[((-72))+rsp]
|
|
mov rbp,rcx
|
|
mov rcx,18014398509481976
|
|
sub rbp,rdx
|
|
mov QWORD[8+rax],r15
|
|
lea rax,[r11*8+r11]
|
|
mov rdx,rbp
|
|
mov rbp,QWORD[80+rsp]
|
|
mov QWORD[72+rsp],rdx
|
|
mov QWORD[16+rbp],rdx
|
|
add rcx,QWORD[40+rsp]
|
|
mov QWORD[((-72))+rsp],r14
|
|
mov rdx,rcx
|
|
mov rcx,18014398509481976
|
|
sub rdx,r13
|
|
add rcx,QWORD[152+rsp]
|
|
mov QWORD[152+rsp],r11
|
|
mov r13,rdx
|
|
mov rdx,rbp
|
|
mov QWORD[24+rbp],r13
|
|
mov QWORD[56+rsp],r13
|
|
mov rbp,rcx
|
|
sub rbp,r8
|
|
lea r8,[rax*2+r11]
|
|
mov QWORD[32+rdx],rbp
|
|
mov QWORD[160+rsp],rbp
|
|
mov rbp,QWORD[((-88))+rsp]
|
|
mov r13,r8
|
|
mov r8,r12
|
|
mov QWORD[8+rsp],r13
|
|
lea rax,[rbp*8+rbp]
|
|
lea rdx,[rax*2+rbp]
|
|
lea rax,[r14*8+r14]
|
|
lea r14,[rax*2+r14]
|
|
lea rax,[r12*8+r12]
|
|
mov rcx,rdx
|
|
mov QWORD[224+rsp],rcx
|
|
lea r11,[rax*2+r12]
|
|
mov QWORD[168+rsp],r14
|
|
mov rax,r11
|
|
mul r9
|
|
mov r11,rax
|
|
mov rax,r13
|
|
mov r12,rdx
|
|
mul r10
|
|
mov r13,QWORD[((-24))+rsp]
|
|
add r11,rax
|
|
mov rax,r13
|
|
adc r12,rdx
|
|
mul rdi
|
|
add r11,rax
|
|
mov rax,r14
|
|
adc r12,rdx
|
|
mul rbx
|
|
add r11,rax
|
|
mov rax,rcx
|
|
mov rcx,QWORD[208+rsp]
|
|
adc r12,rdx
|
|
mul rsi
|
|
add r11,rax
|
|
mov rax,r13
|
|
adc r12,rdx
|
|
mov rdx,r11
|
|
and rdx,rcx
|
|
mov QWORD[208+rsp],rdx
|
|
mul r10
|
|
mov r13,rax
|
|
mov rax,r8
|
|
mov r14,rdx
|
|
mul rdi
|
|
add r13,rax
|
|
mov rax,QWORD[8+rsp]
|
|
adc r14,rdx
|
|
mul rbx
|
|
add r13,rax
|
|
mov rax,QWORD[224+rsp]
|
|
adc r14,rdx
|
|
mul r9
|
|
add r13,rax
|
|
mov rax,QWORD[168+rsp]
|
|
adc r14,rdx
|
|
mul rsi
|
|
add rax,r13
|
|
mov r13,r12
|
|
mov r12,r11
|
|
adc rdx,r14
|
|
shrd r12,r13,51
|
|
shr r13,51
|
|
mov r14,r13
|
|
mov r13,r12
|
|
add r13,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
adc r14,rdx
|
|
mov r12,r13
|
|
and r12,rcx
|
|
mul rbx
|
|
mov QWORD[216+rsp],r12
|
|
mov r11,rax
|
|
mov rax,rbp
|
|
mov r12,rdx
|
|
mul rdi
|
|
mov rbp,r8
|
|
mov QWORD[40+rsp],rbp
|
|
add r11,rax
|
|
mov rax,r8
|
|
adc r12,rdx
|
|
mul r10
|
|
add r11,rax
|
|
mov rax,QWORD[8+rsp]
|
|
adc r12,rdx
|
|
mul rsi
|
|
add r11,rax
|
|
mov rax,QWORD[168+rsp]
|
|
adc r12,rdx
|
|
mul r9
|
|
add rax,r11
|
|
adc rdx,r12
|
|
mov r12,r13
|
|
mov r13,r14
|
|
shrd r12,r14,51
|
|
shr r13,51
|
|
mov r11,r12
|
|
mov r12,r13
|
|
add r11,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
adc r12,rdx
|
|
mov r8,r11
|
|
and r8,rcx
|
|
mul rsi
|
|
mov r13,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
mov r14,rdx
|
|
mul rdi
|
|
add r13,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc r14,rdx
|
|
mul r10
|
|
add r13,rax
|
|
mov rax,rbp
|
|
adc r14,rdx
|
|
mul rbx
|
|
add r13,rax
|
|
mov rax,QWORD[8+rsp]
|
|
adc r14,rdx
|
|
mul r9
|
|
add rax,r13
|
|
mov r13,r12
|
|
mov r12,r11
|
|
adc rdx,r14
|
|
shrd r12,r13,51
|
|
shr r13,51
|
|
mov r14,r13
|
|
mov r13,r12
|
|
add r13,rax
|
|
mov rax,r9
|
|
adc r14,rdx
|
|
mov r12,r13
|
|
mov r9,r13
|
|
mul QWORD[((-24))+rsp]
|
|
and r12,rcx
|
|
mov QWORD[272+rsp],r12
|
|
mov r11,rax
|
|
mov r12,rdx
|
|
mov rax,rdi
|
|
mul QWORD[152+rsp]
|
|
mov rdi,rax
|
|
mov rbp,rdx
|
|
mov rax,rsi
|
|
add rdi,r11
|
|
adc rbp,r12
|
|
mul QWORD[40+rsp]
|
|
add rdi,rax
|
|
mov rax,r10
|
|
mov r10,r14
|
|
adc rbp,rdx
|
|
mul QWORD[((-72))+rsp]
|
|
add rdi,rax
|
|
mov rax,rbx
|
|
adc rbp,rdx
|
|
mul QWORD[((-88))+rsp]
|
|
mov r13,QWORD[56+rsp]
|
|
mov rbx,QWORD[136+rsp]
|
|
add rdi,rax
|
|
adc rbp,rdx
|
|
shr r10,51
|
|
shrd r9,r14,51
|
|
mov rdx,r10
|
|
mov r10,QWORD[((-104))+rsp]
|
|
mov r14,QWORD[((-32))+rsp]
|
|
mov rax,r9
|
|
add rax,rdi
|
|
mov rdi,rax
|
|
adc rdx,rbp
|
|
mov rbp,QWORD[144+rsp]
|
|
and rdi,rcx
|
|
mov QWORD[280+rsp],rdi
|
|
mov rdi,rax
|
|
shrd rdi,rdx,51
|
|
mov rdx,QWORD[72+rsp]
|
|
lea rax,[rdi*8+rdi]
|
|
lea rax,[rax*2+rdi]
|
|
add rax,QWORD[208+rsp]
|
|
mov r9,rax
|
|
shr rax,51
|
|
add rax,QWORD[216+rsp]
|
|
and r9,rcx
|
|
mov QWORD[288+rsp],r9
|
|
mov r9,QWORD[((-120))+rsp]
|
|
mov rdi,rax
|
|
shr rax,51
|
|
lea rsi,[r8*1+rax]
|
|
mov r8,QWORD[160+rsp]
|
|
and rdi,rcx
|
|
mov QWORD[208+rsp],rdi
|
|
mov QWORD[216+rsp],rsi
|
|
lea rax,[r8*8+r8]
|
|
lea rsi,[rax*2+r8]
|
|
lea rax,[rdx*8+rdx]
|
|
lea r8,[rax*2+rdx]
|
|
lea rax,[r13*8+r13]
|
|
lea rdi,[rax*2+r13]
|
|
lea rax,[r15*8+r15]
|
|
lea r11,[rax*2+r15]
|
|
mov rax,r11
|
|
mul r10
|
|
mov r11,rax
|
|
mov rax,r9
|
|
mov r12,rdx
|
|
mul rsi
|
|
add r11,rax
|
|
mov rax,r14
|
|
adc r12,rdx
|
|
mul QWORD[((-56))+rsp]
|
|
add r11,rax
|
|
mov rax,rbx
|
|
adc r12,rdx
|
|
mul rdi
|
|
add r11,rax
|
|
mov rax,rbp
|
|
adc r12,rdx
|
|
mul r8
|
|
add r11,rax
|
|
mov rax,r11
|
|
adc r12,rdx
|
|
and rax,rcx
|
|
mov QWORD[296+rsp],rax
|
|
mov rax,r14
|
|
mul r9
|
|
mov r9,r11
|
|
mov r13,rax
|
|
mov rax,QWORD[((-56))+rsp]
|
|
mov r14,rdx
|
|
mul r15
|
|
add r13,rax
|
|
mov rax,rbx
|
|
adc r14,rdx
|
|
mul rsi
|
|
add r13,rax
|
|
mov rax,r8
|
|
mov r8,rbp
|
|
adc r14,rdx
|
|
mul r10
|
|
mov r10,r12
|
|
add r13,rax
|
|
mov rax,rbp
|
|
adc r14,rdx
|
|
mul rdi
|
|
add rax,r13
|
|
adc rdx,r14
|
|
shr r10,51
|
|
mov r14,rbx
|
|
shrd r9,r12,51
|
|
add r9,rax
|
|
mov rax,QWORD[((-32))+rsp]
|
|
adc r10,rdx
|
|
mov r13,r9
|
|
and r13,rcx
|
|
mul rbx
|
|
mov r11,rax
|
|
mov r12,rdx
|
|
mov rax,QWORD[((-56))+rsp]
|
|
mul QWORD[72+rsp]
|
|
add r11,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc r12,rdx
|
|
mul r15
|
|
add r11,rax
|
|
mov rax,rbp
|
|
adc r12,rdx
|
|
mul rsi
|
|
add r11,rax
|
|
mov rax,rdi
|
|
adc r12,rdx
|
|
mul QWORD[((-104))+rsp]
|
|
mov rdi,rax
|
|
mov rbp,rdx
|
|
mov rax,r9
|
|
add rdi,r11
|
|
mov rdx,r10
|
|
adc rbp,r12
|
|
shr rdx,51
|
|
shrd rax,r10,51
|
|
mov r12,rdx
|
|
mov r11,rax
|
|
mov rax,QWORD[((-32))+rsp]
|
|
add r11,rdi
|
|
mov rdx,r11
|
|
adc r12,rbp
|
|
mov rbp,r8
|
|
and rdx,rcx
|
|
mov rdi,r12
|
|
mov rbx,rdx
|
|
mul r8
|
|
mov r9,rax
|
|
mov r10,rdx
|
|
mov rax,QWORD[((-56))+rsp]
|
|
mul QWORD[56+rsp]
|
|
add r9,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc r10,rdx
|
|
mul QWORD[72+rsp]
|
|
add r9,rax
|
|
mov rax,r14
|
|
adc r10,rdx
|
|
mul r15
|
|
add r9,rax
|
|
mov rax,rsi
|
|
mov rsi,r11
|
|
adc r10,rdx
|
|
mul QWORD[((-104))+rsp]
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shr rdi,51
|
|
shrd rsi,r12,51
|
|
add rsi,rax
|
|
mov rax,QWORD[((-32))+rsp]
|
|
adc rdi,rdx
|
|
mov rdx,rsi
|
|
and rdx,rcx
|
|
mov r8,rdx
|
|
mul QWORD[((-104))+rsp]
|
|
mov r9,rax
|
|
mov r10,rdx
|
|
mov rax,QWORD[160+rsp]
|
|
mul QWORD[((-56))+rsp]
|
|
mov r12,QWORD[272+rsp]
|
|
add r9,rax
|
|
mov rax,r15
|
|
mov r15,QWORD[288+rsp]
|
|
adc r10,rdx
|
|
mul rbp
|
|
add r9,rax
|
|
mov rax,QWORD[56+rsp]
|
|
adc r10,rdx
|
|
mul QWORD[((-120))+rsp]
|
|
add r9,rax
|
|
mov rax,QWORD[72+rsp]
|
|
adc r10,rdx
|
|
mul r14
|
|
mov r14,QWORD[280+rsp]
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
mov r9,rsi
|
|
mov r10,rdi
|
|
lea rdi,[r8*1+r12]
|
|
add r9,rax
|
|
adc r10,rdx
|
|
mov rdx,r9
|
|
shrd r9,r10,51
|
|
and rdx,rcx
|
|
lea rax,[r9*8+r9]
|
|
lea rbp,[rdx*1+r14]
|
|
lea rax,[rax*2+r9]
|
|
add rax,QWORD[296+rsp]
|
|
mov r10,rax
|
|
shr rax,51
|
|
add r13,rax
|
|
and r10,rcx
|
|
mov rax,r13
|
|
shr r13,51
|
|
lea r11,[r10*1+r15]
|
|
and rax,rcx
|
|
add r13,rbx
|
|
mov r9,rax
|
|
mov rax,QWORD[208+rsp]
|
|
lea rbx,[r9*1+rax]
|
|
mov rax,QWORD[216+rsp]
|
|
lea rsi,[r13*1+rax]
|
|
mov rax,18014398509481832
|
|
add rax,r15
|
|
mov r15,18014398509481976
|
|
sub rax,r10
|
|
add r15,r12
|
|
mov QWORD[72+rsp],rax
|
|
mov rax,18014398509481976
|
|
add rax,QWORD[208+rsp]
|
|
sub r15,r8
|
|
sub rax,r9
|
|
mov QWORD[56+rsp],rax
|
|
mov rax,18014398509481976
|
|
add rax,QWORD[216+rsp]
|
|
sub rax,r13
|
|
mov r13,rax
|
|
mov rax,18014398509481976
|
|
add rax,r14
|
|
lea r14,[r11*1+r11]
|
|
sub rax,rdx
|
|
lea rdx,[rbx*1+rbx]
|
|
mov QWORD[((-32))+rsp],rax
|
|
lea rax,[rbp*8+rbp]
|
|
mov QWORD[160+rsp],rdx
|
|
lea rdx,[rax*2+rbp]
|
|
mov rax,r11
|
|
lea r8,[rdx*1+rdx]
|
|
mov QWORD[272+rsp],rdx
|
|
mul r11
|
|
mov r11,rax
|
|
mov rax,r8
|
|
mov r12,rdx
|
|
mul rbx
|
|
add r11,rax
|
|
lea rax,[rsi*8+rsi]
|
|
adc r12,rdx
|
|
lea rax,[rax*2+rsi]
|
|
add rax,rax
|
|
mul rdi
|
|
add r11,rax
|
|
lea rax,[rdi*8+rdi]
|
|
mov r9,r11
|
|
adc r12,rdx
|
|
and r9,rcx
|
|
mov QWORD[208+rsp],r9
|
|
lea r9,[rax*2+rdi]
|
|
mov rax,r9
|
|
mul rdi
|
|
mov r9,rax
|
|
mov rax,rbx
|
|
mov r10,rdx
|
|
mul r14
|
|
add r9,rax
|
|
mov rax,r8
|
|
adc r10,rdx
|
|
mul rsi
|
|
add rax,r9
|
|
mov r9,r11
|
|
adc rdx,r10
|
|
mov r10,r12
|
|
shrd r9,r12,51
|
|
shr r10,51
|
|
add r9,rax
|
|
mov rax,rbx
|
|
adc r10,rdx
|
|
mov r12,r9
|
|
mul rbx
|
|
and r12,rcx
|
|
mov rbx,QWORD[160+rsp]
|
|
mov QWORD[216+rsp],r12
|
|
mov r11,rax
|
|
mov rax,r8
|
|
mov r12,rdx
|
|
mul rdi
|
|
add r11,rax
|
|
mov rax,r14
|
|
adc r12,rdx
|
|
mul rsi
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add r9,rax
|
|
mov rax,rdi
|
|
adc r10,rdx
|
|
mov r8,r9
|
|
mul r14
|
|
and r8,rcx
|
|
mov r11,rax
|
|
mov rax,QWORD[272+rsp]
|
|
mov r12,rdx
|
|
mul rbp
|
|
add r11,rax
|
|
mov rax,rbx
|
|
adc r12,rdx
|
|
mul rsi
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
mov r11,r9
|
|
mov r12,r10
|
|
add r11,rax
|
|
mov rax,rbx
|
|
adc r12,rdx
|
|
mov QWORD[160+rsp],r11
|
|
mul rdi
|
|
mov r9,rax
|
|
mov rax,rsi
|
|
mov r10,rdx
|
|
mul rsi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r14
|
|
add rsi,r9
|
|
adc rdi,r10
|
|
mov r10,QWORD[72+rsp]
|
|
mul rbp
|
|
mov rbp,QWORD[56+rsp]
|
|
add rsi,rax
|
|
adc rdi,rdx
|
|
mov rax,rsi
|
|
shrd r11,r12,51
|
|
mov rdx,rdi
|
|
shr r12,51
|
|
add rax,r11
|
|
adc rdx,r12
|
|
mov QWORD[272+rsp],rax
|
|
shrd rax,rdx,51
|
|
mov rsi,rax
|
|
lea rax,[rax*8+rax]
|
|
lea rdx,[rax*2+rsi]
|
|
add rdx,QWORD[208+rsp]
|
|
mov rax,QWORD[216+rsp]
|
|
lea rsi,[r10*1+r10]
|
|
mov QWORD[208+rsp],rdx
|
|
shr rdx,51
|
|
add rax,rdx
|
|
mov QWORD[216+rsp],rax
|
|
shr rax,51
|
|
lea rbx,[r8*1+rax]
|
|
mov r8,QWORD[((-32))+rsp]
|
|
mov QWORD[280+rsp],rbx
|
|
lea rbx,[rbp*1+rbp]
|
|
lea rax,[r8*8+r8]
|
|
lea r8,[rax*2+r8]
|
|
mov rax,r10
|
|
mul r10
|
|
lea rdi,[r8*1+r8]
|
|
mov r11,rax
|
|
mov rax,rbp
|
|
mov r12,rdx
|
|
mul rdi
|
|
add r11,rax
|
|
lea rax,[r13*8+r13]
|
|
adc r12,rdx
|
|
lea rax,[rax*2+r13]
|
|
add rax,rax
|
|
mul r15
|
|
add r11,rax
|
|
lea rax,[r15*8+r15]
|
|
adc r12,rdx
|
|
mov r10,r11
|
|
lea r9,[rax*2+r15]
|
|
and r10,rcx
|
|
mov QWORD[72+rsp],r10
|
|
mov rax,r9
|
|
mul r15
|
|
mov r9,rax
|
|
mov rax,rbp
|
|
mov r10,rdx
|
|
mul rsi
|
|
add r9,rax
|
|
mov rax,rdi
|
|
adc r10,rdx
|
|
mul r13
|
|
add rax,r9
|
|
mov r9,r11
|
|
adc rdx,r10
|
|
mov r10,r12
|
|
shrd r9,r12,51
|
|
shr r10,51
|
|
add r9,rax
|
|
mov rax,rbp
|
|
adc r10,rdx
|
|
mov r12,r9
|
|
mul rbp
|
|
and r12,rcx
|
|
mov r14,r12
|
|
mov r11,rax
|
|
mov rax,rdi
|
|
mov r12,rdx
|
|
mul r15
|
|
add r11,rax
|
|
mov rax,rsi
|
|
adc r12,rdx
|
|
mul r13
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
mov r11,r9
|
|
mov r12,r10
|
|
add r11,rax
|
|
mov rax,r15
|
|
adc r12,rdx
|
|
mov r9,r11
|
|
mul rsi
|
|
and r9,rcx
|
|
mov QWORD[56+rsp],r9
|
|
mov r9,rax
|
|
mov rax,r8
|
|
mov r8,QWORD[((-32))+rsp]
|
|
mov r10,rdx
|
|
mul r8
|
|
add r9,rax
|
|
mov rax,r13
|
|
adc r10,rdx
|
|
mul rbx
|
|
add rax,r9
|
|
mov r9,r11
|
|
adc rdx,r10
|
|
mov r10,r12
|
|
shrd r9,r12,51
|
|
shr r10,51
|
|
add r9,rax
|
|
mov rax,r15
|
|
adc r10,rdx
|
|
mov r12,r9
|
|
mul rbx
|
|
and r12,rcx
|
|
mov rbp,r12
|
|
mov r11,rax
|
|
mov rax,r13
|
|
mov r12,rdx
|
|
mul r13
|
|
add r11,rax
|
|
mov rax,r8
|
|
adc r12,rdx
|
|
mul rsi
|
|
add rax,r11
|
|
adc rdx,r12
|
|
mov r12,QWORD[336+rsp]
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add rax,r9
|
|
mov r9,QWORD[24+rsp]
|
|
adc rdx,r10
|
|
mov rbx,rax
|
|
mov r10,QWORD[192+rsp]
|
|
shrd rax,rdx,51
|
|
and rbx,rcx
|
|
lea rdx,[rax*8+rax]
|
|
lea rsi,[rdx*2+rax]
|
|
add rsi,QWORD[72+rsp]
|
|
mov rax,QWORD[328+rsp]
|
|
mul rbx
|
|
mov r13,rsi
|
|
shr rsi,51
|
|
add rsi,r14
|
|
and r13,rcx
|
|
mov r8,r13
|
|
mov r13,rsi
|
|
shr rsi,51
|
|
and r13,rcx
|
|
mov r14,rdx
|
|
add rsi,QWORD[56+rsp]
|
|
mov rdi,r13
|
|
mov r13,rax
|
|
mov rax,r12
|
|
mul rbp
|
|
add r13,rax
|
|
mov rax,r9
|
|
adc r14,rdx
|
|
mul r8
|
|
add r13,rax
|
|
mov rax,r10
|
|
adc r14,rdx
|
|
mul rdi
|
|
add r13,rax
|
|
mov rax,QWORD[200+rsp]
|
|
adc r14,rdx
|
|
mul rsi
|
|
add r13,rax
|
|
mov rax,r12
|
|
adc r14,rdx
|
|
mov r15,r13
|
|
mul rbx
|
|
and r15,rcx
|
|
mov r11,rax
|
|
mov rax,QWORD[200+rsp]
|
|
mov r12,rdx
|
|
mul rbp
|
|
add r11,rax
|
|
mov rax,QWORD[120+rsp]
|
|
adc r12,rdx
|
|
mul r8
|
|
add r11,rax
|
|
mov rax,r9
|
|
adc r12,rdx
|
|
mul rdi
|
|
add r11,rax
|
|
mov rax,r10
|
|
adc r12,rdx
|
|
mul rsi
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd r13,r14,51
|
|
shr r14,51
|
|
mov r11,r13
|
|
mov r12,r14
|
|
add r11,rax
|
|
mov rax,r10
|
|
adc r12,rdx
|
|
mov r13,r11
|
|
mul rbp
|
|
and r13,rcx
|
|
mov r14,r13
|
|
mov r9,rax
|
|
mov rax,QWORD[200+rsp]
|
|
mov r10,rdx
|
|
mul rbx
|
|
add r9,rax
|
|
mov rax,QWORD[184+rsp]
|
|
adc r10,rdx
|
|
mul r8
|
|
add r9,rax
|
|
mov rax,QWORD[120+rsp]
|
|
adc r10,rdx
|
|
mul rdi
|
|
add r9,rax
|
|
mov rax,QWORD[24+rsp]
|
|
adc r10,rdx
|
|
mul rsi
|
|
add rax,r9
|
|
mov r9,r11
|
|
adc rdx,r10
|
|
mov r10,r12
|
|
shrd r9,r12,51
|
|
shr r10,51
|
|
add r9,rax
|
|
mov rax,QWORD[24+rsp]
|
|
adc r10,rdx
|
|
mov r13,r9
|
|
and r13,rcx
|
|
mul rbp
|
|
mov r11,rax
|
|
mov rax,QWORD[192+rsp]
|
|
mov r12,rdx
|
|
mul rbx
|
|
add r11,rax
|
|
mov rax,QWORD[264+rsp]
|
|
adc r12,rdx
|
|
mul r8
|
|
add r11,rax
|
|
mov rax,QWORD[184+rsp]
|
|
adc r12,rdx
|
|
mul rdi
|
|
add r11,rax
|
|
mov rax,QWORD[120+rsp]
|
|
adc r12,rdx
|
|
mul rsi
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
mov r11,r9
|
|
mov r12,r10
|
|
add r11,rax
|
|
mov rax,rbx
|
|
adc r12,rdx
|
|
mov QWORD[72+rsp],r11
|
|
mul QWORD[24+rsp]
|
|
mov r9,rax
|
|
mov r10,rdx
|
|
mov rax,rbp
|
|
mul QWORD[120+rsp]
|
|
add r9,rax
|
|
mov rax,r8
|
|
mov r8,r11
|
|
adc r10,rdx
|
|
mul QWORD[320+rsp]
|
|
add r9,rax
|
|
mov rax,rdi
|
|
adc r10,rdx
|
|
mul QWORD[264+rsp]
|
|
mov rdi,rax
|
|
mov rbp,rdx
|
|
mov rax,rsi
|
|
add rdi,r9
|
|
mov r9,r12
|
|
adc rbp,r10
|
|
mov r10,QWORD[((-56))+rsp]
|
|
mul QWORD[184+rsp]
|
|
add rdi,rax
|
|
adc rbp,rdx
|
|
shr r9,51
|
|
shrd r8,r12,51
|
|
mov rdx,r9
|
|
mov r12,QWORD[((-120))+rsp]
|
|
mov rax,r8
|
|
add rax,rdi
|
|
mov rdi,QWORD[((-104))+rsp]
|
|
adc rdx,rbp
|
|
mov r8,rax
|
|
mov QWORD[288+rsp],rax
|
|
shrd r8,rdx,51
|
|
lea rbp,[r12*1+r12]
|
|
lea rax,[r8*8+r8]
|
|
lea r8,[rax*2+r8]
|
|
lea rax,[rdi*8+rdi]
|
|
add r8,r15
|
|
lea r11,[rax*2+rdi]
|
|
mov rbx,r8
|
|
mov QWORD[56+rsp],r8
|
|
shr rbx,51
|
|
lea r8,[r14*1+rbx]
|
|
lea rbx,[r10*1+r10]
|
|
mov QWORD[296+rsp],r8
|
|
shr r8,51
|
|
lea r15,[r13*1+r8]
|
|
lea r8,[r11*1+r11]
|
|
mov QWORD[304+rsp],r15
|
|
mov r15,QWORD[136+rsp]
|
|
mov r13,QWORD[144+rsp]
|
|
lea rax,[r15*8+r15]
|
|
lea rsi,[rax*2+r15]
|
|
add rsi,rsi
|
|
mov rax,rsi
|
|
mul r13
|
|
mov rsi,rax
|
|
mov rax,r10
|
|
mov rdi,rdx
|
|
mul r10
|
|
add rsi,rax
|
|
mov rax,r12
|
|
adc rdi,rdx
|
|
mul r8
|
|
add rsi,rax
|
|
lea rax,[r13*8+r13]
|
|
adc rdi,rdx
|
|
mov r14,rsi
|
|
lea r9,[rax*2+r13]
|
|
and r14,rcx
|
|
mov rax,r9
|
|
mul r13
|
|
mov r9,rax
|
|
mov rax,r12
|
|
mov r10,rdx
|
|
mul rbx
|
|
add r9,rax
|
|
mov rax,r15
|
|
adc r10,rdx
|
|
mul r8
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rax
|
|
mov rax,r15
|
|
adc rdi,rdx
|
|
mov r10,rsi
|
|
mov QWORD[((-56))+rsp],rsi
|
|
mul rbx
|
|
mov QWORD[((-48))+rsp],rdi
|
|
mov rdi,QWORD[((-120))+rsp]
|
|
and r10,rcx
|
|
mov rsi,QWORD[((-56))+rsp]
|
|
mov r12,r10
|
|
mov r9,rax
|
|
mov rax,rdi
|
|
mov r10,rdx
|
|
mul rdi
|
|
mov rdi,QWORD[((-48))+rsp]
|
|
add r9,rax
|
|
mov rax,r8
|
|
mov r8,r13
|
|
adc r10,rdx
|
|
mul r13
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rax
|
|
mov rax,r8
|
|
adc rdi,rdx
|
|
mov r10,rsi
|
|
mov QWORD[((-120))+rsp],rsi
|
|
mul rbx
|
|
and r10,rcx
|
|
mov rsi,QWORD[((-120))+rsp]
|
|
mov r13,r10
|
|
mov QWORD[((-112))+rsp],rdi
|
|
mov rdi,QWORD[((-112))+rsp]
|
|
mov r9,rax
|
|
mov rax,r15
|
|
mov r10,rdx
|
|
mul rbp
|
|
add r9,rax
|
|
mov rax,r11
|
|
mov r11,QWORD[((-104))+rsp]
|
|
adc r10,rdx
|
|
mul r11
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rax
|
|
mov rax,rsi
|
|
adc rdi,rdx
|
|
and rax,rcx
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,r11
|
|
mov r11,QWORD[((-88))+rsp]
|
|
mul rbx
|
|
mov rbx,QWORD[((-24))+rsp]
|
|
mov r9,rax
|
|
mov rax,r8
|
|
mov r10,rdx
|
|
mul rbp
|
|
mov rbp,QWORD[40+rsp]
|
|
add r9,rax
|
|
mov rax,r15
|
|
adc r10,rdx
|
|
mul r15
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rax
|
|
adc rdi,rdx
|
|
mov r15,rsi
|
|
shrd rsi,rdi,51
|
|
and r15,rcx
|
|
lea rax,[rsi*8+rsi]
|
|
lea rax,[rax*2+rsi]
|
|
lea rsi,[rbp*1+rbp]
|
|
add r14,rax
|
|
mov rdi,r14
|
|
shr r14,51
|
|
add r12,r14
|
|
mov r14,QWORD[224+rsp]
|
|
and rdi,rcx
|
|
mov rdx,r12
|
|
shr r12,51
|
|
mov QWORD[((-104))+rsp],rdi
|
|
lea r9,[r13*1+r12]
|
|
mov r13,QWORD[8+rsp]
|
|
mov r12,QWORD[((-72))+rsp]
|
|
and rdx,rcx
|
|
lea rdi,[rbx*1+rbx]
|
|
mov QWORD[((-56))+rsp],rdx
|
|
mov QWORD[((-32))+rsp],r9
|
|
lea r8,[r13*1+r13]
|
|
lea r13,[r14*1+r14]
|
|
mov rax,r13
|
|
mul r12
|
|
mov r13,rax
|
|
mov rax,rbx
|
|
mov r14,rdx
|
|
mul rbx
|
|
mov rbx,rbp
|
|
add r13,rax
|
|
mov rax,rbp
|
|
adc r14,rdx
|
|
mul r8
|
|
add r13,rax
|
|
mov rax,rbx
|
|
adc r14,rdx
|
|
mov rbp,r13
|
|
mul rdi
|
|
and rbp,rcx
|
|
mov r9,rax
|
|
mov rax,QWORD[168+rsp]
|
|
mov r10,rdx
|
|
mul r12
|
|
add r9,rax
|
|
mov rax,r11
|
|
adc r10,rdx
|
|
mul r8
|
|
add rax,r9
|
|
mov r9,QWORD[40+rsp]
|
|
adc rdx,r10
|
|
shrd r13,r14,51
|
|
shr r14,51
|
|
add r13,rax
|
|
mov rax,r11
|
|
adc r14,rdx
|
|
mov r10,r13
|
|
mul rdi
|
|
and r10,rcx
|
|
mov rbx,r10
|
|
mov r11,rax
|
|
mov rax,r9
|
|
mov r12,rdx
|
|
mul r9
|
|
mov r9,QWORD[((-72))+rsp]
|
|
add r11,rax
|
|
mov rax,r8
|
|
adc r12,rdx
|
|
mul r9
|
|
add rax,r11
|
|
adc rdx,r12
|
|
mov r12,r13
|
|
mov r13,r14
|
|
shrd r12,r14,51
|
|
shr r13,51
|
|
mov r11,r12
|
|
mov r12,r13
|
|
mov r13,QWORD[((-88))+rsp]
|
|
add r11,rax
|
|
mov rax,r9
|
|
adc r12,rdx
|
|
mov r14,r11
|
|
mul rdi
|
|
and r14,rcx
|
|
mov r8,r14
|
|
mov r9,rax
|
|
mov rax,r13
|
|
mov r10,rdx
|
|
mul rsi
|
|
add r9,rax
|
|
mov rax,QWORD[8+rsp]
|
|
adc r10,rdx
|
|
mul QWORD[152+rsp]
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd r11,r12,51
|
|
shr r12,51
|
|
mov r9,r11
|
|
mov r10,r12
|
|
add r9,rax
|
|
mov rax,QWORD[152+rsp]
|
|
adc r10,rdx
|
|
mov r14,r9
|
|
and r14,rcx
|
|
mul rdi
|
|
mov r11,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
mov r12,rdx
|
|
mul rsi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r13
|
|
add rsi,r11
|
|
adc rdi,r12
|
|
mul r13
|
|
add rsi,rax
|
|
adc rdi,rdx
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add rsi,r9
|
|
adc rdi,r10
|
|
mov r12,rsi
|
|
shrd rsi,rdi,51
|
|
and r12,rcx
|
|
lea rax,[rsi*8+rsi]
|
|
mov QWORD[((-88))+rsp],r12
|
|
lea r13,[rax*2+rsi]
|
|
lea rax,[r12*8+r12]
|
|
add r13,rbp
|
|
lea rdi,[rax*2+r12]
|
|
mov rbp,r13
|
|
shr r13,51
|
|
add r13,rbx
|
|
and rbp,rcx
|
|
mov rbx,r13
|
|
shr r13,51
|
|
add r13,r8
|
|
and rbx,rcx
|
|
lea rax,[r13*8+r13]
|
|
lea rsi,[rax*2+r13]
|
|
lea rax,[r14*8+r14]
|
|
lea r8,[rax*2+r14]
|
|
mov rax,QWORD[((-104))+rsp]
|
|
mov r11,QWORD[((-56))+rsp]
|
|
mul rbp
|
|
mov r9,rax
|
|
mov rax,r11
|
|
mov r10,rdx
|
|
mul rdi
|
|
add r9,rax
|
|
mov rax,QWORD[((-32))+rsp]
|
|
adc r10,rdx
|
|
mul r8
|
|
add r9,rax
|
|
lea rax,[rbx*8+rbx]
|
|
adc r10,rdx
|
|
lea rax,[rax*2+rbx]
|
|
mul r15
|
|
add r9,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc r10,rdx
|
|
mul rsi
|
|
add r9,rax
|
|
mov rax,r11
|
|
adc r10,rdx
|
|
mov r12,r9
|
|
mul rbp
|
|
and r12,rcx
|
|
mov QWORD[((-72))+rsp],r12
|
|
mov r11,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov r12,rdx
|
|
mul r8
|
|
add r11,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc r12,rdx
|
|
mul rbx
|
|
add r11,rax
|
|
mov rax,QWORD[((-32))+rsp]
|
|
adc r12,rdx
|
|
mul rdi
|
|
add r11,rax
|
|
mov rax,rsi
|
|
mov rsi,QWORD[((-104))+rsp]
|
|
adc r12,rdx
|
|
mul r15
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
mov r11,r9
|
|
mov r12,r10
|
|
add r11,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc r12,rdx
|
|
mov r10,r11
|
|
and r10,rcx
|
|
mul rdi
|
|
mov QWORD[((-24))+rsp],r10
|
|
mov r9,rax
|
|
mov rax,r8
|
|
mov r10,rdx
|
|
mul r15
|
|
add r9,rax
|
|
mov rax,QWORD[((-32))+rsp]
|
|
adc r10,rdx
|
|
mul rbp
|
|
add r9,rax
|
|
mov rax,QWORD[((-56))+rsp]
|
|
adc r10,rdx
|
|
mul rbx
|
|
add r9,rax
|
|
mov rax,rsi
|
|
adc r10,rdx
|
|
mul r13
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd r11,r12,51
|
|
shr r12,51
|
|
add r11,rax
|
|
mov rax,rsi
|
|
adc r12,rdx
|
|
mov QWORD[8+rsp],r11
|
|
and r11,rcx
|
|
mul r14
|
|
mov r8,r11
|
|
mov QWORD[16+rsp],r12
|
|
mov r11,QWORD[8+rsp]
|
|
mov r12,QWORD[16+rsp]
|
|
mov r9,rax
|
|
mov rax,rdi
|
|
mov r10,rdx
|
|
mul r15
|
|
mov rsi,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rdi,rdx
|
|
add rsi,r9
|
|
adc rdi,r10
|
|
mul rbp
|
|
add rsi,rax
|
|
mov rax,QWORD[((-32))+rsp]
|
|
adc rdi,rdx
|
|
mul rbx
|
|
add rsi,rax
|
|
mov rax,QWORD[((-56))+rsp]
|
|
adc rdi,rdx
|
|
mul r13
|
|
add rsi,rax
|
|
mov rax,rbp
|
|
adc rdi,rdx
|
|
shrd r11,r12,51
|
|
shr r12,51
|
|
add rsi,r11
|
|
mov r11,QWORD[((-104))+rsp]
|
|
adc rdi,r12
|
|
mov r12,QWORD[((-120))+rsp]
|
|
mov QWORD[40+rsp],rsi
|
|
mul r15
|
|
mov r9,rax
|
|
mov r10,rdx
|
|
mov rax,r11
|
|
mul QWORD[((-88))+rsp]
|
|
add r9,rax
|
|
mov rax,QWORD[((-56))+rsp]
|
|
adc r10,rdx
|
|
mul r14
|
|
add r9,rax
|
|
mov rax,r12
|
|
adc r10,rdx
|
|
mul rbx
|
|
add r9,rax
|
|
mov rax,QWORD[((-32))+rsp]
|
|
adc r10,rdx
|
|
mul r13
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rax,rsi
|
|
adc rdx,rdi
|
|
mov rsi,rax
|
|
mov QWORD[136+rsp],rax
|
|
shrd rsi,rdx,51
|
|
mov rdi,QWORD[((-72))+rsp]
|
|
lea rax,[rsi*8+rsi]
|
|
lea rax,[rax*2+rsi]
|
|
mov rsi,18014398509481832
|
|
add rdi,rax
|
|
lea rax,[r11*1+rsi]
|
|
add rsi,144
|
|
mov r9,rdi
|
|
add rsi,QWORD[((-56))+rsp]
|
|
mov QWORD[144+rsp],rdi
|
|
shr r9,51
|
|
add r9,QWORD[((-24))+rsp]
|
|
sub rsi,rbx
|
|
mov r10,r9
|
|
mov rbx,rsi
|
|
mov QWORD[152+rsp],r9
|
|
shr r10,51
|
|
mov rsi,18014398509481976
|
|
add r10,r8
|
|
mov r8,rax
|
|
mov QWORD[8+rsp],r10
|
|
add rsi,QWORD[((-32))+rsp]
|
|
sub r8,rbp
|
|
mov rbp,r8
|
|
mov r8,rsi
|
|
mov rsi,18014398509481976
|
|
lea r11,[r12*1+rsi]
|
|
lea rax,[rsi*1+r15]
|
|
sub rax,QWORD[((-88))+rsp]
|
|
sub r8,r13
|
|
mov QWORD[((-88))+rsp],rbp
|
|
mov r12,QWORD[((-120))+rsp]
|
|
mov r13,r8
|
|
mov r8,r11
|
|
sub r8,r14
|
|
mov QWORD[((-72))+rsp],r13
|
|
mov r14,r8
|
|
mov r8,rax
|
|
mov eax,121665
|
|
mul rbp
|
|
mov QWORD[((-24))+rsp],r14
|
|
mov r11,rax
|
|
mov rsi,rax
|
|
mov eax,121665
|
|
mov rdi,rdx
|
|
shrd rsi,rdx,51
|
|
mul rbx
|
|
shr rdi,51
|
|
add rsi,rax
|
|
mov eax,121665
|
|
adc rdi,rdx
|
|
mov QWORD[168+rsp],rsi
|
|
mul r13
|
|
mov QWORD[176+rsp],rdi
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
mov r10,rdi
|
|
mov rdi,rax
|
|
mov rbp,rdx
|
|
mov eax,121665
|
|
add rdi,rsi
|
|
adc rbp,r10
|
|
mov r9,rdi
|
|
mul r14
|
|
mov r10,rbp
|
|
shrd r9,rbp,51
|
|
shr r10,51
|
|
add r9,rax
|
|
mov eax,121665
|
|
adc r10,rdx
|
|
mov r13,r9
|
|
mul r8
|
|
mov r14,r10
|
|
shrd r13,r10,51
|
|
shr r14,51
|
|
add r13,rax
|
|
adc r14,rdx
|
|
mov rax,r13
|
|
and r11,rcx
|
|
shrd rax,r14,51
|
|
add r11,QWORD[((-104))+rsp]
|
|
and rdi,rcx
|
|
add rdi,QWORD[((-32))+rsp]
|
|
lea rdx,[rax*8+rax]
|
|
lea rax,[rdx*2+rax]
|
|
lea rsi,[rax*1+r11]
|
|
mov r11,r9
|
|
mov r9,QWORD[((-88))+rsp]
|
|
and r11,rcx
|
|
lea rbp,[r12*1+r11]
|
|
mov r11,r13
|
|
mov QWORD[((-104))+rsp],rsi
|
|
and r11,rcx
|
|
mov rsi,QWORD[168+rsp]
|
|
add r15,r11
|
|
lea rax,[r15*8+r15]
|
|
and rsi,rcx
|
|
add rsi,QWORD[((-56))+rsp]
|
|
lea r14,[rax*2+r15]
|
|
lea rax,[rdi*8+rdi]
|
|
lea r11,[rax*2+rdi]
|
|
lea rax,[rbp*8+rbp]
|
|
lea r13,[rax*2+rbp]
|
|
lea rax,[rsi*8+rsi]
|
|
mov r10,r11
|
|
mov QWORD[((-56))+rsp],r10
|
|
lea r11,[rax*2+rsi]
|
|
mov rax,r11
|
|
mul r8
|
|
mov r11,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
mov r12,rdx
|
|
mul r10
|
|
add r11,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
adc r12,rdx
|
|
mul r13
|
|
add r11,rax
|
|
mov rax,r9
|
|
adc r12,rdx
|
|
mul QWORD[((-104))+rsp]
|
|
add r11,rax
|
|
mov rax,rbx
|
|
adc r12,rdx
|
|
mul r14
|
|
add r11,rax
|
|
mov rax,r11
|
|
adc r12,rdx
|
|
and rax,rcx
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,r9
|
|
mul rsi
|
|
mov r9,rax
|
|
mov rax,QWORD[((-56))+rsp]
|
|
mov r10,rdx
|
|
mul r8
|
|
add r9,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
adc r10,rdx
|
|
mul r13
|
|
add r9,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc r10,rdx
|
|
mul rbx
|
|
add r9,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
adc r10,rdx
|
|
mul r14
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd r11,r12,51
|
|
shr r12,51
|
|
mov r9,r11
|
|
mov r10,r12
|
|
add r9,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc r10,rdx
|
|
mov r12,r9
|
|
and r12,rcx
|
|
mul rdi
|
|
mov QWORD[((-32))+rsp],r12
|
|
mov r11,rax
|
|
mov rax,rbx
|
|
mov r12,rdx
|
|
mul rsi
|
|
add r11,rax
|
|
mov rax,r13
|
|
adc r12,rdx
|
|
mul r8
|
|
add r11,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
adc r12,rdx
|
|
mul QWORD[((-104))+rsp]
|
|
add r11,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
adc r12,rdx
|
|
mul r14
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add r9,rax
|
|
mov rax,rbx
|
|
adc r10,rdx
|
|
mov r11,r9
|
|
mul rdi
|
|
and r11,rcx
|
|
mov QWORD[((-48))+rsp],r10
|
|
mov r13,r11
|
|
mov r11,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
mov r12,rdx
|
|
mul rsi
|
|
add r11,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc r12,rdx
|
|
mul rbp
|
|
add r11,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
adc r12,rdx
|
|
mul QWORD[((-104))+rsp]
|
|
add r11,rax
|
|
mov rax,r14
|
|
adc r12,rdx
|
|
mul r8
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add r9,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
adc r10,rdx
|
|
mov r14,r9
|
|
mul rsi
|
|
mov r11,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
mov r12,rdx
|
|
mul rdi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,rbx
|
|
add rsi,r11
|
|
adc rdi,r12
|
|
mul rbp
|
|
mov rbp,QWORD[104+rsp]
|
|
add rsi,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rdi,rdx
|
|
mul r15
|
|
mov r15,QWORD[144+rsp]
|
|
add rsi,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rdi,rdx
|
|
mul r8
|
|
mov r8,QWORD[152+rsp]
|
|
add rsi,rax
|
|
adc rdi,rdx
|
|
mov rdx,QWORD[216+rsp]
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add rsi,r9
|
|
adc rdi,r10
|
|
mov rbx,rsi
|
|
mov r10,QWORD[128+rsp]
|
|
shrd rsi,rdi,51
|
|
lea rax,[rsi*8+rsi]
|
|
lea r12,[rax*2+rsi]
|
|
add r12,QWORD[((-120))+rsp]
|
|
mov rsi,QWORD[208+rsp]
|
|
mov rax,r10
|
|
and rax,rcx
|
|
mov r9,rsi
|
|
and rsi,rcx
|
|
mov r11,r12
|
|
xor r9,r15
|
|
and r15,rcx
|
|
shr r11,51
|
|
add r11,QWORD[((-32))+rsp]
|
|
and r9,rax
|
|
xor rsi,r9
|
|
xor r15,r9
|
|
mov QWORD[rbp],rsi
|
|
mov QWORD[((-88))+rsp],rsi
|
|
mov rsi,rdx
|
|
xor rsi,r8
|
|
and r8,rcx
|
|
and rdx,rcx
|
|
mov rdi,r11
|
|
and rsi,rax
|
|
mov r9,r8
|
|
shr rdi,51
|
|
xor r9,rsi
|
|
xor rsi,rdx
|
|
add rdi,r13
|
|
mov r13,QWORD[232+rsp]
|
|
mov rdx,QWORD[280+rsp]
|
|
mov QWORD[((-56))+rsp],r9
|
|
mov QWORD[8+rbp],rsi
|
|
mov QWORD[8+r13],r9
|
|
mov r9,QWORD[8+rsp]
|
|
mov QWORD[r13],r15
|
|
xor r9,rdx
|
|
mov r8,r9
|
|
and r8,r10
|
|
mov r10,QWORD[8+rsp]
|
|
mov r9,r8
|
|
xor r9,rdx
|
|
xor r10,r8
|
|
mov rdx,r9
|
|
mov r8,QWORD[160+rsp]
|
|
mov QWORD[16+rbp],rdx
|
|
mov QWORD[((-24))+rsp],r9
|
|
mov r9,rbp
|
|
mov rbp,QWORD[40+rsp]
|
|
mov QWORD[16+r13],r10
|
|
mov rdx,r8
|
|
and r8,rcx
|
|
xor rdx,rbp
|
|
and rbp,rcx
|
|
and rdx,rax
|
|
xor rbp,rdx
|
|
xor r8,rdx
|
|
mov rdx,r9
|
|
mov QWORD[24+r13],rbp
|
|
mov QWORD[24+rdx],r8
|
|
mov QWORD[((-72))+rsp],rbp
|
|
mov QWORD[40+rsp],r8
|
|
mov r9,QWORD[272+rsp]
|
|
mov rbp,QWORD[136+rsp]
|
|
mov rdx,r9
|
|
xor rdx,rbp
|
|
mov r8,rdx
|
|
mov rdx,rbp
|
|
mov rbp,QWORD[((-8))+rsp]
|
|
and r8,rax
|
|
and rdx,rcx
|
|
xor rdx,r8
|
|
mov QWORD[32+r13],rdx
|
|
mov QWORD[((-32))+rsp],rdx
|
|
mov r13,r9
|
|
mov rdx,QWORD[104+rsp]
|
|
mov r9,QWORD[56+rsp]
|
|
and r13,rcx
|
|
xor r13,r8
|
|
mov r8,2251799813685247
|
|
mov QWORD[((-120))+rsp],r13
|
|
mov QWORD[32+rdx],r13
|
|
mov rdx,r9
|
|
and r8,r9
|
|
xor rdx,r12
|
|
mov r9,r8
|
|
mov r13,2251799813685247
|
|
and rdx,rax
|
|
and r12,r13
|
|
mov r8,2251799813685247
|
|
xor r9,rdx
|
|
xor r12,rdx
|
|
mov r13,QWORD[88+rsp]
|
|
mov QWORD[rbp],r9
|
|
mov QWORD[((-104))+rsp],r9
|
|
mov r9,QWORD[296+rsp]
|
|
mov QWORD[r13],r12
|
|
mov rdx,r9
|
|
xor rdx,r11
|
|
and r11,r8
|
|
and rdx,rax
|
|
xor r11,rdx
|
|
mov QWORD[8+r13],r11
|
|
mov r13,r8
|
|
and r13,r9
|
|
mov r9,QWORD[88+rsp]
|
|
xor rdx,r13
|
|
mov QWORD[8+rbp],rdx
|
|
mov rbp,QWORD[304+rsp]
|
|
mov r13,rbp
|
|
xor r13,rdi
|
|
and r13,QWORD[128+rsp]
|
|
mov r8,r13
|
|
xor rdi,r13
|
|
xor r8,rbp
|
|
mov rbp,QWORD[72+rsp]
|
|
mov QWORD[16+r9],rdi
|
|
mov r13,r8
|
|
mov QWORD[56+rsp],r8
|
|
mov r8,QWORD[((-8))+rsp]
|
|
mov QWORD[16+r8],r13
|
|
mov r13,QWORD[72+rsp]
|
|
mov r8,2251799813685247
|
|
and rbp,r8
|
|
xor r13,r14
|
|
and r14,r8
|
|
mov r8,QWORD[((-8))+rsp]
|
|
and r13,rax
|
|
xor r14,r13
|
|
xor r13,rbp
|
|
mov rbp,QWORD[288+rsp]
|
|
mov QWORD[24+r8],r13
|
|
mov QWORD[24+r9],r14
|
|
mov r8,rbp
|
|
xor r8,rbx
|
|
and r8,rax
|
|
mov rax,2251799813685247
|
|
and rbx,rax
|
|
and rax,rbp
|
|
xor rbx,r8
|
|
xor rax,r8
|
|
mov r8,QWORD[((-8))+rsp]
|
|
mov QWORD[32+r9],rbx
|
|
mov QWORD[32+r8],rax
|
|
sal BYTE[315+rsp],1
|
|
sub DWORD[316+rsp],1
|
|
jne NEAR $L$10
|
|
mov r9,rdx
|
|
mov rdx,QWORD[88+rsp]
|
|
mov QWORD[72+rsp],r15
|
|
mov r15,rsi
|
|
mov rsi,QWORD[104+rsp]
|
|
mov rbp,QWORD[((-72))+rsp]
|
|
sub QWORD[344+rsp],1
|
|
mov r8,rax
|
|
mov QWORD[8+rsp],rdx
|
|
mov rdx,QWORD[248+rsp]
|
|
mov QWORD[((-72))+rsp],rsi
|
|
mov rsi,QWORD[232+rsp]
|
|
mov rax,QWORD[344+rsp]
|
|
mov QWORD[104+rsp],rdx
|
|
mov rdx,QWORD[240+rsp]
|
|
mov QWORD[232+rsp],rdx
|
|
mov rdx,QWORD[256+rsp]
|
|
mov QWORD[88+rsp],rdx
|
|
lea rdx,[359+rsp]
|
|
cmp rdx,rax
|
|
jne NEAR $L$3
|
|
lea rax,[rbx*8+rbx]
|
|
mov QWORD[184+rsp],rbp
|
|
mov r8,rbx
|
|
mov r15,r14
|
|
mov r13,r11
|
|
mov r11,r12
|
|
lea rbp,[rax*2+rbx]
|
|
lea rax,[rdi*8+rdi]
|
|
mov QWORD[168+rsp],r10
|
|
mov r9,rdi
|
|
lea r14,[r12*1+r12]
|
|
lea r12,[r13*1+r13]
|
|
lea rax,[rax*2+rdi]
|
|
lea r10,[rbp*1+rbp]
|
|
lea rbx,[rax*1+rax]
|
|
mov QWORD[56+rsp],rax
|
|
mov rax,rbx
|
|
mul r15
|
|
mov rcx,rax
|
|
mov rax,r11
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,r10
|
|
adc rbx,rdx
|
|
mul r13
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
lea rax,[r15*8+r15]
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov QWORD[((-120))+rsp],rsi
|
|
mov rbx,2251799813685247
|
|
mov rcx,rdi
|
|
lea rdi,[rax*2+r15]
|
|
mov rax,r13
|
|
mul r14
|
|
and rbx,QWORD[((-120))+rsp]
|
|
mov QWORD[((-112))+rsp],rcx
|
|
mov rsi,QWORD[((-120))+rsp]
|
|
mov QWORD[8+rsp],rdi
|
|
mov rcx,rax
|
|
mov rax,rdi
|
|
mov QWORD[((-104))+rsp],rbx
|
|
mov rbx,rdx
|
|
mov rdi,QWORD[((-112))+rsp]
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,r10
|
|
adc rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
mov rcx,2251799813685247
|
|
adc rdi,rbx
|
|
and rcx,rsi
|
|
mul r9
|
|
mov QWORD[((-88))+rsp],rcx
|
|
mov rcx,rax
|
|
mov rax,r13
|
|
mov rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,r10
|
|
mov r10,2251799813685247
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
mov rsi,2251799813685247
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,r15
|
|
and rsi,QWORD[((-120))+rsp]
|
|
mul r14
|
|
mov QWORD[((-112))+rsp],rdi
|
|
mov rdi,QWORD[((-112))+rsp]
|
|
mov QWORD[((-72))+rsp],rsi
|
|
mov rsi,QWORD[((-120))+rsp]
|
|
mov rcx,rax
|
|
mov rax,r9
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,r14
|
|
mov r14,2251799813685247
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
and r10,rsi
|
|
mul r8
|
|
mov rcx,rax
|
|
mov rax,r12
|
|
mov rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,r9
|
|
adc rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov rcx,rsi
|
|
mov rbx,2251799813685247
|
|
shrd rcx,rdi,51
|
|
and r14,rsi
|
|
mov rsi,2251799813685247
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[((-104))+rsp]
|
|
and rbx,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-88))+rsp]
|
|
mov QWORD[((-24))+rsp],rbx
|
|
lea r12,[rbx*1+rbx]
|
|
and rsi,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-72))+rsp]
|
|
lea rcx,[rsi*1+rsi]
|
|
mov QWORD[((-88))+rsp],rcx
|
|
mov QWORD[((-120))+rsp],rax
|
|
lea rax,[r14*8+r14]
|
|
lea rcx,[rax*2+r14]
|
|
mov rax,rsi
|
|
lea rdi,[rcx*1+rcx]
|
|
mov QWORD[80+rsp],rcx
|
|
mul rdi
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
mov rbx,rdx
|
|
mul rax
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov rdx,QWORD[((-120))+rsp]
|
|
lea rax,[rdx*8+rdx]
|
|
lea rdx,[rax*2+rdx]
|
|
lea rax,[rdx*1+rdx]
|
|
mov QWORD[88+rsp],rdx
|
|
mul r10
|
|
add rcx,rax
|
|
lea rax,[r10*8+r10]
|
|
adc rbx,rdx
|
|
mov rdx,rcx
|
|
lea rax,[rax*2+r10]
|
|
mov rcx,rbx
|
|
mov QWORD[((-104))+rsp],rdx
|
|
mov QWORD[((-96))+rsp],rcx
|
|
mov rbx,rax
|
|
mov rax,2251799813685247
|
|
and rax,QWORD[((-104))+rsp]
|
|
mov QWORD[128+rsp],rbx
|
|
mov QWORD[24+rsp],rax
|
|
mov rax,rbx
|
|
mul r10
|
|
mov rcx,rax
|
|
mov rax,r12
|
|
mov rbx,rdx
|
|
mul rsi
|
|
add rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mov rdx,QWORD[((-96))+rsp]
|
|
shrd rax,rdx,51
|
|
shr rdx,51
|
|
add rcx,rax
|
|
mov rax,rdi
|
|
mov rdi,QWORD[((-120))+rsp]
|
|
adc rbx,rdx
|
|
mov QWORD[((-104))+rsp],rcx
|
|
mov rdx,rbx
|
|
mov rbx,2251799813685247
|
|
and rbx,QWORD[((-104))+rsp]
|
|
mov QWORD[((-96))+rsp],rdx
|
|
mul r10
|
|
mov QWORD[((-8))+rsp],rbx
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
mov rbx,rdx
|
|
mul rsi
|
|
add rcx,rax
|
|
mov rax,rdi
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mov rdx,QWORD[((-96))+rsp]
|
|
shrd rax,rdx,51
|
|
shr rdx,51
|
|
add rcx,rax
|
|
mov rax,QWORD[80+rsp]
|
|
adc rbx,rdx
|
|
mov QWORD[((-104))+rsp],rcx
|
|
mov rdx,rbx
|
|
mov rbx,2251799813685247
|
|
and rbx,QWORD[((-104))+rsp]
|
|
mov QWORD[((-96))+rsp],rdx
|
|
mul r14
|
|
mov QWORD[((-72))+rsp],rbx
|
|
mov rcx,rax
|
|
mov rax,r12
|
|
mov rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rbx,rdx
|
|
mul rdi
|
|
mov rdi,2251799813685247
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-104))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-96))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov QWORD[((-104))+rsp],rcx
|
|
and rdi,QWORD[((-104))+rsp]
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov rbx,QWORD[((-120))+rsp]
|
|
mov rax,rbx
|
|
mul rbx
|
|
mov QWORD[40+rsp],rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
mov QWORD[48+rsp],rdx
|
|
mul r10
|
|
mov rcx,rdx
|
|
mov rdx,rax
|
|
add rdx,QWORD[40+rsp]
|
|
adc rcx,QWORD[48+rsp]
|
|
mov rax,r12
|
|
mov rbx,rcx
|
|
mov rcx,rdx
|
|
mul r14
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-104))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-96))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov rdx,2251799813685247
|
|
and rdx,rcx
|
|
shrd rcx,rbx,51
|
|
mov QWORD[((-88))+rsp],rdx
|
|
mov rdx,2251799813685247
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[24+rsp]
|
|
mov rcx,2251799813685247
|
|
and rcx,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-8))+rsp]
|
|
mov r12,QWORD[((-72))+rsp]
|
|
and rdx,rax
|
|
shr rax,51
|
|
add r12,rax
|
|
lea rax,[rcx*1+rcx]
|
|
mov QWORD[((-8))+rsp],rdx
|
|
mov QWORD[((-104))+rsp],rax
|
|
lea rax,[rdx*1+rdx]
|
|
mov rdx,QWORD[((-88))+rsp]
|
|
mov QWORD[24+rsp],rax
|
|
lea rax,[rdx*8+rdx]
|
|
lea rax,[rax*2+rdx]
|
|
mov QWORD[136+rsp],rax
|
|
add rax,rax
|
|
mov QWORD[((-72))+rsp],rax
|
|
mov rax,rcx
|
|
mul rcx
|
|
mov rcx,rax
|
|
mov rbx,rdx
|
|
mov rax,QWORD[((-72))+rsp]
|
|
mul QWORD[((-8))+rsp]
|
|
add rcx,rax
|
|
lea rax,[r12*8+r12]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+r12]
|
|
add rax,rax
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov rcx,2251799813685247
|
|
mov QWORD[40+rsp],rax
|
|
lea rax,[rdi*8+rdi]
|
|
mov QWORD[48+rsp],rbx
|
|
and rcx,QWORD[40+rsp]
|
|
lea rbx,[rax*2+rdi]
|
|
mov rax,rbx
|
|
mul rdi
|
|
mov QWORD[104+rsp],rcx
|
|
mov rbx,rdx
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-8))+rsp]
|
|
mul QWORD[((-104))+rsp]
|
|
add rcx,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rax,rcx
|
|
mov rcx,QWORD[40+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[48+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov rax,rcx
|
|
mov rcx,2251799813685247
|
|
mov QWORD[48+rsp],rbx
|
|
mov rbx,QWORD[((-8))+rsp]
|
|
mov QWORD[40+rsp],rax
|
|
and rcx,QWORD[40+rsp]
|
|
mov rax,rbx
|
|
mul rbx
|
|
mov QWORD[120+rsp],rcx
|
|
mov QWORD[((-8))+rsp],rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
mov QWORD[rsp],rdx
|
|
mul rdi
|
|
add rax,QWORD[((-8))+rsp]
|
|
adc rdx,QWORD[rsp]
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rax,rcx
|
|
mov rcx,QWORD[40+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[48+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mov QWORD[((-72))+rsp],rcx
|
|
mov rdx,rbx
|
|
mov rbx,2251799813685247
|
|
and rbx,QWORD[((-72))+rsp]
|
|
mov QWORD[((-64))+rsp],rdx
|
|
mul rdi
|
|
mov QWORD[40+rsp],rbx
|
|
mov QWORD[((-8))+rsp],rax
|
|
mov QWORD[rsp],rdx
|
|
mov rax,QWORD[136+rsp]
|
|
mul QWORD[((-88))+rsp]
|
|
add rax,QWORD[((-8))+rsp]
|
|
adc rdx,QWORD[rsp]
|
|
mov rcx,rax
|
|
mov rax,QWORD[24+rsp]
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-72))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-64))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,2251799813685247
|
|
adc rbx,rdx
|
|
mov QWORD[((-72))+rsp],rcx
|
|
and rax,QWORD[((-72))+rsp]
|
|
mov QWORD[((-64))+rsp],rbx
|
|
mov QWORD[((-8))+rsp],rax
|
|
mov rax,QWORD[24+rsp]
|
|
mul rdi
|
|
mov QWORD[24+rsp],rax
|
|
mov rax,r12
|
|
mov QWORD[32+rsp],rdx
|
|
mul r12
|
|
mov r12,2251799813685247
|
|
mov rcx,rdx
|
|
mov rdx,rax
|
|
add rdx,QWORD[24+rsp]
|
|
adc rcx,QWORD[32+rsp]
|
|
mov rax,QWORD[((-104))+rsp]
|
|
mov rbx,rcx
|
|
mov rcx,rdx
|
|
mul QWORD[((-88))+rsp]
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-72))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-64))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov rdx,2251799813685247
|
|
and rdx,rcx
|
|
shrd rcx,rbx,51
|
|
mov rdi,rdx
|
|
mov rdx,2251799813685247
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[104+rsp]
|
|
and r12,rax
|
|
shr rax,51
|
|
add rax,QWORD[120+rsp]
|
|
and rdx,rax
|
|
shr rax,51
|
|
mov QWORD[((-104))+rsp],rdx
|
|
add rax,QWORD[40+rsp]
|
|
mov QWORD[((-72))+rsp],rdi
|
|
mov QWORD[((-88))+rsp],rax
|
|
lea rax,[r13*8+r13]
|
|
lea rbx,[rax*2+r13]
|
|
mov rax,rbx
|
|
mul rdi
|
|
mov rdi,QWORD[((-8))+rsp]
|
|
mov rcx,rax
|
|
mov rbx,rdx
|
|
mov rax,rdi
|
|
mul QWORD[56+rsp]
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[8+rsp]
|
|
adc rbx,rdx
|
|
mul QWORD[((-88))+rsp]
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov rcx,2251799813685247
|
|
mov QWORD[((-8))+rsp],rax
|
|
mov rax,QWORD[56+rsp]
|
|
mul QWORD[((-72))+rsp]
|
|
and rcx,QWORD[((-8))+rsp]
|
|
mov QWORD[rsp],rbx
|
|
mov QWORD[24+rsp],rcx
|
|
mov rcx,rax
|
|
mov rax,QWORD[8+rsp]
|
|
mov rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-8))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,2251799813685247
|
|
adc rbx,rdx
|
|
mov QWORD[((-8))+rsp],rcx
|
|
and rax,QWORD[((-8))+rsp]
|
|
mov QWORD[rsp],rbx
|
|
mov QWORD[40+rsp],rax
|
|
mov rax,rdi
|
|
mul rbp
|
|
mov QWORD[56+rsp],rax
|
|
mov QWORD[64+rsp],rdx
|
|
mov rax,QWORD[8+rsp]
|
|
mul QWORD[((-72))+rsp]
|
|
add rax,QWORD[56+rsp]
|
|
adc rdx,QWORD[64+rsp]
|
|
mov rcx,rax
|
|
mov rax,r9
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rax,rcx
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,rdx
|
|
mul r13
|
|
add rax,rcx
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-8))+rsp]
|
|
mov QWORD[((-8))+rsp],rdi
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,2251799813685247
|
|
mov QWORD[8+rsp],rcx
|
|
adc rbx,rdx
|
|
and rax,QWORD[8+rsp]
|
|
mov QWORD[16+rsp],rbx
|
|
mov QWORD[56+rsp],rax
|
|
mov rax,rdi
|
|
mul r11
|
|
mov QWORD[104+rsp],rax
|
|
mov QWORD[112+rsp],rdx
|
|
mov rax,rbp
|
|
mul QWORD[((-72))+rsp]
|
|
mov rcx,QWORD[104+rsp]
|
|
mov rbx,QWORD[112+rsp]
|
|
add rcx,rax
|
|
mov rax,r15
|
|
adc rbx,rdx
|
|
mov rdi,rcx
|
|
mov rcx,QWORD[8+rsp]
|
|
mul r12
|
|
mov rbp,rbx
|
|
mov rbx,QWORD[16+rsp]
|
|
add rdi,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbp,rdx
|
|
mul r9
|
|
add rdi,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rbp,rdx
|
|
mul r13
|
|
add rax,rdi
|
|
mov rdi,2251799813685247
|
|
adc rdx,rbp
|
|
mov rbp,2251799813685247
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
adc rbx,rdx
|
|
mov QWORD[8+rsp],rcx
|
|
and rbp,QWORD[8+rsp]
|
|
mov QWORD[16+rsp],rbx
|
|
mul r11
|
|
mov QWORD[((-72))+rsp],rax
|
|
mov rax,QWORD[((-8))+rsp]
|
|
mov QWORD[((-64))+rsp],rdx
|
|
mul r13
|
|
add rax,QWORD[((-72))+rsp]
|
|
adc rdx,QWORD[((-64))+rsp]
|
|
mov rcx,rax
|
|
mov rax,r8
|
|
mov rbx,rdx
|
|
mov r11,rcx
|
|
mov rcx,QWORD[8+rsp]
|
|
mul r12
|
|
mov r12,rbx
|
|
mov rbx,QWORD[16+rsp]
|
|
add r11,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc r12,rdx
|
|
mul r15
|
|
add r11,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc r12,rdx
|
|
mul r9
|
|
add rax,r11
|
|
mov r11,2251799813685247
|
|
adc rdx,r12
|
|
mov r12,2251799813685247
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
and r12,rax
|
|
shrd rax,rdx,51
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[24+rsp]
|
|
and r11,rax
|
|
shr rax,51
|
|
add rax,QWORD[40+rsp]
|
|
mov r8,QWORD[56+rsp]
|
|
mov r13,QWORD[80+rsp]
|
|
mov r15,QWORD[128+rsp]
|
|
and rdi,rax
|
|
shr rax,51
|
|
add r8,rax
|
|
lea rax,[rsi*8+rsi]
|
|
lea r9,[rax*2+rsi]
|
|
mov rax,r9
|
|
mov r9,QWORD[((-24))+rsp]
|
|
mul r12
|
|
mov rcx,rax
|
|
mov rax,QWORD[88+rsp]
|
|
mov rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,r9
|
|
adc rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,r15
|
|
adc rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,2251799813685247
|
|
mov QWORD[((-104))+rsp],rcx
|
|
adc rbx,rdx
|
|
and rax,QWORD[((-104))+rsp]
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov QWORD[((-88))+rsp],rax
|
|
mov rax,QWORD[88+rsp]
|
|
mul r12
|
|
mov rcx,rax
|
|
mov rax,r15
|
|
mov rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rcx,rax
|
|
mov rax,r9
|
|
adc rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul r8
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-104))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-96))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov rcx,2251799813685247
|
|
mov QWORD[((-104))+rsp],rax
|
|
mov rax,r13
|
|
and rcx,QWORD[((-104))+rsp]
|
|
mul rbp
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov QWORD[((-72))+rsp],rcx
|
|
mov QWORD[((-24))+rsp],rax
|
|
mov rax,r15
|
|
mov QWORD[((-16))+rsp],rdx
|
|
mul r12
|
|
mov r15,QWORD[((-120))+rsp]
|
|
mov rcx,rax
|
|
mov rax,r15
|
|
add rcx,QWORD[((-24))+rsp]
|
|
mov rbx,rdx
|
|
adc rbx,QWORD[((-16))+rsp]
|
|
mul r11
|
|
add rax,rcx
|
|
mov QWORD[((-120))+rsp],rax
|
|
adc rdx,rbx
|
|
mov rax,rdi
|
|
mov QWORD[((-112))+rsp],rdx
|
|
mul rsi
|
|
mov rcx,rax
|
|
mov rax,r9
|
|
add rcx,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
adc rbx,QWORD[((-112))+rsp]
|
|
mul r8
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-104))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-96))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,r9
|
|
adc rbx,rdx
|
|
mov QWORD[((-120))+rsp],rcx
|
|
mov rdx,2251799813685247
|
|
and rdx,QWORD[((-120))+rsp]
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mov QWORD[((-104))+rsp],rdx
|
|
mul rbp
|
|
mov QWORD[((-24))+rsp],rax
|
|
mov rax,r13
|
|
mov QWORD[((-16))+rsp],rdx
|
|
mul r12
|
|
mov r13,2251799813685247
|
|
mov rcx,rax
|
|
mov rax,r11
|
|
add rcx,QWORD[((-24))+rsp]
|
|
mov rbx,rdx
|
|
adc rbx,QWORD[((-16))+rsp]
|
|
mul r10
|
|
add rax,rcx
|
|
mov QWORD[((-24))+rsp],rax
|
|
adc rdx,rbx
|
|
mov rax,r15
|
|
mov QWORD[((-16))+rsp],rdx
|
|
mul rdi
|
|
mov rcx,rax
|
|
mov rax,r8
|
|
add rcx,QWORD[((-24))+rsp]
|
|
mov rbx,rdx
|
|
adc rbx,QWORD[((-16))+rsp]
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,r9
|
|
mov r9,2251799813685247
|
|
adc rbx,rdx
|
|
mov QWORD[((-120))+rsp],rcx
|
|
and r13,QWORD[((-120))+rsp]
|
|
mul r12
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
mov QWORD[24+rsp],r13
|
|
mov QWORD[((-24))+rsp],rax
|
|
mov rax,rsi
|
|
mov QWORD[((-16))+rsp],rdx
|
|
mul rbp
|
|
mov rbx,rax
|
|
mov rax,r14
|
|
add rbx,QWORD[((-24))+rsp]
|
|
mov rsi,rdx
|
|
adc rsi,QWORD[((-16))+rsp]
|
|
mul r11
|
|
add rbx,rax
|
|
mov rax,r10
|
|
adc rsi,rdx
|
|
mov r13,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
mul rdi
|
|
mov r14,rsi
|
|
add r13,rax
|
|
mov rax,r15
|
|
mov r15,QWORD[24+rsp]
|
|
adc r14,rdx
|
|
mul r8
|
|
add rax,r13
|
|
adc rdx,r14
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov rdx,2251799813685247
|
|
and rdx,rcx
|
|
shrd rcx,rbx,51
|
|
mov rbx,2251799813685247
|
|
mov QWORD[224+rsp],rdx
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[((-88))+rsp]
|
|
and rbx,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-72))+rsp]
|
|
lea rsi,[rbx*1+rbx]
|
|
mov QWORD[128+rsp],rbx
|
|
and r9,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-104))+rsp]
|
|
mov QWORD[136+rsp],r9
|
|
lea r14,[r9*1+r9]
|
|
mov r10,rax
|
|
lea rax,[rdx*8+rdx]
|
|
mov QWORD[80+rsp],r10
|
|
lea rax,[rax*2+rdx]
|
|
lea r13,[rax*1+rax]
|
|
mov QWORD[192+rsp],rax
|
|
mov rax,rbx
|
|
mul rbx
|
|
mov rcx,rax
|
|
mov rax,r9
|
|
mov rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
lea rax,[r10*8+r10]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+r10]
|
|
add rax,rax
|
|
mul r15
|
|
add rcx,rax
|
|
lea rax,[r15*8+r15]
|
|
adc rbx,rdx
|
|
mov r9,rcx
|
|
mov rcx,2251799813685247
|
|
mov r10,rbx
|
|
lea rbx,[rax*2+r15]
|
|
and rcx,r9
|
|
mov r15,rcx
|
|
mov QWORD[216+rsp],rbx
|
|
mov rax,QWORD[136+rsp]
|
|
mul rsi
|
|
mov rcx,rax
|
|
mov rbx,rdx
|
|
mov rax,QWORD[24+rsp]
|
|
mul QWORD[216+rsp]
|
|
add rcx,rax
|
|
mov rax,QWORD[80+rsp]
|
|
adc rbx,rdx
|
|
mul r13
|
|
add rax,rcx
|
|
mov rcx,r9
|
|
mov r9,QWORD[136+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,r10
|
|
shrd rcx,r10,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,r9
|
|
adc rbx,rdx
|
|
mov QWORD[((-120))+rsp],rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
mov rdx,rbx
|
|
mov rbx,2251799813685247
|
|
and rbx,QWORD[((-120))+rsp]
|
|
mov QWORD[((-112))+rsp],rdx
|
|
mul r9
|
|
mov QWORD[((-104))+rsp],rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
mov r9,rax
|
|
mov rax,r13
|
|
mov r13,QWORD[24+rsp]
|
|
mov r10,rdx
|
|
mul r13
|
|
add r9,rax
|
|
mov rax,QWORD[80+rsp]
|
|
adc r10,rdx
|
|
mul rsi
|
|
add r9,rax
|
|
mov rax,r13
|
|
adc r10,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add r9,rcx
|
|
mov rcx,2251799813685247
|
|
adc r10,rbx
|
|
and rcx,r9
|
|
mul rsi
|
|
mov QWORD[((-120))+rsp],rcx
|
|
mov rbx,rdx
|
|
mov rcx,rax
|
|
mov rax,QWORD[224+rsp]
|
|
mul QWORD[192+rsp]
|
|
add rcx,rax
|
|
mov rax,QWORD[80+rsp]
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add r9,rax
|
|
mov rax,2251799813685247
|
|
adc r10,rdx
|
|
and rax,r9
|
|
mov r13,rax
|
|
mov rax,r14
|
|
mov r14,QWORD[80+rsp]
|
|
mul QWORD[24+rsp]
|
|
mov rcx,rax
|
|
mov rax,r14
|
|
mov rbx,rdx
|
|
mul r14
|
|
mov r14,2251799813685247
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
mov rsi,2251799813685247
|
|
adc rbx,rdx
|
|
mul QWORD[224+rsp]
|
|
add rax,rcx
|
|
mov rcx,r9
|
|
adc rdx,rbx
|
|
mov rbx,r10
|
|
shrd rcx,r10,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
and rsi,rax
|
|
mov rbx,QWORD[((-104))+rsp]
|
|
shrd rax,rdx,51
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea rax,[rax*2+rcx]
|
|
add r15,rax
|
|
and r14,r15
|
|
shr r15,51
|
|
lea rax,[rbx*1+r15]
|
|
mov r15,2251799813685247
|
|
and r15,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-120))+rsp]
|
|
mov r10,rax
|
|
lea rax,[r12*8+r12]
|
|
mov QWORD[((-120))+rsp],r10
|
|
lea r9,[rax*2+r12]
|
|
lea rax,[r8*8+r8]
|
|
lea rax,[rax*2+r8]
|
|
mov QWORD[((-104))+rsp],r9
|
|
mov QWORD[((-72))+rsp],rax
|
|
lea rax,[rbp*8+rbp]
|
|
lea rax,[rax*2+rbp]
|
|
mov QWORD[((-88))+rsp],rax
|
|
lea rax,[rdi*8+rdi]
|
|
lea rbx,[rax*2+rdi]
|
|
mov rax,rbx
|
|
mul rsi
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
mov rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r9
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,r10
|
|
adc rbx,rdx
|
|
mul QWORD[((-88))+rsp]
|
|
add rcx,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
adc rbx,rdx
|
|
mov r9,rcx
|
|
mov r10,rbx
|
|
mov rbx,2251799813685247
|
|
mul rsi
|
|
and rbx,rcx
|
|
mov QWORD[((-24))+rsp],rbx
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
mov rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,rdi
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc rbx,rdx
|
|
mul QWORD[((-104))+rsp]
|
|
add rax,rcx
|
|
mov rcx,r9
|
|
adc rdx,rbx
|
|
mov rbx,r10
|
|
shrd rcx,r10,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov rcx,2251799813685247
|
|
mov QWORD[((-72))+rsp],rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
and rcx,QWORD[((-72))+rsp]
|
|
mov QWORD[((-64))+rsp],rbx
|
|
mov rbx,QWORD[((-64))+rsp]
|
|
mul r13
|
|
mov QWORD[((-8))+rsp],rcx
|
|
mov rcx,QWORD[((-72))+rsp]
|
|
mov r9,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
mov r10,rdx
|
|
mul rsi
|
|
add r9,rax
|
|
mov rax,r8
|
|
adc r10,rdx
|
|
mul r14
|
|
add r9,rax
|
|
mov rax,rdi
|
|
adc r10,rdx
|
|
mul r15
|
|
add r9,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc r10,rdx
|
|
mul r11
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,2251799813685247
|
|
adc rbx,rdx
|
|
and rax,rcx
|
|
mov QWORD[((-88))+rsp],rax
|
|
mov rax,r11
|
|
mul r13
|
|
mov r9,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
mov r10,rdx
|
|
mul rsi
|
|
add r9,rax
|
|
mov rax,rbp
|
|
adc r10,rdx
|
|
mul r14
|
|
add r9,rax
|
|
mov rax,r8
|
|
adc r10,rdx
|
|
mul r15
|
|
add r9,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc r10,rdx
|
|
mul rdi
|
|
add rax,r9
|
|
mov r9,2251799813685247
|
|
adc rdx,r10
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
and r9,rcx
|
|
mul rsi
|
|
mov r10,rax
|
|
mov rax,rdi
|
|
mov r11,rdx
|
|
mul r13
|
|
mov r13,2251799813685247
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r12
|
|
add rsi,r10
|
|
adc rdi,r11
|
|
mul r14
|
|
add rsi,rax
|
|
mov rax,rbp
|
|
mov rbp,2251799813685247
|
|
adc rdi,rdx
|
|
mul r15
|
|
add rsi,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc rdi,rdx
|
|
mul r8
|
|
add rsi,rax
|
|
adc rdi,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov rdx,rsi
|
|
mov rbx,QWORD[((-88))+rsp]
|
|
shrd rdx,rdi,51
|
|
mov rdi,2251799813685247
|
|
and r13,rsi
|
|
lea rax,[rdx*8+rdx]
|
|
lea rax,[rax*2+rdx]
|
|
add rax,QWORD[((-24))+rsp]
|
|
and rbp,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-8))+rsp]
|
|
lea rsi,[rbp*1+rbp]
|
|
and rdi,rax
|
|
shr rax,51
|
|
lea r8,[rbx*1+rax]
|
|
lea rax,[r13*8+r13]
|
|
lea r15,[rdi*1+rdi]
|
|
lea r12,[rax*2+r13]
|
|
mov rax,rdi
|
|
mov QWORD[((-8))+rsp],r15
|
|
lea r14,[r12*1+r12]
|
|
mul r14
|
|
mov rcx,rax
|
|
mov rax,rbp
|
|
mov rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
lea rax,[r8*8+r8]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+r8]
|
|
mov QWORD[((-24))+rsp],rax
|
|
add rax,rax
|
|
mul r9
|
|
add rcx,rax
|
|
lea rax,[r9*8+r9]
|
|
adc rbx,rdx
|
|
mov r10,rcx
|
|
mov rcx,2251799813685247
|
|
mov r11,rbx
|
|
lea rbx,[rax*2+r9]
|
|
and rcx,r10
|
|
mov QWORD[((-88))+rsp],rcx
|
|
mov rax,rbx
|
|
mov QWORD[((-72))+rsp],rbx
|
|
mul r9
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
mov rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r14
|
|
mov r14,2251799813685247
|
|
adc rbx,rdx
|
|
mov rdx,2251799813685247
|
|
shrd r10,r11,51
|
|
shr r11,51
|
|
add r10,rcx
|
|
adc r11,rbx
|
|
and rdx,r10
|
|
mov QWORD[((-104))+rsp],rdx
|
|
mul r9
|
|
mov rcx,rax
|
|
mov rax,rdi
|
|
mov rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rcx,rax
|
|
mov rax,r12
|
|
adc rbx,rdx
|
|
shrd r10,r11,51
|
|
shr r11,51
|
|
add r10,rcx
|
|
adc r11,rbx
|
|
and r14,r10
|
|
mul r13
|
|
mov QWORD[((-120))+rsp],r14
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,r15
|
|
adc rbx,rdx
|
|
mul r8
|
|
add rax,rcx
|
|
mov rcx,r10
|
|
mov r10,2251799813685247
|
|
adc rdx,rbx
|
|
mov rbx,r11
|
|
shrd rcx,r11,51
|
|
shr rbx,51
|
|
mov r11,2251799813685247
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
and r10,rcx
|
|
mul r8
|
|
mov r14,rax
|
|
mov rax,QWORD[((-8))+rsp]
|
|
mov r15,rdx
|
|
mul r9
|
|
add r14,rax
|
|
mov rax,rsi
|
|
mov rsi,QWORD[((-120))+rsp]
|
|
adc r15,rdx
|
|
mul r13
|
|
add rax,r14
|
|
mov r14,2251799813685247
|
|
adc rdx,r15
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
and r14,rax
|
|
shrd rax,rdx,51
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[((-88))+rsp]
|
|
mov rcx,2251799813685247
|
|
and rcx,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-104))+rsp]
|
|
lea r15,[rcx*1+rcx]
|
|
mov QWORD[((-120))+rsp],rcx
|
|
and r11,rax
|
|
shr rax,51
|
|
add rsi,rax
|
|
lea rax,[r14*8+r14]
|
|
lea rdx,[r11*1+r11]
|
|
lea rbx,[rax*2+r14]
|
|
mov QWORD[((-88))+rsp],rdx
|
|
lea rdx,[rbx*1+rbx]
|
|
mov QWORD[40+rsp],rbx
|
|
mov rax,rdx
|
|
mov QWORD[((-104))+rsp],rdx
|
|
mul r11
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
mul rax
|
|
add rcx,rax
|
|
lea rax,[rsi*8+rsi]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+rsi]
|
|
add rax,rax
|
|
mul r10
|
|
add rcx,rax
|
|
lea rax,[r10*8+r10]
|
|
mov QWORD[((-120))+rsp],rcx
|
|
adc rbx,rdx
|
|
mov rdx,2251799813685247
|
|
and rdx,QWORD[((-120))+rsp]
|
|
lea rcx,[rax*2+r10]
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mov rax,rcx
|
|
mov QWORD[8+rsp],rdx
|
|
mul r10
|
|
mov rcx,rax
|
|
mov rax,r15
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov rcx,2251799813685247
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
and rcx,QWORD[((-120))+rsp]
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mul r10
|
|
mov QWORD[((-8))+rsp],rcx
|
|
mov QWORD[((-104))+rsp],rax
|
|
mov rax,r11
|
|
mov QWORD[((-96))+rsp],rdx
|
|
mul r11
|
|
mov r11,2251799813685247
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
add rcx,QWORD[((-104))+rsp]
|
|
mov rbx,rdx
|
|
adc rbx,QWORD[((-96))+rsp]
|
|
mul r15
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,QWORD[40+rsp]
|
|
adc rdx,rbx
|
|
mov QWORD[((-112))+rsp],rdx
|
|
and r11,QWORD[((-120))+rsp]
|
|
mul r14
|
|
mov QWORD[((-104))+rsp],r11
|
|
mov r11,2251799813685247
|
|
mov rcx,rax
|
|
mov rax,r15
|
|
mov rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mov QWORD[((-120))+rsp],rcx
|
|
and r11,QWORD[((-120))+rsp]
|
|
mul rsi
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mov QWORD[40+rsp],rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
mov QWORD[48+rsp],rdx
|
|
mul r10
|
|
mov rbx,rax
|
|
mov rax,r14
|
|
add rbx,QWORD[40+rsp]
|
|
mov rsi,rdx
|
|
adc rsi,QWORD[48+rsp]
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
mul r15
|
|
mov r14,2251799813685247
|
|
add rax,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
adc rdx,rsi
|
|
mov rsi,QWORD[((-104))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
and r14,rax
|
|
shrd rax,rdx,51
|
|
mov rdx,2251799813685247
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[8+rsp]
|
|
mov rcx,2251799813685247
|
|
and rcx,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-8))+rsp]
|
|
mov QWORD[((-120))+rsp],rcx
|
|
lea r15,[rcx*1+rcx]
|
|
and rdx,rax
|
|
shr rax,51
|
|
add rsi,rax
|
|
lea rax,[r14*8+r14]
|
|
mov r10,rdx
|
|
lea rdx,[rdx*1+rdx]
|
|
lea rbx,[rax*2+r14]
|
|
mov QWORD[((-88))+rsp],rdx
|
|
lea rdx,[rbx*1+rbx]
|
|
mov QWORD[40+rsp],rbx
|
|
mov rax,rdx
|
|
mov QWORD[((-104))+rsp],rdx
|
|
mul r10
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
mul rax
|
|
add rcx,rax
|
|
lea rax,[rsi*8+rsi]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+rsi]
|
|
add rax,rax
|
|
mul r11
|
|
add rcx,rax
|
|
lea rax,[r11*8+r11]
|
|
adc rbx,rdx
|
|
mov QWORD[((-120))+rsp],rcx
|
|
mov rdx,2251799813685247
|
|
and rdx,QWORD[((-120))+rsp]
|
|
lea rcx,[rax*2+r11]
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mov rax,rcx
|
|
mov QWORD[8+rsp],rdx
|
|
mul r11
|
|
mov rcx,rax
|
|
mov rax,r15
|
|
mov rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov rcx,2251799813685247
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
and rcx,QWORD[((-120))+rsp]
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mul r11
|
|
mov QWORD[((-8))+rsp],rcx
|
|
mov QWORD[((-104))+rsp],rax
|
|
mov rax,r10
|
|
mov QWORD[((-96))+rsp],rdx
|
|
mul r10
|
|
mov r10,2251799813685247
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
add rcx,QWORD[((-104))+rsp]
|
|
mov rbx,rdx
|
|
adc rbx,QWORD[((-96))+rsp]
|
|
mul r15
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,QWORD[40+rsp]
|
|
adc rdx,rbx
|
|
mov QWORD[((-112))+rsp],rdx
|
|
and r10,QWORD[((-120))+rsp]
|
|
mul r14
|
|
mov QWORD[((-104))+rsp],r10
|
|
mov rcx,rax
|
|
mov rax,r15
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mov QWORD[((-120))+rsp],rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
mov rdx,rbx
|
|
mov rbx,2251799813685247
|
|
and rbx,QWORD[((-120))+rsp]
|
|
mov QWORD[((-112))+rsp],rdx
|
|
mul rsi
|
|
mov r10,rbx
|
|
mov QWORD[40+rsp],rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
mov QWORD[48+rsp],rdx
|
|
mul r11
|
|
mov r11,2251799813685247
|
|
mov rbx,rax
|
|
mov rax,r14
|
|
add rbx,QWORD[40+rsp]
|
|
mov rsi,rdx
|
|
adc rsi,QWORD[48+rsp]
|
|
mov r14,2251799813685247
|
|
mul r15
|
|
add rax,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
adc rdx,rsi
|
|
mov rsi,QWORD[((-104))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
and r14,rax
|
|
shrd rax,rdx,51
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[8+rsp]
|
|
mov rcx,2251799813685247
|
|
and rcx,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-8))+rsp]
|
|
mov QWORD[((-120))+rsp],rcx
|
|
lea r15,[rcx*1+rcx]
|
|
and r11,rax
|
|
shr rax,51
|
|
add rsi,rax
|
|
lea rax,[r14*8+r14]
|
|
lea rdx,[r11*1+r11]
|
|
lea rbx,[rax*2+r14]
|
|
mov QWORD[((-88))+rsp],rdx
|
|
lea rdx,[rbx*1+rbx]
|
|
mov QWORD[40+rsp],rbx
|
|
mov rax,rdx
|
|
mov QWORD[((-104))+rsp],rdx
|
|
mul r11
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
mul rax
|
|
add rcx,rax
|
|
lea rax,[rsi*8+rsi]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+rsi]
|
|
add rax,rax
|
|
mul r10
|
|
add rcx,rax
|
|
lea rax,[r10*8+r10]
|
|
adc rbx,rdx
|
|
mov QWORD[((-120))+rsp],rcx
|
|
mov rdx,2251799813685247
|
|
and rdx,QWORD[((-120))+rsp]
|
|
lea rcx,[rax*2+r10]
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mov rax,rcx
|
|
mov QWORD[8+rsp],rdx
|
|
mul r10
|
|
mov rcx,rax
|
|
mov rax,r15
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov rcx,2251799813685247
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
and rcx,QWORD[((-120))+rsp]
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mul r10
|
|
mov QWORD[((-8))+rsp],rcx
|
|
mov QWORD[((-104))+rsp],rax
|
|
mov rax,r11
|
|
mov QWORD[((-96))+rsp],rdx
|
|
mul r11
|
|
mov r11,2251799813685247
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
add rcx,QWORD[((-104))+rsp]
|
|
mov rbx,rdx
|
|
adc rbx,QWORD[((-96))+rsp]
|
|
mul r15
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,QWORD[40+rsp]
|
|
adc rdx,rbx
|
|
mov QWORD[((-112))+rsp],rdx
|
|
and r11,QWORD[((-120))+rsp]
|
|
mul r14
|
|
mov QWORD[((-104))+rsp],r11
|
|
mov r11,2251799813685247
|
|
mov rcx,rax
|
|
mov rax,r15
|
|
mov rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mov QWORD[((-120))+rsp],rcx
|
|
and r11,QWORD[((-120))+rsp]
|
|
mul rsi
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mov rcx,QWORD[((-120))+rsp]
|
|
mov QWORD[40+rsp],rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
mov QWORD[48+rsp],rdx
|
|
mul r10
|
|
mov rbx,rax
|
|
mov rax,r14
|
|
add rbx,QWORD[40+rsp]
|
|
mov rsi,rdx
|
|
adc rsi,QWORD[48+rsp]
|
|
mov r14,2251799813685247
|
|
mul r15
|
|
mov r15,2251799813685247
|
|
add rax,rbx
|
|
mov rbx,QWORD[((-112))+rsp]
|
|
adc rdx,rsi
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
and r14,rax
|
|
shrd rax,rdx,51
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[8+rsp]
|
|
mov rcx,2251799813685247
|
|
mov rsi,QWORD[((-104))+rsp]
|
|
and rcx,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-8))+rsp]
|
|
and r15,rax
|
|
shr rax,51
|
|
lea r10,[rsi*1+rax]
|
|
lea rax,[rcx*1+rcx]
|
|
lea rsi,[r15*1+r15]
|
|
mov QWORD[((-120))+rsp],rax
|
|
lea rax,[r14*8+r14]
|
|
mov QWORD[((-104))+rsp],rsi
|
|
lea rdx,[rax*2+r14]
|
|
mov rax,rcx
|
|
lea rsi,[rdx*1+rdx]
|
|
mov QWORD[56+rsp],rdx
|
|
mul rcx
|
|
mov QWORD[((-88))+rsp],rsi
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
mov rbx,rdx
|
|
mul r15
|
|
mov rsi,2251799813685247
|
|
add rcx,rax
|
|
lea rax,[r10*8+r10]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+r10]
|
|
add rax,rax
|
|
mul r11
|
|
add rcx,rax
|
|
lea rax,[r11*8+r11]
|
|
adc rbx,rdx
|
|
mov QWORD[((-8))+rsp],rcx
|
|
mov QWORD[rsp],rbx
|
|
mov rbx,rcx
|
|
and rbx,rsi
|
|
mov QWORD[8+rsp],rbx
|
|
lea rbx,[rax*2+r11]
|
|
mov rax,rbx
|
|
mul r11
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rbx,rdx
|
|
mul r10
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-8))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,r15
|
|
adc rbx,rdx
|
|
mov QWORD[((-8))+rsp],rcx
|
|
and rcx,rsi
|
|
mul r15
|
|
mov r15,QWORD[((-120))+rsp]
|
|
mov QWORD[40+rsp],rcx
|
|
mov QWORD[rsp],rbx
|
|
mov QWORD[88+rsp],rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
mov QWORD[96+rsp],rdx
|
|
mul r11
|
|
mov rcx,rax
|
|
mov rax,r15
|
|
add rcx,QWORD[88+rsp]
|
|
mov rbx,rdx
|
|
adc rbx,QWORD[96+rsp]
|
|
mul r10
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-8))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,r15
|
|
adc rbx,rdx
|
|
mov QWORD[((-88))+rsp],rcx
|
|
and rcx,rsi
|
|
mul r11
|
|
mov QWORD[((-80))+rsp],rbx
|
|
mov QWORD[((-8))+rsp],rcx
|
|
mov QWORD[88+rsp],rax
|
|
mov rax,QWORD[56+rsp]
|
|
mov QWORD[96+rsp],rdx
|
|
mul r14
|
|
mov rcx,rax
|
|
add rcx,QWORD[88+rsp]
|
|
mov rax,QWORD[((-104))+rsp]
|
|
mov rbx,rdx
|
|
adc rbx,QWORD[96+rsp]
|
|
mul r10
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-88))+rsp]
|
|
adc rdx,rbx
|
|
mov rbx,QWORD[((-80))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mov rdx,rcx
|
|
and rdx,rsi
|
|
mov r15,rdx
|
|
mul r11
|
|
mov QWORD[((-104))+rsp],rax
|
|
mov rax,r10
|
|
mov QWORD[((-96))+rsp],rdx
|
|
mul r10
|
|
mov r10,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
add r10,QWORD[((-104))+rsp]
|
|
mov r11,rdx
|
|
adc r11,QWORD[((-96))+rsp]
|
|
mul r14
|
|
add rax,r10
|
|
adc rdx,r11
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov r14,rcx
|
|
shrd rcx,rbx,51
|
|
and r14,rsi
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[8+rsp]
|
|
mov r10,rax
|
|
shr rax,51
|
|
add rax,QWORD[40+rsp]
|
|
and r10,rsi
|
|
mov QWORD[((-104))+rsp],r10
|
|
mov r11,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-8))+rsp]
|
|
and r11,rsi
|
|
mov QWORD[((-88))+rsp],r11
|
|
mov QWORD[((-120))+rsp],rax
|
|
lea rax,[rdi*8+rdi]
|
|
lea rcx,[rax*2+rdi]
|
|
mov rax,rcx
|
|
mul r14
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
mov rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,r10
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc rbx,rdx
|
|
mul QWORD[((-72))+rsp]
|
|
add rcx,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
adc rbx,rdx
|
|
mov r10,rcx
|
|
and rcx,rsi
|
|
mov QWORD[((-8))+rsp],rcx
|
|
mov r11,rbx
|
|
mul r14
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
mov rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rax,rcx
|
|
mov rcx,r10
|
|
adc rdx,rbx
|
|
mov rbx,r11
|
|
shrd rcx,r11,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,r15
|
|
adc rbx,rdx
|
|
mov rdx,rcx
|
|
and rdx,rsi
|
|
mov QWORD[((-24))+rsp],rdx
|
|
mul r12
|
|
mov r10,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
mov r11,rdx
|
|
mul r14
|
|
add r10,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc r11,rdx
|
|
mul r8
|
|
add r10,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc r11,rdx
|
|
mul rdi
|
|
add r10,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc r11,rdx
|
|
mul rbp
|
|
add rax,r10
|
|
adc rdx,r11
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
and rax,rsi
|
|
mov QWORD[((-72))+rsp],rax
|
|
mov rax,r15
|
|
mul rbp
|
|
mov r10,rax
|
|
mov rax,r12
|
|
mov r11,rdx
|
|
mul r14
|
|
add r10,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc r11,rdx
|
|
mul r9
|
|
add r10,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc r11,rdx
|
|
mul r8
|
|
add r10,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc r11,rdx
|
|
mul rdi
|
|
add rax,r10
|
|
adc rdx,r11
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mov QWORD[8+rsp],rcx
|
|
mul rbp
|
|
mov QWORD[16+rsp],rbx
|
|
mov rbx,rcx
|
|
and rbx,rsi
|
|
mov rcx,QWORD[8+rsp]
|
|
mov r10,rbx
|
|
mov QWORD[104+rsp],rbx
|
|
mov rbx,QWORD[16+rsp]
|
|
mov r11,rax
|
|
mov rax,r15
|
|
mov r12,rdx
|
|
mul rdi
|
|
mov rdi,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
mov rbp,rdx
|
|
add rdi,r11
|
|
adc rbp,r12
|
|
mov r12,r10
|
|
mul r13
|
|
mov r13,rsi
|
|
add rdi,rax
|
|
mov rax,QWORD[((-88))+rsp]
|
|
adc rbp,rdx
|
|
mul r9
|
|
add rdi,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc rbp,rdx
|
|
mul r8
|
|
add rax,rdi
|
|
adc rdx,rbp
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov rdx,rcx
|
|
shrd rcx,rbx,51
|
|
and rdx,rsi
|
|
lea rax,[rcx*8+rcx]
|
|
mov QWORD[208+rsp],rdx
|
|
mov rbp,rdx
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[((-8))+rsp]
|
|
mov r9,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-24))+rsp]
|
|
and r9,rsi
|
|
mov QWORD[((-24))+rsp],10
|
|
mov QWORD[8+rsp],r9
|
|
mov rcx,r9
|
|
mov r14,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-72))+rsp]
|
|
and r14,rsi
|
|
mov QWORD[40+rsp],r14
|
|
mov r15,rax
|
|
mov QWORD[56+rsp],rax
|
|
|
|
|
|
$L$4:
|
|
lea rax,[rbp*8+rbp]
|
|
lea r8,[rcx*1+rcx]
|
|
lea r10,[r14*1+r14]
|
|
lea rax,[rax*2+rbp]
|
|
mov QWORD[((-120))+rsp],r10
|
|
lea r11,[rax*1+rax]
|
|
mov QWORD[((-72))+rsp],rax
|
|
lea rax,[r15*8+r15]
|
|
lea rax,[rax*2+r15]
|
|
lea rbx,[rax*1+rax]
|
|
mov rax,rbx
|
|
mul r12
|
|
mov rsi,rax
|
|
mov rax,rcx
|
|
mov rdi,rdx
|
|
mul rcx
|
|
mov rcx,rax
|
|
mov rbx,rdx
|
|
mov rax,r11
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mov rsi,rcx
|
|
mul rbp
|
|
mov rdi,rbx
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,r15
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
lea rax,[r12*8+r12]
|
|
mov QWORD[((-104))+rsp],rcx
|
|
adc rbx,rdx
|
|
lea rcx,[rax*2+r12]
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov rbx,rsi
|
|
and rbx,r13
|
|
mov rax,rcx
|
|
mov QWORD[((-88))+rsp],rbx
|
|
mul r12
|
|
mov rcx,rax
|
|
mov rax,r14
|
|
mov rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov rdi,rcx
|
|
mul r15
|
|
and rdi,r13
|
|
mov r10,rdi
|
|
mov rsi,rax
|
|
mov rax,r14
|
|
mov rdi,rdx
|
|
mul r14
|
|
add rsi,rax
|
|
mov rax,r11
|
|
adc rdi,rdx
|
|
mul r12
|
|
add rsi,rax
|
|
mov rax,r12
|
|
adc rdi,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r9,rsi
|
|
mul r8
|
|
and r9,r13
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mov rdx,QWORD[((-96))+rsp]
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov r12,rcx
|
|
shrd rcx,rbx,51
|
|
and r12,r13
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
mov rbp,rax
|
|
shrd rax,rdx,51
|
|
and rbp,r13
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea r15,[rax*2+rcx]
|
|
add r15,QWORD[((-88))+rsp]
|
|
mov rcx,r15
|
|
shr r15,51
|
|
add r15,r10
|
|
and rcx,r13
|
|
mov r14,r15
|
|
shr r15,51
|
|
and r14,r13
|
|
add r15,r9
|
|
sub QWORD[((-24))+rsp],1
|
|
jne NEAR $L$4
|
|
mov rbx,QWORD[208+rsp]
|
|
mov r11,QWORD[40+rsp]
|
|
mov r9,rcx
|
|
mov rcx,QWORD[104+rsp]
|
|
mov r8,QWORD[8+rsp]
|
|
lea rax,[rbx*8+rbx]
|
|
lea rdi,[rax*2+rbx]
|
|
lea rax,[r11*8+r11]
|
|
mov rbx,QWORD[56+rsp]
|
|
lea rax,[rax*2+r11]
|
|
mov QWORD[88+rsp],rdi
|
|
mov QWORD[248+rsp],rax
|
|
lea rax,[rbx*8+rbx]
|
|
lea rsi,[rax*2+rbx]
|
|
lea rax,[rcx*8+rcx]
|
|
lea r10,[rax*2+rcx]
|
|
mov rax,r8
|
|
mov QWORD[240+rsp],rsi
|
|
mul r9
|
|
mov QWORD[200+rsp],r10
|
|
mov rcx,rax
|
|
mov rax,rdi
|
|
mov rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[248+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,r10
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mul r12
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
and rax,r13
|
|
mov r10,rax
|
|
mov rax,r8
|
|
mov r8,r11
|
|
mul r14
|
|
mov rcx,rax
|
|
mov rax,r11
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,QWORD[88+rsp]
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,QWORD[240+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[200+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,QWORD[8+rsp]
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r11,rsi
|
|
mul r15
|
|
and r11,r13
|
|
mov rcx,rax
|
|
mov rax,QWORD[56+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[88+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,QWORD[200+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
and rax,r13
|
|
mov r8,rax
|
|
mov rax,QWORD[8+rsp]
|
|
mul r12
|
|
mov rcx,rax
|
|
mov rax,QWORD[104+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,QWORD[56+rsp]
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[40+rsp]
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,QWORD[88+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
and rax,r13
|
|
mov QWORD[144+rsp],rax
|
|
mov rax,rbp
|
|
mov rbp,r13
|
|
mul QWORD[8+rsp]
|
|
mov rcx,rax
|
|
mov rbx,rdx
|
|
mov rax,r9
|
|
mul QWORD[208+rsp]
|
|
add rcx,rax
|
|
mov rax,r12
|
|
adc rbx,rdx
|
|
mul QWORD[40+rsp]
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul QWORD[104+rsp]
|
|
add rcx,rax
|
|
mov rax,r15
|
|
mov r15,2251799813685247
|
|
adc rbx,rdx
|
|
mul QWORD[56+rsp]
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov rdi,rcx
|
|
shrd rcx,rbx,51
|
|
and rdi,r13
|
|
lea rax,[rcx*8+rcx]
|
|
mov QWORD[232+rsp],rdi
|
|
lea rax,[rax*2+rcx]
|
|
add r10,rax
|
|
mov r9,r10
|
|
shr r10,51
|
|
add r11,r10
|
|
and r9,r13
|
|
and rbp,r11
|
|
shr r11,51
|
|
mov QWORD[152+rsp],r9
|
|
lea r14,[r8*1+r11]
|
|
mov QWORD[120+rsp],rbp
|
|
mov rcx,r9
|
|
mov rsi,rbp
|
|
mov r11,rdi
|
|
mov QWORD[160+rsp],r14
|
|
mov r13,QWORD[144+rsp]
|
|
mov QWORD[((-8))+rsp],20
|
|
|
|
|
|
$L$5:
|
|
lea rax,[r11*8+r11]
|
|
lea r12,[rcx*1+rcx]
|
|
lea rdi,[rsi*1+rsi]
|
|
lea rax,[rax*2+r11]
|
|
mov QWORD[((-120))+rsp],rdi
|
|
lea r8,[rax*1+rax]
|
|
mov QWORD[((-24))+rsp],rax
|
|
lea rax,[r14*8+r14]
|
|
lea rax,[rax*2+r14]
|
|
lea rbx,[rax*1+rax]
|
|
mov rax,rbx
|
|
mul r13
|
|
mov r9,rax
|
|
mov rax,rcx
|
|
mov r10,rdx
|
|
mul rcx
|
|
mov rcx,rax
|
|
mov rbx,rdx
|
|
mov rax,r8
|
|
add rcx,r9
|
|
adc rbx,r10
|
|
mul rsi
|
|
add rcx,rax
|
|
mov rax,r12
|
|
adc rbx,rdx
|
|
mov r9,rcx
|
|
mul r11
|
|
mov r10,rbx
|
|
mov rbp,r9
|
|
mov rcx,rax
|
|
mov rax,rdi
|
|
mov rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
lea rax,[r13*8+r13]
|
|
mov QWORD[((-104))+rsp],rcx
|
|
adc rbx,rdx
|
|
and rbp,r15
|
|
lea rcx,[rax*2+r13]
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov rax,rcx
|
|
mul r13
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r12
|
|
adc rbx,rdx
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add rcx,r9
|
|
adc rbx,r10
|
|
mov QWORD[((-88))+rsp],rcx
|
|
mul r14
|
|
mov QWORD[((-80))+rsp],rbx
|
|
mov rbx,rcx
|
|
and rbx,r15
|
|
mov rcx,QWORD[((-88))+rsp]
|
|
mov QWORD[((-72))+rsp],rbx
|
|
mov rbx,QWORD[((-80))+rsp]
|
|
mov r9,rax
|
|
mov rax,rsi
|
|
mov r10,rdx
|
|
mul rsi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r8
|
|
add rsi,r9
|
|
adc rdi,r10
|
|
mul r13
|
|
add rsi,rax
|
|
mov rax,r13
|
|
adc rdi,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r8,rsi
|
|
mul r12
|
|
and r8,r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[((-24))+rsp]
|
|
adc rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mov rdx,QWORD[((-96))+rsp]
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov rcx,rsi
|
|
mov r13,rsi
|
|
shrd rcx,rdi,51
|
|
mov rbx,rdi
|
|
and r13,r15
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
mov r11,rax
|
|
shrd rax,rdx,51
|
|
and r11,r15
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea r14,[rax*2+rcx]
|
|
add r14,rbp
|
|
mov rcx,r14
|
|
shr r14,51
|
|
add r14,QWORD[((-72))+rsp]
|
|
and rcx,r15
|
|
mov rsi,r14
|
|
shr r14,51
|
|
and rsi,r15
|
|
add r14,r8
|
|
sub QWORD[((-8))+rsp],1
|
|
jne NEAR $L$5
|
|
mov rbx,QWORD[232+rsp]
|
|
mov r9,rcx
|
|
mov rcx,QWORD[144+rsp]
|
|
mov r8,r11
|
|
mov rdi,QWORD[120+rsp]
|
|
mov rbp,rsi
|
|
mov QWORD[((-24))+rsp],10
|
|
lea rax,[rbx*8+rbx]
|
|
lea r12,[rax*2+rbx]
|
|
mov rbx,QWORD[160+rsp]
|
|
lea rax,[rbx*8+rbx]
|
|
lea r11,[rax*2+rbx]
|
|
lea rax,[rcx*8+rcx]
|
|
lea r10,[rax*2+rcx]
|
|
mov rax,QWORD[152+rsp]
|
|
mul r9
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
lea rax,[rdi*8+rdi]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+rdi]
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul r11
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
and rax,r15
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,QWORD[152+rsp]
|
|
mul rbp
|
|
mov rcx,rax
|
|
mov rax,QWORD[120+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,QWORD[152+rsp]
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r11,rsi
|
|
mul r14
|
|
and r11,r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[160+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,QWORD[120+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,r10
|
|
adc rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,QWORD[152+rsp]
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r10,rsi
|
|
mul r13
|
|
and r10,r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[144+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,QWORD[160+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[120+rsp]
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r12
|
|
adc rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,QWORD[152+rsp]
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r12,rsi
|
|
mul r8
|
|
and r12,r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[232+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,QWORD[120+rsp]
|
|
adc rbx,rdx
|
|
mul r13
|
|
mov r13,2251799813685247
|
|
add rcx,rax
|
|
mov rax,QWORD[144+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[160+rsp]
|
|
adc rbx,rdx
|
|
mul r14
|
|
mov r14,r15
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov rcx,rsi
|
|
mov rbp,rsi
|
|
shrd rcx,rdi,51
|
|
and rbp,r15
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[((-120))+rsp]
|
|
mov r9,rax
|
|
shr rax,51
|
|
add r11,rax
|
|
and r9,r15
|
|
and r14,r11
|
|
shr r11,51
|
|
mov rcx,r9
|
|
lea r15,[r10*1+r11]
|
|
|
|
|
|
$L$6:
|
|
lea rax,[rbp*8+rbp]
|
|
lea r8,[rcx*1+rcx]
|
|
lea r10,[r14*1+r14]
|
|
lea rax,[rax*2+rbp]
|
|
mov QWORD[((-120))+rsp],r10
|
|
lea r11,[rax*1+rax]
|
|
mov QWORD[((-72))+rsp],rax
|
|
lea rax,[r15*8+r15]
|
|
lea rax,[rax*2+r15]
|
|
lea rbx,[rax*1+rax]
|
|
mov rax,rbx
|
|
mul r12
|
|
mov rsi,rax
|
|
mov rax,rcx
|
|
mov rdi,rdx
|
|
mul rcx
|
|
mov rcx,rax
|
|
mov rbx,rdx
|
|
mov rax,r11
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mov rsi,rcx
|
|
mul rbp
|
|
mov rdi,rbx
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,r15
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
lea rax,[r12*8+r12]
|
|
mov QWORD[((-104))+rsp],rcx
|
|
adc rbx,rdx
|
|
lea rcx,[rax*2+r12]
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov rbx,rsi
|
|
and rbx,r13
|
|
mov rax,rcx
|
|
mov QWORD[((-88))+rsp],rbx
|
|
mul r12
|
|
mov rcx,rax
|
|
mov rax,r14
|
|
mov rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov rdi,rcx
|
|
mul r15
|
|
and rdi,r13
|
|
mov r10,rdi
|
|
mov rsi,rax
|
|
mov rax,r14
|
|
mov rdi,rdx
|
|
mul r14
|
|
add rsi,rax
|
|
mov rax,r11
|
|
adc rdi,rdx
|
|
mul r12
|
|
add rsi,rax
|
|
mov rax,r12
|
|
adc rdi,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r9,rsi
|
|
mul r8
|
|
and r9,r13
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,QWORD[((-72))+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mov rdx,QWORD[((-96))+rsp]
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov r12,rcx
|
|
shrd rcx,rbx,51
|
|
and r12,r13
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
mov rbp,rax
|
|
shrd rax,rdx,51
|
|
and rbp,r13
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea r15,[rax*2+rcx]
|
|
add r15,QWORD[((-88))+rsp]
|
|
mov rcx,r15
|
|
shr r15,51
|
|
add r15,r10
|
|
and rcx,r13
|
|
mov r14,r15
|
|
shr r15,51
|
|
and r14,r13
|
|
add r15,r9
|
|
sub QWORD[((-24))+rsp],1
|
|
jne NEAR $L$6
|
|
mov r11,QWORD[8+rsp]
|
|
mov r10,QWORD[88+rsp]
|
|
mov r9,rcx
|
|
mov QWORD[((-24))+rsp],50
|
|
mov rax,r11
|
|
mul rcx
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[248+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[200+rsp]
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,QWORD[240+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r11
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r8,rsi
|
|
mul r14
|
|
and r8,r13
|
|
mov rcx,rax
|
|
mov rax,QWORD[40+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,r10
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,QWORD[240+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[200+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
and rax,r13
|
|
mov r10,rax
|
|
mov rax,r11
|
|
mul r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[56+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,QWORD[40+rsp]
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[88+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,QWORD[200+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
and rax,r13
|
|
mov r11,rax
|
|
mov rax,QWORD[8+rsp]
|
|
mul r12
|
|
mov rcx,rax
|
|
mov rax,QWORD[104+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,QWORD[56+rsp]
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[40+rsp]
|
|
adc rbx,rdx
|
|
mul r15
|
|
add rcx,rax
|
|
mov rax,QWORD[88+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
and rax,r13
|
|
mov QWORD[88+rsp],rax
|
|
mov rax,QWORD[8+rsp]
|
|
mul rbp
|
|
mov rbp,r13
|
|
mov rcx,rax
|
|
mov rax,QWORD[208+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,QWORD[40+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
mov r12,QWORD[88+rsp]
|
|
add rcx,rax
|
|
mov rax,QWORD[104+rsp]
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[56+rsp]
|
|
adc rbx,rdx
|
|
mul r15
|
|
mov r15,2251799813685247
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov rdi,rcx
|
|
shrd rcx,rbx,51
|
|
and rdi,r13
|
|
lea rax,[rcx*8+rcx]
|
|
mov QWORD[160+rsp],rdi
|
|
lea rax,[rax*2+rcx]
|
|
add r8,rax
|
|
mov rcx,r8
|
|
shr r8,51
|
|
add r10,r8
|
|
and rcx,r13
|
|
and rbp,r10
|
|
shr r10,51
|
|
mov QWORD[40+rsp],rcx
|
|
lea r14,[r11*1+r10]
|
|
mov QWORD[8+rsp],rbp
|
|
mov r11,rdi
|
|
mov rsi,rbp
|
|
mov QWORD[((-8))+rsp],r14
|
|
|
|
|
|
$L$7:
|
|
lea rax,[r11*8+r11]
|
|
lea rbp,[rcx*1+rcx]
|
|
lea rdi,[rsi*1+rsi]
|
|
lea r13,[rax*2+r11]
|
|
lea rax,[r14*8+r14]
|
|
mov QWORD[((-120))+rsp],rdi
|
|
lea r9,[rax*2+r14]
|
|
lea r8,[r13*1+r13]
|
|
add r9,r9
|
|
mov rax,r9
|
|
mul r12
|
|
mov r9,rax
|
|
mov rax,rcx
|
|
mov r10,rdx
|
|
mul rcx
|
|
add r9,rax
|
|
mov rax,r8
|
|
adc r10,rdx
|
|
mul rsi
|
|
add r9,rax
|
|
mov rax,rbp
|
|
adc r10,rdx
|
|
mul r11
|
|
mov rcx,rax
|
|
mov rax,rdi
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
lea rax,[r12*8+r12]
|
|
mov QWORD[((-104))+rsp],rcx
|
|
adc rbx,rdx
|
|
lea rcx,[rax*2+r12]
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov rbx,r9
|
|
and rbx,r15
|
|
mov rax,rcx
|
|
mov QWORD[((-88))+rsp],rbx
|
|
mul r12
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
mov rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,rbp
|
|
adc rbx,rdx
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add rcx,r9
|
|
mov rdx,rcx
|
|
adc rbx,r10
|
|
and rdx,r15
|
|
mov QWORD[((-72))+rsp],rdx
|
|
mul r14
|
|
mov r9,rax
|
|
mov rax,rsi
|
|
mov r10,rdx
|
|
mul rsi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r8
|
|
add rsi,r9
|
|
adc rdi,r10
|
|
mul r12
|
|
add rsi,rax
|
|
mov rax,r12
|
|
adc rdi,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r8,rsi
|
|
mul rbp
|
|
and r8,r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mov rdx,QWORD[((-96))+rsp]
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov r12,rcx
|
|
shrd rcx,rbx,51
|
|
and r12,r15
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
mov r11,rax
|
|
shrd rax,rdx,51
|
|
and r11,r15
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea r14,[rax*2+rcx]
|
|
add r14,QWORD[((-88))+rsp]
|
|
mov rcx,r14
|
|
shr r14,51
|
|
add r14,QWORD[((-72))+rsp]
|
|
and rcx,r15
|
|
mov rsi,r14
|
|
shr r14,51
|
|
and rsi,r15
|
|
add r14,r8
|
|
sub QWORD[((-24))+rsp],1
|
|
jne NEAR $L$7
|
|
mov rbx,QWORD[160+rsp]
|
|
mov rdi,QWORD[((-8))+rsp]
|
|
mov rbp,rsi
|
|
mov rsi,QWORD[88+rsp]
|
|
mov r10,QWORD[40+rsp]
|
|
lea rax,[rbx*8+rbx]
|
|
lea r13,[rax*2+rbx]
|
|
mov rbx,QWORD[8+rsp]
|
|
mov QWORD[152+rsp],r13
|
|
lea rax,[rbx*8+rbx]
|
|
lea rax,[rax*2+rbx]
|
|
mov QWORD[240+rsp],rax
|
|
lea rax,[rdi*8+rdi]
|
|
lea r8,[rax*2+rdi]
|
|
lea rax,[rsi*8+rsi]
|
|
lea r9,[rax*2+rsi]
|
|
mov rax,r10
|
|
mov QWORD[232+rsp],r8
|
|
mul rcx
|
|
mov QWORD[200+rsp],r9
|
|
mov rsi,rax
|
|
mov rax,r13
|
|
mov rdi,rdx
|
|
mul rbp
|
|
add rsi,rax
|
|
mov rax,QWORD[240+rsp]
|
|
adc rdi,rdx
|
|
mul r11
|
|
add rsi,rax
|
|
mov rax,r9
|
|
adc rdi,rdx
|
|
mul r14
|
|
add rsi,rax
|
|
mov rax,r8
|
|
adc rdi,rdx
|
|
mul r12
|
|
add rsi,rax
|
|
mov rax,rsi
|
|
adc rdi,rdx
|
|
mov QWORD[((-120))+rsp],rsi
|
|
and rax,r15
|
|
mov QWORD[((-112))+rsp],rdi
|
|
mov r8,rax
|
|
mov rax,r10
|
|
mov r10,QWORD[((-112))+rsp]
|
|
mul rbp
|
|
mov rsi,rax
|
|
mov rax,rbx
|
|
mov rdi,rdx
|
|
mul rcx
|
|
add rsi,rax
|
|
mov rax,r13
|
|
adc rdi,rdx
|
|
mul r14
|
|
add rsi,rax
|
|
mov rax,QWORD[232+rsp]
|
|
adc rdi,rdx
|
|
mul r11
|
|
add rsi,rax
|
|
mov rax,r9
|
|
mov r9,QWORD[((-120))+rsp]
|
|
adc rdi,rdx
|
|
mul r12
|
|
add rsi,rax
|
|
adc rdi,rdx
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add r9,rsi
|
|
mov rax,r9
|
|
adc r10,rdi
|
|
and rax,r15
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,QWORD[40+rsp]
|
|
mul r14
|
|
mov rsi,rax
|
|
mov rax,QWORD[((-8))+rsp]
|
|
mov rdi,rdx
|
|
mul rcx
|
|
add rsi,rax
|
|
mov rax,rbx
|
|
adc rdi,rdx
|
|
mul rbp
|
|
add rsi,rax
|
|
mov rax,r13
|
|
adc rdi,rdx
|
|
mul r12
|
|
add rsi,rax
|
|
mov rax,QWORD[200+rsp]
|
|
adc rdi,rdx
|
|
mul r11
|
|
add rsi,rax
|
|
mov rax,QWORD[40+rsp]
|
|
adc rdi,rdx
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add r9,rsi
|
|
mov rdx,r9
|
|
adc r10,rdi
|
|
and rdx,r15
|
|
mov r13,rdx
|
|
mul r12
|
|
mov rsi,rax
|
|
mov rax,QWORD[88+rsp]
|
|
mov rdi,rdx
|
|
mul rcx
|
|
add rsi,rax
|
|
mov rax,QWORD[((-8))+rsp]
|
|
adc rdi,rdx
|
|
mul rbp
|
|
add rsi,rax
|
|
mov rax,rbx
|
|
adc rdi,rdx
|
|
mul r14
|
|
add rsi,rax
|
|
mov rax,QWORD[152+rsp]
|
|
adc rdi,rdx
|
|
mul r11
|
|
add rax,rsi
|
|
mov rsi,r9
|
|
adc rdx,rdi
|
|
mov rdi,r10
|
|
shrd rsi,r10,51
|
|
shr rdi,51
|
|
add rsi,rax
|
|
mov rax,rsi
|
|
adc rdi,rdx
|
|
and rax,r15
|
|
mov QWORD[56+rsp],rax
|
|
mov rax,r11
|
|
mul QWORD[40+rsp]
|
|
mov r9,rax
|
|
mov r10,rdx
|
|
mov rax,rcx
|
|
mul QWORD[160+rsp]
|
|
mov rcx,rax
|
|
mov rbx,rdx
|
|
mov rax,r12
|
|
add rcx,r9
|
|
adc rbx,r10
|
|
mul QWORD[8+rsp]
|
|
add rcx,rax
|
|
mov rax,rbp
|
|
adc rbx,rdx
|
|
mul QWORD[88+rsp]
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul QWORD[((-8))+rsp]
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov rdi,rcx
|
|
shrd rcx,rbx,51
|
|
and rdi,r15
|
|
lea rax,[rcx*8+rcx]
|
|
mov QWORD[208+rsp],rdi
|
|
lea rax,[rax*2+rcx]
|
|
add r8,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rsi,r8
|
|
shr r8,51
|
|
and rsi,r15
|
|
lea r11,[rax*1+r8]
|
|
mov QWORD[104+rsp],rsi
|
|
mov rcx,rsi
|
|
and r15,r11
|
|
shr r11,51
|
|
mov QWORD[120+rsp],r15
|
|
lea r14,[r13*1+r11]
|
|
mov r12,QWORD[56+rsp]
|
|
mov rbp,r15
|
|
mov QWORD[((-24))+rsp],100
|
|
mov r15,2251799813685247
|
|
mov rsi,rbp
|
|
mov QWORD[144+rsp],r14
|
|
mov rbp,rdi
|
|
|
|
|
|
$L$8:
|
|
lea rax,[rbp*8+rbp]
|
|
lea r11,[rcx*1+rcx]
|
|
lea rdi,[rsi*1+rsi]
|
|
lea r13,[rax*2+rbp]
|
|
lea rax,[r14*8+r14]
|
|
mov QWORD[((-120))+rsp],rdi
|
|
lea r9,[rax*2+r14]
|
|
lea r8,[r13*1+r13]
|
|
add r9,r9
|
|
mov rax,r9
|
|
mul r12
|
|
mov r9,rax
|
|
mov rax,rcx
|
|
mov r10,rdx
|
|
mul rcx
|
|
add r9,rax
|
|
mov rax,r8
|
|
adc r10,rdx
|
|
mul rsi
|
|
add r9,rax
|
|
mov rax,r11
|
|
adc r10,rdx
|
|
mul rbp
|
|
mov rcx,rax
|
|
mov rax,rdi
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
lea rax,[r12*8+r12]
|
|
mov QWORD[((-104))+rsp],rcx
|
|
adc rbx,rdx
|
|
lea rcx,[rax*2+r12]
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov rbx,r9
|
|
and rbx,r15
|
|
mov rax,rcx
|
|
mov QWORD[((-88))+rsp],rbx
|
|
mul r12
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add rcx,r9
|
|
mov rdx,rcx
|
|
adc rbx,r10
|
|
and rdx,r15
|
|
mov QWORD[((-72))+rsp],rdx
|
|
mul r14
|
|
mov r9,rax
|
|
mov rax,rsi
|
|
mov r10,rdx
|
|
mul rsi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r8
|
|
add rsi,r9
|
|
adc rdi,r10
|
|
mul r12
|
|
add rsi,rax
|
|
mov rax,r12
|
|
adc rdi,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r9,rsi
|
|
mul r11
|
|
and r9,r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,rbp
|
|
adc rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mov rdx,QWORD[((-96))+rsp]
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov r12,rcx
|
|
shrd rcx,rbx,51
|
|
and r12,r15
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
mov rbp,rax
|
|
shrd rax,rdx,51
|
|
and rbp,r15
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea r14,[rax*2+rcx]
|
|
add r14,QWORD[((-88))+rsp]
|
|
mov rcx,r14
|
|
shr r14,51
|
|
add r14,QWORD[((-72))+rsp]
|
|
and rcx,r15
|
|
mov rsi,r14
|
|
shr r14,51
|
|
and rsi,r15
|
|
add r14,r9
|
|
sub QWORD[((-24))+rsp],1
|
|
jne NEAR $L$8
|
|
mov rbx,QWORD[208+rsp]
|
|
mov r11,rbp
|
|
mov rbp,rsi
|
|
mov rsi,rcx
|
|
mov rcx,QWORD[56+rsp]
|
|
mov r9,QWORD[104+rsp]
|
|
mov r10,QWORD[120+rsp]
|
|
mov QWORD[((-24))+rsp],50
|
|
lea rax,[rbx*8+rbx]
|
|
lea rdi,[rax*2+rbx]
|
|
mov rbx,QWORD[144+rsp]
|
|
lea rax,[rbx*8+rbx]
|
|
lea r13,[rax*2+rbx]
|
|
lea rax,[rcx*8+rcx]
|
|
lea r8,[rax*2+rcx]
|
|
mov rax,r9
|
|
mul rsi
|
|
mov rcx,rax
|
|
mov rax,rbp
|
|
mov rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
lea rax,[r10*8+r10]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+r10]
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,r12
|
|
adc rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov QWORD[((-120))+rsp],rcx
|
|
and rax,r15
|
|
mov QWORD[((-112))+rsp],rbx
|
|
mov QWORD[((-104))+rsp],rax
|
|
mov rax,r9
|
|
mov r9,QWORD[((-120))+rsp]
|
|
mul rbp
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul rsi
|
|
mov r10,QWORD[((-112))+rsp]
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,r13
|
|
mov r13,QWORD[120+rsp]
|
|
adc rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,r12
|
|
adc rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,QWORD[104+rsp]
|
|
adc rbx,rdx
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add r9,rcx
|
|
mov rdx,r9
|
|
adc r10,rbx
|
|
and rdx,r15
|
|
mov QWORD[((-120))+rsp],rdx
|
|
mul r14
|
|
mov rcx,rax
|
|
mov rax,QWORD[144+rsp]
|
|
mov rbx,rdx
|
|
mul rsi
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,r12
|
|
adc rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,QWORD[104+rsp]
|
|
adc rbx,rdx
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add r9,rcx
|
|
adc r10,rbx
|
|
mov r8,r9
|
|
mul r12
|
|
and r8,r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[56+rsp]
|
|
mov rbx,rdx
|
|
mul rsi
|
|
add rcx,rax
|
|
mov rax,QWORD[144+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,rdi
|
|
adc rbx,rdx
|
|
mul r11
|
|
add rax,rcx
|
|
mov rcx,r9
|
|
adc rdx,rbx
|
|
mov rbx,r10
|
|
shrd rcx,r10,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,QWORD[104+rsp]
|
|
adc rbx,rdx
|
|
mov rdi,rcx
|
|
and rdi,r15
|
|
mul r11
|
|
mov r13,rdi
|
|
mov r9,rax
|
|
mov rax,QWORD[208+rsp]
|
|
mov r10,rdx
|
|
mul rsi
|
|
mov rsi,rax
|
|
mov rax,QWORD[120+rsp]
|
|
mov rdi,rdx
|
|
add rsi,r9
|
|
adc rdi,r10
|
|
mul r12
|
|
add rsi,rax
|
|
mov rax,QWORD[56+rsp]
|
|
adc rdi,rdx
|
|
mul rbp
|
|
add rsi,rax
|
|
mov rax,QWORD[144+rsp]
|
|
adc rdi,rdx
|
|
mul r14
|
|
add rsi,rax
|
|
adc rdi,rdx
|
|
mov rdx,QWORD[((-120))+rsp]
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov r12,rcx
|
|
shrd rcx,rbx,51
|
|
mov rbx,QWORD[((-104))+rsp]
|
|
and r12,r15
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
lea rbp,[rbx*1+rax]
|
|
mov r9,rbp
|
|
shr rbp,51
|
|
lea r11,[rbp*1+rdx]
|
|
and r9,r15
|
|
mov rcx,r9
|
|
and r15,r11
|
|
shr r11,51
|
|
mov rbp,r15
|
|
lea r14,[r8*1+r11]
|
|
mov r15,2251799813685247
|
|
mov rsi,rbp
|
|
|
|
|
|
$L$9:
|
|
lea rax,[r12*8+r12]
|
|
lea r11,[rcx*1+rcx]
|
|
lea rdi,[rsi*1+rsi]
|
|
lea rbp,[rax*2+r12]
|
|
lea rax,[r14*8+r14]
|
|
mov QWORD[((-120))+rsp],rdi
|
|
lea r9,[rax*2+r14]
|
|
lea r8,[rbp*1+rbp]
|
|
add r9,r9
|
|
mov rax,r9
|
|
mul r13
|
|
mov r9,rax
|
|
mov rax,rcx
|
|
mov r10,rdx
|
|
mul rcx
|
|
add r9,rax
|
|
mov rax,r8
|
|
adc r10,rdx
|
|
mul rsi
|
|
add r9,rax
|
|
mov rax,r11
|
|
adc r10,rdx
|
|
mul r12
|
|
mov rcx,rax
|
|
mov rax,rdi
|
|
mov rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
lea rax,[r13*8+r13]
|
|
mov QWORD[((-104))+rsp],rcx
|
|
adc rbx,rdx
|
|
lea rcx,[rax*2+r13]
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov rbx,r9
|
|
and rbx,r15
|
|
mov rax,rcx
|
|
mov QWORD[((-88))+rsp],rbx
|
|
mul r13
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,r8
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add rcx,r9
|
|
mov rdx,rcx
|
|
adc rbx,r10
|
|
and rdx,r15
|
|
mov QWORD[((-72))+rsp],rdx
|
|
mul r14
|
|
mov r9,rax
|
|
mov rax,rsi
|
|
mov r10,rdx
|
|
mul rsi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r8
|
|
add rsi,r9
|
|
adc rdi,r10
|
|
mul r13
|
|
add rsi,rax
|
|
mov rax,r13
|
|
adc rdi,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r8,rsi
|
|
mul r11
|
|
and r8,r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,r12
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc rbx,rdx
|
|
mov rdx,QWORD[((-96))+rsp]
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov r13,rcx
|
|
shrd rcx,rbx,51
|
|
and r13,r15
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
mov r12,rax
|
|
shrd rax,rdx,51
|
|
and r12,r15
|
|
mov rcx,rax
|
|
lea rax,[rax*8+rax]
|
|
lea r14,[rax*2+rcx]
|
|
add r14,QWORD[((-88))+rsp]
|
|
mov rcx,r14
|
|
shr r14,51
|
|
add r14,QWORD[((-72))+rsp]
|
|
and rcx,r15
|
|
mov rsi,r14
|
|
shr r14,51
|
|
and rsi,r15
|
|
add r14,r8
|
|
sub QWORD[((-24))+rsp],1
|
|
jne NEAR $L$9
|
|
mov r11,QWORD[40+rsp]
|
|
mov r10,QWORD[152+rsp]
|
|
mov r9,rcx
|
|
mov rbp,rsi
|
|
mov rax,r11
|
|
mul rcx
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul rsi
|
|
add rcx,rax
|
|
mov rax,QWORD[240+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,QWORD[200+rsp]
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[232+rsp]
|
|
adc rbx,rdx
|
|
mul r13
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r11
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r8,rsi
|
|
mul rbp
|
|
and r8,r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[8+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,r10
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[232+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,QWORD[200+rsp]
|
|
adc rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
and rax,r15
|
|
mov r10,rax
|
|
mov rax,r11
|
|
mul r14
|
|
mov rcx,rax
|
|
mov rax,QWORD[((-8))+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,QWORD[8+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[152+rsp]
|
|
adc rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,QWORD[200+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
and rax,r15
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,r11
|
|
mul r13
|
|
mov rcx,rax
|
|
mov rax,QWORD[88+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,QWORD[((-8))+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[8+rsp]
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,QWORD[152+rsp]
|
|
adc rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov rsi,rcx
|
|
mul r12
|
|
and rsi,r15
|
|
mov r11,rax
|
|
mov rax,QWORD[160+rsp]
|
|
mov r12,rdx
|
|
mul r9
|
|
add r11,rax
|
|
mov rax,QWORD[8+rsp]
|
|
adc r12,rdx
|
|
mul r13
|
|
add r11,rax
|
|
mov rax,QWORD[88+rsp]
|
|
adc r12,rdx
|
|
mul rbp
|
|
add r11,rax
|
|
mov rax,QWORD[((-8))+rsp]
|
|
adc r12,rdx
|
|
mul r14
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov r9,rcx
|
|
shrd rcx,rbx,51
|
|
and r9,r15
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add r8,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rcx,r8
|
|
shr r8,51
|
|
add r10,r8
|
|
and rcx,r15
|
|
mov r8,r10
|
|
shr r10,51
|
|
lea rdi,[rax*1+r10]
|
|
lea rax,[r9*8+r9]
|
|
and r8,r15
|
|
lea r10,[rcx*1+rcx]
|
|
lea r14,[r8*1+r8]
|
|
lea r13,[rax*2+r9]
|
|
mov rax,rcx
|
|
mul rcx
|
|
lea rbp,[r13*1+r13]
|
|
mov rcx,rax
|
|
mov rax,rbp
|
|
mov rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
lea rax,[rdi*8+rdi]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+rdi]
|
|
add rax,rax
|
|
mul rsi
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov r11,rcx
|
|
and rax,r15
|
|
mov r12,rbx
|
|
mov QWORD[((-120))+rsp],rax
|
|
lea rax,[rsi*8+rsi]
|
|
lea rcx,[rax*2+rsi]
|
|
mov rax,rcx
|
|
mul rsi
|
|
mov rcx,rax
|
|
mov rax,r8
|
|
mov rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,rbp
|
|
adc rbx,rdx
|
|
mul rdi
|
|
add rax,rcx
|
|
mov rcx,r11
|
|
adc rdx,rbx
|
|
mov rbx,r12
|
|
shrd rcx,r12,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rbp
|
|
adc rbx,rdx
|
|
mov QWORD[((-104))+rsp],rcx
|
|
and rcx,r15
|
|
mul rsi
|
|
mov QWORD[((-88))+rsp],rcx
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov rcx,QWORD[((-104))+rsp]
|
|
mov rbx,QWORD[((-96))+rsp]
|
|
mov r11,rax
|
|
mov rax,r8
|
|
mov r12,rdx
|
|
mul r8
|
|
add r11,rax
|
|
mov rax,r10
|
|
adc r12,rdx
|
|
mul rdi
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mov rbp,rcx
|
|
mul r10
|
|
and rbp,r15
|
|
mov r11,rax
|
|
mov rax,r13
|
|
mov r12,rdx
|
|
mul r9
|
|
add r11,rax
|
|
mov rax,r14
|
|
adc r12,rdx
|
|
mul rdi
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mov r8,rcx
|
|
mul r14
|
|
and r8,r15
|
|
mov r11,rax
|
|
mov rax,rdi
|
|
mov r12,rdx
|
|
mul rdi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r9
|
|
add rsi,r11
|
|
adc rdi,r12
|
|
mul r10
|
|
add rsi,rax
|
|
adc rdi,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov rcx,rsi
|
|
mov r9,rsi
|
|
shrd rcx,rdi,51
|
|
and r9,r15
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[((-120))+rsp]
|
|
mov r11,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-88))+rsp]
|
|
and r11,r15
|
|
lea r10,[r11*1+r11]
|
|
mov rdi,rax
|
|
shr rax,51
|
|
lea rsi,[rbp*1+rax]
|
|
lea rax,[r9*8+r9]
|
|
and rdi,r15
|
|
lea r14,[rdi*1+rdi]
|
|
lea r13,[rax*2+r9]
|
|
mov rax,rdi
|
|
lea rbp,[r13*1+r13]
|
|
mul rbp
|
|
mov rcx,rax
|
|
mov rax,r11
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
lea rax,[rsi*8+rsi]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+rsi]
|
|
add rax,rax
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov r11,rcx
|
|
and rax,r15
|
|
mov r12,rbx
|
|
mov QWORD[((-88))+rsp],rax
|
|
lea rax,[r8*8+r8]
|
|
lea rcx,[rax*2+r8]
|
|
mov rax,rcx
|
|
mul r8
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rax,rcx
|
|
mov rcx,r11
|
|
adc rdx,rbx
|
|
mov rbx,r12
|
|
shrd rcx,r12,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rbp
|
|
adc rbx,rdx
|
|
mov QWORD[((-104))+rsp],rcx
|
|
and rcx,r15
|
|
mul r8
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov QWORD[((-120))+rsp],rcx
|
|
mov rbx,QWORD[((-96))+rsp]
|
|
mov rcx,QWORD[((-104))+rsp]
|
|
mov r11,rax
|
|
mov rax,rdi
|
|
mov r12,rdx
|
|
mul rdi
|
|
add r11,rax
|
|
mov rax,rsi
|
|
adc r12,rdx
|
|
mul r10
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
mov r11,rax
|
|
mov rbp,rax
|
|
mov rax,r13
|
|
mov r12,rdx
|
|
and rbp,r15
|
|
mul r9
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,r11
|
|
adc rdx,rbx
|
|
mov rbx,r12
|
|
shrd rcx,r12,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mov rdi,rcx
|
|
mul rsi
|
|
and rdi,r15
|
|
mov r11,rax
|
|
mov rax,r14
|
|
mov r12,rdx
|
|
mul r8
|
|
add r11,rax
|
|
mov rax,r9
|
|
adc r12,rdx
|
|
mul r10
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov r9,rcx
|
|
shrd rcx,rbx,51
|
|
and r9,r15
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[((-88))+rsp]
|
|
mov r11,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-120))+rsp]
|
|
and r11,r15
|
|
lea r10,[r11*1+r11]
|
|
mov r8,rax
|
|
shr rax,51
|
|
lea rsi,[rbp*1+rax]
|
|
lea rax,[r9*8+r9]
|
|
and r8,r15
|
|
lea r14,[r8*1+r8]
|
|
lea r13,[rax*2+r9]
|
|
mov rax,r8
|
|
lea rbp,[r13*1+r13]
|
|
mul rbp
|
|
mov rcx,rax
|
|
mov rax,r11
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
lea rax,[rsi*8+rsi]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+rsi]
|
|
add rax,rax
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov r11,rcx
|
|
and rax,r15
|
|
mov r12,rbx
|
|
mov QWORD[((-88))+rsp],rax
|
|
lea rax,[rdi*8+rdi]
|
|
lea rcx,[rax*2+rdi]
|
|
mov rax,rcx
|
|
mul rdi
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rax,rcx
|
|
mov rcx,r11
|
|
adc rdx,rbx
|
|
mov rbx,r12
|
|
shrd rcx,r12,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rbp
|
|
adc rbx,rdx
|
|
mov QWORD[((-104))+rsp],rcx
|
|
and rcx,r15
|
|
mul rdi
|
|
mov QWORD[((-120))+rsp],rcx
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov rcx,QWORD[((-104))+rsp]
|
|
mov rbx,QWORD[((-96))+rsp]
|
|
mov r11,rax
|
|
mov rax,r8
|
|
mov r12,rdx
|
|
mul r8
|
|
add r11,rax
|
|
mov rax,rsi
|
|
adc r12,rdx
|
|
mul r10
|
|
add r11,rax
|
|
mov rax,r13
|
|
adc r12,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add r11,rcx
|
|
adc r12,rbx
|
|
mov rbp,r11
|
|
mul r9
|
|
and rbp,r15
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,r11
|
|
adc rdx,rbx
|
|
mov rbx,r12
|
|
shrd rcx,r12,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mov r8,rcx
|
|
mul rsi
|
|
and r8,r15
|
|
mov r11,rax
|
|
mov rax,r14
|
|
mov r12,rdx
|
|
mul rdi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r9
|
|
add rsi,r11
|
|
adc rdi,r12
|
|
mul r10
|
|
add rsi,rax
|
|
adc rdi,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov rcx,rsi
|
|
mov r9,rsi
|
|
shrd rcx,rdi,51
|
|
and r9,r15
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[((-88))+rsp]
|
|
mov r11,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-120))+rsp]
|
|
and r11,r15
|
|
lea r10,[r11*1+r11]
|
|
mov rdi,rax
|
|
shr rax,51
|
|
lea rsi,[rbp*1+rax]
|
|
lea rax,[r9*8+r9]
|
|
and rdi,r15
|
|
lea r14,[rdi*1+rdi]
|
|
lea r13,[rax*2+r9]
|
|
mov rax,rdi
|
|
lea rbp,[r13*1+r13]
|
|
mul rbp
|
|
mov rcx,rax
|
|
mov rax,r11
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
lea rax,[rsi*8+rsi]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+rsi]
|
|
add rax,rax
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov r11,rcx
|
|
and rax,r15
|
|
mov r12,rbx
|
|
mov QWORD[((-88))+rsp],rax
|
|
lea rax,[r8*8+r8]
|
|
lea rcx,[rax*2+r8]
|
|
mov rax,rcx
|
|
mul r8
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rax,rcx
|
|
mov rcx,r11
|
|
adc rdx,rbx
|
|
mov rbx,r12
|
|
shrd rcx,r12,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rbp
|
|
adc rbx,rdx
|
|
mov QWORD[((-104))+rsp],rcx
|
|
and rcx,r15
|
|
mul r8
|
|
mov QWORD[((-120))+rsp],rcx
|
|
mov QWORD[((-96))+rsp],rbx
|
|
mov rcx,QWORD[((-104))+rsp]
|
|
mov rbx,QWORD[((-96))+rsp]
|
|
mov r11,rax
|
|
mov rax,rdi
|
|
mov r12,rdx
|
|
mul rdi
|
|
add r11,rax
|
|
mov rax,rsi
|
|
adc r12,rdx
|
|
mul r10
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
adc rdx,rbx
|
|
mov r11,rax
|
|
mov rbp,rax
|
|
mov rax,r13
|
|
mov r12,rdx
|
|
and rbp,r15
|
|
mul r9
|
|
mov rcx,rax
|
|
mov rax,r10
|
|
mov rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,r11
|
|
adc rdx,rbx
|
|
mov rbx,r12
|
|
shrd rcx,r12,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rsi
|
|
adc rbx,rdx
|
|
mov rdi,rcx
|
|
mul rsi
|
|
and rdi,r15
|
|
mov r11,rax
|
|
mov rax,r14
|
|
mov r12,rdx
|
|
mul r8
|
|
add r11,rax
|
|
mov rax,r9
|
|
adc r12,rdx
|
|
mul r10
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
adc rbx,rdx
|
|
mov r8,rcx
|
|
shrd rcx,rbx,51
|
|
and r8,r15
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[((-88))+rsp]
|
|
mov rcx,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-120))+rsp]
|
|
and rcx,r15
|
|
mov r11,rax
|
|
shr rax,51
|
|
and r11,r15
|
|
lea rsi,[rbp*1+rax]
|
|
lea rax,[r8*8+r8]
|
|
lea r14,[r11*1+r11]
|
|
lea rbp,[rcx*1+rcx]
|
|
mov QWORD[((-120))+rsp],r14
|
|
lea r14,[rax*2+r8]
|
|
mov rax,rcx
|
|
mul rcx
|
|
lea r13,[r14*1+r14]
|
|
mov rcx,rax
|
|
mov rax,r13
|
|
mov rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
lea rax,[rsi*8+rsi]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+rsi]
|
|
add rax,rax
|
|
mul rdi
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov r9,rcx
|
|
and rax,r15
|
|
mov r10,rbx
|
|
mov QWORD[((-104))+rsp],rax
|
|
lea rax,[rdi*8+rdi]
|
|
lea rcx,[rax*2+rdi]
|
|
mov rax,rcx
|
|
mul rdi
|
|
mov rcx,rax
|
|
mov rax,r11
|
|
mov rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul rsi
|
|
add rax,rcx
|
|
mov rcx,r9
|
|
adc rdx,rbx
|
|
mov rbx,r10
|
|
shrd rcx,r10,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,r11
|
|
adc rbx,rdx
|
|
mov r9,rcx
|
|
and rcx,r15
|
|
mul r11
|
|
mov QWORD[((-88))+rsp],rcx
|
|
mov rcx,r9
|
|
mov r11,rax
|
|
mov rax,r13
|
|
mov r12,rdx
|
|
mul rdi
|
|
add r11,rax
|
|
mov rax,rbp
|
|
adc r12,rdx
|
|
mul rsi
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,rdi
|
|
adc rbx,rdx
|
|
mov r13,rcx
|
|
mul rbp
|
|
and r13,r15
|
|
mov r9,rax
|
|
mov rax,r14
|
|
mov r10,rdx
|
|
mul r8
|
|
mov r14,QWORD[((-120))+rsp]
|
|
add r9,rax
|
|
mov rax,r14
|
|
adc r10,rdx
|
|
mul rsi
|
|
add rax,r9
|
|
adc rdx,r10
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,r14
|
|
mov r14,QWORD[136+rsp]
|
|
adc rbx,rdx
|
|
mov r9,rcx
|
|
mul rdi
|
|
and r9,r15
|
|
mov r11,rax
|
|
mov rax,rsi
|
|
mov r12,rdx
|
|
mul rsi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,rbp
|
|
add rsi,r11
|
|
adc rdi,r12
|
|
mul r8
|
|
add rsi,rax
|
|
adc rdi,rdx
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rsi
|
|
adc rbx,rdi
|
|
mov r8,rcx
|
|
shrd rcx,rbx,51
|
|
and r8,r15
|
|
lea rax,[rcx*8+rcx]
|
|
lea rax,[rax*2+rcx]
|
|
add rax,QWORD[((-104))+rsp]
|
|
mov r10,rax
|
|
shr rax,51
|
|
add rax,QWORD[((-88))+rsp]
|
|
and r10,r15
|
|
mov r11,rax
|
|
shr rax,51
|
|
lea rbp,[r13*1+rax]
|
|
mov r13,QWORD[80+rsp]
|
|
and r11,r15
|
|
lea rax,[r13*8+r13]
|
|
lea r12,[rax*2+r13]
|
|
lea rax,[r14*8+r14]
|
|
lea rbx,[rax*2+r14]
|
|
mov rax,rbx
|
|
mul r8
|
|
mov rcx,rax
|
|
mov rax,r9
|
|
mov rbx,rdx
|
|
mul r12
|
|
add rcx,rax
|
|
mov rax,QWORD[128+rsp]
|
|
adc rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,QWORD[192+rsp]
|
|
adc rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,QWORD[216+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
add rsi,rcx
|
|
mov rax,rsi
|
|
adc rdi,rbx
|
|
and rax,r15
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,r12
|
|
mul r8
|
|
mov rcx,rax
|
|
mov rax,QWORD[216+rsp]
|
|
mov rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,QWORD[128+rsp]
|
|
adc rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,QWORD[192+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[192+rsp]
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov r12,rsi
|
|
mul r9
|
|
and r12,r15
|
|
mov rcx,rax
|
|
mov rax,QWORD[216+rsp]
|
|
mov rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,QWORD[128+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[128+rsp]
|
|
adc rbx,rdx
|
|
shrd rsi,rdi,51
|
|
shr rdi,51
|
|
add rsi,rcx
|
|
adc rdi,rbx
|
|
mov rcx,rsi
|
|
mul r9
|
|
and rcx,r15
|
|
mov QWORD[((-104))+rsp],rcx
|
|
mov rcx,rax
|
|
mov rax,QWORD[192+rsp]
|
|
mov rbx,rdx
|
|
mul r8
|
|
add rcx,rax
|
|
mov rax,QWORD[24+rsp]
|
|
adc rbx,rdx
|
|
mul r10
|
|
add rcx,rax
|
|
mov rax,r13
|
|
adc rbx,rdx
|
|
mul r11
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rax,rcx
|
|
mov rcx,rsi
|
|
adc rdx,rbx
|
|
mov rbx,rdi
|
|
shrd rcx,rdi,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,QWORD[128+rsp]
|
|
adc rbx,rdx
|
|
mov rsi,rcx
|
|
and rsi,r15
|
|
mul r8
|
|
mov r13,rax
|
|
mov rax,QWORD[136+rsp]
|
|
mov r14,rdx
|
|
mul r9
|
|
add r13,rax
|
|
mov rax,QWORD[224+rsp]
|
|
adc r14,rdx
|
|
mul r10
|
|
add r13,rax
|
|
mov rax,QWORD[24+rsp]
|
|
adc r14,rdx
|
|
mul r11
|
|
add r13,rax
|
|
mov rax,QWORD[80+rsp]
|
|
adc r14,rdx
|
|
mul rbp
|
|
add rax,r13
|
|
adc rdx,r14
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rax,rcx
|
|
mov rcx,QWORD[((-104))+rsp]
|
|
adc rdx,rbx
|
|
mov rdi,rax
|
|
shrd rax,rdx,51
|
|
and rdi,r15
|
|
lea rdx,[rax*8+rax]
|
|
lea rax,[rdx*2+rax]
|
|
add rax,QWORD[((-120))+rsp]
|
|
mov rbp,rax
|
|
shr rax,51
|
|
add r12,rax
|
|
lea rax,[rdi*8+rdi]
|
|
and rbp,r15
|
|
mov r9,r12
|
|
shr r12,51
|
|
lea r10,[rcx*1+r12]
|
|
lea r8,[rax*2+rdi]
|
|
and r9,r15
|
|
lea rax,[r10*8+r10]
|
|
lea r14,[rax*2+r10]
|
|
lea rax,[rsi*8+rsi]
|
|
lea r13,[rax*2+rsi]
|
|
mov rax,QWORD[((-56))+rsp]
|
|
mul r8
|
|
mov rcx,rax
|
|
mov rax,QWORD[168+rsp]
|
|
mov rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,QWORD[72+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
lea rax,[r9*8+r9]
|
|
adc rbx,rdx
|
|
lea rax,[rax*2+r9]
|
|
mul QWORD[((-32))+rsp]
|
|
add rcx,rax
|
|
mov rax,QWORD[184+rsp]
|
|
adc rbx,rdx
|
|
mul r14
|
|
add rcx,rax
|
|
mov rax,rcx
|
|
adc rbx,rdx
|
|
mov r11,rcx
|
|
and rax,r15
|
|
mov r12,rbx
|
|
mov QWORD[((-120))+rsp],rax
|
|
mov rax,QWORD[168+rsp]
|
|
mul r8
|
|
mov rcx,rax
|
|
mov rax,QWORD[184+rsp]
|
|
mov rbx,rdx
|
|
mul r13
|
|
add rcx,rax
|
|
mov rax,QWORD[((-56))+rsp]
|
|
adc rbx,rdx
|
|
mul rbp
|
|
add rcx,rax
|
|
mov rax,QWORD[72+rsp]
|
|
adc rbx,rdx
|
|
mul r9
|
|
add rcx,rax
|
|
mov rax,r14
|
|
adc rbx,rdx
|
|
mul QWORD[((-32))+rsp]
|
|
add rax,rcx
|
|
mov rcx,r11
|
|
adc rdx,rbx
|
|
mov rbx,r12
|
|
shrd rcx,r12,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,QWORD[184+rsp]
|
|
adc rbx,rdx
|
|
mov r14,rcx
|
|
and r14,r15
|
|
mul r8
|
|
mov r11,rax
|
|
mov r12,rdx
|
|
mov rax,r13
|
|
mul QWORD[((-32))+rsp]
|
|
add r11,rax
|
|
mov rax,QWORD[168+rsp]
|
|
adc r12,rdx
|
|
mul rbp
|
|
add r11,rax
|
|
mov rax,QWORD[((-56))+rsp]
|
|
adc r12,rdx
|
|
mul r9
|
|
add r11,rax
|
|
mov rax,QWORD[72+rsp]
|
|
mov QWORD[((-96))+rsp],0
|
|
adc r12,rdx
|
|
mov QWORD[((-112))+rsp],0
|
|
mul r10
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,QWORD[72+rsp]
|
|
adc rbx,rdx
|
|
mov r13,rcx
|
|
and r13,r15
|
|
mul rsi
|
|
mov r11,rax
|
|
mov rax,r8
|
|
mov r8,QWORD[((-32))+rsp]
|
|
mov r12,rdx
|
|
mul r8
|
|
add r11,rax
|
|
mov rax,QWORD[184+rsp]
|
|
adc r12,rdx
|
|
mul rbp
|
|
add r11,rax
|
|
mov rax,QWORD[168+rsp]
|
|
adc r12,rdx
|
|
mul r9
|
|
add r11,rax
|
|
mov rax,QWORD[((-56))+rsp]
|
|
adc r12,rdx
|
|
mul r10
|
|
add rax,r11
|
|
adc rdx,r12
|
|
shrd rcx,rbx,51
|
|
shr rbx,51
|
|
add rcx,rax
|
|
mov rax,QWORD[72+rsp]
|
|
adc rbx,rdx
|
|
mul rdi
|
|
mov r11,rax
|
|
mov rax,QWORD[((-56))+rsp]
|
|
mov r12,rdx
|
|
mul rsi
|
|
mov rsi,rax
|
|
mov rdi,rdx
|
|
mov rax,r8
|
|
add rsi,r11
|
|
adc rdi,r12
|
|
mul rbp
|
|
add rsi,rax
|
|
mov rax,QWORD[184+rsp]
|
|
adc rdi,rdx
|
|
mul r9
|
|
add rsi,rax
|
|
mov rax,QWORD[168+rsp]
|
|
adc rdi,rdx
|
|
mul r10
|
|
add rsi,rax
|
|
mov rax,rcx
|
|
adc rdi,rdx
|
|
mov rdx,rbx
|
|
shrd rax,rbx,51
|
|
shr rdx,51
|
|
add rax,rsi
|
|
adc rdx,rdi
|
|
mov rsi,rax
|
|
mov QWORD[((-104))+rsp],rax
|
|
shrd rsi,rdx,51
|
|
mov rax,rcx
|
|
xor r10d,r10d
|
|
lea rdx,[rsi*8+rsi]
|
|
and rax,r15
|
|
mov r9,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
lea rbp,[rdx*2+rsi]
|
|
add rbp,QWORD[((-120))+rsp]
|
|
xor edx,edx
|
|
mov rbx,rdx
|
|
shr rbx,51
|
|
mov rdi,rbp
|
|
shr rdi,51
|
|
add rdi,r14
|
|
mov r8,rdi
|
|
shr r8,51
|
|
add r8,r13
|
|
mov rcx,r8
|
|
shrd rcx,rdx,51
|
|
add r9,rcx
|
|
adc r10,rbx
|
|
and rax,r15
|
|
xor r12d,r12d
|
|
mov r11,rax
|
|
mov rax,r9
|
|
mov rdx,r10
|
|
shrd rax,r10,51
|
|
shr rdx,51
|
|
add r11,rax
|
|
mov eax,19
|
|
adc r12,rdx
|
|
mov rcx,r11
|
|
and rbp,r15
|
|
shrd rcx,r12,51
|
|
mov rbx,r12
|
|
mul rcx
|
|
shr rbx,51
|
|
imul rsi,rbx,19
|
|
mov rcx,rax
|
|
mov rbx,rdx
|
|
xor edx,edx
|
|
add rbx,rsi
|
|
add rcx,rbp
|
|
adc rbx,rdx
|
|
mov rsi,rcx
|
|
and rdi,r15
|
|
shrd rsi,rbx,51
|
|
mov rax,rdi
|
|
mov rdi,rbx
|
|
xor edx,edx
|
|
shr rdi,51
|
|
add rsi,rax
|
|
mov rbx,rcx
|
|
adc rdi,rdx
|
|
and r8,r15
|
|
xor edx,edx
|
|
mov rbp,rdi
|
|
mov rdi,rsi
|
|
mov QWORD[((-120))+rsp],rsi
|
|
shrd rdi,rbp,51
|
|
shr rbp,51
|
|
mov rsi,r9
|
|
add rdi,r8
|
|
adc rbp,rdx
|
|
mov r8,rdi
|
|
and rsi,r15
|
|
shrd r8,rbp,51
|
|
mov r9,rbp
|
|
xor edx,edx
|
|
shr r9,51
|
|
add r8,rsi
|
|
mov rsi,r11
|
|
adc r9,rdx
|
|
and rsi,r15
|
|
xor edx,edx
|
|
mov r10,r9
|
|
mov r9,r8
|
|
mov QWORD[((-104))+rsp],r8
|
|
shrd r9,r10,51
|
|
shr r10,51
|
|
add r9,rsi
|
|
mov esi,19
|
|
mov r8,r9
|
|
adc r10,rdx
|
|
and rbx,r15
|
|
mov rax,r8
|
|
mov rdx,r10
|
|
mov r11,rbx
|
|
shrd rax,r10,51
|
|
shr rdx,51
|
|
xor r12d,r12d
|
|
mov rbx,rdi
|
|
imul r10,rdx,19
|
|
mul rsi
|
|
add rdx,r10
|
|
add r11,19
|
|
adc r12,0
|
|
add r11,rax
|
|
mov rax,QWORD[((-120))+rsp]
|
|
adc r12,rdx
|
|
xor r14d,r14d
|
|
mov rdx,r12
|
|
and rax,r15
|
|
shr rdx,51
|
|
mov r13,rax
|
|
mov rax,r11
|
|
shrd rax,r12,51
|
|
add r13,rax
|
|
mov rax,QWORD[((-104))+rsp]
|
|
adc r14,rdx
|
|
mov rsi,r13
|
|
and rbx,r15
|
|
shrd rsi,r14,51
|
|
mov rdi,r14
|
|
xor edx,edx
|
|
shr rdi,51
|
|
add rsi,rbx
|
|
adc rdi,rdx
|
|
and rax,r15
|
|
xor ebx,ebx
|
|
mov rcx,rax
|
|
mov rax,rsi
|
|
mov rdx,rdi
|
|
shrd rax,rdi,51
|
|
shr rdx,51
|
|
mov rdi,r8
|
|
mov QWORD[((-120))+rsp],rsi
|
|
add rcx,rax
|
|
mov esi,19
|
|
adc rbx,rdx
|
|
mov r8,rcx
|
|
and rdi,r15
|
|
shrd r8,rbx,51
|
|
mov r9,rbx
|
|
xor edx,edx
|
|
mov rbx,rcx
|
|
shr r9,51
|
|
add r8,rdi
|
|
adc r9,rdx
|
|
mov rax,r8
|
|
xor r12d,r12d
|
|
shrd rax,r9,51
|
|
mov rdx,r9
|
|
mov QWORD[((-80))+rsp],r9
|
|
xor r10d,r10d
|
|
shr rdx,51
|
|
mov QWORD[((-88))+rsp],r8
|
|
imul rdi,rdx,19
|
|
mul rsi
|
|
add rdx,rdi
|
|
mov rdi,r11
|
|
mov r11,2251799813685229
|
|
and rdi,r15
|
|
mov r9,rdi
|
|
mov rdi,r13
|
|
add r9,r11
|
|
adc r10,r12
|
|
add rax,r9
|
|
mov r9,2251799813685247
|
|
adc rdx,r10
|
|
and rdi,r15
|
|
xor r10d,r10d
|
|
mov r11,rdi
|
|
xor r12d,r12d
|
|
mov r13,rax
|
|
add r11,r9
|
|
mov rdi,QWORD[((-120))+rsp]
|
|
mov r14,rdx
|
|
adc r12,r10
|
|
shr r14,51
|
|
shrd r13,rdx,51
|
|
add r13,r11
|
|
adc r14,r12
|
|
and rdi,r15
|
|
xor r12d,r12d
|
|
mov rsi,rdi
|
|
mov r11,r13
|
|
mov rdi,r12
|
|
add rsi,r9
|
|
mov r12,r14
|
|
adc rdi,r10
|
|
shr r12,51
|
|
shrd r11,r14,51
|
|
add r11,rsi
|
|
adc r12,rdi
|
|
and rbx,r15
|
|
xor r14d,r14d
|
|
mov rdi,r13
|
|
mov rcx,rbx
|
|
mov r13,r11
|
|
and rdi,r15
|
|
mov rbx,r14
|
|
add rcx,r9
|
|
adc rbx,r10
|
|
mov r14,r12
|
|
mov QWORD[((-104))+rsp],rdi
|
|
shrd r13,r12,51
|
|
mov rsi,QWORD[((-104))+rsp]
|
|
shr r14,51
|
|
add r13,rcx
|
|
adc r14,rbx
|
|
mov rbx,r11
|
|
mov rdi,r13
|
|
and rbx,r15
|
|
mov rdx,rsi
|
|
and rax,r15
|
|
mov r13,rbx
|
|
mov rbx,rdi
|
|
sal rdx,51
|
|
and rbx,r15
|
|
or rax,rdx
|
|
mov r11,rdi
|
|
mov QWORD[((-120))+rsp],rbx
|
|
mov rbx,QWORD[352+rsp]
|
|
mov rdx,rax
|
|
shr rdx,8
|
|
mov rdi,QWORD[((-96))+rsp]
|
|
mov rbp,r14
|
|
mov rcx,r13
|
|
xor r14d,r14d
|
|
mov BYTE[1+rbx],dl
|
|
mov rdx,rax
|
|
mov BYTE[rbx],al
|
|
shr rdx,16
|
|
mov BYTE[2+rbx],dl
|
|
mov rdx,rax
|
|
shr rdx,24
|
|
mov BYTE[3+rbx],dl
|
|
mov rdx,rax
|
|
shr rdx,32
|
|
mov BYTE[4+rbx],dl
|
|
mov rdx,rax
|
|
mov r12,QWORD[((-112))+rsp]
|
|
shr rdx,40
|
|
mov BYTE[5+rbx],dl
|
|
mov rdx,rax
|
|
shr rax,56
|
|
mov BYTE[7+rbx],al
|
|
mov rax,r13
|
|
shr rdx,48
|
|
shrd rsi,rdi,13
|
|
sal rax,38
|
|
mov rdi,rbx
|
|
mov BYTE[6+rbx],dl
|
|
or rsi,rax
|
|
mov r13,r11
|
|
mov r11,QWORD[((-120))+rsp]
|
|
mov rax,rsi
|
|
mov BYTE[8+rbx],sil
|
|
shr rax,8
|
|
mov BYTE[9+rbx],al
|
|
mov rax,rsi
|
|
shr rax,16
|
|
mov BYTE[10+rbx],al
|
|
mov rax,rsi
|
|
shr rax,24
|
|
mov BYTE[11+rbx],al
|
|
mov rax,rsi
|
|
shr rax,32
|
|
mov BYTE[12+rbx],al
|
|
mov rax,rsi
|
|
shr rax,40
|
|
mov BYTE[13+rbx],al
|
|
mov rax,rsi
|
|
shr rsi,56
|
|
shr rax,48
|
|
mov BYTE[15+rbx],sil
|
|
mov BYTE[14+rbx],al
|
|
mov rax,QWORD[((-120))+rsp]
|
|
mov rbx,rdi
|
|
shrd rcx,r14,26
|
|
sal rax,25
|
|
or rcx,rax
|
|
mov rax,rcx
|
|
mov BYTE[16+rdi],cl
|
|
shr rax,8
|
|
mov BYTE[17+rdi],al
|
|
mov rax,rcx
|
|
shr rax,16
|
|
mov BYTE[18+rdi],al
|
|
mov rax,rcx
|
|
shr rax,24
|
|
mov BYTE[19+rdi],al
|
|
mov rax,rcx
|
|
shr rax,32
|
|
mov BYTE[20+rdi],al
|
|
mov rax,rcx
|
|
shr rax,40
|
|
mov BYTE[21+rdi],al
|
|
mov rax,rcx
|
|
shr rax,48
|
|
shr rcx,56
|
|
mov BYTE[22+rdi],al
|
|
mov BYTE[23+rdi],cl
|
|
mov rdi,QWORD[((-88))+rsp]
|
|
and rdi,r15
|
|
mov rax,rdi
|
|
add rax,r9
|
|
shrd r13,rbp,51
|
|
add rax,r13
|
|
and rax,r15
|
|
shrd r11,r12,39
|
|
sal rax,12
|
|
or rax,r11
|
|
mov rdx,rax
|
|
mov BYTE[24+rbx],al
|
|
shr rdx,8
|
|
mov BYTE[25+rbx],dl
|
|
mov rdx,rax
|
|
shr rdx,16
|
|
mov BYTE[26+rbx],dl
|
|
mov rdx,rax
|
|
shr rdx,24
|
|
mov BYTE[27+rbx],dl
|
|
mov rdx,rax
|
|
shr rdx,32
|
|
mov BYTE[28+rbx],dl
|
|
mov rdx,rax
|
|
shr rdx,40
|
|
mov BYTE[29+rbx],dl
|
|
mov rdx,rax
|
|
shr rax,56
|
|
shr rdx,48
|
|
mov BYTE[31+rbx],al
|
|
xor eax,eax
|
|
mov BYTE[30+rbx],dl
|
|
add rsp,784
|
|
|
|
|
|
pop rdi
|
|
pop rsi
|
|
pop rbx
|
|
pop rbp
|
|
pop r12
|
|
pop r13
|
|
pop r14
|
|
pop r15
|
|
ret
|
|
|
|
$L$FE13:
|
|
|
|
|