Function at 0x40360e
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 [ebp + eax + 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 0x403c54
and dword [esp + 0x14], 0
test ecx, ecx
jle 0x403c54
push ebx
push edi
jmp 0x40365a
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
mov ecx, 0x4088e8
imul esi, esi, 0xac
add esi, 0x407208
mov al, byte [esi + 0x66]
movzx di, al
cmp di, word [ebp + 0x20]
jl 0x40368e
and dword [0x4088e8], 0
mov edi, 0x408788
mov dword [esp + 0x14], ecx
jmp 0x4036c1
movzx edi, al
imul edi, edi, 0x154
movzx eax, byte [esi]
add edi, dword [ebp + 4]
mov al, byte [edi + eax + 0x44]
cmp al, 0x10
jb 0x4036ab
mov dword [esp + 0x14], ecx
jmp 0x4036b6
movzx eax, al
mov eax, dword [edi + eax*4 + 4]
mov dword [esp + 0x14], eax
cmp dword [esp + 0x14], 0
jne 0x4036c1
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 0x40373a
cmp byte [esi + 0x3c], 0
lea ecx, [esi + 0x3c]
jne 0x40373a
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.0040282d
add esp, 0x38
mov cl, byte [edi + 0x14d]
test cl, 1
je 0x403793
cmp byte [esi + 0x54], 0
lea eax, [esi + 0x54]
jne 0x403793
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.0040282d
add esp, 0x38
cmp byte [esi + 0x65], 0
je 0x4037ad
movzx eax, word [edi + 0x152]
sub dword [esi + 0x58], eax
jns 0x4037a9
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 0x40382f
dec edx
je 0x40381c
sub edx, 4
je 0x4037f0
dec edx
dec edx
je 0x4037e8
dec edx
je 0x4037dc
dec edx
jne 0x40383f
push esi
call fcn.0040258f
pop ecx
jmp 0x40383f
and eax, 0xf
add dword [esi + 0x14], eax
or byte [esi + 2], 4
jmp 0x40383f
and eax, 0xf
sub dword [esi + 0x14], eax
jmp 0x4037e2
and cl, 0xf
push esi
mov byte [esi + 0x87], cl
call fcn.004025d2
pop ecx
lea eax, [esi + 0x85]
mov cl, byte [esi + 0x86]
add byte [eax], cl
mov cl, byte [eax]
cmp cl, 0x1f
jle 0x40383f
sub cl, 0x40
mov byte [eax], cl
jmp 0x40383f
and eax, 0xf
push 0x40
add dword [esi + 0x10], eax
pop eax
cmp dword [esi + 0x10], eax
jle 0x40383b
mov dword [esi + 0x10], eax
jmp 0x40383b
and eax, 0xf
sub dword [esi + 0x10], eax
jns 0x40383b
and dword [esi + 0x10], 0
or byte [esi + 2], 2
movzx eax, byte [esp + 0x13]
cmp eax, 7
jg 0x403a02
je 0x4039fa
xor ecx, ecx
sub eax, ecx
je 0x403942
dec eax
je 0x403928
dec eax
je 0x403912
dec eax
je 0x403903
dec eax
je 0x4038d9
dec eax
je 0x4038cc
dec eax
jne 0x403c26
push esi
call fcn.004025d2
pop ecx
lea eax, [esi + 0x85]
mov cl, byte [esi + 0x86]
add byte [eax], cl
mov cl, byte [eax]
cmp cl, 0x1f
jle 0x4038a0
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 0x403c12
movzx eax, cl
add dword [esi + 0x10], eax
push 0x40
pop eax
cmp dword [esi + 0x10], eax
jle 0x403c22
mov dword [esi + 0x10], eax
jmp 0x403c22
and dword [esi + 0x1c], 0
push esi
call fcn.0040258f
pop ecx
jmp 0x4038a0
push esi
call fcn.004025d2
pop ecx
lea eax, [esi + 0x85]
mov cl, byte [esi + 0x86]
add byte [eax], cl
mov cl, byte [eax]
cmp cl, 0x1f
jle 0x403c26
sub cl, 0x40
mov byte [eax], cl
jmp 0x403c26
and dword [esi + 0x1c], 0
push esi
call fcn.0040258f
jmp 0x403a38
movzx eax, byte [esi + 0x78]
shl eax, 2
add dword [esi + 0xc], eax
mov dword [esi + 0x1c], ecx
or byte [esi + 2], 1
jmp 0x403c26
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 0x40391f
mov dword [esi + 0xc], eax
jmp 0x40391f
mov eax, dword [esp + 0x18]
cmp byte [eax + 4], 0
jbe 0x403c26
mov eax, dword [ebp + 0x134]
push 3
cdq
pop ecx
idiv ecx
dec edx
je 0x4039b5
dec edx
jne 0x40391f
test byte [ebp + 0x22], 1
je 0x403975
movzx eax, byte [esp + 0x24]
shl eax, 6
mov dword [esi + 0x1c], eax
jmp 0x40391f
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.00402a1c
mov edx, eax
movsx eax, byte [ebx + 0x11]
push eax
mov dword [esp + 0x30], edx
movzx eax, byte [esi + 0x67]
push eax
call fcn.00402a1c
mov ecx, dword [esp + 0x34]
add esp, 0x10
sub ecx, eax
mov dword [esi + 0x1c], ecx
jmp 0x40391f
test byte [ebp + 0x22], 1
je 0x4039c0
movzx eax, bl
jmp 0x40396d
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.00402a1c
mov ebx, eax
mov eax, dword [esp + 0x1c]
movsx eax, byte [eax + 0x11]
push eax
movzx eax, byte [esi + 0x67]
push eax
call fcn.00402a1c
add esp, 0x10
sub ebx, eax
mov dword [esi + 0x1c], ebx
jmp 0x40391f
push esi
call fcn.0040274b
jmp 0x403a38
sub eax, 0xa
je 0x4038a0
sub eax, 4
je 0x403b8d
sub eax, 3
je 0x403b30
sub eax, 8
je 0x403af4
dec eax
dec eax
je 0x403a3e
dec eax
dec eax
jne 0x403c26
push esi
call fcn.00402afc
pop ecx
jmp 0x403c26
mov al, byte [esi + 0x7f]
test al, al
je 0x403c26
movzx ecx, al
mov eax, dword [ebp + 0x134]
cdq
idiv ecx
test edx, edx
jne 0x403c26
mov al, byte [esi + 0x7e]
test al, al
je 0x403bd8
movzx eax, al
dec eax
cmp eax, 0xe
ja case.0x403a71.8
jmp dword [eax*4 + 0x403c5a]
dec dword [esi + 0x10]
jmp case.0x403a71.8
add dword [esi + 0x10], 0xfffffffe
jmp case.0x403a71.8
add dword [esi + 0x10], 0xfffffffc
jmp case.0x403a71.8
add dword [esi + 0x10], 0xfffffff8
jmp case.0x403a71.8
add dword [esi + 0x10], 0xfffffff0
jmp case.0x403a71.8
mov eax, dword [esi + 0x10]
push 3
shl eax, 1
cdq
pop ecx
idiv ecx
jmp 0x403acf
sar dword [esi + 0x10], 1
jmp case.0x403a71.8
inc dword [esi + 0x10]
jmp case.0x403a71.8
add dword [esi + 0x10], 2
jmp case.0x403a71.8
add dword [esi + 0x10], 4
jmp case.0x403a71.8
add dword [esi + 0x10], 8
jmp case.0x403a71.8
add dword [esi + 0x10], 0x10
jmp case.0x403a71.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.0x403a71.8
shl dword [esi + 0x10], 1
push 0x40
lea eax, [esi + 0x10]
pop ecx
cmp dword [eax], ecx
jle 0x403ae3
mov dword [eax], ecx
cmp dword [eax], 0
jge 0x403aeb
and dword [eax], 0
or byte [esi + 2], 2
jmp 0x403bd8
mov al, byte [esi + 0x7d]
mov cl, al
and al, 0xf
shr cl, 4
test cl, cl
je 0x403b17
movzx eax, cl
add dword [esi + 0x14], eax
mov eax, 0xff
cmp dword [esi + 0x14], eax
jle 0x403b27
mov dword [esi + 0x14], eax
jmp 0x403b27
test al, al
je 0x403b27
movzx eax, al
sub dword [esi + 0x14], eax
jns 0x403b27
and dword [esi + 0x14], 0
or byte [esi + 2], 4
jmp 0x403c26
mov al, byte [ebp + 0x130]
mov cl, al
and al, 0xf
shr cl, 4
test cl, cl
je 0x403b68
movzx ecx, cl
add dword [ebp + 0x12c], ecx
cmp dword [ebp + 0x12c], 0x40
lea eax, [ebp + 0x12c]
jle 0x403c26
mov dword [eax], 0x40
jmp 0x403c26
test al, al
je 0x403c26
movzx eax, al
sub dword [ebp + 0x12c], eax
lea ecx, [ebp + 0x12c]
jns 0x403c26
and dword [ecx], 0
jmp 0x403c26
movzx eax, bl
sub eax, 9
je 0x403bf3
sub eax, 3
je 0x403be4
dec eax
jne 0x403c26
movzx eax, byte [esp + 0x24]
cmp dword [ebp + 0x134], eax
jne 0x403bde
push dword [esp + 0x14]
push esi
call fcn.00402d5a
mov eax, dword [esi + 0x68]
or byte [esi + 2], 1
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x20]
pop ecx
mov al, byte [eax + 2]
pop ecx
test al, al
je 0x403bd8
push eax
push esi
call fcn.00402926
pop ecx
pop ecx
or byte [esi + 2], 8
jmp 0x403c26
and byte [esi + 2], 0xf0
jmp 0x403c26
movzx eax, byte [esp + 0x24]
cmp dword [ebp + 0x134], eax
jne 0x403c26
jmp 0x403c1e
cmp byte [esp + 0x24], 0
je 0x403c26
mov eax, dword [ebp + 0x134]
movzx ecx, byte [esp + 0x24]
cdq
idiv ecx
test edx, edx
jne 0x403c26
or byte [esi + 2], 0xb
jmp 0x403c26
test al, al
je 0x403c22
movzx eax, al
sub dword [esi + 0x10], eax
jns 0x403c22
and dword [esi + 0x10], 0
or byte [esi + 2], 2
push edi
push esi
call fcn.00402660
push ebp
push dword [esp + 0x20]
push esi
call fcn.00402b41
movsx eax, word [ebp + 0x14]
add dword [esp + 0x2c], 5
add esp, 0x14
inc dword [esp + 0x1c]
cmp dword [esp + 0x1c], eax
jl 0x403656
pop edi
pop ebx
pop esi
pop ebp
add esp, 0x10
ret