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

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 0x20]
push esi
mov esi, 1
test eax, eax
je 0x412707
cmp byte [eax], 0x31
jne 0x412707
cmp dword [ebp + 0x24], 0x38
jne 0x412707
push ebx
push edi
mov edi, dword [ebp + 8]
test edi, edi
je 0x4126fb
cmp dword [edi + 0x20], 0
mov dword [edi + 0x18], 0
jne 0x4123c0
mov dword [edi + 0x20], 0x415b20
mov dword [edi + 0x28], 0
cmp dword [edi + 0x24], 0
jne 0x4123cd
mov dword [edi + 0x24], 0x40d2a0
cmp dword [ebp + 0xc], 0xffffffff
mov ecx, 6
mov ebx, dword [ebp + 0x14]
cmovne ecx, dword [ebp + 0xc]
mov dword [ebp - 4], ecx
test ebx, ebx
jns 0x4123ea
xor esi, esi
neg ebx
jmp 0x4123f7
cmp ebx, 0xf
jle 0x4123f7
mov esi, 2
sub ebx, 0x10
mov eax, dword [ebp + 0x18]
dec eax
cmp eax, 8
ja 0x4126fb
cmp dword [ebp + 0x10], 8
jne 0x4126fb
lea eax, [ebx - 8]
cmp eax, 7
ja 0x4126fb
cmp ecx, 9
ja 0x4126fb
cmp dword [ebp + 0x1c], 4
ja 0x4126fb
push 0x16c4
mov eax, 9
cmp ebx, 8
push 1
push dword [edi + 0x28]
cmove ebx, eax
mov eax, dword [edi + 0x20]
call eax
add esp, 0xc
test eax, eax
je 0x4126ef
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 0x4126d7
cmp dword [ebx + 0x40], 0
je 0x4126d7
cmp dword [ebx + 0x44], 0
je 0x4126d7
test edx, edx
je 0x4126d7
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 - 4]
mov dword [ebx + 0x84], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebx + 0x88], eax
mov ecx, dword [edi + 0x1c]
test ecx, ecx
je 0x4126c9
cmp dword [edi + 0x20], 0
je 0x4126c9
cmp dword [edi + 0x24], 0
je 0x4126c9
mov dword [edi + 0x14], 0
mov dword [edi + 8], 0
mov dword [edi + 0x18], 0
mov dword [edi + 0x2c], 2
mov edx, dword [ecx + 0x18]
mov eax, dword [ecx + 8]
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x10], eax
test edx, edx
jns 0x4125b4
neg edx
mov dword [ecx + 0x18], edx
test edx, edx
mov eax, 0x71
mov esi, 0x2a
cmovne eax, esi
mov dword [ecx + 4], eax
xor eax, eax
cmp edx, 2
setne al
mov dword [edi + 0x30], eax
lea eax, [ecx + 0x94]
mov dword [ecx + 0xb18], eax
lea eax, [ecx + 0x988]
mov dword [ecx + 0xb24], eax
lea eax, [ecx + 0xa7c]
mov dword [ecx + 0xb30], eax
xor eax, eax
mov dword [ecx + 0x28], 0
mov dword [ecx + 0xb20], 0x645aa8
mov dword [ecx + 0xb2c], 0x645a80
mov dword [ecx + 0xb38], 0x645a94
mov word [ecx + 0x16b8], ax
mov dword [ecx + 0x16bc], eax
call fcn.00414390
mov esi, dword [edi + 0x1c]
xor edx, edx
xor ebx, ebx
mov eax, dword [esi + 0x2c]
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 fcn.004d00d0
mov eax, dword [esi + 0x84]
add esp, 0xc
lea ecx, [eax + eax*2]
movzx eax, word [ecx*4 + 0x626faa]
mov dword [esi + 0x80], eax
movzx eax, word [ecx*4 + 0x626fa8]
mov dword [esi + 0x8c], eax
movzx eax, word [ecx*4 + 0x626fac]
mov dword [esi + 0x90], eax
movzx eax, word [ecx*4 + 0x626fae]
mov dword [esi + 0x7c], eax
mov eax, ebx
pop edi
mov dword [esi + 0x6c], ebx
mov dword [esi + 0x5c], ebx
mov dword [esi + 0x74], ebx
mov dword [esi + 0x16b4], ebx
mov dword [esi + 0x68], ebx
mov dword [esi + 0x48], ebx
pop ebx
mov dword [esi + 0x78], 2
mov dword [esi + 0x60], 2
pop esi
mov esp, ebp
pop ebp
ret
mov ebx, 0xfffffffe
pop edi
mov eax, ebx
pop ebx
pop esi
mov esp, ebp
pop ebp
ret
mov eax, dword [str.insufficient_memory]
mov dword [ebx + 4], 0x29a
push edi
mov dword [edi + 0x18], eax
call fcn.00413230
add esp, 4
pop edi
pop ebx
mov eax, 0xfffffffc
pop esi
mov esp, ebp
pop ebp
ret
pop edi
pop ebx
mov eax, 0xfffffffe
pop esi
mov esp, ebp
pop ebp
ret
mov eax, 0xfffffffa
pop esi
mov esp, ebp
pop ebp
ret