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

Disassembly:
push 0xffffffffffffffff
push 0x4c1dff
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x2b0
mov eax, dword [0x51eea4]
xor eax, dword [esp + 0x2bc]
push ebx
push ebp
push esi
push edi
mov edi, ecx
mov ecx, dword [edi + 0xc4]
mov dword [esp + 0x2bc], eax
mov eax, dword [ecx + 0x28]
push eax
mov dword [esp + 0x20], edi
call fcn.0043a8b0
push 0x10
mov dword [esp + 0x68], eax
call fcn.004ad909
add esp, 4
mov dword [esp + 0x28], eax
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x2c8], ebx
je 0x454433
push ecx
mov ecx, esp
mov dword [esp + 0x64], esp
mov dword [ecx], ebx
push 0x515270
mov ecx, eax
call fcn.0040cb30
mov ebp, eax
mov dword [esp + 0x4c], ebp
jmp 0x454439
mov dword [esp + 0x4c], ebx
mov ebp, ebx
cmp ebp, ebx
mov dword [esp + 0x18c], ebp
je 0x454447
inc dword [ebp + 4]
mov eax, dword [ebp]
push ebx
push ebx
push 1
lea ecx, [esp + 0x40]
push ecx
mov ecx, ebp
mov dword [esp + 0x2d8], 1
call dword [eax + 4]
mov eax, dword [esp + 0x34]
mov edx, dword [eax + 0xc]
cmp edx, ebx
mov byte [esp + 0x2c8], 2
je 0x45451f
mov ecx, dword [eax + 0x10]
sub ecx, edx
sar ecx, 5
cmp ecx, ebx
je 0x45451f
mov eax, 0x4f4a4c
mov ecx, edx
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x454494
sub eax, esi
push eax
mov eax, dword [ecx + 0x14]
push 0x4f4a4c
push eax
push ebx
call fcn.00401470
test eax, eax
je 0x454566
lea ecx, [esp + 0x30]
push ecx
call fcn.00408c00
mov ecx, eax
call fcn.004014f0
mov eax, dword [eax]
push 0x51ff63
push str.Error_loading_level_map:_first_tag_must_be__map_
push 0x51ff84
mov ecx, eax
mov byte [esp + 0x2d4], 3
call fcn.00401560
mov ecx, eax
call fcn.00403390
mov ecx, eax
call fcn.00403f50
mov eax, dword [esp + 0x30]
cmp eax, ebx
mov byte [esp + 0x2c8], 2
je 0x45451b
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x28], edx
jne 0x45451b
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x34]
cmp eax, ebx
mov byte [esp + 0x2c8], 1
je 0x454542
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x28], edx
jne 0x454542
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [ebp + 4]
dec eax
mov dword [esp + 0x2c8], 0xffffffff
mov dword [ebp + 4], eax
jne 0x45455f
mov edx, dword [ebp]
push 1
mov ecx, ebp
call dword [edx]
xor al, al
jmp 0x455ad6
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0xc]
mov ebp, dword [eax + 0x1c]
cmp ebp, ebx
mov dword [esp + 0x30], ebp
je 0x45457b
inc dword [ebp + 4]
lea ecx, [edi + 0xd0]
mov byte [esp + 0x2c8], 4
call fcn.004120c0
mov dword [esp + 0x190], ebx
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
cmp esi, eax
mov byte [esp + 0x2c8], 5
mov dword [esp + 0x54], ebx
mov dword [esp + 0x48], esi
mov dword [esp + 0x28], eax
je 0x455a6f
jmp 0x4545c0
mov eax, 0x4f130c
mov dword [esp + 0x88], 0xf
mov dword [esp + 0x84], 0
mov byte [esp + 0x74], 0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4545e3
sub eax, edx
push eax
push 0x4f130c
lea ecx, [esp + 0x78]
call fcn.00402cd0
mov eax, str.level
mov byte [esp + 0x2c8], 6
lea edx, [eax + 1]
jmp 0x454610
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x454610
mov ecx, dword [esi + 0x14]
sub eax, edx
push eax
push str.level
push ecx
push 0
mov ecx, esi
call fcn.00401470
test eax, eax
jne 0x455a22
push 0x54
call fcn.004ad909
add esp, 4
mov dword [esp + 0x10], eax
xor edi, edi
cmp eax, edi
mov byte [esp + 0x2c8], 7
je 0x45465b
mov ecx, eax
call fcn.00452ef0
mov ebx, eax
jmp 0x45465d
xor ebx, ebx
cmp ebx, edi
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x68], ebx
je 0x45466c
inc dword [ebx + 4]
mov eax, dword [esi + 0x1c]
mov esi, dword [eax + 0xc]
mov eax, dword [eax + 0x10]
cmp esi, eax
mov byte [esp + 0x2c8], 8
mov dword [esp + 0x10], eax
je 0x454921
mov eax, str.source
mov ebp, 0xf
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x454696
sub eax, edx
mov edx, dword [esi + 0x14]
push eax
push str.source
push edx
push edi
mov ecx, esi
call fcn.00401470
test eax, eax
jne 0x4546cc
mov eax, dword [esi + 0x1c]
push 0xffffffffffffffff
push edi
add eax, 0x24
lea ecx, [ebx + 0x14]
push eax
call fcn.00402aa0
jmp 0x454910
mov eax, 0x4f26f0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4546d4
sub eax, edx
push eax
mov eax, dword [esi + 0x14]
push 0x4f26f0
push eax
push edi
mov ecx, esi
call fcn.00401470
test eax, eax
jne 0x45472d
mov eax, dword [esi + 0x1c]
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x30], esp
push 0xffffffffffffffff
push edi
add eax, 0x24
mov dword [ecx + 0x18], ebp
mov dword [ecx + 0x14], edi
push eax
mov byte [ecx + 4], 0
call fcn.00402aa0
call fcn.00410370
fstp dword [esp + 0x30]
mov ecx, dword [esp + 0x30]
add esp, 0x1c
mov dword [ebx + 8], ecx
jmp 0x454910
mov eax, 0x4f26ec
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x454735
sub eax, edx
mov edx, dword [esi + 0x14]
push eax
push 0x4f26ec
push edx
push edi
mov ecx, esi
call fcn.00401470
test eax, eax
jne 0x45478e
mov eax, dword [esi + 0x1c]
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x30], esp
push 0xffffffffffffffff
push edi
add eax, 0x24
mov dword [ecx + 0x18], ebp
mov dword [ecx + 0x14], edi
push eax
mov byte [ecx + 4], 0
call fcn.00402aa0
call fcn.00410370
fstp dword [esp + 0x30]
mov eax, dword [esp + 0x30]
add esp, 0x1c
mov dword [ebx + 0xc], eax
jmp 0x454910
mov eax, str.icon
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x454796
mov ecx, dword [esi + 0x14]
sub eax, edx
push eax
push str.icon
push ecx
push edi
mov ecx, esi
call fcn.00401470
test eax, eax
jne 0x45483d
mov eax, dword [esi + 0x1c]
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x30], esp
push 0xffffffffffffffff
push edi
add eax, 0x24
mov dword [ecx + 0x18], ebp
mov dword [ecx + 0x14], edi
push eax
mov byte [ecx + 4], 0
call fcn.00402aa0
lea edx, [esp + 0x1d0]
push edx
call fcn.004510c0
add esp, 0x20
push 0xffffffffffffffff
push edi
push eax
lea ecx, [esp + 0x7c]
mov byte [esp + 0x2d4], 9
call fcn.00402aa0
cmp dword [esp + 0x1cc], 0x10
mov byte [esp + 0x2c8], 8
jb 0x454822
mov eax, dword [esp + 0x1b8]
push eax
call fcn.004ade5d
add esp, 4
mov dword [esp + 0x1cc], ebp
mov dword [esp + 0x1c8], edi
mov byte [esp + 0x1b8], 0
jmp 0x454910
mov eax, str.parent
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x454845
mov ecx, dword [esi + 0x14]
sub eax, edx
push eax
push str.parent
push ecx
push edi
mov ecx, esi
call fcn.00401470
test eax, eax
jne 0x4548fa
mov eax, dword [esp + 0x1c]
mov edi, dword [eax + 0xd4]
mov ebp, dword [eax + 0xd8]
cmp edi, ebp
je 0x454910
mov eax, dword [esi + 0x1c]
mov ecx, dword [edi]
mov edx, dword [eax + 0x38]
add ecx, 0x14
cmp dword [eax + 0x3c], 0x10
jb 0x454896
mov eax, dword [eax + 0x28]
jmp 0x454899
add eax, 0x28
push edx
mov edx, dword [ecx + 0x14]
push eax
push edx
push 0
call fcn.00401470
test eax, eax
je 0x4548b3
add edi, 4
cmp edi, ebp
jne 0x454880
jmp 0x454910
mov edi, dword [edi]
test edi, edi
mov dword [esp + 0x18], edi
je 0x4548c0
inc dword [edi + 4]
lea eax, [esp + 0x18]
push eax
lea ecx, [ebx + 0x3c]
mov byte [esp + 0x2cc], 0xa
call fcn.00454130
mov ecx, dword [esp + 0x18]
test ecx, ecx
mov byte [esp + 0x2c8], 8
je 0x454910
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
test eax, eax
mov dword [ecx + 4], edx
jne 0x454910
mov edx, dword [ecx]
push 1
call dword [edx]
jmp 0x454910
push str.bonus
push esi
call fcn.00401dc0
add esp, 8
test al, al
je 0x454910
mov byte [ebx + 0x38], 1
mov eax, dword [esp + 0x10]
add esi, 0x20
xor edi, edi
cmp esi, eax
jne 0x454689
call fcn.00437070
mov eax, dword [eax + 8]
lea ecx, [ebx + 0x14]
push ecx
mov ecx, dword [esp + 0x68]
push eax
call fcn.0043b800
mov dword [ebx + 0x34], eax
mov ecx, dword [ebx + 0x50]
cmp ecx, edi
mov dword [ebx + 0x50], edi
je 0x454957
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, edi
mov dword [ecx + 4], edx
jne 0x454957
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x54]
push eax
lea ecx, [esp + 0x184]
push 0x4f1300
push ecx
call fcn.004ae68f
mov esi, 0xf
lea eax, [esp + 0x18c]
add esp, 0xc
mov dword [esp + 0xf0], esi
mov dword [esp + 0xec], edi
mov byte [esp + 0xdc], 0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x454996
sub eax, edx
push eax
lea edx, [esp + 0x184]
push edx
lea ecx, [esp + 0xe0]
call fcn.00402cd0
lea eax, [esp + 0xd8]
push eax
lea ecx, [esp + 0x94]
push ecx
mov ecx, dword [esp + 0x24]
mov byte [esp + 0x2d0], 0xb
call fcn.0040fff0
mov eax, dword [eax]
cmp eax, edi
mov byte [esp + 0x2c8], 0xc
je 0x4549e6
inc dword [eax + 4]
mov ecx, dword [ebx + 0x4c]
cmp ecx, edi
mov dword [ebx + 0x4c], eax
je 0x454a03
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, edi
mov dword [ecx + 4], edx
jne 0x454a03
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x90]
cmp eax, edi
mov byte [esp + 0x2c8], 0xb
je 0x454a2f
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x10], eax
jne 0x454a2f
mov edx, dword [ecx]
push 1
call dword [edx]
cmp dword [esp + 0xf0], 0x10
mov byte [esp + 0x2c8], 8
jb 0x454a51
mov eax, dword [esp + 0xdc]
push eax
call fcn.004ade5d
add esp, 4
mov eax, 0x4f130c
mov dword [esp + 0xf0], esi
mov dword [esp + 0xec], edi
mov byte [esp + 0xdc], 0
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x454a70
mov ecx, dword [esp + 0x84]
sub eax, edx
cmp ecx, ecx
mov ebp, ecx
jae 0x454a86
cmp ebp, edi
je 0x454aba
cmp ebp, eax
mov ecx, ebp
jb 0x454a92
mov ecx, eax
cmp dword [esp + 0x88], 0x10
mov esi, dword [esp + 0x74]
jae 0x454aa4
lea esi, [esp + 0x74]
mov edi, 0x4f130c
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x454ab4
sbb edx, edx
sbb edx, 0xffffffff
xor edi, edi
cmp edx, edi
jne 0x454acf
cmp ebp, eax
jb 0x454acd
xor edx, edx
cmp ebp, eax
setne dl
xor edi, edi
cmp edx, edi
je 0x454b1f
jmp 0x454acf
xor edi, edi
mov ecx, dword [ebx + 0x4c]
lea edx, [esp + 0x94]
push edx
call fcn.0040df80
mov eax, dword [eax]
lea ecx, [esp + 0x70]
push ecx
mov ecx, eax
mov byte [esp + 0x2cc], 0xd
call fcn.0042c070
mov eax, dword [esp + 0x94]
cmp eax, edi
mov byte [esp + 0x2c8], 8
je 0x454b1f
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x10], edx
jne 0x454b1f
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x54]
mov eax, dword [ebx + 0x4c]
inc ecx
cmp eax, edi
mov dword [esp + 0x54], ecx
je 0x454b9c
lea edx, [esp + 0xa4]
mov ecx, eax
push edx
call fcn.0040df80
mov eax, dword [eax]
mov esi, dword [ebx + 0x4c]
push 2
mov ecx, eax
mov byte [esp + 0x2cc], 0xe
call fcn.00481fe0
mov ecx, eax
call fcn.0040dca0
mov eax, dword [ebx + 0xc]
push ecx
mov ecx, dword [ebx + 8]
fstp dword [esp]
push eax
push ecx
mov ecx, esi
call fcn.0040dfc0
mov eax, dword [esp + 0xa4]
cmp eax, edi
mov byte [esp + 0x2c8], 8
je 0x454b9c
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x10], edx
jne 0x454b9c
mov eax, dword [ecx]
push 1
call dword [eax]
mov esi, 0xf
mov eax, str.data_gui_component_flag.xml
mov dword [esp + 0x128], esi
mov dword [esp + 0x124], edi
mov byte [esp + 0x114], 0
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x454bc0
sub eax, edx
push eax
push str.data_gui_component_flag.xml
lea ecx, [esp + 0x118]
call fcn.00402cd0
push edi
push edi
lea ecx, [esp + 0x118]
push ecx
lea edx, [esp + 0x98]
push edx
mov byte [esp + 0x2d8], 0xf
call fcn.00415620
mov ecx, eax
call fcn.00431b90
mov eax, dword [eax]
cmp eax, edi
mov byte [esp + 0x2c8], 0x10
je 0x454c12
inc dword [eax + 4]
mov ecx, dword [ebx + 0x50]
cmp ecx, edi
mov dword [ebx + 0x50], eax
je 0x454c2f
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, edi
mov dword [ecx + 4], edx
jne 0x454c2f
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x8c]
cmp eax, edi
mov byte [esp + 0x2c8], 0xf
je 0x454c59
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x10], edx
jne 0x454c59
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x128]
mov ebp, 0x10
cmp eax, ebp
mov byte [esp + 0x2c8], 8
jb 0x454c81
mov ecx, dword [esp + 0x114]
push ecx
call fcn.004ade5d
add esp, 4
mov ecx, dword [ebx + 0x50]
push edi
push 2
mov dword [esp + 0x130], esi
mov dword [esp + 0x12c], edi
mov byte [esp + 0x11c], 0
call fcn.00424cf0
push 0x447a0000
push 0xc47a0000
push 0xc47a0000
lea ecx, [esp + 0x1dc]
call fcn.00401450
mov ecx, dword [ebx + 0x50]
push 1
lea edx, [esp + 0x1d4]
push edx
call fcn.00424690
mov eax, dword [ebx + 0x50]
cmp eax, edi
push 1
push 1
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
mov dword [ecx], eax
je 0x454ce6
inc dword [eax + 4]
mov byte [esp + 0x2d4], 0x11
call fcn.0040e220
mov edx, dword [eax]
mov ecx, eax
mov byte [esp + 0x2d4], 8
call dword [edx + 0x10]
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + 0xcc]
mov edx, dword [eax + 0x58]
mov ecx, dword [eax + 0x54]
add eax, 0x40
cmp edx, ebp
jb 0x454d1e
mov eax, dword [eax + 4]
jmp 0x454d21
add eax, 4
push ecx
push eax
mov eax, dword [ebx + 0x28]
lea ecx, [ebx + 0x14]
push eax
push edi
call fcn.00401470
test eax, eax
jne 0x455746
cmp dword [ebx + 0x34], 1
jne 0x455746
mov ecx, dword [esi + 0xcc]
mov eax, 0x4f130c
add ecx, 0x40
lea esi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x454d53
sub eax, esi
push eax
push 0x4f130c
call fcn.00402cd0
lea edx, [esp + 0xac]
mov dword [esp + 0x38], 0x5dc
mov dword [esp + 0x3c], edi
mov ecx, dword [ebx + 0x4c]
push edx
call fcn.0040df80
mov ecx, dword [eax]
mov eax, dword [ecx]
push edi
lea edx, [esp + 0xb8]
push edx
mov byte [esp + 0x2d0], 0x12
call dword [eax + 0x1c]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.00431f20
add esp, 8
mov eax, dword [esp + 0xb4]
cmp eax, edi
mov byte [esp + 0x2c8], 0x13
je 0x454dd3
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x10], edx
jne 0x454dd3
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0xac]
cmp eax, edi
mov byte [esp + 0x2c8], 0x14
je 0x454dfd
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x10], edx
jne 0x454dfd
mov eax, dword [ecx]
push 1
call dword [eax]
mov ebp, dword [esp + 0x50]
lea ecx, [esp + 0x38]
push ecx
mov ecx, ebp
call fcn.00422c20
mov ecx, ebp
call fcn.0040d980
push eax
lea ecx, [esp + 0x1f8]
call fcn.0040de60
lea edx, [esp + 0x1f4]
push edx
mov ecx, ebp
mov dword [esp + 0x1f8], edi
mov dword [esp + 0x1fc], edi
call fcn.0042adf0
cmp ebp, edi
push ecx
mov eax, esp
mov dword [esp + 0x14], esp
mov dword [eax], ebp
je 0x454e4e
inc dword [ebp + 4]
mov eax, dword [ebx + 0x4c]
lea ecx, [esp + 0xa4]
push ecx
mov ecx, dword [eax + 0x24]
call fcn.0040df80
mov ecx, dword [eax]
mov edx, dword [ecx]
mov byte [esp + 0x2cc], 0x15
call dword [edx + 8]
mov eax, dword [esp + 0xa0]
cmp eax, edi
mov byte [esp + 0x2c8], 0x14
je 0x454e9c
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x10], eax
jne 0x454e9c
mov edx, dword [ecx]
push 1
call dword [edx]
cmp ebp, edi
push 1
push 1
push ecx
mov eax, esp
mov dword [esp + 0x1c], esp
mov dword [eax], ebp
je 0x454eb0
inc dword [ebp + 4]
mov byte [esp + 0x2d4], 0x16
call fcn.0040e220
mov edx, dword [eax]
mov ecx, eax
mov byte [esp + 0x2d4], 0x14
call dword [edx + 0x10]
mov ecx, dword [ebx + 0x4c]
lea eax, [esp + 0xb0]
push eax
call fcn.0040df80
mov eax, dword [eax]
push edi
mov ecx, eax
mov byte [esp + 0x2cc], 0x17
call fcn.00424c80
mov eax, dword [esp + 0xb0]
cmp eax, edi
mov byte [esp + 0x2c8], 0x14
je 0x454f18
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x10], edx
jne 0x454f18
mov eax, dword [ecx]
push 1
call dword [eax]
lea ecx, [esp + 0x9c]
push ecx
call fcn.0040d4d0
mov ecx, eax
call fcn.00401650
mov ecx, dword [eax]
mov byte [esp + 0x2c8], 0x18
call fcn.00401120
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x9c]
cmp eax, edi
mov dword [esp + 0x44], edx
mov byte [esp + 0x2c8], 0x14
je 0x454f6d
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x10], edx
jne 0x454f6d
mov eax, dword [ecx]
push 1
call dword [eax]
push 0x40
call fcn.004ad909
add esp, 4
mov dword [esp + 0x10], eax
cmp eax, edi
mov byte [esp + 0x2c8], 0x19
je 0x454fbc
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
add ecx, edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0xd0], ecx
lea ecx, [esp + 0xd0]
adc edx, esi
push ecx
mov ecx, eax
mov dword [esp + 0xd8], edx
call fcn.00423890
mov esi, eax
jmp 0x454fbe
xor esi, esi
cmp esi, edi
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], esi
je 0x454fcd
inc dword [esi + 4]
push 0xffffff
mov ecx, esi
mov byte [esp + 0x2cc], 0x1a
call fcn.00422400
cmp esi, edi
push ecx
mov eax, esp
mov dword [esp + 0x1c], esp
mov dword [eax], esi
je 0x454ff1
inc dword [esi + 4]
mov ecx, dword [ebx + 0x4c]
lea edx, [esp + 0xac]
push edx
call fcn.0040df80
mov ecx, dword [eax]
mov byte [esp + 0x2cc], 0x1b
call fcn.0042b080
mov eax, dword [esp + 0xa8]
cmp eax, edi
mov byte [esp + 0x2c8], 0x1a
je 0x45503c
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x18], eax
jne 0x45503c
mov edx, dword [ecx]
push 1
call dword [edx]
push 0x40
call fcn.004ad909
add esp, 4
mov dword [esp + 0x18], eax
cmp eax, edi
mov byte [esp + 0x2c8], 0x1c
je 0x455093
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
add ecx, edx
mov edx, dword [esp + 0x44]
adc edx, esi
add ecx, 0x3e8
mov dword [esp + 0xc0], ecx
lea ecx, [esp + 0xc0]
adc edx, edi
push ecx
mov ecx, eax
mov dword [esp + 0xc8], edx
call fcn.00423890
mov esi, eax
jmp 0x455095
xor esi, esi
cmp esi, edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x194], esi
je 0x4550a7
inc dword [esi + 4]
push 0xffffffffffffffff
mov ecx, esi
mov byte [esp + 0x2cc], 0x1d
call fcn.00422400
cmp esi, edi
push ecx
mov eax, esp
mov dword [esp + 0x5c], esp
mov dword [eax], esi
je 0x4550c8
inc dword [esi + 4]
mov ecx, dword [ebx + 0x4c]
lea edx, [esp + 0xc0]
push edx
call fcn.0040df80
mov ecx, dword [eax]
mov byte [esp + 0x2cc], 0x1e
call fcn.0042b080
mov eax, dword [esp + 0xbc]
cmp eax, edi
mov byte [esp + 0x2c8], 0x1d
je 0x455113
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x58], eax
jne 0x455113
mov edx, dword [ecx]
push 1
call dword [edx]
push 0x1e8
call fcn.004ad909
add esp, 4
mov dword [esp + 0x58], eax
cmp eax, edi
mov byte [esp + 0x2c8], 0x1f
je 0x45513b
mov ecx, eax
call fcn.0042dd20
mov esi, eax
jmp 0x45513d
xor esi, esi
cmp esi, edi
mov dword [esp + 0x58], esi
je 0x455148
inc dword [esi + 4]
push 1
push 1
mov byte [esp + 0x2d0], 0x20
call fcn.0040d4d0
push ecx
mov ecx, esp
mov dword [esp + 0x38], esp
push ecx
mov ecx, eax
call fcn.00401650
mov ecx, esi
call fcn.00425c90
mov eax, str._texture_animation_key.png
mov dword [esp + 0x10c], 0xf
mov dword [esp + 0x108], edi
mov byte [esp + 0xf8], 0
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x455191
sub eax, ecx
push eax
push str._texture_animation_key.png
lea ecx, [esp + 0xfc]
call fcn.00402cd0
lea edx, [esp + 0xf4]
push edx
mov ecx, esi
mov byte [esp + 0x2cc], 0x21
call fcn.0042c070
cmp dword [esp + 0x10c], 0x10
mov byte [esp + 0x2c8], 0x20
jb 0x4551e5
mov eax, dword [esp + 0xf8]
push eax
call fcn.004ade5d
add esp, 4
push 0xbf800000
push 0xbf800000
push 0x42000000
push 0x42000000
lea ecx, [esp + 0x268]
mov dword [esp + 0x11c], 0xf
mov dword [esp + 0x118], edi
mov byte [esp + 0x108], 0
call fcn.00422f90
push eax
mov ecx, esi
call fcn.0042adf0
push edi
push 0x14
push 0x18
push edi
lea ecx, [esp + 0x1ec]
call fcn.00422250
push eax
mov ecx, esi
call fcn.0042aff0
push 0xbf800000
push 0xc3fa0000
push 0xc3fa0000
mov ecx, esi
call fcn.00424870
mov ecx, esi
call fcn.00422300
mov ecx, dword [ebx + 0x4c]
lea edx, [esp + 0x98]
push edx
call fcn.0040df80
mov eax, dword [eax]
push 1
mov ecx, eax
mov byte [esp + 0x2cc], 0x22
call fcn.004222f0
push eax
mov ecx, esi
call fcn.00424cf0
mov eax, dword [esp + 0x98]
cmp eax, edi
mov byte [esp + 0x2c8], 0x20
je 0x4552b5
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x2c], eax
jne 0x4552b5
mov edx, dword [ecx]
push 1
call dword [edx]
lea eax, [esp + 0x38]
push eax
mov ecx, esi
call fcn.00422c20
cmp esi, edi
push ecx
mov eax, esp
mov dword [esp + 0x30], esp
mov dword [eax], esi
je 0x4552d1
inc dword [esi + 4]
mov edx, dword [ebp]
mov ecx, ebp
call dword [edx + 8]
cmp esi, edi
push 1
push 1
push ecx
mov eax, esp
mov dword [esp + 0x38], esp
mov dword [eax], esi
je 0x4552ed
inc dword [esi + 4]
mov byte [esp + 0x2d4], 0x23
call fcn.0040e220
mov edx, dword [eax]
mov ecx, eax
mov byte [esp + 0x2d4], 0x20
call dword [edx + 0x10]
push 0x40
call fcn.004ad909
add esp, 4
mov dword [esp + 0x2c], eax
cmp eax, edi
mov byte [esp + 0x2c8], 0x24
je 0x455333
lea ecx, [esp + 0x40]
push ecx
mov ecx, eax
call fcn.00423890
mov ebx, eax
jmp 0x455335
xor ebx, ebx
test ebx, ebx
mov dword [esp + 0x2c], ebx
je 0x455340
inc dword [ebx + 4]
push 0xffffffffffffffff
mov ecx, ebx
mov byte [esp + 0x2cc], 0x25
call fcn.00422400
push 0xbf800000
push 0xc3fa0000
push 0xc3fa0000
mov ecx, ebx
call fcn.00423100
test ebx, ebx
push ecx
mov eax, esp
mov dword [esp + 0x70], esp
mov dword [eax], ebx
je 0x455377
inc dword [ebx + 4]
mov ecx, esi
call fcn.0042b080
push 0x40
call fcn.004ad909
add esp, 4
mov dword [esp + 0x6c], eax
test eax, eax
mov byte [esp + 0x2c8], 0x26
je 0x4553cd
mov edx, dword [esp + 0x40]
mov ebp, dword [esp + 0x38]
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x3c]
add edx, ebp
adc ecx, edi
mov dword [esp + 0xc8], edx
lea edx, [esp + 0xc8]
mov dword [esp + 0xcc], ecx
push edx
mov ecx, eax
call fcn.00423890
mov ebp, eax
jmp 0x4553cf
xor ebp, ebp
test ebp, ebp
mov dword [esp + 0x6c], ebp
je 0x4553da
inc dword [ebp + 4]
push 0xffffffffffffffff
mov ecx, ebp
mov byte [esp + 0x2cc], 0x27
call fcn.00422400
push 0xbf800000
push 0
push 0
mov ecx, ebp
call fcn.00423100
test ebp, ebp
push ecx
mov eax, esp
mov dword [esp + 0x24], esp
mov dword [eax], ebp
je 0x45540b
inc dword [ebp + 4]
mov ecx, esi
call fcn.0042b080
mov eax, str._gui_component_unlock_level.xml
mov dword [esp + 0x17c], 0xf
mov dword [esp + 0x178], 0
mov byte [esp + 0x168], 0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x455438
sub eax, edx
push eax
push str._gui_component_unlock_level.xml
lea ecx, [esp + 0x16c]
call fcn.00402cd0
push 0
push 0
lea eax, [esp + 0x16c]
push eax
lea ecx, [esp + 0x30]
push ecx
mov byte [esp + 0x2d8], 0x28
call fcn.00415620
mov ecx, eax
call fcn.00431b90
cmp dword [esp + 0x17c], 0x10
mov byte [esp + 0x2c8], 0x2a
jb 0x45549a
mov edx, dword [esp + 0x168]
push edx
call fcn.004ade5d
add esp, 4
mov ecx, dword [esp + 0x24]
push 1
push 2
mov dword [esp + 0x184], 0xf
mov dword [esp + 0x180], 0
mov byte [esp + 0x170], 0
call fcn.00424cf0
mov edi, dword [esp + 0x5c]
mov ecx, dword [edi + 0x4c]
lea eax, [esp + 0xb8]
push eax
call fcn.0040df80
mov ecx, dword [eax]
mov byte [esp + 0x2c8], 0x2b
call fcn.00481fe0
mov eax, dword [esp + 0xb8]
test eax, eax
mov byte [esp + 0x2c8], 0x2a
je 0x455512
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x20], edx
jne 0x455512
mov eax, dword [ecx]
push 1
call dword [eax]
push ecx
mov ecx, dword [esp + 0x28]
mov eax, esp
mov dword [eax], ecx
mov eax, dword [esp + 0x28]
test eax, eax
mov dword [esp + 0x24], esp
je 0x45552a
inc dword [eax + 4]
mov ecx, dword [edi + 0x4c]
lea edx, [esp + 0x64]
push edx
call fcn.0040df80
mov ecx, dword [eax]
mov eax, dword [ecx]
mov byte [esp + 0x2cc], 0x2c
call dword [eax + 8]
mov eax, dword [esp + 0x60]
test eax, eax
mov byte [esp + 0x2c8], 0x2a
je 0x45556d
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x20], edx
jne 0x45556d
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x24]
push 0x3f800000
push 0
push 0
call fcn.00424870
mov ecx, dword [esp + 0x24]
push 0
push 1
call fcn.0042f400
mov eax, str._sound_new_level_unlocked.ogg
mov dword [esp + 0x160], 0xf
mov dword [esp + 0x15c], 0
mov byte [esp + 0x14c], 0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4555b2
sub eax, edx
push eax
push str._sound_new_level_unlocked.ogg
lea ecx, [esp + 0x150]
call fcn.00402cd0
lea ecx, [esp + 0x148]
push ecx
mov byte [esp + 0x2cc], 0x2d
call fcn.0040e1a0
mov ecx, eax
call fcn.00435ad0
cmp dword [esp + 0x160], 0x10
mov byte [esp + 0x2c8], 0x2a
jb 0x45560b
mov edx, dword [esp + 0x14c]
push edx
call fcn.004ade5d
add esp, 4
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax + 0xcc]
mov eax, 0x4f130c
mov dword [esp + 0x160], 0xf
mov dword [esp + 0x15c], 0
mov byte [esp + 0x14c], 0
add ecx, 0x40
lea edi, [eax + 1]
mov edi, edi
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x455640
sub eax, edi
push eax
push 0x4f130c
call fcn.00402cd0
mov eax, dword [esp + 0x24]
test eax, eax
mov byte [esp + 0x2c8], 0x27
je 0x45567b
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x20], edx
jne 0x45567b
mov eax, dword [ecx]
push 1
call dword [eax]
test ebp, ebp
mov byte [esp + 0x2c8], 0x25
je 0x45569d
mov ecx, dword [ebp + 4]
dec ecx
mov eax, ecx
test eax, eax
mov dword [ebp + 4], ecx
jne 0x45569d
mov edx, dword [ebp]
push 1
mov ecx, ebp
call dword [edx]
test ebx, ebx
mov byte [esp + 0x2c8], 0x20
je 0x4556be
mov ecx, dword [ebx + 4]
dec ecx
mov eax, ecx
test eax, eax
mov dword [ebx + 4], ecx
jne 0x4556be
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax]
test esi, esi
mov byte [esp + 0x2c8], 0x1d
je 0x4556df
mov ecx, dword [esi + 4]
dec ecx
mov eax, ecx
test eax, eax
mov dword [esi + 4], ecx
jne 0x4556df
mov edx, dword [esi]
push 1
mov ecx, esi
call dword [edx]
mov ecx, dword [esp + 0x18]
test ecx, ecx
mov byte [esp + 0x2c8], 0x1a
je 0x455702
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
test eax, eax
mov dword [ecx + 4], edx
jne 0x455702
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x14]
test ecx, ecx
mov byte [esp + 0x2c8], 0x14
je 0x455725
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
test eax, eax
mov dword [ecx + 4], edx
jne 0x455725
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x50]
mov edx, dword [eax + 4]
dec edx
mov ecx, edx
test ecx, ecx
mov byte [esp + 0x2c8], 8
mov dword [eax + 4], edx
jne 0x455746
mov ecx, eax
mov eax, dword [ecx]
push 1
call dword [eax]
mov ebx, dword [esp + 0x5c]
mov byte [ebx + 0x39], 0
mov eax, dword [ebx + 0x34]
test eax, eax
jne 0x4557ed
mov ecx, dword [ebx + 0x40]
test ecx, ecx
je 0x4557ed
mov eax, dword [ebx + 0x44]
sub eax, ecx
sar eax, 2
test eax, eax
jbe 0x4557ed
mov al, byte [ebx + 0x38]
test al, al
jne 0x4557ed
mov edi, dword [esp + 0x64]
xor esi, esi
mov ecx, dword [ebx + 0x40]
test ecx, ecx
je 0x4557ed
mov eax, dword [ebx + 0x44]
sub eax, ecx
sar eax, 2
cmp esi, eax
jae 0x4557ed
mov eax, ecx
mov eax, dword [eax + esi*4]
add eax, 0x14
push eax
call fcn.00437070
mov ecx, dword [eax + 8]
push ecx
mov ecx, edi
call fcn.0043b800
cmp eax, 3
je 0x4557c2
cmp eax, 4
je 0x4557c2
inc esi
jmp 0x455785
mov dword [ebx + 0x34], 1
mov byte [ebx + 0x39], 1
call fcn.00437070
mov edx, dword [ebx + 0x34]
mov eax, dword [eax + 8]
push edx
lea ecx, [ebx + 0x14]
push ecx
mov ecx, dword [esp + 0x24]
mov ecx, dword [ecx + 0xcc]
push eax
call fcn.0043dcd0
cmp dword [0x515250], 0x10
mov edi, dword [0x51523c]
jae 0x455801
mov edi, 0x51523c
mov edx, dword [ebx + 0x28]
test edx, edx
mov ebp, dword [0x51524c]
je 0x455833
cmp edx, ebp
mov ecx, edx
jb 0x455816
mov ecx, ebp
cmp dword [ebx + 0x2c], 0x10
jb 0x455821
mov esi, dword [ebx + 0x18]
jmp 0x455824
lea esi, [ebx + 0x18]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x45582f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x45583e
cmp edx, ebp
jb 0x455879
xor eax, eax
cmp edx, ebp
setne al
xor ebp, ebp
cmp eax, ebp
jne 0x45587b
mov esi, dword [esp + 0x1c]
mov ecx, dword [esi + 0xc8]
call fcn.0043a9d0
cmp eax, 0x64
jne 0x45587b
cmp dword [ebx + 0x34], ebp
jne 0x45587b
call fcn.00437070
mov edx, dword [eax + 8]
push 1
lea ecx, [ebx + 0x14]
push ecx
mov ecx, dword [esi + 0xcc]
push edx
call fcn.0043dcd0
jmp 0x45587b
xor ebp, ebp
mov ecx, dword [ebx + 0x4c]
push ebp
call fcn.004198f0
mov ecx, dword [ebx + 0x4c]
push ebp
call fcn.0040f5b0
mov al, byte [ebx + 0x38]
test al, al
je 0x455996
mov eax, dword [ebx + 0x34]
cmp eax, 1
je 0x4558a9
cmp eax, 2
jne 0x455996
mov edi, 0xf
mov eax, str.hierarchy.Hint.bonuslevel_maphint
mov dword [esp + 0x144], edi
mov dword [esp + 0x140], ebp
mov byte [esp + 0x130], 0
lea ecx, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4558d0
sub eax, ecx
push eax
push str.hierarchy.Hint.bonuslevel_maphint
lea ecx, [esp + 0x134]
call fcn.00402cd0
lea eax, [esp + 0x12c]
push eax
lea ecx, [esp + 0x19c]
push ecx
mov byte [esp + 0x2d0], 0x2e
call fcn.00416de0
mov ecx, eax
call fcn.004118f0
mov ecx, dword [ebx + 0x4c]
push 0xffffffffffffffff
push ebp
push eax
add ecx, 0x98
mov byte [esp + 0x2d4], 0x2f
call fcn.00402aa0
mov eax, dword [esp + 0x1b0]
mov esi, 0x10
cmp eax, esi
jb 0x455949
mov edx, dword [esp + 0x19c]
push edx
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0x144], esi
mov dword [esp + 0x1b0], edi
mov dword [esp + 0x1ac], ebp
mov byte [esp + 0x19c], 0
mov byte [esp + 0x2c8], 8
jb 0x455980
mov eax, dword [esp + 0x130]
push eax
call fcn.004ade5d
add esp, 4
mov dword [esp + 0x144], edi
mov dword [esp + 0x140], ebp
mov byte [esp + 0x130], 0
mov edi, dword [esp + 0x1c]
mov edx, dword [edi + 0xd4]
add edi, 0xd0
cmp edx, ebp
jne 0x4559ae
xor ecx, ecx
jmp 0x4559b6
mov ecx, dword [edi + 8]
sub ecx, edx
sar ecx, 2
cmp edx, ebp
je 0x4559e7
mov eax, dword [edi + 0xc]
sub eax, edx
sar eax, 2
cmp ecx, eax
jae 0x4559e7
mov ecx, dword [esp + 0x20]
mov esi, dword [edi + 8]
push ecx
push edi
lea edx, [esp + 0x70]
push edx
push 1
push esi
call fcn.00470810
add esp, 0x14
add esi, 4
mov dword [edi + 8], esi
jmp 0x4559fd
mov eax, dword [edi + 8]
lea ecx, [esp + 0x68]
push ecx
push 1
push ecx
mov ecx, esp
mov dword [ecx], eax
mov ecx, edi
call fcn.00452630
mov ecx, dword [ebx + 4]
dec ecx
mov eax, ecx
cmp eax, ebp
mov byte [esp + 0x2c8], 6
mov dword [ebx + 4], ecx
jne 0x455a1a
mov edx, dword [ebx]
push 1
mov ecx, ebx
call dword [edx]
mov esi, dword [esp + 0x48]
mov ebp, dword [esp + 0x30]
cmp dword [esp + 0x88], 0x10
mov byte [esp + 0x2c8], 5
jb 0x455a41
mov eax, dword [esp + 0x74]
push eax
call fcn.004ade5d
add esp, 4
mov eax, dword [esp + 0x28]
add esi, 0x20
cmp esi, eax
mov dword [esp + 0x88], 0xf
mov dword [esp + 0x84], 0
mov byte [esp + 0x74], 0
mov dword [esp + 0x48], esi
jne 0x4545c0
mov ecx, dword [ebp + 4]
dec ecx
mov eax, ecx
test eax, eax
mov byte [esp + 0x2c8], 2
mov dword [ebp + 4], ecx
jne 0x455a8d
mov edx, dword [ebp]
push 1
mov ecx, ebp
call dword [edx]
mov eax, dword [esp + 0x34]
test eax, eax
mov byte [esp + 0x2c8], 1
je 0x455ab6
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x20], eax
jne 0x455ab6
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, dword [esp + 0x4c]
mov eax, dword [ecx + 4]
dec eax
mov dword [esp + 0x2c8], 0xffffffff
mov dword [ecx + 4], eax
jne 0x455ad4
mov eax, dword [ecx]
push 1
call dword [eax]
mov al, 1
mov ecx, dword [esp + 0x2c0]
pop edi
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x2b4]
xor ecx, dword [esp + 0x2c4]
pop ebp
pop ebx
add esp, 0x2bc
jmp fcn.004ae650