Function at 0x40a180
Capabilities:
Inspect section memory permissions

Disassembly:
sub esp, 0x10
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
push ebx
mov ebx, dword [esp + 0x18]
push ebp
mov ebp, dword [esp + 0x24]
push esi
mov esi, dword [ecx]
push edi
mov edi, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x2c], eax
cmp esi, ebp
jae 0x40a354
mov dword [ebx], 3
mov dword [ebx + 8], 0
mov dword [ebx + 0xc], esi
mov edx, dword [edi + 0x14]
push ebp
push esi
call edx
mov dword [esp + 0x1c], eax
mov eax, dword [edi]
push esi
call eax
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x38]
add esi, eax
add esp, 0xc
cmp ecx, dword [edx + 0x10]
mov dword [esp + 0x10], esi
mov ecx, edx
jne 0x40a1f0
test dword [ecx + 4], 0x100000
je 0x40a364
mov eax, dword [esp + 0x14]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], 0
test eax, eax
je 0x40a234
test byte [ecx], 1
je 0x40a234
cmp eax, dword [ecx + 0x14]
je 0x40aeae
cmp eax, dword [ecx + 0x18]
je 0x40a3ca
cmp eax, dword [ecx + 0x1c]
je 0x40aef8
cmp eax, dword [ecx + 0x20]
je 0x40aed9
cmp eax, dword [ecx + 0x24]
je 0x40ae8f
add eax, 0xfffffff7
cmp eax, 0x73
ja case.0x40a247.11
movzx eax, byte [eax + 0x40b190]
jmp dword [eax*4 + 0x40b154]
cmp esi, ebp
jae 0x40b043
mov ecx, dword [edi + 0x14]
push ebp
push esi
call ecx
add esp, 8
cmp eax, 0x3f
jne 0x40b043
mov edx, dword [esp + 0x2c]
test byte [edx + 4], 2
je 0x40b043
mov eax, dword [edi]
push esi
mov dword [esp + 0x1c], esi
call eax
add esi, eax
add esp, 4
cmp esi, ebp
jae 0x40b03f
mov ecx, dword [edi + 0x14]
push ebp
push esi
call ecx
add esp, 8
cmp eax, 0x23
jne 0x40b03f
mov edx, dword [edi + 0x14]
push ebp
push esi
call edx
mov eax, dword [edi]
push esi
call eax
add esp, 0xc
add esi, eax
cmp esi, ebp
jae 0x40a2db
mov ecx, dword [edi + 0x14]
push ebp
push esi
call ecx
mov edx, dword [edi]
push esi
mov dword [esp + 0x20], eax
call edx
mov ecx, dword [esp + 0x38]
add esi, eax
mov eax, dword [esp + 0x20]
add esp, 0xc
cmp eax, dword [ecx + 0x10]
jne 0x40a2e8
cmp esi, ebp
jb 0x40a2a0
pop edi
pop esi
pop ebp
mov eax, 0xffffff8a
pop ebx
add esp, 0x10
ret
cmp dword [esp + 0x14], 0x29
jne 0x40a2b1
jmp 0x40a1a3
mov ecx, dword [esp + 0x30]
test byte [ecx], 2
je case.0x40a247.11
cmp esi, ebp
jae 0x40a354
mov edx, dword [edi + 0x14]
push ebp
push esi
call edx
mov dword [esp + 0x1c], eax
mov eax, dword [edi]
push esi
call eax
mov ecx, dword [esp + 0x20]
mov edx, dword [edi + 0x30]
push 0
push ecx
add esi, eax
call edx
add esp, 0x14
test eax, eax
jne 0x40a1a3
cmp esi, ebp
jb 0x40a305
jmp 0x40a1a3
mov eax, dword [esp + 0x30]
test byte [eax], 2
jne 0x40a1a3
mov ecx, dword [esp + 0x28]
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
pop edi
pop esi
pop ebp
mov dword [ebx], 0
xor eax, eax
pop ebx
add esp, 0x10
ret
cmp esi, ebp
jb 0x40a375
pop edi
pop esi
pop ebp
mov eax, 0xffffff98
pop ebx
add esp, 0x10
ret
mov dword [ebx + 0xc], esi
mov ecx, dword [edi + 0x14]
push ebp
push esi
call ecx
mov edx, dword [edi]
push esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], esi
call edx
add esi, eax
mov eax, dword [esp + 0x20]
mov dword [ebx + 0x10], eax
add eax, 0xffffffd9
add esp, 0xc
mov dword [esp + 0x10], esi
mov dword [ebx + 4], 1
cmp eax, 0x55
ja case.0x40a3b6.44
movzx eax, byte [eax + 0x40b28c]
jmp dword [eax*4 + 0x40b204]
mov ecx, dword [esp + 0x2c]
test byte [ecx], 8
je case.0x40a247.11
mov dword [ebx + 0x10], 0
mov dword [ebx], 0xa
mov dword [ebx + 0x14], 0xffffffff
jmp 0x40af55
mov edx, dword [esp + 0x2c]
test byte [edx], 0x20
je case.0x40a247.11
mov dword [ebx], 0xa
mov dword [ebx + 0x10], 1
mov dword [ebx + 0x14], 0xffffffff
jmp 0x40af55
mov eax, dword [esp + 0x2c]
test byte [eax], 0x80
jmp 0x40aef2
mov ecx, dword [esp + 0x2c]
test dword [ecx], 0x200
je case.0x40a247.11
mov edx, dword [esp + 0x30]
push edx
lea eax, [esp + 0x14]
push ebx
push eax
mov eax, ebp
call fcn.00408f10
add esp, 0xc
test eax, eax
jl 0x40aa5f
je 0x40af51
cmp eax, 2
jne 0x40aa53
mov ecx, dword [esp + 0x2c]
test dword [ecx + 8], 0x200
jmp 0x40af4f
mov edx, dword [esp + 0x2c]
test dword [edx], 0x800
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 0xd
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x2c]
test dword [eax], 0x2000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 0xe
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x2c]
test dword [ecx], 0x2000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 0xf
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov edx, dword [esp + 0x2c]
test dword [edx], 0x40000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 6
pop edi
mov dword [ebx + 0x10], 0xc
mov dword [ebx + 0x14], 0
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x2c]
test dword [eax], 0x40000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 6
pop edi
mov dword [ebx + 0x10], 0xc
mov dword [ebx + 0x14], 1
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x2c]
test dword [ecx], 0x100000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 9
pop edi
mov dword [ebx + 0x10], 0x40
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov edx, dword [esp + 0x2c]
test dword [edx], 0x100000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 9
pop edi
mov dword [ebx + 0x10], 0x80
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x2c]
test dword [eax], 0x80000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 9
pop edi
mov dword [ebx + 0x10], 0x100
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x2c]
test dword [ecx], 0x80000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 9
pop edi
mov dword [ebx + 0x10], 0x200
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov edx, dword [esp + 0x2c]
test dword [edx], 0x200000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 6
pop edi
mov dword [ebx + 0x10], 9
mov dword [ebx + 0x14], 0
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x2c]
test dword [eax], 0x200000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 6
pop edi
mov dword [ebx + 0x10], 9
mov dword [ebx + 0x14], 1
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x2c]
test dword [ecx], 0x400000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 6
pop edi
mov dword [ebx + 0x10], 4
mov dword [ebx + 0x14], 0
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov edx, dword [esp + 0x2c]
test dword [edx], 0x400000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 6
pop edi
mov dword [ebx + 0x10], 4
mov dword [ebx + 0x14], 1
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x2c]
test dword [eax + 4], 0x80000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 6
pop edi
mov dword [ebx + 0x10], 0xb
mov dword [ebx + 0x14], 0
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x2c]
test dword [ecx + 4], 0x80000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 6
pop edi
mov dword [ebx + 0x10], 0xb
mov dword [ebx + 0x14], 1
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov edx, dword [esp + 0x2c]
test dword [edx], 0x4000
jne 0x40a7d0
mov ecx, dword [esp + 0x28]
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x2c]
test dword [eax], 0x4000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 9
pop edi
mov dword [ebx + 0x10], 0x10
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x2c]
test dword [ecx], 0x4000
jne 0x40a7fe
mov ecx, dword [esp + 0x28]
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov edx, dword [esp + 0x2c]
test dword [edx], 0x8000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 9
pop edi
mov dword [ebx + 0x10], 4
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x2c]
test dword [eax + 4], 0x8000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 9
pop edi
mov dword [ebx + 0x10], 1
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x2c]
test dword [ecx + 4], 0x8000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 9
pop edi
mov dword [ebx + 0x10], 8
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
cmp esi, ebp
jae case.0x40a247.11
mov edx, dword [edi + 0x14]
push ebp
push esi
mov dword [esp + 0x20], esi
call edx
add esp, 8
cmp eax, 0x7b
jne 0x40a910
mov eax, dword [esp + 0x2c]
test dword [eax], 0x40000000
je 0x40a910
mov ecx, dword [edi]
push esi
call ecx
push 8
lea edx, [esp + 0x18]
add esi, eax
push ebp
push edx
mov ebx, edi
mov dword [esp + 0x20], esi
call fcn.00408020
mov ebx, eax
add esp, 0x10
test ebx, ebx
jge 0x40a87a
pop edi
pop esi
pop ebp
mov eax, 0xfffffe6f
pop ebx
add esp, 0x10
ret
mov esi, dword [esp + 0x10]
cmp esi, ebp
jae 0x40a8a8
mov eax, dword [edi + 0x14]
push 0xb
push ebp
push esi
call eax
mov ecx, dword [edi + 0x30]
add esp, 8
push eax
call ecx
add esp, 8
test eax, eax
je 0x40a8a8
pop edi
pop esi
pop ebp
mov eax, 0xffffff2c
pop ebx
add esp, 0x10
ret
mov edx, dword [esp + 0x18]
mov eax, dword [edi]
push edx
call eax
add eax, dword [esp + 0x1c]
add esp, 4
cmp esi, eax
jbe 0x40a8f8
cmp esi, ebp
jae 0x40a8f8
mov ecx, dword [edi + 0x14]
push ebp
push esi
call ecx
add esp, 8
cmp eax, 0x7d
jne 0x40a8f8
mov edx, dword [edi]
push esi
call edx
mov ecx, dword [esp + 0x2c]
add esp, 4
add esi, eax
mov eax, dword [esp + 0x24]
mov dword [eax + 0x10], ebx
pop edi
mov dword [eax], 4
mov dword [ecx], esi
pop esi
mov ebx, eax
mov eax, dword [ebx]
pop ebp
pop ebx
add esp, 0x10
ret
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x24]
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x2c]
test dword [eax], 0x20000000
je case.0x40a247.11
push 2
lea ecx, [esp + 0x14]
push ebp
push ecx
mov ebx, edi
call fcn.00408020
add esp, 0xc
test eax, eax
jge 0x40a943
pop edi
pop esi
pop ebp
mov eax, 0xffffff38
pop ebx
add esp, 0x10
ret
mov esi, dword [esp + 0x10]
cmp esi, dword [esp + 0x18]
jne 0x40a94f
xor eax, eax
mov ecx, dword [esp + 0x24]
mov dword [ecx], 1
mov dword [ecx + 0x10], eax
mov ebx, ecx
mov dword [ecx + 8], 0x10
mov ecx, dword [esp + 0x28]
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
cmp esi, ebp
jae case.0x40a247.11
mov edx, dword [esp + 0x2c]
test dword [edx + 4], 0x4000
mov dword [esp + 0x18], esi
je case.0x40a247.11
push 4
lea eax, [esp + 0x14]
push ebp
push eax
mov ebx, edi
call fcn.00408020
add esp, 0xc
test eax, eax
jl 0x40a936
mov esi, dword [esp + 0x10]
cmp esi, dword [esp + 0x18]
jne 0x40a9b4
xor eax, eax
mov ecx, dword [esp + 0x24]
mov dword [ecx], 4
mov dword [ecx + 0x10], eax
mov ebx, ecx
mov dword [ecx + 8], 0x10
mov ecx, dword [esp + 0x28]
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x18]
push edi
lea edx, [esp + 0x14]
push ebp
push edx
mov dword [esp + 0x1c], ecx
call fcn.00407f90
add esp, 0xc
cmp eax, 0x3e8
ja 0x40aa67
mov esi, dword [esp + 0x2c]
test dword [esi], 0x10000
je 0x40aa67
mov edx, dword [esp + 0x30]
mov ecx, dword [edx + 0x3c]
cmp eax, ecx
jle 0x40aa14
cmp eax, 9
jg 0x40aa67
test byte [esi + 8], 0x20
je 0x40aa3b
cmp eax, ecx
jg 0x40aa2e
mov ecx, dword [edx + 0x68]
test ecx, ecx
jne 0x40aa28
lea ecx, [edx + 0x48]
cmp dword [ecx + eax*4], 0
jne 0x40aa3b
pop edi
pop esi
pop ebp
mov eax, 0xffffff30
pop ebx
add esp, 0x10
ret
mov dword [ebx + 0x14], eax
xor eax, eax
mov dword [ebx], 7
mov dword [ebx + 0x10], 1
mov dword [ebx + 0x1c], eax
mov dword [ebx + 0x20], eax
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
mov dword [ecx], esi
mov eax, dword [ebx]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x14]
cmp eax, 0x38
je 0x40aae5
cmp eax, 0x39
je 0x40aae5
mov esi, dword [esp + 0x18]
mov dword [esp + 0x10], esi
mov ecx, dword [esp + 0x2c]
test dword [ecx], 0x10000000
je 0x40ab05
xor edx, edx
cmp dword [esp + 0x14], 0x30
lea eax, [esp + 0x10]
setne dl
mov ebx, edi
mov dword [esp + 0x18], esi
add edx, 2
push edx
push ebp
push eax
call fcn.00408120
add esp, 0xc
test eax, eax
jl 0x40a936
mov esi, dword [esp + 0x10]
cmp esi, dword [esp + 0x18]
jne 0x40aabf
xor eax, eax
mov ecx, dword [esp + 0x24]
mov dword [ecx], 1
mov dword [ecx + 0x10], eax
mov ebx, ecx
mov dword [ecx + 8], 8
mov ecx, dword [esp + 0x28]
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ebp, dword [esp + 0x18]
mov eax, dword [edi]
push ebp
call eax
mov ecx, dword [esp + 0x2c]
add esp, 4
mov esi, eax
add esi, ebp
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
cmp dword [esp + 0x14], 0x30
je case.0x40a247.11
mov ecx, dword [edi]
push esi
call ecx
mov ecx, dword [esp + 0x2c]
add esp, 4
add esi, eax
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov edx, dword [esp + 0x2c]
test dword [edx + 4], 0x100
je case.0x40a247.11
mov eax, dword [edi + 0x14]
push ebp
push esi
call eax
mov ecx, dword [edi]
push esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], esi
call ecx
add esi, eax
add esp, 0xc
cmp dword [esp + 0x14], 0x3c
mov dword [esp + 0x10], esi
je 0x40ab6a
cmp dword [esp + 0x14], 0x27
jne 0x40ae16
mov edi, dword [esp + 0x30]
lea edx, [ebx + 0x24]
push edx
lea eax, [esp + 0x34]
push eax
mov eax, dword [esp + 0x1c]
push edi
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x20]
mov dword [esp + 0x28], esi
push ebp
xor esi, esi
push edx
mov dword [esp + 0x34], esi
call fcn.00409330
add esp, 0x18
cmp eax, 1
jne 0x40aba3
mov dword [ebx + 0x20], eax
jmp 0x40abae
cmp eax, esi
mov dword [ebx + 0x20], esi
jl 0x40aa5f
mov eax, dword [esp + 0x30]
cmp eax, esi
je 0x40ac14
jge 0x40abc7
mov ecx, dword [edi + 0x3c]
lea eax, [eax + ecx + 1]
cmp eax, esi
jle 0x40aa2e
mov edx, dword [esp + 0x2c]
test byte [edx + 8], 0x20
je 0x40abed
cmp eax, dword [edi + 0x3c]
jg 0x40aa2e
mov ecx, dword [edi + 0x68]
cmp ecx, esi
jne 0x40abe4
lea ecx, [edi + 0x48]
cmp dword [ecx + eax*4], esi
je 0x40aa2e
mov ecx, dword [esp + 0x28]
mov dword [ebx + 0x1c], esi
mov esi, dword [esp + 0x10]
mov dword [ebx], 7
mov dword [ebx + 0x14], eax
pop edi
mov dword [ebx + 0x10], 1
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov eax, dword [edi + 0x30]
lea esi, [esp + 0x30]
mov edx, ebp
call fcn.00407570
test eax, eax
jg 0x40ac45
mov eax, dword [esp + 0x18]
mov dword [edi + 0x28], eax
mov dword [edi + 0x2c], ebp
pop edi
pop esi
pop ebp
mov eax, 0xffffff27
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x2c]
test byte [ecx + 8], 0x20
mov ebp, dword [esp + 0x30]
je 0x40ac86
xor esi, esi
test eax, eax
jle 0x40ac86
lea esp, [esp]
mov edx, dword [ebp + esi*4]
cmp edx, dword [edi + 0x3c]
jg 0x40aa2e
mov ecx, dword [edi + 0x68]
test ecx, ecx
jne 0x40ac77
lea ecx, [edi + 0x48]
cmp dword [ecx + edx*4], 0
je 0x40aa2e
inc esi
cmp esi, eax
jl 0x40ac60
mov esi, dword [esp + 0x10]
mov ecx, 1
mov dword [ebx], 7
mov dword [ebx + 0x1c], ecx
cmp eax, ecx
jne 0x40acb5
mov dword [ebx + 0x10], ecx
mov edx, dword [ebp]
mov ecx, dword [esp + 0x28]
pop edi
mov dword [ebx + 0x14], edx
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x28]
mov dword [ebx + 0x10], eax
mov dword [ebx + 0x18], ebp
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x2c]
test dword [eax + 4], 0x200
je case.0x40a247.11
mov ecx, dword [edi + 0x14]
push ebp
push esi
call ecx
mov edx, dword [edi]
push esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], esi
call edx
add esi, eax
add esp, 0xc
cmp dword [esp + 0x14], 0x3c
mov dword [esp + 0x10], esi
je 0x40ad0b
cmp dword [esp + 0x14], 0x27
jne 0x40ae16
mov ecx, dword [esp + 0x30]
push 1
lea eax, [esp + 0x30]
push eax
push ecx
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x20]
push ebp
push eax
mov eax, dword [esp + 0x2c]
call fcn.00409600
add esp, 0x18
test eax, eax
jl 0x40aa5f
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
mov dword [ebx + 0x10], esi
mov esi, dword [esp + 0x10]
mov dword [ebx + 0x14], ecx
mov ecx, dword [esp + 0x28]
mov dword [ebx], 8
pop edi
mov dword [ebx + 0x18], edx
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x2c]
test byte [eax + 4], 1
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 0x11
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
cmp esi, ebp
jae case.0x40a247.11
mov ecx, dword [edi + 0x14]
push ebp
push esi
call ecx
add esp, 8
cmp eax, 0x7b
jne case.0x40a247.11
mov edx, dword [esp + 0x2c]
test dword [edx + 4], 0x10000
je case.0x40a247.11
mov eax, dword [edi]
push esi
call eax
mov edx, dword [esp + 0x30]
xor ecx, ecx
add esp, 4
add esi, eax
cmp dword [esp + 0x14], 0x50
mov dword [ebx], 0x12
sete cl
mov dword [ebx + 0x14], ecx
test dword [edx + 4], 0x20000
je case.0x40a247.11
mov eax, dword [edi + 0x14]
push ebp
push esi
call eax
mov ecx, dword [edi]
push esi
mov ebp, eax
mov dword [esp + 0x24], esi
call ecx
add esp, 0xc
add esi, eax
cmp ebp, 0x5e
jne 0x40ae16
mov ecx, dword [esp + 0x28]
xor edx, edx
cmp dword [ebx + 0x14], edx
pop edi
sete dl
mov dword [ebx + 0x14], edx
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x18]
push ecx
lea edx, [esp + 0x14]
push ebp
push edx
mov dword [esp + 0x1c], eax
call fcn.00409120
add esp, 0xc
test eax, eax
jl 0x40aa5f
cmp dword [ebx + 0x10], eax
je 0x40ae6f
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
mov dword [ebx], 4
mov dword [ebx + 0x10], eax
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [ebx + 0xc]
mov ecx, dword [edi]
push eax
call ecx
mov ecx, dword [esp + 0x2c]
add esp, 4
mov esi, eax
add esi, dword [ebx + 0xc]
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x28]
mov dword [ebx], 0xc
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
test byte [edx], 2
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 5
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, edx
test byte [eax], 4
jmp 0x40a3c4
mov ecx, edx
test byte [ecx], 0x10
je case.0x40a247.11
mov dword [ebx + 0x10], 1
mov dword [ebx], 0xa
mov dword [ebx + 0x14], 0xffffffff
jmp 0x40af55
test byte [edx], 0x40
je case.0x40a247.11
mov dword [ebx], 0xa
mov dword [ebx + 0x10], 0
mov dword [ebx + 0x14], 1
jmp 0x40af55
mov eax, edx
test dword [eax], 0x100
je case.0x40a247.11
mov ecx, dword [esp + 0x30]
push ecx
lea edx, [esp + 0x14]
push ebx
push edx
mov eax, ebp
call fcn.00408f10
add esp, 0xc
test eax, eax
jl 0x40aa5f
je 0x40af51
cmp eax, 2
jne 0x40aa53
mov eax, dword [esp + 0x2c]
test dword [eax + 8], 0x200
jne 0x40afa1
mov esi, dword [esp + 0x10]
cmp esi, ebp
jae 0x40affd
mov ecx, dword [edi + 0x14]
push ebp
push esi
call ecx
add esp, 8
cmp eax, 0x3f
jne 0x40afa5
mov edx, dword [esp + 0x2c]
test dword [edx], 0x2000000
je 0x40afa5
mov eax, dword [edi + 0x14]
push ebp
push esi
call eax
mov ecx, dword [edi]
push esi
call ecx
mov ecx, dword [esp + 0x34]
add esp, 0xc
add esi, eax
xor eax, eax
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], eax
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov esi, dword [esp + 0x10]
cmp esi, ebp
jae 0x40affd
mov edx, dword [edi + 0x14]
push ebp
push esi
call edx
add esp, 8
cmp eax, 0x2b
jne 0x40affd
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 4]
test al, 0x10
je 0x40afc8
cmp dword [ebx], 0xb
jne 0x40afd1
test al, 0x20
je 0x40affd
cmp dword [ebx], 0xb
jne 0x40affd
mov ecx, dword [edi + 0x14]
push ebp
push esi
call ecx
mov edx, dword [edi]
push esi
call edx
mov ecx, dword [esp + 0x34]
add esp, 0xc
add esi, eax
mov eax, 1
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], eax
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, dword [esp + 0x28]
pop edi
mov dword [ebx + 0x18], 1
mov dword [ebx + 0x1c], 0
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, edx
test dword [eax], 0x400
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 0xd
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x2c]
test dword [ecx], 0x1000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 0xe
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
test dword [edx], 0x1000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 0xf
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, edx
test dword [eax], 0x800000
je case.0x40a247.11
mov ecx, dword [esp + 0x30]
mov dword [ebx], 9
mov edx, dword [ecx]
mov ecx, dword [esp + 0x28]
and dl, 8
movzx eax, dl
neg eax
sbb eax, eax
add eax, 2
mov dword [ebx + 0x10], eax
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov ecx, edx
test dword [ecx], 0x800000
je case.0x40a247.11
mov edx, dword [esp + 0x30]
mov dword [ebx], 9
mov eax, dword [edx]
and al, 8
movzx ecx, al
neg ecx
sbb ecx, ecx
and ecx, 0xfffffff0
add ecx, 0x20
mov dword [ebx + 0x10], ecx
mov ecx, dword [esp + 0x28]
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
test dword [edx], 0x20000
je case.0x40a247.11
mov ecx, dword [esp + 0x28]
mov dword [ebx], 0x10
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
mov edx, dword [esp + 0x30]
cmp ecx, dword [edx + 0x20]
jbe case.0x40a247.11
mov eax, edx
push eax
call fcn.004098b0
mov ecx, dword [esp + 0x2c]
add esp, 4
pop edi
mov dword [ecx], esi
mov eax, dword [ebx]
pop esi
pop ebp
pop ebx
add esp, 0x10
ret