Function at 0x505ca0
Capabilities:
Check os version
Inspect section memory permissions
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x5f283f
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x194
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x1b4]
push edi
call fcn.004ca860
mov ebx, eax
add esp, 4
mov ecx, 0x6757a0
mov dword [esp + 0x68], ebx
call fcn.00460cd0
lea ecx, [esp + 0x30]
mov dword [esp + 0x44], eax
call fcn.004918b0
mov esi, 0x5f7a80
mov dword [esp + 0x30], esi
lea ecx, [esp + 0x9c]
mov dword [esp + 0x1ac], 0
call fcn.004918b0
mov dword [esp + 0x9c], esi
lea ecx, [esp + 0x74]
mov byte [esp + 0x1ac], 1
call fcn.004918b0
mov dword [esp + 0x74], esi
lea ecx, [esp + 0xb0]
mov byte [esp + 0x1ac], 2
call fcn.004918b0
mov dword [esp + 0xb0], esi
lea ecx, [esp + 0x50]
mov byte [esp + 0x1ac], 3
call fcn.005bae68
lea ecx, [esp + 0xe0]
mov byte [esp + 0x1ac], 4
call fcn.005bae68
cmp ebx, 5
mov byte [esp + 0x1ac], 5
je 0x509275
cmp ebx, 8
je 0x509275
cmp ebx, 1
je 0x509275
cmp edi, 0x353
jne 0x50957f
mov eax, dword [esp + 0x1c0]
lea edi, [eax - 1]
test edi, edi
jl 0x50957f
mov ebp, dword [esp + 0x1bc]
mov ebx, dword [esp + 0x1d4]
cmp ebx, 1
mov esi, dword [ebp]
jne 0x505ddd
cmp byte [esi + edi], 0x23
jne 0x505ddd
test edi, edi
jle 0x505dd4
cmp byte [esi + edi - 1], 0x23
je 0x50957f
mov ecx, ebp
call fcn.005bc3ac
jmp 0x505e5a
mov eax, dword [esp + 0x1b8]
xor ecx, ecx
test eax, eax
sete cl
push ecx
push 0
push 1
lea edx, [esi + edi]
push 1
push edx
push esi
call fcn.005051d0
add esp, 0x18
mov dword [esp + 0x10], eax
test eax, eax
je 0x50957f
mov ecx, esi
sub ecx, eax
sub eax, esi
lea edx, [ecx + edi + 1]
mov ecx, ebp
push edx
push eax
lea eax, [esp + 0x70]
push eax
call fcn.005b875c
push eax
mov ecx, ebp
mov byte [esp + 0x1b0], 6
call fcn.005bc55a
lea ecx, [esp + 0x68]
mov byte [esp + 0x1ac], 5
call fcn.005bc421
mov ecx, dword [ebp]
mov eax, dword [ecx - 8]
test eax, eax
je 0x50957f
test ebx, ebx
je 0x5062e8
mov eax, dword [ebp]
push 0x2e
push eax
mov dword [esp + 0x18], eax
call fcn.0052fe10
add esp, 8
mov dword [esp + 0x8c], eax
test eax, eax
je 0x505e7a
mov byte [eax], 0
mov edx, dword [0x6707bc]
mov dword [esp + 0x48], edx
mov eax, dword [0x675b88]
mov edi, dword [esp + 0x1cc]
shr eax, 2
mov byte [esp + 0x1ac], 7
mov dword [esp + 0xc8], eax
mov dword [esp + 0x90], 0
mov eax, dword [esp + 0x1d8]
push eax
call fcn.00501cb0
mov eax, dword [esp + 0x94]
add esp, 4
cmp eax, 1
jne 0x505ee3
mov eax, dword [esp + 0x8c]
test eax, eax
mov dword [esp + 0x10], eax
je 0x50629a
mov ecx, eax
inc ecx
mov dword [esp + 0x10], ecx
lea edx, [esp + 0xd8]
lea eax, [esp + 0x10]
push edx
push eax
call fcn.00500500
add esp, 8
mov ebp, 1
cmp al, 0x3b
mov byte [esp + 0x14], al
mov dword [esp + 0x1c], ebp
je 0x505f0d
cmp al, 0x3a
jne 0x505f40
mov ebp, dword [esp + 0xd8]
mov edx, dword [0x675558]
mov eax, dword [esp + 0x14]
xor ecx, ecx
test ebp, ebp
sete cl
mov ebp, ecx
mov ecx, dword [esp + 0x1d8]
push edx
mov edx, dword [esp + 0x14]
push eax
push ecx
push edx
mov dword [esp + 0x2c], ebp
call dword [0x675fe8]
mov eax, dword [esp + 0x90]
xor ebx, ebx
cmp eax, ebx
jne 0x506186
mov eax, ebx
push 0
push eax
mov ecx, 0x675a74
inc ebx
call fcn.004f4110
test eax, eax
je 0x505fba
push eax
mov eax, dword [0x675a74]
mov ecx, 0x675a74
call dword [eax + 0x14]
mov esi, eax
cmp byte [esi], 0
je 0x505f51
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
push ebp
push esi
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x505f51
mov eax, dword [edi + 8]
push esi
push eax
mov ecx, edi
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 0xe
call fcn.00491be0
cmp dword [edi + 8], 0x50
jle 0x505f51
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x94], 0
test eax, eax
jle 0x506274
cmp dword [edi + 8], 0x50
jg 0x506274
mov ecx, dword [0x675b68]
mov edx, dword [esp + 0x94]
mov eax, dword [ecx + edx*4]
mov ecx, dword [esp + 0x44]
push ecx
push eax
mov dword [esp + 0x2c], eax
call fcn.00501940
add esp, 8
test eax, eax
je 0x506163
mov eax, dword [esp + 0x24]
xor ebx, ebx
mov ecx, dword [eax + 0x54]
mov esi, dword [eax + 0x58]
test ecx, ecx
jle 0x5060fd
cmp dword [edi + 8], 0x50
jg 0x5060fd
mov ecx, dword [esi + 0x14]
test ecx, 0x400000
je 0x5060ee
test cl, 3
jne 0x5060ee
mov edx, dword [esp + 0x44]
push edx
push esi
push eax
call fcn.00501980
add esp, 0xc
test eax, eax
je 0x5060ea
mov eax, dword [esp + 0x8c]
test eax, eax
jne 0x50609b
mov eax, dword [esi]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push ebp
push eax
mov eax, dword [esp + 0x1c]
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x5060ea
mov eax, dword [esi]
mov ecx, dword [edi + 8]
push eax
push ecx
mov ecx, edi
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 2
jmp 0x5060e5
mov eax, dword [esp + 0x40]
test eax, eax
je 0x5060be
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x5060be
shr eax, 2
push esi
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x5060ea
mov ecx, dword [esi]
mov edx, dword [esp + 0x1d8]
mov eax, dword [esp + 0x10]
push ebp
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x5060ea
push esi
lea ecx, [esp + 0x34]
call fcn.00491be0
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x54]
inc ebx
add esi, 0x38
cmp ebx, ecx
jl 0x50601c
mov ecx, dword [eax + 0x84]
mov esi, dword [eax + 0x88]
xor ebx, ebx
test ecx, ecx
jle 0x506163
mov edx, dword [esi]
mov eax, dword [esp + 0x1d8]
mov ecx, dword [esp + 0x10]
push ebp
push edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
push edx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x50614d
mov eax, dword [esi]
mov ecx, dword [edi + 8]
push eax
push ecx
mov ecx, edi
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 0xa
call fcn.00491be0
cmp dword [edi + 8], 0x50
jg 0x506163
mov eax, dword [esp + 0x24]
inc ebx
add esi, 0x20
cmp ebx, dword [eax + 0x84]
jl 0x50610f
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0xc8]
inc eax
cmp eax, ecx
mov dword [esp + 0x94], eax
jl 0x505fd4
jmp 0x506274
mov eax, dword [esp + 0x40]
mov dword [esp + 0x20], ebx
shr eax, 2
dec eax
mov dword [esp + 0x98], eax
js 0x506274
cmp dword [edi + 8], 0x50
jg 0x506274
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x20]
xor ebp, ebp
mov ebx, dword [ecx + edx*4]
mov ecx, dword [ebx + 0x30]
mov eax, dword [ebx + 0x34]
test ecx, ecx
jle 0x50625c
lea esi, [eax + 8]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi]
mov edx, dword [esp + 0x1d8]
push eax
mov eax, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x506247
mov eax, dword [esp + 0x98]
test eax, eax
jle 0x506214
mov edx, dword [ebx]
lea ecx, [esp + 0x48]
push edx
call fcn.005bc5aa
push 0x65eec4
lea ecx, [esp + 0x4c]
call fcn.005bc7fd
jmp 0x50621d
lea ecx, [esp + 0x48]
call fcn.005bc3ac
mov eax, dword [esi]
lea ecx, [esp + 0x48]
push eax
call fcn.005bc7fd
mov eax, dword [edi + 8]
lea ecx, [esp + 0x48]
push ecx
push eax
mov ecx, edi
call fcn.005bb0f8
mov ecx, dword [esp + 0x1d0]
push 0xa
call fcn.00491be0
cmp dword [edi + 8], 0x50
jg 0x50625c
mov eax, dword [ebx + 0x30]
inc ebp
add esi, 0x1c
cmp ebp, eax
jl 0x5061c7
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x98]
inc eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jle 0x50619f
mov eax, dword [esp + 0x90]
inc eax
cmp eax, 2
mov dword [esp + 0x90], eax
jl 0x505ead
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x50629a
mov byte [eax], 0x2e
cmp dword [edi + 8], 1
jne 0x5062d2
mov eax, dword [edi + 4]
mov edx, dword [esp + 0x1bc]
mov eax, dword [eax]
mov ecx, dword [edx]
push eax
push ecx
call fcn.0052d7b8
add esp, 8
test eax, eax
jne 0x5062d2
push 0xffffffffffffffff
push eax
mov ecx, edi
call fcn.005baefb
mov ecx, dword [esp + 0x1d0]
call fcn.00491ab0
lea ecx, [esp + 0x48]
mov byte [esp + 0x1ac], 5
call fcn.005bc421
jmp 0x50957f
lea ecx, [esp + 0x104]
call fcn.005bae68
mov edi, dword [esp + 0x1bc]
mov byte [esp + 0x1ac], 8
or ebp, 0xffffffff
push 0x2e
mov ecx, edi
call fcn.005bc8e8
mov esi, eax
cmp esi, ebp
je 0x5063b8
lea eax, [esp + 0x68]
push esi
push eax
mov ecx, edi
call fcn.005b886e
mov ecx, dword [esp + 0x10c]
push eax
push ecx
lea ecx, [esp + 0x10c]
mov byte [esp + 0x1b4], 9
call fcn.005bb0f8
lea ecx, [esp + 0x68]
mov byte [esp + 0x1ac], 8
call fcn.005bc421
mov edx, dword [edi]
mov ecx, edi
mov eax, dword [edx - 8]
sub eax, esi
dec eax
push eax
lea eax, [esp + 0xd0]
push eax
call fcn.005b87f2
push eax
mov ecx, edi
mov byte [esp + 0x1b0], 0xa
call fcn.005bc55a
lea ecx, [esp + 0xcc]
mov byte [esp + 0x1ac], 8
call fcn.005bc421
mov ecx, dword [edi]
mov eax, dword [ecx - 8]
test eax, eax
jne 0x506306
mov edx, dword [esp + 0x10c]
push 0x674ee0
push edx
lea ecx, [esp + 0x10c]
call fcn.005bb0cc
jmp 0x5063cd
mov eax, dword [esp + 0x10c]
push edi
push eax
lea ecx, [esp + 0x10c]
call fcn.005bb0f8
mov eax, dword [esp + 0x10c]
mov ebx, eax
test eax, eax
mov dword [esp + 0x90], ebx
jne 0x50647a
lea ecx, [esp + 0x104]
mov byte [esp + 0x1ac], 5
call fcn.005bae9b
lea ecx, [esp + 0xe0]
mov byte [esp + 0x1ac], 4
call fcn.005bae9b
lea ecx, [esp + 0x50]
mov byte [esp + 0x1ac], 3
call fcn.005bae9b
mov esi, 0x5f7940
lea ecx, [esp + 0xb0]
mov byte [esp + 0x1ac], 2
mov dword [esp + 0xb0], esi
call fcn.00491ab0
lea ecx, [esp + 0x74]
mov byte [esp + 0x1ac], 1
mov dword [esp + 0x74], esi
call fcn.00491ab0
lea ecx, [esp + 0x9c]
mov byte [esp + 0x1ac], 0
mov dword [esp + 0x9c], esi
call fcn.00491ab0
mov dword [esp + 0x1ac], ebp
jmp 0x5095ff
xor edi, edi
test eax, eax
jle 0x5065b8
mov ecx, dword [esp + 0x108]
lea edx, [ecx + edi*4]
mov ecx, dword [esp + 0x1bc]
push edx
call fcn.005bc55a
mov ecx, dword [esp + 0x1bc]
push 0x5b
xor esi, esi
call fcn.005bc8e8
cmp eax, ebp
je 0x5064e9
mov esi, dword [esp + 0x1bc]
push eax
lea eax, [esp + 0x6c]
mov ecx, esi
push eax
call fcn.005b886e
push eax
mov ecx, esi
mov byte [esp + 0x1b0], 0xb
call fcn.005bc55a
lea ecx, [esp + 0x68]
mov byte [esp + 0x1ac], 8
call fcn.005bc421
mov esi, 1
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x50658d
mov ecx, dword [esp + 0x1bc]
push 0x28
call fcn.005bc8e8
cmp eax, ebp
jne 0x50651f
mov ecx, dword [esp + 0x1bc]
push 0x66be64
call fcn.005b8908
cmp eax, ebp
je 0x50658d
lea ecx, [ebx - 1]
cmp edi, ecx
je 0x5063e5
mov esi, dword [esp + 0x1bc]
lea edx, [esp + 0x6c]
push eax
push edx
mov ecx, esi
call fcn.005b886e
push eax
lea eax, [esp + 0xd0]
push 0x28
push eax
mov byte [esp + 0x1b8], 0xc
call fcn.005b84bb
push eax
mov ecx, esi
mov byte [esp + 0x1b0], 0xd
call fcn.005bc55a
lea ecx, [esp + 0xcc]
mov byte [esp + 0x1ac], 0xc
call fcn.005bc421
lea ecx, [esp + 0x6c]
mov byte [esp + 0x1ac], 8
call fcn.005bc421
jmp 0x506591
test esi, esi
je 0x5065af
mov esi, dword [esp + 0x1bc]
mov ecx, esi
call fcn.005b8c5c
mov ecx, dword [esp + 0x108]
push esi
lea ecx, [ecx + edi*4]
call fcn.005bc55a
inc edi
cmp edi, ebx
jl 0x506484
xor ebp, ebp
mov ecx, 0x6757a0
mov dword [esp + 0x88], ebp
call fcn.00467110
mov esi, eax
mov ecx, 0x6757a0
mov dword [esp + 0xf8], esi
call fcn.00467120
cmp esi, ebp
mov esi, dword [esp + 0x1c4]
mov dword [esp + 0xcc], eax
je 0x50662d
cmp esi, ebp
je 0x50662d
mov eax, dword [esi + 0x40]
cmp eax, ebp
je 0x50662d
push eax
call fcn.004f4060
add esp, 4
cmp eax, 0x2000000
jne 0x50662d
mov eax, dword [esi + 0x40]
lea edx, [esp + 0x88]
push ebp
push edx
push eax
mov ecx, 0x675a58
call fcn.004f4970
test eax, eax
jne 0x50662d
mov dword [esp + 0x88], ebp
mov ecx, dword [0x6707bc]
mov dword [esp + 0x2c], ecx
push ebp
mov ecx, 0x6757a0
mov byte [esp + 0x1b0], 0xe
call fcn.004622b0
mov ecx, 0x6757a0
mov dword [esp + 0x48], eax
call fcn.00460290
mov dword [esp + 0x8c], eax
mov eax, dword [0x675b88]
shr eax, 2
cmp ebx, ebp
mov dword [esp + 0x98], eax
mov dword [esp + 0x68], ebp
jle 0x509130
mov ebx, dword [esp + 0x1cc]
mov edi, 0x5f7940
jmp 0x506694
mov ebx, dword [esp + 0x1cc]
mov edi, 0x5f7940
mov edx, dword [esp + 0x1d8]
mov esi, dword [esp + 0x1bc]
push edx
call fcn.00501cb0
add esp, 4
lea ecx, [esp + 0x9c]
call fcn.00491ab0
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
mov eax, ecx
push ecx
neg eax
sbb eax, eax
lea ecx, [esp + 0xa0]
and eax, edx
push eax
call fcn.00492170
lea ecx, [esp + 0x30]
call fcn.00491ab0
lea ecx, [esp + 0xb0]
call fcn.00491ab0
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x7c]
mov eax, ecx
push ecx
neg eax
sbb eax, eax
lea ecx, [esp + 0xb4]
and eax, edx
push eax
call fcn.00492170
lea ecx, [esp + 0x74]
call fcn.00491ab0
push 0xffffffffffffffff
push 0
lea ecx, [esp + 0xe8]
call fcn.005baefb
lea eax, [esp + 0x50]
lea ecx, [esp + 0xe0]
push eax
call fcn.005bb044
push 0xffffffffffffffff
push 0
lea ecx, [esp + 0x58]
call fcn.005baefb
mov ecx, dword [esp + 0x108]
lea edx, [ecx + ebp*4]
mov ecx, esi
push edx
call fcn.005bc55a
mov ecx, dword [esp + 0x1b8]
mov eax, dword [esi]
test ecx, ecx
mov dword [esp + 0x10], eax
jne 0x50677d
cmp byte [eax], 0x28
jne 0x50677d
mov esi, 1
inc eax
mov dword [esp + 0xdc], esi
mov dword [esp + 0x10], eax
jmp 0x506786
xor esi, esi
mov dword [esp + 0xdc], esi
lea eax, [esp + 0xd8]
lea ecx, [esp + 0x10]
push eax
push ecx
call fcn.00500500
add esp, 8
cmp al, 0x3b
mov byte [esp + 0x14], al
mov dword [esp + 0x1c], 1
je 0x5067af
cmp al, 0x3a
jne 0x5067df
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0x14]
xor edx, edx
test eax, eax
mov eax, dword [0x675558]
sete dl
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x1d8]
push eax
mov eax, dword [esp + 0x14]
push ecx
push edx
push eax
call dword [0x675fe8]
mov ecx, dword [esp + 0x90]
lea eax, [ecx - 1]
cmp ebp, eax
jge 0x507d72
mov eax, dword [esp + 0xac]
shr eax, 2
mov dword [esp + 0xc8], eax
jne 0x5071a7
test ebp, ebp
jne 0x5091cc
test esi, esi
je 0x506aee
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x1d8]
mov edi, dword [esp + 0x1c]
xor esi, esi
lea ecx, [esp + 0x28]
mov eax, esi
push ecx
push eax
mov ecx, 0x675a04
inc esi
call fcn.004f48d0
test eax, eax
je 0x50691c
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0xc]
test eax, eax
je 0x5068a9
push eax
call fcn.004f4040
add esp, 4
xor ecx, ecx
cmp eax, 0x40000000
sete cl
mov eax, ecx
test eax, eax
je 0x5068a9
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x1c8]
mov edx, dword [ecx + 0xc]
cmp edx, dword [eax + 0xc]
jne 0x506829
mov eax, dword [0x66da44]
mov ecx, dword [ecx]
push eax
push ecx
call fcn.0052d7b8
add esp, 8
test eax, eax
je 0x506829
mov ecx, dword [esp + 0x28]
mov eax, dword [0x66da48]
push eax
mov ecx, dword [ecx]
push ecx
call fcn.0052d7b8
add esp, 8
test eax, eax
je 0x506829
mov edx, dword [esp + 0x28]
push edi
mov eax, dword [edx]
push eax
mov eax, dword [esp + 0x18]
push ebp
push eax
push ebx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x506829
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 0x14]
lea ecx, [esp + 0x30]
push edx
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov ecx, dword [esp + 0x28]
push 0xffff
push 0
lea eax, [esp + 0x34]
mov edx, dword [ecx + 0x14]
push 0
push eax
push edx
mov ecx, 0x6757a0
call fcn.00462b20
mov ecx, dword [esp + 0x58]
lea eax, [esp + 0x2c]
push eax
push ecx
lea ecx, [esp + 0x58]
call fcn.005bb0f8
jmp 0x506829
xor esi, esi
lea edx, [esp + 0xc4]
mov eax, esi
push edx
push eax
mov ecx, 0x675a3c
inc esi
call fcn.004f48d0
test eax, eax
je 0x5069b0
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x10]
push edi
mov eax, dword [eax]
push eax
push ebp
push ecx
push ebx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x50691e
mov edx, dword [esp + 0xc4]
lea ecx, [esp + 0x30]
mov eax, dword [edx + 0xc]
push eax
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esp + 0xc4]
push 0xffff
push 0
lea ecx, [esp + 0x34]
mov eax, dword [edx + 0xc]
push 0
push ecx
push eax
mov ecx, 0x6757a0
call fcn.00462b20
mov edx, dword [esp + 0x58]
lea ecx, [esp + 0x2c]
push ecx
push edx
lea ecx, [esp + 0x58]
call fcn.005bb0f8
jmp 0x50691e
mov eax, dword [esp + 0x98]
xor ebx, ebx
test eax, eax
jle 0x509118
mov eax, dword [0x675b68]
mov ecx, dword [esp + 0x44]
push ecx
mov eax, dword [eax + ebx*4]
push eax
mov dword [esp + 0x2c], eax
call fcn.00501940
add esp, 8
test eax, eax
je 0x506ad9
mov eax, dword [esp + 0x24]
xor ebp, ebp
mov ecx, dword [eax + 0x64]
mov edi, dword [eax + 0x68]
test ecx, ecx
jle 0x506ad9
mov edx, dword [esp + 0x44]
push edx
push edi
push eax
call fcn.005019e0
add esp, 0xc
cmp eax, 1
jne 0x506ac8
test byte [edi + 0xe], 0xc
jne 0x506ac8
cmp word [edi + 0xc], 0xffff
je 0x506ac8
mov eax, dword [esp + 0x1c]
mov ecx, dword [edi]
mov edx, dword [esp + 0x1d8]
push eax
mov eax, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x506ac8
mov esi, dword [edi + 0x10]
push esi
call fcn.005027d0
add esp, 4
cmp eax, 3
jne 0x506a7f
mov edx, esi
shr edx, 0x10
jne 0x506a7f
lea eax, [ebx + 1]
and esi, 0xffff
and eax, 0xffff
shl eax, 0x10
or esi, eax
test ebx, ebx
jle 0x506a7f
or esi, 0x20000000
push esi
lea ecx, [esp + 0x34]
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
push 0xffff
push 0
lea ecx, [esp + 0x34]
push 0
and esi, 0xdfffffff
push ecx
push esi
push 0
mov ecx, 0x6756e0
call fcn.0047e2b0
mov eax, dword [esp + 0x58]
lea edx, [esp + 0x2c]
push edx
push eax
lea ecx, [esp + 0x58]
call fcn.005bb0f8
mov eax, dword [esp + 0x24]
inc ebp
add edi, 0x24
cmp ebp, dword [eax + 0x64]
jl 0x5069f7
mov eax, dword [esp + 0x98]
inc ebx
cmp ebx, eax
jl 0x5069c1
jmp 0x509118
mov eax, dword [esp + 0xf8]
test eax, eax
je 0x506bbd
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x506bbd
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x1d8]
mov edi, dword [esp + 0x1c]
xor esi, esi
lea ecx, [esp + 0x4c]
mov eax, esi
push ecx
push eax
mov ecx, 0x675a58
inc esi
call fcn.004f48d0
test eax, eax
je 0x506bbd
lea edx, [esi - 1]
mov ecx, 0x675a58
push edx
call fcn.004f4910
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x18], eax
test ecx, ecx
je 0x506b6d
mov edx, dword [esp + 0x38]
test edx, edx
je 0x506b6d
shr ecx, 2
push eax
push ecx
push edx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x506b1d
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x10]
push edi
mov eax, dword [eax + 0xc]
push eax
push ebp
push ecx
push ebx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x506b1d
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x30]
push edx
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x58]
add eax, 0xc
push eax
push ecx
lea ecx, [esp + 0x58]
call fcn.005bb0f8
jmp 0x506b1d
mov eax, dword [esp + 0x1c4]
test eax, eax
je 0x506c98
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x506c98
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x1d8]
mov edi, dword [esp + 0x1c]
xor esi, esi
lea edx, [esp + 0x64]
mov eax, esi
push edx
push eax
mov ecx, 0x675a20
inc esi
call fcn.004f48d0
test eax, eax
je 0x506c98
lea eax, [esi - 1]
mov ecx, 0x675a20
push eax
call fcn.004f4910
push eax
mov dword [esp + 0x1c], eax
call fcn.004f4040
add esp, 4
cmp eax, 0x40000000
jne 0x506be8
mov eax, dword [esp + 0x40]
test eax, eax
je 0x506c4c
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x506c4c
mov edx, dword [esp + 0x18]
shr eax, 2
push edx
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x506be8
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x10]
push edi
mov eax, dword [eax]
push eax
push ebp
push ecx
push ebx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x506be8
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x30]
push edx
call fcn.00491be0
push 1
lea ecx, [esp + 0x78]
call fcn.00491be0
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x58]
push eax
push ecx
lea ecx, [esp + 0x58]
call fcn.005bb0f8
jmp 0x506be8
mov eax, dword [esp + 0x88]
test eax, eax
je 0x506e97
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x506e97
mov eax, dword [esp + 0x40]
test eax, eax
je 0x506ce1
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x506ce1
shr eax, 2
push 0x10004
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x506de1
mov ebx, dword [esp + 0x48]
xor edi, edi
mov eax, dword [ebx + 0x24]
mov esi, dword [ebx + 0x28]
test eax, eax
jle 0x506de1
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x8c]
push edx
push esi
push eax
call fcn.005019e0
add esp, 0xc
test eax, eax
je 0x506d43
cmp word [esi + 0xc], 0x3f5
jne 0x506d43
test byte [esi + 0xe], 0x10
jne 0x506d43
mov ecx, dword [esi]
mov edx, dword [esp + 0x1d8]
mov eax, dword [esp + 0x10]
push ebp
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call fcn.00505c40
add esp, 0x14
test eax, eax
jne 0x506d53
mov eax, dword [ebx + 0x24]
inc edi
add esi, 0x14
cmp edi, eax
jl 0x506cf9
jmp 0x506de1
push 0x10004
lea ecx, [esp + 0x34]
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esp + 0x88]
push 0x65eec4
add edx, 0xc
lea eax, [esp + 0x120]
push edx
push eax
call fcn.005bc6b6
mov ecx, dword [esi]
lea edx, [esp + 0x138]
push ecx
push eax
push edx
mov byte [esp + 0x1b8], 0xf
call fcn.005bc6b6
push eax
mov eax, dword [esp + 0x5c]
push eax
lea ecx, [esp + 0x58]
mov byte [esp + 0x1b4], 0x10
call fcn.005bb0f8
lea ecx, [esp + 0x138]
mov byte [esp + 0x1ac], 0xf
call fcn.005bc421
lea ecx, [esp + 0x11c]
mov byte [esp + 0x1ac], 0xe
call fcn.005bc421
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
mov edi, 1
mov ecx, dword [esp + 0x88]
mov eax, edi
push 0
push eax
add ecx, 0x14
inc edi
call fcn.004f4110
mov esi, eax
test esi, esi
je 0x506e97
mov eax, dword [esp + 0x40]
mov ecx, dword [esi]
test eax, eax
mov dword [esp + 0x18], ecx
je 0x506e36
mov edx, dword [esp + 0x38]
test edx, edx
je 0x506e36
shr eax, 2
push ecx
push eax
push edx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x506dee
mov edx, dword [esp + 0x88]
push esi
mov eax, dword [edx + 0x14]
lea ecx, [edx + 0x14]
call dword [eax + 0x14]
mov esi, eax
cmp byte [esi], 0
je 0x506dee
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push ebx
push esi
push ecx
push edx
push ebp
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x506dee
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x30]
push eax
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov ecx, dword [esp + 0x58]
push esi
push ecx
lea ecx, [esp + 0x58]
call fcn.005bb0cc
jmp 0x506dee
mov ebp, dword [esp + 0x1c8]
test ebp, ebp
je 0x50701c
xor ebx, ebx
lea edi, [ebp + 0x18]
mov eax, ebx
push 0
push eax
mov ecx, edi
inc ebx
call fcn.004f4110
mov esi, eax
test esi, esi
je 0x506f61
mov eax, dword [esi]
push eax
mov dword [esp + 0x1c], eax
call fcn.005027d0
add esp, 4
cmp eax, 2
je 0x506edb
cmp eax, 3
jne 0x506eab
mov eax, dword [esp + 0x40]
test eax, eax
je 0x506f02
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x506f02
mov edx, dword [esp + 0x18]
shr eax, 2
push edx
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x506eab
mov eax, dword [edi]
push esi
mov ecx, edi
call dword [eax + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1d8]
mov esi, eax
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edx
push eax
push ecx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x506eab
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x30]
push edx
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov eax, dword [esp + 0x58]
push esi
push eax
lea ecx, [esp + 0x58]
call fcn.005bb0cc
jmp 0x506eab
xor ebx, ebx
lea edi, [ebp + 0x38]
mov eax, ebx
push 0
push eax
mov ecx, edi
inc ebx
call fcn.004f4110
mov esi, eax
test esi, esi
je 0x50701c
mov eax, dword [esi]
push eax
mov dword [esp + 0x1c], eax
call fcn.005027d0
add esp, 4
cmp eax, 2
je 0x506f96
cmp eax, 3
jne 0x506f66
mov eax, dword [esp + 0x40]
test eax, eax
je 0x506fbd
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x506fbd
mov edx, dword [esp + 0x18]
shr eax, 2
push edx
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x506f66
mov eax, dword [edi]
push esi
mov ecx, edi
call dword [eax + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1d8]
mov esi, eax
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edx
push eax
push ecx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x506f66
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x30]
push edx
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov eax, dword [esp + 0x58]
push esi
push eax
lea ecx, [esp + 0x58]
call fcn.005bb0cc
jmp 0x506f66
mov eax, dword [esp + 0x1c4]
test eax, eax
je 0x5070e6
mov ebp, dword [esp + 0x1c]
xor ebx, ebx
lea edi, [eax + 0xc]
mov eax, ebx
push 0
push eax
mov ecx, edi
inc ebx
call fcn.004f4110
mov esi, eax
test esi, esi
je 0x5070e6
mov eax, dword [esi]
push eax
mov dword [esp + 0x1c], eax
call fcn.005027d0
add esp, 4
cmp eax, 2
je 0x507064
cmp eax, 3
jne 0x507034
mov eax, dword [esp + 0x40]
test eax, eax
je 0x50708b
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x50708b
mov edx, dword [esp + 0x18]
shr eax, 2
push edx
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x507034
mov eax, dword [edi]
push esi
mov ecx, edi
call dword [eax + 0x14]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
mov esi, eax
mov eax, dword [esp + 0x14]
push ebp
push esi
push ecx
push edx
push eax
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x507034
mov ecx, dword [esp + 0x18]
push ecx
lea ecx, [esp + 0x34]
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esp + 0x58]
push esi
push edx
lea ecx, [esp + 0x58]
call fcn.005bb0cc
jmp 0x507034
xor edi, edi
mov eax, edi
push 0
push eax
mov ecx, 0x6759e4
inc edi
call fcn.004f4110
mov esi, eax
test esi, esi
je 0x509118
mov eax, dword [esi]
push eax
mov dword [esp + 0x1c], eax
call fcn.005027d0
add esp, 4
cmp eax, 2
je 0x50711b
cmp eax, 3
jne 0x5070e8
mov eax, dword [esp + 0x40]
test eax, eax
je 0x507142
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x507142
mov edx, dword [esp + 0x18]
shr eax, 2
push edx
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x5070e8
mov eax, dword [0x6759e4]
push esi
mov ecx, 0x6759e4
call dword [eax + 0x14]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1d8]
mov esi, eax
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edx
push eax
push ecx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x5070e8
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x30]
push edx
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov eax, dword [esp + 0x58]
push esi
push eax
lea ecx, [esp + 0x58]
call fcn.005bb0cc
jmp 0x5070e8
test eax, eax
mov dword [esp + 0x94], 0
jle 0x509118
mov ecx, dword [esp + 0xa4]
mov esi, dword [esp + 0x94]
push 1
lea eax, [esp + 0x1c]
mov edx, dword [ecx + esi*4]
push 1
push eax
mov ecx, 0x6757a0
mov dword [esp + 0x24], edx
call fcn.0045a400
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0x18]
push edx
mov ebx, dword [ecx + esi*4]
call fcn.005027d0
add esp, 4
cmp eax, 2
jne 0x5078e9
mov eax, dword [esp + 0x18]
push eax
call fcn.005011b0
add esp, 4
cmp eax, 2
jne 0x5074cb
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x507d4f
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x4c]
push 0
push ecx
push edx
mov ecx, 0x675a58
call fcn.004f4970
test eax, eax
je 0x5074bd
mov ebx, dword [esp + 0xdc]
test ebx, ebx
jne 0x507303
mov ebp, dword [esp + 0x1c]
mov edi, 1
mov eax, edi
push 0
push eax
mov eax, dword [esp + 0x54]
inc edi
lea ecx, [eax + 0x14]
call fcn.004f4110
mov esi, eax
test esi, esi
je 0x507307
mov eax, dword [esp + 0x40]
mov ecx, dword [esi]
test eax, eax
mov dword [esp + 0x18], ecx
je 0x5072a2
mov edx, dword [esp + 0x38]
test edx, edx
je 0x5072a2
shr eax, 2
push ecx
push eax
push edx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x50725d
mov ecx, dword [esp + 0x4c]
push esi
add ecx, 0x14
mov edx, dword [ecx]
call dword [edx + 0x14]
mov esi, eax
cmp byte [esi], 0
je 0x50725d
mov eax, dword [esp + 0x1d8]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
push ebp
push esi
push eax
push ecx
push edx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x50725d
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x30]
push eax
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov ecx, dword [esp + 0x58]
push esi
push ecx
lea ecx, [esp + 0x58]
call fcn.005bb0cc
jmp 0x50725d
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + 8]
test eax, eax
je 0x5074bd
lea ecx, [esp + 0x100]
push 0
push ecx
push eax
mov ecx, 0x675a20
call fcn.004f4970
cmp eax, 1
jne 0x5074bd
test ebx, ebx
jne 0x507401
mov ebx, dword [esp + 0x14]
xor edi, edi
mov edx, dword [esp + 0x100]
mov eax, edi
push 0
push eax
lea ecx, [edx + 0xc]
inc edi
call fcn.004f4110
mov esi, eax
test esi, esi
je 0x5074bd
mov eax, dword [esi]
push eax
mov dword [esp + 0x1c], eax
call fcn.005027d0
add esp, 4
cmp eax, 2
je 0x50737a
cmp eax, 3
jne 0x507342
mov eax, dword [esp + 0x40]
test eax, eax
je 0x5073a1
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x5073a1
mov edx, dword [esp + 0x18]
shr eax, 2
push edx
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x507342
mov eax, dword [esp + 0x100]
push esi
mov edx, dword [eax + 0xc]
lea ecx, [eax + 0xc]
call dword [edx + 0x14]
mov ecx, dword [esp + 0x10]
mov esi, eax
mov eax, dword [esp + 0x1d8]
push ebp
push esi
push eax
push ecx
push ebx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x507342
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x30]
push edx
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov eax, dword [esp + 0x58]
push esi
push eax
lea ecx, [esp + 0x58]
call fcn.005bb0cc
jmp 0x507342
mov eax, dword [esp + 0x100]
mov ecx, dword [eax + 0x3c]
test ecx, ecx
jne 0x507413
xor esi, esi
jmp 0x507416
mov esi, dword [eax + 0x34]
mov eax, dword [eax + 0x3c]
shr eax, 2
test eax, eax
jle 0x5074bd
mov edi, eax
mov edx, dword [esi]
lea ecx, [esp + 0x28]
push 0
push ecx
push edx
mov ecx, 0x675a04
call fcn.004f4970
test eax, eax
je 0x5074b3
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push ebp
mov eax, dword [eax]
push eax
mov eax, dword [esp + 0x1c]
push ecx
push edx
push eax
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x5074b3
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 0x14]
lea ecx, [esp + 0x30]
push eax
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov eax, dword [esp + 0x28]
push 0xffff
push 0
lea edx, [esp + 0x34]
mov ecx, dword [eax + 0x14]
push 0
push edx
push ecx
mov ecx, 0x6757a0
call fcn.00462b20
mov eax, dword [esp + 0x58]
lea edx, [esp + 0x2c]
push edx
push eax
lea ecx, [esp + 0x58]
call fcn.005bb0f8
add esi, 4
dec edi
jne 0x507426
mov eax, 0x10001
mov dword [esp + 0x18], eax
jmp 0x5078f6
mov ecx, dword [esp + 0x18]
push ecx
call fcn.005011b0
add esp, 4
cmp eax, 1
jne 0x507646
mov eax, dword [esp + 0xdc]
test eax, eax
jne 0x507d4f
mov eax, dword [esp + 0x18]
lea edx, [esp + 0xd0]
push 0
push edx
push eax
mov ecx, 0x6759c8
call fcn.004f4970
test eax, eax
je 0x507d4f
mov ecx, dword [esp + 0xd0]
lea ebx, [ecx + 0xc]
test ebx, ebx
je 0x507d4f
xor ebp, ebp
mov eax, ebp
push 0
push eax
mov ecx, ebx
inc ebp
call fcn.004f4110
mov esi, eax
test esi, esi
je 0x507d4f
mov edx, dword [ebx]
push esi
mov ecx, ebx
call dword [edx + 0x14]
mov esi, dword [esi]
mov edi, eax
push esi
mov dword [esp + 0x1c], esi
call fcn.005027d0
add esp, 4
cmp eax, 2
je 0x50755f
cmp eax, 3
jne 0x507525
mov eax, dword [esp + 0x40]
test eax, eax
je 0x507586
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x507586
mov edx, dword [esp + 0x18]
shr eax, 2
push edx
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x507525
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x18]
push edi
push ecx
push edx
push eax
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x507525
mov ecx, dword [esp + 0x18]
push ecx
lea ecx, [esp + 0x34]
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esp + 0xe4]
mov eax, dword [esp + 0x94]
push 0x65eec4
lea ecx, [edx + eax*4]
lea edx, [esp + 0x11c]
push ecx
push edx
call fcn.005bc6b6
push edi
push eax
lea eax, [esp + 0x128]
mov byte [esp + 0x1b4], 0x11
push eax
call fcn.005bc6b6
mov ecx, dword [esp + 0x58]
push eax
push ecx
lea ecx, [esp + 0x58]
mov byte [esp + 0x1b4], 0x12
call fcn.005bb0f8
lea ecx, [esp + 0x120]
mov byte [esp + 0x1ac], 0x11
call fcn.005bc421
lea ecx, [esp + 0x118]
mov byte [esp + 0x1ac], 0xe
call fcn.005bc421
jmp 0x507525
cmp eax, 3
jne 0x507d4f
cmp dword [esp + 0xdc], 1
jne 0x507d4f
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x64]
push 0
push edx
push eax
mov ecx, 0x675a20
call fcn.004f4970
test eax, eax
je 0x507d4f
test bl, 1
je 0x507794
mov ecx, dword [esp + 0x64]
mov eax, dword [ecx + 0x3c]
mov edx, dword [ecx + 0x3c]
shr eax, 2
test edx, edx
jne 0x507699
xor ecx, ecx
jmp 0x50769c
mov ecx, dword [ecx + 0x34]
test eax, eax
jle 0x507d4f
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
mov esi, ecx
mov edi, eax
mov edx, dword [esi]
lea ecx, [esp + 0xd4]
push 0
push ecx
push edx
mov ecx, 0x675a04
call fcn.004f4970
test eax, eax
je 0x507785
mov ecx, dword [esp + 0xd4]
mov eax, dword [0x66da44]
push eax
mov ecx, dword [ecx]
push ecx
call fcn.0052d7b8
add esp, 8
test eax, eax
je 0x507785
mov edx, dword [esp + 0xd4]
mov eax, dword [0x66da48]
push eax
mov ecx, dword [edx]
push ecx
call fcn.0052d7b8
add esp, 8
test eax, eax
je 0x507785
mov eax, dword [esp + 0xd4]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push ebx
mov eax, dword [eax]
push eax
push ecx
push edx
push ebp
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x507785
mov eax, dword [esp + 0xd4]
lea ecx, [esp + 0x30]
mov eax, dword [eax + 0x14]
push eax
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esp + 0xd4]
push 0xffff
push 0
lea ecx, [esp + 0x34]
mov eax, dword [edx + 0x14]
push 0
push ecx
push eax
mov ecx, 0x6757a0
call fcn.00462b20
mov edx, dword [esp + 0x58]
lea ecx, [esp + 0x2c]
push ecx
push edx
lea ecx, [esp + 0x58]
call fcn.005bb0f8
add esi, 4
dec edi
jne 0x5076b0
jmp 0x507d4f
lea ecx, [esp + 0x168]
call fcn.004918b0
lea ecx, [esp + 0x140]
mov byte [esp + 0x1ac], 0x13
call fcn.004918b0
lea ecx, [esp + 0x17c]
mov byte [esp + 0x1ac], 0x14
call fcn.005bae68
lea eax, [esp + 0x140]
lea ecx, [esp + 0x17c]
push eax
push 0
push 0
push ecx
mov ecx, dword [esp + 0x74]
lea edx, [esp + 0x178]
push 1
push edx
mov byte [esp + 0x1c4], 0x15
call fcn.004efda0
mov ebx, dword [esp + 0x178]
mov esi, dword [esp + 0x150]
mov ecx, dword [esp + 0x148]
shr ebx, 2
neg esi
sbb esi, esi
xor edi, edi
and esi, ecx
test ebx, ebx
jle 0x507895
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0x180]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push ebp
mov eax, dword [eax + edi*4]
push eax
mov eax, dword [esp + 0x1c]
push ecx
push edx
push eax
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x507890
mov eax, dword [esi + edi*4]
lea ecx, [esp + 0x30]
push eax
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esi + edi*4]
push 0xffff
push 0
lea ecx, [esp + 0x34]
push 0
push ecx
push edx
mov ecx, 0x6757a0
call fcn.00462b20
mov ecx, dword [esp + 0x58]
lea eax, [esp + 0x2c]
push eax
push ecx
lea ecx, [esp + 0x58]
call fcn.005bb0f8
inc edi
cmp edi, ebx
jl 0x50781f
lea ecx, [esp + 0x17c]
mov byte [esp + 0x1ac], 0x14
call fcn.005bae9b
mov esi, 0x5f7940
lea ecx, [esp + 0x140]
mov byte [esp + 0x1ac], 0x13
mov dword [esp + 0x140], esi
call fcn.00491ab0
lea ecx, [esp + 0x168]
mov byte [esp + 0x1ac], 0xe
mov dword [esp + 0x168], esi
call fcn.00491ab0
jmp 0x507d4f
cmp eax, 3
jne 0x507d4f
mov eax, dword [esp + 0x18]
mov ecx, eax
shr ecx, 0x1d
and ecx, 1
mov dword [esp + 0x6c], ecx
je 0x50791f
lea edx, [esp + 0x24]
and eax, 0xdfffffff
push edx
push eax
mov ecx, 0x6756e0
mov dword [esp + 0x20], eax
call fcn.004cd1e0
jmp 0x50792f
lea ecx, [esp + 0x24]
push ecx
push eax
mov ecx, 0x6757a0
call fcn.00462300
mov ebx, eax
test ebx, ebx
mov dword [esp + 0x20], ebx
je 0x507d4f
mov eax, dword [esp + 0xdc]
xor edi, edi
cmp eax, edi
jne 0x507bea
cmp dword [esp + 0x1b8], edi
jne 0x507a8a
mov eax, dword [esp + 0x40]
cmp eax, edi
je 0x507986
mov ecx, dword [esp + 0x38]
cmp ecx, edi
je 0x507986
shr eax, 2
push 0x10004
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x507a8a
mov eax, dword [ebx + 0x24]
mov esi, dword [ebx + 0x28]
cmp eax, edi
jle 0x507a8a
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x24]
push edx
push esi
push eax
call fcn.005019e0
add esp, 0xc
test eax, eax
je 0x5079df
cmp word [esi + 0xc], 0x3f5
jne 0x5079df
test byte [esi + 0xe], 0x10
jne 0x5079df
mov ecx, dword [esi]
mov edx, dword [esp + 0x1d8]
mov eax, dword [esp + 0x10]
push ebx
push ecx
push edx
push eax
push ebp
call fcn.00505c40
add esp, 0x14
test eax, eax
jne 0x5079f1
mov ecx, dword [esp + 0x20]
inc edi
add esi, 0x14
cmp edi, dword [ecx + 0x24]
jl 0x50799c
jmp 0x507a86
push 0x10004
lea ecx, [esp + 0x34]
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esp + 0xe4]
mov eax, dword [esp + 0x94]
push 0x65eec4
lea ecx, [edx + eax*4]
lea edx, [esp + 0x138]
push ecx
push edx
call fcn.005bc6b6
mov ecx, dword [esi]
lea edx, [esp + 0x13c]
push ecx
push eax
push edx
mov byte [esp + 0x1b8], 0x16
call fcn.005bc6b6
push eax
mov eax, dword [esp + 0x5c]
push eax
lea ecx, [esp + 0x58]
mov byte [esp + 0x1b4], 0x17
call fcn.005bb0f8
lea ecx, [esp + 0x13c]
mov byte [esp + 0x1ac], 0x16
call fcn.005bc421
lea ecx, [esp + 0x134]
mov byte [esp + 0x1ac], 0xe
call fcn.005bc421
mov ebx, dword [esp + 0x20]
mov eax, dword [ebx + 0x30]
mov edi, dword [ebx + 0x34]
test eax, eax
mov dword [esp + 0x20], 0
jle 0x507d4f
mov ebp, dword [esp + 0x94]
test byte [edi + 0x14], 2
jne 0x507bce
mov esi, dword [edi]
mov ecx, esi
shr ecx, 0x10
jne 0x507ada
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x6c]
shr edx, 0x10
shl edx, 0x10
and esi, 0xffff
or esi, edx
test eax, eax
je 0x507ada
or esi, 0x20000000
push esi
call fcn.005027d0
add esp, 4
cmp eax, 2
je 0x507af1
cmp eax, 3
jne 0x507bce
mov eax, dword [esp + 0x40]
test eax, eax
je 0x507b18
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x507b18
shr eax, 2
push esi
push eax
push ecx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x507bce
mov eax, dword [esp + 0x1c]
mov ecx, dword [edi + 8]
mov edx, dword [esp + 0x1d8]
push eax
mov eax, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x507bce
push esi
lea ecx, [esp + 0x34]
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esp + 0xe4]
push 0x65eec4
lea ecx, [esp + 0x12c]
lea eax, [edx + ebp*4]
push eax
push ecx
call fcn.005bc6b6
mov edx, dword [edi + 8]
mov byte [esp + 0x1ac], 0x18
push edx
push eax
lea eax, [esp + 0x134]
push eax
call fcn.005bc6b6
mov ecx, dword [esp + 0x58]
push eax
push ecx
lea ecx, [esp + 0x58]
mov byte [esp + 0x1b4], 0x19
call fcn.005bb0f8
lea ecx, [esp + 0x12c]
mov byte [esp + 0x1ac], 0x18
call fcn.005bc421
lea ecx, [esp + 0x128]
mov byte [esp + 0x1ac], 0xe
call fcn.005bc421
mov eax, dword [esp + 0x20]
mov ecx, dword [ebx + 0x30]
inc eax
add edi, 0x1c
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x507aa7
jmp 0x507d4f
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x70], edi
cmp dword [esp + 0x70], 1
jne 0x507c23
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x14]
test al, 0x40
je 0x507d4f
test al, 0x10
jne 0x507d4f
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
mov edx, dword [esp + 0x20]
xor edi, edi
mov eax, dword [edx + 0xc]
test eax, eax
jle 0x507d3d
mov ebp, dword [esp + 0x44]
mov ebx, edx
mov eax, dword [ebx + 0x10]
push ebp
mov eax, dword [eax + edi*4]
lea edx, [eax + eax*8]
mov eax, dword [ecx + 0x68]
lea esi, [eax + edx*4]
push esi
push ecx
call fcn.005019e0
add esp, 0xc
cmp eax, 1
jne 0x507d2d
test byte [esi + 0xe], 0xc
jne 0x507d2d
mov ecx, dword [esp + 0x1c]
mov edx, dword [esi]
mov eax, dword [esp + 0x1d8]
push ecx
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
push edx
call fcn.00505c40
add esp, 0x14
test eax, eax
je 0x507d2d
mov esi, dword [esi + 0x10]
push esi
call fcn.005027d0
add esp, 4
cmp eax, 3
jne 0x507ce4
mov eax, esi
shr eax, 0x10
jne 0x507ce4
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x6c]
shr ecx, 0x10
shl ecx, 0x10
and esi, 0xffff
or esi, ecx
test eax, eax
je 0x507ce4
push 0xffff
push 0
lea edx, [esp + 0x34]
push 0
push edx
push esi
push 0
mov ecx, 0x6756e0
call fcn.0047e2b0
or esi, 0x20000000
push esi
lea ecx, [esp + 0x34]
call fcn.00491be0
push 0
lea ecx, [esp + 0x78]
call fcn.00491be0
test esi, 0x20000000
jne 0x507d1a
push 0xffff
push 0
lea eax, [esp + 0x34]
push 0
push eax
push esi
mov ecx, 0x6757a0
call fcn.00462b20
mov edx, dword [esp + 0x58]
lea ecx, [esp + 0x2c]
push ecx
push edx
lea ecx, [esp + 0x58]
call fcn.005bb0f8
mov eax, dword [ebx + 0xc]
mov ecx, dword [esp + 0x24]
inc edi
cmp edi, eax
jl 0x507c3a
mov eax, dword [esp + 0x70]
inc eax
cmp eax, 1
mov dword [esp + 0x70], eax
jle 0x507bf2
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0xc8]
inc eax
cmp eax, ecx
mov dword [esp + 0x94], eax
jl 0x5071ba
jmp 0x509118
cmp ecx, 1
jne 0x508549
mov ebp, dword [esp + 0x1c]
mov edi, 0x66f8f8
mov esi, dword [edi]
mov eax, dword [esp + 0x1d8]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
push ebp
push esi
push eax
push ecx
push edx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x507dc0
mov eax, dword [ebx + 8]
push esi
push eax
mov ecx, ebx
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 0xa
call fcn.00491be0
add edi, 4
cmp edi, 0x66f900
jl 0x507d84
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x507f23
mov edi, dword [esp + 0x14]
xor esi, esi
lea ecx, [esp + 0x28]
mov eax, esi
push ecx
push eax
mov ecx, 0x675a04
inc esi
call fcn.004f48d0
test eax, eax
je 0x507eb4
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0xc]
test eax, eax
je 0x507e60
push eax
call fcn.004f4040
add esp, 4
xor ecx, ecx
cmp eax, 0x40000000
sete cl
mov eax, ecx
test eax, eax
je 0x507e60
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x1c8]
mov edx, dword [ecx + 0xc]
cmp edx, dword [eax + 0xc]
jne 0x507de0
mov eax, dword [0x66da44]
mov ecx, dword [ecx]
push eax
push ecx
call fcn.0052d7b8
add esp, 8
test eax, eax
je 0x507de0
mov ecx, dword [esp + 0x28]
mov eax, dword [0x66da48]
push eax
mov ecx, dword [ecx]
push ecx
call fcn.0052d7b8
add esp, 8
test eax, eax
je 0x507de0
mov edx, dword [esp + 0x28]
mov eax, dword [edx]
mov ecx, dword [eax - 8]
test ecx, ecx
je 0x507de0
mov ecx, dword [esp + 0x10]
push ebp
push eax
mov eax, dword [esp + 0x1e0]
push eax
push ecx
push edi
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x507de0
mov edx, dword [esp + 0x28]
mov eax, dword [ebx + 8]
push edx
push eax
mov ecx, ebx
call fcn.005bb0f8
mov ecx, dword [esp + 0x1d0]
push 0
call fcn.00491be0
jmp 0x507de0
xor esi, esi
lea ecx, [esp + 0xc4]
mov eax, esi
push ecx
push eax
mov ecx, 0x675a3c
inc esi
call fcn.004f48d0
test eax, eax
je 0x507f23
mov edx, dword [esp + 0xc4]
mov eax, dword [edx]
mov ecx, dword [eax - 8]
test ecx, ecx
je 0x507eb6
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
push ebp
push eax
mov eax, dword [esp + 0x1e0]
push eax
push ecx
push edx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x507eb6
mov eax, dword [esp + 0xc4]
mov ecx, dword [ebx + 8]
push eax
push ecx
mov ecx, ebx
call fcn.005bb0f8
mov ecx, dword [esp + 0x1d0]
push 0x10
call fcn.00491be0
jmp 0x507eb6
mov eax, dword [esp + 0x1c4]
test eax, eax
je 0x507fc8
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x507fc8
mov edi, dword [esp + 0x14]
xor esi, esi
lea edx, [esp + 0x64]
mov eax, esi
push edx
push eax
mov ecx, 0x675a20
inc esi
call fcn.004f48d0
test eax, eax
je 0x507fc8
lea eax, [esi - 1]
mov ecx, 0x675a20
push eax
call fcn.004f4910
push eax
mov dword [esp + 0x1c], eax
call fcn.004f4040
add esp, 4
cmp eax, 0x40000000
jne 0x507f43
mov ecx, dword [esp + 0x64]
mov eax, dword [ecx]
mov ecx, dword [eax - 8]
test ecx, ecx
je 0x507f43
mov edx, dword [esp + 0x1d8]
push ebp
push eax
mov eax, dword [esp + 0x18]
push edx
push eax
push edi
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x507f43
mov ecx, dword [esp + 0x64]
mov edx, dword [ebx + 8]
push ecx
push edx
mov ecx, ebx
call fcn.005bb0f8
mov ecx, dword [esp + 0x1d0]
push 0x12
call fcn.00491be0
jmp 0x507f43
mov eax, dword [esp + 0x88]
test eax, eax
je 0x5081c1
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x5081c1
mov ecx, dword [esp + 0x8c]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x24], ecx
xor edi, edi
mov edx, dword [eax + 0xc]
test edx, edx
jle 0x508084
mov ebx, dword [esp + 0x1cc]
mov ebp, eax
jmp 0x508011
mov ecx, dword [esp + 0x24]
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + edi*4]
mov edx, dword [ecx + 0x68]
lea eax, [eax + eax*8]
lea esi, [edx + eax*4]
mov eax, dword [esp + 0x44]
push eax
push esi
push ecx
call fcn.005019e0
add esp, 0xc
cmp eax, 1
jne 0x50807c
test byte [esi + 0xe], 0xc
jne 0x50807c
mov ecx, dword [esp + 0x1c]
mov edx, dword [esi]
mov eax, dword [esp + 0x1d8]
push ecx
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
push edx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x50807c
mov esi, dword [esi]
mov eax, dword [ebx + 8]
push esi
push eax
mov ecx, ebx
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 0xc
call fcn.00491be0
mov eax, dword [ebp + 0xc]
inc edi
cmp edi, eax
jl 0x50800d
mov eax, dword [esp + 0x48]
xor ebx, ebx
mov ecx, dword [eax + 0x24]
mov esi, dword [eax + 0x28]
test ecx, ecx
jle 0x50810d
mov ebp, dword [esp + 0x1d0]
mov edi, dword [esp + 0x1cc]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x8c]
push eax
push esi
push ecx
call fcn.005019e0
add esp, 0xc
cmp eax, 1
jne 0x508100
test byte [esi + 0xe], 0x10
jne 0x508100
mov edx, dword [esp + 0x1c]
mov eax, dword [esi]
mov ecx, dword [esp + 0x1d8]
push edx
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x1c]
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x508100
mov eax, dword [esi]
mov ecx, dword [edi + 8]
push eax
push ecx
mov ecx, edi
call fcn.005bb0cc
push 7
mov ecx, ebp
call fcn.00491be0
mov ecx, dword [esp + 0x48]
inc ebx
add esi, 0x14
cmp ebx, dword [ecx + 0x24]
jl 0x5080a2
mov ebp, dword [esp + 0x1cc]
mov ebx, 1
mov edx, dword [esp + 0x88]
mov eax, ebx
push 0
push eax
lea ecx, [edx + 0x14]
inc ebx
call fcn.004f4110
mov esi, eax
test esi, esi
je 0x5081c1
mov ecx, dword [esp + 0x88]
lea eax, [ebx - 1]
push eax
add ecx, 0x14
call fcn.004f4b90
mov edi, eax
cmp edi, 1
jne 0x50815d
mov eax, dword [esp + 0xcc]
test eax, eax
je 0x508119
mov edx, dword [esp + 0x88]
push esi
mov eax, dword [edx + 0x14]
lea ecx, [edx + 0x14]
call dword [eax + 0x14]
mov esi, eax
cmp byte [esi], 0
je 0x508119
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1d8]
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edx
push eax
push ecx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x508119
mov edx, dword [ebp + 8]
push esi
push edx
mov ecx, ebp
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
xor eax, eax
test edi, edi
setne al
add eax, 5
push eax
call fcn.00491be0
jmp 0x508119
mov ebp, dword [esp + 0x1d0]
mov edi, dword [esp + 0x1cc]
mov ebx, 0x66f900
mov ecx, dword [esp + 0x1c]
mov esi, dword [ebx]
mov edx, dword [esp + 0x1d8]
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edx
push eax
push ecx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x50820f
mov eax, dword [edi + 8]
push esi
push eax
mov ecx, edi
call fcn.005bb0cc
push 0xb
mov ecx, ebp
call fcn.00491be0
add ebx, 4
cmp ebx, 0x66f908
jl 0x5081d4
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x5082f6
mov eax, dword [esp + 0x98]
mov dword [esp + 0x20], 0
test eax, eax
jle 0x5082f6
mov edx, dword [0x675b68]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x44]
mov eax, dword [edx + eax*4]
push ecx
push eax
mov dword [esp + 0x2c], eax
call fcn.00501940
add esp, 8
test eax, eax
je 0x5082de
mov eax, dword [esp + 0x24]
xor ebx, ebx
mov ecx, dword [eax + 0x64]
mov esi, dword [eax + 0x68]
test ecx, ecx
jle 0x5082de
mov edx, dword [esp + 0x44]
push edx
push esi
push eax
call fcn.005019e0
add esp, 0xc
cmp eax, 1
jne 0x5082d1
test byte [esi + 0xe], 0xc
jne 0x5082d1
cmp word [esi + 0xc], 0xffff
je 0x5082d1
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi]
mov edx, dword [esp + 0x1d8]
push eax
mov eax, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push eax
push ecx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x5082d1
mov eax, dword [esi]
mov ecx, dword [edi + 8]
push eax
push ecx
mov ecx, edi
call fcn.005bb0cc
push 0xb
mov ecx, ebp
call fcn.00491be0
mov eax, dword [esp + 0x24]
inc ebx
add esi, 0x24
cmp ebx, dword [eax + 0x64]
jl 0x508273
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x98]
inc eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x508240
mov eax, dword [esp + 0x1c8]
test eax, eax
je 0x5083d8
mov edx, eax
xor ebp, ebp
lea ebx, [edx + 0x18]
mov eax, ebp
push 0
push eax
mov ecx, ebx
inc ebp
call fcn.004f4110
test eax, eax
je 0x50836c
mov edx, dword [ebx]
push eax
mov ecx, ebx
call dword [edx + 0x14]
mov esi, eax
cmp byte [esi], 0
je 0x50830c
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x18]
push esi
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x50830c
mov ecx, dword [edi + 8]
push esi
push ecx
mov ecx, edi
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 1
call fcn.00491be0
jmp 0x50830c
mov edx, dword [esp + 0x1c8]
xor ebp, ebp
lea ebx, [edx + 0x38]
mov eax, ebp
push 0
push eax
mov ecx, ebx
inc ebp
call fcn.004f4110
test eax, eax
je 0x5083d8
mov edx, dword [ebx]
push eax
mov ecx, ebx
call dword [edx + 0x14]
mov esi, eax
cmp byte [esi], 0
je 0x508378
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x18]
push esi
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x508378
mov ecx, dword [edi + 8]
push esi
push ecx
mov ecx, edi
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 3
call fcn.00491be0
jmp 0x508378
mov ebx, dword [esp + 0x1c4]
test ebx, ebx
je 0x508448
xor ebp, ebp
add ebx, 0xc
mov eax, ebp
push 0
push eax
mov ecx, ebx
inc ebp
call fcn.004f4110
test eax, eax
je 0x508448
mov edx, dword [ebx]
push eax
mov ecx, ebx
call dword [edx + 0x14]
mov esi, eax
cmp byte [esi], 0
je 0x5083e8
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x18]
push esi
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x5083e8
mov ecx, dword [edi + 8]
push esi
push ecx
mov ecx, edi
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 8
call fcn.00491be0
jmp 0x5083e8
xor ebx, ebx
mov eax, ebx
push 0
push eax
mov ecx, 0x6759e4
inc ebx
call fcn.004f4110
test eax, eax
je 0x5084b4
mov edx, dword [0x6759e4]
push eax
mov ecx, 0x6759e4
call dword [edx + 0x14]
mov esi, eax
cmp byte [esi], 0
je 0x50844a
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x18]
push esi
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x50844a
mov ecx, dword [edi + 8]
push esi
push ecx
mov ecx, edi
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 9
call fcn.00491be0
jmp 0x50844a
mov eax, dword [esp + 0xf8]
test eax, eax
je 0x509118
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x509118
xor esi, esi
lea edx, [esp + 0x4c]
mov eax, esi
push edx
push eax
mov ecx, 0x675a58
inc esi
call fcn.004f48d0
test eax, eax
je 0x509118
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 0xc]
mov ecx, dword [eax - 8]
test ecx, ecx
je 0x5084d4
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1d8]
push ecx
mov ecx, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x18]
push edx
push eax
push ecx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x5084d4
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x1cc]
add edx, 0xc
mov eax, dword [ecx + 8]
push edx
push eax
call fcn.005bb0f8
mov ecx, dword [esp + 0x1d0]
push 4
call fcn.00491be0
jmp 0x5084d4
mov eax, dword [esp + 0xac]
shr eax, 2
mov dword [esp + 0xc8], eax
je 0x5091cc
xor esi, esi
test eax, eax
jle 0x508ff4
mov ecx, dword [esp + 0xa4]
push 1
lea eax, [esp + 0x1c]
push 1
mov edx, dword [ecx + esi*4]
push eax
mov ecx, 0x6757a0
mov dword [esp + 0x24], edx
call fcn.0045a400
mov ecx, dword [esp + 0xb8]
mov eax, dword [esp + 0x18]
push eax
mov edx, dword [ecx + esi*4]
mov dword [esp + 0x70], edx
call fcn.005027d0
mov ecx, dword [esp + 0xfc]
add esp, 4
cmp ecx, 1
jne 0x5088fa
cmp eax, 2
jne 0x508cb4
mov ecx, dword [esp + 0x18]
push ecx
call fcn.005011b0
add esp, 4
cmp eax, 2
jne 0x508903
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x508fe4
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x4c]
push 0
push edx
push eax
mov ecx, 0x675a58
call fcn.004f4970
test eax, eax
je 0x5088ec
mov dword [esp + 0x20], 1
mov ecx, dword [esp + 0x20]
push 0
mov eax, ecx
inc ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x50]
push eax
add ecx, 0x14
call fcn.004f4110
mov edi, eax
test edi, edi
je 0x508724
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x4c]
dec edx
push edx
lea ecx, [eax + 0x14]
call fcn.004f4b90
mov ebp, eax
cmp ebp, 1
jne 0x508652
mov eax, dword [esp + 0xcc]
test eax, eax
je 0x50860a
mov eax, dword [esp + 0x40]
mov ecx, dword [edi]
test eax, eax
mov dword [esp + 0x18], ecx
je 0x50867b
mov edx, dword [esp + 0x38]
test edx, edx
je 0x50867b
shr eax, 2
push ecx
push eax
push edx
call fcn.004928c0
add esp, 0xc
cmp eax, 0xffffffff
jne 0x50860a
mov ecx, dword [esp + 0x4c]
push edi
add ecx, 0x14
mov edx, dword [ecx]
call dword [edx + 0x14]
mov edi, eax
cmp byte [edi], 0
je 0x50860a
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x18]
push edi
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x50860a
mov ecx, dword [esp + 0xa4]
mov edx, dword [ecx + esi*4]
lea ecx, [esp + 0x30]
push edx
call fcn.00491be0
mov eax, dword [esp + 0xb8]
mov ecx, dword [eax + esi*4]
push ecx
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esp + 0xe4]
mov ecx, dword [esp + 0x58]
lea eax, [edx + esi*4]
push eax
push ecx
lea ecx, [esp + 0x58]
call fcn.005bb0f8
mov edx, dword [ebx + 8]
push edi
push edx
mov ecx, ebx
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
xor eax, eax
test ebp, ebp
setne al
add eax, 5
push eax
call fcn.00491be0
jmp 0x50860a
mov ecx, dword [esp + 0x4c]
mov eax, dword [ecx + 8]
test eax, eax
je 0x5088ec
lea edx, [esp + 0xfc]
push 0
push edx
push eax
mov ecx, 0x675a20
call fcn.004f4970
cmp eax, 1
jne 0x5088ec
xor ebp, ebp
mov eax, ebp
push 0
push eax
mov eax, dword [esp + 0x104]
inc ebp
lea ecx, [eax + 0xc]
call fcn.004f4110
test eax, eax
je 0x50880b
mov ecx, dword [esp + 0xfc]
push eax
add ecx, 0xc
mov edx, dword [ecx]
call dword [edx + 0x14]
mov edi, eax
cmp byte [edi], 0
je 0x508753
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x18]
push edi
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x508753
mov ecx, dword [esp + 0xa4]
mov edx, dword [ecx + esi*4]
lea ecx, [esp + 0x30]
push edx
call fcn.00491be0
mov eax, dword [esp + 0xb8]
mov ecx, dword [eax + esi*4]
push ecx
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esp + 0xe4]
mov ecx, dword [esp + 0x58]
lea eax, [edx + esi*4]
push eax
push ecx
lea ecx, [esp + 0x58]
call fcn.005bb0f8
mov edx, dword [ebx + 8]
push edi
push edx
mov ecx, ebx
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 8
call fcn.00491be0
jmp 0x508753
mov eax, dword [esp + 0xfc]
mov ecx, dword [eax + 0x3c]
test ecx, ecx
jne 0x50881d
xor ecx, ecx
jmp 0x508820
mov ecx, dword [eax + 0x34]
mov eax, dword [eax + 0x3c]
shr eax, 2
test eax, eax
jle 0x5088ec
mov edi, ecx
mov ebp, eax
mov ecx, dword [edi]
lea eax, [esp + 0x28]
push 0
push eax
push ecx
mov ecx, 0x675a04
call fcn.004f4970
test eax, eax
je 0x5088e2
mov edx, dword [esp + 0x28]
mov eax, dword [edx]
mov ecx, dword [eax - 8]
test ecx, ecx
je 0x5088e2
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1d8]
push ecx
mov ecx, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x18]
push edx
push eax
push ecx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x5088e2
mov edx, dword [esp + 0xa4]
lea ecx, [esp + 0x30]
mov eax, dword [edx + esi*4]
push eax
call fcn.00491be0
mov eax, dword [esp + 0xb8]
lea ecx, [esp + 0x74]
mov eax, dword [eax + esi*4]
push eax
call fcn.00491be0
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0x58]
lea eax, [ecx + esi*4]
lea ecx, [esp + 0x50]
push eax
push edx
call fcn.005bb0f8
mov ecx, dword [esp + 0x28]
mov eax, dword [ebx + 8]
push ecx
push eax
mov ecx, ebx
call fcn.005bb0f8
mov ecx, dword [esp + 0x1d0]
push 0
call fcn.00491be0
add edi, 4
dec ebp
jne 0x508832
mov eax, 0x10001
mov dword [esp + 0x18], eax
jmp 0x508cc1
cmp eax, 2
jne 0x508cb4
mov edx, dword [esp + 0x18]
push edx
call fcn.005011b0
add esp, 4
cmp eax, 1
jne 0x5089f4
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0xd0]
push 0
push eax
push ecx
mov ecx, 0x6759c8
call fcn.004f4970
test eax, eax
je 0x508fe4
xor ebp, ebp
mov edx, dword [esp + 0xd0]
mov eax, ebp
push 0
push eax
lea ecx, [edx + 0xc]
inc ebp
call fcn.004f4110
test eax, eax
je 0x508fe4
mov ecx, dword [esp + 0xd0]
push eax
add ecx, 0xc
mov edx, dword [ecx]
call dword [edx + 0x14]
mov edi, eax
cmp byte [edi], 0
je 0x50893c
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x18]
push edi
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x50893c
mov ecx, dword [esp + 0xa4]
mov edx, dword [ecx + esi*4]
lea ecx, [esp + 0x30]
push edx
call fcn.00491be0
mov eax, dword [esp + 0xb8]
mov ecx, dword [eax + esi*4]
push ecx
lea ecx, [esp + 0x78]
call fcn.00491be0
mov edx, dword [esp + 0xe4]
mov ecx, dword [esp + 0x58]
lea eax, [edx + esi*4]
push eax
push ecx
lea ecx, [esp + 0x58]
call fcn.005bb0f8
mov edx, dword [ebx + 8]
push edi
push edx
mov ecx, ebx
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 0xd
call fcn.00491be0
jmp 0x50893c
mov eax, dword [esp + 0x18]
push eax
call fcn.005011b0
add esp, 4
cmp eax, 3
jne 0x508fe4
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0x64]
push 0
push ecx
push edx
mov ecx, 0x675a20
call fcn.004f4970
test eax, eax
je 0x508fe4
test byte [esp + 0x6c], 1
je 0x508b6c
mov ecx, dword [esp + 0x64]
mov eax, dword [ecx + 0x3c]
mov edx, dword [ecx + 0x3c]
shr eax, 2
test edx, edx
jne 0x508a48
xor ecx, ecx
jmp 0x508a4b
mov ecx, dword [ecx + 0x34]
test eax, eax
jle 0x508fe4
mov ebp, dword [esp + 0x1d0]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x6c], eax
mov ecx, dword [esp + 0x70]
lea eax, [esp + 0xf4]
push 0
push eax
mov edx, dword [ecx]
mov ecx, 0x675a04
push edx
call fcn.004f4970
test eax, eax
je 0x508b4d
mov ecx, dword [esp + 0xf4]
mov eax, dword [0x66da44]
push eax
mov ecx, dword [ecx]
push ecx
call fcn.0052d7b8
add esp, 8
test eax, eax
je 0x508b4d
mov edx, dword [esp + 0xf4]
mov eax, dword [0x66da48]
push eax
mov ecx, dword [edx]
push ecx
call fcn.0052d7b8
add esp, 8
test eax, eax
je 0x508b4d
mov eax, dword [esp + 0xf4]
mov edi, dword [eax]
cmp byte [edi], 0
je 0x508b4d
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1d8]
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push edi
push edx
push eax
push ecx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x508b4d
mov edx, dword [esp + 0xa4]
lea ecx, [esp + 0x30]
mov eax, dword [edx + esi*4]
push eax
call fcn.00491be0
mov eax, dword [esp + 0xb8]
lea ecx, [esp + 0x74]
mov eax, dword [eax + esi*4]
push eax
call fcn.00491be0
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0x58]
lea eax, [ecx + esi*4]
lea ecx, [esp + 0x50]
push eax
push edx
call fcn.005bb0f8
mov eax, dword [ebx + 8]
push edi
push eax
mov ecx, ebx
call fcn.005bb0cc
push 0xc
mov ecx, ebp
call fcn.00491be0
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
add ecx, 4
dec eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x6c], eax
jne 0x508a62
jmp 0x508fe4
lea ecx, [esp + 0x154]
call fcn.004918b0
lea ecx, [esp + 0x190]
mov byte [esp + 0x1ac], 0x1a
call fcn.005bae68
push 0
push 0
lea eax, [esp + 0x198]
push 0
push eax
lea ecx, [esp + 0x164]
push 1
push ecx
mov ecx, dword [esp + 0x7c]
mov byte [esp + 0x1c4], 0x1b
call fcn.004efda0
mov eax, dword [esp + 0x164]
mov dword [esp + 0x20], 0
shr eax, 2
test eax, eax
mov dword [esp + 0x6c], eax
jle 0x508c7c
mov ebp, dword [esp + 0x1d0]
mov edx, dword [esp + 0x194]
mov eax, dword [esp + 0x20]
mov edi, dword [edx + eax*4]
cmp byte [edi], 0
je 0x508c67
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1d8]
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push edi
push edx
push eax
push ecx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x508c67
mov edx, dword [esp + 0xa4]
lea ecx, [esp + 0x30]
mov eax, dword [edx + esi*4]
push eax
call fcn.00491be0
mov eax, dword [esp + 0xb8]
lea ecx, [esp + 0x74]
mov eax, dword [eax + esi*4]
push eax
call fcn.00491be0
mov ecx, dword [esp + 0xe4]
mov edx, dword [esp + 0x58]
lea eax, [ecx + esi*4]
lea ecx, [esp + 0x50]
push eax
push edx
call fcn.005bb0f8
mov eax, dword [ebx + 8]
push edi
push eax
mov ecx, ebx
call fcn.005bb0cc
push 0xc
mov ecx, ebp
call fcn.00491be0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x6c]
inc eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x508bda
lea ecx, [esp + 0x190]
mov byte [esp + 0x1ac], 0x1a
call fcn.005bae9b
lea ecx, [esp + 0x154]
mov byte [esp + 0x1ac], 0xe
mov dword [esp + 0x154], 0x5f7940
call fcn.00491ab0
jmp 0x508fe4
cmp eax, 3
jne 0x508fe4
mov eax, dword [esp + 0x18]
test eax, 0x20000000
je 0x508ce3
lea ecx, [esp + 0x24]
and eax, 0xdfffffff
push ecx
push eax
mov ecx, 0x6756e0
mov dword [esp + 0x20], eax
call fcn.004cd1e0
jmp 0x508cf3
lea edx, [esp + 0x24]
mov ecx, 0x6757a0
push edx
push eax
call fcn.00462300
mov ebp, eax
test ebp, ebp
je 0x508fe4
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x24]
push eax
push ebp
push ecx
call fcn.00501980
add esp, 0xc
test eax, eax
je 0x508fe4
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x508dfd
mov eax, dword [ebp + 0x24]
mov edi, dword [ebp + 0x28]
test eax, eax
mov dword [esp + 0x20], 0
jle 0x508dfd
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x24]
push edx
push edi
push eax
call fcn.005019e0
add esp, 0xc
cmp eax, 1
jne 0x508de6
test byte [edi + 0xe], 0x10
jne 0x508de6
mov ecx, dword [esp + 0x1c]
mov edx, dword [edi]
mov eax, dword [esp + 0x1d8]
push ecx
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
push edx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x508de6
mov eax, dword [esp + 0xa4]
lea ecx, [esp + 0x30]
mov eax, dword [eax + esi*4]
push eax
call fcn.00491be0
mov ecx, dword [esp + 0xb8]
mov eax, dword [ecx + esi*4]
lea ecx, [esp + 0x74]
push eax
call fcn.00491be0
mov edx, dword [esp + 0xe4]
lea ecx, [esp + 0x50]
lea eax, [edx + esi*4]
push eax
mov eax, dword [esp + 0x5c]
push eax
call fcn.005bb0f8
mov eax, dword [edi]
mov ecx, dword [ebx + 8]
push eax
push ecx
mov ecx, ebx
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 7
call fcn.00491be0
mov eax, dword [esp + 0x20]
mov ecx, dword [ebp + 0x24]
inc eax
add edi, 0x14
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x508d3d
mov eax, dword [ebp + 0x30]
mov edi, dword [ebp + 0x34]
test eax, eax
mov dword [esp + 0x20], 0
jle 0x508ead
add edi, 8
test byte [edi + 0xc], 2
jne 0x508e96
mov ecx, dword [esp + 0x1c]
mov edx, dword [edi]
mov eax, dword [esp + 0x1d8]
push ecx
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
push edx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x508e96
mov eax, dword [esp + 0xa4]
lea ecx, [esp + 0x30]
mov eax, dword [eax + esi*4]
push eax
call fcn.00491be0
mov ecx, dword [esp + 0xb8]
mov eax, dword [ecx + esi*4]
lea ecx, [esp + 0x74]
push eax
call fcn.00491be0
mov edx, dword [esp + 0xe4]
lea ecx, [esp + 0x50]
lea eax, [edx + esi*4]
push eax
call fcn.004e5b30
mov ecx, dword [edi]
push ecx
mov ecx, ebx
call fcn.004e5a60
mov ecx, dword [esp + 0x1d0]
push 0xd
call fcn.0040fb90
mov eax, dword [esp + 0x20]
mov ecx, dword [ebp + 0x30]
inc eax
add edi, 0x1c
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x508e16
mov eax, dword [esp + 0x1b8]
test eax, eax
jne 0x508fe4
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x70], 0
cmp dword [esp + 0x70], 1
jne 0x508ef1
mov eax, dword [ebp + 0x14]
test al, 0x40
je 0x508fe4
test al, 0x10
jne 0x508fe4
mov ecx, dword [esp + 0x8c]
mov ebp, dword [esp + 0x48]
mov dword [esp + 0x24], ecx
mov eax, dword [ebp + 0xc]
xor ebx, ebx
test eax, eax
jle 0x508fcb
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + ebx*4]
mov edx, dword [ecx + 0x68]
lea eax, [eax + eax*8]
lea edi, [edx + eax*4]
mov eax, dword [esp + 0x44]
push eax
push edi
push ecx
call fcn.005019e0
add esp, 0xc
cmp eax, 1
jne 0x508fbb
test byte [edi + 0xe], 0xc
jne 0x508fbb
mov ecx, dword [esp + 0x1c]
mov edx, dword [edi]
mov eax, dword [esp + 0x1d8]
push ecx
mov ecx, dword [esp + 0x14]
push edx
mov edx, dword [esp + 0x1c]
push eax
push ecx
push edx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x508fbb
push esi
lea ecx, [esp + 0xa0]
call fcn.0040fb50
mov eax, dword [eax]
lea ecx, [esp + 0x30]
push eax
call fcn.0040fb90
push esi
lea ecx, [esp + 0xb4]
call fcn.0040fb50
mov ecx, dword [eax]
push ecx
lea ecx, [esp + 0x78]
call fcn.0040fb90
push esi
lea ecx, [esp + 0xe4]
call fcn.0040e530
push eax
lea ecx, [esp + 0x54]
call fcn.004e5b30
mov edx, dword [edi]
mov ecx, dword [esp + 0x1cc]
push edx
call fcn.004e5a60
mov ecx, dword [esp + 0x1d0]
push 0xc
call fcn.0040fb90
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x24]
inc ebx
cmp ebx, eax
jl 0x508efe
mov eax, dword [esp + 0x70]
mov ebx, dword [esp + 0x1cc]
inc eax
cmp eax, 1
mov dword [esp + 0x70], eax
jle 0x508ec8
mov eax, dword [esp + 0xc8]
inc esi
cmp esi, eax
jl 0x50856a
lea ecx, [esp + 0x30]
call fcn.0040fbc0
mov edi, eax
test edi, edi
jle 0x5090ce
push 0
lea ecx, [esp + 0x34]
call fcn.0040fb50
mov eax, dword [eax]
mov esi, 1
cmp edi, esi
mov dword [esp + 0x18], eax
jl 0x5090ce
push esi
lea ecx, [esp + 0x34]
call fcn.0040fb50
mov ecx, dword [eax]
mov eax, dword [esp + 0x18]
cmp ecx, eax
jne 0x509043
inc esi
cmp esi, edi
jle 0x509025
jmp 0x5090ce
mov ecx, ebx
call fcn.00509630
mov ebp, eax
xor esi, esi
test ebp, ebp
jl 0x5090ce
push 0x65eec4
push esi
lea ecx, [esp + 0x58]
call fcn.0040e530
lea edx, [esp + 0x128]
push eax
push edx
call fcn.005bc6b6
mov edi, eax
push esi
mov ecx, ebx
mov byte [esp + 0x1b0], 0x1c
call fcn.0040e530
push eax
lea eax, [esp + 0x134]
push edi
push eax
call fcn.005bc650
push eax
push esi
mov ecx, ebx
mov byte [esp + 0x1b4], 0x1d
call fcn.004e5bf0
lea ecx, [esp + 0x130]
mov byte [esp + 0x1ac], 0x1c
call fcn.005bc421
lea ecx, [esp + 0x124]
mov byte [esp + 0x1ac], 0xe
call fcn.005bc421
inc esi
cmp esi, ebp
jle 0x509052
mov ecx, ebx
call fcn.0040e510
cmp eax, 1
jne 0x509118
push 0
mov ecx, ebx
call fcn.0040e530
mov ecx, dword [esp + 0x90]
push eax
lea eax, [ecx - 1]
lea ecx, [esp + 0x108]
push eax
call fcn.0040e530
push eax
call fcn.00509640
test al, al
je 0x509118
mov ecx, ebx
call fcn.0040f200
mov ecx, dword [esp + 0x1d0]
call fcn.0040fb30
mov ebp, dword [esp + 0x68]
mov eax, dword [esp + 0x90]
inc ebp
cmp ebp, eax
mov dword [esp + 0x68], ebp
jl 0x506688
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1ac], 8
call fcn.005bc421
lea ecx, [esp + 0x104]
mov byte [esp + 0x1ac], 5
call fcn.005bae9b
lea ecx, [esp + 0xe0]
mov byte [esp + 0x1ac], 4
call fcn.005bae9b
lea ecx, [esp + 0x50]
mov byte [esp + 0x1ac], 3
call fcn.005bae9b
lea ecx, [esp + 0xb0]
mov byte [esp + 0x1ac], 2
call fcn.00409de0
lea ecx, [esp + 0x74]
mov byte [esp + 0x1ac], 1
call fcn.00409de0
lea ecx, [esp + 0x9c]
mov byte [esp + 0x1ac], 0
call fcn.00409de0
lea ecx, [esp + 0x30]
mov dword [esp + 0x1ac], 0xffffffff
call fcn.00409de0
jmp 0x50960c
lea ecx, [esp + 0x2c]
mov byte [esp + 0x1ac], 8
call fcn.005bc421
lea ecx, [esp + 0x104]
mov byte [esp + 0x1ac], 5
call fcn.005bae9b
lea ecx, [esp + 0xe0]
mov byte [esp + 0x1ac], 4
call fcn.005bae9b
lea ecx, [esp + 0x50]
mov byte [esp + 0x1ac], 3
call fcn.005bae9b
lea ecx, [esp + 0xb0]
mov byte [esp + 0x1ac], 2
mov dword [esp + 0xb0], edi
call fcn.00491ab0
lea ecx, [esp + 0x74]
mov byte [esp + 0x1ac], 1
mov dword [esp + 0x74], edi
call fcn.00491ab0
lea ecx, [esp + 0x9c]
mov byte [esp + 0x1ac], 0
mov dword [esp + 0x9c], edi
call fcn.00491ab0
mov dword [esp + 0x1ac], 0xffffffff
mov dword [esp + 0x30], edi
jmp 0x509603
mov edx, dword [esp + 0x1bc]
lea ecx, [esp + 0x10]
mov eax, dword [edx]
mov dword [esp + 0x10], eax
lea eax, [esp + 0xd8]
push eax
push ecx
call fcn.00500500
add esp, 8
cmp al, 0x3b
mov byte [esp + 0x14], al
mov dword [esp + 0x1c], 1
je 0x5092ab
cmp al, 0x3a
jne 0x5092db
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0x14]
xor edx, edx
test eax, eax
mov eax, dword [0x675558]
sete dl
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x1d8]
push eax
mov eax, dword [esp + 0x14]
push ecx
push edx
push eax
call dword [0x675fe8]
mov ebp, dword [esp + 0x1d0]
mov edi, dword [esp + 0x1cc]
cmp ebx, 5
je 0x50937d
cmp ebx, 8
je 0x509436
push 0
push 0
push 0
mov ecx, 0x6756e0
call fcn.00474240
mov ecx, dword [0x6760bc]
xor ebx, ebx
lea eax, [ecx - 1]
test eax, eax
mov dword [esp + 0x98], eax
jl 0x50957f
mov edx, dword [0x6760b8]
mov esi, dword [edx + ebx*4]
cmp byte [esi], 0
je 0x50936c
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1d8]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x18]
push esi
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x50936c
mov eax, dword [edi + 8]
push esi
push eax
mov ecx, edi
call fcn.005bb0cc
push 0x13
mov ecx, ebp
call fcn.00491be0
mov eax, dword [esp + 0x98]
inc ebx
cmp ebx, eax
jle 0x509325
jmp 0x50957f
mov eax, dword [0x66dc88]
test eax, eax
je 0x5093d1
mov ebx, 0x66dc88
mov ecx, dword [esp + 0x1c]
mov esi, dword [ebx + 4]
mov edx, dword [esp + 0x1d8]
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edx
push eax
push ecx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x5093c7
mov eax, dword [edi + 8]
push esi
push eax
mov ecx, edi
call fcn.005bb0cc
push 0x11
mov ecx, ebp
call fcn.00491be0
mov eax, dword [ebx + 0x10]
add ebx, 0x10
test eax, eax
jne 0x50938b
xor ebx, ebx
lea edx, [esp + 0xd0]
mov eax, ebx
push edx
push eax
mov ecx, 0x6759c8
inc ebx
call fcn.004f48d0
test eax, eax
je 0x509436
mov eax, dword [esp + 0xd0]
mov esi, dword [eax]
cmp byte [esi], 0
je 0x5093d3
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x1d8]
mov eax, dword [esp + 0x10]
push ecx
mov ecx, dword [esp + 0x18]
push esi
push edx
push eax
push ecx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x5093d3
mov edx, dword [edi + 8]
push esi
push edx
mov ecx, edi
call fcn.005bb0cc
push 0x12
mov ecx, ebp
call fcn.00491be0
jmp 0x5093d3
mov ebp, dword [esp + 0x1c4]
xor ebx, ebx
lea ecx, [esp + 0x64]
mov eax, ebx
push ecx
push eax
mov ecx, 0x675a20
inc ebx
call fcn.004f48d0
test eax, eax
je 0x5094b3
mov eax, dword [esp + 0x64]
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x50943f
cmp dword [esp + 0x68], 8
jne 0x50946c
cmp eax, ebp
je 0x50943f
mov esi, dword [eax]
cmp byte [esi], 0
je 0x50943f
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x1d8]
mov ecx, dword [esp + 0x10]
push edx
mov edx, dword [esp + 0x18]
push esi
push eax
push ecx
push edx
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x50943f
mov eax, dword [edi + 8]
push esi
push eax
mov ecx, edi
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 0x12
call fcn.00491be0
jmp 0x50943f
cmp dword [esp + 0x68], 5
jne 0x50957f
mov esi, dword [0x675b88]
xor ebp, ebp
shr esi, 2
test esi, esi
mov dword [esp + 0x90], esi
jle 0x50957f
mov ecx, dword [0x675b68]
mov edx, dword [esp + 0x44]
push edx
mov eax, dword [ecx + ebp*4]
push eax
mov dword [esp + 0x2c], eax
call fcn.00501940
add esp, 8
test eax, eax
je 0x509576
mov eax, dword [esp + 0x24]
xor ebx, ebx
mov ecx, dword [eax + 0x54]
mov esi, dword [eax + 0x58]
test ecx, ecx
jle 0x50956f
mov ecx, dword [esp + 0x44]
push ecx
push esi
push eax
call fcn.00501980
add esp, 0xc
test eax, eax
je 0x509562
test byte [esi + 0x14], 3
jne 0x509562
mov edx, dword [esp + 0x1c]
mov eax, dword [esi]
mov ecx, dword [esp + 0x1d8]
push edx
mov edx, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x1c]
push ecx
push edx
push eax
call fcn.00501c30
add esp, 0x14
test eax, eax
je 0x509562
mov eax, dword [esi]
mov ecx, dword [edi + 8]
push eax
push ecx
mov ecx, edi
call fcn.005bb0cc
mov ecx, dword [esp + 0x1d0]
push 2
call fcn.00491be0
mov eax, dword [esp + 0x24]
inc ebx
add esi, 0x38
cmp ebx, dword [eax + 0x54]
jl 0x509507
mov esi, dword [esp + 0x90]
inc ebp
cmp ebp, esi
jl 0x5094d8
lea ecx, [esp + 0xe0]
mov byte [esp + 0x1ac], 4
call fcn.005bae9b
lea ecx, [esp + 0x50]
mov byte [esp + 0x1ac], 3
call fcn.005bae9b
mov esi, 0x5f7940
lea ecx, [esp + 0xb0]
mov byte [esp + 0x1ac], 2
mov dword [esp + 0xb0], esi
call fcn.00491ab0
lea ecx, [esp + 0x74]
mov byte [esp + 0x1ac], 1
mov dword [esp + 0x74], esi
call fcn.00491ab0
lea ecx, [esp + 0x9c]
mov byte [esp + 0x1ac], 0
mov dword [esp + 0x9c], esi
call fcn.00491ab0
mov dword [esp + 0x1ac], 0xffffffff
mov dword [esp + 0x30], esi
lea ecx, [esp + 0x30]
call fcn.00491ab0
mov ecx, dword [esp + 0x1a4]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x1a0
ret