Function at 0x4a3540
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x20]
push esi
mov esi, 1
test eax, eax
je 0x4a3889
cmp byte [eax], 0x31
jne 0x4a3889
cmp dword [ebp + 0x24], 0x38
jne 0x4a3889
push ebx
push edi
mov edi, dword [ebp + 8]
test edi, edi
je 0x4a387f
cmp dword [edi + 0x20], 0
mov dword [edi + 0x18], 0
jne 0x4a358f
mov dword [edi + 0x20], 0x4a8120
mov dword [edi + 0x28], 0
cmp dword [edi + 0x24], 0
jne 0x4a359c
mov dword [edi + 0x24], 0x4a8140
mov ecx, dword [ebp + 0xc]
cmp ecx, 0xffffffff
jne 0x4a35ac
mov ecx, 6
mov dword [ebp + 0xc], ecx
mov ebx, dword [ebp + 0x14]
test ebx, ebx
jns 0x4a35b9
xor esi, esi
neg ebx
jmp 0x4a35c6
cmp ebx, 0xf
jle 0x4a35c6
mov esi, 2
sub ebx, 0x10
mov eax, dword [ebp + 0x18]
dec eax
cmp eax, 8
ja 0x4a387f
cmp dword [ebp + 0x10], 8
jne 0x4a387f
lea eax, [ebx - 8]
cmp eax, 7
ja 0x4a387f
cmp ecx, 9
ja 0x4a387f
cmp dword [ebp + 0x1c], 4
ja 0x4a387f
cmp ebx, 8
jne 0x4a3606
mov ebx, 9
mov eax, dword [edi + 0x20]
push 0x16c4
push 1
push dword [edi + 0x28]
call eax
add esp, 0xc
test eax, eax
je 0x4a3875
mov dword [edi + 0x1c], eax
mov ecx, ebx
mov dword [eax + 0x18], esi
mov esi, 1
mov dword [eax + 0x30], ebx
mov ebx, eax
shl esi, cl
mov ecx, dword [ebp + 0x18]
mov dword [eax], edi
add ecx, 7
mov dword [eax + 0x1c], 0
lea eax, [esi - 1]
mov dword [ebx + 0x50], ecx
mov dword [ebx + 0x34], eax
mov eax, 1
shl eax, cl
add ecx, 2
mov dword [ebx + 0x4c], eax
dec eax
mov dword [ebx + 0x54], eax
mov eax, 0xaaaaaaab
mul ecx
push 2
shr edx, 1
mov dword [ebx + 0x2c], esi
mov dword [ebx + 0x58], edx
mov eax, dword [edi + 0x20]
push esi
push dword [edi + 0x28]
call eax
push 2
push dword [ebx + 0x2c]
mov dword [ebx + 0x38], eax
push dword [edi + 0x28]
mov eax, dword [edi + 0x20]
call eax
push 2
push dword [ebx + 0x4c]
mov dword [ebx + 0x40], eax
push dword [edi + 0x28]
mov eax, dword [edi + 0x20]
call eax
mov ecx, dword [ebp + 0x18]
mov dword [ebx + 0x44], eax
mov eax, 1
push 4
mov dword [ebx + 0x16c0], 0
lea ecx, [ecx + 6]
shl eax, cl
push eax
mov dword [ebx + 0x169c], eax
push dword [edi + 0x28]
mov eax, dword [edi + 0x20]
call eax
mov esi, dword [ebx + 0x169c]
add esp, 0x30
cmp dword [ebx + 0x38], 0
mov edx, eax
mov dword [ebx + 8], edx
lea ecx, [esi*4]
mov dword [ebx + 0xc], ecx
je 0x4a385d
cmp dword [ebx + 0x40], 0
je 0x4a385d
cmp dword [ebx + 0x44], 0
je 0x4a385d
test edx, edx
je 0x4a385d
mov eax, esi
mov byte [ebx + 0x24], 8
shr eax, 1
lea eax, [edx + eax*2]
mov dword [ebx + 0x16a4], eax
lea eax, [edx + esi*2]
add eax, esi
mov dword [ebx + 0x1698], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x84], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebx + 0x88], eax
mov esi, dword [edi + 0x1c]
test esi, esi
je 0x4a387f
cmp dword [edi + 0x20], 0
je 0x4a387f
cmp dword [edi + 0x24], 0
je 0x4a387f
mov dword [edi + 0x14], 0
mov dword [edi + 8], 0
mov dword [edi + 0x18], 0
mov dword [edi + 0x2c], 2
mov ecx, dword [esi + 0x18]
mov eax, dword [esi + 8]
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], eax
test ecx, ecx
jns 0x4a3782
neg ecx
mov dword [esi + 0x18], ecx
mov eax, ecx
neg eax
push 0
sbb eax, eax
and eax, 0xffffffb9
add eax, 0x71
mov dword [esi + 4], eax
push 0
push 0
cmp ecx, 2
jne 0x4a37a3
call fcn.004a55f0
jmp 0x4a37a8
call fcn.004a7ea0
add esp, 0xc
mov dword [edi + 0x30], eax
mov dword [esi + 0x28], 0
push esi
call fcn.004a74c0
mov eax, dword [esi + 0x2c]
xor edx, edx
mov ecx, dword [esi + 0x4c]
add eax, eax
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 0x44]
mov word [eax + ecx*2 - 2], dx
mov eax, dword [esi + 0x4c]
lea eax, [eax*2 - 2]
push eax
push edx
push dword [esi + 0x44]
call sub.msvcrt.dll_memset
mov eax, dword [esi + 0x84]
add esp, 0x10
lea ecx, [eax + eax*2]
movzx eax, word [ecx*4 + 0x4fedaa]
mov dword [esi + 0x80], eax
movzx eax, word [ecx*4 + 0x4feda8]
mov dword [esi + 0x8c], eax
movzx eax, word [ecx*4 + 0x4fedac]
mov dword [esi + 0x90], eax
movzx eax, word [ecx*4 + 0x4fedae]
pop edi
mov dword [esi + 0x7c], eax
xor eax, eax
pop ebx
mov dword [esi + 0x6c], 0
mov dword [esi + 0x5c], 0
mov dword [esi + 0x74], 0
mov dword [esi + 0x78], 2
mov dword [esi + 0x60], 2
mov dword [esi + 0x68], 0
mov dword [esi + 0x48], 0
pop esi
pop ebp
ret
mov dword [ebx + 4], 0x29a
mov eax, dword [str.insufficient_memory]
push edi
mov dword [edi + 0x18], eax
call fcn.004a3470
add esp, 4
pop edi
pop ebx
mov eax, 0xfffffffc
pop esi
pop ebp
ret
pop edi
pop ebx
mov eax, 0xfffffffe
pop esi
pop ebp
ret
mov eax, 0xfffffffa
pop esi
pop ebp
ret