Function at 0x140232f30
Capabilities:
Encrypt data using curve25519

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x308
mov esi, dword [rsp + 0x378]
mov edi, dword [rsp + 0x380]
mov ebp, dword [rsp + 0x388]
mov qword [rsp + 0x350], rcx
mov rbx, r8
mov r14, rdx
lea rdx, str.SHA512
mov r8, qword [rsp + 0x3a8]
mov rcx, qword [rsp + 0x3a0]
mov r15, r9
call fcn.1402693f0
mov r13, rax
call fcn.140267250
cmp qword [rsp + 0x390], 0
mov r12, rax
je 0x140233018
test bpl, bpl
je 0x140232faf
cmp qword [rsp + 0x398], 0
je 0x140233048
test sil, sil
jne 0x140233029
lea rbp, [rsp + 0x1a0]
lea r11, [rsp + 0x1e0]
cmp qword [rsp + 0x398], 0
je 0x140233029
xor r14d, r14d
mov rcx, r11
mov edx, 0x40
call fcn.140098720
mov edx, 0x40
mov rcx, rbp
call fcn.140098720
mov rcx, r13
call fcn.140269450
mov rcx, r12
call fcn.140267270
mov eax, r14d
add rsp, 0x308
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test bpl, bpl
jne 0x140233048
mov qword [rsp + 0x398], 0
test r13, r13
je 0x140233048
test r12, r12
je 0x140233048
xor r8d, r8d
mov rdx, r13
mov rcx, r12
call fcn.140267380
test eax, eax
jne 0x140233060
nop dword [rax]
lea rbp, [rsp + 0x1a0]
lea r11, [rsp + 0x1e0]
jmp 0x140232fcf
mov rdx, qword [rsp + 0x370]
mov r8d, 0x20
mov rcx, r12
call fcn.140267390
test eax, eax
je 0x140233048
lea rax, [rsp + 0x11c]
lea rbp, [rsp + 0x1a0]
mov rcx, r12
mov r8, rax
mov rdx, rbp
mov qword [rsp + 0x38], rax
call fcn.1402688d0
lea r11, [rsp + 0x1e0]
test eax, eax
je 0x140232fcf
movzx edi, dil
movzx esi, sil
mov rcx, r12
mov qword [rsp + 0x40], r11
movzx edx, byte [rsp + 0x1bf]
mov r9d, edi
mov r8d, esi
and byte [rsp + 0x1a0], 0xf8
and edx, 0x3f
mov eax, edx
mov rdx, qword [rsp + 0x398]
or eax, 0x40
mov qword [rsp + 0x28], rdx
mov rdx, qword [rsp + 0x390]
mov byte [rsp + 0x1bf], al
mov qword [rsp + 0x20], rdx
mov rdx, r13
call fcn.1402314e0
mov r11, qword [rsp + 0x40]
test eax, eax
je 0x140232fcf
lea rdx, [rsp + 0x1c0]
mov r8d, 0x20
mov rcx, r12
call fcn.140267390
mov r11, qword [rsp + 0x40]
test eax, eax
je 0x140232fcf
mov r8, rbx
mov rdx, r14
mov rcx, r12
call fcn.140267390
mov r11, qword [rsp + 0x40]
test eax, eax
je 0x140232fcf
mov r8, qword [rsp + 0x38]
mov rdx, r11
mov rcx, r12
call fcn.1402688d0
mov r11, qword [rsp + 0x40]
test eax, eax
je 0x140232fcf
mov rcx, r11
call fcn.140230a00
mov r11, qword [rsp + 0x40]
lea r10, [rsp + 0x260]
mov rcx, r10
mov qword [rsp + 0x48], r10
mov rdx, r11
mov qword [rsp + 0x50], r11
call fcn.140232a60
lea r8, [rsp + 0x140]
lea rdx, [rsp + 0x2b0]
mov rcx, r8
mov qword [rsp + 0x40], r8
call fcn.14022f820
mov r10, qword [rsp + 0x48]
mov r8, qword [rsp + 0x40]
lea r9, [rsp + 0x170]
mov rcx, r9
mov qword [rsp + 0x48], r9
mov rdx, r10
call fcn.14022eb10
mov r8, qword [rsp + 0x40]
lea rcx, [rsp + 0x220]
lea rdx, [rsp + 0x288]
mov qword [rsp + 0x40], rcx
call fcn.14022eb10
mov rdx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x350]
call fcn.14022e880
mov r9, qword [rsp + 0x48]
lea rcx, [rsp + 0x120]
mov rdx, r9
call fcn.14022e880
mov r9d, edi
mov r8d, esi
mov rdx, r13
movzx eax, byte [rsp + 0x120]
mov rcx, qword [rsp + 0x350]
and eax, 1
shl eax, 7
xor byte [rcx + 0x1f], al
mov rcx, qword [rsp + 0x398]
mov qword [rsp + 0x28], rcx
mov rcx, qword [rsp + 0x390]
mov qword [rsp + 0x20], rcx
mov rcx, r12
call fcn.1402314e0
mov r11, qword [rsp + 0x50]
test eax, eax
je 0x140232fcf
mov rdx, qword [rsp + 0x350]
mov r8d, 0x20
mov rcx, r12
mov qword [rsp + 0x48], r11
call fcn.140267390
mov r11, qword [rsp + 0x48]
test eax, eax
je 0x140232fcf
mov r8d, 0x20
mov rdx, r15
mov rcx, r12
call fcn.140267390
mov r11, qword [rsp + 0x48]
test eax, eax
je 0x140232fcf
mov r8, rbx
mov rdx, r14
mov rcx, r12
call fcn.140267390
mov r11, qword [rsp + 0x48]
test eax, eax
je 0x140232fcf
mov rbx, qword [rsp + 0x40]
mov r8, qword [rsp + 0x38]
mov rcx, r12
mov rdx, rbx
call fcn.1402688d0
mov r11, qword [rsp + 0x48]
test eax, eax
je 0x140232fcf
mov rcx, rbx
mov qword [rsp + 0x108], r11
call fcn.140230a00
movzx ecx, byte [rsp + 0x221]
movzx eax, byte [rsp + 0x222]
movzx edx, byte [rsp + 0x220]
mov edi, dword [rsp + 0x222]
shl rax, 0x10
shl rcx, 8
movzx r8d, byte [rsp + 0x22f]
mov ebx, dword [rsp + 0x227]
or rcx, rax
shr rdi, 5
movzx eax, byte [rsp + 0x227]
mov r15d, dword [rsp + 0x22a]
or rcx, rdx
shl r8, 0x10
movzx edx, byte [rsp + 0x226]
and edi, 0x1fffff
shl rax, 0x10
shr rbx, 7
and ecx, 0x1fffff
movzx r9d, byte [rsp + 0x235]
shl rdx, 8
shr r15, 4
and ebx, 0x1fffff
or rdx, rax
movzx eax, byte [rsp + 0x225]
and r15d, 0x1fffff
or rdx, rax
movzx eax, byte [rsp + 0x22e]
shr rdx, 2
shl rax, 8
and edx, 0x1fffff
or rax, r8
movzx r8d, byte [rsp + 0x22d]
or rax, r8
movzx r8d, byte [rsp + 0x234]
shr rax, 1
and eax, 0x1fffff
shl r8, 0x10
mov r11, rax
mov eax, dword [rsp + 0x22f]
shr rax, 6
and eax, 0x1fffff
mov qword [rsp + 0x80], rax
movzx eax, byte [rsp + 0x233]
shl rax, 8
or rax, r8
movzx r8d, byte [rsp + 0x232]
or rax, r8
movzx r8d, byte [rsp + 0x237]
shr rax, 3
mov qword [rsp + 0x88], rax
movzx eax, byte [rsp + 0x236]
shl rax, 8
shl r8, 0x10
or rax, r8
movzx r8d, byte [rsp + 0x23a]
or r9, rax
mov eax, dword [rsp + 0x237]
and r9d, 0x1fffff
shr rax, 5
mov qword [rsp + 0x90], r9
movzx r9d, byte [rsp + 0x1a0]
mov rsi, rax
movzx eax, byte [rsp + 0x23b]
and esi, 0x1fffff
mov qword [rsp + 0x98], rsi
mov rsi, rax
movzx eax, byte [rsp + 0x23c]
shl rsi, 8
shl rax, 0x10
or rax, rsi
or rax, r8
shr rax, 2
mov rsi, rax
mov eax, dword [rsp + 0x23c]
and esi, 0x1fffff
mov r10, rax
mov qword [rsp + 0xa0], rsi
movzx eax, byte [rsp + 0x1a1]
shr r10, 7
mov qword [rsp + 0xa8], r10
shl rax, 8
movzx r8d, byte [rsp + 0x1a2]
mov r10d, dword [rsp + 0x1aa]
mov esi, dword [rsp + 0x1a2]
shl r8, 0x10
shr r10, 4
or r8, rax
movzx eax, byte [rsp + 0x1a6]
shr rsi, 5
or r8, r9
and r10d, 0x1fffff
and esi, 0x1fffff
mov r9, rax
movzx eax, byte [rsp + 0x1a7]
and r8d, 0x1fffff
shl r9, 8
mov qword [rsp + 0x38], r8
shl rax, 0x10
or rax, r9
movzx r9d, byte [rsp + 0x1a5]
or rax, r9
mov r9d, dword [rsp + 0x1a7]
shr rax, 2
shr r9, 7
and eax, 0x1fffff
mov r8, r9
and r8d, 0x1fffff
mov qword [rsp + 0x40], r8
mov r8, r10
movzx r10d, byte [rsp + 0x1ae]
mov r14, r10
movzx r10d, byte [rsp + 0x1af]
shl r14, 8
shl r10, 0x10
or r10, r14
movzx r14d, byte [rsp + 0x1ad]
or r10, r14
movzx r14d, byte [rsp + 0x1b2]
shr r10, 1
and r10d, 0x1fffff
mov qword [rsp + 0x48], r10
mov r10d, dword [rsp + 0x1af]
shr r10, 6
and r10d, 0x1fffff
mov qword [rsp + 0x50], r10
movzx r10d, byte [rsp + 0x1b3]
mov r9, r10
movzx r10d, byte [rsp + 0x1b4]
shl r9, 8
shl r10, 0x10
or r10, r9
or r10, r14
movzx r14d, byte [rsp + 0x1b6]
shr r10, 3
mov r9, r14
mov qword [rsp + 0x58], r10
movzx r14d, byte [rsp + 0x1b7]
movzx r10d, byte [rsp + 0x1b5]
shl r9, 8
shl r14, 0x10
or r14, r9
or r10, r14
movzx r14d, byte [rsp + 0x1ba]
and r10d, 0x1fffff
mov qword [rsp + 0x60], r10
mov r10d, dword [rsp + 0x1b7]
shr r10, 5
and r10d, 0x1fffff
mov qword [rsp + 0x68], r10
movzx r10d, byte [rsp + 0x1bb]
mov r9, r10
movzx r10d, byte [rsp + 0x1bc]
shl r9, 8
shl r10, 0x10
or r10, r9
movzx r9d, byte [rsp + 0x1e0]
or r10, r14
shr r10, 2
mov qword [rsp + 0x78], r9
and r10d, 0x1fffff
mov qword [rsp + 0x70], r10
mov r10d, dword [rsp + 0x1bc]
movzx r9d, byte [rsp + 0x1f5]
movzx r14d, byte [rsp + 0x1e1]
shr r10, 7
mov qword [rsp + 0xb0], r9
mov r9, r14
movzx r14d, byte [rsp + 0x1e2]
shl r9, 8
shl r14, 0x10
or r14, r9
or r14, qword [rsp + 0x78]
mov qword [rsp + 0x78], r8
mov r9, r14
mov r14, qword [rsp + 0x38]
and r9d, 0x1fffff
imul r14, rcx
add r14, r9
mov qword [rsp + 0xb8], r14
mov r14d, dword [rsp + 0x1e2]
shr r14, 5
mov r9, r14
mov r14, rcx
imul r14, rsi
and r9d, 0x1fffff
add r14, r9
mov r9, qword [rsp + 0x38]
imul r9, rdi
add r14, r9
movzx r9d, byte [rsp + 0x1e7]
mov qword [rsp + 0xc0], r14
movzx r14d, byte [rsp + 0x1e6]
shl r9, 0x10
shl r14, 8
or r14, r9
movzx r9d, byte [rsp + 0x1e5]
or r14, r9
shr r14, 2
mov r9, r14
mov r14, rcx
imul r14, rax
and r9d, 0x1fffff
add r14, r9
mov r9, rdi
imul r9, rsi
add r14, r9
mov r9, qword [rsp + 0x38]
imul r9, rdx
add r14, r9
mov qword [rsp + 0xc8], r14
mov r14d, dword [rsp + 0x1e7]
shr r14, 7
mov r9, r14
mov r14, qword [rsp + 0x40]
and r9d, 0x1fffff
imul r14, rcx
add r14, r9
mov r9, rdi
imul r9, rax
add r14, r9
mov r9, rdx
imul r9, rsi
add r14, r9
mov r9, qword [rsp + 0x38]
imul r9, rbx
add r14, r9
mov qword [rsp + 0xd0], r14
mov r14d, dword [rsp + 0x1ea]
shr r14, 4
mov r9, r14
mov r14, r8
imul r14, rcx
and r9d, 0x1fffff
add r14, r9
mov r9, qword [rsp + 0x40]
imul r9, rdi
imul r8, rdi
add r14, r9
mov r9, rdx
imul r9, rax
add r14, r9
mov r9, rbx
imul r9, rsi
add r14, r9
mov r9, qword [rsp + 0x38]
imul r9, r15
add r14, r9
movzx r9d, byte [rsp + 0x1ef]
mov qword [rsp + 0xd8], r14
movzx r14d, byte [rsp + 0x1ee]
shl r9, 0x10
shl r14, 8
or r14, r9
movzx r9d, byte [rsp + 0x1ed]
or r14, r9
shr r14, 1
mov r9, r14
mov r14, qword [rsp + 0x48]
and r9d, 0x1fffff
imul r14, rcx
add r14, r9
mov r9, qword [rsp + 0x40]
add r14, r8
mov r8, qword [rsp + 0x38]
imul r9, rdx
imul r8, r11
add r14, r9
mov r9, rbx
imul r9, rax
add r14, r9
mov r9, r15
imul r9, rsi
add r14, r9
mov r9, r14
mov r14d, dword [rsp + 0x1ef]
add r9, r8
shr r14, 6
mov qword [rsp + 0xe0], r9
mov r9, r14
mov r14, qword [rsp + 0x50]
mov r8, qword [rsp + 0x48]
and r9d, 0x1fffff
imul r14, rcx
imul r8, rdi
add r14, r9
mov r9, qword [rsp + 0x40]
add r14, r8
mov r8, qword [rsp + 0x78]
imul r8, rdx
imul r9, rbx
add r14, r8
mov r8, r11
add r14, r9
imul r8, rsi
mov r9, r15
imul r9, rax
add r14, r9
add r14, r8
mov r8, qword [rsp + 0x80]
imul r8, qword [rsp + 0x38]
mov r9, r14
movzx r14d, byte [rsp + 0x1f3]
add r9, r8
shl r14, 8
mov r8, qword [rsp + 0x50]
mov qword [rsp + 0xe8], r9
movzx r9d, byte [rsp + 0x1f4]
imul r8, rdi
shl r9, 0x10
or r14, r9
movzx r9d, byte [rsp + 0x1f2]
or r14, r9
mov r9, r14
mov r14, qword [rsp + 0x58]
shr r9, 3
imul r14, rcx
add r14, r9
mov r9, qword [rsp + 0x40]
add r14, r8
mov r8, qword [rsp + 0x48]
imul r9, r15
imul r8, rdx
add r14, r8
mov r8, qword [rsp + 0x78]
imul r8, rbx
add r14, r8
mov r8, r11
imul r8, rax
add r14, r9
add r14, r8
mov r8, qword [rsp + 0x80]
imul r8, rsi
add r14, r8
mov r8, qword [rsp + 0x88]
imul r8, qword [rsp + 0x38]
mov r9, r14
movzx r14d, byte [rsp + 0x1f6]
add r9, r8
mov r8, qword [rsp + 0x58]
mov qword [rsp + 0xf0], r9
mov r9, r14
movzx r14d, byte [rsp + 0x1f7]
shl r9, 8
shl r14, 0x10
imul r8, rdi
or r14, r9
or r14, qword [rsp + 0xb0]
mov r9, r14
mov r14, qword [rsp + 0x60]
and r9d, 0x1fffff
imul r14, rcx
add r14, r9
add r14, r8
mov r8, qword [rsp + 0x50]
imul r8, rdx
add r14, r8
mov r8, qword [rsp + 0x48]
imul r8, rbx
add r14, r8
mov r8, qword [rsp + 0x78]
imul r8, r15
add r14, r8
mov r8, qword [rsp + 0x40]
imul r8, r11
add r14, r8
mov r8, qword [rsp + 0x80]
imul r8, rax
add r14, r8
mov r8, qword [rsp + 0x88]
imul r8, rsi
add r14, r8
mov r8, qword [rsp + 0x90]
imul r8, qword [rsp + 0x38]
mov r9, r14
add r9, r8
mov qword [rsp + 0xb0], r9
mov r14d, dword [rsp + 0x1f7]
mov r8, qword [rsp + 0x60]
shr r14, 5
mov r9, r14
mov r14, qword [rsp + 0x68]
imul r8, rdi
and r9d, 0x1fffff
imul r14, rcx
add r14, r9
add r14, r8
mov r8, qword [rsp + 0x58]
imul r8, rdx
add r14, r8
mov r8, qword [rsp + 0x50]
imul r8, rbx
add r14, r8
mov r8, qword [rsp + 0x48]
imul r8, r15
add r14, r8
mov r8, qword [rsp + 0x78]
imul r8, r11
add r14, r8
mov r8, qword [rsp + 0x80]
imul r8, qword [rsp + 0x40]
add r14, r8
mov r8, qword [rsp + 0x88]
imul r8, rax
add r14, r8
mov r8, qword [rsp + 0x90]
imul r8, rsi
add r14, r8
mov r8, qword [rsp + 0x98]
imul r8, qword [rsp + 0x38]
mov r9, r14
movzx r14d, byte [rsp + 0x1fb]
add r9, r8
shl r14, 8
mov r8, qword [rsp + 0x68]
mov qword [rsp + 0xf8], r9
movzx r9d, byte [rsp + 0x1fc]
imul r8, rdi
shl r9, 0x10
or r14, r9
movzx r9d, byte [rsp + 0x1fa]
or r14, r9
shr r14, 2
mov r9, r14
mov r14, qword [rsp + 0x70]
and r9d, 0x1fffff
imul r14, rcx
add r14, r9
mov r9d, dword [rsp + 0x1fc]
add r14, r8
mov r8, qword [rsp + 0x60]
imul r8, rdx
add r14, r8
mov r8, qword [rsp + 0x58]
imul r8, rbx
add r14, r8
mov r8, qword [rsp + 0x50]
imul r8, r15
add r14, r8
mov r8, qword [rsp + 0x48]
imul r8, r11
add r14, r8
mov r8, qword [rsp + 0x80]
imul r8, qword [rsp + 0x78]
add r14, r8
mov r8, qword [rsp + 0x88]
imul r8, qword [rsp + 0x40]
shr r9, 7
imul rcx, r10
add r14, r8
mov r8, qword [rsp + 0x90]
add rcx, r9
imul r8, rax
add r14, r8
mov r8, qword [rsp + 0x98]
imul r8, rsi
add r14, r8
mov r8, qword [rsp + 0xa0]
imul r8, qword [rsp + 0x38]
add r14, r8
mov r8, qword [rsp + 0x70]
mov r9, qword [rsp + 0xa0]
imul r8, rdi
add rcx, r8
mov r8, qword [rsp + 0x68]
imul r8, rdx
add rcx, r8
mov r8, qword [rsp + 0x60]
imul r8, rbx
add rcx, r8
mov r8, qword [rsp + 0x58]
imul r8, r15
add rcx, r8
mov r8, qword [rsp + 0x50]
imul r8, r11
add rcx, r8
mov r8, qword [rsp + 0x80]
imul r8, qword [rsp + 0x48]
add rcx, r8
mov r8, qword [rsp + 0x88]
imul r8, qword [rsp + 0x78]
add rcx, r8
mov r8, qword [rsp + 0x90]
imul r8, qword [rsp + 0x40]
add rcx, r8
mov r8, qword [rsp + 0x98]
imul r8, rax
add rcx, r8
mov r8, r9
imul r8, rsi
add rcx, r8
mov r8, qword [rsp + 0x38]
imul r8, qword [rsp + 0xa8]
add rcx, r8
imul rdi, r10
imul rsi, qword [rsp + 0xa8]
mov qword [rsp + 0x38], rcx
mov rcx, qword [rsp + 0x70]
imul rcx, rdx
imul rdx, r10
add rdi, rcx
mov rcx, qword [rsp + 0x68]
imul rcx, rbx
mov r8, rcx
add r8, rdi
mov rdi, qword [rsp + 0x60]
imul rdi, r15
add r8, rdi
mov rdi, r11
imul r11, qword [rsp + 0x58]
mov rcx, r11
mov r11, qword [rsp + 0x90]
imul r11, qword [rsp + 0x78]
add rcx, r8
mov r8, qword [rsp + 0x80]
imul r8, qword [rsp + 0x50]
add r8, rcx
mov rcx, qword [rsp + 0x88]
imul rcx, qword [rsp + 0x48]
add r8, rcx
mov rcx, r11
mov r11, qword [rsp + 0x98]
imul r11, qword [rsp + 0x40]
add rcx, r8
mov r8, r11
mov r11, r9
imul r11, rax
add r8, rcx
mov rcx, r11
mov r11, qword [rsp + 0x68]
add rcx, r8
add rsi, rcx
mov rcx, qword [rsp + 0x70]
imul r11, r15
mov qword [rsp + 0x100], rsi
imul rcx, rbx
add rcx, rdx
add rcx, r11
mov r11, qword [rsp + 0x60]
mov r8, qword [rsp + 0x80]
mov rsi, qword [rsp + 0xa8]
imul r11, rdi
mov rdx, r11
mov r11, qword [rsp + 0x68]
add rdx, rcx
mov rcx, qword [rsp + 0x58]
imul rcx, r8
add rcx, rdx
mov rdx, qword [rsp + 0x88]
imul rdx, qword [rsp + 0x50]
add rcx, rdx
mov rdx, qword [rsp + 0x90]
imul rdx, qword [rsp + 0x48]
imul rax, rsi
imul r11, rdi
add rdx, rcx
mov rcx, qword [rsp + 0x98]
imul rbx, r10
imul rcx, qword [rsp + 0x78]
add rcx, rdx
mov rdx, qword [rsp + 0x40]
imul rdx, r9
add rdx, rcx
mov rcx, qword [rsp + 0x88]
add rax, rdx
mov rdx, qword [rsp + 0x60]
mov qword [rsp + 0x80], rax
mov rax, qword [rsp + 0x70]
imul rdx, r8
imul rax, r15
imul r15, r10
add rbx, rax
mov rax, r11
mov r11, qword [rsp + 0x70]
add rax, rbx
mov rbx, r8
mov r8, qword [rsp + 0x90]
add rdx, rax
mov rax, qword [rsp + 0x58]
imul r11, rdi
imul rax, rcx
add r15, r11
mov r11, rdi
mov rdi, rcx
add rdx, rax
mov rax, qword [rsp + 0x50]
imul rax, r8
add rax, rdx
mov rdx, qword [rsp + 0x98]
imul rdx, qword [rsp + 0x48]
add rdx, rax
mov rax, qword [rsp + 0x78]
imul rax, r9
mov r9, qword [rsp + 0x40]
imul r9, rsi
add rax, rdx
mov rdx, qword [rsp + 0x68]
add r9, rax
mov rax, qword [rsp + 0x60]
imul rdx, rbx
imul rax, rcx
add rdx, r15
mov r15, r8
add rdx, rax
mov rax, qword [rsp + 0x58]
imul r11, r10
imul rax, r8
mov r8, qword [rsp + 0x98]
add rax, rdx
mov rdx, qword [rsp + 0x50]
imul rdx, r8
add rdx, rax
mov rax, qword [rsp + 0xa0]
imul rax, qword [rsp + 0x48]
add rax, rdx
mov rdx, qword [rsp + 0x78]
imul rdx, rsi
add rdx, rax
mov qword [rsp + 0x40], rdx
mov rdx, qword [rsp + 0x70]
mov rax, qword [rsp + 0x60]
imul rcx, qword [rsp + 0x68]
imul rdx, rbx
imul rax, r15
add rdx, r11
mov r11, r8
add rdx, rcx
add rax, rdx
mov rdx, qword [rsp + 0x58]
imul rdx, r8
mov r8, qword [rsp + 0xa0]
add rdx, rax
mov rax, qword [rsp + 0x50]
imul rax, r8
add rax, rdx
mov rdx, qword [rsp + 0x48]
imul rdx, rsi
lea rcx, [rax + rdx]
mov rdx, qword [rsp + 0x70]
mov rax, rbx
mov rbx, r8
imul rax, r10
imul rdx, rdi
add rdx, rax
mov rax, qword [rsp + 0x68]
imul rax, r15
add rax, rdx
mov rdx, qword [rsp + 0x60]
imul rdx, r11
add rdx, rax
mov rax, r8
mov r8, qword [rsp + 0x58]
imul rax, r8
add rax, rdx
mov rdx, qword [rsp + 0x50]
imul rdx, rsi
add rax, rdx
mov rdx, qword [rsp + 0x70]
mov qword [rsp + 0x48], rax
mov rax, rdi
mov rdi, qword [rsp + 0x60]
imul rax, r10
imul rdx, r15
add rax, rdx
mov rdx, qword [rsp + 0x68]
imul rdx, r11
add rdx, rax
mov rax, rbx
imul rax, rdi
imul rdi, rsi
add rax, rdx
mov rdx, r8
imul rdx, rsi
lea r8, [rax + rdx]
mov rdx, qword [rsp + 0x70]
mov rax, r15
mov r15, qword [rsp + 0x68]
imul rax, r10
imul rdx, r11
add rdx, rax
mov rax, rbx
imul rax, r15
add rax, rdx
mov rdx, rdi
mov rdi, qword [rsp + 0x70]
add rdx, rax
mov rax, r11
mov r11, qword [rsp + 0xb8]
mov qword [rsp + 0x50], rdx
mov rdx, rbx
imul rax, r10
imul rdx, rdi
add rax, rdx
mov rdx, r15
mov r15, qword [rsp + 0xc8]
imul rdx, rsi
add rdx, rax
mov rax, rbx
mov rbx, rdi
mov rdi, qword [rsp + 0xd0]
imul rax, r10
imul rbx, rsi
imul r10, rsi
mov rsi, qword [rsp + 0xe0]
add rbx, rax
lea rax, [r11 + 0x100000]
mov qword [rsp + 0x58], rbx
mov rbx, qword [rsp + 0xc0]
sar rax, 0x15
add rbx, rax
shl rax, 0x15
sub r11, rax
lea rax, [r15 + 0x100000]
sar rax, 0x15
mov qword [rsp + 0x60], r11
mov r11, qword [rsp + 0xd8]
add rdi, rax
shl rax, 0x15
sub r15, rax
mov rax, r11
add rax, 0x100000
mov qword [rsp + 0x68], r15
sar rax, 0x15
lea r15, [rsi + rax]
shl rax, 0x15
mov rsi, qword [rsp + 0xf0]
sub r11, rax
mov qword [rsp + 0x70], r11
mov r11, qword [rsp + 0xe8]
mov rax, r11
add rax, 0x100000
sar rax, 0x15
add rsi, rax
shl rax, 0x15
sub r11, rax
mov qword [rsp + 0x78], rsi
mov rsi, qword [rsp + 0xf8]
mov qword [rsp + 0x88], r11
mov r11, qword [rsp + 0xb0]
mov rax, r11
add rax, 0x100000
sar rax, 0x15
add rsi, rax
shl rax, 0x15
sub r11, rax
mov qword [rsp + 0x90], rsi
mov rsi, qword [rsp + 0x38]
lea rax, [r14 + 0x100000]
sar rax, 0x15
mov qword [rsp + 0x98], r11
mov r11, qword [rsp + 0x68]
add rsi, rax
shl rax, 0x15
mov qword [rsp + 0x38], rsi
mov rsi, qword [rsp + 0x100]
sub r14, rax
mov qword [rsp + 0xa0], r14
mov r14, qword [rsp + 0x80]
lea rax, [rsi + 0x100000]
sar rax, 0x15
add r14, rax
shl rax, 0x15
sub rsi, rax
lea rax, [r9 + 0x100000]
mov qword [rsp + 0x80], rsi
mov rsi, qword [rsp + 0x40]
sar rax, 0x15
add rsi, rax
shl rax, 0x15
sub r9, rax
lea rax, [rcx + 0x100000]
mov qword [rsp + 0x40], r9
mov r9, qword [rsp + 0x48]
sar rax, 0x15
add r9, rax
shl rax, 0x15
sub rcx, rax
lea rax, [r8 + 0x100000]
mov qword [rsp + 0x48], rcx
mov rcx, qword [rsp + 0x50]
sar rax, 0x15
add rcx, rax
shl rax, 0x15
sub r8, rax
lea rax, [rdx + 0x100000]
mov qword [rsp + 0x50], r8
mov r8, qword [rsp + 0x58]
sar rax, 0x15
add r8, rax
shl rax, 0x15
sub rdx, rax
lea rax, [r10 + 0x100000]
sar rax, 0x15
mov qword [rsp + 0x58], rdx
mov rdx, rax
shl rdx, 0x15
sub r10, rdx
lea rdx, [rbx + 0x100000]
sar rdx, 0x15
add r11, rdx
shl rdx, 0x15
sub rbx, rdx
mov qword [rsp + 0x68], r11
lea rdx, [rdi + 0x100000]
mov r11, qword [rsp + 0x70]
sar rdx, 0x15
mov qword [rsp + 0xa8], rbx
lea rbx, [r11 + rdx]
shl rdx, 0x15
mov r11, qword [rsp + 0x88]
sub rdi, rdx
lea rdx, [r15 + 0x100000]
mov qword [rsp + 0x70], rbx
mov rbx, qword [rsp + 0x78]
sar rdx, 0x15
mov qword [rsp + 0xb0], rdi
lea rdi, [r11 + rdx]
shl rdx, 0x15
mov r11, qword [rsp + 0x98]
sub r15, rdx
lea rdx, [rbx + 0x100000]
mov qword [rsp + 0x88], rdi
sar rdx, 0x15
mov qword [rsp + 0xb8], r15
lea rdi, [r11 + rdx]
shl rdx, 0x15
sub rbx, rdx
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x98], rbx
mov rbx, qword [rsp + 0x90]
mov rdi, qword [rsp + 0xa0]
mov r15, qword [rsp + 0x38]
lea rdx, [rbx + 0x100000]
mov r11, qword [rsp + 0x48]
sar rdx, 0x15
add rdi, rdx
shl rdx, 0x15
sub rbx, rdx
mov qword [rsp + 0x90], rdi
lea rdx, [r15 + 0x100000]
mov rdi, qword [rsp + 0x80]
sar rdx, 0x15
mov qword [rsp + 0xa0], rbx
add rdi, rdx
shl rdx, 0x15
sub r15, rdx
lea rdx, [r14 + 0x100000]
mov rbx, r15
mov r15, qword [rsp + 0x40]
sar rdx, 0x15
add r15, rdx
shl rdx, 0x15
sub r14, rdx
lea rdx, [rsi + 0x100000]
sar rdx, 0x15
add r11, rdx
shl rdx, 0x15
sub rsi, rdx
lea rdx, [r9 + 0x100000]
mov qword [rsp + 0x38], r11
mov r11, qword [rsp + 0x58]
mov qword [rsp + 0x40], rsi
mov rsi, qword [rsp + 0x50]
sar rdx, 0x15
add rsi, rdx
shl rdx, 0x15
sub r9, rdx
lea rdx, [rcx + 0x100000]
sar rdx, 0x15
mov qword [rsp + 0x48], r9
lea r9, [r11 + rdx]
shl rdx, 0x15
sub rcx, rdx
lea rdx, [r8 + 0x100000]
sar rdx, 0x15
add r10, rdx
shl rdx, 0x15
sub r8, rdx
imul rdx, rax, 0xa2c13
add rbx, rdx
imul rdx, rax, 0x72d18
add rdi, rdx
imul rdx, rax, 0x9fb67
add r14, rdx
imul rdx, rax, 0xfffffffffff0c653
add r15, rdx
imul rdx, rax, 0x215d1
add rdx, qword [rsp + 0x40]
mov r11, rdx
imul rdx, r10, 0xa2c13
add rdx, qword [rsp + 0x90]
imul rax, rax, 0xfffffffffff59083
add rax, qword [rsp + 0x38]
mov qword [rsp + 0x38], rdx
imul rdx, r10, 0x72d18
add rbx, rdx
imul rdx, r10, 0x9fb67
add rdi, rdx
imul rdx, r10, 0xfffffffffff0c653
add r14, rdx
imul rdx, r10, 0x215d1
add r15, rdx
imul rdx, r10, 0xfffffffffff59083
mov r10, rdx
imul rdx, r8, 0xa2c13
add r10, r11
mov r11, qword [rsp + 0x38]
mov qword [rsp + 0x40], r10
mov r10, qword [rsp + 0xa0]
add r10, rdx
imul rdx, r8, 0x72d18
add r11, rdx
imul rdx, r8, 0x9fb67
add rbx, rdx
imul rdx, r8, 0xfffffffffff0c653
add rdi, rdx
imul rdx, r8, 0x215d1
imul r8, r8, 0xfffffffffff59083
add r14, rdx
imul rdx, r9, 0xa2c13
add r15, r8
mov r8, qword [rsp + 0x78]
add r8, rdx
imul rdx, r9, 0x72d18
add r10, rdx
imul rdx, r9, 0x9fb67
add rdx, r11
mov r11, qword [rsp + 0x98]
mov qword [rsp + 0x38], rdx
imul rdx, r9, 0xfffffffffff0c653
add rbx, rdx
imul rdx, r9, 0x215d1
imul r9, r9, 0xfffffffffff59083
add rdi, rdx
add r14, r9
imul rdx, rcx, 0xa2c13
lea r9, [rdx + r11]
mov r11, qword [rsp + 0x38]
imul rdx, rcx, 0x72d18
add r8, rdx
imul rdx, rcx, 0x9fb67
add r10, rdx
imul rdx, rcx, 0xfffffffffff0c653
add r11, rdx
imul rdx, rcx, 0x215d1
imul rcx, rcx, 0xfffffffffff59083
add rbx, rdx
imul rdx, rsi, 0xa2c13
add rdx, qword [rsp + 0x88]
add rdi, rcx
imul rcx, rsi, 0x72d18
add r9, rcx
imul rcx, rsi, 0x9fb67
add r8, rcx
imul rcx, rsi, 0xfffffffffff0c653
add r10, rcx
imul rcx, rsi, 0x215d1
imul rsi, rsi, 0xfffffffffff59083
add rcx, r11
add rbx, rsi
lea rsi, [rdx + 0x100000]
sar rsi, 0x15
add r9, rsi
shl rsi, 0x15
sub rdx, rsi
mov rsi, rcx
mov qword [rsp + 0x38], rdx
lea rdx, [r8 + 0x100000]
sar rdx, 0x15
add r10, rdx
shl rdx, 0x15
sub r8, rdx
lea rdx, [rcx + 0x100000]
mov rcx, qword [rsp + 0x40]
sar rdx, 0x15
add rbx, rdx
shl rdx, 0x15
sub rsi, rdx
lea rdx, [rdi + 0x100000]
sar rdx, 0x15
add r14, rdx
shl rdx, 0x15
sub rdi, rdx
lea rdx, [r15 + 0x100000]
sar rdx, 0x15
mov r11, rdi
mov rdi, qword [rsp + 0x48]
add rcx, rdx
shl rdx, 0x15
sub r15, rdx
lea rdx, [rax + 0x100000]
sar rdx, 0x15
add rdi, rdx
shl rdx, 0x15
sub rax, rdx
mov rdx, rax
lea rax, [r9 + 0x100000]
sar rax, 0x15
add r8, rax
shl rax, 0x15
sub r9, rax
lea rax, [r10 + 0x100000]
mov qword [rsp + 0x40], r8
mov r8, r11
sar rax, 0x15
mov r11, qword [rsp + 0xb8]
add rsi, rax
shl rax, 0x15
sub r10, rax
lea rax, [rbx + 0x100000]
sar rax, 0x15
add r8, rax
shl rax, 0x15
sub rbx, rax
lea rax, [r14 + 0x100000]
sar rax, 0x15
mov qword [rsp + 0x48], rbx
add r15, rax
shl rax, 0x15
sub r14, rax
lea rax, [rcx + 0x100000]
sar rax, 0x15
add rdx, rax
shl rax, 0x15
sub rcx, rax
imul rax, rdi, 0xa2c13
lea rbx, [rax + r11]
imul rax, rdi, 0x72d18
add rax, qword [rsp + 0x38]
mov r11, rax
imul rax, rdi, 0x9fb67
add r9, rax
imul rax, rdi, 0xfffffffffff0c653
add rax, qword [rsp + 0x40]
mov qword [rsp + 0x38], rax
imul rax, rdi, 0x215d1
imul rdi, rdi, 0xfffffffffff59083
add r10, rax
imul rax, rdx, 0xa2c13
add rsi, rdi
mov qword [rsp + 0x40], rsi
mov rsi, qword [rsp + 0x70]
lea rdi, [rax + rsi]
mov rsi, qword [rsp + 0x38]
imul rax, rdx, 0x72d18
add rbx, rax
imul rax, rdx, 0x9fb67
add rax, r11
mov r11, rax
imul rax, rdx, 0xfffffffffff0c653
add r9, rax
imul rax, rdx, 0x215d1
imul rdx, rdx, 0xfffffffffff59083
add rsi, rax
imul rax, rcx, 0xa2c13
add r10, rdx
mov rdx, qword [rsp + 0xb0]
add rdx, rax
imul rax, rcx, 0x72d18
add rdi, rax
imul rax, rcx, 0x9fb67
add rbx, rax
imul rax, rcx, 0xfffffffffff0c653
add rax, r11
mov r11, rax
imul rax, rcx, 0x215d1
imul rcx, rcx, 0xfffffffffff59083
add r9, rax
lea rax, [rcx + rsi]
mov rsi, qword [rsp + 0x68]
imul rcx, r15, 0xa2c13
add rsi, rcx
imul rcx, r15, 0x72d18
add rcx, rdx
imul rdx, r15, 0x9fb67
add rdi, rdx
imul rdx, r15, 0xfffffffffff0c653
add rbx, rdx
imul rdx, r15, 0x215d1
imul r15, r15, 0xfffffffffff59083
add rdx, r11
mov r11, rdx
imul rdx, r14, 0xa2c13
add r9, r15
mov r15, qword [rsp + 0xa8]
mov qword [rsp + 0x38], r9
lea r9, [rdx + r15]
imul rdx, r14, 0x72d18
lea r15, [rdx + rsi]
imul rdx, r14, 0x9fb67
add rcx, rdx
imul rdx, r14, 0xfffffffffff0c653
add rdi, rdx
imul rdx, r14, 0x215d1
imul r14, r14, 0xfffffffffff59083
lea rsi, [rdx + rbx]
imul rbx, r8, 0x72d18
add r14, r11
imul rdx, r8, 0xa2c13
add rdx, qword [rsp + 0x60]
mov r11, rdx
add rbx, r9
imul r9, r8, 0x9fb67
add r15, r9
imul r9, r8, 0xfffffffffff0c653
add r9, rcx
imul rcx, r8, 0x215d1
add rdi, rcx
imul rcx, r8, 0xfffffffffff59083
lea r8, [rdx + 0x100000]
lea rdx, [r15 + 0x100000]
sar r8, 0x15
sar rdx, 0x15
add rbx, r8
shl r8, 0x15
add r9, rdx
shl rdx, 0x15
add rcx, rsi
mov rsi, qword [rsp + 0x38]
sub r15, rdx
lea rdx, [rdi + 0x100000]
sub r11, r8
sar rdx, 0x15
mov r8, r15
mov qword [rsp + 0x50], r11
add rcx, rdx
shl rdx, 0x15
sub rdi, rdx
lea rdx, [r14 + 0x100000]
sar rdx, 0x15
lea r15, [rsi + rdx]
shl rdx, 0x15
mov rsi, qword [rsp + 0x40]
sub r14, rdx
lea rdx, [rax + 0x100000]
sar rdx, 0x15
add r10, rdx
shl rdx, 0x15
sub rax, rdx
mov rdx, qword [rsp + 0x48]
mov r11, rax
lea rax, [rsi + 0x100000]
sar rax, 0x15
add rdx, rax
shl rax, 0x15
sub rsi, rax
lea rax, [rbx + 0x100000]
sar rax, 0x15
add r8, rax
shl rax, 0x15
sub rbx, rax
lea rax, [r9 + 0x100000]
sar rax, 0x15
add rdi, rax
shl rax, 0x15
sub r9, rax
lea rax, [rcx + 0x100000]
sar rax, 0x15
add r14, rax
shl rax, 0x15
sub rcx, rax
lea rax, [r15 + 0x100000]
sar rax, 0x15
add r11, rax
shl rax, 0x15
sub r15, rax
lea rax, [r10 + 0x100000]
mov qword [rsp + 0x38], r11
sar rax, 0x15
add rsi, rax
shl rax, 0x15
mov qword [rsp + 0x40], rsi
lea rsi, [rdx + 0x100000]
sub r10, rax
mov rax, rsi
and rsi, 0xffffffffffe00000
sar rax, 0x15
sub rdx, rsi
mov qword [rsp + 0x48], rdx
imul rdx, rax, 0x72d18
imul rsi, rax, 0xa2c13
add rsi, qword [rsp + 0x50]
add rbx, rdx
imul rdx, rax, 0x9fb67
add r8, rdx
imul rdx, rax, 0xfffffffffff0c653
add r9, rdx
imul rdx, rax, 0x215d1
imul rax, rax, 0xfffffffffff59083
add rdi, rdx
add rcx, rax
mov rax, rsi
sar rax, 0x15
add rbx, rax
shl rax, 0x15
sub rsi, rax
mov rax, rbx
sar rax, 0x15
add r8, rax
shl rax, 0x15
sub rbx, rax
mov rax, r8
sar rax, 0x15
add r9, rax
shl rax, 0x15
sub r8, rax
mov rax, r9
sar rax, 0x15
add rdi, rax
shl rax, 0x15
sub r9, rax
mov rax, rdi
sar rax, 0x15
add rcx, rax
shl rax, 0x15
sub rdi, rax
mov rax, rcx
sar rax, 0x15
add r14, rax
shl rax, 0x15
sub rcx, rax
mov rax, r14
sar rax, 0x15
mov r11, rcx
mov rcx, qword [rsp + 0x38]
add r15, rax
shl rax, 0x15
sub r14, rax
mov rax, r15
sar rax, 0x15
mov qword [rsp + 0x50], r14
mov r14, qword [rsp + 0x40]
lea rdx, [rcx + rax]
shl rax, 0x15
sub r15, rax
mov rax, rdx
sar rax, 0x15
lea rcx, [r10 + rax]
shl rax, 0x15
mov r10, rdx
mov rdx, qword [rsp + 0x48]
sub r10, rax
mov rax, rcx
sar rax, 0x15
add r14, rax
shl rax, 0x15
sub rcx, rax
mov rax, r14
sar rax, 0x15
mov qword [rsp + 0x38], rcx
add rdx, rax
shl rax, 0x15
sub r14, rax
mov rax, rdx
and edx, 0x1fffff
sar rax, 0x15
mov qword [rsp + 0x40], rdx
imul rdx, rax, 0xa2c13
add rsi, rdx
imul rdx, rax, 0x72d18
add rbx, rdx
imul rdx, rax, 0x9fb67
add r8, rdx
imul rdx, rax, 0xfffffffffff0c653
add r9, rdx
imul rdx, rax, 0x215d1
imul rax, rax, 0xfffffffffff59083
add rdi, rdx
mov rdx, rsi
sar rdx, 0x15
add rax, r11
add rbx, rdx
shl rdx, 0x15
sub rsi, rdx
mov r11, rsi
mov rsi, rbx
sar rsi, 0x15
mov rdx, rsi
lea rsi, [r8 + rsi]
mov r8, rbx
shl rdx, 0x15
sub r8, rdx
mov rdx, rsi
sar rdx, 0x15
lea rcx, [r9 + rdx]
shl rdx, 0x15
sub rsi, rdx
mov qword [rsp + 0x48], rsi
mov rsi, rcx
sar rsi, 0x15
add rdi, rsi
mov rdx, rsi
mov rbx, rdi
mov rsi, rdi
mov rdi, qword [rsp + 0x50]
shl rdx, 0x15
sar rbx, 0x15
sub rcx, rdx
add rax, rbx
shl rbx, 0x15
sub rsi, rbx
mov rbx, rax
sar rbx, 0x15
mov rdx, rsi
lea rsi, [rdi + rbx]
shl rbx, 0x15
sub rax, rbx
mov rbx, rsi
sar rbx, 0x15
add r15, rbx
shl rbx, 0x15
sub rsi, rbx
mov rbx, r15
sar rbx, 0x15
add r10, rbx
shl rbx, 0x15
sub r15, rbx
mov rdi, r10
mov rbx, qword [rsp + 0x38]
sar rdi, 0x15
add rbx, rdi
shl rdi, 0x15
sub r10, rdi
mov rdi, rbx
sar rdi, 0x15
mov qword [rsp + 0x38], r10
add r14, rdi
shl rdi, 0x15
sub rbx, rdi
mov r10, r14
mov rdi, qword [rsp + 0x40]
sar r10, 0x15
add rdi, r10
shl r10, 0x15
sub r14, r10
mov r10, r14
mov r14, qword [rsp + 0x350]
mov word [r14 + 0x20], r11w
mov r14, r8
sar r11, 0x10
shl r14, 5
or r14d, r11d
mov r11, qword [rsp + 0x350]
mov byte [r11 + 0x22], r14b
mov r14, r8
mov r9, qword [rsp + 0x48]
sar r14, 3
mov byte [r11 + 0x23], r14b
mov r14, r8
sar r8, 0x13
sar r14, 0xb
mov byte [r11 + 0x24], r14b
lea r14, [r9*4]
or r8d, r14d
mov r14d, 1
mov byte [r11 + 0x25], r8b
mov r8, r9
sar r9, 0xe
sar r8, 6
mov byte [r11 + 0x26], r8b
mov r8, rcx
shl r8, 7
or r9d, r8d
mov r8, rcx
sar r8, 1
mov byte [r11 + 0x27], r9b
mov byte [r11 + 0x28], r8b
mov r8, rcx
sar rcx, 0x11
sar r8, 9
mov byte [r11 + 0x29], r8b
mov r8, rdx
shl r8, 4
or ecx, r8d
mov byte [r11 + 0x2a], cl
mov rcx, rdx
sar rcx, 4
mov byte [r11 + 0x2b], cl
mov rcx, rdx
sar rdx, 0x14
sar rcx, 0xc
mov byte [r11 + 0x2c], cl
lea rcx, [rax + rax]
or edx, ecx
mov byte [r11 + 0x2d], dl
mov rdx, rax
sar rax, 0xf
sar rdx, 7
mov byte [r11 + 0x2e], dl
mov rdx, rsi
shl rdx, 6
or eax, edx
mov rdx, rsi
sar rdx, 2
mov byte [r11 + 0x2f], al
mov byte [r11 + 0x30], dl
mov rdx, rsi
sar rsi, 0x12
sar rdx, 0xa
mov rax, rsi
mov rsi, r15
mov byte [r11 + 0x31], dl
lea rdx, [r15*8]
sar rsi, 5
sar r15, 0xd
or eax, edx
mov rdx, rbx
mov byte [r11 + 0x34], r15b
mov byte [r11 + 0x32], al
mov rax, rsi
mov byte [r11 + 0x33], al
mov rax, qword [rsp + 0x38]
mov word [r11 + 0x35], ax
sar rax, 0x10
shl rdx, 5
or eax, edx
lea rdx, [r10*4]
mov byte [r11 + 0x37], al
mov rax, rbx
sar rax, 3
mov byte [r11 + 0x38], al
mov rax, rbx
sar rax, 0xb
mov byte [r11 + 0x39], al
mov rax, rbx
sar rax, 0x13
or eax, edx
mov rdx, rdi
mov byte [r11 + 0x3a], al
mov rax, r10
shl rdx, 7
sar rax, 6
mov byte [r11 + 0x3b], al
mov rax, r10
sar rax, 0xe
or eax, edx
mov byte [r11 + 0x3c], al
mov rax, rdi
sar rax, 1
mov byte [r11 + 0x3d], al
mov rax, rdi
sar rdi, 0x11
sar rax, 9
mov byte [r11 + 0x3f], dil
mov byte [r11 + 0x3e], al
mov r11, qword [rsp + 0x108]
jmp 0x140232fd2