Function at 0x487b30
Capabilities:
Encode data using xor
Encrypt data using curve25519
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
mov esi, 1
push ebx
sub esp, 0x25c
mov dword [esp + 0x54], eax
mov eax, edx
mov edx, ecx
mov ecx, dword [eax]
lea edi, [esp + 0xa0]
lea ebp, [esp + 0xc8]
mov dword [esp + 0x58], ecx
mov ecx, dword [eax + 4]
and byte [esp + 0x58], 0xf8
mov dword [esp + 0x5c], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x60], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x64], ecx
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x68], ecx
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x6c], ecx
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], eax
shr eax, 0x18
and eax, 0x7f
mov ebx, eax
or ebx, 0x40
lea eax, [esp + 0x78]
mov byte [esp + 0x77], bl
call dbg.fe_frombytes_impl
mov edx, dword [esp + 0x78]
xor eax, eax
mov ecx, 0xa
rep stosd dword es:[edi], eax
mov edi, ebp
mov dword [esp + 0xa0], 1
mov dword [esp + 0xf0], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x50], 0xfe
mov dword [esp + 0xf4], edx
mov edx, dword [esp + 0x80]
mov cl, 0xa
rep stosd dword es:[edi], eax
lea edi, [esp + 0x118]
mov dword [esp + 0xf8], edx
mov edx, dword [esp + 0x84]
mov cl, 0xa
mov dword [esp + 0xfc], edx
mov edx, dword [esp + 0x88]
rep stosd dword es:[edi], eax
mov edi, 1
mov dword [esp + 0x118], 1
mov dword [esp + 0x100], edx
mov edx, dword [esp + 0x8c]
mov dword [esp + 0x104], edx
mov edx, dword [esp + 0x90]
mov dword [esp + 0x108], edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x10c], edx
mov edx, dword [esp + 0x98]
mov dword [esp + 0x110], edx
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x114], edx
mov edx, ebx
xor ebx, ebx
movzx ecx, dl
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x50]
and ecx, 7
sar dword [esp + 4], cl
and dword [esp + 4], 1
xor eax, dword [esp + 4]
mov ecx, eax
xor eax, eax
neg ecx
jmp 0x487c9a
mov edi, dword [esp + eax*4 + 0xa0]
mov edx, dword [esp + eax*4 + 0xf0]
xor edx, edi
and edx, ecx
xor edi, edx
xor dword [esp + eax*4 + 0xf0], edx
mov dword [esp + eax*4 + 0xa0], edi
add eax, 1
cmp eax, 0xa
jne 0x487c93
xor eax, eax
jmp 0x487ccc
mov ebx, dword [ebp + eax*4]
mov esi, dword [esp + eax*4 + 0x118]
mov edx, esi
xor edx, ebx
and edx, ecx
xor ebx, edx
xor edx, esi
mov dword [ebp + eax*4], ebx
mov dword [esp + eax*4 + 0x118], edx
add eax, 1
cmp eax, 0xa
jne 0x487cc1
lea ecx, [esp + 0x118]
lea edx, [esp + 0xf0]
lea eax, [esp + 0x208]
call dbg.fe_sub_impl
mov ecx, ebp
lea edx, [esp + 0xa0]
lea eax, [esp + 0x230]
call dbg.fe_sub_impl
mov ecx, ebp
lea edx, [esp + 0xa0]
lea eax, [esp + 0x190]
call dbg.fe_add_impl
lea ecx, [esp + 0x118]
lea edx, [esp + 0xf0]
lea eax, [esp + 0x1b8]
call dbg.fe_add_impl
lea ecx, [esp + 0x190]
lea edx, [esp + 0x208]
lea eax, [esp + 0x118]
call dbg.fe_mul_impl
lea ecx, [esp + 0x230]
mov eax, ebp
lea edx, [esp + 0x1b8]
call dbg.fe_mul_impl
lea edx, [esp + 0x230]
lea eax, [esp + 0x140]
call dbg.fe_sqr_impl
lea edx, [esp + 0x190]
lea eax, [esp + 0x168]
call dbg.fe_sqr_impl
mov ecx, ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x1e0]
call dbg.fe_add_impl
mov ecx, ebp
lea edx, [esp + 0x118]
lea eax, [esp + 0x1b8]
call dbg.fe_sub_impl
lea ecx, [esp + 0x140]
lea edx, [esp + 0x168]
lea eax, [esp + 0xa0]
call dbg.fe_mul_impl
lea ecx, [esp + 0x140]
lea edx, [esp + 0x168]
lea eax, [esp + 0x230]
call dbg.fe_sub_impl
lea edx, [esp + 0x1b8]
mov eax, ebp
call dbg.fe_sqr_impl
mov eax, 0x1db42
mul dword [esp + 0x230]
mov esi, eax
mov edi, edx
shrd esi, edx, 0x1a
mov dword [esp + 0x48], eax
mov eax, 0x1db42
mul dword [esp + 0x234]
mov dword [esp + 8], esi
shr edi, 0x1a
add dword [esp + 8], eax
mov eax, 0x1db42
mov ecx, dword [esp + 8]
mov dword [esp + 0xc], edi
adc dword [esp + 0xc], edx
mov ebx, dword [esp + 0xc]
mul dword [esp + 0x238]
shrd ecx, ebx, 0x19
mov dword [esp + 0x10], ecx
shr ebx, 0x19
add dword [esp + 0x10], eax
mov eax, 0x1db42
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x10]
adc dword [esp + 0x14], edx
mov esi, dword [esp + 0x14]
mul dword [esp + 0x23c]
shrd ebx, esi, 0x1a
mov dword [esp + 0x18], ebx
shr esi, 0x1a
add dword [esp + 0x18], eax
mov eax, 0x1db42
mov dword [esp + 0x1c], esi
adc dword [esp + 0x1c], edx
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
shrd edx, ecx, 0x19
shr ecx, 0x19
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], ecx
mul dword [esp + 0x240]
add dword [esp + 0x20], eax
mov eax, 0x1db42
adc dword [esp + 0x24], edx
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x20]
mul dword [esp + 0x244]
shrd esi, edi, 0x1a
mov dword [esp + 0x28], esi
shr edi, 0x1a
add dword [esp + 0x28], eax
mov eax, 0x1db42
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x2c], edi
mov edi, 0x13
adc dword [esp + 0x2c], edx
mov ebx, dword [esp + 0x2c]
mul dword [esp + 0x248]
shrd ecx, ebx, 0x19
mov dword [esp + 0x30], ecx
shr ebx, 0x19
add dword [esp + 0x30], eax
mov eax, 0x1db42
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x30]
adc dword [esp + 0x34], edx
mov esi, dword [esp + 0x34]
mul dword [esp + 0x24c]
shrd ebx, esi, 0x1a
mov dword [esp + 0x38], ebx
shr esi, 0x1a
add dword [esp + 0x38], eax
mov eax, 0x1db42
mov dword [esp + 0x3c], esi
adc dword [esp + 0x3c], edx
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x48]
shrd edx, ecx, 0x19
mov dword [esp + 0x40], edx
shr ecx, 0x19
mul dword [esp + 0x250]
add dword [esp + 0x40], eax
mov eax, 0x1db42
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x40]
adc dword [esp + 0x44], edx
mov ebx, dword [esp + 0x44]
mul dword [esp + 0x254]
shrd ecx, ebx, 0x1a
shr ebx, 0x1a
add ecx, eax
adc ebx, edx
mov eax, ecx
mov edx, ebx
and esi, 0x3ffffff
shrd eax, ebx, 0x19
shr edx, 0x19
imul ebx, edx, 0x13
mul edi
xor edi, edi
add edx, ebx
add esi, eax
adc edi, edx
mov eax, esi
shrd eax, edi, 0x1a
mov edx, edi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 8]
shr edx, 0x1a
mov dword [esp + 0x4c], edx
and esi, 0x3ffffff
and ecx, 0x1ffffff
mov dword [esp + 0x118], esi
and eax, 0x1ffffff
mov edx, eax
mov eax, dword [esp + 0x48]
add eax, edx
mov edi, eax
and edi, 0x1ffffff
mov dword [esp + 0x11c], edi
mov edi, dword [esp + 0x10]
shr eax, 0x19
lea edx, [esp + 0x1e0]
and edi, 0x3ffffff
add eax, edi
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x18]
and eax, 0x1ffffff
mov dword [esp + 0x124], eax
mov eax, dword [esp + 0x20]
and eax, 0x3ffffff
mov dword [esp + 0x128], eax
mov eax, dword [esp + 0x28]
and eax, 0x1ffffff
mov dword [esp + 0x12c], eax
mov eax, dword [esp + 0x30]
and eax, 0x3ffffff
mov dword [esp + 0x130], eax
mov eax, dword [esp + 0x38]
and eax, 0x1ffffff
mov dword [esp + 0x134], eax
mov eax, dword [esp + 0x40]
and eax, 0x3ffffff
mov dword [esp + 0x138], eax
lea eax, [esp + 0xf0]
mov dword [esp + 0x13c], ecx
call dbg.fe_sqr_impl
lea ecx, [esp + 0x118]
lea edx, [esp + 0x140]
lea eax, [esp + 0x208]
call dbg.fe_add_impl
mov ecx, ebp
lea edx, [esp + 0x78]
lea eax, [esp + 0x118]
call dbg.fe_mul_impl
mov eax, ebp
lea ecx, [esp + 0x208]
lea edx, [esp + 0x230]
call dbg.fe_mul_impl
sub dword [esp + 0x50], 1
mov eax, dword [esp + 0x50]
cmp eax, 0xffffffff
je 0x4880fd
sar eax, 3
mov ebx, dword [esp + 0xc8]
movzx edx, byte [esp + eax + 0x58]
mov esi, dword [esp + 0x118]
mov edi, dword [esp + 0xa0]
mov eax, dword [esp + 4]
jmp 0x487c70
mov esi, dword [esp + 4]
xor eax, eax
neg esi
mov ecx, dword [esp + eax*4 + 0xf0]
mov ebx, dword [esp + eax*4 + 0xa0]
mov edx, ecx
xor edx, ebx
and edx, esi
xor ebx, edx
xor edx, ecx
mov dword [esp + eax*4 + 0xa0], ebx
mov dword [esp + eax*4 + 0xf0], edx
add eax, 1
cmp eax, 0xa
jne 0x488105
xor al, al
mov ecx, dword [ebp + eax*4]
mov edx, dword [esp + eax*4 + 0x118]
xor edx, ecx
and edx, esi
xor ecx, edx
xor dword [esp + eax*4 + 0x118], edx
mov dword [ebp + eax*4], ecx
add eax, 1
cmp eax, 0xa
jne 0x488135
mov edx, ebp
mov eax, ebp
call dbg.fe_invert
lea edx, [esp + 0xa0]
mov ecx, ebp
mov eax, edx
call dbg.fe_mul_impl
mov eax, dword [esp + 0x54]
lea edx, [esp + 0xa0]
call dbg.fe_tobytes
add esp, 0x25c
pop ebx
pop esi
pop edi
pop ebp
ret