Function at 0x1400080a6
Capabilities:
Encrypt data using curve25519

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x2d8
xor ebx, ebx
mov r15d, 0xfe
movabs r14, 0x7fffffffffffffff
mov rax, qword [rcx]
mov qword [rsp + 0x170], rax
mov rax, qword [rcx + 8]
mov rsi, rdx
lea rdx, [rsp + 0x158]
mov rdi, rdx
mov rbp, rcx
lea rdx, [rsp + 0x130]
mov qword [rsp + 0x150], 1
mov qword [rsp + 0x178], rax
mov rax, qword [rcx + 0x10]
movups xmm0, xmmword [rsp + 0x170]
mov qword [rsp + 0x180], rax
mov rax, qword [rcx + 0x18]
mov ecx, 6
movups xmmword [rsp + 0x110], xmm0
and rax, r14
mov qword [rsp + 0x188], rax
xor eax, eax
movups xmm1, xmmword [rsp + 0x180]
rep stosd dword [rdi], eax
mov rdi, rdx
mov ecx, 8
lea rdx, [rsp + 0x2b0]
rep stosd dword [rdi], eax
mov ecx, 0x20
mov rdi, rdx
movups xmmword [rsp + 0x120], xmm1
sub rcx, r8
movups xmm2, xmmword [rsp + 0x150]
movups xmm3, xmmword [rsp + 0x160]
rep stosb byte [rdi], al
mov rcx, r8
movups xmmword [rsp + 0xf0], xmm2
rep movsb byte [rdi], byte [rsi]
movups xmmword [rsp + 0x100], xmm3
mov al, byte [rsp + 0x2b0]
and byte [rsp + 0x2cf], 0xf8
and eax, 0x7f
or eax, 0x40
mov byte [rsp + 0x2b0], al
lea rax, [rsp + 0x110]
mov qword [rsp + 0x28], rax
mov edx, r15d
mov eax, 0x1f
mov ecx, r15d
mov r8d, ebx
sar edx, 3
and ecx, 7
lea rdi, [rsp + 0x290]
sub eax, edx
mov rdx, qword [rsp + 0x28]
lea rsi, [rsp + 0x250]
lea r12, [rsp + 0x230]
cdqe
lea r13, [rsp + 0x1b0]
movzx eax, byte [rsp + rax + 0x2b0]
sar eax, cl
and eax, 1
xor r8d, eax
mov ebx, eax
lea rax, [rsp + 0x150]
mov rcx, rax
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x48], r8d
call fcn.1400048ce
lea rax, [rsp + 0xf0]
mov r8d, dword [rsp + 0x48]
mov qword [rsp + 0x30], rax
lea rax, [rsp + 0x130]
mov rdx, qword [rsp + 0x30]
mov rcx, rax
mov qword [rsp + 0x38], rax
call fcn.1400048ce
mov r8, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x40]
mov rcx, rdi
call fcn.140004938
lea rax, [rsp + 0x270]
mov r8, rdi
mov rdx, rdi
mov rcx, rax
mov qword [rsp + 0xd0], rax
call fcn.140004b42
mov r8, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x40]
mov rcx, rsi
call fcn.140004a27
mov r8, rsi
mov rdx, rsi
mov rcx, r12
call fcn.140004b42
lea rax, [rsp + 0x210]
mov rdx, qword [rsp + 0xd0]
mov r8, r12
mov rcx, rax
mov qword [rsp + 0xd8], rax
call fcn.140004a27
mov r8, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x28]
lea rax, [rsp + 0x1f0]
mov rcx, rax
mov qword [rsp + 0x48], rax
call fcn.140004938
mov r8, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x28]
lea rax, [rsp + 0x1d0]
mov rcx, rax
mov qword [rsp + 0x50], rax
call fcn.140004a27
mov rdx, qword [rsp + 0x50]
mov r8, rdi
mov rcx, r13
lea rdi, [rsp + 0x190]
call fcn.140004b42
mov rdx, qword [rsp + 0x48]
mov r8, rsi
mov rcx, rdi
call fcn.140004b42
mov rcx, qword [rsp + 0x28]
mov r8, rdi
mov rdx, r13
call fcn.140004938
mov r8, qword [rsp + 0x28]
mov rdx, r8
mov rcx, r8
call fcn.140004b42
mov rcx, qword [rsp + 0x30]
mov r8, rdi
mov rdx, r13
call fcn.140004a27
mov r8, qword [rsp + 0x30]
mov rdx, r8
mov rcx, r8
call fcn.140004b42
mov r8, qword [rsp + 0x30]
lea rax, [rsp + 0x170]
mov rdx, rax
mov qword [rsp + 0x48], rax
mov rcx, r8
call fcn.140004b42
mov rdx, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x40]
mov r8, r12
call fcn.140004b42
mov ecx, 0x1db41
xor r11d, r11d
mov rax, rcx
mul qword [rsp + 0x210]
mov rsi, rax
mov r10, rdx
mov rax, rcx
mul qword [rsp + 0x218]
mov qword [rsp + 0x60], rsi
mov rsi, qword [rsp + 0x60]
add r10, rax
mov rax, rcx
adc r11, rdx
mul qword [rsp + 0x220]
xor r9d, r9d
mov qword [rsp + 0x80], r10
mov r8, r11
add r8, rax
mov rax, rcx
adc r9, rdx
mul qword [rsp + 0x228]
mov qword [rsp + 0x50], r8
mov r8, r9
mov qword [rsp + 0x58], r9
xor r9d, r9d
add rax, r8
adc rdx, r9
mov r9, r14
xor r12d, r12d
and r9, rax
shrd rax, rdx, 0x3f
mov qword [rsp + 0x68], r12
mov rdi, qword [rsp + 0x68]
imul rax, rax, 0x13
mov qword [rsp + 0x70], rax
xor eax, eax
add rsi, qword [rsp + 0x70]
mov qword [rsp + 0x78], rax
adc rdi, qword [rsp + 0x78]
xor eax, eax
xor r11d, r11d
mov qword [rsp + 0x88], rax
mov rax, qword [rsp + 0x50]
mov r10, rdi
add r10, qword [rsp + 0x80]
adc r11, qword [rsp + 0x88]
xor edx, edx
mov qword [rsp + 0xa0], rsi
mov qword [rsp + 0x90], rax
xor eax, eax
mov qword [rsp + 0x98], rax
mov rax, r11
add rax, qword [rsp + 0x90]
adc rdx, qword [rsp + 0x98]
xor r8d, r8d
add rdx, r9
mov qword [rsp + 0xa8], r8
mov rcx, rdx
sar rcx, 0x3f
and ecx, 0x13
mov qword [rsp + 0xe0], rcx
sar rcx, 0x3f
mov r8, qword [rsp + 0xe0]
mov qword [rsp + 0xe8], rcx
mov r9, qword [rsp + 0xe8]
add r8, qword [rsp + 0xa0]
mov qword [rsp + 0xb0], r10
adc r9, qword [rsp + 0xa8]
xor r10d, r10d
mov qword [rsp + 0x130], r8
mov qword [rsp + 0xb8], r10
mov r8, r9
xor r9d, r9d
add r8, qword [rsp + 0xb0]
adc r9, qword [rsp + 0xb8]
xor esi, esi
mov qword [rsp + 0x138], r8
mov qword [rsp + 0xc0], rax
mov r8, r9
xor r9d, r9d
add r8, qword [rsp + 0xc0]
mov qword [rsp + 0xc8], rsi
adc r9, qword [rsp + 0xc8]
and rdx, r14
add rdx, r9
mov qword [rsp + 0x140], r8
mov r8, qword [rsp + 0x38]
mov qword [rsp + 0x148], rdx
mov rdx, qword [rsp + 0xd0]
mov rcx, r8
call fcn.140004938
mov r8, qword [rsp + 0x38]
mov rdx, qword [rsp + 0xd8]
mov rcx, r8
call fcn.140004b42
sub r15d, 1
jae 0x1400081b8
mov rdx, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x40]
mov r8d, ebx
mov esi, 0xf
call fcn.1400048ce
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x38]
mov r8d, ebx
call fcn.1400048ce
movups xmm4, xmmword [rsp + 0x130]
movups xmm5, xmmword [rsp + 0x140]
movups xmmword [rsp + 0x170], xmm4
movups xmmword [rsp + 0x180], xmm5
mov r8, qword [rsp + 0x48]
mov rdx, r8
mov rcx, r8
call fcn.140004b42
mov rdx, qword [rsp + 0x48]
mov r8, qword [rsp + 0x38]
mov rcx, rdx
call fcn.140004b42
dec esi
jne 0x1400085d2
movups xmm0, xmmword [rsp + 0x170]
movups xmm1, xmmword [rsp + 0x180]
mov edi, 0xe
movups xmmword [rsp + 0x110], xmm0
movups xmmword [rsp + 0x120], xmm1
mov esi, 0x10
mov r8, qword [rsp + 0x28]
mov rdx, r8
mov rcx, r8
call fcn.140004b42
dec esi
jne 0x140008622
mov rdx, qword [rsp + 0x28]
mov r8, qword [rsp + 0x48]
mov rcx, rdx
call fcn.140004b42
dec edi
jne 0x14000861d
mov esi, 0xe
mov edi, 0xffeb
mov r8, qword [rsp + 0x28]
mov rcx, r8
mov rdx, r8
call fcn.140004b42
mov eax, edi
mov ecx, esi
sar eax, cl
test al, 1
je 0x140008682
mov r8, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x38]
mov rcx, r8
call fcn.140004b42
sub esi, 1
jae 0x140008656
mov rdx, qword [rsp + 0x40]
mov r8, qword [rsp + 0x28]
mov rcx, rdx
call fcn.140004b42
mov rdi, qword [rsp + 0x150]
xor edx, edx
mov rsi, qword [rsp + 0x158]
mov r11, qword [rsp + 0x160]
mov rax, rdi
mov rcx, rsi
add rax, 0x13
mov r14, r11
adc rdx, 0
xor ebx, ebx
mov rax, rdx
xor edx, edx
add rcx, rax
adc rbx, rdx
xor r9d, r9d
xor edx, edx
mov r15, r9
add r14, rbx
lea r9, [rdi + 0x13]
adc r15, rdx
mov r8, r14
xor r9, rdi
xor rcx, rsi
mov rdx, qword [rsp + 0x168]
mov rax, r15
xor r8, r11
add rax, rdx
mov r10, rax
btr rax, 0x3f
sar r10, 0x3f
xor rax, rdx
and rax, r10
and r9, r10
and rcx, r10
and r8, r10
xor rax, rdx
xor r9, rdi
xor rcx, rsi
xor r8, r11
mov qword [rbp + 0x18], rax
mov eax, 1
mov qword [rbp], r9
mov qword [rbp + 8], rcx
mov qword [rbp + 0x10], r8
add rsp, 0x2d8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, rdx
mov rdx, r8
mov r8, r9
cmp rax, 0x20
jne 0x140008767
cmp r9, 0x20
ja 0x140008767
jmp 0x1400080a6
xor eax, eax
ret