Function at 0x140147780
Capabilities:
Encrypt data using curve25519

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x398
movaps xmmword [rsp + 0x380], xmm6
and byte [rdx], 0xf8
mov qword [rsp + 0x158], rcx
movzx eax, byte [rdx + 0x1f]
and al, 0x3f
or al, 0x40
mov byte [rdx + 0x1f], al
movups xmm0, xmmword [rdx]
mov rax, qword [rdx + 0x10]
mov qword [rsp + 0x148], rax
mov eax, dword [rdx + 0x18]
mov dword [rsp + 0x150], eax
movzx eax, word [rdx + 0x1c]
mov word [rsp + 0x154], ax
movzx eax, byte [rdx + 0x1e]
mov byte [rsp + 0x156], al
movzx eax, byte [rdx + 0x1f]
mov byte [rsp + 0x157], al
movups xmmword [rsp + 0x138], xmm0
movq xmm1, qword [rsp + 0x138]
movdqa xmm0, xmmword [0x140308830]
movdqa xmm2, xmm1
pand xmm2, xmm0
psrlw xmm1, 4
movdqa xmm3, xmmword [0x140308840]
pand xmm1, xmm3
punpcklbw xmm2, xmm1
movdqa xmmword [rsp + 0x20], xmm2
movq xmm1, qword [rsp + 0x140]
movdqa xmm2, xmm1
pand xmm2, xmm0
psrlw xmm1, 4
pand xmm1, xmm3
punpcklbw xmm2, xmm1
movdqa xmmword [rsp + 0x30], xmm2
movq xmm1, qword [rsp + 0x148]
movdqa xmm2, xmm1
pand xmm2, xmm0
psrlw xmm1, 4
pand xmm1, xmm3
punpcklbw xmm2, xmm1
movdqa xmmword [rsp + 0x40], xmm2
movq xmm1, qword [rsp + 0x150]
pand xmm0, xmm1
psrlw xmm1, 4
pand xmm1, xmm3
punpcklbw xmm0, xmm1
movdqa xmmword [rsp + 0x50], xmm0
mov eax, 2
movzx ecx, byte [rsp + 0x20]
nop word [rax + rax]
lea edx, [rcx + 8]
mov r8d, edx
and r8b, 0xf0
sub cl, r8b
mov byte [rsp + rax + 0x1e], cl
sar dl, 4
add dl, byte [rsp + rax + 0x1f]
mov byte [rsp + rax + 0x1f], dl
cmp rax, 0x40
je 0x1401478e4
lea ecx, [rdx + 8]
mov r8d, ecx
and r8b, 0xf0
sub dl, r8b
mov byte [rsp + rax + 0x1f], dl
sar cl, 4
add cl, byte [rsp + rax + 0x20]
mov byte [rsp + rax + 0x20], cl
add rax, 2
jmp 0x1401478a0
movaps xmm0, xmmword [rsp + 0x20]
movaps xmm1, xmmword [rsp + 0x30]
movaps xmm2, xmmword [rsp + 0x40]
movaps xmm3, xmmword [rsp + 0x50]
movaps xmmword [rsp + 0x190], xmm3
movaps xmmword [rsp + 0x180], xmm2
movaps xmmword [rsp + 0x170], xmm1
movaps xmmword [rsp + 0x160], xmm0
xorps xmm0, xmm0
movaps xmmword [rsp + 0x1b0], xmm0
movaps xmmword [rsp + 0x1a0], xmm0
mov qword [rsp + 0x1c0], 0
movups xmm1, xmmword [0x140322180]
movups xmmword [rsp + 0x1c8], xmm1
movups xmm2, xmmword [0x140322190]
movups xmmword [rsp + 0x1d8], xmm2
mov qword [rsp + 0x1e8], 0
movaps xmmword [rsp + 0x1f0], xmm1
movaps xmmword [rsp + 0x200], xmm2
mov qword [rsp + 0x210], 0
movups xmmword [rsp + 0x218], xmm0
movups xmmword [rsp + 0x228], xmm0
mov qword [rsp + 0x238], 0
lea rsi, [rsp + 0x98]
lea rdi, [rsp + 0x48]
lea rbx, [rsp + 0x70]
xor r12d, r12d
lea r13, [rsp + 0x2e0]
lea rbp, [rsp + 0x20]
lea r14, [rsp + 0x1a0]
lea r15, [rsp + 0x240]
cmp r12, 0x3f
jbe 0x1401479ed
jmp 0x140147a8e
inc r12
cmp r12, 0x3f
ja 0x140147a8e
test r12b, 1
je 0x1401479e0
mov rax, r12
shr rax, 1
imul rdx, rax, 0x3c0
lea rax, [0x1403221d0]
add rdx, rax
movzx r8d, byte [rsp + r12 + 0x160]
mov rcx, r13
call fcn.140146c90
mov rcx, rbp
mov rdx, r14
mov r8, r13
call fcn.140146f90
mov rcx, r15
mov rdx, rbp
mov r8, rsi
call fcn.1401468b0
lea rcx, [rsp + 0x268]
mov rdx, rdi
mov r8, rbx
call fcn.1401468b0
lea rcx, [rsp + 0x290]
mov rdx, rbx
mov r8, rsi
call fcn.1401468b0
lea rcx, [rsp + 0x2b8]
mov rdx, rbp
mov r8, rdi
call fcn.1401468b0
mov r8d, 0xa0
mov rcx, r14
mov rdx, r15
call sub.msvcrt.dll_memcpy
inc r12
cmp r12, 0x3f
jbe 0x1401479ed
lea rcx, [rsp + 0x1c8]
mov rax, qword [rcx + 0x20]
mov qword [rsp + 0x108], rax
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rsp + 0xf8], xmm1
movups xmmword [rsp + 0xe8], xmm0
movups xmm0, xmmword [rcx + 0x28]
movups xmm1, xmmword [rcx + 0x38]
movaps xmmword [rsp + 0x110], xmm0
movaps xmmword [rsp + 0x120], xmm1
mov rax, qword [rcx + 0x48]
mov qword [rsp + 0x130], rax
movaps xmm0, xmmword [rsp + 0x1a0]
movaps xmm1, xmmword [rsp + 0x1b0]
movaps xmmword [rsp + 0xc0], xmm0
movaps xmmword [rsp + 0xd0], xmm1
mov rax, qword [rsp + 0x1c0]
mov qword [rsp + 0xe0], rax
lea r15, [rsp + 0x70]
lea rbp, [rsp + 0x48]
lea r12, [rsp + 0x290]
lea rsi, [rsp + 0x268]
lea r13, [rsp + 0x2b8]
lea rdi, [rsp + 0x240]
lea r14, [rsp + 0xc0]
mov rcx, rdi
mov rdx, r14
call fcn.140147390
lea rbx, [rsp + 0x20]
mov rcx, rbx
mov rdx, rdi
mov r8, r13
call fcn.1401468b0
mov rcx, rbp
mov rdx, rsi
mov r8, r12
call fcn.1401468b0
mov rcx, r15
mov rdx, r12
mov r8, r13
call fcn.1401468b0
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0x130], rax
movups xmm0, xmmword [rsp + 0x80]
movaps xmmword [rsp + 0x120], xmm0
movups xmm0, xmmword [rsp + 0x70]
movaps xmmword [rsp + 0x110], xmm0
movups xmm0, xmmword [rsp + 0x60]
movaps xmmword [rsp + 0x100], xmm0
movups xmm0, xmmword [rsp + 0x20]
movups xmm1, xmmword [rsp + 0x30]
movups xmm2, xmmword [rsp + 0x40]
movups xmm3, xmmword [rsp + 0x50]
movaps xmmword [rsp + 0xf0], xmm3
movaps xmmword [rsp + 0xe0], xmm2
movaps xmmword [rsp + 0xd0], xmm1
movaps xmmword [rsp + 0xc0], xmm0
mov rcx, rdi
mov rdx, r14
call fcn.140147390
mov rcx, rbx
mov rdx, rdi
mov r8, r13
call fcn.1401468b0
mov rcx, rbp
mov rdx, rsi
mov r8, r12
call fcn.1401468b0
mov rcx, r15
mov rdx, r12
mov r8, r13
call fcn.1401468b0
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0x130], rax
movups xmm0, xmmword [rsp + 0x80]
movaps xmmword [rsp + 0x120], xmm0
movups xmm0, xmmword [rsp + 0x70]
movaps xmmword [rsp + 0x110], xmm0
movups xmm0, xmmword [rsp + 0x60]
movaps xmmword [rsp + 0x100], xmm0
movups xmm0, xmmword [rsp + 0x20]
movups xmm1, xmmword [rsp + 0x30]
movups xmm2, xmmword [rsp + 0x40]
movups xmm3, xmmword [rsp + 0x50]
movaps xmmword [rsp + 0xf0], xmm3
movaps xmmword [rsp + 0xe0], xmm2
movaps xmmword [rsp + 0xd0], xmm1
movaps xmmword [rsp + 0xc0], xmm0
mov rcx, rdi
mov rdx, r14
call fcn.140147390
mov rcx, rbx
mov rdx, rdi
mov r8, r13
call fcn.1401468b0
mov rcx, rbp
mov rdx, rsi
mov r8, r12
call fcn.1401468b0
mov rcx, r15
mov rdx, r12
mov r8, r13
call fcn.1401468b0
mov rax, qword [rsp + 0x90]
mov qword [rsp + 0x130], rax
movups xmm0, xmmword [rsp + 0x80]
movaps xmmword [rsp + 0x120], xmm0
movups xmm0, xmmword [rsp + 0x70]
movaps xmmword [rsp + 0x110], xmm0
movups xmm0, xmmword [rsp + 0x60]
movaps xmmword [rsp + 0x100], xmm0
movups xmm0, xmmword [rsp + 0x20]
movups xmm1, xmmword [rsp + 0x30]
movups xmm2, xmmword [rsp + 0x40]
movups xmm3, xmmword [rsp + 0x50]
movaps xmmword [rsp + 0xf0], xmm3
movaps xmmword [rsp + 0xe0], xmm2
movaps xmmword [rsp + 0xd0], xmm1
movaps xmmword [rsp + 0xc0], xmm0
lea rsi, [rsp + 0x20]
mov rcx, rsi
mov rdx, r14
call fcn.140147390
lea r15, [rsp + 0x98]
lea r14, [rsp + 0x2e0]
mov rcx, r14
mov rdx, rsi
mov r8, r15
call fcn.1401468b0
lea r12, [rsp + 0x48]
lea r13, [rsp + 0x70]
lea rcx, [rsp + 0x308]
mov rdx, r12
mov r8, r13
call fcn.1401468b0
lea rcx, [rsp + 0x330]
mov rdx, r13
mov r8, r15
call fcn.1401468b0
lea rcx, [rsp + 0x358]
mov rdx, rsi
mov r8, r12
call fcn.1401468b0
lea rsi, [rsp + 0x1a0]
mov r8d, 0xa0
mov rcx, rsi
mov rdx, r14
call sub.msvcrt.dll_memcpy
lea r15, [rsp + 0x98]
lea r12, [rsp + 0x48]
lea r13, [rsp + 0x70]
xor ebp, ebp
mov ecx, 0x40
sub rcx, rbp
mov eax, 0
cmovae rax, rcx
mov edx, ebp
and edx, 1
nop word cs:[rax + rax]
cmp rax, rdx
jbe 0x140147e98
mov rcx, rbp
inc rbp
test bpl, 1
je 0x140147df0
mov rax, rcx
shr rax, 1
imul rdx, rax, 0x3c0
lea rax, [0x1403221d0]
add rdx, rax
movzx r8d, byte [rsp + rcx + 0x160]
mov rcx, r14
call fcn.140146c90
mov rcx, rbx
mov rdx, rsi
mov r8, r14
call fcn.140146f90
mov rcx, rdi
mov rdx, rbx
mov r8, r15
call fcn.1401468b0
lea rcx, [rsp + 0x268]
mov rdx, r12
mov r8, r13
call fcn.1401468b0
lea rcx, [rsp + 0x290]
mov rdx, r13
mov r8, r15
call fcn.1401468b0
lea rcx, [rsp + 0x2b8]
mov rdx, rbx
mov r8, r12
call fcn.1401468b0
mov r8d, 0xa0
mov rcx, rsi
mov rdx, rdi
call sub.msvcrt.dll_memcpy
jmp 0x140147dcb
mov rsi, qword [rsp + 0x1c8]
mov rdi, qword [rsp + 0x1d0]
mov rbx, qword [rsp + 0x1d8]
mov r11, qword [rsp + 0x1e0]
mov r10, qword [rsp + 0x1e8]
mov r9, qword [rsp + 0x1f0]
mov rax, qword [rsp + 0x1f8]
mov rcx, qword [rsp + 0x200]
mov rdx, qword [rsp + 0x208]
mov r8, qword [rsp + 0x210]
lea r14, [rsi + r9]
lea r15, [rdi + rax]
lea r12, [rbx + rcx]
lea r13, [r11 + rdx]
lea rbp, [r10 + r8]
mov qword [rsp + 0x160], r14
mov qword [rsp + 0x168], r15
mov qword [rsp + 0x170], r12
mov qword [rsp + 0x178], r13
mov qword [rsp + 0x180], rbp
movabs r14, 0x7ffffffffffff0
add r9, r14
sub r9, rsi
add r9, 0xfffffffffffffee0
sub rax, rdi
add rax, r14
sub rcx, rbx
add rcx, r14
sub rdx, r11
add rdx, r14
sub r8, r10
add r8, r14
mov r10, r9
shr r10, 0x33
mov r11, rax
shr r11, 0x33
mov rsi, rcx
shr rsi, 0x33
mov rdi, rdx
shr rdi, 0x33
mov r14, r8
shr r14, 0x33
movabs rbx, 0x7ffffffffffff
and r9, rbx
and rax, rbx
add rax, r10
and rcx, rbx
add rcx, r11
and rdx, rbx
add rdx, rsi
and r8, rbx
add r8, rdi
lea r10, [r14 + r14*8]
lea r10, [r14 + r10*2]
add r10, r9
mov qword [rsp + 0xc0], r10
mov qword [rsp + 0xc8], rax
mov qword [rsp + 0xd0], rcx
mov qword [rsp + 0xd8], rdx
mov qword [rsp + 0xe0], r8
lea rcx, [rsp + 0x20]
lea rdx, [rsp + 0xc0]
call fcn.140146470
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x300], rax
movups xmm0, xmmword [rsp + 0x20]
movups xmm1, xmmword [rsp + 0x30]
movaps xmmword [rsp + 0x2f0], xmm1
movaps xmmword [rsp + 0x2e0], xmm0
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0x260], rax
movups xmm0, xmmword [rsp + 0x58]
movaps xmmword [rsp + 0x250], xmm0
movups xmm0, xmmword [rsp + 0x48]
movaps xmmword [rsp + 0x240], xmm0
lea rsi, [rsp + 0x20]
lea rdx, [rsp + 0x2e0]
mov rcx, rsi
mov r8d, 5
call fcn.140146690
lea rdi, [rsp + 0x1a0]
lea r8, [rsp + 0x240]
mov rcx, rdi
mov rdx, rsi
call fcn.1401468b0
lea rcx, [rsp + 0x20]
lea rdx, [rsp + 0x160]
mov r8, rdi
call fcn.1401468b0
mov r9, qword [rsp + 0x20]
mov r8, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x38]
mov rax, qword [rsp + 0x40]
mov r10, r9
shr r10, 0x33
mov r11, r8
shr r11, 0x33
mov rsi, rdx
shr rsi, 0x33
mov rdi, rcx
shr rdi, 0x33
mov r14, rax
shr r14, 0x33
and r9, rbx
and r8, rbx
add r8, r10
and rdx, rbx
add rdx, r11
and rcx, rbx
add rcx, rsi
and rax, rbx
add rax, rdi
lea r10, [r14 + r14*8]
lea r10, [r14 + r10*2]
lea r11, [r10 + r9]
add r9, r10
add r9, 0x13
shr r9, 0x33
add r9, r8
shr r9, 0x33
add r9, rdx
shr r9, 0x33
add r9, rcx
shr r9, 0x33
add r9, rax
shr r9, 0x33
lea r10, [r9 + r9*8]
lea r10, [r9 + r10*2]
add r10, r11
mov r9, r10
shr r9, 0x33
add r9, r8
mov r8, r9
shr r8, 0x33
mov r11d, r10d
shr r11d, 8
movq xmm2, r10
pshufd xmm3, xmm2, 0x44
movdqa xmm0, xmm2
psrlq xmm0, 0x20
movdqa xmm1, xmm3
psrlq xmm1, 0x28
movsd xmm1, xmm0
movdqa xmm0, xmm2
psrlq xmm0, 0x10
psrlq xmm3, 0x18
movsd xmm3, xmm0
shr r10, 0x30
and r10d, 7
lea r10d, [r10 + r9*8]
mov esi, r9d
shr esi, 5
movd xmm0, r11d
punpcklqdq xmm2, xmm0
movd xmm4, r10d
movd xmm0, esi
punpcklqdq xmm4, xmm0
movapd xmm0, xmmword [0x140308850]
andpd xmm3, xmm0
pand xmm2, xmm0
packuswb xmm2, xmm3
andpd xmm1, xmm0
pand xmm4, xmm0
packuswb xmm1, xmm4
packuswb xmm2, xmm1
movq xmm1, r9
pshufd xmm3, xmm1, 0x44
movdqa xmm4, xmm1
psrlq xmm4, 0xd
movdqa xmm5, xmm3
psrlq xmm5, 0x15
movsd xmm5, xmm4
psrlq xmm1, 0x1d
psrlq xmm3, 0x25
movsd xmm3, xmm1
andpd xmm3, xmm0
andpd xmm5, xmm0
packuswb xmm5, xmm3
packuswb xmm5, xmm5
packuswb xmm2, xmm5
shr r9, 0x2d
and r9d, 0x3f
add r8, rdx
mov rdx, r8
shr rdx, 0x33
mov r10d, r8d
shl r10d, 6
movd xmm1, r10d
movd xmm3, r9d
por xmm3, xmm1
movq xmm4, r8
movdqa xmm1, xmm4
psrlq xmm1, 2
punpcklbw xmm3, xmm1
shufps xmm3, xmm2, 0xe4
shufps xmm2, xmm3, 0x24
pshufd xmm3, xmm4, 0x44
movdqa xmm1, xmm4
psrlq xmm1, 0xa
movdqa xmm5, xmm3
psrlq xmm5, 0x12
movsd xmm5, xmm1
movaps xmm1, xmmword [0x140308860]
andps xmm2, xmm1
andpd xmm5, xmmword [0x140308850]
packuswb xmm5, xmm5
packuswb xmm5, xmm5
packuswb xmm5, xmm5
andnps xmm1, xmm5
orps xmm1, xmm2
shr r8, 0x32
and r8d, 1
movd xmm2, r8d
pshufd xmm2, xmm2, 0x44
add rdx, rcx
and rbx, rdx
movq xmm5, rdx
mov rcx, rdx
shr rcx, 0x33
add rcx, rax
lea rax, [rbx + rbx]
movq xmm6, rax
pshufd xmm6, xmm6, 0x44
por xmm6, xmm2
movdqa xmm2, xmm4
psrlq xmm2, 0x1a
psrlq xmm3, 0x22
movsd xmm3, xmm2
psrlq xmm4, 0x2a
shufpd xmm4, xmm6, 2
andpd xmm3, xmm0
andpd xmm4, xmm0
packuswb xmm3, xmm4
packuswb xmm3, xmm3
pshufd xmm2, xmm5, 0x44
movdqa xmm4, xmm5
psrlq xmm4, 7
movdqa xmm6, xmm2
psrlq xmm6, 0xf
movsd xmm6, xmm4
movdqa xmm4, xmm5
psrlq xmm4, 0x17
psrlq xmm2, 0x1f
movsd xmm2, xmm4
andpd xmm2, xmm0
andpd xmm6, xmm0
packuswb xmm6, xmm2
packuswb xmm6, xmm6
packuswb xmm3, xmm6
pshufd xmm2, xmm3, 0xe8
shr rbx, 0x2f
mov eax, ecx
shl eax, 4
movd xmm3, eax
movd xmm4, ebx
por xmm4, xmm3
psrlq xmm5, 0x27
punpcklbw xmm5, xmm4
punpcklqdq xmm2, xmm5
movq xmm3, rcx
pshufd xmm4, xmm3, 0x44
movdqa xmm5, xmm3
psrlq xmm5, 4
movdqa xmm6, xmm4
psrlq xmm6, 0xc
movsd xmm6, xmm5
psrlq xmm3, 0x14
psrlq xmm4, 0x1c
movsd xmm4, xmm3
andpd xmm4, xmm0
andpd xmm6, xmm0
packuswb xmm6, xmm4
packuswb xmm6, xmm6
packuswb xmm6, xmm6
movdqa xmm0, xmmword [0x140308870]
pand xmm2, xmm0
pslldq xmm6, 0xa
pandn xmm0, xmm6
por xmm0, xmm2
mov rax, rcx
shr rax, 0x24
pand xmm0, xmmword [0x140308880]
movd xmm2, eax
pslldq xmm2, 0xe
por xmm2, xmm0
shr rcx, 0x2c
and ecx, 0x7f
pand xmm2, xmmword [0x140308890]
movd xmm0, ecx
pslldq xmm0, 0xf
por xmm0, xmm2
mov rax, qword [rsp + 0x158]
movups xmmword [rax], xmm1
movdqu xmmword [rax + 0x10], xmm0
movaps xmm6, xmmword [rsp + 0x380]
add rsp, 0x398
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret