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

Disassembly:
sub esp, 0x10
push ebp
mov ebp, dword [esp + 0x18]
push esi
mov eax, dword [ebp + 0x144]
mov esi, dword [ebp]
movsx ecx, word [ebp + 0x14]
movzx edx, byte [eax + ebp + 0x28]
mov eax, dword [ebp + 0x140]
imul eax, ecx
mov edx, dword [esi + edx*8 + 4]
lea eax, [eax + eax*4]
add edx, eax
mov dword [esp + 0x10], edx
je 0x404f24
and dword [esp + 0x14], 0
test ecx, ecx
jle 0x404f24
push ebx
push edi
jmp 0x404940
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
mov ecx, 0x477bbc
imul esi, esi, 0xac
add esi, 0x476604
mov al, byte [esi + 0x66]
movzx di, al
cmp di, word [ebp + 0x20]
jl 0x404974
and dword [0x477bbc], 0
mov edi, 0x477bec
mov dword [esp + 0x14], ecx
jmp 0x4049a7
movzx edi, al
imul edi, edi, 0x154
movzx eax, byte [esi]
add edi, dword [ebp + 4]
mov al, byte [eax + edi + 0x44]
cmp al, 0x10
jb 0x404991
mov dword [esp + 0x14], ecx
jmp 0x40499c
movzx eax, al
mov eax, dword [edi + eax*4 + 4]
mov dword [esp + 0x14], eax
cmp dword [esp + 0x14], 0
jne 0x4049a7
mov dword [esp + 0x14], ecx
mov al, byte [edx + 3]
mov byte [esp + 0x13], al
mov al, byte [edx + 4]
and dword [esi + 0x18], 0
and dword [esi + 0x1c], 0
and byte [esi + 2], 0
mov bl, al
and al, 0xf
mov byte [esp + 0x24], al
mov al, byte [edi + 0x14c]
shr bl, 4
test al, 1
je 0x404a1d
cmp byte [esi + 0x3c], 0
lea ecx, [esi + 0x3c]
jne 0x404a1d
lea edx, [esi + 0x38]
push 2
push edx
push ecx
lea ecx, [esi + 0x30]
push ecx
lea ecx, [esi + 0x34]
push ecx
mov cl, byte [edi + 0x146]
push ecx
mov cl, byte [edi + 0x147]
push ecx
mov cl, byte [edi + 0x148]
push ecx
lea ecx, [edi + 0xa4]
push ecx
movzx ecx, byte [edi + 0x144]
push ecx
push eax
lea eax, [esi + 0x28]
push eax
lea eax, [esi + 0x2c]
push eax
push esi
call fcn.00403b14
mov cl, byte [edi + 0x14d]
test cl, 1
je 0x404a73
cmp byte [esi + 0x54], 0
lea eax, [esi + 0x54]
jne 0x404a73
lea edx, [esi + 0x50]
push 4
push edx
push eax
lea eax, [esi + 0x48]
push eax
lea eax, [esi + 0x4c]
push eax
mov al, byte [edi + 0x149]
push eax
mov al, byte [edi + 0x14a]
push eax
mov al, byte [edi + 0x14b]
push eax
lea eax, [edi + 0xf4]
push eax
movzx eax, byte [edi + 0x145]
push eax
lea eax, [esi + 0x40]
push ecx
push eax
lea eax, [esi + 0x44]
push eax
push esi
call fcn.00403b14
cmp byte [esi + 0x65], 0
je 0x404a8d
movzx eax, word [edi + 0x152]
sub dword [esi + 0x58], eax
jns 0x404a89
and dword [esi + 0x58], 0
or byte [esi + 2], 2
mov eax, dword [esp + 0x18]
mov cl, byte [eax + 2]
movzx eax, cl
mov edx, eax
shr edx, 4
sub edx, 6
je 0x404b0d
dec edx
je 0x404afa
sub edx, 4
je 0x404acf
dec edx
dec edx
je 0x404ac7
dec edx
je 0x404abb
dec edx
jne 0x404b1d
push esi
call fcn.00403850
jmp 0x404b1d
and eax, 0xf
add dword [esi + 0x14], eax
or byte [esi + 2], 4
jmp 0x404b1d
and eax, 0xf
sub dword [esi + 0x14], eax
jmp 0x404ac1
and cl, 0xf
push esi
mov byte [esi + 0x87], cl
call fcn.00403895
mov cl, byte [esi + 0x86]
lea eax, [esi + 0x85]
add byte [eax], cl
mov cl, byte [eax]
cmp cl, 0x1f
jle 0x404b1d
sub cl, 0x40
mov byte [eax], cl
jmp 0x404b1d
and eax, 0xf
push 0x40
add dword [esi + 0x10], eax
pop eax
cmp dword [esi + 0x10], eax
jle 0x404b19
mov dword [esi + 0x10], eax
jmp 0x404b19
and eax, 0xf
sub dword [esi + 0x10], eax
jns 0x404b19
and dword [esi + 0x10], 0
or byte [esi + 2], 2
movzx eax, byte [esp + 0x13]
cmp eax, 7
jg 0x404cda
je 0x404ccf
xor ecx, ecx
sub eax, ecx
je 0x404c1d
dec eax
je 0x404c03
dec eax
je 0x404bed
dec eax
je 0x404bde
dec eax
je 0x404bb5
dec eax
je 0x404ba9
dec eax
jne 0x404ef9
push esi
call fcn.00403895
mov cl, byte [esi + 0x86]
lea eax, [esi + 0x85]
add byte [eax], cl
mov cl, byte [eax]
cmp cl, 0x1f
jle 0x404b7d
sub cl, 0x40
mov byte [eax], cl
mov al, byte [esi + 0x7c]
mov cl, al
and al, 0xf
shr cl, 4
test cl, cl
je 0x404ee5
movzx eax, cl
add dword [esi + 0x10], eax
push 0x40
pop eax
cmp dword [esi + 0x10], eax
jle 0x404ef5
mov dword [esi + 0x10], eax
jmp 0x404ef5
and dword [esi + 0x1c], 0
push esi
call fcn.00403850
jmp 0x404b7d
push esi
call fcn.00403895
mov cl, byte [esi + 0x86]
lea eax, [esi + 0x85]
add byte [eax], cl
mov cl, byte [eax]
cmp cl, 0x1f
jle 0x404ef9
sub cl, 0x40
mov byte [eax], cl
jmp 0x404ef9
and dword [esi + 0x1c], 0
push esi
call fcn.00403850
jmp 0x404ef9
movzx eax, byte [esi + 0x78]
shl eax, 2
add dword [esi + 0xc], eax
mov dword [esi + 0x1c], ecx
or byte [esi + 2], 1
jmp 0x404ef9
movzx eax, byte [esi + 0x79]
shl eax, 2
sub dword [esi + 0xc], eax
push 0x38
pop eax
mov dword [esi + 0x1c], ecx
cmp dword [esi + 0xc], eax
jge 0x404bfa
mov dword [esi + 0xc], eax
jmp 0x404bfa
mov eax, dword [esp + 0x18]
cmp byte [eax + 4], 0
jbe 0x404ef9
mov eax, dword [ebp + 0x134]
push 3
cdq
pop ecx
idiv ecx
dec edx
je 0x404c8d
dec edx
jne 0x404bfa
test byte [ebp + 0x22], 1
je 0x404c50
movzx eax, byte [esp + 0x24]
shl eax, 6
mov dword [esi + 0x1c], eax
jmp 0x404bfa
mov ebx, dword [esp + 0x14]
movzx ecx, byte [esp + 0x24]
movsx eax, byte [ebx + 0x11]
push eax
movzx eax, byte [esi + 0x67]
add eax, ecx
push eax
call fcn.00403d0a
mov edx, eax
movsx eax, byte [ebx + 0x11]
push eax
mov dword [esp + 0x28], edx
movzx eax, byte [esi + 0x67]
push eax
call fcn.00403d0a
mov ecx, dword [esp + 0x24]
sub ecx, eax
mov dword [esi + 0x1c], ecx
jmp 0x404bfa
test byte [ebp + 0x22], 1
je 0x404c98
movzx eax, bl
jmp 0x404c48
mov eax, dword [esp + 0x14]
movzx ecx, bl
movsx eax, byte [eax + 0x11]
push eax
movzx eax, byte [esi + 0x67]
add eax, ecx
push eax
call fcn.00403d0a
mov ebx, eax
mov eax, dword [esp + 0x14]
movsx eax, byte [eax + 0x11]
push eax
movzx eax, byte [esi + 0x67]
push eax
call fcn.00403d0a
sub ebx, eax
mov dword [esi + 0x1c], ebx
jmp 0x404bfa
push esi
call fcn.00403a28
jmp 0x404ef9
sub eax, 0xa
je 0x404b7d
sub eax, 4
je 0x404e64
sub eax, 3
je 0x404e07
sub eax, 8
je 0x404dcb
dec eax
dec eax
je 0x404d15
dec eax
dec eax
jne 0x404ef9
push esi
call fcn.00403deb
jmp 0x404ef9
mov al, byte [esi + 0x7f]
test al, al
je 0x404ef9
movzx ecx, al
mov eax, dword [ebp + 0x134]
cdq
idiv ecx
test edx, edx
jne 0x404ef9
mov al, byte [esi + 0x7e]
test al, al
je 0x404eab
movzx eax, al
dec eax
cmp eax, 0xe
ja case.0x404d48.8
jmp dword [eax*4 + 0x404f2c]
dec dword [esi + 0x10]
jmp case.0x404d48.8
add dword [esi + 0x10], 0xfffffffe
jmp case.0x404d48.8
add dword [esi + 0x10], 0xfffffffc
jmp case.0x404d48.8
add dword [esi + 0x10], 0xfffffff8
jmp case.0x404d48.8
add dword [esi + 0x10], 0xfffffff0
jmp case.0x404d48.8
mov eax, dword [esi + 0x10]
push 3
shl eax, 1
cdq
pop ecx
idiv ecx
jmp 0x404da6
sar dword [esi + 0x10], 1
jmp case.0x404d48.8
inc dword [esi + 0x10]
jmp case.0x404d48.8
add dword [esi + 0x10], 2
jmp case.0x404d48.8
add dword [esi + 0x10], 4
jmp case.0x404d48.8
add dword [esi + 0x10], 8
jmp case.0x404d48.8
add dword [esi + 0x10], 0x10
jmp case.0x404d48.8
mov eax, dword [esi + 0x10]
lea eax, [eax + eax*2]
cdq
sub eax, edx
sar eax, 1
mov dword [esi + 0x10], eax
jmp case.0x404d48.8
shl dword [esi + 0x10], 1
push 0x40
lea eax, [esi + 0x10]
pop ecx
cmp dword [eax], ecx
jle 0x404dba
mov dword [eax], ecx
cmp dword [eax], 0
jge 0x404dc2
and dword [eax], 0
or byte [esi + 2], 2
jmp 0x404eab
mov al, byte [esi + 0x7d]
mov cl, al
and al, 0xf
shr cl, 4
test cl, cl
je 0x404dee
movzx eax, cl
add dword [esi + 0x14], eax
mov eax, 0xff
cmp dword [esi + 0x14], eax
jle 0x404dfe
mov dword [esi + 0x14], eax
jmp 0x404dfe
test al, al
je 0x404dfe
movzx eax, al
sub dword [esi + 0x14], eax
jns 0x404dfe
and dword [esi + 0x14], 0
or byte [esi + 2], 4
jmp 0x404ef9
mov al, byte [ebp + 0x130]
mov cl, al
and al, 0xf
shr cl, 4
test cl, cl
je 0x404e3f
movzx ecx, cl
add dword [ebp + 0x12c], ecx
cmp dword [ebp + 0x12c], 0x40
lea eax, [ebp + 0x12c]
jle 0x404ef9
mov dword [eax], 0x40
jmp 0x404ef9
test al, al
je 0x404ef9
movzx eax, al
sub dword [ebp + 0x12c], eax
lea ecx, [ebp + 0x12c]
jns 0x404ef9
and dword [ecx], 0
jmp 0x404ef9
movzx eax, bl
sub eax, 9
je 0x404ec6
sub eax, 3
je 0x404eb7
dec eax
jne 0x404ef9
movzx eax, byte [esp + 0x24]
cmp dword [ebp + 0x134], eax
jne 0x404eb1
push dword [esp + 0x14]
push esi
call fcn.0040404e
mov eax, dword [esi + 0x68]
or byte [esi + 2], 1
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x18]
mov al, byte [eax + 2]
test al, al
je 0x404eab
push eax
push esi
call fcn.00403c0f
or byte [esi + 2], 8
jmp 0x404ef9
and byte [esi + 2], 0xf0
jmp 0x404ef9
movzx eax, byte [esp + 0x24]
cmp dword [ebp + 0x134], eax
jne 0x404ef9
jmp 0x404ef1
cmp byte [esp + 0x24], 0
je 0x404ef9
mov eax, dword [ebp + 0x134]
movzx ecx, byte [esp + 0x24]
cdq
idiv ecx
test edx, edx
jne 0x404ef9
or byte [esi + 2], 0xb
jmp 0x404ef9
test al, al
je 0x404ef5
movzx eax, al
sub dword [esi + 0x10], eax
jns 0x404ef5
and dword [esi + 0x10], 0
or byte [esi + 2], 2
push edi
push esi
call fcn.00403935
push ebp
push dword [esp + 0x18]
push esi
call fcn.00403e32
movsx eax, word [ebp + 0x14]
inc dword [esp + 0x1c]
add dword [esp + 0x18], 5
cmp dword [esp + 0x1c], eax
jl 0x40493c
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x10
ret 4