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

Disassembly:
push ebp
mov edx, 0xffffff9a
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov edi, dword [ebp + 8]
test edi, edi
je 0x4c5396
mov ebx, dword [edi + 0x38]
test ebx, ebx
je 0x4c5396
mov ecx, dword [edi + 0x9c]
test ecx, ecx
jne 0x4c5732
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x34], 0
push 0
mov eax, dword [edi + 0x2c]
mov edx, dword [edi + 0x98]
add eax, edx
xor ebx, ebx
push eax
mov eax, dword [edi + 0x20]
push eax
mov eax, dword [edi + 0x1c]
push eax
call dword [edi + 0x10]
add esp, 0x10
test eax, eax
je 0x4c53a0
mov edx, 0xffffff99
lea esp, [ebp - 0xc]
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
sub esp, 0xc
lea eax, [ebp - 0x38]
mov edx, dword [edi + 0x20]
push eax
mov eax, edi
call fcn.004c4060
add esp, 0x10
test eax, eax
jne 0x4c5743
cmp dword [ebp - 0x38], 0x4034b50
je 0x4c53ca
mov ebx, 0xffffff99
sub esp, 0xc
mov edx, dword [edi + 0x20]
lea esi, [ebp - 0x3c]
mov eax, edi
push esi
call fcn.004c3ff0
add esp, 0x10
test eax, eax
je 0x4c53e5
or ebx, 0xffffffff
sub esp, 0xc
lea eax, [ebp - 0x40]
mov edx, dword [edi + 0x20]
push eax
mov eax, edi
call fcn.004c3ff0
add esp, 0x10
test eax, eax
je 0x4c5400
or ebx, 0xffffffff
sub esp, 0xc
mov edx, dword [edi + 0x20]
mov eax, edi
push esi
call fcn.004c3ff0
add esp, 0x10
test eax, eax
je 0x4c574b
or ebx, 0xffffffff
sub esp, 0xc
mov edx, dword [edi + 0x20]
mov eax, edi
push esi
call fcn.004c4060
add esp, 0x10
test eax, eax
je 0x4c5434
or ebx, 0xffffffff
sub esp, 0xc
mov edx, dword [edi + 0x20]
mov eax, edi
push esi
call fcn.004c4060
add esp, 0x10
test eax, eax
je 0x4c5791
or ebx, 0xffffffff
sub esp, 0xc
mov edx, dword [edi + 0x20]
mov eax, edi
push esi
call fcn.004c4060
add esp, 0x10
test eax, eax
je 0x4c5769
or ebx, 0xffffffff
sub esp, 0xc
mov edx, dword [edi + 0x20]
mov eax, edi
push esi
call fcn.004c4060
add esp, 0x10
test eax, eax
je 0x4c57d7
or ebx, 0xffffffff
sub esp, 0xc
lea eax, [ebp - 0x44]
mov edx, dword [edi + 0x20]
push eax
mov eax, edi
call fcn.004c3ff0
add esp, 0x10
test eax, eax
je 0x4c57b9
or ebx, 0xffffffff
mov eax, dword [ebp - 0x44]
mov esi, dword [ebp - 0x2c]
sub esp, 0xc
add esi, eax
lea eax, [ebp - 0x48]
mov dword [ebp - 0x2c], esi
mov edx, dword [edi + 0x20]
push eax
mov eax, edi
call fcn.004c3ff0
add esp, 0x10
test eax, eax
je 0x4c54cd
or ebx, 0xffffffff
mov ecx, dword [edi + 0x98]
mov eax, dword [ebp - 0x44]
add eax, ecx
mov edx, dword [ebp - 0x2c]
add eax, 0x1e
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x48]
add edx, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x2c], edx
test ebx, ebx
jne 0x4c5391
sub esp, 0xc
push 0x90
call sub.msvcrt.dll_malloc
add esp, 0x10
mov ebx, eax
mov edx, 0xffffff98
test eax, eax
je 0x4c5396
sub esp, 0xc
push 0x4000
call sub.msvcrt.dll_malloc
mov edx, dword [ebp - 0x30]
add esp, 0x10
mov dword [ebx + 0x44], edx
mov edx, dword [ebp - 0x34]
mov dword [ebx + 0x48], edx
mov edx, dword [ebp + 0x14]
mov dword [ebx], eax
mov dword [ebx + 0x4c], 0
mov dword [ebx + 0x8c], edx
test eax, eax
je 0x4c58b2
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x40], 0
test eax, eax
je 0x4c5889
mov eax, dword [ebp + 0xc]
mov edx, dword [edi + 0x54]
mov dword [eax], edx
mov esi, dword [ebp + 0x10]
test esi, esi
je 0x4c5591
mov eax, dword [edi + 0x50]
and eax, 6
cmp eax, 4
je 0x4c5860
ja 0x4c5849
cmp eax, 2
je 0x4c58a4
mov eax, dword [ebp + 0x10]
mov dword [eax], 6
mov eax, dword [edi + 0x5c]
mov dword [ebx + 0x84], edx
mov dword [ebx + 0x54], eax
mov eax, dword [edi + 0x20]
mov dword [ebx + 0x80], eax
mov dword [ebx + 0x50], 0
mov eax, dword [edi]
mov ecx, dword [ebp + 0x14]
mov dword [ebx + 0x60], eax
cmp edx, 8
mov eax, dword [edi + 4]
mov dword [ebx + 0x64], eax
mov eax, dword [edi + 8]
mov dword [ebx + 0x68], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0x6c], eax
mov eax, dword [edi + 0x10]
mov dword [ebx + 0x70], eax
mov eax, dword [edi + 0x14]
mov dword [ebx + 0x74], eax
mov eax, dword [edi + 0x18]
mov dword [ebx + 0x78], eax
mov eax, dword [edi + 0x1c]
mov dword [ebx + 0x7c], eax
mov eax, dword [edi + 0x2c]
sete dl
mov dword [ebx + 0x88], eax
test ecx, ecx
sete al
and eax, 0xff
mov dword [ebx + 0x18], 0
test edx, eax
jne 0x4c57ff
mov eax, dword [edi + 0x60]
mov dword [edi + 0x9c], ebx
mov dword [ebx + 0x58], eax
mov eax, dword [edi + 0x64]
mov dword [ebx + 0x5c], eax
mov eax, dword [ebp - 0x2c]
mov edx, dword [edi + 0x98]
mov dword [ebx + 8], 0
add eax, edx
add eax, 0x1e
mov dword [ebx + 0x3c], eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x4c5726
call fcn.00576680
lea edx, [edi + 0xa4]
mov esi, eax
mov ebx, dword [ebp + 0x18]
mov dword [edi + 0xa4], 0x12345678
mov dword [edi + 0xb0], eax
mov dword [ebp - 0x4c], edx
mov dword [edx + 4], 0x23456789
mov dword [edx + 8], 0x34567890
jmp 0x4c5680
movsx eax, al
push eax
mov edx, esi
mov eax, dword [ebp - 0x4c]
inc ebx
call fcn.004c3f30
pop eax
mov al, byte [ebx]
test al, al
jne 0x4c5670
push 0
mov eax, dword [edi + 0x9c]
mov edx, dword [eax + 0x88]
mov ecx, dword [eax + 0x3c]
add edx, ecx
push edx
mov eax, dword [edi + 0x20]
push eax
mov eax, dword [edi + 0x1c]
push eax
call dword [edi + 0x10]
add esp, 0x10
mov edx, 0xffffff98
test eax, eax
jne 0x4c5396
lea eax, [ebp - 0x28]
push 0xc
push eax
mov esi, dword [edi + 0x20]
push esi
mov ebx, dword [edi + 0x1c]
push ebx
call dword [edi + 4]
add esp, 0x10
mov edx, 0xffffff98
cmp eax, 0xb
jbe 0x4c5396
xor esi, esi
lea esi, [esi]
mov ebx, dword [edi + 0xb0]
mov eax, dword [ebp - 0x4c]
mov edx, ebx
call fcn.004c3f10
mov edx, ebx
xor al, byte [esi + ebp - 0x28]
mov byte [esi + ebp - 0x28], al
inc esi
movsx eax, al
push eax
mov eax, dword [ebp - 0x4c]
call fcn.004c3f30
pop ecx
cmp esi, 0xb
jle 0x4c56e0
mov eax, dword [edi + 0x9c]
mov dword [edi + 0xa0], 1
mov edx, dword [eax + 0x3c]
add edx, 0xc
mov dword [eax + 0x3c], edx
xor edx, edx
lea esp, [ebp - 0xc]
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
sub esp, 0xc
push edi
call fcn.004c5270
add esp, 0x10
jmp 0x4c535a
or ebx, 0xffffffff
jmp 0x4c53ca
test ebx, ebx
jne 0x4c541c
mov eax, dword [edi + 0x54]
cmp eax, dword [ebp - 0x3c]
je 0x4c586e
mov ebx, 0xffffff99
jmp 0x4c541c
test ebx, ebx
jne 0x4c546c
mov eax, dword [ebp - 0x3c]
cmp dword [edi + 0x60], eax
je 0x4c546c
test byte [ebp - 0x40], 8
jne 0x4c546c
mov ebx, 0xffffff99
jmp 0x4c546c
test ebx, ebx
jne 0x4c5450
mov eax, dword [ebp - 0x3c]
cmp dword [edi + 0x5c], eax
je 0x4c5450
test byte [ebp - 0x40], 8
jne 0x4c5450
mov ebx, 0xffffff99
jmp 0x4c5450
test ebx, ebx
jne 0x4c54a7
mov eax, dword [ebp - 0x44]
cmp dword [edi + 0x68], eax
je 0x4c54aa
mov ebx, 0xffffff99
jmp 0x4c54aa
test ebx, ebx
jne 0x4c5488
mov eax, dword [ebp - 0x3c]
cmp dword [edi + 0x64], eax
je 0x4c5488
test byte [ebp - 0x40], 8
jne 0x4c5488
mov ebx, 0xffffff99
jmp 0x4c5488
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x28], 0
mov dword [ebx + 0x2c], 0
mov dword [ebx + 4], 0
mov dword [ebx + 8], 0
lea eax, [ebx + 4]
push 0x38
push 0x7657d5
push 0xfffffffffffffff1
push eax
call fcn.00576b40
add esp, 0x10
mov esi, eax
test eax, eax
jne 0x4c5891
mov dword [ebx + 0x40], 1
jmp 0x4c5607
cmp eax, 6
jne 0x4c5588
mov eax, dword [ebp + 0x10]
mov dword [eax], 1
jmp 0x4c5591
mov eax, dword [ebp + 0x10]
mov dword [eax], 2
jmp 0x4c5591
test eax, eax
je 0x4c541c
cmp eax, 8
je 0x4c541c
mov ebx, 0xffffff99
jmp 0x4c541c
mov edx, dword [edi + 0x54]
jmp 0x4c5563
sub esp, 0xc
push ebx
call fcn.0058e9d0
add esp, 0x10
mov edx, esi
jmp 0x4c5396
mov eax, dword [ebp + 0x10]
mov dword [eax], 9
jmp 0x4c5591
sub esp, 0xc
push ebx
call fcn.0058e9d0
add esp, 0x10
mov edx, 0xffffff98
jmp 0x4c5396