Function at 0x18021ba10
Capabilities:
Encrypt data using curve25519

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r14
lea rbp, [rsp - 0xf0]
mov eax, 0x1f0
call fcn.1803fdff0
sub rsp, rax
mov rax, qword [0x180594240]
xor rax, rsp
mov qword [rbp + 0xc0], rax
mov rsi, r8
mov qword [rbp - 0x80], rcx
mov rdi, rdx
mov r14, rcx
xor ebx, ebx
call fcn.180020180
test eax, eax
je 0x18021ba68
mov r8, rsi
mov rdx, rdi
mov rcx, r14
call fcn.18021c070
jmp 0x18021c047
movups xmm0, xmmword [rdi]
mov qword [rsp + 0x238], r12
mov rdx, rsi
movups xmm1, xmmword [rdi + 0x10]
lea rcx, [rbp + 0x78]
mov qword [rsp + 0x1e8], r13
movd eax, xmm0
movups xmmword [rbp + 0xa0], xmm0
mov qword [rsp + 0x1e0], r15
and al, 0xf8
movaps xmmword [rsp + 0x1d0], xmm6
mov byte [rbp + 0xa0], al
mov rax, qword [rdi + 0x18]
shr rax, 0x38
and al, 0x3f
or al, 0x40
movups xmmword [rbp + 0xb0], xmm1
mov byte [rbp + 0xbf], al
call fcn.180213240
mov rax, qword [rbp + 0x80]
mov r9d, 1
mov rcx, qword [rbp + 0x88]
mov r8d, 0xfe
mov r10, qword [rbp + 0x78]
mov rdi, rbx
movdqa xmm6, xmmword [0x180488990]
mov rsi, rbx
mov qword [rsp + 0x60], rax
mov r14, rbx
mov rax, qword [rbp + 0x90]
mov r15, rbx
mov qword [rsp + 0x58], rcx
mov r12, rbx
mov rcx, qword [rbp + 0x98]
mov r13, rbx
mov qword [rsp + 0x50], rax
mov r11d, r9d
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x38], rbx
mov qword [rbp + 0x28], r10
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x68], rbx
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x28], rbx
mov dword [rsp + 0x20], r8d
movzx ecx, r8b
and ecx, 7
mov eax, r8d
shr rax, 3
movzx edx, byte [rbp + rax + 0xa0]
shr edx, cl
and edx, 1
mov eax, ebx
mov rbx, qword [rsp + 0x68]
mov ecx, edx
xor rcx, rax
mov r8d, edx
mov rdx, qword [rsp + 0x60]
neg rcx
mov rax, r10
xor rax, r9
and rax, rcx
xor r9, rax
xor r10, rax
mov rax, rdi
xor rax, rdx
and rax, rcx
xor rdx, rax
xor rdi, rax
mov qword [rsp + 0x60], rdx
mov rax, rsi
mov qword [rbp + 0x30], rdx
mov rdx, qword [rsp + 0x58]
xor rax, rdx
mov qword [rbp - 0x20], rdi
and rax, rcx
xor rdx, rax
xor rsi, rax
mov qword [rsp + 0x58], rdx
mov rax, r14
mov qword [rbp + 0x38], rdx
mov rdx, qword [rsp + 0x50]
xor rax, rdx
mov qword [rbp - 0x18], rsi
and rax, rcx
xor rdx, rax
xor r14, rax
mov qword [rsp + 0x50], rdx
mov rax, r15
mov qword [rbp + 0x40], rdx
mov rdx, qword [rsp + 0x48]
xor rax, rdx
mov qword [rbp - 0x10], r14
and rax, rcx
xor rdx, rax
xor r15, rax
mov qword [rsp + 0x48], rdx
mov rax, r11
xor rax, r12
mov qword [rbp + 0x48], rdx
mov rdx, qword [rsp + 0x70]
and rax, rcx
xor r11, rax
mov qword [rbp - 8], r15
xor r12, rax
mov qword [rbp - 0x50], r11
mov rax, rdx
xor rax, r13
and rax, rcx
xor rdx, rax
xor r13, rax
mov rax, rbx
mov qword [rsp + 0x70], rdx
mov qword [rbp - 0x48], rdx
mov rdx, qword [rsp + 0x78]
xor rax, rdx
mov qword [rbp - 0x70], r13
and rax, rcx
xor rbx, rax
xor rdx, rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x68], rbx
mov qword [rbp - 0x40], rbx
mov rbx, qword [rsp + 0x40]
xor rax, rbx
mov qword [rbp - 0x68], rdx
movdqu xmm0, xmmword [rbp - 0x48]
and rax, rcx
xor rbx, rax
movdqa xmm1, xmm6
psubq xmm1, xmm0
mov qword [rbp - 0x60], rbx
movdqu xmm0, xmmword [rbp + 0x30]
mov qword [rsp + 0x40], rbx
mov rbx, qword [rsp + 0x30]
movdqa xmm2, xmm6
xor rbx, rax
paddq xmm1, xmm0
mov rax, qword [rsp + 0x28]
mov qword [rsp + 0x30], rbx
mov qword [rbp - 0x38], rbx
mov rbx, qword [rsp + 0x38]
xor rax, rbx
and rax, rcx
mov rcx, qword [rsp + 0x28]
xor rcx, rax
xor rbx, rax
movdqu xmmword [rbp + 8], xmm1
mov qword [rbp - 0x58], rbx
mov rax, r10
sub rax, r11
mov qword [rbp - 0x30], rcx
movdqu xmm0, xmmword [rbp - 0x38]
mov qword [rsp + 0x28], rcx
movabs rcx, 0xfffffffffffda
mov qword [rsp + 0x38], rbx
movdqa xmm1, xmm6
add rax, rcx
psubq xmm2, xmm0
movdqu xmm0, xmmword [rbp + 0x40]
mov qword [rbp], rax
mov ebx, r8d
mov rax, r9
lea r8, [rbp - 0x28]
sub rax, r12
paddq xmm2, xmm0
movdqu xmm0, xmmword [rbp - 0x70]
add rax, rcx
mov qword [rbp + 0x50], rax
lea rax, [r9 + r12]
mov qword [rbp - 0x28], rax
psubq xmm1, xmm0
movdqu xmm0, xmmword [rbp - 0x20]
lea rax, [rdi + r13]
mov qword [rbp - 0x20], rax
lea rax, [rsi + rdx]
mov qword [rbp - 0x18], rax
lea rdx, [rbp]
mov rax, qword [rsp + 0x40]
paddq xmm1, xmm0
movdqu xmm0, xmmword [rbp - 0x60]
add rax, r14
movdqu xmmword [rbp + 0x18], xmm2
movdqa xmm2, xmm6
psubq xmm2, xmm0
movdqu xmm0, xmmword [rbp - 0x10]
mov qword [rbp - 0x10], rax
mov rax, qword [rsp + 0x38]
add rax, r15
paddq xmm2, xmm0
mov qword [rbp - 8], rax
lea rax, [r11 + r10]
mov qword [rbp - 0x78], rax
mov rax, qword [rsp + 0x60]
add rax, qword [rsp + 0x70]
mov qword [rbp - 0x70], rax
mov rax, qword [rsp + 0x68]
add rax, qword [rsp + 0x58]
mov qword [rbp - 0x68], rax
mov rax, qword [rsp + 0x50]
add rax, qword [rsp + 0x30]
mov qword [rbp - 0x60], rax
mov rax, qword [rsp + 0x28]
add rax, qword [rsp + 0x48]
mov qword [rbp - 0x58], rax
movdqu xmmword [rbp + 0x58], xmm1
movdqu xmmword [rbp + 0x68], xmm2
lea rcx, [rbp - 0x50]
call fcn.18001fd40
lea r8, [rbp + 0x50]
lea rdx, [rbp - 0x78]
lea rcx, [rbp - 0x78]
call fcn.18001fd40
lea rdx, [rbp + 0x50]
lea rcx, [rbp]
call fcn.18001ff00
lea rdx, [rbp - 0x28]
lea rcx, [rbp + 0x50]
call fcn.18001ff00
mov rdx, qword [rbp - 0x78]
movdqa xmm1, xmm6
movdqu xmm0, xmmword [rbp - 0x70]
mov rcx, qword [rbp - 0x70]
movabs rdi, 0xfffffffffffda
add rcx, qword [rbp - 0x48]
movdqa xmm2, xmm6
mov r8, qword [rbp - 0x50]
psubq xmm1, xmm0
movdqu xmm0, xmmword [rbp - 0x48]
mov qword [rbp + 0x30], rcx
mov rcx, qword [rbp - 0x68]
add rcx, qword [rbp - 0x40]
lea rax, [r8 + rdx]
mov qword [rbp + 0x38], rcx
paddq xmm1, xmm0
movdqu xmm0, xmmword [rbp - 0x60]
mov rcx, qword [rbp - 0x60]
sub r8, rdx
add rcx, qword [rbp - 0x38]
lea rdx, [rbp + 0x50]
mov qword [rbp + 0x40], rcx
psubq xmm2, xmm0
mov rcx, qword [rbp - 0x58]
add r8, rdi
add rcx, qword [rbp - 0x30]
movdqu xmm0, xmmword [rbp - 0x38]
mov qword [rbp + 0x48], rcx
lea rcx, [rbp - 0x28]
mov qword [rbp - 0x78], r8
lea r8, [rbp]
paddq xmm2, xmm0
mov qword [rbp + 0x28], rax
movdqu xmmword [rbp - 0x60], xmm2
movdqu xmmword [rbp - 0x70], xmm1
call fcn.18001fd40
movdqu xmm0, xmmword [rbp + 8]
lea rdx, [rbp - 0x78]
mov rax, rdi
sub rax, qword [rbp]
movdqa xmm1, xmm6
add qword [rbp + 0x50], rax
lea rcx, [rbp - 0x78]
psubq xmm1, xmm0
movdqa xmm2, xmm6
movdqu xmm0, xmmword [rbp + 0x58]
paddq xmm1, xmm0
movdqu xmm0, xmmword [rbp + 0x18]
movdqu xmmword [rbp + 0x58], xmm1
psubq xmm2, xmm0
movdqu xmm0, xmmword [rbp + 0x68]
paddq xmm2, xmm0
movdqu xmmword [rbp + 0x68], xmm2
call fcn.18001ff00
lea rdx, [rbp + 0x50]
lea rcx, [rbp - 0x50]
call fcn.180020100
lea rdx, [rbp + 0x28]
lea rcx, [rbp + 0x28]
call fcn.18001ff00
mov rax, qword [rbp - 0x50]
add qword [rbp], rax
mov rax, qword [rbp - 0x48]
add qword [rbp + 8], rax
mov rax, qword [rbp - 0x40]
add qword [rbp + 0x10], rax
mov rax, qword [rbp - 0x38]
add qword [rbp + 0x18], rax
mov rax, qword [rbp - 0x30]
add qword [rbp + 0x20], rax
lea r8, [rbp - 0x78]
lea rdx, [rbp + 0x78]
lea rcx, [rbp - 0x50]
call fcn.18001fd40
lea r8, [rbp]
lea rdx, [rbp + 0x50]
lea rcx, [rbp - 0x78]
call fcn.18001fd40
mov r8d, dword [rsp + 0x20]
sub r8d, 1
mov dword [rsp + 0x20], r8d
js 0x18021bfeb
mov rax, qword [rbp - 0x58]
mov rcx, qword [rbp - 0x60]
mov r15, qword [rbp - 8]
mov r14, qword [rbp - 0x10]
mov rsi, qword [rbp - 0x18]
mov rdi, qword [rbp - 0x20]
mov r9, qword [rbp - 0x28]
mov r13, qword [rbp - 0x70]
mov r12, qword [rbp - 0x78]
mov r10, qword [rbp + 0x28]
mov r11, qword [rbp - 0x50]
mov qword [rsp + 0x38], rax
mov rax, qword [rbp - 0x68]
mov qword [rsp + 0x78], rax
mov rax, qword [rbp + 0x40]
mov qword [rsp + 0x50], rax
mov rax, qword [rbp + 0x30]
mov qword [rsp + 0x60], rax
mov rax, qword [rbp - 0x30]
mov qword [rsp + 0x40], rcx
mov rcx, qword [rbp + 0x48]
mov qword [rsp + 0x28], rax
mov rax, qword [rbp - 0x38]
mov qword [rsp + 0x48], rcx
mov rcx, qword [rbp + 0x38]
mov qword [rsp + 0x30], rax
mov rax, qword [rbp - 0x40]
mov qword [rsp + 0x58], rcx
mov rcx, qword [rbp - 0x48]
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x70], rcx
jmp 0x18021bb50
lea rdx, [rbp - 0x78]
lea rcx, [rbp - 0x78]
call fcn.180213410
lea r8, [rbp - 0x78]
lea rdx, [rbp - 0x28]
lea rcx, [rbp - 0x28]
call fcn.18001fd40
mov rcx, qword [rbp - 0x80]
lea rdx, [rbp - 0x28]
call fcn.1802136a0
mov edx, 0x20
lea rcx, [rbp + 0xa0]
call fcn.180001240
movaps xmm6, xmmword [rsp + 0x1d0]
mov r15, qword [rsp + 0x1e0]
mov r13, qword [rsp + 0x1e8]
mov r12, qword [rsp + 0x238]
mov rcx, qword [rbp + 0xc0]
xor rcx, rsp
call fcn.1803fd0a0
add rsp, 0x1f0
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret