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

Disassembly:
sub esp, 0x578
push ebx
push ebp
push esi
mov esi, dword [esp + 0x58c]
push edi
mov edi, dword [esp + 0x58c]
xor ebx, ebx
mov ecx, edi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], ebx
mov dword [esp + 0x88], ebx
mov edx, esi
mov eax, dword [ecx]
add ecx, 4
mov ebp, dword [esp + eax*4 + 0x4c]
lea eax, [esp + eax*4 + 0x4c]
inc ebp
dec edx
mov dword [eax], ebp
jne 0x4a79f7
cmp dword [esp + 0x4c], esi
jne 0x4a7a2f
mov ecx, dword [esp + 0x5a0]
mov edx, dword [esp + 0x5a4]
xor eax, eax
mov dword [ecx], ebx
mov dword [edx], ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x578
ret
mov esi, dword [esp + 0x5a4]
mov ecx, 1
lea eax, [esp + 0x50]
mov ebp, dword [esi]
mov dword [esp + 0x14], ebp
cmp dword [eax], ebx
jne 0x4a7a52
inc ecx
add eax, 4
cmp ecx, 0xf
jbe 0x4a7a45
cmp ebp, ecx
mov dword [esp + 0x10], ecx
jae 0x4a7a60
mov dword [esp + 0x14], ecx
mov ebp, ecx
mov eax, 0xf
lea edx, [esp + 0x88]
cmp dword [edx], ebx
jne 0x4a7a78
dec eax
sub edx, 4
cmp eax, ebx
jne 0x4a7a6c
cmp ebp, eax
mov dword [esp + 0x2c], eax
jbe 0x4a7a86
mov dword [esp + 0x14], eax
mov ebp, eax
mov dword [esi], ebp
mov esi, 1
shl esi, cl
cmp ecx, eax
jae 0x4a7aa5
lea edx, [esp + ecx*4 + 0x4c]
sub esi, dword [edx]
js 0x4a7ab1
inc ecx
add edx, 4
shl esi, 1
cmp ecx, eax
jb 0x4a7a97
mov ecx, dword [esp + eax*4 + 0x4c]
sub esi, ecx
mov dword [esp + 0x44], esi
jns 0x4a7ac1
mov eax, 0xfffffffd
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x578
ret
add ecx, esi
mov dword [esp + 0x90], ebx
mov dword [esp + eax*4 + 0x4c], ecx
xor ecx, ecx
dec eax
je 0x4a7ae6
xor edx, edx
add ecx, dword [esp + edx + 0x50]
add edx, 4
dec eax
mov dword [esp + edx + 0x90], ecx
jne 0x4a7ad5
xor edx, edx
mov eax, dword [edi]
add edi, 4
cmp eax, ebx
je 0x4a7b09
mov ecx, dword [esp + eax*4 + 0x8c]
lea eax, [esp + eax*4 + 0x8c]
mov dword [esp + ecx*4 + 0x108], edx
inc ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x590]
inc edx
cmp edx, eax
jb 0x4a7ae8
mov ecx, dword [esp + 0x2c]
lea edx, [esp + 0x108]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
mov eax, ebp
xor edi, edi
neg eax
cmp edx, ecx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x8c], edi
mov dword [esp + 0x18], 0xffffffff
mov dword [esp + 0xcc], edi
mov dword [esp + 0x40], edi
jg 0x4a7df7
lea ecx, [esp + edx*4 + 0x4c]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx]
mov esi, ecx
dec ecx
test esi, esi
mov dword [esp + 0x34], ecx
je 0x4a7dd7
jmp 0x4a7b7b
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
lea esi, [eax + ebp]
cmp edx, esi
jle 0x4a7ca3
inc ecx
mov dword [esp + 0x38], esi
mov dword [esp + 0x48], ecx
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x38]
add eax, ebp
sub edx, eax
inc ecx
add edi, ebp
cmp edx, ebp
mov dword [esp + 0x18], ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], edi
jbe 0x4a7bb4
mov edx, ebp
mov ebx, dword [esp + 0x10]
sub ebx, eax
mov eax, 1
mov ecx, ebx
shl eax, cl
cmp eax, dword [esp + 0x48]
jbe 0x4a7bf4
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
or ecx, 0xffffffff
sub ecx, edi
add eax, ecx
cmp ebx, edx
jae 0x4a7bf4
inc ebx
cmp ebx, edx
jae 0x4a7bf4
mov ecx, dword [esi + 4]
add esi, 4
shl eax, 1
cmp eax, ecx
jbe 0x4a7bf4
sub eax, ecx
inc ebx
cmp ebx, edx
jb 0x4a7be1
mov esi, dword [esp + 0x5a8]
mov edi, 1
mov ecx, ebx
push 8
mov eax, dword [esi + 0x28]
shl edi, cl
lea edx, [edi + 1]
push edx
push eax
call dword [esi + 0x20]
add esp, 0xc
test eax, eax
je 0x4a7e1f
mov edx, dword [esp + 0x5a0]
lea ecx, [eax + 8]
add eax, 4
mov dword [esp + 0x40], ecx
mov dword [edx], ecx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x5a0], eax
mov dword [eax], 0
lea esi, [edx*4]
test edx, edx
lea eax, [esp + esi + 0xcc]
mov dword [eax], ecx
je 0x4a7c87
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
mov dword [esp + esi + 0x8c], ebp
mov esi, ecx
mov ecx, dword [esp + 0x3c]
mov eax, dword [eax - 4]
sub ecx, edx
mov byte [esp + 0x21], dl
shr ebp, cl
mov byte [esp + 0x20], bl
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x24], esi
mov dword [eax + ebp*8], ecx
mov dword [eax + ebp*8 + 4], esi
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x14]
cmp eax, edx
mov eax, dword [esp + 0x3c]
jg 0x4a7b8f
mov ebx, dword [esp + 0x28]
mov cl, byte [esp + 0x10]
mov edx, dword [esp + 0x590]
sub cl, al
mov byte [esp + 0x21], cl
mov ecx, dword [esp + 0x1c]
lea edx, [esp + edx*4 + 0x108]
cmp ecx, edx
jb 0x4a7cca
mov byte [esp + 0x20], pe_nt_image_headers32
jmp 0x4a7d1a
mov ecx, dword [ecx]
mov edx, dword [esp + 0x594]
cmp ecx, edx
jae 0x4a7ceb
cmp ecx, 0x100
sbb edx, edx
and edx, 0xffffffa0
add edx, 0x60
mov byte [esp + 0x20], dl
jmp 0x4a7d0b
sub ecx, edx
mov edx, dword [esp + 0x59c]
shl ecx, 2
mov dl, byte [edx + ecx]
add dl, 0x50
mov byte [esp + 0x20], dl
mov edx, dword [esp + 0x598]
mov ecx, dword [edx + ecx]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x1c]
add ecx, 4
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x10]
mov esi, 1
sub ecx, eax
mov edx, ebx
shl esi, cl
mov ecx, eax
shr edx, cl
cmp edx, edi
jae 0x4a7d5c
mov ecx, dword [esp + 0x40]
lea ebx, [esi*8]
lea ecx, [ecx + edx*8]
mov ebp, dword [esp + 0x20]
add edx, esi
mov dword [ecx], ebp
mov ebp, dword [esp + 0x24]
mov dword [ecx + 4], ebp
add ecx, ebx
cmp edx, edi
jb 0x4a7d3f
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
lea ecx, [edx - 1]
mov edx, 1
shl edx, cl
test ebx, edx
je 0x4a7d76
xor ebx, edx
shr edx, 1
test ebx, edx
jne 0x4a7d6e
mov ecx, dword [esp + 0x18]
xor ebx, edx
mov esi, 1
mov dword [esp + 0x28], ebx
lea edx, [esp + ecx*4 + 0x8c]
mov ecx, eax
shl esi, cl
mov ecx, dword [edx]
dec esi
and esi, ebx
cmp esi, ecx
je 0x4a7dba
mov esi, dword [esp + 0x18]
sub eax, ebp
dec esi
mov ecx, eax
mov dword [esp + 0x18], esi
mov esi, 1
shl esi, cl
mov ecx, dword [edx - 4]
sub edx, 4
dec esi
and esi, ebx
cmp esi, ecx
jne 0x4a7d99
mov ecx, dword [esp + 0x34]
mov edx, ecx
dec ecx
test edx, edx
mov dword [esp + 0x34], ecx
jne 0x4a7b73
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
jmp 0x4a7ddb
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
inc edx
add ecx, 4
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x2c]
cmp edx, ecx
jle 0x4a7b5c
test esi, esi
je 0x4a7e12
cmp dword [esp + 0x2c], 1
je 0x4a7e12
mov eax, 0xfffffffb
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x578
ret
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x578
ret
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4a7e5d
mov ecx, dword [esp + 0xcc]
xor eax, eax
test ecx, ecx
je 0x4a7e42
mov edx, dword [ecx - 4]
mov dword [ecx - 4], eax
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x4a7e34
test eax, eax
je 0x4a7e5d
mov edi, dword [eax - 4]
sub eax, 8
push eax
mov eax, dword [esi + 0x28]
push eax
call dword [esi + 0x24]
add esp, 8
mov eax, edi
test edi, edi
jne 0x4a7e46
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x578
ret