Function at 0x4a5980
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 0x4a59e7
cmp dword [esp + 0x4c], esi
jne 0x4a5a1f
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 0x4a5a42
inc ecx
add eax, 4
cmp ecx, 0xf
jbe 0x4a5a35
cmp ebp, ecx
mov dword [esp + 0x10], ecx
jae 0x4a5a50
mov dword [esp + 0x14], ecx
mov ebp, ecx
mov eax, 0xf
lea edx, [esp + 0x88]
cmp dword [edx], ebx
jne 0x4a5a68
dec eax
sub edx, 4
cmp eax, ebx
jne 0x4a5a5c
cmp ebp, eax
mov dword [esp + 0x2c], eax
jbe 0x4a5a76
mov dword [esp + 0x14], eax
mov ebp, eax
mov dword [esi], ebp
mov esi, 1
shl esi, cl
cmp ecx, eax
jae 0x4a5a95
lea edx, [esp + ecx*4 + 0x4c]
sub esi, dword [edx]
js 0x4a5aa1
inc ecx
add edx, 4
shl esi, 1
cmp ecx, eax
jb 0x4a5a87
mov ecx, dword [esp + eax*4 + 0x4c]
sub esi, ecx
mov dword [esp + 0x44], esi
jns 0x4a5ab1
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 0x4a5ad6
xor edx, edx
add ecx, dword [esp + edx + 0x50]
add edx, 4
dec eax
mov dword [esp + edx + 0x90], ecx
jne 0x4a5ac5
xor edx, edx
mov eax, dword [edi]
add edi, 4
cmp eax, ebx
je 0x4a5af9
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 0x4a5ad8
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 0x4a5de7
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 0x4a5dc7
jmp 0x4a5b6b
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
lea esi, [eax + ebp]
cmp edx, esi
jle 0x4a5c93
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 0x4a5ba4
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 0x4a5be4
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
or ecx, 0xffffffff
sub ecx, edi
add eax, ecx
cmp ebx, edx
jae 0x4a5be4
inc ebx
cmp ebx, edx
jae 0x4a5be4
mov ecx, dword [esi + 4]
add esi, 4
shl eax, 1
cmp eax, ecx
jbe 0x4a5be4
sub eax, ecx
inc ebx
cmp ebx, edx
jb 0x4a5bd1
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 0x4a5e0f
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 0x4a5c77
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 0x4a5b7f
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 0x4a5cba
mov byte [esp + 0x20], 0xc0
jmp 0x4a5d0a
mov ecx, dword [ecx]
mov edx, dword [esp + 0x594]
cmp ecx, edx
jae 0x4a5cdb
cmp ecx, 0x100
sbb edx, edx
and edx, 0xffffffa0
add edx, 0x60
mov byte [esp + 0x20], dl
jmp 0x4a5cfb
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 0x4a5d4c
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 0x4a5d2f
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 0x4a5d66
xor ebx, edx
shr edx, 1
test ebx, edx
jne 0x4a5d5e
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 0x4a5daa
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 0x4a5d89
mov ecx, dword [esp + 0x34]
mov edx, ecx
dec ecx
test edx, edx
mov dword [esp + 0x34], ecx
jne 0x4a5b63
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
jmp 0x4a5dcb
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 0x4a5b4c
test esi, esi
je 0x4a5e02
cmp dword [esp + 0x2c], 1
je 0x4a5e02
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 0x4a5e4d
mov ecx, dword [esp + 0xcc]
xor eax, eax
test ecx, ecx
je 0x4a5e32
mov edx, dword [ecx - 4]
mov dword [ecx - 4], eax
mov eax, ecx
mov ecx, edx
test edx, edx
jne 0x4a5e24
test eax, eax
je 0x4a5e4d
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 0x4a5e36
pop edi
pop esi
pop ebp
mov eax, 0xfffffffc
pop ebx
add esp, 0x578
ret