Function at 0x140041ac0
Capabilities:
Encrypt data using curve25519

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x358
movaps xmmword [rsp + 0x340], xmm6
mov qword [rsp + 0x130], rcx
mov rax, qword [0x14039de68]
xor rax, rsp
mov qword [rsp + 0x338], rax
movdqu xmm0, xmmword [rdx]
movdqu xmm1, xmmword [rdx + 0x10]
movdqa xmmword [rsp + 0x150], xmm0
and byte [rsp + 0x150], 0xf8
movabs rbp, 0x7ffffffffffff
movdqa xmmword [rsp + 0x160], xmm1
movzx eax, byte [rsp + 0x16f]
and al, 0x3f
or al, 0x40
mov byte [rsp + 0x16f], al
mov r14d, dword [r8]
mov eax, dword [r8 + 0x10]
movzx esi, byte [r8 + 4]
movzx r15d, byte [r8 + 5]
movzx edx, byte [r8 + 6]
movzx r9d, byte [r8 + 7]
movzx r10d, byte [r8 + 8]
movzx r11d, byte [r8 + 9]
movzx edi, byte [r8 + 0xa]
movzx ebx, byte [r8 + 0x1b]
mov ecx, dword [r8 + 0x1c]
and ecx, 0x7fffffff
shl rcx, 0x14
shl ebx, 0xc
or rbx, rcx
movzx ecx, byte [r8 + 0x1a]
shl ecx, 4
or rcx, rbx
shl r15, 0x28
mov r12d, edx
and r12d, 7
shl r12, 0x30
or r12, r15
movzx r15d, byte [r8 + 0xb]
or r12, r14
movzx r14d, byte [r8 + 0xc]
shl r15, 0x25
shl rsi, 0x20
or r12, rsi
mov esi, r14d
and esi, 0x3f
shl rsi, 0x2d
or rsi, r15
movzx r15d, byte [r8 + 0xd]
shl rdi, 0x1d
or rsi, rdi
movzx edi, byte [r8 + 0xe]
shl r11d, 0x15
or rsi, r11
movzx r11d, byte [r8 + 0xf]
shl r10d, 0xd
or rsi, r10
movzx r10d, byte [r8 + 0x14]
shl r9d, 5
or rsi, r9
mov r9, rax
shl r9, 0x1a
shr edx, 3
or rsi, rdx
lea rdx, [rbp - 0x3ffffff]
and rdx, r9
movzx r9d, byte [r8 + 0x15]
mov ebx, dword [r8 + 0x16]
shl r11d, 0x12
or rdx, r11
mov r8, rbx
shl r8, 0x17
shl r9d, 0xf
shl r10d, 7
shl edi, 0xa
shr r14d, 6
or rdx, rdi
lea r15, [rdx + r15*4]
or r15, r14
shr eax, 0x19
lea r13, [rbp - 0x7fffff]
and r13, r8
or r13, r9
or r13, r10
or r13, rax
shr ebx, 0x1c
or rbx, rcx
mov qword [rsp + 0x2e8], r12
mov qword [rsp + 0x2f0], rsi
mov qword [rsp + 0x2f8], r15
mov qword [rsp + 0x300], r13
mov qword [rsp + 0x308], rbx
pxor xmm0, xmm0
movdqu xmmword [rsp + 0x2c8], xmm0
movdqu xmmword [rsp + 0x2d8], xmm0
mov qword [rsp + 0x2c0], 1
movdqa xmmword [rsp + 0x290], xmm0
movdqa xmmword [rsp + 0x2a0], xmm0
mov qword [rsp + 0x2b0], 0
movdqu xmmword [rsp + 0x268], xmm0
movdqu xmmword [rsp + 0x278], xmm0
mov qword [rsp + 0x260], 1
mov eax, 0xfe
xor ecx, ecx
movdqa xmm6, xmmword [0x1402a6170]
lea rdx, [rbp - 1]
mov qword [rsp + 0x138], rdx
nop
mov dword [rsp + 0xf4], eax
mov edi, ecx
shr eax, 3
movzx eax, byte [rsp + rax + 0x150]
mov ecx, dword [rsp + 0xf4]
and ecx, 7
bt eax, ecx
mov eax, 0
setb al
mov dword [rsp + 0x12c], eax
xor edi, eax
mov rcx, qword [rsp + 0x2c0]
mov rdx, qword [rsp + 0x2c8]
neg rdi
mov rax, rcx
xor rax, r12
and rax, rdi
xor rcx, rax
mov r11, rcx
mov qword [rsp + 0xc0], rcx
mov rcx, rax
mov rax, rdx
xor rax, rsi
and rax, rdi
xor rcx, r12
mov r8, rcx
mov qword [rsp + 0xd8], rcx
xor rdx, rax
mov r10, rdx
mov qword [rsp + 0xc8], rdx
mov rdx, qword [rsp + 0x290]
mov r12, qword [rsp + 0x298]
xor rax, rsi
mov rsi, rax
mov qword [rsp + 0xb8], rax
mov rax, qword [rsp + 0x260]
mov rcx, qword [rsp + 0x268]
mov r9, rax
mov qword [rsp + 0x2c0], r11
xor r9, rdx
and r9, rdi
xor rdx, r9
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x2c8], r10
xor r9, rax
mov r14, rcx
xor r14, r12
mov rax, qword [rsp + 0x2d0]
and r14, rdi
xor r12, r14
mov qword [rsp + 0x40], r12
xor r14, rcx
mov rbp, rax
xor rbp, r15
and rbp, rdi
mov qword [rsp + 0x290], rdx
xor rax, rbp
mov rdx, rax
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x260], r9
mov qword [rsp + 0xd0], r9
mov qword [rsp + 0x298], r12
mov qword [rsp + 0x268], r14
xor rbp, r15
mov rcx, qword [rsp + 0x2a0]
mov rax, qword [rsp + 0x270]
mov r11, rax
xor r11, rcx
and r11, rdi
xor rcx, r11
mov r10, rcx
mov qword [rsp + 0xe0], rcx
xor r11, rax
movabs rcx, 0xffffffffffffe
lea rax, [r8 + rcx]
add rax, 0xffffffffffffffdc
sub rax, r9
mov qword [rsp + 0x198], rax
lea rax, [rsi + rcx]
sub rax, r14
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x2d0], rdx
mov r15, qword [rsp + 0x2d8]
mov r8, r15
xor r8, r13
and r8, rdi
xor r15, r8
xor r8, r13
lea rax, [rcx + rbp]
mov r13, rcx
sub rax, r11
mov qword [rsp + 0x1a8], rax
mov qword [rsp + 0x2a0], r10
mov qword [rsp + 0x270], r11
mov r9, qword [rsp + 0x2a8]
mov rax, qword [rsp + 0x278]
mov rdx, rax
xor rdx, r9
and rdx, rdi
xor r9, rdx
xor rdx, rax
mov qword [rsp + 0x2d8], r15
mov rsi, qword [rsp + 0x2e0]
mov r10, rsi
xor r10, rbx
and r10, rdi
mov qword [rsp + 0x2a8], r9
mov qword [rsp + 0x278], rdx
mov rax, qword [rsp + 0x2b0]
mov qword [rsp + 0x38], rax
mov rcx, qword [rsp + 0x280]
mov qword [rsp + 0xb0], rcx
xor rcx, rax
and rcx, rdi
lea rdi, [r8 + r13]
sub rdi, rdx
mov qword [rsp + 0x1b0], rdi
mov rdi, qword [rsp + 0xc0]
lea r12, [rdi + r13]
add r12, 0xffffffffffffffdc
mov rax, qword [rsp + 0x30]
sub r12, rax
mov qword [rsp + 0x58], r12
add rax, rdi
mov qword [rsp + 0x30], rax
xor rsi, r10
xor r10, rbx
mov r12, qword [rsp + 0xc8]
lea rdi, [r12 + r13]
mov rax, qword [rsp + 0x40]
sub rdi, rax
add rax, r12
mov qword [rsp + 0x40], rax
mov rbx, qword [rsp + 0x28]
lea r12, [rbx + r13]
mov rax, qword [rsp + 0xe0]
sub r12, rax
add rax, rbx
mov qword [rsp + 0xe0], rax
lea rbx, [r15 + r13]
sub rbx, r9
add r9, r15
mov qword [rsp + 0x28], r9
mov rax, qword [rsp + 0xd0]
add rax, qword [rsp + 0xd8]
mov r15, qword [rsp + 0x38]
xor r15, rcx
xor rcx, qword [rsp + 0xb0]
add r14, qword [rsp + 0xb8]
add r11, rbp
add rdx, r8
mov qword [rsp + 0x2e0], rsi
mov qword [rsp + 0x2b0], r15
lea rbp, [rsi + r13]
sub rbp, r15
add r15, rsi
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x280], rcx
lea r8, [r10 + r13]
sub r8, rcx
add rcx, r10
mov qword [rsp + 0x1c0], rax
mov qword [rsp + 0x1c8], r14
mov qword [rsp + 0x1d0], r11
mov qword [rsp + 0x1b8], r8
mov qword [rsp + 0x1d8], rdx
mov qword [rsp + 0x1e0], rcx
mov rsi, qword [rsp + 0x58]
mov qword [rsp + 0x170], rsi
mov qword [rsp + 0x178], rdi
mov qword [rsp + 0x180], r12
mov qword [rsp + 0x188], rbx
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x1e8], rax
mov qword [rsp + 0x190], rbp
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x1f0], rax
mov r13, qword [rsp + 0xe0]
mov qword [rsp + 0x1f8], r13
mov qword [rsp + 0x200], r9
mov qword [rsp + 0x208], r15
lea rcx, [rsp + 0x260]
lea rdx, [rsp + 0x198]
lea r8, [rsp + 0x1e8]
call fcn.1400459c0
lea rcx, [rsp + 0x290]
lea rdx, [rsp + 0x1c0]
lea r8, [rsp + 0x170]
call fcn.1400459c0
lea rax, [rbp*8]
add rax, rbp
lea rax, [rax*2]
add rax, rbp
imul rcx, rbp, 0x26
lea rdx, [rbx + rbx*8]
lea r8, [rbx + rdx*2]
mul rbp
mov qword [rsp + 0xc0], rax
mov qword [rsp + 0xc8], rdx
mov rax, rcx
mul rbx
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], rdx
imul r10, rbx, 0x26
lea r9, [rbx + rbx]
mov rax, r8
mul rbx
mov qword [rsp + 0xb8], rdx
mov qword [rsp + 0xa8], rax
mov rax, rcx
mul r12
mov qword [rsp + 0xb0], rdx
mov qword [rsp + 0xa0], rax
mov rax, r10
mul r12
mov qword [rsp + 0x60], rax
mov qword [rsp + 0x68], rdx
lea r8, [r12 + r12]
mov rax, r12
mul r12
mov qword [rsp + 0x88], rdx
mov qword [rsp + 0x78], rax
mov rax, rcx
mul rdi
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x48], rax
mov rax, r9
mul rdi
mov r12, rax
mov r11, rdx
add rbp, rbp
mov rax, r8
mul rdi
mov qword [rsp + 0x98], rdx
mov qword [rsp + 0x90], rax
mov rax, rdi
mul rdi
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0x70], rax
mov rax, rbp
mov rcx, rsi
mul rsi
mov r10, rax
mov rbx, rdx
lea rbp, [rdi + rdi]
mov rax, r9
mul rsi
mov r15, rdx
mov r14, rax
mov rax, r8
mul rsi
mov r9, rdx
mov rsi, rax
mov rax, rbp
mul rcx
mov r8, rdx
mov rbp, rax
mov rax, rcx
mul rcx
add rax, qword [rsp + 0x60]
adc rdx, qword [rsp + 0x68]
add rax, qword [rsp + 0x48]
adc rdx, qword [rsp + 0x50]
shld rdx, rax, 0xd
movabs rdi, 0x7ffffffffffff
and rax, rdi
add r12, qword [rsp + 0x78]
adc r11, qword [rsp + 0x88]
add r12, r10
adc r11, rbx
add rbp, qword [rsp + 0xa8]
adc r8, qword [rsp + 0xb8]
add rbp, qword [rsp + 0xa0]
adc r8, qword [rsp + 0xb0]
add rbp, rdx
adc r8, 0
shld r8, rbp, 0xd
and rbp, rdi
add rsi, qword [rsp + 0x70]
adc r9, qword [rsp + 0x80]
add rsi, qword [rsp + 0xd0]
adc r9, qword [rsp + 0xd8]
add rsi, r8
adc r9, 0
shld r9, rsi, 0xd
and rsi, rdi
add r14, qword [rsp + 0x90]
adc r15, qword [rsp + 0x98]
add r14, qword [rsp + 0xc0]
adc r15, qword [rsp + 0xc8]
add r14, r9
adc r15, 0
shld r15, r14, 0xd
and r14, rdi
mov qword [rsp + 0xd0], r14
add r15, r12
adc r11, 0
shld r11, r15, 0xd
and r15, rdi
mov qword [rsp + 0xc8], r15
lea rcx, [r11 + r11*8]
lea rcx, [r11 + rcx*2]
add rcx, rax
mov r14, rcx
shr r14, 0x33
add r14, rbp
and rcx, rdi
mov qword [rsp + 0xc0], rcx
mov rcx, r14
shr rcx, 0x33
add rcx, rsi
mov qword [rsp + 0xd8], rcx
mov rdi, qword [rsp + 0x38]
lea rax, [rdi + rdi*8]
lea rax, [rdi + rax*2]
imul rcx, rdi, 0x26
mov r10, qword [rsp + 0x28]
lea rdx, [r10 + r10*8]
lea r8, [r10 + rdx*2]
mul rdi
mov qword [rsp + 0xb0], rax
mov qword [rsp + 0xb8], rdx
mov rax, rcx
mul r10
mov qword [rsp + 0xa0], rax
mov qword [rsp + 0xa8], rdx
imul r9, r10, 0x26
lea r12, [r10 + r10]
mov rax, r8
mul r10
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x90], rax
mov rax, rcx
mul r13
mov qword [rsp + 0x98], rdx
mov qword [rsp + 0x88], rax
mov rax, r9
mul r13
mov qword [rsp + 0x50], rax
mov rbp, rdx
lea r10, [r13*2]
mov rax, r13
mul r13
mov qword [rsp + 0x70], rdx
mov qword [rsp + 0x60], rax
mov rax, rcx
mov rcx, qword [rsp + 0x40]
mul rcx
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0xe8], rax
mov rax, r12
mul rcx
mov rsi, rax
mov r11, rdx
add rdi, rdi
mov rax, r10
mul rcx
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0x78], rax
mov rax, rcx
mul rcx
mov qword [rsp + 0x68], rdx
mov qword [rsp + 0x58], rax
mov rax, rdi
mov rbx, qword [rsp + 0x30]
mul rbx
mov r9, rax
mov r8, rdx
add rcx, rcx
mov rax, r12
mul rbx
mov qword [rsp + 0x38], rdx
mov r13, rax
mov rax, r10
mul rbx
mov rdi, rdx
mov r12, rax
mov rax, rcx
mul rbx
mov r15, rax
mov rcx, rdx
movabs r10, 0x7ffffffffffff
and r14, r10
mov qword [rsp + 0xe0], r14
mov rax, rbx
mul rbx
add rax, qword [rsp + 0x50]
adc rbp, rdx
add rax, qword [rsp + 0xe8]
adc rbp, qword [rsp + 0x48]
shld rbp, rax, 0xd
and rax, r10
add rsi, qword [rsp + 0x60]
adc r11, qword [rsp + 0x70]
add rsi, r9
adc r11, r8
add r15, qword [rsp + 0x90]
adc rcx, qword [rsp + 0x28]
add r15, qword [rsp + 0x88]
adc rcx, qword [rsp + 0x98]
add r15, rbp
adc rcx, 0
shld rcx, r15, 0xd
and r15, r10
add r12, qword [rsp + 0x58]
adc rdi, qword [rsp + 0x68]
add r12, qword [rsp + 0xa0]
adc rdi, qword [rsp + 0xa8]
add r12, rcx
adc rdi, 0
shld rdi, r12, 0xd
and r12, r10
add r13, qword [rsp + 0x78]
mov r14, qword [rsp + 0x38]
adc r14, qword [rsp + 0x80]
add r13, qword [rsp + 0xb0]
adc r14, qword [rsp + 0xb8]
add r13, rdi
adc r14, 0
shld r14, r13, 0xd
and r13, r10
mov qword [rsp + 0x28], r13
add r14, rsi
adc r11, 0
shld r11, r14, 0xd
mov r9, r14
lea rcx, [r11 + r11*8]
lea rbx, [r11 + rcx*2]
add rbx, rax
mov r10, rbx
shr r10, 0x33
add r10, r15
mov qword [rsp + 0x30], r10
shr r10, 0x33
add r10, r12
mov qword [rsp + 0x40], r10
mov rax, qword [rsp + 0x260]
mov r13, qword [rsp + 0x268]
mov rcx, qword [rsp + 0x290]
mov rdx, qword [rsp + 0x298]
lea r8, [rcx + rax]
mov qword [rsp + 0xb8], r8
movabs r8, 0xffffffffffffe
add rax, r8
add rax, 0xffffffffffffffdc
sub rax, rcx
mov r11, rax
mov qword [rsp + 0x78], rax
lea rax, [rdx + r13]
mov qword [rsp + 0xb0], rax
add r13, r8
sub r13, rdx
mov rbp, qword [rsp + 0x270]
mov rax, qword [rsp + 0x2a0]
lea rcx, [rax + rbp]
mov qword [rsp + 0xa8], rcx
add rbp, r8
sub rbp, rax
mov rsi, qword [rsp + 0x278]
mov rax, qword [rsp + 0x2a8]
lea rcx, [rax + rsi]
mov qword [rsp + 0xa0], rcx
add rsi, r8
sub rsi, rax
mov r12, qword [rsp + 0x280]
mov rax, qword [rsp + 0x2b0]
lea rcx, [rax + r12]
mov qword [rsp + 0x98], rcx
add r12, r8
sub r12, rax
mov rax, qword [rsp + 0xc0]
mov qword [rsp + 0x238], rax
mov r14, qword [rsp + 0xe0]
mov qword [rsp + 0x240], r14
mov r15, qword [rsp + 0xd8]
mov qword [rsp + 0x248], r15
mov rdi, qword [rsp + 0xd0]
mov qword [rsp + 0x250], rdi
mov rax, qword [rsp + 0xc8]
mov qword [rsp + 0x258], rax
movabs rax, 0x7ffffffffffff
and r9, rax
mov qword [rsp + 0x38], r9
and rbx, rax
mov rcx, qword [rsp + 0x30]
and rcx, rax
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x210], rbx
mov qword [rsp + 0x218], rcx
mov qword [rsp + 0x220], r10
mov rax, qword [rsp + 0x28]
mov qword [rsp + 0x228], rax
mov qword [rsp + 0x230], r9
mov qword [rsp + 0x1c0], r11
mov qword [rsp + 0x1c8], r13
mov qword [rsp + 0x1d0], rbp
mov qword [rsp + 0x1d8], rsi
mov qword [rsp + 0x1e0], r12
lea rcx, [rsp + 0x2c0]
lea rdx, [rsp + 0x210]
lea r8, [rsp + 0x238]
call fcn.1400459c0
movabs rax, 0xffffffffffffe
lea rcx, [rbx + rax]
add rcx, 0xffffffffffffffdc
sub rcx, qword [rsp + 0xc0]
mov qword [rsp + 0x90], rcx
mov rcx, qword [rsp + 0x30]
add rcx, rax
sub rcx, r14
mov qword [rsp + 0x30], rcx
mov rcx, qword [rsp + 0x40]
add rcx, rax
sub rcx, r15
mov qword [rsp + 0x40], rcx
mov rcx, qword [rsp + 0x28]
add rcx, rax
sub rcx, rdi
mov rdi, rcx
mov rbx, qword [rsp + 0x38]
add rbx, rax
lea rax, [r12 + r12*8]
lea rax, [r12 + rax*2]
mul r12
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x38], rdx
lea rax, [rsi + rsi*8]
lea r9, [rsi + rax*2]
imul rcx, r12, 0x26
mov rax, rcx
mul rsi
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x88], rdx
imul r10, rsi, 0x26
lea r8, [rsi + rsi]
mov rax, r9
mul rsi
mov qword [rsp + 0x70], rdx
mov qword [rsp + 0x60], rax
mov rax, rcx
mul rbp
mov qword [rsp + 0x68], rdx
mov qword [rsp + 0x58], rax
mov rax, r10
mul rbp
mov qword [rsp + 0x108], rax
mov r15, rdx
lea r9, [rbp*2]
mov rax, rbp
mul rbp
mov qword [rsp + 0xe8], rdx
mov qword [rsp + 0x118], rax
mov rax, rcx
mul r13
mov qword [rsp + 0x100], rdx
mov qword [rsp + 0xf8], rax
mov rax, r8
mul r13
mov rbp, rax
mov rcx, rdx
add r12, r12
mov rax, r9
mul r13
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x48], rax
mov rax, r13
mul r13
mov qword [rsp + 0x120], rdx
mov qword [rsp + 0x110], rax
mov rax, r12
mov rsi, qword [rsp + 0x78]
mul rsi
mov qword [rsp + 0x140], rax
mov qword [rsp + 0x148], rdx
lea r12, [r13*2]
mov rax, r8
mul rsi
mov r8, rdx
mov r11, rax
mov rax, r9
mul rsi
mov r10, rdx
mov r14, rax
mov rax, r12
mul rsi
mov r12, rax
mov r9, rdx
sub rbx, qword [rsp + 0xc8]
mov r13, rbx
mov rax, rsi
mul rsi
add rax, qword [rsp + 0x108]
adc rdx, r15
add rax, qword [rsp + 0xf8]
adc rdx, qword [rsp + 0x100]
shld rdx, rax, 0xd
movabs r15, 0x7ffffffffffff
and rax, r15
add rbp, qword [rsp + 0x118]
adc rcx, qword [rsp + 0xe8]
add rbp, qword [rsp + 0x140]
adc rcx, qword [rsp + 0x148]
add r12, qword [rsp + 0x60]
adc r9, qword [rsp + 0x70]
add r12, qword [rsp + 0x58]
adc r9, qword [rsp + 0x68]
add r12, rdx
adc r9, 0
shld r9, r12, 0xd
and r12, r15
add r14, qword [rsp + 0x110]
adc r10, qword [rsp + 0x120]
add r14, qword [rsp + 0x80]
adc r10, qword [rsp + 0x88]
add r14, r9
adc r10, 0
shld r10, r14, 0xd
and r14, r15
add r11, qword [rsp + 0x48]
adc r8, qword [rsp + 0x50]
add r11, qword [rsp + 0x28]
adc r8, qword [rsp + 0x38]
add r11, r10
adc r8, 0
shld r8, r11, 0xd
add r8, rbp
adc rcx, 0
shld rcx, r8, 0xd
movq xmm1, r8
movq xmm0, r11
lea rdx, [rcx + rcx*8]
lea rbx, [rcx + rdx*2]
add rbx, rax
mov rsi, rbx
shr rsi, 0x33
add rsi, r12
mov rax, rsi
shr rax, 0x33
add rax, r14
mov qword [rsp + 0x38], rax
mov rbp, qword [rsp + 0x90]
mov qword [rsp + 0x170], rbp
mov r10, qword [rsp + 0x30]
mov qword [rsp + 0x178], r10
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x180], rcx
mov qword [rsp + 0x188], rdi
mov rax, r13
mov qword [rsp + 0x190], r13
mov r12d, 0x1db42
mul r12
mov r11, rax
mov r9, rdx
and rbx, r15
mov rax, rdi
mul r12
mov r8, rdx
mov r14, rax
mov rax, rcx
mul r12
mov r13, rdx
mov rcx, rax
mov rax, r10
mul r12
mov rdi, rax
mov r10, rdx
and rsi, r15
mov rax, rbp
mul r12
shld rdx, rax, 0xd
and rax, qword [rsp + 0x138]
add rdx, rdi
adc r10, 0
shld r10, rdx, 0xd
and rdx, r15
add r10, rcx
adc r13, 0
shld r13, r10, 0xd
and r10, r15
add r13, r14
adc r8, 0
shld r8, r13, 0xd
and r13, r15
mov qword [rsp + 0x30], r13
add r8, r11
adc r9, 0
mov qword [rsp + 0x290], rbx
shld r9, r8, 0xd
mov r11, r8
lea rcx, [r9 + r9*8]
lea rcx, [r9 + rcx*2]
add rcx, rax
mov r8, rcx
shr r8, 0x33
add r8, rdx
mov rax, r8
shr rax, 0x33
add rax, r10
mov qword [rsp + 0x28], rax
and r11, r15
mov qword [rsp + 0x40], r11
and rcx, r15
mov qword [rsp + 0x90], rcx
mov r12, qword [rsp + 0x98]
lea rax, [r12 + r12*8]
lea rax, [r12 + rax*2]
mul r12
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x88], rdx
mov rcx, qword [rsp + 0xa0]
lea rax, [rcx + rcx*8]
lea r9, [rcx + rax*2]
imul r10, r12, 0x26
mov rax, r10
mul rcx
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], rdx
imul r11, rcx, 0x26
lea r14, [rcx + rcx]
mov rax, r9
mul rcx
mov qword [rsp + 0xa0], rdx
mov qword [rsp + 0x60], rax
mov rax, r10
mov rcx, qword [rsp + 0xa8]
mul rcx
mov qword [rsp + 0x68], rdx
mov qword [rsp + 0x58], rax
mov rax, r11
mul rcx
mov qword [rsp + 0x110], rax
mov qword [rsp + 0x118], rdx
lea r9, [rcx + rcx]
mov rax, rcx
mul rcx
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x120], rax
mov rax, r10
mov rcx, qword [rsp + 0xb0]
mul rcx
mov qword [rsp + 0x108], rdx
mov qword [rsp + 0x100], rax
mov rax, r14
mul rcx
mov r11, rax
mov rdi, rdx
add r12, r12
mov rax, r9
mul rcx
mov qword [rsp + 0xa8], rdx
mov qword [rsp + 0x98], rax
mov rax, rcx
mul rcx
mov r15, rcx
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0xe8], rax
mov rax, r12
mov rcx, qword [rsp + 0xb8]
mul rcx
mov r12, rax
mov qword [rsp + 0xf8], rdx
add r15, r15
mov rax, r14
mul rcx
mov rbx, rdx
mov r13, rax
mov rax, r9
mul rcx
mov rbp, rdx
mov r14, rax
mov rax, r15
mul rcx
mov r15, rax
mov r9, rdx
movabs r10, 0x7ffffffffffff
and r8, r10
mov rax, rcx
mul rcx
add rax, qword [rsp + 0x110]
adc rdx, qword [rsp + 0x118]
add rax, qword [rsp + 0x100]
adc rdx, qword [rsp + 0x108]
shld rdx, rax, 0xd
and rax, r10
add r11, qword [rsp + 0x120]
adc rdi, qword [rsp + 0x48]
mov qword [rsp + 0x298], rsi
add r11, r12
adc rdi, qword [rsp + 0xf8]
mov rcx, qword [rsp + 0x38]
mov qword [rsp + 0x2a0], rcx
add r15, qword [rsp + 0x60]
adc r9, qword [rsp + 0xa0]
add r15, qword [rsp + 0x58]
adc r9, qword [rsp + 0x68]
add r15, rdx
adc r9, 0
shld r9, r15, 0xd
and r15, r10
add r14, qword [rsp + 0xe8]
adc rbp, qword [rsp + 0x50]
add r14, qword [rsp + 0x70]
adc rbp, qword [rsp + 0x78]
add r14, r9
adc rbp, 0
shld rbp, r14, 0xd
and r14, r10
add r13, qword [rsp + 0x98]
adc rbx, qword [rsp + 0xa8]
add r13, qword [rsp + 0x80]
adc rbx, qword [rsp + 0x88]
add r13, rbp
adc rbx, 0
shld rbx, r13, 0xd
and r13, r10
add rbx, r11
adc rdi, 0
shld rdi, rbx, 0xd
lea rdx, [rdi + rdi*8]
lea r12, [rdi + rdx*2]
add r12, rax
mov rsi, r12
shr rsi, 0x33
add rsi, r15
mov r15, rsi
shr r15, 0x33
add r15, r14
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0x260], rax
add rax, qword [rsp + 0xc0]
mov rdx, rax
mov qword [rsp + 0x268], r8
add r8, qword [rsp + 0xe0]
mov rax, qword [rsp + 0x28]
mov qword [rsp + 0x270], rax
add rax, qword [rsp + 0xd8]
mov r9, rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x278], rax
add rax, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x280], rcx
add rcx, qword [rsp + 0xc8]
mov qword [rsp + 0x198], rdx
mov qword [rsp + 0x1a0], r8
mov qword [rsp + 0x1a8], r9
mov qword [rsp + 0x1b0], rax
mov qword [rsp + 0x1b8], rcx
punpcklqdq xmm0, xmm1
pand xmm0, xmm6
movdqu xmmword [rsp + 0x2a8], xmm0
and rbx, r10
and r12, r10
and rsi, r10
lea rcx, [rsp + 0x260]
lea rdx, [rsp + 0x2e8]
lea rdi, [rsp + 0x290]
mov r8, rdi
call fcn.1400459c0
mov rcx, rdi
lea rdx, [rsp + 0x170]
lea r8, [rsp + 0x198]
call fcn.1400459c0
mov ecx, dword [rsp + 0x12c]
mov eax, dword [rsp + 0xf4]
add eax, 0xffffffff
jb 0x140041cf0
mov eax, ecx
neg rax
mov rcx, qword [rsp + 0x2c0]
mov rdx, qword [rsp + 0x2c8]
xor r12, rcx
and r12, rax
xor r12, rcx
mov qword [rsp + 0x2c0], r12
xor rsi, rdx
and rsi, rax
xor rsi, rdx
mov qword [rsp + 0x2c8], rsi
mov rcx, qword [rsp + 0x2d0]
xor r15, rcx
and r15, rax
xor r15, rcx
mov qword [rsp + 0x2d0], r15
mov rcx, qword [rsp + 0x2d8]
xor r13, rcx
and r13, rax
xor r13, rcx
mov qword [rsp + 0x2d8], r13
mov rcx, qword [rsp + 0x2e0]
xor rbx, rcx
and rbx, rax
movq xmm0, rax
pshufd xmm0, xmm0, 0x44
movdqa xmm1, xmm0
pandn xmm1, xmmword [rsp + 0x290]
xor rbx, rcx
movdqa xmm2, xmmword [rsp + 0x260]
pand xmm2, xmm0
por xmm2, xmm1
movdqa xmmword [rsp + 0x290], xmm2
movdqa xmm1, xmm0
pandn xmm1, xmmword [rsp + 0x2a0]
mov qword [rsp + 0x2e0], rbx
pand xmm0, xmmword [rsp + 0x270]
por xmm0, xmm1
movdqa xmmword [rsp + 0x2a0], xmm0
mov rcx, qword [rsp + 0x2b0]
mov rdx, qword [rsp + 0x280]
xor rdx, rcx
and rdx, rax
xor rdx, rcx
mov qword [rsp + 0x2b0], rdx
mov qword [rsp + 0x330], rdx
movaps xmm0, xmmword [rsp + 0x2a0]
movaps xmmword [rsp + 0x320], xmm0
movaps xmm0, xmmword [rsp + 0x290]
movaps xmmword [rsp + 0x310], xmm0
lea rsi, [rsp + 0x290]
lea rdx, [rsp + 0x310]
mov rcx, rsi
call fcn.140042f70
lea rdi, [rsp + 0x2c0]
mov rcx, rdi
mov rdx, rdi
mov r8, rsi
call fcn.1400459c0
mov rsi, qword [rsp + 0x130]
mov rcx, rsi
mov rdx, rdi
call fcn.140038610
lea rcx, [0x1402a6630]
mov r8d, 0x20
mov rdx, rsi
call fcn.140092e70
xor esi, esi
test eax, eax
setne sil
mov rcx, qword [rsp + 0x338]
xor rcx, rsp
call fcn.140259980
mov eax, esi
movaps xmm6, xmmword [rsp + 0x340]
add rsp, 0x358
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret