Function at 0x4a8600
Capabilities:
Encrypt data using curve25519

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
mov esi, dword [ebp + 0x1c]
push edi
mov edi, dword [ebp + 0xc]
cmp esi, 2
je 0x4a8683
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x4a864f
push eax
push 0
lea eax, [ebp - 4]
push eax
push 0
call fcn.00483e30
add esp, 0x10
cmp dword [ebp - 4], 0xffffffff
je 0x4a864f
push 0x3a
push str.c:_cygwin_home_shachar_zon_new_pkg_lib_openssl_crypto_ec_ecx_meth.c
push 0x66
push 0x10a
push 0x10
call fcn.004576a0
add esp, 0x14
xor eax, eax
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp dword [ebp + 0x14], 0
je 0x4a867f
cmp edi, 0x40a
je 0x4a8675
cmp edi, 0x43f
je 0x4a8675
xor eax, eax
cmp edi, 0x40b
setne al
add eax, 0x38
jmp 0x4a867a
mov eax, 0x20
cmp dword [ebp + 0x18], eax
je 0x4a8683
push 0x40
jmp 0x4a8631
push ebx
push 0x45
push str.c:_cygwin_home_shachar_zon_new_pkg_lib_openssl_crypto_ec_ecx_meth.c
push 0x40
call fcn.00457e10
mov ebx, eax
add esp, 0xc
test ebx, ebx
jne 0x4a86bc
push 0x47
push str.c:_cygwin_home_shachar_zon_new_pkg_lib_openssl_crypto_ec_ecx_meth.c
push 0x41
push 0x10a
push 0x10
call fcn.004576a0
add esp, 0x14
xor eax, eax
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
test esi, esi
jne 0x4a86d5
push dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
push eax
push ebx
call fcn.0053f470
add esp, 0xc
jmp case.0x4a8807.1036
cmp edi, 0x40a
je 0x4a86f5
cmp edi, 0x43f
je 0x4a86f5
xor eax, eax
cmp edi, 0x40b
setne al
add eax, 0x38
jmp 0x4a86fa
mov eax, 0x20
push 0x4f
push str.c:_cygwin_home_shachar_zon_new_pkg_lib_openssl_crypto_ec_ecx_meth.c
push eax
call fcn.00457ec0
mov esi, eax
add esp, 0xc
mov dword [ebx + 0x3c], esi
test esi, esi
jne 0x4a872d
push 0x51
push str.c:_cygwin_home_shachar_zon_new_pkg_lib_openssl_crypto_ec_ecx_meth.c
push 0x41
push 0x10a
push 0x10
call fcn.004576a0
add esp, 0x14
jmp 0x4a8781
cmp dword [ebp + 0x1c], 2
jne 0x4a87c2
cmp edi, 0x40a
je 0x4a8757
cmp edi, 0x43f
je 0x4a8757
xor eax, eax
cmp edi, 0x40b
setne al
add eax, 0x38
jmp 0x4a875c
mov eax, 0x20
push eax
push esi
call fcn.0044caf0
add esp, 8
test eax, eax
jg 0x4a879a
push 0x56
push str.c:_cygwin_home_shachar_zon_new_pkg_lib_openssl_crypto_ec_ecx_meth.c
push esi
call fcn.00457eb0
add esp, 0xc
mov dword [ebx + 0x3c], 0
push 0x78
push str.c:_cygwin_home_shachar_zon_new_pkg_lib_openssl_crypto_ec_ecx_meth.c
push ebx
call fcn.00457c00
add esp, 0xc
xor eax, eax
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
cmp edi, 0x40a
jne 0x4a87b1
mov al, byte [esi + 0x1f]
and byte [esi], 0xf8
and al, 0x3f
or al, 0x40
mov byte [esi + 0x1f], al
jmp 0x4a87f5
cmp edi, 0x40b
jne 0x4a87f5
and byte [esi], 0xfc
or byte [esi + 0x37], 0x80
jmp 0x4a87f5
cmp edi, 0x40a
je 0x4a87e2
cmp edi, 0x43f
je 0x4a87e2
xor eax, eax
cmp edi, 0x40b
setne al
add eax, 0x38
jmp 0x4a87e7
mov eax, 0x20
push eax
mov eax, dword [ebp + 0x14]
push eax
push esi
call fcn.0053f470
add esp, 0xc
lea eax, [edi - 0x40a]
cmp eax, 0x36
ja case.0x4a8807.1036
movzx eax, byte [eax + 0x4a8860]
jmp dword [eax*4 + 0x4a884c]
push esi
push ebx
call fcn.00507bf0
jmp 0x4a8830
push esi
push ebx
call fcn.00507880
jmp 0x4a8830
push esi
push ebx
call fcn.00505260
jmp 0x4a8830
push esi
push ebx
call fcn.00507220
add esp, 8
push ebx
push edi
push dword [ebp + 8]
call fcn.004539b0
add esp, 0xc
mov eax, 1
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret