Function at 0x101564c0
Capabilities:
Encrypt data using curve25519

Disassembly:
push ebp
mov ebp, dword [esp + 0x18]
push esi
push edi
mov edi, dword [esp + 0x14]
cmp ebp, 2
je 0x10156599
mov esi, dword [esp + 0x10]
test esi, esi
je 0x1015654e
push esi
push 0
lea eax, [esp + 0x28]
push eax
push 0
call fcn.101542d0
add esp, 0x10
cmp dword [esp + 0x20], 0xffffffff
je 0x10156522
call fcn.1010b5b0
push str.ossl_ecx_key_op
push 0xaa
push str.cryptoececx_backend.c
call fcn.1010b6b0
push 0
push 0x66
push 0x10
call fcn.1010b760
add esp, 0x18
xor eax, eax
pop edi
pop esi
pop ebp
ret
mov eax, dword [esi]
mov esi, dword [esp + 0x1c]
push eax
call fcn.10104600
add esp, 4
test esi, esi
jne 0x10156539
mov esi, eax
jmp 0x10156552
cmp esi, eax
je 0x10156552
call fcn.1010b5b0
push str.ossl_ecx_key_op
push 0xb0
jmp 0x10156504
mov esi, dword [esp + 0x1c]
test edi, edi
je 0x10156585
test esi, esi
je 0x10156585
cmp esi, 0x40a
je 0x1015657a
cmp esi, 0x43f
je 0x1015657a
xor eax, eax
cmp esi, 0x40b
setne al
add eax, 0x38
jmp 0x1015657f
mov eax, 0x20
cmp dword [esp + 0x18], eax
je 0x1015659d
call fcn.1010b5b0
push str.ossl_ecx_key_op
push 0xb6
jmp 0x10156504
mov esi, dword [esp + 0x1c]
cmp esi, 0x40a
je 0x101565c1
cmp esi, 0x43f
je 0x101565c1
xor eax, eax
cmp esi, 0x40b
setne al
lea eax, [eax*2 + 1]
jmp 0x101565d1
xor ecx, ecx
mov eax, 2
cmp esi, 0x40a
cmove eax, ecx
push ebx
push dword [esp + 0x2c]
push 1
push eax
push dword [esp + 0x34]
call fcn.1014a370
mov ebx, eax
add esp, 0x10
test ebx, ebx
jne 0x1015661b
call fcn.1010b5b0
push str.ossl_ecx_key_op
push 0xbd
push str.cryptoececx_backend.c
call fcn.1010b6b0
push ebx
push 0xc0100
push 0x10
call fcn.1010b760
add esp, 0x18
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
ret
test ebp, ebp
jne 0x10156637
push dword [esp + 0x1c]
lea eax, [ebx + 0xc]
push edi
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov eax, ebx
pop ebx
pop edi
pop esi
pop ebp
ret
push ebx
call fcn.1014a2f0
mov edi, eax
add esp, 4
test edi, edi
jne 0x1015666a
call fcn.1010b5b0
push str.ossl_ecx_key_op
push 0xc7
push str.cryptoececx_backend.c
call fcn.1010b6b0
push edi
push 0xc0100
jmp 0x10156740
cmp ebp, 2
jne 0x101566dc
test esi, esi
je 0x1015670f
cmp esi, 0x40a
je 0x10156697
cmp esi, 0x43f
je 0x10156697
xor eax, eax
cmp esi, 0x40b
setne al
add eax, 0x38
jmp 0x1015669c
mov eax, 0x20
push 0
push eax
push edi
push dword [esp + 0x34]
call fcn.101344f0
add esp, 0x10
test eax, eax
jle 0x1015674a
cmp esi, 0x40a
jne 0x101566cb
mov al, byte [edi + 0x1f]
and byte [edi], 0xf8
and al, 0x3f
or al, 0x40
mov byte [edi + 0x1f], al
jmp 0x1015670f
cmp esi, 0x40b
jne 0x1015670f
and byte [edi], 0xfc
or byte [edi + 0x37], 0x80
jmp 0x1015670f
cmp esi, 0x40a
je 0x101566fc
cmp esi, 0x43f
je 0x101566fc
xor eax, eax
cmp esi, 0x40b
setne al
add eax, 0x38
jmp 0x10156701
mov eax, 0x20
push eax
push dword [esp + 0x1c]
push edi
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
push ebx
call fcn.10156760
add esp, 4
test eax, eax
jne 0x10156630
call fcn.1010b5b0
push str.ossl_ecx_key_op
push 0xdb
push str.cryptoececx_backend.c
call fcn.1010b6b0
push 0
push 0xa6
push 0x10
call fcn.1010b760
add esp, 0x18
push ebx
call fcn.1014a310
add esp, 4
xor eax, eax
pop ebx
pop edi
pop esi
pop ebp
ret