Function at 0x3fd6f0
Capabilities:
Encrypt data using curve25519

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x13c
mov ecx, dword [esp + 0x158]
mov eax, dword [esp + 0x154]
mov edx, 0xffffffe0
nop dword [eax]
movzx ebx, byte [ecx + edx + 0x20]
mov byte [esp + edx + 0x4c], bl
inc edx
jne 0x3fd710
and byte [esp + 0x2c], 0xf8
mov cl, byte [esp + 0x4b]
and cl, 0x3f
or cl, 0x40
mov byte [esp + 0x4b], cl
lea esi, [esp + 0x114]
push eax
push esi
call fcn.003f3b10
add esp, 8
lea edi, [esp + 0xc4]
push edi
call fcn.003f3670
add esp, 4
lea ebx, [esp + 0x4c]
push edi
push esi
push ebx
call fcn.003f36c0
add esp, 0xc
push esi
push edi
push edi
call fcn.003f6b80
add esp, 0xc
push edi
push edi
call fcn.003f3df0
add esp, 8
push edi
push ebx
push esi
call fcn.003f4960
add esp, 0xc
lea eax, [esp + 0x9c]
push eax
call fcn.003f3670
add esp, 4
lea eax, [esp + 0xec]
push eax
call fcn.003f3620
add esp, 4
lea eax, [esp + 4]
push esi
push eax
call fcn.003f3a90
add esp, 8
lea eax, [esp + 0x74]
push eax
call fcn.003f3670
add esp, 4
mov eax, 0xfe
xor ebp, ebp
nop word cs:[eax + eax]
nop dword [eax + eax]
mov dword [esp], eax
mov esi, ebp
mov eax, dword [esp]
shr eax, 3
movzx ebp, byte [esp + eax + 0x2c]
mov eax, dword [esp]
mov ecx, eax
and cl, 7
shr ebp, cl
and ebp, 1
xor esi, ebp
push esi
lea eax, [esp + 8]
push eax
lea edi, [esp + 0xa4]
push edi
call fcn.003f38c0
add esp, 0xc
push esi
lea eax, [esp + 0x78]
mov esi, eax
push eax
lea ebx, [esp + 0xf4]
push ebx
call fcn.003f38c0
add esp, 0xc
push esi
lea eax, [esp + 8]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.003f6b80
add esp, 0xc
push ebx
lea edi, [esp + 0xa0]
push edi
lea esi, [esp + 0xcc]
push esi
call fcn.003f6b80
add esp, 0xc
push ebx
push edi
push edi
call fcn.003f36c0
add esp, 0xc
lea esi, [esp + 0x74]
push esi
lea eax, [esp + 8]
push eax
push ebx
call fcn.003f36c0
add esp, 0xc
push edi
lea edi, [esp + 0x50]
push edi
push esi
call fcn.003f4960
add esp, 0xc
lea esi, [esp + 0xc4]
push esi
push ebx
push ebx
call fcn.003f4960
add esp, 0xc
push esi
push edi
call fcn.003f3ff0
add esp, 8
lea eax, [esp + 0x9c]
push eax
push esi
call fcn.003f3ff0
add esp, 8
push ebx
lea edi, [esp + 0x78]
push edi
lea eax, [esp + 0xc]
push eax
call fcn.003f36c0
add esp, 0xc
push ebx
push edi
push ebx
call fcn.003f6b80
add esp, 0xc
lea edi, [esp + 0x4c]
push edi
push esi
lea eax, [esp + 0xa4]
push eax
call fcn.003f4960
add esp, 0xc
push edi
push esi
push esi
call fcn.003f6b80
add esp, 0xc
push ebx
push ebx
mov edi, ebx
call fcn.003f3ff0
add esp, 8
push esi
lea ebx, [esp + 0x78]
push ebx
call fcn.003f5c50
add esp, 8
lea eax, [esp + 4]
push eax
push eax
call fcn.003f3ff0
add esp, 8
push ebx
lea eax, [esp + 0x50]
push eax
push eax
call fcn.003f36c0
add esp, 0xc
push edi
lea eax, [esp + 0x118]
push eax
push ebx
call fcn.003f4960
add esp, 0xc
lea eax, [esp + 0x4c]
push eax
push esi
push edi
call fcn.003f4960
mov eax, dword [esp + 0xc]
add esp, 0xc
dec eax
cmp eax, 0xffffffff
jne 0x3fd7d0
push ebp
lea eax, [esp + 8]
push eax
lea eax, [esp + 0xa4]
mov esi, eax
push eax
call fcn.003f38c0
add esp, 0xc
push ebp
lea eax, [esp + 0x78]
push eax
lea eax, [esp + 0xf4]
mov edi, eax
push eax
call fcn.003f38c0
add esp, 0xc
push edi
push edi
call fcn.003f3df0
add esp, 8
push edi
push esi
push esi
call fcn.003f4960
add esp, 0xc
push esi
push dword [esp + 0x154]
call fcn.003f5980
add esp, 0x144
pop esi
pop edi
pop ebx
pop ebp
ret