Function at 0x487310
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov eax, dword [esp + 0x78]
mov ebx, dword [esp + 0x74]
movzx eax, ax
push 0
mov dword [esp + 0xc], eax
push eax
push 0x10000
push 0
call fcn.0049fc80
mov dword [esp + 0xc], eax
mov dword [esp + 0x18], edx
lea esi, [ebx + 1]
lea eax, [ebx + ebx]
mov dword [esp + 0x2c], eax
push 0
push 2
push esi
call fcn.004397d0
add esp, 0xc
mov edi, eax
push 0
push 2
push esi
call fcn.004397d0
add esp, 0xc
mov ebp, eax
push 0
push 2
push esi
call fcn.004397d0
add esp, 0xc
mov dword [esp + 4], eax
push 0
push 2
push esi
call fcn.004397d0
add esp, 0xc
mov dword [esp + 0x1c], eax
push dword [esp + 0x2c]
push dword [esp + 0x74]
push edi
call fcn.004a2420
add esp, 0xc
mov dword [esp], edi
mov word [edi + ebx*2], 0
mov edi, dword [esp + 4]
mov word [edi], 1
mov dword [esp + 0x10], esi
cmp esi, 2
mov esi, dword [esp + 0x2c]
jb 0x4873c6
lea eax, [edi + 2]
push esi
push 0
push eax
call fcn.004a29a0
add esp, 0xc
mov eax, dword [esp + 0x78]
add eax, 0xffffffff
mov word [ebp + 2], ax
mov word [ebp], ax
cmp ebx, 2
jbe 0x487404
mov eax, ebp
add eax, 4
lea ecx, [esi - 4]
push ecx
push 0
push eax
call fcn.004a29a0
add esp, 0xc
mov word [ebp + ebx*2], 1
cmp dword [esp + 0x10], 0
jne 0x48740b
mov al, 1
mov dword [esp + 0x20], eax
jmp 0x487425
mov word [ebp + ebx*2], 1
lea eax, [esi + 2]
push eax
push 0
push dword [esp + 0x24]
call fcn.004a29a0
add esp, 0xc
mov dword [esp + 0x20], 0
lea eax, [ebx + ebx]
add eax, 1
mov dword [esp + 0x4c], eax
lea eax, [ebx - 1]
mov dword [esp + 0x30], eax
mov eax, dword [esp]
add eax, 2
mov dword [esp + 0x3c], eax
mov eax, edi
add eax, 2
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x10]
and eax, 0xfffffffe
mov dword [esp + 0x54], eax
and ebx, 0xfffffffe
neg ebx
mov dword [esp + 0x28], ebx
lea eax, [esi - 2]
mov dword [esp + 0x34], eax
xor eax, eax
mov dword [esp + 0x24], ebp
jmp 0x4874c5
movzx eax, si
mov word [edi + ebx*2 - 2], ax
movzx edx, word [edi]
mov ebx, dword [esp + 0x78]
mov ecx, ebx
sub ecx, eax
add ecx, edx
mov esi, dword [esp + 0x18]
imul esi, ecx
mov eax, dword [esp + 0xc]
mul ecx
add edx, esi
shr edx, 0x10
mov esi, dword [esp + 8]
imul edx, esi
sub ecx, edx
mov eax, ecx
not eax
add eax, ebx
shr eax, 0xf
and eax, 1
imul eax, esi
sub ecx, eax
mov word [edi], cx
mov eax, dword [esp + 0x50]
add eax, 1
cmp eax, dword [esp + 0x4c]
je 0x487836
mov dword [esp + 0x50], eax
cmp byte [esp + 0x20], 0
jne 0x4877d0
mov ebx, dword [esp]
movzx eax, word [ebx]
mov dword [esp + 0x14], eax
add eax, 0xffff
shr eax, 0x10
mov dword [esp + 0x44], eax
movzx eax, word [ebp]
mov dword [esp + 0x48], eax
add eax, 0xffff
shr eax, 0x10
xor eax, 1
mov dword [esp + 0x40], eax
mov ecx, 1
xor eax, eax
mov esi, dword [esp + 0x74]
mov edx, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, word [ebx + esi*2]
add edi, 0xffff
shr edi, 0x10
xor edi, 1
and ecx, edi
movzx edi, word [ebp + esi*2]
add edi, 0xffff
shr edi, 0x10
xor edi, 1
and edx, edi
mov edi, edx
not edi
and edi, ecx
or eax, edi
add esi, 0xffffffff
jb 0x487520
cmp byte [esp + 0x20], 0
jne 0x4877d0
mov ecx, dword [esp + 0x44]
or ecx, 0xfffe
and eax, ecx
or eax, dword [esp + 0x40]
neg eax
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x48]
xor edx, esi
mov ecx, eax
and ecx, edx
mov edx, ecx
xor edx, esi
mov esi, dword [esp]
mov word [esi], dx
xor word [ebp], cx
mov ebx, dword [esp + 0x74]
test ebx, ebx
je 0x487629
cmp dword [esp + 0x30], 0
je 0x4875fb
mov ecx, 1
mov ebx, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [ebx + ecx*2]
movzx esi, word [ebp + ecx*2]
xor si, dx
and esi, eax
mov edi, esi
xor edi, edx
mov word [ebx + ecx*2], di
xor word [ebp + ecx*2], si
movzx edx, word [ebx + ecx*2 + 2]
movzx esi, word [ebp + ecx*2 + 2]
xor si, dx
and esi, eax
mov edi, esi
xor edi, edx
mov word [ebx + ecx*2 + 2], di
xor word [ebp + ecx*2 + 2], si
mov edx, dword [esp + 0x28]
add edx, ecx
add edx, 2
add ecx, 2
cmp edx, 1
jne 0x4875b0
jmp 0x487600
mov ecx, 1
mov edx, dword [esp + 0x74]
test dl, 1
je 0x487629
mov ebx, dword [esp]
movzx edx, word [ebx + ecx*2]
movzx esi, word [ebp + ecx*2]
xor si, dx
mov edi, eax
and edi, esi
mov esi, edi
xor esi, edx
mov word [ebx + ecx*2], si
xor word [ebp + ecx*2], di
cmp byte [esp + 0x20], 0
jne 0x4877d0
xor ecx, ecx
cmp dword [esp + 0x74], 0
je 0x48781e
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [edi + ecx*2]
movzx esi, word [ebx + ecx*2]
xor si, dx
and esi, eax
mov edi, esi
xor edi, edx
mov edx, dword [esp + 4]
mov word [edx + ecx*2], di
xor word [ebx + ecx*2], si
mov edx, dword [esp + 4]
movzx edx, word [edx + ecx*2 + 2]
movzx esi, word [ebx + ecx*2 + 2]
xor si, dx
and esi, eax
mov edi, esi
xor edi, edx
mov edx, dword [esp + 4]
mov word [edx + ecx*2 + 2], di
mov edi, dword [esp + 4]
xor word [ebx + ecx*2 + 2], si
add ecx, 2
cmp dword [esp + 0x54], ecx
jne 0x487650
test byte [esp + 0x10], 1
je 0x4876bf
movzx edx, word [edi + ecx*2]
movzx esi, word [ebx + ecx*2]
xor si, dx
and eax, esi
mov esi, eax
xor esi, edx
mov word [edi + ecx*2], si
xor word [ebx + ecx*2], ax
cmp byte [esp + 0x20], 0
jne 0x4877d0
movzx eax, word [ebp]
movzx ecx, ax
mov dword [esp + 0x14], ecx
mov edi, dword [esp]
movzx edx, word [edi]
mov esi, dword [esp + 0x78]
sub esi, edx
movzx ecx, si
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, dx
imul edx, dword [esp + 0x14]
movzx esi, ax
mov ebp, ecx
imul esi, ecx
add esi, edx
mov ecx, dword [esp + 0x18]
imul ecx, esi
mov eax, dword [esp + 0xc]
mul esi
add edx, ecx
shr edx, 0x10
mov ecx, dword [esp + 8]
imul edx, ecx
sub esi, edx
mov eax, esi
not eax
add eax, dword [esp + 0x78]
shr eax, 0xf
and eax, 1
imul eax, ecx
sub esi, eax
mov word [edi + ebx*2], si
cmp dword [esp + 0x74], ebx
je 0x48774f
movzx edx, word [edi + ebx*2 + 2]
mov eax, dword [esp + 0x24]
movzx eax, word [eax + ebx*2 + 2]
add ebx, 1
mov ecx, ebp
jmp 0x4876f0
cmp byte [esp + 0x20], 0
mov ecx, dword [esp + 0x14]
mov edi, ebp
mov ebp, dword [esp + 0x24]
jne 0x4877d0
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebp, dword [esp + 4]
movzx eax, word [ebp + ebx*2]
imul eax, ecx
mov ecx, dword [esp + 0x1c]
movzx esi, word [ecx + ebx*2]
imul esi, edi
add esi, eax
mov ecx, dword [esp + 0x18]
imul ecx, esi
mov eax, dword [esp + 0xc]
mul esi
add edx, ecx
shr edx, 0x10
mov ecx, dword [esp + 8]
imul edx, ecx
sub esi, edx
mov eax, esi
not eax
add eax, dword [esp + 0x78]
shr eax, 0xf
and eax, 1
imul eax, ecx
mov ecx, dword [esp + 0x14]
sub esi, eax
mov word [ebp + ebx*2], si
mov ebp, dword [esp + 0x24]
add ebx, 1
cmp dword [esp + 0x10], ebx
jne 0x487770
nop
nop
nop
cmp dword [esp + 0x10], 2
jb 0x4877eb
push dword [esp + 0x2c]
push dword [esp + 0x40]
push dword [esp + 8]
call fcn.004a2420
add esp, 0xc
mov ebx, dword [esp + 0x74]
mov eax, dword [esp]
mov word [eax + ebx*2], 0
mov edi, dword [esp + 4]
movzx esi, word [edi]
cmp ebx, 2
jb 0x487470
push dword [esp + 0x34]
push dword [esp + 0x3c]
push edi
call fcn.004a2420
add esp, 0xc
jmp 0x487470
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 4]
test byte [esp + 0x10], 1
jne 0x4876a6
jmp 0x4876bf
mov eax, dword [esp]
movzx eax, word [eax]
add eax, 0xffff
shr eax, 0x10
not eax
movzx ecx, word [ebp]
lea edi, [ecx + 0xffff]
shr edi, 0x10
and edi, eax
cmp dword [esp + 0x10], 2
jb 0x4878d6
cmp dword [esp + 0x30], 0
je 0x4878dc
mov eax, 1
mov edx, edi
mov ebp, dword [esp]
mov ebx, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, word [ebp + eax*2]
add esi, 0xffff
movzx edi, word [ebx + eax*2]
add edi, 0xffff
or edi, esi
movzx esi, word [ebp + eax*2 + 2]
add esi, 0xffff
or esi, edi
mov edi, esi
movzx esi, word [ebx + eax*2 + 2]
add esi, 0xffff
shr esi, 0x10
xor esi, 1
and esi, edx
shr edi, 0x10
not edi
and edi, esi
mov edx, dword [esp + 0x28]
lea esi, [edx + eax]
add esi, 2
add eax, 2
mov edx, edi
cmp esi, 1
jne 0x487880
jmp 0x4878e1
mov esi, dword [esp + 8]
jmp 0x487917
mov eax, 1
mov edx, dword [esp + 0x74]
test dl, 1
mov esi, dword [esp + 8]
je 0x487917
mov edx, dword [esp]
movzx edx, word [edx + eax*2]
add edx, 0xffff
shr edx, 0x10
not edx
and edi, edx
mov edx, dword [esp + 0x24]
movzx eax, word [edx + eax*2]
add eax, 0xffff
shr eax, 0x10
xor eax, 1
and edi, eax
mov dword [esp + 0x14], edi
lea edx, [esi - 2]
mov esi, 1
mov edi, 1
mov eax, dword [esp + 0xc]
mov ebp, dword [esp + 0x18]
jmp 0x48797b
imul ecx, ecx
mov eax, dword [esp + 0xc]
mul ecx
imul ebp, ecx
add edx, ebp
shr edx, 0x10
mov ebx, dword [esp + 8]
imul edx, ebx
sub ecx, edx
mov ebp, dword [esp + 0x18]
mov eax, ecx
not eax
add eax, dword [esp + 0x78]
shr eax, 0xf
and eax, 1
imul eax, ebx
sub ecx, eax
mov eax, dword [esp + 0xc]
add esi, esi
mov edx, dword [esp + 0x28]
movzx ecx, cx
test edx, esi
mov dword [esp + 0x28], edx
je 0x487940
imul edi, ecx
imul ebp, edi
mul edi
add edx, ebp
shr edx, 0x10
mov ebx, dword [esp + 8]
imul edx, ebx
sub edi, edx
mov edx, esi
mov eax, edi
not eax
mov ebp, dword [esp + 0x78]
add eax, ebp
shr eax, 0xf
and eax, 1
imul eax, ebx
sub edi, eax
movzx edi, di
mov eax, esi
mov edx, dword [esp + 0x28]
not eax
and edx, eax
je 0x4879cf
mov dword [esp + 0x28], edx
mov ebp, dword [esp + 0x18]
jmp 0x487940
cmp dword [esp + 0x74], 0
mov edx, dword [esp + 8]
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0xc]
je 0x487a3c
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, word [ebx + ecx*2]
imul esi, edi
mov ebx, dword [esp + 0x18]
imul ebx, esi
mov eax, ebp
mov ebp, edx
mul esi
add edx, ebx
mov ebx, dword [esp + 0x1c]
shr edx, 0x10
imul edx, ebp
sub esi, edx
mov edx, ebp
mov ebp, dword [esp + 0xc]
mov eax, esi
not eax
add eax, dword [esp + 0x78]
shr eax, 0xf
and eax, 1
imul eax, edx
sub esi, eax
mov eax, dword [esp + 0x6c]
mov word [eax + ecx*2], si
add ecx, 1
cmp dword [esp + 0x74], ecx
jne 0x4879f0
mov esi, dword [esp + 0x10]
add esi, esi
push esi
mov edi, dword [esp + 4]
push edi
call fcn.00467170
add esp, 8
push edi
call fcn.00439860
add esp, 4
push esi
mov edi, dword [esp + 0x28]
push edi
call fcn.00467170
add esp, 8
push edi
call fcn.00439860
add esp, 4
push esi
mov edi, dword [esp + 8]
push edi
call fcn.00467170
add esp, 8
push edi
call fcn.00439860
add esp, 4
push esi
push ebx
call fcn.00467170
add esp, 8
push ebx
call fcn.00439860
add esp, 4
mov eax, dword [esp + 0x14]
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret