Function at 0x2b3689740
Capabilities:
Encrypt data using curve25519

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x208
movaps xmmword [rsp + 0x1e0], xmm6
movaps xmmword [rsp + 0x1f0], xmm7
xor r11d, r11d
xor r9d, r9d
movdqu xmm5, xmmword [rdx + 0x10]
movdqu xmm4, xmmword [rdx]
movdqu xmm6, xmmword [r8]
movaps xmmword [rsp + 0x90], xmm5
movzx eax, byte [rsp + 0x9f]
lea r12, [rsp + 0xc0]
lea r13, [rsp + 0xe0]
movaps xmmword [rsp + 0x80], xmm4
movdqu xmm4, xmmword [r8 + 0x10]
lea r15, [rsp + 0x180]
lea r10, [rsp + 0x160]
and eax, 0x7f
and byte [rsp + 0x80], 0xf8
mov rbp, r15
mov r15, r13
or eax, 0x40
movaps xmmword [rsp + 0x20], xmm4
mov r13, r12
lea r14, [rsp + 0xa0]
mov byte [rsp + 0x9f], al
mov r12, r10
lea rax, [rsp + 0x100]
lea rdi, [rsp + 0x1a0]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0x120]
lea rsi, [rsp + 0x1c0]
mov qword [rsp + 0x58], rax
lea rax, [rsp + 0x140]
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x1e0]
mov qword [rsp + 0x250], rcx
mov qword [rsp + 0x260], r8
mov qword [rsp + 0xc0], 1
mov qword [rsp + 0xc8], 0
mov qword [rsp + 0xd0], 0
mov qword [rsp + 0xd8], 0
mov qword [rsp + 0xe0], 1
mov qword [rsp + 0xe8], 0
mov qword [rsp + 0xf0], 0
mov qword [rsp + 0xf8], 0
mov qword [rsp + 0x100], 0
mov qword [rsp + 0x108], 0
mov qword [rsp + 0x110], 0
mov qword [rsp + 0x118], 0
mov dword [rsp + 0x20], 0xfd
mov qword [rsp + 0x48], rax
movaps xmmword [rsp + 0xa0], xmm6
movaps xmmword [rsp + 0xb0], xmm4
mov ebx, dword [rsp + 0x20]
jmp 0x2b3689900
movaps xmmword [rsp + 0x70], xmm2
movzx r9d, byte [rsp + 0x7f]
mov ebx, eax
movaps xmmword [rsp + 0x60], xmm1
movzx r11d, byte [rsp + 0x6f]
mov eax, ebx
and ebx, 7
xor edx, edx
sar eax, 3
mov ecx, ebx
cdqe
movzx eax, byte [rsp + rax + 0x80]
sar eax, cl
and eax, 1
mov dword [rsp + 0x34], eax
xor eax, eax
nop dword [rax]
movzx ecx, byte [r14 + rax]
movzx r8d, byte [r13 + rax]
shr dx, 8
add ecx, r8d
add edx, ecx
mov byte [rdi + rax], dl
add rax, 1
cmp rax, 0x20
jne 0x2b3689928
and byte [rsp + 0x1bf], 0x7f
shr dx, 7
mov rbx, rdi
mov rcx, rdi
lea eax, [rdx + rdx*8]
lea eax, [rdx + rax*2]
nop dword [rax]
movzx edx, byte [rcx]
add rcx, 1
add eax, edx
mov byte [rcx - 1], al
shr ax, 8
cmp rsi, rcx
jne 0x2b3689968
mov r10, qword [rsp + 0x40]
xor ecx, ecx
mov r8d, 0xda
movzx edx, byte [r15 + rcx]
movzx eax, byte [r10 + rcx]
add edx, 0xff00
sub edx, eax
lea eax, [rdx + r8]
mov byte [rsi + rcx], al
shr eax, 8
add rcx, 1
mov r8d, eax
cmp rcx, 0x1f
jne 0x2b368998a
movzx ecx, r11b
movzx edx, r9b
mov r8, qword [rsp + 0x48]
mov r11, rsi
sub edx, ecx
add eax, edx
mov edx, eax
shr eax, 7
and edx, 0x7f
mov byte [rsp + 0x1df], dl
lea edx, [rax + rax*8]
lea eax, [rax + rdx*2]
mov rdx, rsi
nop
movzx ecx, byte [rdx]
add rdx, 1
add eax, ecx
mov byte [rdx - 1], al
shr eax, 8
cmp r8, rdx
jne 0x2b36899e0
mov rcx, r12
mov r8, rsi
mov rdx, rdi
mov qword [rsp + 0x50], r11
call fcn.2b3685db0
mov r11, qword [rsp + 0x50]
xor ecx, ecx
mov eax, 0xda
nop dword [rax + rax]
movzx edx, byte [r14 + rcx]
movzx r8d, byte [r13 + rcx]
add edx, 0xff00
sub edx, r8d
add eax, edx
mov byte [rsi + rcx], al
add rcx, 1
shr eax, 8
cmp rcx, 0x1f
jne 0x2b3689a18
movzx ecx, byte [rsp + 0xdf]
movzx edx, byte [rsp + 0xbf]
sub edx, ecx
mov rcx, qword [rsp + 0x48]
add eax, edx
mov edx, eax
shr eax, 7
and edx, 0x7f
mov byte [rsp + 0x1df], dl
lea edx, [rax + rax*8]
lea eax, [rax + rdx*2]
nop dword [rax]
movzx edx, byte [r11]
add r11, 1
add eax, edx
mov byte [r11 - 1], al
shr eax, 8
cmp rcx, r11
jne 0x2b3689a70
mov r9, qword [rsp + 0x40]
xor eax, eax
xor edx, edx
movzx ecx, byte [r15 + rax]
movzx r8d, byte [r9 + rax]
shr dx, 8
add ecx, r8d
add edx, ecx
mov byte [rdi + rax], dl
add rax, 1
cmp rax, 0x20
jne 0x2b3689a8f
and byte [rsp + 0x1bf], 0x7f
shr dx, 7
lea eax, [rdx + rdx*8]
lea eax, [rdx + rax*2]
mov rdx, rdi
nop dword [rax]
movzx ecx, byte [rdx]
add rdx, 1
add eax, ecx
mov byte [rdx - 1], al
shr ax, 8
cmp rsi, rdx
jne 0x2b3689ac8
mov rdx, rdi
mov r8, rsi
mov rcx, rbp
call fcn.2b3685db0
xor eax, eax
xor edx, edx
nop
movzx ecx, byte [r12 + rax]
movzx r8d, byte [rbp + rax]
shr dx, 8
add ecx, r8d
add edx, ecx
mov byte [rdi + rax], dl
add rax, 1
cmp rax, 0x20
jne 0x2b3689af0
and byte [rsp + 0x1bf], 0x7f
shr dx, 7
lea eax, [rdx + rdx*8]
lea eax, [rdx + rax*2]
mov rdx, rdi
nop word cs:[rax + rax]
movzx ecx, byte [rdx]
add rdx, 1
add eax, ecx
mov byte [rdx - 1], al
shr ax, 8
cmp rdx, rsi
jne 0x2b3689b30
mov r8, rdi
mov rdx, rdi
mov rcx, rsi
call fcn.2b3685db0
mov rcx, r15
mov r8, rsi
lea rdx, [0x2b3759440]
call fcn.2b3685db0
xor ecx, ecx
mov eax, 0xda
nop dword [rax]
movzx edx, byte [r12 + rcx]
movzx r8d, byte [rbp + rcx]
add edx, 0xff00
sub edx, r8d
add eax, edx
mov byte [rdi + rcx], al
add rcx, 1
shr eax, 8
cmp rcx, 0x1f
jne 0x2b3689b70
movzx edx, byte [rsp + 0x17f]
movzx ecx, byte [rsp + 0x19f]
sub edx, ecx
add eax, edx
mov edx, eax
shr eax, 7
and edx, 0x7f
mov byte [rsp + 0x1bf], dl
lea edx, [rax + rax*8]
lea eax, [rax + rdx*2]
nop
movzx edx, byte [rbx]
add rbx, 1
add eax, edx
mov byte [rbx - 1], al
shr eax, 8
cmp rsi, rbx
jne 0x2b3689bc0
mov r8, rdi
mov rdx, rdi
mov rcx, rsi
call fcn.2b3685db0
mov rdx, qword [rsp + 0x260]
mov rcx, qword [rsp + 0x40]
mov r8, rsi
call fcn.2b3685db0
mov rdx, r13
mov r9, r13
mov r8, r14
mov rcx, r14
call fcn.2b3686990
xor eax, eax
xor edx, edx
nop dword [rax]
movzx ecx, byte [r14 + rax]
movzx r8d, byte [r13 + rax]
shr dx, 8
add ecx, r8d
add edx, ecx
mov byte [rdi + rax], dl
add rax, 1
cmp rax, 0x20
jne 0x2b3689c10
and byte [rsp + 0x1bf], 0x7f
shr dx, 7
mov rbx, rdi
lea eax, [rdx + rdx*8]
lea eax, [rdx + rax*2]
mov rdx, rdi
nop dword [rax]
movzx ecx, byte [rdx]
add rdx, 1
add eax, ecx
mov byte [rdx - 1], al
shr ax, 8
cmp rdx, rsi
jne 0x2b3689c50
mov r8, qword [rsp + 0x260]
xor ecx, ecx
mov eax, 0xda
movzx edx, byte [r8 + rcx]
lea r10, [0x2b3759440]
movzx r9d, byte [r10 + rcx]
add edx, 0xff00
sub edx, r9d
add eax, edx
mov byte [rsi + rcx], al
add rcx, 1
shr eax, 8
cmp rcx, 0x1f
jne 0x2b3689c74
mov rcx, qword [rsp + 0x260]
mov r8, qword [rsp + 0x48]
mov r11, rsi
movzx edx, byte [rcx + 0x1f]
add eax, edx
mov edx, eax
shr eax, 7
and edx, 0x7f
mov byte [rsp + 0x1df], dl
lea edx, [rax + rax*8]
lea eax, [rax + rdx*2]
mov rdx, rsi
nop
movzx ecx, byte [rdx]
add rdx, 1
add eax, ecx
mov byte [rdx - 1], al
shr eax, 8
cmp rdx, r8
jne 0x2b3689cd0
mov rcx, r12
mov r8, rsi
mov rdx, rdi
mov qword [rsp + 0x50], r11
call fcn.2b3685db0
mov r11, qword [rsp + 0x50]
xor ecx, ecx
mov eax, 0xda
nop dword [rax + rax]
movzx edx, byte [r14 + rcx]
movzx r8d, byte [r13 + rcx]
add edx, 0xff00
sub edx, r8d
add eax, edx
mov byte [rsi + rcx], al
add rcx, 1
shr eax, 8
cmp rcx, 0x1f
jne 0x2b3689d08
movzx ecx, byte [rsp + 0xdf]
movzx edx, byte [rsp + 0xbf]
sub edx, ecx
mov rcx, qword [rsp + 0x48]
add eax, edx
mov edx, eax
shr eax, 7
and edx, 0x7f
mov byte [rsp + 0x1df], dl
lea edx, [rax + rax*8]
lea eax, [rax + rdx*2]
nop dword [rax]
movzx edx, byte [r11]
add r11, 1
add eax, edx
mov byte [r11 - 1], al
shr eax, 8
cmp r11, rcx
jne 0x2b3689d60
mov r9, qword [rsp + 0x260]
xor eax, eax
xor edx, edx
lea r10, [0x2b3759440]
movzx ecx, byte [r9 + rax]
shr dx, 8
movzx r8d, byte [r10 + rax]
add ecx, r8d
add edx, ecx
mov byte [rdi + rax], dl
add rax, 1
cmp rax, 0x20
jne 0x2b3689d82
and byte [rsp + 0x1bf], 0x7f
shr dx, 7
lea eax, [rdx + rdx*8]
lea eax, [rdx + rax*2]
mov rdx, rdi
nop
movzx ecx, byte [rdx]
add rdx, 1
add eax, ecx
mov byte [rdx - 1], al
shr ax, 8
cmp rsi, rdx
jne 0x2b3689dc0
mov rdx, rdi
mov r8, rsi
mov rcx, rbp
call fcn.2b3685db0
xor eax, eax
xor edx, edx
nop word [rax + rax]
movzx ecx, byte [r12 + rax]
movzx r8d, byte [rbp + rax]
shr dx, 8
add ecx, r8d
add edx, ecx
mov byte [rdi + rax], dl
add rax, 1
cmp rax, 0x20
jne 0x2b3689df0
and byte [rsp + 0x1bf], 0x7f
shr dx, 7
lea eax, [rdx + rdx*8]
lea eax, [rdx + rax*2]
mov rdx, rdi
nop word cs:[rax + rax]
movzx ecx, byte [rdx]
add rdx, 1
add eax, ecx
mov byte [rdx - 1], al
shr ax, 8
cmp rsi, rdx
jne 0x2b3689e30
mov r8, rdi
mov rdx, rdi
mov rcx, rsi
call fcn.2b3685db0
mov rcx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x40]
mov r8, rsi
call fcn.2b3685db0
xor ecx, ecx
mov eax, 0xda
nop dword [rax]
movzx edx, byte [r12 + rcx]
movzx r8d, byte [rbp + rcx]
add edx, 0xff00
sub edx, r8d
add eax, edx
mov byte [rdi + rcx], al
add rcx, 1
shr eax, 8
cmp rcx, 0x1f
jne 0x2b3689e70
movzx edx, byte [rsp + 0x17f]
movzx ecx, byte [rsp + 0x19f]
sub edx, ecx
add eax, edx
mov edx, eax
shr eax, 7
and edx, 0x7f
mov byte [rsp + 0x1bf], dl
lea edx, [rax + rax*8]
lea eax, [rax + rdx*2]
nop
movzx edx, byte [rbx]
add rbx, 1
add eax, edx
mov byte [rbx - 1], al
shr eax, 8
cmp rsi, rbx
jne 0x2b3689ec0
mov r8, rdi
mov rdx, rdi
mov rcx, rsi
call fcn.2b3685db0
mov rcx, qword [rsp + 0x38]
mov r8, rsi
mov rdx, r15
call fcn.2b3685db0
movzx eax, byte [rsp + 0x34]
sub dword [rsp + 0x20], 1
movdqa xmm7, xmmword [rsp + 0xa0]
movdqa xmm3, xmmword [rsp + 0x120]
movdqa xmm6, xmmword [rsp + 0xb0]
neg eax
movdqa xmm1, xmmword [rsp + 0xe0]
movdqa xmm5, xmmword [rsp + 0xc0]
movd xmm0, eax
pxor xmm3, xmm7
movdqa xmm4, xmmword [rsp + 0xd0]
punpcklbw xmm0, xmm0
pxor xmm1, xmm7
mov eax, dword [rsp + 0x20]
movdqa xmm2, xmmword [rsp + 0xf0]
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0
pxor xmm2, xmm6
pand xmm3, xmm0
pand xmm1, xmm0
pand xmm2, xmm0
pxor xmm1, xmmword [rsp + 0xe0]
pxor xmm3, xmm7
pxor xmm2, xmmword [rsp + 0xf0]
movaps xmmword [rsp + 0xa0], xmm3
movdqa xmm3, xmmword [rsp + 0x130]
movaps xmmword [rsp + 0xe0], xmm1
movdqa xmm1, xmmword [rsp + 0x100]
pxor xmm3, xmm6
movaps xmmword [rsp + 0xf0], xmm2
pand xmm3, xmm0
pxor xmm1, xmm5
pxor xmm3, xmm6
pand xmm1, xmm0
pxor xmm1, xmmword [rsp + 0x100]
movaps xmmword [rsp + 0xb0], xmm3
movdqa xmm3, xmmword [rsp + 0x140]
movaps xmmword [rsp + 0x100], xmm1
movdqa xmm1, xmmword [rsp + 0x110]
pxor xmm3, xmm5
pand xmm3, xmm0
pxor xmm1, xmm4
pxor xmm3, xmm5
pand xmm1, xmm0
pxor xmm1, xmmword [rsp + 0x110]
movaps xmmword [rsp + 0xc0], xmm3
movdqa xmm3, xmmword [rsp + 0x150]
movaps xmmword [rsp + 0x110], xmm1
pxor xmm3, xmm4
pand xmm0, xmm3
pxor xmm0, xmm4
movaps xmmword [rsp + 0xd0], xmm0
cmp eax, 0xffffffff
jne 0x2b36898e8
mov rbx, qword [rsp + 0x40]
mov rdx, r13
mov rcx, rbx
call fcn.2b3685e90
mov rcx, qword [rsp + 0x250]
mov r8, r14
mov rdx, rbx
call fcn.2b3685db0
mov rcx, qword [rsp + 0x250]
call fcn.2b3685ce0
lea rax, [rsp + 0x80]
mov rdx, rax
add rax, 1
mov byte [rdx], 0
cmp rax, r14
jne 0x2b368a074
movaps xmm6, xmmword [rsp + 0x1e0]
movaps xmm7, xmmword [rsp + 0x1f0]
add rsp, 0x208
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret