tunsafe-clang15/crypto/curve25519/curve25519-x64-win.asm
2018-10-21 16:54:19 +02:00

6826 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: