Function at 0x140121df0
Capabilities:
Encrypt data using curve25519

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x278
mov qword [rsp + 0x158], rcx
mov rax, qword [0x14036e038]
xor rax, rsp
mov qword [rsp + 0x270], rax
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
lea rdi, [rsp + 0x250]
movaps xmmword [rdi], xmm0
movaps xmmword [rdi + 0x10], xmm1
and byte [rdi], 0xf8
mov al, byte [rdi + 0x1f]
and al, 0x3f
or al, 0x40
mov byte [rdi + 0x1f], al
lea rsi, [rsp + 0x1b0]
mov r8d, 0xa0
mov rcx, rsi
mov dl, 0xaa
call fcn.1401b21d0
lea r8, [0x1403536c0]
mov rcx, rsi
mov rdx, rdi
call fcn.1401a1210
movabs rax, 0xaaaaaaaaaaaaaaaa
lea rdi, [rsp + 0x160]
mov qword [rdi + 0x20], rax
mov rax, qword [rsi + 0x50]
mov rcx, qword [rsi + 0x58]
mov rdx, qword [rsi + 0x28]
mov r12, qword [rsi + 0x30]
mov r8, qword [rsi + 0x60]
mov r13, qword [rsi + 0x38]
mov r9, qword [rsi + 0x68]
mov r14, qword [rsi + 0x40]
movabs r10, 0xffffffffffffe
lea r11, [rax + r10]
sub r11, rdx
mov rbx, rdx
add r11, 0xffffffffffffffdc
lea rdx, [rsp + 0x188]
mov qword [rdx], r11
lea r11, [rcx + r10]
sub r11, r12
mov qword [rdx + 8], r11
lea r11, [r8 + r10]
sub r11, r13
mov qword [rdx + 0x10], r11
lea r11, [r9 + r10]
sub r11, r14
mov qword [rdx + 0x18], r11
mov r11, qword [rsi + 0x70]
mov rsi, qword [rsi + 0x48]
add r10, r11
sub r10, rsi
mov qword [rdx + 0x20], r10
add rsi, r11
add r14, r9
add r13, r8
add r12, rcx
add rbx, rax
mov qword [rsp + 0xd0], rbx
movaps xmm0, xmmword [0x1402eb060]
mov rcx, rdi
movaps xmmword [rdi + 0x10], xmm0
movaps xmmword [rdi], xmm0
call fcn.1401a63b0
mov rcx, qword [rdi + 0x20]
lea rax, [rcx + rcx*8]
lea r9, [rcx + rax*2]
mov rax, r9
mul rsi
mov qword [rsp + 0x148], rax
mov qword [rsp + 0x150], rdx
mov rdx, qword [rdi + 0x18]
mov qword [rsp + 0x30], rdx
lea rax, [rdx + rdx*8]
lea r11, [rdx + rax*2]
mov rax, r11
mul rsi
mov qword [rsp + 0x118], rax
mov qword [rsp + 0x120], rdx
mov rdx, qword [rdi + 0x10]
mov qword [rsp + 0x28], rdx
lea rax, [rdx + rdx*8]
lea r10, [rdx + rax*2]
mov rax, r10
mul rsi
mov qword [rsp + 0x108], rax
mov qword [rsp + 0x110], rdx
mov r8, qword [rdi + 8]
lea rax, [r8 + r8*8]
lea rax, [r8 + rax*2]
mul rsi
mov qword [rsp + 0xa8], rdx
mov qword [rsp + 0xa0], rax
mov rax, r9
mul r14
mov rbx, rdx
mov rbp, rax
mov rax, r11
mul r14
mov qword [rsp + 0xd8], rdx
mov qword [rsp + 0xc0], rax
mov rax, r10
mul r14
mov qword [rsp + 0x88], rdx
mov qword [rsp + 0x78], rax
mov rax, r9
mul r13
mov r15, rdx
mov r10, rax
mov rax, r11
mul r13
mov qword [rsp + 0x68], rdx
mov qword [rsp + 0x60], rax
mov rax, r9
mul r12
mov r11, rax
mov r9, rdx
lea rax, [rsp + 0x160]
mov rdi, qword [rax]
mov rax, rdi
mul rsi
mov qword [rsp + 0x140], rdx
mov qword [rsp + 0x138], rax
mov rax, r8
mul r14
mov qword [rsp + 0x130], rdx
mov qword [rsp + 0x128], rax
mov rax, rdi
mul r14
mov qword [rsp + 0xf0], rdx
mov qword [rsp + 0xe8], rax
mov rsi, qword [rsp + 0x28]
mov rax, rsi
mul r13
mov qword [rsp + 0x100], rdx
mov qword [rsp + 0xf8], rax
mov rax, r8
mul r13
mov qword [rsp + 0xb8], rdx
mov qword [rsp + 0xb0], rax
mov rax, rdi
mul r13
mov qword [rsp + 0x80], rdx
mov qword [rsp + 0x70], rax
mov r14, qword [rsp + 0x30]
mov rax, r14
mul r12
mov qword [rsp + 0xe0], rdx
mov qword [rsp + 0xc8], rax
mov rax, rsi
mul r12
mov qword [rsp + 0x98], rdx
mov qword [rsp + 0x90], rax
mov rax, r8
mul r12
mov qword [rsp + 0x58], rdx
mov qword [rsp + 0x50], rax
mov rax, rdi
mul r12
mov qword [rsp + 0x48], rdx
mov qword [rsp + 0x40], rax
mov rax, rcx
mov rsi, qword [rsp + 0xd0]
mul rsi
mov r12, rdx
mov r13, rax
mov rax, r14
mul rsi
mov r14, rdx
mov rcx, rax
mov rax, qword [rsp + 0x28]
mul rsi
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x30], rax
mov rax, r8
mul rsi
mov qword [rsp + 0x38], rdx
mov r8, rax
mov rax, rdi
mul rsi
add r11, qword [rsp + 0x60]
adc r9, qword [rsp + 0x68]
add r11, qword [rsp + 0x78]
adc r9, qword [rsp + 0x88]
add r11, qword [rsp + 0xa0]
adc r9, qword [rsp + 0xa8]
add r11, rax
adc r9, rdx
shld r9, r11, 0xd
movabs rax, 0x7ffffffffffff
and r11, rax
add rbp, qword [rsp + 0x118]
adc rbx, qword [rsp + 0x120]
add r10, qword [rsp + 0xc0]
adc r15, qword [rsp + 0xd8]
add r10, qword [rsp + 0x108]
adc r15, qword [rsp + 0x110]
add r10, r8
adc r15, qword [rsp + 0x38]
add r10, qword [rsp + 0x40]
adc r15, qword [rsp + 0x48]
add r10, r9
adc r15, 0
shld r15, r10, 0xd
and r10, rax
add rbp, qword [rsp + 0x30]
adc rbx, qword [rsp + 0x28]
add rbp, qword [rsp + 0x50]
adc rbx, qword [rsp + 0x58]
add rbp, qword [rsp + 0x70]
adc rbx, qword [rsp + 0x80]
add rbp, r15
adc rbx, 0
shld rbx, rbp, 0xd
and rbp, rax
add rcx, qword [rsp + 0x148]
adc r14, qword [rsp + 0x150]
add rcx, qword [rsp + 0x90]
adc r14, qword [rsp + 0x98]
add rcx, qword [rsp + 0xb0]
adc r14, qword [rsp + 0xb8]
add rcx, qword [rsp + 0xe8]
adc r14, qword [rsp + 0xf0]
add rcx, rbx
adc r14, 0
shld r14, rcx, 0xd
and rcx, rax
add r13, qword [rsp + 0xc8]
adc r12, qword [rsp + 0xe0]
add r13, qword [rsp + 0xf8]
adc r12, qword [rsp + 0x100]
add r13, qword [rsp + 0x128]
adc r12, qword [rsp + 0x130]
add r13, qword [rsp + 0x138]
adc r12, qword [rsp + 0x140]
add r13, r14
adc r12, 0
shld r12, r13, 0xd
lea rdx, [r12 + r12*8]
lea rdx, [r12 + rdx*2]
add rdx, r11
mov r8, rdx
shr r8, 0x33
add r8, r10
mov r9, r8
shr r9, 0x33
add r9, rbp
and r13, rax
and rdx, rax
and r8, rax
lea rax, [rsp + 0x160]
mov qword [rax], rdx
mov qword [rax + 8], r8
mov qword [rax + 0x10], r9
mov qword [rax + 0x18], rcx
mov qword [rax + 0x20], r13
mov rdx, rax
mov rcx, qword [rsp + 0x158]
call fcn.14011b940
mov rcx, qword [rsp + 0x270]
xor rcx, rsp
call fcn.1401b0080
nop
add rsp, 0x278
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret