Function at 0x423fa1
Capabilities:
Encrypt data using curve25519

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x4d8
mov qword [rsp + 0x40], rcx
movabs rcx, 0x7ffffffffffff
movups xmm0, xmmword [r8]
movups xmm1, xmmword [r8 + 0x10]
movaps xmmword [rsp + 0x1f0], xmm0
movaps xmmword [rsp + 0x200], xmm1
and byte [rsp + 0x1f0], 0xf8
mov al, byte [rsp + 0x20f]
and al, 0x3f
or al, 0x40
mov byte [rsp + 0x20f], al
movups xmm0, xmmword [0x004cce08]
lea rax, [rsp + 0x50]
movaps xmmword [rax + 0x10], xmm0
movups xmm1, xmmword [0x004ccdf8]
movaps xmmword [rax], xmm1
and qword [rax + 0x20], 0
xorps xmm2, xmm2
lea rax, [rsp + 0x160]
movaps xmmword [rax], xmm2
movaps xmmword [rax + 0x10], xmm2
and qword [rax + 0x20], 0
movups xmm2, xmmword [rdx]
movups xmm3, xmmword [rdx + 0x10]
lea r8, [rsp + 0x190]
movaps xmmword [r8], xmm2
movaps xmmword [r8 + 0x10], xmm3
mov qword [rsp + 0x80], rdx
mov rax, qword [rdx + 0x20]
mov qword [r8 + 0x20], rax
lea rax, [rsp + 0x1c0]
movaps xmmword [rax], xmm1
movaps xmmword [rax + 0x10], xmm0
and qword [rax + 0x20], 0
mov edx, 0xfe
xor eax, eax
dec rcx
mov qword [rsp + 0x78], rcx
mov qword [rsp + 0x48], rdx
mov rcx, rdx
shr rcx, 3
movzx ecx, byte [rsp + rcx + 0x1f0]
mov rdx, qword [rsp + 0x48]
and edx, 7
bt ecx, edx
setb cl
mov dword [rsp + 0x3c], ecx
xor al, cl
movzx eax, al
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0x50]
lea rdx, [rsp + 0x190]
lea r8, [rsp + 0x160]
lea r9, [rsp + 0x1c0]
call fcn.0045c2f1
mov r9, qword [rsp + 0x50]
mov rcx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x60]
mov r8, qword [rsp + 0x68]
mov rax, qword [rsp + 0x70]
mov r10, qword [rsp + 0x160]
mov rdi, qword [rsp + 0x168]
mov r14, qword [rsp + 0x170]
mov rbx, qword [rsp + 0x178]
mov r11, qword [rsp + 0x180]
lea rsi, [r10 + r9]
mov qword [rsp + 0x110], rsi
lea rsi, [rdi + rcx]
mov qword [rsp + 0x118], rsi
lea rsi, [r14 + rdx]
mov qword [rsp + 0x120], rsi
lea rsi, [rbx + r8]
mov qword [rsp + 0x128], rsi
lea rsi, [r11 + rax]
mov qword [rsp + 0x130], rsi
mov qword [rsp + 0x260], rsi
mov rsi, qword [rsp + 0x110]
mov qword [rsp + 0x240], rsi
mov rsi, qword [rsp + 0x118]
mov qword [rsp + 0x248], rsi
mov rsi, qword [rsp + 0x120]
mov qword [rsp + 0x250], rsi
mov rsi, qword [rsp + 0x128]
mov qword [rsp + 0x258], rsi
mov rsi, r10
shr rsi, 0x33
add rsi, rdi
mov rdi, rsi
shr rdi, 0x33
add rdi, r14
mov r14, rdi
shr r14, 0x33
add r14, rbx
mov rbx, r14
shr rbx, 0x33
add rbx, r11
movabs r12, 0x7ffffffffffff
and r10, r12
movabs r15, 0xffffffffffffe
add r9, r15
add r9, 0xffffffffffffffdc
sub r9, r10
mov r10, rbx
shr r10, 0x33
imul r10, r10, 0xffffffffffffffed
add r9, r10
and rsi, r12
add rcx, r15
sub rcx, rsi
and rdi, r12
add rdx, r15
sub rdx, rdi
and r14, r12
add r8, r15
sub r8, r14
and rbx, r12
add rax, r15
sub rax, rbx
mov qword [rsp + 0x138], r9
mov qword [rsp + 0x140], rcx
mov qword [rsp + 0x148], rdx
mov qword [rsp + 0x150], r8
mov qword [rsp + 0x158], rax
mov qword [rsp + 0x290], rax
mov rax, qword [rsp + 0x148]
mov qword [rsp + 0x280], rax
mov rax, qword [rsp + 0x150]
mov qword [rsp + 0x288], rax
mov rax, qword [rsp + 0x138]
mov qword [rsp + 0x270], rax
mov rax, qword [rsp + 0x140]
mov qword [rsp + 0x278], rax
lea rsi, [rsp + 0x2a0]
mov rcx, rsi
lea rdx, [rsp + 0x240]
call fcn.0045c3e6
lea rdi, [rsp + 0x2c8]
mov rcx, rdi
lea rdx, [rsp + 0x270]
call fcn.0045c3e6
mov rbp, qword [rsp + 0x2c8]
mov r13, qword [rsp + 0x2d0]
mov qword [rsp + 0x108], r13
mov r12, qword [rsp + 0x2d8]
mov qword [rsp + 0x100], r12
mov r14, qword [rsp + 0x2e0]
mov qword [rsp + 0xf0], r14
mov rbx, qword [rsp + 0x2e8]
mov qword [rsp + 0xe8], rbx
lea rcx, [rsp + 0x50]
mov rdx, rsi
mov r8, rdi
call fcn.0045c695
mov rax, qword [rsp + 0x2a0]
mov rsi, qword [rsp + 0x2a8]
mov r11, qword [rsp + 0x2b0]
mov r10, qword [rsp + 0x2b8]
mov r9, qword [rsp + 0x2c0]
mov rcx, rbp
mov qword [rsp + 0xf8], rbp
mov rdx, rbp
shr rdx, 0x33
add rdx, r13
movabs rbp, 0x7ffffffffffff
and rcx, rbp
mov r8, rdx
shr r8, 0x33
add r8, r12
and rdx, rbp
sub rsi, rdx
mov r13, rsi
mov rdx, r8
shr rdx, 0x33
add rdx, r14
and r8, rbp
sub r11, r8
mov r12, r11
mov r8, rdx
shr r8, 0x33
add r8, rbx
and rdx, rbp
sub r10, rdx
mov rdi, r10
mov rdx, r8
shr rdx, 0x33
and r8, rbp
mov rbx, rbp
sub r9, r8
mov r11, r9
imul rdx, rdx, 0xffffffffffffffed
sub rax, rcx
add rax, r15
add rax, 0xffffffffffffffdc
add rax, rdx
mov qword [rsp + 0xe0], rax
mov r10, qword [rsp + 0x190]
mov qword [rsp + 0xa8], r10
mov rbp, qword [rsp + 0x1c0]
mov rcx, qword [rsp + 0x1c8]
mov qword [rsp + 0x30], rcx
mov rdx, qword [rsp + 0x1d0]
mov qword [rsp + 0xb8], rdx
mov r8, qword [rsp + 0x1d8]
mov qword [rsp + 0xb0], r8
mov rax, rbp
shr rax, 0x33
add rax, rcx
mov r9, rbp
and r9, rbx
mov rcx, rax
shr rcx, 0x33
add rcx, rdx
mov rdx, rcx
shr rdx, 0x33
add rdx, r8
lea r8, [r10 + r15]
add r8, 0xffffffffffffffdc
sub r8, r9
mov r9, rdx
shr r9, 0x33
mov rsi, qword [rsp + 0x1e0]
add r9, rsi
mov r10, r9
shr r10, 0x33
imul r10, r10, 0xffffffffffffffed
add r8, r10
and rax, rbx
mov r10, qword [rsp + 0x198]
mov qword [rsp + 0x98], r10
add r10, r15
sub r10, rax
and rcx, rbx
mov rax, qword [rsp + 0x1a0]
mov qword [rsp + 0x90], rax
add rax, r15
sub rax, rcx
and rdx, rbx
mov rcx, qword [rsp + 0x1a8]
mov qword [rsp + 0x88], rcx
add rcx, r15
sub rcx, rdx
and r9, rbx
mov rbx, qword [rsp + 0x1b0]
lea rdx, [rbx + r15]
sub rdx, r9
mov qword [rsp + 0x2f0], r8
mov qword [rsp + 0x2f8], r10
mov qword [rsp + 0x300], rax
mov qword [rsp + 0x308], rcx
mov qword [rsp + 0x310], rdx
add r13, r15
mov qword [rsp + 0xc0], r13
add r12, r15
mov qword [rsp + 0xc8], r12
add rdi, r15
mov qword [rsp + 0xd0], rdi
add r11, r15
mov qword [rsp + 0xd8], r11
lea rcx, [rsp + 0x318]
lea rdx, [rsp + 0x2f0]
lea r8, [rsp + 0x110]
call fcn.0045c695
mov rdi, qword [rsp + 0x318]
mov qword [rsp + 0xa0], rdi
mov r14, qword [rsp + 0x320]
mov r15, qword [rsp + 0x328]
mov r12, qword [rsp + 0x330]
mov r13, qword [rsp + 0x338]
add rbp, qword [rsp + 0xa8]
mov rdx, qword [rsp + 0x30]
add rdx, qword [rsp + 0x98]
mov rax, qword [rsp + 0xb8]
add rax, qword [rsp + 0x90]
mov rcx, qword [rsp + 0xb0]
add rcx, qword [rsp + 0x88]
add rsi, rbx
mov qword [rsp + 0x340], rbp
mov qword [rsp + 0x348], rdx
mov qword [rsp + 0x350], rax
mov qword [rsp + 0x358], rcx
mov qword [rsp + 0x360], rsi
lea rcx, [rsp + 0x368]
lea rdx, [rsp + 0x340]
lea r8, [rsp + 0x138]
call fcn.0045c695
mov rsi, qword [rsp + 0x368]
mov rbx, qword [rsp + 0x370]
lea rax, [rsi + rdi]
lea rcx, [rbx + r14]
mov rbp, qword [rsp + 0x378]
lea rdx, [rbp + r15]
mov rdi, qword [rsp + 0x380]
lea r8, [rdi + r12]
mov r9, qword [rsp + 0x388]
mov qword [rsp + 0x30], r9
add r9, r13
mov qword [rsp + 0x390], rax
mov qword [rsp + 0x398], rcx
mov qword [rsp + 0x3a0], rdx
mov qword [rsp + 0x3a8], r8
mov qword [rsp + 0x3b0], r9
lea rcx, [rsp + 0x190]
lea rdx, [rsp + 0x390]
call fcn.0045c3e6
mov rcx, qword [rsp + 0x80]
mov rax, qword [rcx + 0x20]
mov qword [rsp + 0x450], rax
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movaps xmmword [rsp + 0x440], xmm1
movaps xmmword [rsp + 0x430], xmm0
mov rax, rsi
shr rax, 0x33
add rax, rbx
movabs rbx, 0x7ffffffffffff
and rsi, rbx
mov rcx, rax
shr rcx, 0x33
add rcx, rbp
and rax, rbx
mov rdx, rcx
shr rdx, 0x33
add rdx, rdi
and rcx, rbx
mov r8, rdx
shr r8, 0x33
add r8, qword [rsp + 0x30]
and rdx, rbx
mov r9, r8
shr r9, 0x33
and r8, rbx
imul r9, r9, 0xffffffffffffffed
movabs r11, 0xffffffffffffe
mov r10, qword [rsp + 0xa0]
add r10, r11
add r10, 0xffffffffffffffdc
sub r10, rsi
add r10, r9
add r14, r11
sub r14, rax
add r15, r11
sub r15, rcx
add r12, r11
sub r12, rdx
add r13, r11
sub r13, r8
mov qword [rsp + 0x3b8], r10
mov qword [rsp + 0x3c0], r14
mov qword [rsp + 0x3c8], r15
mov qword [rsp + 0x3d0], r12
mov qword [rsp + 0x3d8], r13
lea rsi, [rsp + 0x460]
mov rcx, rsi
lea rdx, [rsp + 0x3b8]
call fcn.0045c3e6
lea rcx, [rsp + 0x1c0]
lea rdx, [rsp + 0x430]
mov r8, rsi
call fcn.0045c695
mov rax, qword [rsp + 0xe0]
mov qword [rsp + 0x3e0], rax
mov esi, 0x1db42
mul rsi
mov rcx, rdx
mov r9, rax
mov r10, qword [rsp + 0xc0]
mov rax, r10
mul rsi
mov r8, rdx
shld rcx, r9, 0xd
and r9, qword [rsp + 0x78]
add rcx, rax
adc r8, 0
mov qword [rsp + 0x3e8], r10
mov r11, qword [rsp + 0xc8]
mov rax, r11
mul rsi
mov r10, rdx
shld r8, rcx, 0xd
and rcx, rbx
add r8, rax
adc r10, 0
mov qword [rsp + 0x3f0], r11
mov rdi, qword [rsp + 0xd0]
mov rax, rdi
mul rsi
mov r11, rdx
shld r10, r8, 0xd
and r8, rbx
add r10, rax
adc r11, 0
mov qword [rsp + 0x3f8], rdi
mov rdi, qword [rsp + 0xd8]
mov rax, rdi
mul rsi
shld r11, r10, 0xd
and r10, rbx
add r11, rax
adc rdx, 0
mov qword [rsp + 0x400], rdi
shld rdx, r11, 0xd
and r11, rbx
imul rax, rdx, 0x13
add r9, qword [rsp + 0xf8]
add r9, rax
mov qword [rsp + 0x408], r9
add rcx, qword [rsp + 0x108]
mov qword [rsp + 0x410], rcx
add r8, qword [rsp + 0x100]
mov qword [rsp + 0x418], r8
add r10, qword [rsp + 0xf0]
mov qword [rsp + 0x420], r10
add r11, qword [rsp + 0xe8]
mov qword [rsp + 0x428], r11
lea rcx, [rsp + 0x160]
lea rdx, [rsp + 0x3e0]
lea r8, [rsp + 0x408]
call fcn.0045c695
mov eax, dword [rsp + 0x3c]
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffff
jb 0x424077
xor ecx, ecx
mov cl, al
mov qword [rsp + 0x20], rcx
lea rsi, [rsp + 0x50]
lea rdx, [rsp + 0x190]
lea rdi, [rsp + 0x160]
lea r9, [rsp + 0x1c0]
mov rcx, rsi
mov r8, rdi
call fcn.0045c2f1
lea rbx, [rsp + 0x488]
mov rcx, rbx
mov rdx, rdi
call fcn.0045cb42
mov rax, qword [rbx + 0x20]
mov qword [rdi + 0x20], rax
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movaps xmmword [rdi + 0x10], xmm1
movaps xmmword [rdi], xmm0
lea rbx, [rsp + 0x4b0]
mov rcx, rbx
mov rdx, rsi
mov r8, rdi
call fcn.0045c695
mov rax, qword [rbx + 0x20]
mov qword [rsi + 0x20], rax
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movaps xmmword [rsi + 0x10], xmm1
movaps xmmword [rsi], xmm0
mov rcx, rbx
call fcn.0044d3c1
movdqu xmm0, xmmword [rbx]
movdqu xmm1, xmmword [rbx + 0x10]
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq rax, xmm0
or rax, qword [rbx + 0x20]
je 0x424997
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x230], rax
movaps xmm0, xmmword [rsp + 0x50]
movaps xmm1, xmmword [rsp + 0x60]
movaps xmmword [rsp + 0x220], xmm1
movaps xmmword [rsp + 0x210], xmm0
mov rcx, qword [rsp + 0x230]
mov rax, qword [rsp + 0x40]
mov qword [rax + 0x20], rcx
movdqa xmm0, xmmword [rsp + 0x210]
movdqa xmm1, xmmword [rsp + 0x220]
movdqu xmmword [rax + 0x10], xmm1
movdqu xmmword [rax], xmm0
xor ecx, ecx
jmp 0x4249a0
mov cx, 0xaf
mov rax, qword [rsp + 0x40]
mov word [rax + 0x28], cx
add rsp, 0x4d8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret