Function at 0x140024600
Capabilities:
Encrypt data using curve25519

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x4c0]
sub rsp, 0x5c0
mov rax, qword [0x1400e6470]
xor rax, rsp
mov qword [rbp + 0x4b0], rax
mov rax, qword [0x1400a81e8]
xor ebx, ebx
mov r13, qword [rbp + 0x520]
mov r14, r9
mov qword [rsp + 0x38], rcx
mov rdi, r8
mov qword [rsp + 0x40], r13
mov rsi, rdx
lea r15d, [rbx - 0xa]
mov r12, rcx
test rax, rax
jne 0x140024664
mov ecx, r15d
jmp 0x140024699
mov dword [rsp + 0x30], 0x40
call rax
lea r9, [rsp + 0x30]
mov qword [rsp + 0x28], rbx
lea r8, [rbp + 0x3f0]
mov qword [rsp + 0x20], rax
mov edx, 0x20
mov rcx, r13
call qword [sym.imp.libcrypto.dll_EVP_Digest]
test eax, eax
jne 0x1400246b4
lea ecx, [rax - 0x16]
call fcn.1400026a0
mov r8, rax
lea rdx, str.crypto_hash_sha512
lea rcx, [0x1400a6fd8]
call fcn.14000c3a0
movzx eax, byte [rbp + 0x40f]
lea r13, [r14 + 0x40]
and byte [rbp + 0x3f0], 0xf8
and al, 0x3f
or al, 0x40
mov qword [rsi], r13
mov byte [rbp + 0x40f], al
test r14, r14
je 0x140024701
lea rcx, [r12 + 0x40]
sub rdi, r12
mov rdx, r14
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rdi + rcx - 0x40]
mov byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x1400246f0
lea rsi, [r12 + 0x20]
lea rdi, [rbp + 0x3f0]
mov rcx, rsi
sub rdi, r12
lea r8, [rbp + 0x3f1]
sub r8, r12
mov r12d, setsockopt
mov edx, r12d
nop word [rax + rax]
movzx eax, byte [rdi + rcx]
mov byte [rcx], al
movzx eax, byte [r8 + rcx]
mov byte [rcx + 1], al
lea rcx, [rcx + 2]
sub rdx, 1
jne 0x140024730
mov rax, qword [0x1400a81e8]
test rax, rax
je 0x14002478b
mov dword [rsp + 0x30], 0x40
call rax
lea rdx, [r14 + 0x20]
mov qword [rsp + 0x28], rbx
lea r9, [rsp + 0x30]
mov qword [rsp + 0x20], rax
lea r8, [rbp + 0x430]
mov rcx, rsi
call qword [sym.imp.libcrypto.dll_EVP_Digest]
test eax, eax
jne 0x1400247a9
mov r15d, 0xffffffea
mov ecx, r15d
call fcn.1400026a0
mov r8, rax
lea rdx, str.crypto_hash_sha512
lea rcx, [0x1400a6fd8]
call fcn.14000c3a0
mov rcx, rbx
nop dword [rax]
movzx eax, byte [rbp + rcx + 0x430]
mov dword [rbp + rcx*4 - 0x30], eax
movzx eax, byte [rbp + rcx + 0x431]
mov dword [rbp + rcx*4 - 0x2c], eax
add rcx, 2
cmp rcx, 0x40
jl 0x1400247b0
lea rdx, [rbp - 0x30]
lea rcx, [rbp + 0xd0]
call fcn.14002b5d0
lea rdx, [rbp + 0xd0]
lea rcx, [rsp + 0x50]
call fcn.14002baa0
movzx r8d, byte [rsp + 0x50]
lea rcx, [rbp + 0x1d0]
xor edx, edx
call fcn.14002a420
xor eax, eax
lea rdi, [rbp + 0x2d4]
mov r14d, 1
lea r8, [rbp + 0x250]
mov dword [rbp + 0x2d0], r14d
lea rdx, [rbp + 0x1d0]
mov ecx, 0x1f
rep stosd dword [rdi], eax
lea rcx, [rbp + 0x350]
call fcn.14002e830
lea rdi, [rsp + 0x51]
lea r15d, [r14 + 0x53]
nop word [rax + rax]
movzx r8d, byte [rdi]
lea rcx, [rbp - 0x30]
mov rdx, r14
call fcn.14002a420
lea rdx, [rbp - 0x30]
lea rcx, [rbp + 0x1d0]
call fcn.140029d60
inc r14
lea rdi, [rdi + 1]
sub r15, 1
jne 0x140024850
lea rdx, [rbp + 0x1d0]
lea rcx, [rbp + 0x3d0]
call fcn.14002aa70
mov r14, qword [rsp + 0x38]
lea rcx, [rbp + 0x470]
movups xmm5, xmmword [rbp + 0x3d0]
mov r8, qword [rsp + 0x40]
mov r9, r14
movups xmm0, xmmword [rbp + 0x3e0]
add r8, 0x20
mov rdx, r14
movups xmmword [r14], xmm5
mov qword [rsp + 0x20], r13
movups xmmword [r14 + 0x10], xmm0
call fcn.1400244f0
mov rcx, rbx
nop
movzx eax, byte [rbp + rcx + 0x470]
mov dword [rbp + rcx*4 - 0x30], eax
movzx eax, byte [rbp + rcx + 0x471]
mov dword [rbp + rcx*4 - 0x2c], eax
add rcx, 2
cmp rcx, 0x40
jl 0x1400248d0
lea rdx, [rbp - 0x30]
lea rcx, [rsp + 0x50]
call fcn.14002b5d0
mov rdx, rbx
movzx eax, byte [rbp + rdx + 0x3f0]
mov dword [rbp + rdx*4 - 0x30], eax
movzx eax, byte [rbp + rdx + 0x3f1]
mov dword [rbp + rdx*4 - 0x2c], eax
add rdx, 2
cmp rdx, 0x20
jl 0x140024903
xor eax, eax
lea rdi, [rbp + 0x50]
mov ecx, 0x20
lea rdx, [rbp - 0x30]
rep stosd dword [rdi], eax
lea rcx, [rbp + 0x150]
call fcn.14002b5d0
lea rax, [rbp - 0x30]
mov ecx, 4
nop dword [rax + rax]
mov qword [rax], rbx
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbx
lea rax, [rax + 0x40]
mov qword [rax - 0x28], rbx
mov qword [rax - 0x20], rbx
mov qword [rax - 0x18], rbx
mov qword [rax - 0x10], rbx
mov qword [rax - 8], rbx
sub rcx, 1
jne 0x140024950
lea rdi, [rbp + 0x154]
mov r8, rbx
lea rax, [rbp - 0x2c]
sub rdi, rax
nop word [rax + rax]
mov edx, dword [rsp + r8 + 0x50]
lea rax, [rbp - 0x2c]
add rax, r8
mov r9d, 8
mov ecx, dword [rdi + rax - 4]
lea rax, [rax + 0x10]
imul ecx, edx
add dword [rax - 0x14], ecx
mov ecx, dword [rdi + rax - 0x10]
imul ecx, edx
add dword [rax - 0x10], ecx
mov ecx, dword [rdi + rax - 0xc]
imul ecx, edx
add dword [rax - 0xc], ecx
mov ecx, dword [rdi + rax - 8]
imul ecx, edx
add dword [rax - 8], ecx
sub r9, 1
jne 0x1400249a2
add r8, 4
sub rdi, 4
cmp r8, 0x80
jl 0x140024990
lea rdi, [rbp - 0x30]
lea r8d, [r9 + 0x3f]
nop dword [rax]
mov ecx, dword [rdi]
lea rdi, [rdi + 4]
mov eax, ecx
shr eax, 8
add dword [rdi], eax
movzx eax, cl
mov dword [rdi - 4], eax
sub r8, 1
jne 0x1400249f0
lea rdx, [rbp - 0x30]
lea rcx, [rsp + 0x50]
call fcn.14002b5d0
lea r8, [rbp + 0xd0]
lea rdx, [rsp + 0x50]
lea rcx, [rsp + 0x50]
call fcn.14002b930
nop dword [rax]
movzx eax, byte [rsp + rbx*4 + 0x50]
mov byte [rbp + rbx + 0x3d0], al
movzx eax, byte [rsp + rbx*4 + 0x54]
mov byte [rbp + rbx + 0x3d1], al
add rbx, 2
cmp rbx, 0x20
jl 0x140024a30
lea rcx, [rbp + 0x3d0]
sub rcx, r14
lea rdx, [rbp + 0x3d1]
sub rdx, r14
nop word [rax + rax]
movzx eax, byte [rcx + rsi - 0x20]
mov byte [rsi], al
movzx eax, byte [rdx + rsi - 0x20]
mov byte [rsi + 1], al
lea rsi, [rsi + 2]
sub r12, 1
jne 0x140024a70
xor eax, eax
mov rcx, qword [rbp + 0x4b0]
xor rcx, rsp
call fcn.140075860
mov rbx, qword [rsp + 0x610]
add rsp, 0x5c0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret