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

Disassembly:
sub esp, 0x60
push ebx
mov ebx, dword [esp + 0x74]
cmp ebx, 1
jl 0x4051c5
push ebp
push esi
push edi
mov edi, dword [esp + 0x78]
lea eax, [edi + edi*2]
mov ecx, eax
and ecx, 0x80000003
mov dword [esp + 0x64], eax
jns 0x404b3e
dec ecx
or ecx, 0xfffffffc
inc ecx
je 0x404b56
inc eax
mov edx, eax
and edx, 0x80000003
jns 0x404b50
dec edx
or edx, 0xfffffffc
inc edx
jne 0x404b40
mov dword [esp + 0x64], eax
mov ebp, dword [esp + 0x7c]
mov esi, edi
imul esi, ebp
lea eax, [ebx + ebx + 1]
push esi
mov dword [esp + 0x30], eax
call fcn.00433c20
push esi
mov dword [esp + 0x4c], eax
call fcn.00433c20
push esi
mov dword [esp + 0x54], eax
call fcn.00433c20
add esp, 0xc
cmp edi, ebp
mov dword [esp + 0x4c], eax
jg 0x404b8e
mov edi, ebp
xor ecx, ecx
mov eax, edi
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00433c20
mov esi, dword [esp + 0x30]
inc esi
sar esi, 1
imul esi, esi
mov dword [esp + 0x54], eax
mov eax, esi
shl eax, 8
push eax
call fcn.00433c20
xor ecx, ecx
add esp, 8
mov dword [esp + 0x40], eax
xor ebp, ebp
sub eax, esi
mov dword [esp + 0x60], ecx
mov edi, esi
mov dword [esp + 0x68], eax
cmp ecx, edi
jge 0x404bf3
mov edx, edi
sub edx, ecx
push edx
add eax, edi
push ebp
push eax
call fcn.00437610
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x74]
add esp, 0xc
inc ebp
add ecx, esi
add edi, esi
cmp ebp, 0x100
mov dword [esp + 0x60], ecx
jl 0x404bd6
mov eax, dword [esp + 0x2c]
xor ecx, ecx
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00433c20
mov ebp, dword [esp + 0x30]
xor edi, edi
add esp, 4
xor esi, esi
cmp ebp, edi
mov dword [esp + 0x30], eax
jle 0x404c47
push 0xc
call fcn.00433c20
mov ecx, dword [esp + 0x34]
mov dword [ecx + esi*4], eax
inc esi
add esp, 4
cmp esi, ebp
jl 0x404c31
cmp dword [esp + 0x7c], edi
mov edx, dword [esp + 0x74]
mov dword [esp + 0x58], edi
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], edi
jle 0x404eb8
mov ebp, ebx
neg ebp
mov dword [esp + 0x60], ebp
jmp 0x404c74
mov ebp, dword [esp + 0x60]
xor esi, esi
cmp ebp, ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x54], edi
mov dword [esp + 0x34], edi
jg 0x404d3e
mov edi, edi
mov eax, dword [esp + 0x78]
xor ecx, ecx
cmp ebp, edi
setle cl
dec eax
dec ecx
and ecx, ebp
cmp eax, ecx
jge 0x404cb5
mov ecx, eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x30]
lea eax, [eax + ecx*2]
add eax, ecx
lea ecx, [ebx + ebp]
mov ecx, dword [edx + ecx*4]
movzx edx, byte [eax]
mov dword [ecx], edx
movzx edx, byte [eax + 1]
mov dword [ecx + 4], edx
movzx eax, byte [eax + 2]
mov dword [esp + 0x68], eax
mov dword [ecx + 8], eax
mov eax, ebp
cdq
mov edi, eax
xor edi, edx
sub edi, edx
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x5c], edx
lea eax, [ebx + 1]
sub eax, edi
imul edx, eax
add dword [esp + 0x10], edx
mov edx, ecx
imul edx, eax
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x68]
mov edi, edx
imul edi, eax
add dword [esp + 0x20], edi
mov eax, dword [esp + 0x5c]
xor edi, edi
cmp ebp, edi
jle 0x404d2b
add dword [esp + 0x34], eax
add dword [esp + 0x54], ecx
add dword [esp + 0x24], edx
jmp 0x404d35
add dword [esp + 0x18], eax
add esi, ecx
add dword [esp + 0x1c], edx
inc ebp
cmp ebp, ebx
jle 0x404ca0
xor ebp, ebp
cmp dword [esp + 0x78], edi
mov ecx, ebx
jle 0x404e99
mov edx, dword [esp + 0x58]
lea eax, [ebx + 1]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x48]
lea edi, [edx + eax]
mov edx, dword [esp + 0x44]
sub edx, eax
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x4c]
sub edx, eax
mov eax, dword [esp + 0x78]
add dword [esp + 0x58], eax
mov dword [esp + 0x6c], edx
lea ebx, [ebx]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x40]
movzx edx, byte [edx + eax]
mov eax, dword [esp + 0x68]
mov byte [eax + edi], dl
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
movzx edx, byte [edx + eax]
mov byte [edi], dl
mov edx, dword [esp + 0x20]
mov al, byte [edx + eax]
mov edx, dword [esp + 0x6c]
mov byte [edx + edi], al
mov eax, dword [esp + 0x18]
sub dword [esp + 0x10], eax
mov edx, dword [esp + 0x1c]
sub dword [esp + 0x20], edx
inc ebx
lea eax, [ecx + ebx]
cdq
idiv dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
sub dword [esp + 0x14], esi
mov edx, dword [eax + edx*4]
mov eax, dword [edx]
sub dword [esp + 0x18], eax
sub esi, dword [edx + 4]
mov eax, dword [edx + 8]
sub dword [esp + 0x1c], eax
cmp dword [esp + 0x3c], 0
mov dword [esp + 0x28], esi
jne 0x404e04
mov eax, dword [esp + 0x78]
mov esi, dword [esp + 0x5c]
dec eax
cmp esi, eax
jge 0x404dfd
mov eax, esi
mov esi, dword [esp + 0x50]
mov dword [esi + ebp*4], eax
mov eax, dword [esp + 0x50]
mov esi, dword [eax + ebp*4]
mov eax, dword [esp + 0x38]
lea eax, [eax + esi*2]
add eax, esi
movzx esi, byte [eax]
add dword [esp + 0x34], esi
mov dword [edx], esi
movzx esi, byte [eax + 1]
mov dword [edx + 4], esi
movzx eax, byte [eax + 2]
mov dword [edx + 8], eax
mov edx, dword [esp + 0x24]
add edx, eax
mov eax, dword [esp + 0x34]
add dword [esp + 0x10], eax
add dword [esp + 0x20], edx
mov dword [esp + 0x24], edx
lea eax, [ecx + 1]
cdq
idiv dword [esp + 0x2c]
mov ebx, dword [esp + 0x54]
inc dword [esp + 0x5c]
add ebx, esi
add dword [esp + 0x14], ebx
mov esi, dword [esp + 0x28]
inc ebp
inc edi
mov ecx, edx
mov edx, dword [esp + 0x30]
mov eax, dword [edx + ecx*4]
mov edx, dword [eax]
add dword [esp + 0x18], edx
sub dword [esp + 0x34], edx
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
add dword [esp + 0x1c], eax
sub dword [esp + 0x24], eax
sub ebx, edx
add esi, edx
cmp ebp, dword [esp + 0x78]
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x80]
jl 0x404d80
xor edi, edi
mov eax, dword [esp + 0x64]
add dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
inc eax
cmp eax, dword [esp + 0x7c]
mov dword [esp + 0x3c], eax
jl 0x404c70
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x78]
cmp eax, edi
mov dword [esp + 0x34], edi
jle 0x405165
imul eax, ebx
neg eax
mov edx, ebx
neg edx
mov dword [esp + 0x68], eax
mov dword [esp + 0x60], edx
jmp 0x404ee4
mov edx, dword [esp + 0x60]
mov dword [esp + 0x20], edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x24], edi
mov edi, eax
mov eax, edx
xor esi, esi
xor ecx, ecx
cmp eax, ebx
mov dword [esp + 0x5c], edi
mov dword [esp + 0x54], eax
jg 0x404ffa
mov ebp, dword [esp + 0x30]
lea edx, [eax + ebx]
lea edx, [ebp + edx*4]
mov dword [esp + 0x58], edx
jmp 0x404f34
mov edi, dword [esp + 0x5c]
xor edx, edx
test edi, edi
setl dl
inc ebx
dec edx
and edx, edi
add edx, dword [esp + 0x34]
mov edi, edx
mov edx, dword [esp + 0x58]
mov ebp, dword [edx]
mov edx, dword [esp + 0x44]
movzx edx, byte [edi + edx]
mov dword [ebp], edx
mov edx, dword [esp + 0x48]
movzx edx, byte [edi + edx]
mov dword [ebp + 4], edx
mov edx, dword [esp + 0x4c]
movzx edx, byte [edi + edx]
mov dword [ebp + 8], edx
cdq
xor eax, edx
sub eax, edx
mov edx, eax
mov eax, ebx
sub eax, edx
mov edx, dword [esp + 0x44]
movzx edx, byte [edi + edx]
imul edx, eax
add dword [esp + 0x10], edx
mov edx, dword [esp + 0x48]
movzx edx, byte [edi + edx]
imul edx, eax
add dword [esp + 0x14], edx
mov edx, dword [esp + 0x4c]
movzx edx, byte [edi + edx]
imul edx, eax
mov eax, dword [esp + 0x54]
add dword [esp + 0x20], edx
test eax, eax
jle 0x404fbb
mov edx, dword [ebp + 8]
add ecx, dword [ebp]
add esi, dword [ebp + 4]
add dword [esp + 0x24], edx
jmp 0x404fd0
mov edx, dword [ebp]
add dword [esp + 0x18], edx
mov edx, dword [ebp + 4]
add dword [esp + 0x28], edx
mov edx, dword [ebp + 8]
add dword [esp + 0x1c], edx
mov edx, dword [esp + 0x7c]
dec edx
cmp eax, edx
jge 0x404fe1
mov edx, dword [esp + 0x78]
add dword [esp + 0x5c], edx
mov ebx, dword [esp + 0x80]
add dword [esp + 0x58], 4
inc eax
cmp eax, ebx
mov dword [esp + 0x54], eax
jle 0x404f30
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x74]
lea eax, [eax + edx*2]
xor ebp, ebp
add eax, edx
cmp dword [esp + 0x7c], ebp
mov dword [esp + 0x38], eax
mov edi, ebx
mov dword [esp + 0x3c], ebp
jle 0x405148
lea edx, [ebx + 1]
mov dword [esp + 0x5c], edx
mov ebx, dword [esp + 0x40]
mov edx, dword [esp + 0x10]
movzx edx, byte [edx + ebx]
mov byte [eax], dl
mov edx, dword [esp + 0x14]
movzx edx, byte [edx + ebx]
mov byte [eax + 1], dl
mov edx, dword [esp + 0x20]
mov bl, byte [edx + ebx]
sub edx, dword [esp + 0x1c]
mov byte [eax + 2], bl
mov eax, dword [esp + 0x18]
sub dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
sub dword [esp + 0x14], eax
mov eax, dword [esp + 0x80]
inc eax
add eax, edi
mov dword [esp + 0x20], edx
cdq
idiv dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
mov edx, dword [eax + edx*4]
mov eax, dword [edx]
sub dword [esp + 0x18], eax
mov eax, dword [edx + 4]
sub dword [esp + 0x28], eax
mov eax, dword [edx + 8]
sub dword [esp + 0x1c], eax
cmp dword [esp + 0x34], 0
jne 0x4050ab
mov eax, dword [esp + 0x7c]
mov ebx, dword [esp + 0x5c]
dec eax
cmp ebx, eax
jge 0x40509f
mov eax, ebx
imul eax, dword [esp + 0x78]
mov ebx, dword [esp + 0x50]
mov dword [ebx + ebp*4], eax
mov eax, dword [esp + 0x50]
mov eax, dword [eax + ebp*4]
add eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x44]
movzx ebx, byte [eax + ebx]
mov dword [edx], ebx
mov ebx, dword [esp + 0x48]
movzx ebx, byte [eax + ebx]
add ecx, dword [edx]
mov dword [edx + 4], ebx
add esi, dword [edx + 4]
mov ebx, dword [esp + 0x4c]
movzx eax, byte [eax + ebx]
mov dword [edx + 8], eax
mov edx, dword [esp + 0x24]
add edx, eax
add dword [esp + 0x20], edx
mov dword [esp + 0x24], edx
lea eax, [edi + 1]
cdq
idiv dword [esp + 0x2c]
mov ebp, dword [esp + 0x3c]
add dword [esp + 0x10], ecx
add dword [esp + 0x14], esi
inc dword [esp + 0x5c]
inc ebp
mov dword [esp + 0x3c], ebp
mov edi, edx
mov edx, dword [esp + 0x30]
mov eax, dword [edx + edi*4]
mov edx, dword [eax]
mov ebx, dword [eax + 4]
mov eax, dword [eax + 8]
add dword [esp + 0x1c], eax
sub dword [esp + 0x24], eax
mov eax, dword [esp + 0x38]
add eax, dword [esp + 0x64]
add dword [esp + 0x18], edx
add dword [esp + 0x28], ebx
sub ecx, edx
sub esi, ebx
cmp ebp, dword [esp + 0x7c]
mov dword [esp + 0x38], eax
jl 0x405024
mov ebx, dword [esp + 0x80]
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x68]
inc ecx
xor edi, edi
cmp ecx, dword [esp + 0x78]
mov dword [esp + 0x34], ecx
jl 0x404ee0
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x44]
push eax
call fcn.004348cb
mov ecx, dword [esp + 0x4c]
push ecx
call fcn.004348cb
mov edx, dword [esp + 0x54]
push edx
call fcn.004348cb
mov eax, dword [esp + 0x5c]
push eax
call fcn.004348cb
mov ecx, dword [esp + 0x50]
push ecx
call fcn.004348cb
add esp, 0x14
cmp ebp, edi
jle 0x4051b5
mov edi, edi
mov edx, dword [esp + 0x30]
mov eax, dword [edx + edi*4]
push eax
call fcn.004348cb
inc edi
add esp, 4
cmp edi, ebp
jl 0x4051a0
mov ecx, dword [esp + 0x30]
push ecx
call fcn.004348cb
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret