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

Disassembly:
mov eax, 0x3da0
call fcn.00493120
jmp 0x4174ea
push ebx
push ebp
push esi
xor esi, esi
push edi
mov dword [esp + 0x2c], esi
mov ecx, dword [eax + 0xc944]
cmp ecx, esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x70], esi
mov dword [esp + 0x74], esi
mov edi, 1
jne 0x40e3a2
mov ecx, dword [eax + 0xbb8c]
mov dword [esp + 0x40], esi
cmp ecx, esi
je 0x40e3a6
mov dword [esp + 0x40], edi
or ebp, 0xffffffff
mov ebx, 2
mov dword [esp + 0x3c], esi
mov dword [esp + 0x58], ebp
mov dword [esp + 0x54], ebp
lea ecx, [esp + 0x78]
add eax, 0xb4d8
mov edx, ebx
mov dword [ecx], eax
add eax, 0x34
add ecx, 4
dec edx
jne 0x40e3c5
push 0x3c
call fcn.00482b00
mov dword [0x4a616c], esi
call fcn.0042b350
call fcn.00447e60
call fcn.00448140
call fcn.0042a170
call fcn.0042a4f0
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0xab28]
push ecx
call fcn.0040b060
mov edx, dword [0x4b5b4c]
push esi
mov eax, dword [edx + 0x5ccc]
push eax
call fcn.00486bb0
push esi
call fcn.00487680
mov ecx, dword [0x4b5b4c]
lea edx, [esp + 0x4fc]
push 0x3538
push edx
nop
nop
nop
nop
nop
nop
nop
call fcn.00418f20
lea eax, [esp + 0x1bc]
push 0x3c10
push eax
call fcn.00418f20
lea ecx, [esp + 0x1c4]
lea edx, [esp + 0x364]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x3ddc]
mov dword [esp + 0x74], edx
mov dword [esp + 0x3a4c], ebp
mov eax, dword [esp + ecx*4 + 0x70]
add esp, 0x24
mov ebp, 3
mov dword [eax], esi
mov edx, dword [0x4b5b4c]
mov dword [edx + 0x26b8], esi
mov edx, dword [0x4b5b4c]
mov dword [edx + 0x26bc], esi
mov edx, dword [0x4b5b4c]
mov dword [edx + 0x26a4], esi
mov edx, dword [esp + 0x3db4]
cmp edx, 8
ja case.default.0x40e4b7
jmp dword [edx*4 + 0x4109c8]
mov edx, edi
mov dword [eax + 0x28], ebx
sub edx, ecx
mov dword [eax + 0x2c], ecx
mov dword [eax + 0x30], esi
mov dword [eax + 0x34], edi
mov dword [eax + 0x50], ebp
mov dword [eax + 0x54], edx
mov dword [eax + 0x58], esi
mov dword [eax + 0x5c], edi
mov dword [eax + 0x78], 5
mov dword [eax + 0x190], 4
mov eax, dword [0x4b5b4c]
inc ecx
mov dword [eax + 0x26b8], ecx
jmp case.default.0x40e4b7
mov eax, 4
mov edx, 5
mov dword [esp + 0x1c8], ebx
mov dword [esp + 0x1cc], esi
mov dword [esp + 0x1d0], esi
mov dword [esp + 0x1d4], edi
mov dword [esp + 0x1f0], eax
mov dword [esp + 0x218], edx
mov dword [esp + 0x330], eax
mov dword [esp + 0x3e0], ebx
mov dword [esp + 0x3e4], edi
mov dword [esp + 0x3e8], esi
mov dword [esp + 0x3ec], edi
mov dword [esp + 0x408], eax
mov dword [esp + 0x430], edx
mov dword [esp + 0x4d0], 7
jmp case.default.0x40e4b7
mov ebp, 0xb
lea edx, [eax + 0x50]
mov dword [eax + 0x28], edi
mov dword [eax + 0x3c], esi
mov dword [eax + 0x40], ebp
mov dword [eax + 0x48], ecx
mov dword [eax + 0x44], edi
mov dword [eax + 0x4c], edx
mov dword [eax + 0x50], ebx
mov dword [eax + 0x54], ecx
mov dword [eax + 0x58], edi
mov dword [eax + 0x60], esi
mov dword [eax + 0x5c], ebx
mov edx, edi
mov dword [eax + 0x90], ebp
sub edx, ecx
lea ebp, [eax + 0xa0]
mov dword [eax + 0x78], edi
mov dword [eax + 0x8c], esi
mov dword [eax + 0x98], edx
mov dword [eax + 0x94], edi
mov dword [eax + 0x9c], ebp
mov dword [eax + 0xa0], 3
mov dword [eax + 0xa4], edx
mov dword [eax + 0xa8], edi
mov dword [eax + 0xb0], ebx
mov dword [eax + 0xac], ebx
mov dword [eax + 0xc8], 5
mov dword [eax + 0x190], 6
mov eax, dword [0x4b5b4c]
inc ecx
mov dword [eax + 0x26b8], ecx
jmp case.default.0x40e4b7
lea ecx, [esp + 0x1f0]
mov ebp, 0xb
mov dword [esp + 0x1ec], ecx
mov eax, 4
mov edx, 5
lea ecx, [esp + 0x430]
mov dword [esp + 0x1c8], edi
mov dword [esp + 0x1dc], esi
mov dword [esp + 0x1e0], ebp
mov dword [esp + 0x1e8], esi
mov dword [esp + 0x1e4], edi
mov dword [esp + 0x1f0], ebx
mov dword [esp + 0x1f4], esi
mov dword [esp + 0x1f8], edi
mov dword [esp + 0x200], esi
mov dword [esp + 0x1fc], ebx
mov dword [esp + 0x218], eax
mov dword [esp + 0x240], edx
mov dword [esp + 0x330], edx
mov dword [esp + 0x408], edi
mov dword [esp + 0x41c], esi
mov dword [esp + 0x420], ebp
mov dword [esp + 0x428], edi
mov dword [esp + 0x424], edi
mov dword [esp + 0x42c], ecx
mov dword [esp + 0x430], ebx
mov dword [esp + 0x434], edi
mov dword [esp + 0x438], edi
mov dword [esp + 0x440], esi
mov dword [esp + 0x43c], ebx
mov dword [esp + 0x458], eax
mov dword [esp + 0x480], edx
mov dword [esp + 0x4d0], 9
jmp case.default.0x40e4b7
mov edx, edi
lea ebp, [eax + 0x78]
sub edx, ecx
mov dword [eax + 0x28], ebx
mov dword [eax + 0x2c], ecx
mov dword [eax + 0x30], edi
mov dword [eax + 0x38], edi
mov dword [eax + 0x34], ebx
mov dword [eax + 0x50], edi
mov dword [eax + 0x64], esi
mov dword [eax + 0x68], 0xb
mov dword [eax + 0x70], edx
mov dword [eax + 0x6c], edi
mov dword [eax + 0x74], ebp
mov dword [eax + 0x7c], edx
mov edx, 5
mov dword [eax + 0x78], 3
mov dword [eax + 0x80], edi
mov dword [eax + 0x88], ebx
mov dword [eax + 0x84], ebx
mov dword [eax + 0xa0], edx
mov dword [eax + 0x190], edx
mov edx, dword [0x4b5b4c]
inc ecx
mov dword [edx + 0x26b8], ecx
jmp case.default.0x40e4b7
lea edx, [eax + 0x50]
mov dword [eax + 0x28], edi
mov dword [eax + 0x3c], esi
mov dword [eax + 0x40], 0xb
mov dword [eax + 0x48], ecx
mov dword [eax + 0x44], esi
mov dword [eax + 0x4c], edx
mov dword [eax + 0x50], ebx
mov dword [eax + 0x54], ecx
mov dword [eax + 0x58], edi
mov dword [eax + 0x60], esi
mov dword [eax + 0x5c], ebx
mov edx, edi
mov dword [eax + 0x90], ebp
sub edx, ecx
lea ebp, [eax + 0xa0]
mov dword [eax + 0x78], edi
mov dword [eax + 0x8c], esi
mov dword [eax + 0x98], edx
mov dword [eax + 0x94], esi
mov dword [eax + 0x9c], ebp
mov dword [eax + 0xa0], 3
mov dword [eax + 0xa4], edx
mov dword [eax + 0xa8], edi
mov dword [eax + 0xb0], ebx
mov dword [eax + 0xac], ebx
mov dword [eax + 0xc8], 4
nop
mov dword [eax + 0xf0], 5
mov dword [eax + 0x190], 7
mov eax, dword [0x4b5b4c]
inc ecx
mov dword [eax + 0x26b8], esi
mov edx, dword [0x4b5b4c]
mov dword [edx + 0x26bc], ecx
mov eax, dword [0x4b5b4c]
mov dword [eax + 0x26a4], edi
jmp case.default.0x40e4b7
mov dword [eax + 0x28], ebx
mov dword [eax + 0x2c], ecx
mov dword [eax + 0x30], edi
mov dword [eax + 0x38], edi
mov dword [eax + 0x34], ebx
mov edx, edi
mov dword [eax + 0x68], ebp
sub edx, ecx
lea ebp, [eax + 0x78]
mov dword [eax + 0x50], edi
mov dword [eax + 0x64], esi
mov dword [eax + 0x70], edx
mov dword [eax + 0x6c], esi
mov dword [eax + 0x74], ebp
mov dword [eax + 0x78], 3
mov dword [eax + 0x7c], edx
mov dword [eax + 0x80], edi
mov dword [eax + 0x88], ebx
mov dword [eax + 0x84], ebx
mov dword [esp + 0x240], 4
mov dword [eax + 0xc8], 4
mov dword [eax + 0x190], 6
mov edx, dword [0x4b5b4c]
inc ecx
mov dword [edx + 0x26b8], esi
mov eax, dword [0x4b5b4c]
mov dword [eax + 0x26bc], ecx
mov ecx, dword [0x4b5b4c]
mov dword [ecx + 0x26a4], edi
jmp case.default.0x40e4b7
mov edx, edi
mov dword [eax + 0x28], ebx
sub edx, ecx
mov dword [eax + 0x2c], ecx
mov dword [eax + 0x30], esi
mov dword [eax + 0x34], edi
mov dword [eax + 0x54], edx
mov dword [eax + 0x50], ebx
mov dword [eax + 0x58], esi
mov dword [eax + 0x5c], edi
mov edx, 5
mov dword [eax + 0x78], 4
mov dword [eax + 0xa0], edx
mov dword [eax + 0x190], edx
mov eax, dword [0x4b5b4c]
mov dword [eax + 0x26a4], ebp
jmp case.default.0x40e4b7
lea edx, [eax + 0x50]
mov ebp, 0xb
mov dword [eax + 0x4c], edx
mov edx, edi
mov dword [eax + 0x28], edi
mov dword [eax + 0x3c], esi
mov dword [eax + 0x40], ebp
mov dword [eax + 0x48], ecx
mov dword [eax + 0x44], esi
mov dword [eax + 0x54], ecx
sub edx, ecx
lea ecx, [eax + 0xa0]
mov dword [eax + 0x50], ebx
mov dword [eax + 0x58], esi
mov dword [eax + 0x5c], edi
mov dword [eax + 0x78], edi
mov dword [eax + 0x8c], esi
mov dword [eax + 0x90], ebp
mov dword [eax + 0x98], edx
mov dword [eax + 0x94], esi
mov dword [eax + 0x9c], ecx
mov dword [eax + 0xa0], ebx
mov dword [eax + 0xa4], edx
mov dword [eax + 0xa8], esi
mov dword [eax + 0xac], edi
mov dword [eax + 0xc8], 4
mov dword [eax + 0xf0], 5
mov dword [eax + 0x190], 7
mov edx, dword [0x4b5b4c]
mov dword [edx + 0x26a4], ebx
lea eax, [esp + 0x3b20]
mov ebp, ebx
mov ecx, 4
or edx, 0xffffffff
mov dword [eax + 4], edx
mov dword [eax], edx
mov dword [eax + 8], edx
add eax, 0x20
dec ecx
jne 0x40e98e
dec ebp
jne 0x40e989
lea eax, [esp + 0x3c2c]
mov dword [eax], 4
add eax, 0x10
dec ebx
jne 0x40e9a9
mov eax, dword [0x4b5b4c]
xor ecx, ecx
cmp dword [eax + 0xcd4], esi
jle 0x40e9ee
xor edx, edx
mov eax, dword [eax + 0xcd0]
add eax, edx
inc ecx
add edx, 0xe30
mov ebx, dword [eax + 0xa14]
mov dword [eax + 0xe2c], ebx
mov eax, dword [0x4b5b4c]
cmp ecx, dword [eax + 0xcd4]
jl 0x40e9c6
mov ecx, dword [eax + 0xb138]
push esi
lea edx, [eax + 0xaf38]
push ecx
add eax, 0xb1d4
push edx
push eax
call fcn.0040ca10
add esp, 0x10
test eax, eax
jne 0x40ea14
call fcn.00415860
call fcn.00417400
cmp dword [esp + 0x2c], edi
je 0x410833
mov eax, dword [0x4b5b4c]
add eax, 0xb1d4
push eax
call fcn.0040c520
xor edi, edi
add esp, 4
xor esi, esi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x38], edi
call fcn.00447e60
call fcn.0042aed0
call fcn.0042b460
test eax, eax
je 0x40ea5e
call fcn.0042b3f0
mov dword [esp + 0x2c], eax
call fcn.00448120
test eax, eax
je 0x40ea70
call fcn.004480d0
mov dword [esp + 0x38], eax
lea ecx, [esp + 0x38]
lea edx, [esp + 0x2c]
push ecx
push edx
call fcn.00415550
add esp, 8
call fcn.0042a480
test eax, eax
je 0x40ea92
call fcn.0042a370
mov esi, eax
lea eax, [esp + 0x78]
push 2
push eax
push esi
call fcn.00429a20
mov ecx, dword [0x4b5b4c]
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
add esp, 0xc
cmp dword [ecx + 0xbb8c], edi
je 0x40eae6
mov ecx, dword [esp + 0x2c]
cmp ecx, edi
je 0x40eac5
test ch, 1
je 0x40ead6
mov ecx, dword [esp + 0x38]
cmp ecx, edi
je 0x40ead2
test ch, 1
je 0x40ead6
cmp eax, edi
je 0x40eae6
mov dword [esp + 0x2c], 1
mov dword [esp + 0x38], edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x18], edi
mov edx, dword [esp + 0x18]
lea eax, [edx + edx*2]
lea ecx, [edx + eax*4]
lea eax, [edx*8]
sub eax, edx
shl ecx, 5
lea eax, [edx + eax*4]
xor esi, esi
lea ecx, [esp + ecx + 0x1a0]
mov dword [esp + 0x1c], ecx
lea edi, [esp + eax*4 + 0x3a30]
mov eax, dword [ecx + 0x194]
mov ebx, dword [ecx + 0x190]
cmp eax, ebx
mov dword [esp + 0x24], 0xffffffff
jge 0x40fa39
lea edx, [eax + eax*4]
xor ebx, ebx
mov dword [esp + 0x10], ebx
lea ebp, [ecx + edx*8]
mov edx, dword [ecx + 0x198]
mov dword [ecx + 0x198], esi
mov dword [esp + 0x28], ebp
mov ecx, dword [ebp]
cmp ecx, 6
ja case.default.0x40eb5b
jmp dword [ecx*4 + 0x4109ec]
mov ebx, dword [esp + 0x18]
xor ebp, ebp
cmp edx, ebp
lea eax, [ebx + ebx*4]
lea eax, [eax + eax*8]
lea esi, [esp + eax*4 + 0x3c44]
je 0x40eb8f
mov ecx, dword [esp + 0x28]
push ebx
lea edx, [esp + 0x1a4]
push ecx
push edx
call fcn.00412cb0
add esp, 0xc
mov eax, dword [0x4b5b4c]
cmp dword [eax + 0x5cbc], ebp
jne 0x40ede5
mov ecx, dword [esp + 0x48]
cmp ecx, ebx
jne 0x40ed1a
mov eax, dword [esi + 0xc]
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x14], eax
mov dword [esp + 0x4c], ebx
lea edx, [eax + eax*4]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x24], 2
mov dword [esp + 0x10], 8
mov eax, dword [esi + edx*4 + 0x1c]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 8]
cmp eax, ebp
je 0x40ebf3
lea ecx, [esp + 0x10]
lea edx, [esp + 0x24]
push ecx
push edx
call fcn.00418790
add esp, 8
test bl, 1
je 0x40ec1a
mov eax, dword [esi + 0xc]
dec eax
mov dword [esi + 0xc], eax
jns 0x40ec1a
mov eax, dword [0x4b54cc]
cmp dword [eax + 0x5f4], ebp
je 0x40ec17
mov ecx, dword [esi + 0x10]
dec ecx
mov dword [esi + 0xc], ecx
jmp 0x40ec1a
mov dword [esi + 0xc], ebp
test bl, 4
je 0x40ec46
mov eax, dword [esi + 0xc]
inc eax
mov dword [esi + 0xc], eax
mov ecx, eax
mov eax, dword [esi + 0x10]
cmp ecx, eax
jl 0x40ec46
mov edx, dword [0x4b54cc]
cmp dword [edx + 0x5f4], ebp
je 0x40ec42
mov dword [esi + 0xc], ebp
jmp 0x40ec46
dec eax
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0xc]
lea eax, [eax + eax*4]
mov edx, dword [esi + eax*4 + 0x24]
mov ebp, dword [esi + eax*4 + 0x20]
lea eax, [esi + eax*4 + 0x1c]
cmp edx, ebp
jle 0x40ec86
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x4c]
test ecx, ebx
je 0x40ec71
mov ecx, dword [eax]
cmp ecx, edx
jge 0x40ec71
inc ecx
mov dword [eax], ecx
mov ebx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x10]
test ebx, ecx
je 0x40ec86
mov ecx, dword [eax]
cmp ecx, ebp
jle 0x40ec86
dec ecx
mov dword [eax], ecx
test ebx, 0x7f0
je 0x40ec97
mov edx, dword [esi + 0xc]
mov dword [esp + 0x24], edx
jmp 0x40ec9f
mov dword [esp + 0x24], 0xffffffff
mov eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x14]
cmp ecx, eax
je 0x40ecd0
mov eax, dword [esi + 8]
push 0
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*4]
lea edx, [eax + eax*4]
mov eax, dword [0x4b54cc]
mov ecx, dword [eax + edx*4 + 0x748]
lea eax, [eax + edx*4]
push ecx
mov edx, dword [eax + 0x744]
jmp 0x40ed01
lea edx, [eax + eax*4]
mov eax, dword [esp + 0x34]
cmp eax, dword [esi + edx*4 + 0x1c]
je 0x40ed16
mov eax, dword [esi + 8]
push 0
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*4]
lea edx, [eax + eax*4]
mov eax, dword [0x4b54cc]
mov ecx, dword [eax + edx*4 + 0x750]
lea eax, [eax + edx*4]
push ecx
mov edx, dword [eax + 0x74c]
mov eax, dword [0x4b5b4c]
push edx
mov ecx, dword [eax + 0xa8f0]
push ecx
call fcn.0044e2d0
add esp, 0x10
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x40]
test eax, eax
je 0x40edf1
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x19c]
cmp eax, 0x3c
jge 0x40edd0
lea ecx, [eax + ebx*4]
and ecx, 0x80000007
jns 0x40ed49
dec ecx
or ecx, 0xfffffff8
inc ecx
jne 0x40edd0
mov ebp, dword [esi + 0x10]
call fcn.00492f37
cdq
lea ecx, [ebp - 1]
idiv ecx
mov eax, dword [esi + 0xc]
lea eax, [edx + eax + 1]
cdq
idiv ebp
mov dword [esi + 0xc], edx
lea ecx, [edx + edx*4]
mov eax, dword [esi + ecx*4 + 0x24]
lea ebp, [esi + ecx*4 + 0x1c]
mov ecx, dword [esi + ecx*4 + 0x20]
mov dword [ebp], eax
cmp eax, ecx
jle 0x40ed95
mov ebx, ecx
call fcn.00492f37
mov ecx, dword [ebp + 8]
sub ecx, ebx
cdq
inc ecx
idiv ecx
add edx, ebx
mov dword [ebp], edx
mov eax, dword [esi + 8]
mov ecx, dword [0x4b54cc]
push 0
lea edx, [eax + eax*8]
lea eax, [eax + edx*4]
lea eax, [eax + eax*4]
mov edx, dword [ecx + eax*4 + 0x748]
lea eax, [ecx + eax*4]
mov ecx, dword [0x4b5b4c]
push edx
mov eax, dword [eax + 0x744]
mov edx, dword [ecx + 0xa8f0]
push eax
push edx
call fcn.0044e2d0
add esp, 0x10
mov eax, dword [esp + 0x1c]
cmp dword [eax + 0x19c], 0x12c
jl 0x40edf1
mov eax, dword [esi + 0xc]
jmp 0x40edf5
mov edx, dword [esi + 0xc]
mov dword [esp + 0x24], edx
jmp 0x40ed1a
mov eax, dword [esp + 0x24]
cmp eax, 0xffffffff
je case.default.0x40eb5b
mov eax, dword [esi + 4]
test eax, eax
jne 0x40ef94
mov ecx, dword [0x4b5b4c]
mov eax, dword [ecx + 0x5cbc]
test eax, eax
jne 0x40ee4d
mov eax, dword [esi + 8]
mov ecx, dword [ecx + 0xa8f0]
push 0
lea edx, [eax + eax*8]
lea eax, [eax + edx*4]
mov edx, dword [0x4b54cc]
lea eax, [eax + eax*4]
lea eax, [edx + eax*4]
mov edx, dword [eax + 0x758]
mov eax, dword [eax + 0x754]
push edx
push eax
push ecx
call fcn.0044e2d0
add esp, 0x10
mov eax, dword [esi + 0xc]
inc eax
lea edx, [eax + eax*4]
mov eax, dword [esi + edx*4]
cmp eax, 3
ja case.default.0x40ee60
jmp dword [eax*4 + 0x410a08]
mov eax, dword [esp + 0x28]
mov ebx, dword [eax + 0x24]
test ebx, ebx
jne 0x40eea1
push 0x3bf
push 0x4a2920
call fcn.00418f50
add esp, 4
push eax
push 0x4a2940
push 0x4b6d60
call fcn.00492257
push 0x4b6d60
call fcn.004187d0
add esp, 0x14
mov dword [ebx + 8], 0
mov dword [ebx + 0xc], 1
jmp 0x40ef69
mov ecx, dword [esp + 0x28]
mov ebp, dword [ecx + 0x24]
test ebp, ebp
jne 0x40eeee
push 0x3c7
push 0x4a2960
call fcn.00418f50
add esp, 4
push eax
push 0x4a2980
push 0x4b6d60
call fcn.00492257
push 0x4b6d60
call fcn.004187d0
add esp, 0x14
mov dword [ebp + 8], 1
mov dword [ebp + 0x10], 0
mov dword [ebp + 0xc], 2
jmp 0x40ef69
push str.Not_yet_implemented
jmp 0x40ef61
mov edx, dword [esp + 0x28]
mov ebx, dword [edx + 0x24]
test ebx, ebx
jne 0x40ef46
push 0x3d3
push 0x4a29b4
call fcn.00418f50
add esp, 4
push eax
push 0x4a29d4
push 0x4b6d60
call fcn.00492257
push 0x4b6d60
call fcn.004187d0
add esp, 0x14
mov dword [ebx + 8], 3
mov eax, dword [esi + 0xc]
lea eax, [eax + eax*4]
mov ecx, dword [esi + eax*4 + 0x1c]
mov dword [ebx + 0xc], ecx
jmp 0x40ef69
push 0x4a29f4
call fcn.00415a70
add esp, 4
mov eax, dword [esi + 8]
mov ecx, dword [0x4b54cc]
lea edx, [eax + eax*8]
lea eax, [eax + edx*4]
mov edx, dword [esi + 0xc]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*4 + 0x8d4]
mov dword [eax], edx
mov ecx, dword [esi + 0xc]
lea ecx, [ecx + ecx*4]
mov edx, dword [esi + ecx*4 + 0x1c]
mov dword [eax + 4], edx
mov ecx, dword [esp + 0x1c]
mov dword [esi], 0
mov eax, dword [ecx + 0x194]
mov edx, dword [ecx + 0x190]
cmp eax, edx
jl 0x40efb5
xor ecx, ecx
jmp 0x40fa08
inc eax
jmp 0x40f9e8
test edx, edx
je 0x40efdb
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x28]
push ecx
lea edx, [esp + 0x1a4]
push esi
push edx
call fcn.00412a70
add esp, 0xc
jmp 0x40efdf
mov esi, dword [esp + 0x28]
mov ecx, dword [esi + 8]
mov eax, 1
cmp ecx, eax
jne 0x40f001
cmp dword [esi + 0xc], 2
jne 0x40f001
cmp dword [edi + 0x14], eax
jne 0x40f001
cmp dword [esi + 0x10], eax
jne 0x40f001
mov ebx, eax
mov dword [esp + 0x10], ebx
cmp dword [edi + 0x14], 0xffffffff
je case.default.0x40eb5b
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov edx, dword [edi + 8]
lea esi, [edi + 4]
lea ebp, [edi + 8]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], ecx
test ebx, ebx
mov dword [esp + 0x14], edx
xor eax, ebx
nop
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
push eax
push ebp
push esi
push ecx
push edx
call fcn.00410a40
add esp, 0x14
cmp eax, 0xffffffff
mov dword [esp + 0x24], eax
jne 0x40f096
mov ecx, dword [edi + 0x1c]
test ecx, ecx
jne 0x40f078
call fcn.00492f37
cdq
mov ecx, 0xc
idiv ecx
mov dword [esp + 0x24], edx
call fcn.00492f37
cdq
mov ecx, 0xa
idiv ecx
add edx, ecx
mov dword [edi + 0x1c], edx
jmp 0x40f096
jle 0x40f096
mov eax, dword [esp + 0x3dac]
mov ebx, dword [0x4b54cc]
cdq
idiv dword [ebx + 0x3cc]
test edx, edx
jne 0x40f096
dec ecx
mov dword [edi + 0x1c], ecx
mov edx, dword [esp + 0x34]
mov eax, dword [esi]
cmp edx, eax
jne 0x40f0ab
mov eax, dword [esp + 0x14]
mov ecx, dword [ebp]
cmp eax, ecx
je 0x40f0dc
mov ecx, dword [0x4b54cc]
mov eax, dword [esp + 0x18]
push 0
mov edx, dword [ecx + eax*4 + 0x29c]
mov eax, dword [ecx + eax*4 + 0x294]
mov ecx, dword [0x4b5b4c]
push edx
push eax
mov edx, dword [ecx + 0xa8f0]
push edx
call fcn.0044e2d0
add esp, 0x10
mov esi, dword [esi]
cmp esi, 0xffffffff
je 0x40f397
mov ebp, dword [ebp]
cmp ebp, 0xffffffff
je 0x40f397
mov ecx, dword [0x4b54c4]
mov eax, ebp
imul eax, ecx
add eax, esi
mov edx, dword [0x4b54c8]
lea eax, [eax + eax*2]
lea eax, [eax + eax*8]
lea eax, [eax + eax*4]
lea eax, [edx + eax*8]
test eax, eax
je 0x40f397
mov ebx, dword [0x4b5b4c]
cmp dword [ebx + 0xcd4], 0
jle 0x40f36e
mov ebx, dword [esp + 0x40]
test ebx, ebx
jne 0x40f145
cmp dword [eax], 0xfffffffe
je 0x40f145
mov dword [edi + 0xc], esi
mov dword [edi + 0x10], ebp
jmp 0x40f36e
mov eax, dword [edi + 0x10]
mov esi, dword [edi + 0xc]
imul eax, ecx
add eax, esi
lea eax, [eax + eax*2]
lea eax, [eax + eax*8]
lea eax, [eax + eax*4]
mov ebp, dword [edx + eax*8]
test ebp, ebp
jge 0x40f1af
call fcn.00492f37
mov ecx, dword [0x4b5b4c]
xor esi, esi
cdq
idiv dword [ecx + 0xcd4]
mov eax, dword [0x4b54c0]
mov ecx, dword [0x4b54c4]
imul eax, ecx
test eax, eax
mov ebp, edx
jle 0x40f1af
mov edx, dword [0x4b54c8]
cmp ebp, dword [edx]
je 0x40f19f
inc esi
add edx, 0x438
cmp esi, eax
jl 0x40f18e
jmp 0x40f1af
mov eax, esi
cdq
idiv ecx
mov eax, esi
mov dword [edi + 0xc], edx
cdq
idiv ecx
mov dword [edi + 0x10], eax
mov edx, dword [0x4b54cc]
mov esi, dword [edx + 0x3cc]
mov eax, esi
cdq
sub eax, edx
mov ebx, eax
mov eax, dword [esp + 0x3dac]
cdq
idiv esi
sar ebx, 1
imul ebx, dword [esp + 0x18]
cmp edx, ebx
jne 0x40f337
mov eax, dword [edi + 0xc]
test eax, eax
jl 0x40f1e9
mov eax, dword [edi + 0x10]
test eax, eax
jge 0x40f226
push 0x414
push 0x4a2a08
call fcn.00418f50
add esp, 4
push eax
push 0x4a2a28
push 0x4b6d60
call fcn.00492257
push 0x4b6d60
call fcn.004187d0
mov ebx, dword [0x4b54cc]
mov ecx, dword [0x4b54c4]
add esp, 0x14
jmp 0x40f22c
mov ebx, dword [0x4b54cc]
mov eax, dword [0x4b5b4c]
mov esi, dword [eax + 0xcd4]
lea edx, [esi - 1]
test edx, edx
je 0x40f264
mov esi, dword [eax + 0xcd4]
call fcn.00492f37
cdq
lea ecx, [esi - 1]
mov ebx, dword [0x4b54cc]
idiv ecx
mov ecx, dword [0x4b54c4]
lea eax, [edx + ebp + 1]
cdq
idiv esi
mov ebp, edx
test ebp, ebp
jl 0x40f26c
cmp ebp, esi
jl 0x40f2a7
push 0x41a
push 0x4a2a48
call fcn.00418f50
add esp, 4
push eax
push 0x4a2a68
push 0x4b6d60
call fcn.00492257
push 0x4b6d60
call fcn.004187d0
mov ebx, dword [0x4b54cc]
mov ecx, dword [0x4b54c4]
add esp, 0x14
mov eax, dword [0x4b54c0]
xor esi, esi
imul eax, ecx
test eax, eax
jle 0x40f2dc
mov edx, dword [0x4b54c8]
cmp ebp, dword [edx]
je 0x40f2cc
inc esi
add edx, 0x438
cmp esi, eax
jl 0x40f2bb
jmp 0x40f2dc
mov eax, esi
cdq
idiv ecx
mov eax, esi
mov dword [edi + 0xc], edx
cdq
idiv ecx
mov dword [edi + 0x10], eax
mov eax, dword [ebx + 0x2c4]
push 0
test eax, eax
mov eax, dword [esp + 0x1c]
mov edx, dword [ebx + eax*4 + 0x2bc]
push edx
je 0x40f314
mov ecx, dword [ebx + eax*4 + 0x2b4]
mov edx, dword [0x4b5b4c]
push ecx
mov ecx, dword [edx + 0xa8f0]
push ecx
push eax
call fcn.0044e340
add esp, 0x14
jmp 0x40f331
mov ecx, dword [0x4b5b4c]
mov eax, dword [ebx + eax*4 + 0x2b4]
push eax
mov edx, dword [ecx + 0xa8f0]
push edx
call fcn.0044e2d0
add esp, 0x10
mov ecx, dword [0x4b54c4]
mov eax, dword [edi + 0x10]
imul eax, ecx
mov ecx, dword [edi + 0xc]
add eax, ecx
mov ecx, dword [0x4b54c8]
lea eax, [eax + eax*2]
lea eax, [eax + eax*8]
lea eax, [eax + eax*4]
mov dword [ecx + eax*8], ebp
mov eax, dword [esp + 0x40]
test eax, eax
je 0x40f368
mov edx, dword [edi + 0xc]
mov eax, dword [edi + 0x10]
mov dword [edi + 4], edx
mov dword [edi + 8], eax
mov ecx, dword [0x4b54c4]
mov edx, dword [edi + 0xc]
cmp edx, 0xffffffff
je 0x40f397
mov eax, dword [edi + 0x10]
cmp eax, 0xffffffff
je 0x40f397
imul eax, ecx
add eax, edx
mov edx, dword [0x4b54c8]
lea eax, [eax + eax*2]
lea eax, [eax + eax*8]
lea ecx, [eax + eax*4]
lea ebx, [edx + ecx*8]
jmp 0x40f399
xor ebx, ebx
mov eax, dword [esp + 0x20]
mov edx, dword [edi + 4]
lea esi, [eax*4]
mov eax, dword [edi + 0x14]
mov ecx, esi
add ecx, eax
mov eax, esi
shl ecx, 5
mov dword [esp + ecx + 0x3b20], edx
mov edx, dword [edi + 0x14]
mov ecx, dword [edi + 8]
add eax, edx
shl eax, 5
mov edx, esi
mov dword [esp + eax + 0x3b24], ecx
mov ebp, dword [edi + 0x14]
mov eax, dword [edi + 0xc]
add edx, ebp
shl edx, 5
mov ecx, esi
mov dword [esp + edx + 0x3b2c], eax
mov eax, dword [edi + 0x14]
mov edx, dword [edi + 0x10]
add ecx, eax
shl ecx, 5
mov eax, esi
mov dword [esp + ecx + 0x3b30], edx
mov edx, dword [edi + 0x14]
add eax, edx
shl eax, 5
mov dword [esp + eax + 0x3b38], 1
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x40f428
mov edx, dword [edi + 0x14]
mov ecx, esi
add ecx, edx
mov edx, dword [esp + 0x18]
shl ecx, 5
mov dword [esp + ecx + 0x3b3c], edx
jmp 0x40f444
mov ecx, dword [esp + 0x18]
mov ebp, dword [edi + 0x14]
mov eax, 1
sub eax, ecx
mov ecx, esi
add ecx, ebp
shl ecx, 5
mov dword [esp + ecx + 0x3b3c], eax
cmp dword [esp + 0x24], 0xffffffff
je case.default.0x40eb5b
test ebx, ebx
je case.default.0x40eb5b
cmp dword [ebx], 0xffffffff
je case.default.0x40eb5b
mov eax, dword [0x4b54cc]
mov ecx, dword [esp + 0x18]
push 0
mov edx, dword [eax + ecx*4 + 0x2ac]
mov eax, dword [eax + ecx*4 + 0x2a4]
mov ecx, dword [0x4b5b4c]
push edx
push eax
mov edx, dword [ecx + 0xa8f0]
push edx
call fcn.0044e2d0
mov ebp, dword [edi + 0x14]
add esp, 0x10
add esi, ebp
shl esi, 5
mov dword [esp + esi + 0x3b38], 2
mov eax, dword [edi + 0x14]
lea eax, [eax + eax*4]
mov ebp, dword [edi + eax*4 + 0x24]
mov eax, ebp
shl eax, 4
add eax, ebp
lea eax, [eax + eax*4]
lea ecx, [eax + eax*4]
lea edx, [ebp + ecx*2]
lea eax, [ebp + edx*2]
lea esi, [esp + eax*4 + 0x4e8]
mov dword [esp + 0x14], esi
mov eax, dword [esi + 4]
lea ecx, [eax + eax*2]
shl ecx, 3
sub ecx, eax
mov eax, dword [edi + 0x20]
test eax, eax
lea esi, [esi + ecx*4 + 0xc]
jne 0x40f512
push 0x44a
push 0x4a2a88
call fcn.00418f50
add esp, 4
push eax
push 0x4a2aa8
push 0x4b6d60
call fcn.00492257
push 0x4b6d60
call fcn.004187d0
add esp, 0x14
cmp dword [esi + 8], 4
jl 0x40f547
push 0x44b
push 0x4a2ac8
call fcn.00418f50
add esp, 4
push eax
push 0x4a2ae8
push 0x4b6d60
call fcn.00492257
push 0x4b6d60
call fcn.004187d0
add esp, 0x14
mov eax, dword [ebx]
test eax, eax
jl 0x40f55b
mov edx, dword [0x4b5b4c]
cmp eax, dword [edx + 0xcd4]
jl 0x40f58a
push 0x44c
push 0x4a2b08
call fcn.00418f50
add esp, 4
push eax
push 0x4a2b28
push 0x4b6d60
call fcn.00492257
push 0x4b6d60
call fcn.004187d0
add esp, 0x14
mov eax, dword [edi + 0x20]
mov ecx, dword [eax + 8]
mov dword [esi], ecx
mov edx, dword [edi + 0x20]
mov eax, dword [edx + 0x10]
mov dword [esi + 4], eax
mov eax, dword [esi + 8]
mov edx, dword [ebx]
lea ecx, [eax + eax*4]
mov dword [esi + ecx*4 + 0x10], edx
mov eax, dword [esi + 8]
mov ecx, dword [esp + 0x24]
inc eax
lea eax, [eax + eax*4]
mov dword [esi + eax*4], ecx
mov eax, dword [esi + 8]
lea edx, [ebp + eax*2 + 1]
lea eax, [eax + eax*4]
mov dword [esi + eax*4 + 0xc], edx
mov eax, dword [edi + 0x14]
add eax, 2
lea ecx, [eax + eax*4]
mov eax, dword [esi + 8]
lea edx, [eax + eax*4]
mov eax, dword [edi + ecx*4]
mov dword [esi + edx*4 + 0x1c], eax
mov eax, dword [edi + 0x14]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 8]
lea edx, [eax + eax*4]
mov eax, dword [edi + ecx*4 + 0x2c]
mov dword [esi + edx*4 + 0x18], eax
mov eax, dword [esi + 8]
lea ecx, [eax + eax*4]
lea eax, [eax + eax*4 + 5]
mov edx, dword [esi + ecx*4 + 0x10]
mov ecx, dword [esi + eax*4]
push edx
push ecx
call fcn.00412e20
mov ecx, dword [esi + 8]
add esp, 8
inc ecx
lea edx, [ecx + ecx*4]
mov dword [esi + edx*4], eax
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0x26b8]
test ecx, ecx
je 0x40f65f
mov ecx, dword [esp + 0x28]
mov edx, dword [edi + 0x10]
mov ebx, dword [0x4b54cc]
mov dword [esp + 0x10], edx
mov eax, dword [ecx + 4]
mov ecx, dword [edi + 0x14]
mov edx, dword [edi + 0xc]
mov dword [esp + 0x20], ecx
lea ecx, [ecx + eax*4 + 0x9c]
mov dword [ebx + ecx*4], edx
mov ecx, dword [esp + 0x20]
lea edx, [ecx + eax*4 + 0x94]
mov eax, dword [0x4b54cc]
mov ecx, dword [esp + 0x10]
jmp 0x40f69b
mov edx, dword [esp + 0x28]
mov ecx, dword [edi + 0x14]
mov ebx, dword [0x4b54cc]
mov dword [esp + 0x20], ecx
mov eax, dword [edx + 4]
mov edx, dword [edi + 8]
mov dword [esp + 0x10], edx
mov edx, dword [edi + 4]
lea ecx, [ecx + eax*4 + 0x9c]
mov dword [ebx + ecx*4], edx
mov ecx, dword [esp + 0x20]
lea edx, [ecx + eax*4 + 0x94]
mov eax, dword [0x4b54cc]
mov ecx, dword [esp + 0x10]
mov dword [eax + edx*4], ecx
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 0x10]
mov dword [esp + 0x20], eax
xor ecx, ecx
mov dword [esp + 0x34], edx
mov dword [esp + 0x10], 0x3e7
xor eax, eax
lea ebx, [esp + 0x3c28]
mov edx, dword [ebx]
cmp edx, dword [esp + 0x10]
jge 0x40f6cd
mov ecx, eax
mov dword [esp + 0x10], edx
inc eax
add ebx, 0x10
cmp eax, 2
jl 0x40f6bf
mov edx, ecx
shl edx, 4
shl ecx, 4
lea eax, [esp + edx + 0x3b18]
mov edx, dword [esp + edx + 0x3c2c]
inc edx
mov dword [esp + ecx + 0x3c28], edx
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x34]
mov dword [eax + 0x108], ecx
mov dword [eax + 0x10c], edx
mov eax, dword [0x4b5b4c]
mov edx, dword [esp + 0x14]
mov ecx, dword [eax + 0xd40]
test ecx, ecx
je 0x40f73e
mov eax, dword [edx + 4]
test eax, eax
jne 0x40f73e
mov eax, dword [esi + 8]
lea ecx, [eax + eax*4]
mov edx, dword [esi + ecx*4 + 0x10]
push edx
call fcn.0044ab30
add esp, 4
call fcn.0044ac00
mov edx, dword [esp + 0x14]
mov ecx, dword [esi + 8]
inc ecx
mov dword [esi + 8], ecx
mov eax, dword [edi + 0x14]
inc eax
mov dword [edi + 0x14], eax
lea eax, [eax + eax*4]
lea ecx, [edi + eax*4]
mov eax, dword [edi + eax*4 + 0x30]
cmp eax, 0xffffffff
je 0x40f761
mov dword [edi + 0xc], eax
mov dword [edi + 4], eax
mov ecx, dword [ecx + 0x34]
cmp ecx, 0xffffffff
je 0x40f76f
mov dword [edi + 0x10], ecx
mov dword [edi + 8], ecx
mov ecx, dword [edx + 8]
inc ecx
mov dword [edx + 8], ecx
mov eax, dword [esi]
cmp eax, 3
jne 0x40f795
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 0x18]
cmp ecx, eax
jge 0x40f78a
inc dword [edx + 4]
cmp dword [esi], 3
jne 0x40f795
mov dword [esi], 0
mov eax, dword [edi + 0x14]
mov ecx, dword [edi + 0x18]
cmp eax, ecx
jl case.default.0x40eb5b
mov ebx, dword [edx + 4]
mov ecx, dword [esp + 0x1c]
inc ebx
mov dword [edx + 4], ebx
mov edx, 1
mov dword [esp + ebp*4 + 0x3a20], edx
mov eax, dword [ecx + 0x194]
cmp eax, dword [ecx + 0x190]
jl 0x40f7cf
xor ecx, ecx
jmp 0x40fa08
inc eax
mov dword [ecx + 0x198], edx
mov dword [ecx + 0x194], eax
lea edx, [eax + eax*4]
mov dword [ecx + 0x19c], 0
lea ecx, [ecx + edx*8]
jmp 0x40fa08
mov ebx, dword [esp + 0x28]
mov edx, dword [ebx + 8]
mov eax, dword [ebx + 4]
cmp edx, 3
mov ecx, eax
jne 0x40f828
shl ecx, 4
add ecx, eax
mov ebp, 1
push ebp
push 0
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*2]
lea ecx, [eax + edx*2]
mov edx, dword [ebx + 0xc]
push edx
lea esi, [esp + ecx*4 + 0x4f4]
jmp 0x40f84b
shl ecx, 4
add ecx, eax
mov ebp, 1
lea ecx, [ecx + ecx*4]
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2]
lea ecx, [eax + ecx*2]
lea esi, [esp + ecx*4 + 0x4e8]
mov ecx, dword [ebx + 0xc]
push ecx
push edx
push ebp
push eax
push esi
call fcn.00412c30
mov eax, dword [ebx + 8]
add esp, 0x14
cmp eax, ebp
jne 0x40f862
mov edx, dword [ebx + 0x10]
mov dword [esi + 0x10], edx
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x1c]
mov dword [esp + eax*4 + 0x3a20], ebp
mov eax, dword [ecx + 0x194]
cmp eax, dword [ecx + 0x190]
jl 0x40f885
xor ecx, ecx
jmp 0x40fa08
inc eax
mov dword [ecx + 0x198], ebp
mov dword [ecx + 0x194], eax
jmp 0x40f7dc
test edx, edx
je 0x40f8a6
mov dword [esp + 0x3c40], 1
mov eax, dword [esp + 0x40]
test eax, eax
je 0x40f8c5
or ecx, 0xffffffff
mov dword [esp + 0x3a2c], 1
mov dword [esp + 0x3a28], ecx
jmp 0x40f8cc
mov ecx, dword [esp + 0x3a28]
mov eax, dword [esp + 0x3a2c]
mov esi, ecx
test eax, eax
jne 0x40f9b5
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 0x18]
cmp edx, ebx
mov eax, ecx
je 0x40f8ef
xor eax, eax
jmp 0x40f939
mov edx, dword [esp + 0x44]
test dl, 8
je 0x40f90c
lea eax, [ecx - 1]
cmp eax, 0xffffffff
jge 0x40f90c
mov eax, dword [0x4b5b4c]
mov eax, dword [eax + 0x26a0]
dec eax
test dl, 2
je 0x40f923
mov ecx, dword [0x4b5b4c]
inc eax
cmp eax, dword [ecx + 0x26a0]
jl 0x40f923
or eax, 0xffffffff
mov ecx, eax
mov eax, edx
and eax, 0x7f0
mov dword [esp + 0x3a28], ecx
neg eax
sbb eax, eax
neg eax
cmp esi, ecx
mov dword [esp + 0x3a2c], eax
je 0x40f96e
mov eax, dword [0x4b54cc]
mov ecx, dword [0x4b5b4c]
push 0
mov edx, dword [eax + 0x2cc]
mov eax, dword [eax + 0x2c8]
push edx
mov edx, dword [ecx + 0xa8f0]
push eax
push edx
call fcn.0044e2d0
add esp, 0x10
mov eax, dword [esp + 0x3a2c]
test eax, eax
je case.default.0x40eb5b
mov eax, dword [0x4b54cc]
push 0
mov ecx, dword [eax + 0x2d4]
mov edx, dword [eax + 0x2d0]
mov eax, dword [0x4b5b4c]
push ecx
push edx
mov ecx, dword [eax + 0xa8f0]
push ecx
call fcn.0044e2d0
mov eax, dword [esp + 0x3a3c]
add esp, 0x10
test eax, eax
je case.default.0x40eb5b
mov ecx, dword [esp + 0x1c]
mov eax, dword [ecx + 0x194]
mov edx, dword [ecx + 0x190]
cmp eax, edx
jl 0x40f9cd
xor ecx, ecx
jmp 0x40fa08
inc eax
mov dword [ecx + 0x198], 1
mov dword [ecx + 0x194], eax
jmp 0x40f7dc
mov ecx, dword [esp + 0x1c]
inc eax
mov dword [ecx + 0x194], eax
lea eax, [eax + eax*4]
mov dword [ecx + 0x198], 1
mov dword [ecx + 0x19c], 0
lea ecx, [ecx + eax*8]
xor eax, eax
test ecx, ecx
setne al
test eax, eax
je case.default.0x40eb5b
lea ecx, [esp + 0x44]
xor esi, esi
push 8
push ecx
mov dword [esp + 0x40], esi
mov dword [esp + 0x34], esi
call fcn.00418f20
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add esp, 8
jmp 0x40eb17
mov dword [esp + edx*4 + 0x70], 1
mov eax, dword [esp + 0x1c]
mov esi, dword [eax + 0x19c]
inc esi
mov dword [eax + 0x19c], esi
mov eax, dword [esp + 0x18]
inc eax
cmp eax, 2
mov dword [esp + 0x18], eax
jl 0x40eaea
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x3dac]
xor edi, edi
cmp eax, edi
je 0x40fad2
cmp dword [esp + 0x74], edi
je 0x40fad2
mov eax, dword [esp + 0x3b18]
mov ebp, 1
cmp eax, ebp
je 0x40faa0
cmp eax, 2
je 0x40faa5
mov dword [esp + 0x3b18], ebp
mov dword [esp + 0x3b1c], edi
jmp 0x40fad7
cmp eax, 2
jne 0x40fad7
cmp dword [esp + 0x54], 0xffffffff
jne 0x40fad7
cmp dword [esp + 0x3c], ebp
jne 0x40fad7
mov edx, dword [0x4b54cc]
mov dword [esp + 0x3c], 2
mov dword [esp + 0x58], ecx
mov eax, dword [edx + 0x204]
add eax, ecx
mov dword [esp + 0x54], eax
jmp 0x40fad7
mov ebp, 1
mov eax, dword [0x4b54cc]
mov esi, dword [eax + 0x200]
cmp esi, edi
jle 0x40fb06
cmp dword [esp + 0x3c], edi
jne 0x40fb06
mov eax, ecx
shl eax, 8
cdq
idiv esi
push eax
push eax
push eax
call fcn.004488f0
mov ecx, dword [esp + 0x3db8]
add esp, 0xc
mov eax, dword [0x4b54cc]
cmp ecx, dword [eax + 0x200]
jne 0x40fb17
mov dword [esp + 0x3c], ebp
mov esi, dword [eax + 0x204]
cmp esi, edi
jle 0x40fb48
cmp dword [esp + 0x3c], 2
jne 0x40fb48
mov eax, dword [esp + 0x58]
sub eax, ecx
shl eax, 8
cdq
idiv esi
add eax, 0x100
jns 0x40fb3d
xor eax, eax
push eax
push eax
push eax
call fcn.004488f0
add esp, 0xc
lea eax, [esp + 0x3c28]
mov edx, 2
mov ecx, dword [eax]
cmp ecx, edi
jle 0x40fb5d
dec ecx
mov dword [eax], ecx
add eax, 0x10
dec edx
jne 0x40fb54
mov edx, dword [esp + 0x3b1c]
mov eax, dword [esp + 0x3b18]
inc edx
dec eax
mov dword [esp + 0x3b1c], edx
jne 0x40fb99
cmp dword [esp + 0x3c28], edi
jg 0x40fb99
cmp dword [esp + 0x3c38], edi
jg 0x40fb99
mov dword [esp + 0x3b18], 2
mov eax, dword [0x4b5b4c]
cmp dword [eax + 0xb410], edi
jne 0x40fbb5
mov ecx, dword [eax + 0xa2e8]
push ecx
call fcn.00419060
add esp, 4
or eax, 0xffffffff
mov dword [esp + 0x60], edi
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x64], edi
call fcn.00448800
mov ebx, dword [0x4b54c4]
lea edx, [esp + 0x68]
lea edi, [esp + 0x68]
lea ecx, [esp + 0x3b20]
sub ebp, edx
mov dword [esp + 0x10], 2
xor esi, esi
mov edx, dword [ecx]
cmp edx, 0xffffffff
je 0x40fc1c
mov eax, dword [ecx + 4]
cmp eax, 0xffffffff
je 0x40fc1c
imul eax, ebx
add eax, edx
mov dword [ecx + 8], eax
lea eax, [esi + ebp]
add eax, edi
shl eax, 5
mov edx, dword [esp + eax + 0x3b18]
test edx, edx
je 0x40fc23
mov dword [edi], esi
jmp 0x40fc23
mov dword [ecx + 8], 0xffffffff
mov edx, dword [ecx + 0xc]
cmp edx, 0xffffffff
je 0x40fc3d
mov eax, dword [ecx + 0x10]
cmp eax, 0xffffffff
je 0x40fc3d
imul eax, ebx
add eax, edx
mov dword [ecx + 0x14], eax
jmp 0x40fc44
mov dword [ecx + 0x14], 0xffffffff
inc esi
add ecx, 0x20
cmp esi, 4
jl 0x40fbee
mov eax, dword [esp + 0x10]
add edi, 4
dec eax
mov dword [esp + 0x10], eax
jne 0x40fbec
mov edi, dword [esp + 0x30]
xor ebp, ebp
lea esi, [esp + 0x3b38]
or eax, 0xffffffff
xor ebx, ebx
cmp dword [esi - 0x18], eax
je 0x40fcec
cmp dword [esi - 0x14], eax
je 0x40fcec
mov eax, dword [esi]
cmp eax, 2
jne 0x40fc82
xor edi, edi
jmp 0x40fc89
cmp eax, 1
jne 0x40fc89
mov edi, eax
mov ecx, dword [esp + edi*4 + 0x60]
mov edx, dword [esi + 4]
lea eax, [ecx + edi*8]
lea eax, [eax + eax*2]
shl eax, 2
mov dword [esp + eax + 0x84], edx
mov dword [esp + eax + 0x80], ebp
mov dword [esp + eax + 0x88], ebx
lea eax, [ecx + 1]
cmp eax, 8
mov dword [esp + edi*4 + 0x60], eax
jle 0x40fce9
push 0x55f
push 0x4a2b64
call fcn.00418f50
add esp, 4
push eax
push 0x4a2b84
push 0x4b6d60
call fcn.00492257
push 0x4b6d60
call fcn.004187d0
add esp, 0x14
or eax, 0xffffffff
inc ebx
add esi, 0x20
cmp ebx, 4
jl 0x40fc6d
inc ebp
cmp ebp, 2
jl 0x40fc6b
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0x5ce0]
push ecx
call fcn.004048a0
mov edx, dword [0x4b5b4c]
push 0
push 0
mov eax, dword [edx + 0xab28]
push eax
call fcn.0040aa70
mov ecx, dword [0x4b5b4c]
mov edx, dword [ecx + 0xab28]
push edx
call fcn.0040ad10
mov eax, dword [0x4b5b4c]
add esp, 0x14
mov ecx, dword [eax + 0xb404]
test ecx, ecx
jne 0x40fd5f
mov eax, dword [eax + 0xab28]
push 0
push eax
call fcn.0040aca0
add esp, 8
mov ecx, dword [0x4b5b4c]
mov eax, dword [ecx + 0xb404]
test eax, eax
jne 0x40fe4a
xor esi, esi
xor ebx, ebx
mov eax, dword [esp + ebx + 0x68]
cmp eax, 0xffffffff
je 0x40fe3b
add eax, ebx
shl eax, 5
mov edi, dword [esp + eax + 0x3b34]
cmp edi, 0xffffffff
jne 0x40fdc4
push 0x577
push 0x4a2ba4
call fcn.00418f50
add esp, 4
push eax
push 0x4a2bc4
push 0x4b6d60
call fcn.00492257
push 0x4b6d60
call fcn.004187d0
add esp, 0x14
lea eax, [edi + edi*2]
lea eax, [eax + eax*8]
lea edx, [eax + eax*4]
mov eax, dword [0x4b54c8]
lea edi, [eax + edx*8]
mov eax, dword [eax + edx*8 + 0x434]
test eax, eax
je 0x40fe3b
push 1
push 0x2328
push eax
call fcn.0044ee70
add esp, 0xc
cmp eax, 0xffffffff
je 0x40fe3b
mov ecx, dword [0x4b54cc]
fild dword [esi + ecx + 0x5ac]
mov edx, dword [esi + ecx + 0x5b4]
push edx
push ecx
fmul dword [esi + ecx + 0x5b0]
fstp dword [esp]
fild dword [esi + ecx + 0x5a8]
push ecx
fstp dword [esp]
fild dword [esi + ecx + 0x5a4]
push ecx
fstp dword [esp]
push eax
mov eax, dword [edi + 0x434]
push eax
call fcn.00450450
add esp, 0x18
add ebx, 4
add esi, 0x28
cmp ebx, 8
jl 0x40fd77
mov ecx, dword [0x4b54cc]
mov eax, dword [0x4b54c0]
test eax, eax
mov edi, dword [ecx + 0x208]
mov ebx, dword [ecx + 0x20c]
mov dword [esp + 0x14], 0
jle 0x40ffc8
mov edx, dword [0x4b54c4]
xor ebp, ebp
test edx, edx
jle 0x40ff9b
mov eax, dword [esp + 0x14]
imul eax, edx
add eax, ebp
lea eax, [eax + eax*2]
lea eax, [eax + eax*8]
lea edx, [eax + eax*4]
mov eax, dword [0x4b54c8]
lea esi, [eax + edx*8]
mov eax, dword [eax + edx*8]
cmp eax, 0xffffffff
jne 0x40fead
mov eax, dword [ecx + 0x228]
test eax, eax
je 0x40fec6
push 0
push ebx
add ecx, 0x2f4
push edi
push ecx
call fcn.0041afd0
mov ecx, dword [0x4b54cc]
add esp, 0x10
cmp dword [esi], 0xfffffffe
jne 0x40fef4
mov edx, dword [ecx + 0x23c]
mov eax, dword [ecx + 0x238]
add edx, ebx
push 0
add eax, edi
push edx
add ecx, 0x360
push eax
push ecx
call fcn.0041afd0
mov ecx, dword [0x4b54cc]
add esp, 0x10
mov edx, dword [0x4b5b4c]
mov eax, dword [edx + 0xb404]
test eax, eax
jne 0x40ff7c
mov eax, dword [esi + 0x434]
test eax, eax
je 0x40ff7c
lea edx, [esi + 0x34]
test edx, edx
je 0x40ff7c
push 0
push 0x2328
push eax
call fcn.0044ee70
mov ecx, dword [0x4b54cc]
add esp, 0xc
cmp eax, 0xffffffff
je 0x40ff7c
mov edx, dword [ecx + 0x234]
push edx
mov edx, dword [ecx + 0x230]
push edx
mov edx, dword [ecx + 0x23c]
add edx, ebx
push ecx
mov ecx, dword [ecx + 0x238]
mov dword [esp + 0x2c], edx
fild dword [esp + 0x2c]
add ecx, edi
mov edx, dword [esi + 0x434]
mov dword [esp + 0x2c], ecx
fstp dword [esp]
fild dword [esp + 0x2c]
push ecx
fstp dword [esp]
push eax
push edx
call fcn.00450450
mov ecx, dword [0x4b54cc]
add esp, 0x18
mov eax, dword [ecx + 0x21c]
mov edx, dword [ecx + 0x218]
add eax, edx
mov edx, dword [0x4b54c4]
add edi, eax
inc ebp
cmp ebp, edx
jl 0x40fe81
mov edx, dword [ecx + 0x220]
mov eax, dword [ecx + 0x218]
mov edi, dword [ecx + 0x208]
add edx, eax
mov eax, dword [esp + 0x14]
add ebx, edx
mov edx, dword [0x4b54c0]
inc eax
cmp eax, edx
mov dword [esp + 0x14], eax
jl 0x40fe71
mov eax, dword [0x4b5b4c]
mov edx, dword [eax + 0xb404]
test edx, edx
jne 0x410062
lea edi, [esp + 0x3c2c]
mov dword [esp + 0x10], 2
mov edx, dword [edi - 4]
test edx, edx
jle 0x410054
mov eax, edx
shl eax, 8
sub eax, edx
cdq
idiv dword [edi]
push eax
push eax
push eax
call dword [sym.imp.alleg40.dll_Ordinal_412]
mov esi, dword [0x4b54cc]
mov ebx, eax
push ebx
mov ebp, dword [esi + 0x21c]
mov edx, dword [esi + 0x218]
mov eax, dword [esi + 0x208]
lea ecx, [edx + ebp]
imul ecx, dword [edi - 0xc]
add ecx, eax
mov eax, dword [esi + 0x220]
add edx, eax
imul edx, dword [edi - 8]
add edx, dword [esi + 0x20c]
lea eax, [edx + eax - 2]
push eax
lea eax, [ecx + ebp - 2]
push eax
push edx
push ecx
call fcn.00489680
mov ecx, dword [0x4b54cc]
add esp, 0x20
mov eax, dword [esp + 0x10]
add edi, 0x10
dec eax
mov dword [esp + 0x10], eax
jne 0x40ffea
xor eax, eax
mov dword [esp + 0x30], eax
mov edx, dword [esp + eax*4 + 0x60]
mov dword [esp + 0x1c], 0
test edx, edx
mov dword [esp + 0x14], edx
jle 0x4101de
mov eax, dword [esp + 0x30]
lea edx, [eax + eax*2]
shl edx, 5
lea ebx, [esp + edx + 0x84]
mov edx, dword [ebx - 4]
mov esi, dword [ebx + 4]
mov eax, dword [ecx + 0x218]
mov edi, dword [ecx + 0x208]
lea edx, [esi + edx*4]
mov esi, dword [ecx + 0x21c]
shl edx, 5
add esi, eax
mov ebp, dword [ebx]
imul esi, dword [esp + edx + 0x3b20]
lea edx, [esp + edx + 0x3b18]
add esi, edi
mov edi, dword [ecx + 0x220]
add edi, eax
mov eax, dword [esp + 0x30]
imul edi, dword [edx + 0xc]
add edi, dword [ecx + 0x20c]
test eax, eax
jne 0x4100f7
lea ebp, [ebp + ebp*2]
push 0
push edi
push esi
lea eax, [ebp + ebp*8]
lea ecx, [ecx + eax*4 + 0x4a8]
push ecx
jmp 0x4101b4
cmp dword [esp + 0x30], 1
jne 0x4101c2
cmp dword [esp + 0x64], 2
jne 0x4101a0
mov eax, dword [ecx + 0x290]
test eax, eax
je 0x4101a0
mov edx, dword [esp + 0xec]
mov eax, dword [esp + 0xf4]
lea edx, [eax + edx*4]
shl edx, 5
lea eax, [esp + edx + 0x3b18]
mov edx, dword [esp + 0xe0]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xe8]
lea edx, [eax + edx*4]
shl edx, 5
lea eax, [esp + edx + 0x3b18]
mov dword [esp + 0x10], eax
mov edx, dword [eax + 8]
mov eax, dword [esp + 0x20]
cmp edx, dword [eax + 8]
jne 0x4101a0
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 0xc]
cmp edx, dword [eax + 0xc]
jne 0x4101a0
mov eax, dword [esp + 0x3dac]
xor edx, edx
and eax, 7
cmp al, 4
mov eax, dword [esp + 0x1c]
setl dl
cmp edx, eax
jne 0x4101c2
lea ebp, [ebp + ebp*2]
push 0
push edi
push esi
lea eax, [ebp + ebp*8]
lea ecx, [ecx + eax*4 + 0x3d0]
push ecx
jmp 0x4101b4
lea ebp, [ebp + ebp*2]
push 0
push edi
push esi
lea edx, [ebp + ebp*8]
lea eax, [ecx + edx*4 + 0x3d0]
push eax
call fcn.0041afd0
mov ecx, dword [0x4b54cc]
add esp, 0x10
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
inc eax
add ebx, 0xc
cmp eax, edx
mov dword [esp + 0x1c], eax
jl 0x410091
mov eax, dword [esp + 0x30]
inc eax
cmp eax, 2
mov dword [esp + 0x30], eax
jl 0x410068
mov edx, dword [0x4b5b4c]
mov eax, dword [edx + 0xb404]
test eax, eax
jne 0x4102bc
xor esi, esi
lea eax, [esp + 0x3b28]
mov ebx, dword [esi + ecx + 0x5c4]
mov edi, dword [esi + ecx + 0x5c8]
mov ebp, eax
mov dword [esp + 0x14], 4
mov dword [esp + 0x10], ebp
mov eax, dword [ebp]
cmp eax, 0xffffffff
je 0x410298
mov edx, dword [0x4b54c8]
lea eax, [eax + eax*2]
lea eax, [eax + eax*8]
lea eax, [eax + eax*4]
lea eax, [edx + eax*8]
cmp byte [eax + 4], 0
lea edx, [eax + 4]
jne 0x410252
cmp dword [eax], 0xfffffffe
jne 0x410298
mov edx, str.Random
test edx, edx
je 0x410298
mov eax, dword [esi + ecx + 0x5b8]
cmp eax, 0xffffffff
je 0x410295
mov ebp, dword [esi + ecx + 0x5bc]
mov ecx, dword [esi + ecx + 0x5c0]
push ebp
push ecx
mov ecx, dword [0x4b5b4c]
push edi
push ebx
mov eax, dword [ecx + eax*4 + 0xaaf8]
push eax
push edx
call fcn.0041b8d0
mov ecx, dword [0x4b54cc]
mov ebp, dword [esp + 0x28]
add esp, 0x18
add edi, 0xe
mov eax, dword [esp + 0x14]
add ebp, 0x20
dec eax
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], eax
jne 0x410225
add esi, 0x28
mov eax, ebp
cmp esi, 0x50
jl 0x410209
mov edx, dword [0x4b5b4c]
mov eax, dword [edx + 0xb404]
test eax, eax
jne 0x4102e7
mov ecx, dword [edx + 0x5ce0]
push ecx
call fcn.00404b60
mov edx, dword [0x4b5b4c]
mov ecx, dword [0x4b54cc]
add esp, 4
mov eax, dword [esp + 0x3c40]
test eax, eax
je 0x4103e6
mov eax, dword [edx + 0xb404]
test eax, eax
jne 0x4103e6
mov eax, dword [esp + 0x3a28]
cmp eax, 0xffffffff
jne 0x410327
lea edx, [esp + 0x140]
push str.Stage:_Random
push edx
call fcn.00492257
add esp, 8
jmp 0x410355
mov edx, dword [edx + 0x269c]
lea ecx, [eax + eax*8]
lea ecx, [eax + ecx*4]
lea ecx, [eax + ecx*4]
inc eax
lea ecx, [edx + ecx*4 + 0x200]
lea edx, [esp + 0x140]
push ecx
push eax
push str.Stage__i:__s
push edx
call fcn.00492257
add esp, 0x10
mov eax, dword [esp + 0x3a2c]
test eax, eax
jne 0x41039b
mov eax, dword [esp + 0x3dac]
mov ecx, dword [0x4b54cc]
cdq
sub eax, edx
sar eax, 1
and eax, 1
mov edx, dword [ecx + eax*4 + 0x594]
mov eax, dword [ecx + eax*4 + 0x588]
push edx
mov edx, dword [ecx + 0x5a0]
push edx
mov edx, dword [ecx + 0x584]
push edx
mov edx, dword [ecx + 0x580]
push edx
jmp 0x4103c2
mov eax, dword [0x4b54cc]
mov ecx, dword [eax + 0x59c]
mov edx, dword [eax + 0x5a0]
push ecx
mov ecx, dword [eax + 0x584]
push edx
mov edx, dword [eax + 0x580]
mov eax, dword [eax + 0x590]
push ecx
push edx
mov ecx, dword [0x4b5b4c]
mov edx, dword [ecx + eax*4 + 0xaaf8]
lea eax, [esp + 0x150]
push edx
push eax
call fcn.0041b8d0
mov ecx, dword [0x4b54cc]
add esp, 0x18
mov dword [esp + 0x14], 0
lea ebp, [esp + 0x3c4c]
mov eax, dword [ebp - 8]
test eax, eax
je 0x41066e
mov eax, dword [ebp]
push 0
lea edx, [eax + eax*8]
lea eax, [eax + edx*4]
lea eax, [eax + eax*4]
mov edi, dword [ecx + eax*4 + 0x5fc]
mov esi, dword [ecx + eax*4 + 0x5f8]
lea ecx, [ecx + eax*4]
push edi
add ecx, 0x600
push esi
push ecx
call fcn.0041afd0
mov ecx, dword [0x4b5b4c]
add esp, 0x10
mov eax, dword [ecx + 0x26b8]
test eax, eax
je 0x410468
mov eax, dword [ebp]
mov ecx, dword [esp + 0x14]
cmp ecx, eax
je 0x410468
mov ecx, dword [0x4b54cc]
lea edx, [eax + eax*8]
push 0
push edi
lea eax, [eax + edx*4]
push esi
lea eax, [eax + eax*4]
lea edx, [ecx + eax*4 + 0x6d8]
push edx
jmp 0x410485
mov eax, dword [ebp]
push 0
push edi
push esi
lea ecx, [eax + eax*8]
lea eax, [eax + ecx*4]
lea edx, [eax + eax*4]
mov eax, dword [0x4b54cc]
lea ecx, [eax + edx*4 + 0x66c]
push ecx
call fcn.0041afd0
mov eax, dword [ebp]
mov ecx, dword [0x4b54cc]
add esp, 0x10
mov dword [esp + 0x1c], 0
lea edx, [eax + eax*8]
lea eax, [eax + edx*4]
lea eax, [eax + eax*4]
mov ebx, dword [ecx + eax*4 + 0x75c]
mov edx, dword [ecx + eax*4 + 0x760]
lea eax, [ecx + eax*4]
add esi, ebx
mov eax, dword [ebp + 8]
add edi, edx
test eax, eax
jle 0x41066e
lea ebx, [ebp + 0x1c]
mov dword [esp + 0x28], ebx
mov edx, dword [esp + 0x1c]
mov eax, dword [ebp + 4]
cmp edx, eax
jne 0x41053c
mov eax, dword [esp + 0x3dac]
push 0
cdq
sub eax, edx
push edi
mov edx, eax
mov eax, dword [ebp]
sar edx, 1
lea ebx, [eax + eax*8]
and edx, 1
inc edx
push esi
lea ebx, [eax + ebx*4]
mov dword [esp + 0x3c], edx
lea edx, [edx + ebx*4]
add edx, ebx
mov ebx, dword [ecx + edx*4 + 0x764]
mov edx, dword [ecx + edx*4 + 0x770]
mov dword [esp + 0x1c], edx
lea edx, [eax + eax*8]
mov dword [esp + 0x40], ebx
lea eax, [eax + edx*4]
lea eax, [eax + eax*4]
lea ecx, [ecx + eax*4 + 0x788]
push ecx
call fcn.0041afd0
mov ecx, dword [0x4b54cc]
mov ebx, dword [esp + 0x38]
add esp, 0x10
jmp 0x410560
mov eax, dword [ebp]
lea edx, [eax + eax*8]
lea eax, [eax + edx*4]
lea eax, [eax + eax*4]
mov edx, dword [ecx + eax*4 + 0x764]
lea eax, [ecx + eax*4]
mov dword [esp + 0x34], edx
mov eax, dword [eax + 0x770]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x10]
mov eax, dword [ebp]
push edx
lea edx, [eax + eax*8]
lea eax, [eax + edx*4]
mov edx, dword [0x4b5b4c]
lea eax, [eax + eax*4]
mov ecx, dword [ecx + eax*4 + 0x77c]
mov eax, dword [esp + 0x38]
push ecx
push edi
mov ecx, dword [edx + eax*4 + 0xaaf8]
mov edx, dword [ebx - 0xc]
push esi
push ecx
push edx
call fcn.0041b8d0
mov ecx, dword [ebx]
mov eax, dword [ebx - 4]
add esp, 0x18
cmp eax, ecx
jg 0x41062d
xor eax, eax
mov dword [esp + 0x10], esi
test ecx, ecx
mov ecx, dword [0x4b54cc]
mov dword [esp + 0x20], edi
mov dword [esp + 0x30], eax
jle 0x410623
mov edx, dword [ebx - 8]
push 0
cmp eax, edx
mov eax, dword [ebp]
push edi
push esi
lea edx, [eax + eax*8]
lea eax, [eax + edx*4]
lea eax, [eax + eax*4]
jge 0x4105de
lea ecx, [ecx + eax*4 + 0x7f4]
jmp 0x4105e5
lea ecx, [ecx + eax*4 + 0x868]
push ecx
call fcn.0041afd0
mov eax, dword [ebp]
mov ecx, dword [0x4b54cc]
add esp, 0x10
lea edx, [eax + eax*8]
lea eax, [eax + edx*4]
lea eax, [eax + eax*4]
mov edx, dword [ecx + eax*4 + 0x860]
lea eax, [ecx + eax*4]
add esi, edx
mov edx, dword [eax + 0x864]
mov eax, dword [esp + 0x30]
add edi, edx
mov edx, dword [ebx]
inc eax
cmp eax, edx
mov dword [esp + 0x30], eax
jl 0x4105be
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
jmp 0x410633
mov ecx, dword [0x4b54cc]
mov eax, dword [ebp]
add ebx, 0x14
mov dword [esp + 0x28], ebx
lea edx, [eax + eax*8]
lea eax, [eax + edx*4]
lea eax, [eax + eax*4]
mov edx, dword [ecx + eax*4 + 0x780]
lea eax, [ecx + eax*4]
add esi, edx
mov edx, dword [eax + 0x784]
mov eax, dword [esp + 0x1c]
add edi, edx
mov edx, dword [ebp + 8]
inc eax
cmp eax, edx
mov dword [esp + 0x1c], eax
jl 0x4104ce
mov eax, dword [esp + 0x14]
add ebp, 0xb4
inc eax
cmp eax, 2
mov dword [esp + 0x14], eax
jl 0x4103f5
mov edx, dword [0x4b5b4c]
mov eax, dword [edx + 0xb404]
test eax, eax
jne 0x410744
mov esi, dword [edx + 0x26c0]
xor eax, eax
cmp esi, 8
ja case.default.0x4106a7
jmp dword [esi*4 + 0x410a18]
mov eax, 0x4a2c0c
jmp case.default.0x4106a7
mov eax, str.Versus_Mode
jmp case.default.0x4106a7
mov eax, 0x4a2c20
jmp case.default.0x4106a7
mov eax, 0x4a2c2c
jmp case.default.0x4106a7
mov eax, str.Team_Cooperative
jmp case.default.0x4106a7
mov eax, 0x4a2c4c
jmp case.default.0x4106a7
mov eax, str.Survival_Cooperative
jmp case.default.0x4106a7
mov eax, str.Training_Mode
jmp case.default.0x4106a7
mov eax, str.Watch_Mode
mov esi, dword [ecx + 0x2e8]
cmp esi, 0xffffffff
je 0x41072d
test eax, eax
je 0x41072d
mov edi, dword [ecx + 0x2ec]
mov edx, dword [edx + esi*4 + 0xaaf8]
push edi
mov edi, dword [ecx + 0x2f0]
push edi
mov edi, dword [ecx + 0x2e4]
mov ecx, dword [ecx + 0x2e0]
push edi
push ecx
push edx
push eax
call fcn.0041b8d0
mov edx, dword [0x4b5b4c]
add esp, 0x18
mov eax, dword [edx + 0xab28]
push 1
push eax
call fcn.0040aca0
mov edx, dword [0x4b5b4c]
add esp, 8
mov eax, dword [edx + 0xc520]
test eax, eax
je 0x41079d
mov eax, dword [edx + 0xbb8c]
test eax, eax
je 0x410762
mov eax, dword [edx + 0xbbac]
test eax, eax
je 0x41079d
push 0xff
push 0xff
push 0xff
call dword [sym.imp.alleg40.dll_Ordinal_412]
push eax
mov eax, dword [0x4b5b4c]
push 0x32
push 0xa
mov ecx, dword [eax + 0x5cd4]
mov edx, dword [eax + 0xc530]
push ecx
push edx
nop
nop
nop
nop
nop
mov edx, dword [0x4b5b4c]
add esp, 0x20
mov eax, dword [edx + 0xc934]
test eax, eax
jne 0x4107b2
call fcn.00482b50
mov edx, dword [0x4b5b4c]
mov eax, dword [edx + 0xb404]
test eax, eax
jne 0x4107cb
mov eax, dword [edx + 0x5cf8]
test eax, eax
je 0x4107cb
call sub.alleg40.dll_Ordinal_745
call fcn.004174e0
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0xb408]
test ecx, ecx
jne 0x4107e4
call fcn.00448830
call fcn.00417420
mov ecx, dword [esp + 0x3dac]
mov eax, dword [esp + 0x2c]
inc ecx
cmp eax, 0x58
mov dword [esp + 0x3dac], ecx
jne 0x410806
call fcn.00417700
mov eax, dword [esp + 0x5c]
test eax, eax
jne 0x410833
mov eax, dword [esp + 0x54]
cmp eax, 0xffffffff
je 0x410828
cmp dword [esp + 0x3dac], eax
jle 0x410828
mov dword [esp + 0x5c], 1
cmp dword [esp + 0x2c], 1
jne 0x40ea23
jmp 0x4174fe
cmp dword [esp + 0x2c], 1
jne 0x41088a
mov ecx, dword [0x4b5b4c]
mov eax, dword [ecx + 0xbb8c]
test eax, eax
jne 0x410873
mov eax, dword [0x4b54cc]
mov ecx, dword [ecx + 0xa8f0]
push 0
mov edx, dword [eax + 0x2dc]
mov eax, dword [eax + 0x2d8]
push edx
push eax
push ecx
call fcn.0044e2d0
add esp, 0x10
call fcn.0044adf0
call fcn.00448860
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x3da0
ret
lea esi, [esp + 0x3a20]
mov edi, 2
cmp dword [esi], 0
jne 0x4108a8
push str.No_team:_Programmers_fault
call fcn.00415a70
add esp, 4
add esi, 4
dec edi
jne 0x410896
mov edx, dword [0x4b5b4c]
mov ecx, 0xd4e
lea esi, [esp + 0x4e8]
lea eax, [esp + 0x4c]
lea edi, [edx + 0x26cc]
mov ebp, 2
rep movsd dword es:[edi], dword [esi]
mov ebx, dword [0x4b5b4c]
lea esi, [ebx + 0x26d0]
mov ecx, dword [esi]
mov dword [eax], 0
test ecx, ecx
jle 0x4108fc
lea edx, [esi + 0x10]
mov edi, ecx
mov ecx, dword [edx]
cmp dword [eax], ecx
jge 0x4108f6
mov dword [eax], ecx
add edx, 0x5c
dec edi
jne 0x4108ee
add esi, 0x1a9c
add eax, 4
dec ebp
jne 0x4108dd
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
add eax, ecx
mov ecx, dword [ebx + 0xbdd0]
cmp ecx, eax
jge 0x410928
mov dword [ebx + 0xbdd0], eax
mov ebx, dword [0x4b5b4c]
mov eax, dword [esp + 0x3a2c]
test eax, eax
je 0x4109b2
mov eax, dword [esp + 0x3a28]
cmp eax, 0xffffffff
jne 0x41097d
mov eax, dword [ebx + 0x26a0]
test eax, eax
jle 0x410975
call fcn.00492f37
mov ecx, dword [0x4b5b4c]
cdq
idiv dword [ecx + 0x26a0]
lea eax, [edx + edx*8]
lea eax, [edx + eax*4]
lea edx, [edx + eax*4]
mov eax, dword [ecx + 0x269c]
lea edi, [eax + edx*4]
lea edx, [ecx + 0x414]
jmp 0x410995
lea edi, [ebx + 0xc2fc]
jmp 0x41098f
lea ecx, [eax + eax*8]
lea edx, [eax + ecx*4]
mov ecx, dword [ebx + 0x269c]
lea eax, [eax + edx*4]
lea edi, [ecx + eax*4]
lea edx, [ebx + 0x414]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00448860
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x3da0
ret
mov eax, dword [0x4b5b4c]
mov dword [eax + 0x26c8], 7
jmp 0x40e36f
call fcn.00449d10
mov ecx, dword [0x4b5b4c]
mov dword [ecx + 0x26c8], 0
jmp 0x410838