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

Disassembly:
push 0xffffffffffffffff
push 0x4c4053
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x2f4
mov eax, dword [0x51eea4]
xor eax, dword [esp + 0x300]
push ebx
push ebp
push esi
mov esi, ecx
xor ebx, ebx
mov dword [esp + 0x2fc], eax
push edi
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30c], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x40], ebx
mov eax, 0xf
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], ebx
mov byte [esp + 0x50], bl
mov dword [esp + 0x98], eax
mov dword [esp + 0x94], ebx
mov byte [esp + 0x84], bl
lea eax, [esp + 0xa0]
push eax
mov byte [esp + 0x310], 6
call fcn.00437070
mov ecx, eax
call fcn.00437010
mov eax, dword [eax]
lea ecx, [esp + 0x30]
push ecx
mov ecx, eax
call fcn.00437210
mov eax, dword [esp + 0xa0]
cmp eax, ebx
mov byte [esp + 0x30c], 7
je 0x469a73
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x48], edx
jne 0x469a73
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x28]
push eax
call fcn.0043a8b0
mov dword [esi + 0x13c], eax
mov esi, dword [esi + 0x140]
mov eax, dword [esi + 0x1d8]
cmp eax, ebx
mov edi, 6
mov dword [esp + 0x24], edi
je 0x469abe
mov ecx, dword [esi + 0x1dc]
sub ecx, eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
cmp edx, edi
jae 0x469aed
mov eax, dword [esi + 0x1d8]
cmp eax, ebx
jne 0x469acc
xor edi, edi
jmp 0x469ae9
mov esi, dword [esi + 0x1dc]
sub esi, eax
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 4
mov eax, edx
shr eax, 0x1f
add edx, eax
mov edi, edx
mov dword [esp + 0x24], edi
cmp edi, ebx
mov dword [esp + 0x44], ebx
jle 0x46aab9
lea esp, [esp]
mov eax, str.item
mov dword [esp + 0xf4], 0xf
mov dword [esp + 0xf0], ebx
mov byte [esp + 0xe0], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x469b21
sub eax, edx
push eax
push str.item
lea ecx, [esp + 0xe4]
call fcn.00402cd0
mov edi, dword [esp + 0x44]
push edi
lea ecx, [esp + 0x2f4]
push 0x4f1300
push ecx
mov byte [esp + 0x318], 8
call fcn.004ae68f
lea eax, [esp + 0x2fc]
add esp, 0xc
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x469b68
sub eax, esi
push eax
lea edx, [esp + 0x2f4]
push edx
lea ecx, [esp + 0xe4]
call fcn.00402620
mov esi, dword [esp + 0x10]
lea eax, [esp + 0xdc]
push eax
lea ecx, [esp + 0xbc]
push ecx
mov ecx, esi
call fcn.0040fff0
mov eax, dword [eax]
cmp eax, ebx
mov byte [esp + 0x30c], 9
je 0x469bb2
inc dword [eax + 4]
mov ecx, dword [esp + 0x20]
cmp ecx, ebx
mov ebp, eax
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], ebp
je 0x469bd7
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x469bd7
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0xb8]
cmp eax, ebx
mov byte [esp + 0x30c], 8
je 0x469c03
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x14], eax
jne 0x469c03
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esi + 0x140]
mov ecx, dword [eax + 0x1d8]
add eax, 0x1d4
mov eax, edi
imul eax, eax, 0x1c
sub esp, 0x1c
add eax, ecx
mov ecx, esp
mov dword [esp + 0x30], esp
push 0xffffffffffffffff
push ebx
mov edi, 0xf
mov dword [ecx + 0x18], edi
mov dword [ecx + 0x14], ebx
push eax
mov byte [ecx + 4], bl
call fcn.00402aa0
lea ecx, [esi + 0xc0]
call fcn.004a04f0
push 0xffffffffffffffff
mov esi, eax
push ebx
push esi
lea ecx, [esp + 0x58]
call fcn.00402aa0
mov eax, dword [esi + 0x1c]
mov dword [esp + 0x68], eax
mov ecx, dword [esi + 0x20]
mov dword [esp + 0x6c], ecx
mov edx, dword [esi + 0x24]
mov dword [esp + 0x70], edx
mov eax, dword [esi + 0x28]
mov dword [esp + 0x74], eax
mov ecx, dword [esi + 0x2c]
mov dword [esp + 0x78], ecx
mov edx, dword [esi + 0x30]
push 0xffffffffffffffff
push ebx
add esi, 0x34
push esi
lea ecx, [esp + 0x8c]
mov dword [esp + 0x88], edx
call fcn.00402aa0
mov eax, str.icon
mov dword [esp + 0x164], edi
mov dword [esp + 0x160], ebx
mov byte [esp + 0x150], bl
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x469cb2
sub eax, esi
push eax
push str.icon
lea ecx, [esp + 0x154]
call fcn.00402cd0
lea eax, [esp + 0x14c]
push eax
lea ecx, [esp + 0xc0]
push ecx
mov ecx, ebp
mov byte [esp + 0x314], 0xa
call fcn.0040f3f0
mov eax, dword [eax]
cmp eax, ebx
mov byte [esp + 0x30c], 0xb
je 0x469cfd
inc dword [eax + 4]
mov ecx, dword [esp + 0x3c]
cmp ecx, ebx
mov esi, eax
mov dword [esp + 0x3c], esi
je 0x469d1e
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x469d1e
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0xbc]
cmp eax, ebx
mov byte [esp + 0x30c], 0xa
je 0x469d4a
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x14], eax
jne 0x469d4a
mov edx, dword [ecx]
push 1
call dword [edx]
cmp dword [esp + 0x164], 0x10
jb 0x469d64
mov eax, dword [esp + 0x150]
push eax
call fcn.004ade5d
add esp, 4
lea ecx, [esp + 0xa4]
push ecx
mov ecx, esi
mov dword [esp + 0x168], edi
mov dword [esp + 0x164], ebx
mov byte [esp + 0x154], bl
call fcn.0040df80
mov eax, dword [eax]
lea edx, [esp + 0x80]
push edx
mov ecx, eax
mov byte [esp + 0x310], 0xc
call fcn.0042c070
mov eax, dword [esp + 0xa4]
cmp eax, ebx
mov byte [esp + 0x30c], 8
je 0x469dcd
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x14], eax
jne 0x469dcd
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, str.label
mov dword [esp + 0x1f0], edi
mov dword [esp + 0x1ec], ebx
mov byte [esp + 0x1dc], bl
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x469df0
sub eax, edx
push eax
push str.label
lea ecx, [esp + 0x1e0]
call fcn.00402cd0
lea eax, [esp + 0x1d8]
push eax
lea ecx, [esp + 0xb4]
push ecx
mov ecx, ebp
mov byte [esp + 0x314], 0xd
call fcn.0040f3f0
mov eax, dword [eax]
cmp eax, ebx
mov byte [esp + 0x30c], 0xe
je 0x469e3b
inc dword [eax + 4]
mov ecx, dword [esp + 0x34]
cmp ecx, ebx
mov esi, eax
mov dword [esp + 0x34], esi
je 0x469e5c
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x469e5c
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0xb0]
cmp eax, ebx
mov byte [esp + 0x30c], 0xd
je 0x469e88
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x14], eax
jne 0x469e88
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x1f0]
mov ebp, 0x10
cmp eax, ebp
mov byte [esp + 0x30c], 8
jb 0x469eb0
mov eax, dword [esp + 0x1dc]
push eax
call fcn.004ade5d
add esp, 4
mov eax, str.hierarchy.Screen.Shop.
mov dword [esp + 0x1f0], edi
mov dword [esp + 0x1ec], ebx
mov byte [esp + 0x1dc], bl
mov dword [esp + 0x110], edi
mov dword [esp + 0x10c], ebx
mov byte [esp + 0xfc], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x469ee2
sub eax, edx
push eax
push str.hierarchy.Screen.Shop.
lea ecx, [esp + 0x100]
call fcn.00402cd0
push 0xffffffffffffffff
push ebx
lea ecx, [esp + 0x54]
push ecx
lea ecx, [esp + 0x104]
mov byte [esp + 0x318], 0xf
call fcn.00402530
lea edx, [esp + 0xf8]
push edx
lea eax, [esp + 0x24c]
push eax
call fcn.00416de0
mov ecx, eax
call fcn.004118f0
push eax
mov ecx, esi
mov byte [esp + 0x310], 0x10
call fcn.00417a70
cmp dword [esp + 0x260], ebp
mov byte [esp + 0x30c], 0xf
jb 0x469f66
mov ecx, dword [esp + 0x24c]
push ecx
call fcn.004ade5d
add esp, 4
mov eax, str.shotspeed
mov dword [esp + 0x260], edi
mov dword [esp + 0x25c], ebx
mov byte [esp + 0x24c], bl
mov dword [esp + 0x18], ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x469f87
sub eax, edx
mov ebp, eax
mov eax, dword [esp + 0x60]
cmp eax, ebx
je 0x469fc5
cmp eax, ebp
mov ecx, eax
jb 0x469fa2
mov ecx, ebp
cmp dword [esp + 0x64], 0x10
mov esi, dword [esp + 0x50]
jae 0x469fb1
lea esi, [esp + 0x50]
mov edi, str.shotspeed
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x469fc1
sbb edx, edx
sbb edx, 0xffffffff
cmp edx, ebx
jne 0x469fee
cmp eax, ebp
jb 0x469fee
xor edx, edx
cmp eax, ebp
setne dl
cmp edx, ebx
jne 0x469fee
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x140]
mov edi, dword [eax + 0xd8]
dec edi
mov dword [esp + 0x18], edi
jmp 0x46a144
mov eax, str.reloadspeed
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x469ff6
mov ecx, dword [esp + 0x60]
sub eax, edx
push eax
push str.reloadspeed
push ecx
push ebx
lea ecx, [esp + 0x5c]
call fcn.00401470
test eax, eax
jne 0x46a032
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x140]
mov edi, dword [eax + 0xe4]
dec edi
mov dword [esp + 0x18], edi
jmp 0x46a144
mov eax, str.ballcount
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a040
mov ecx, dword [esp + 0x60]
sub eax, edx
push eax
push str.ballcount
push ecx
push ebx
lea ecx, [esp + 0x5c]
call fcn.00401470
test eax, eax
jne 0x46a07c
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x140]
mov edi, dword [eax + 0xcc]
dec edi
mov dword [esp + 0x18], edi
jmp 0x46a144
mov eax, str.sight
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a084
mov ecx, dword [esp + 0x60]
sub eax, edx
push eax
push str.sight
push ecx
push ebx
lea ecx, [esp + 0x5c]
call fcn.00401470
test eax, eax
jne 0x46a0bf
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x140]
mov edi, dword [eax + 0x108]
mov dword [esp + 0x18], edi
jmp 0x46a144
mov eax, str.gunnery
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a0c7
mov ecx, dword [esp + 0x60]
sub eax, edx
push eax
push str.gunnery
push ecx
push ebx
lea ecx, [esp + 0x5c]
call fcn.00401470
test eax, eax
jne 0x46a0ff
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x140]
mov edi, dword [eax + 0xfc]
mov dword [esp + 0x18], edi
jmp 0x46a144
mov eax, str.score
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a107
mov ecx, dword [esp + 0x60]
sub eax, edx
push eax
push str.score
push ecx
push ebx
lea ecx, [esp + 0x5c]
call fcn.00401470
test eax, eax
jne 0x46a140
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x140]
mov edi, dword [eax + 0xf0]
dec edi
mov dword [esp + 0x18], edi
jmp 0x46a144
mov edi, dword [esp + 0x18]
mov eax, str.value
mov dword [esp + 0x12c], 0xf
mov dword [esp + 0x128], ebx
mov byte [esp + 0x118], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a165
sub eax, edx
push eax
push str.value
lea ecx, [esp + 0x11c]
call fcn.00402cd0
lea ecx, [esp + 0x114]
push ecx
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0xb0]
push edx
mov byte [esp + 0x314], 0x11
call fcn.0040f3f0
mov eax, dword [eax]
cmp eax, ebx
mov byte [esp + 0x30c], 0x12
je 0x46a1b2
inc dword [eax + 4]
mov ecx, dword [esp + 0x2c]
cmp ecx, ebx
mov dword [esp + 0x38], eax
mov dword [esp + 0x2c], eax
je 0x46a1d5
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x46a1d5
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0xac]
cmp eax, ebx
mov byte [esp + 0x30c], 0x11
je 0x46a1ff
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0x14], edx
jne 0x46a1ff
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x12c]
mov ebp, 0x10
cmp eax, ebp
mov byte [esp + 0x30c], 0xf
jb 0x46a227
mov ecx, dword [esp + 0x118]
push ecx
call fcn.004ade5d
add esp, 4
mov eax, 0xf
mov dword [esp + 0x12c], eax
mov dword [esp + 0x1d4], eax
mov eax, str.hierarchy.Screen.Shop.currentLevel
mov dword [esp + 0x128], ebx
mov byte [esp + 0x118], bl
mov dword [esp + 0x1d0], ebx
mov byte [esp + 0x1c0], bl
lea esi, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a260
sub eax, esi
push eax
push str.hierarchy.Screen.Shop.currentLevel
lea ecx, [esp + 0x1c4]
call fcn.00402cd0
mov ecx, dword [esp + 0x10]
lea edx, [edi + 1]
push edx
lea eax, [esp + 0x2bc]
push eax
mov byte [esp + 0x314], 0x13
call fcn.00465d10
mov esi, eax
lea ecx, [esp + 0x1bc]
push ecx
lea edx, [esp + 0x230]
push edx
mov byte [esp + 0x314], 0x14
call fcn.00416de0
mov ecx, eax
call fcn.004118f0
push esi
push eax
lea eax, [esp + 0x1fc]
push eax
mov byte [esp + 0x318], 0x15
call fcn.00403020
add esp, 0xc
mov ecx, dword [esp + 0x38]
push eax
mov byte [esp + 0x310], 0x16
call fcn.00417a70
cmp dword [esp + 0x20c], ebp
jb 0x46a303
mov ecx, dword [esp + 0x1f8]
push ecx
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0x244], ebp
mov esi, 0xf
mov dword [esp + 0x20c], esi
mov dword [esp + 0x208], ebx
mov byte [esp + 0x1f8], bl
jb 0x46a336
mov edx, dword [esp + 0x230]
push edx
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0x2d0], ebp
mov dword [esp + 0x244], esi
mov dword [esp + 0x240], ebx
mov byte [esp + 0x230], bl
jb 0x46a364
mov eax, dword [esp + 0x2bc]
push eax
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0x1d4], ebp
mov dword [esp + 0x2d0], esi
mov dword [esp + 0x2cc], ebx
mov byte [esp + 0x2bc], bl
mov byte [esp + 0x30c], 0xf
jb 0x46a39a
mov ecx, dword [esp + 0x1c0]
push ecx
call fcn.004ade5d
add esp, 4
mov ebp, dword [esp + 0x38]
push 1
push 0xffffffffffffffff
mov ecx, ebp
mov dword [esp + 0x1dc], esi
mov dword [esp + 0x1d8], ebx
mov byte [esp + 0x1c8], bl
call fcn.00418150
cmp edi, ebx
mov ecx, ebp
jne 0x46a3c7
push ebx
jmp 0x46a3c9
push 1
call fcn.0040f5b0
mov eax, str.nextvalue
mov dword [esp + 0x19c], esi
mov dword [esp + 0x198], ebx
mov byte [esp + 0x188], bl
lea edx, [eax + 1]
jmp 0x46a3f0
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a3f0
sub eax, edx
push eax
push str.nextvalue
lea ecx, [esp + 0x18c]
call fcn.00402cd0
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x184]
push edx
lea eax, [esp + 0xb8]
push eax
mov byte [esp + 0x314], 0x17
call fcn.0040f3f0
mov eax, dword [eax]
cmp eax, ebx
mov byte [esp + 0x30c], 0x18
je 0x46a43d
inc dword [eax + 4]
mov ecx, dword [esp + 0x28]
cmp ecx, ebx
mov edi, eax
mov dword [esp + 0x28], edi
je 0x46a45e
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x46a45e
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0xb4]
cmp eax, ebx
mov byte [esp + 0x30c], 0x17
je 0x46a48a
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov eax, edx
mov dword [esp + 0x14], eax
jne 0x46a48a
mov edx, dword [ecx]
push 1
call dword [edx]
mov eax, dword [esp + 0x19c]
mov ebp, 0x10
cmp eax, ebp
mov byte [esp + 0x30c], 0xf
jb 0x46a4b2
mov eax, dword [esp + 0x188]
push eax
call fcn.004ade5d
add esp, 4
mov esi, 0xf
mov eax, str.completed
mov dword [esp + 0x19c], esi
mov dword [esp + 0x198], ebx
mov byte [esp + 0x188], bl
mov dword [esp + 0x148], esi
mov dword [esp + 0x144], ebx
mov byte [esp + 0x134], bl
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a4f0
sub eax, edx
push eax
push str.completed
lea ecx, [esp + 0x138]
call fcn.00402cd0
lea ecx, [esp + 0x130]
push ecx
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0xa0]
push edx
mov byte [esp + 0x314], 0x19
call fcn.0040f3f0
mov eax, dword [eax]
cmp eax, ebx
mov byte [esp + 0x30c], 0x1a
je 0x46a53d
inc dword [eax + 4]
mov ecx, dword [esp + 0x40]
cmp ecx, ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x40], eax
je 0x46a560
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x46a560
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [esp + 0x9c]
cmp eax, ebx
mov byte [esp + 0x30c], 0x19
je 0x46a58d
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0xa8], edx
jne 0x46a58d
mov eax, dword [ecx]
push 1
call dword [eax]
cmp dword [esp + 0x148], ebp
mov byte [esp + 0x30c], 0xf
jb 0x46a5ae
mov ecx, dword [esp + 0x134]
push ecx
call fcn.004ade5d
add esp, 4
mov eax, str.hierarchy.Screen.Shop.nextLevel
mov dword [esp + 0x148], esi
mov dword [esp + 0x180], esi
mov dword [esp + 0x144], ebx
mov byte [esp + 0x134], bl
mov dword [esp + 0x17c], ebx
mov byte [esp + 0x16c], bl
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a5e0
sub eax, esi
push eax
push str.hierarchy.Screen.Shop.nextLevel
lea ecx, [esp + 0x170]
call fcn.00402cd0
mov edx, dword [esp + 0x74]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x70]
imul edx, ebp
add edx, ecx
mov ecx, dword [esp + 0x10]
push edx
lea eax, [esp + 0x268]
push eax
mov byte [esp + 0x314], 0x1b
call fcn.00465d10
mov esi, eax
lea ecx, [esp + 0x168]
push ecx
lea edx, [esp + 0x214]
push edx
mov byte [esp + 0x314], 0x1c
call fcn.00416de0
mov ecx, eax
call fcn.004118f0
push esi
push eax
lea eax, [esp + 0x288]
push eax
mov byte [esp + 0x318], 0x1d
call fcn.00403020
add esp, 0xc
push eax
mov ecx, edi
mov byte [esp + 0x310], 0x1e
call fcn.00417a70
cmp dword [esp + 0x298], 0x10
jb 0x46a690
mov ecx, dword [esp + 0x284]
push ecx
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0x228], 0x10
mov esi, 0xf
mov dword [esp + 0x298], esi
mov dword [esp + 0x294], ebx
mov byte [esp + 0x284], bl
jb 0x46a6c4
mov edx, dword [esp + 0x214]
push edx
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0x27c], 0x10
mov dword [esp + 0x228], esi
mov dword [esp + 0x224], ebx
mov byte [esp + 0x214], bl
jb 0x46a6f3
mov eax, dword [esp + 0x268]
push eax
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0x180], 0x10
mov dword [esp + 0x27c], esi
mov dword [esp + 0x278], ebx
mov byte [esp + 0x268], bl
mov byte [esp + 0x30c], 0xf
jb 0x46a72a
mov ecx, dword [esp + 0x16c]
push ecx
call fcn.004ade5d
add esp, 4
push 1
push 0xff22ff22
mov ecx, edi
mov dword [esp + 0x188], esi
mov dword [esp + 0x184], ebx
mov byte [esp + 0x174], bl
call fcn.00418150
mov edx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
imul edx, ebp
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x240]
add edx, esi
cmp ecx, edx
jge 0x46a776
push 1
push 0xffff0000
mov ecx, edi
call fcn.00418150
cmp ebp, dword [esp + 0x6c]
push 1
jl 0x46a887
mov ecx, dword [esp + 0x3c]
push 0xffffff
call fcn.00418150
push 1
push 0xffffffffffffffff
mov ecx, edi
call fcn.00418150
mov eax, str.hierarchy.Screen.Shop.maxlevel
mov dword [esp + 0x1b8], 0xf
mov dword [esp + 0x1b4], ebx
mov byte [esp + 0x1a4], bl
lea esi, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a7c0
sub eax, esi
push eax
push str.hierarchy.Screen.Shop.maxlevel
lea ecx, [esp + 0x1a8]
call fcn.00402cd0
lea ecx, [esp + 0x1a0]
push ecx
lea edx, [esp + 0x2a0]
push edx
mov byte [esp + 0x314], 0x1f
call fcn.00416de0
mov ecx, eax
call fcn.004118f0
push eax
mov ecx, edi
mov byte [esp + 0x310], 0x20
call fcn.00417a70
cmp dword [esp + 0x2b4], 0x10
jb 0x46a829
mov eax, dword [esp + 0x2a0]
push eax
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0x1b8], 0x10
mov esi, 0xf
mov dword [esp + 0x2b4], esi
mov dword [esp + 0x2b0], ebx
mov byte [esp + 0x2a0], bl
mov byte [esp + 0x30c], 0xf
jb 0x46a865
mov ecx, dword [esp + 0x1a4]
push ecx
call fcn.004ade5d
add esp, 4
mov ecx, dword [esp + 0x14]
push 1
mov dword [esp + 0x1bc], esi
mov dword [esp + 0x1b8], ebx
mov byte [esp + 0x1a8], bl
call fcn.0040f5b0
jmp 0x46a89d
mov ecx, edi
call fcn.0040f5b0
mov ecx, dword [esp + 0x14]
push ebx
call fcn.0040f5b0
mov esi, 0xf
mov eax, str.hierarchy.Screen.Shop.
mov dword [esp + 0xd8], esi
mov dword [esp + 0xd4], ebx
mov byte [esp + 0xc4], bl
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a8c0
sub eax, edx
push eax
push str.hierarchy.Screen.Shop.
lea ecx, [esp + 0xc8]
call fcn.00402cd0
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0x54]
push edx
lea ecx, [esp + 0xcc]
mov byte [esp + 0x318], 0x21
call fcn.00402530
mov eax, str.Hint
lea esi, [eax + 1]
nop
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x46a900
sub eax, esi
push eax
push str.Hint
lea ecx, [esp + 0xc8]
call fcn.00402620
lea eax, [esp + 0xc0]
push eax
lea ecx, [esp + 0x2d8]
push ecx
call fcn.00416de0
mov ecx, eax
call fcn.004118f0
mov edi, dword [esp + 0x1c]
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [edi + 0x98]
mov byte [esp + 0x318], 0x22
call fcn.00402aa0
cmp dword [esp + 0x2ec], 0x10
jb 0x46a96c
mov edx, dword [esp + 0x2d8]
push edx
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0xd8], 0x10
mov esi, 0xf
mov dword [esp + 0x2ec], esi
mov dword [esp + 0x2e8], ebx
mov byte [esp + 0x2d8], bl
mov byte [esp + 0x30c], 0xf
jb 0x46a9a8
mov eax, dword [esp + 0xc4]
push eax
call fcn.004ade5d
add esp, 4
cmp ebp, dword [esp + 0x6c]
mov dword [esp + 0xd8], esi
mov dword [esp + 0xd4], ebx
mov byte [esp + 0xc4], bl
jl 0x46aa3e
lea ecx, [esp + 0xdc]
push ecx
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x4c]
push edx
call fcn.0040fff0
mov esi, dword [eax]
cmp esi, ebx
mov byte [esp + 0x30c], 0x23
je 0x46a9ea
inc dword [esi + 4]
cmp edi, ebx
mov dword [esp + 0x20], esi
je 0x46aa07
mov ecx, dword [edi + 4]
dec ecx
mov eax, ecx
cmp eax, ebx
mov dword [edi + 4], ecx
jne 0x46aa07
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax]
mov eax, dword [esp + 0x48]
cmp eax, ebx
mov byte [esp + 0x30c], 0xf
je 0x46aa31
mov edx, dword [eax + 4]
mov ecx, eax
add eax, 4
dec edx
mov dword [eax], edx
mov dword [esp + 0xa8], edx
jne 0x46aa31
mov eax, dword [ecx]
push 1
call dword [eax]
push ebx
mov ecx, esi
call fcn.004198f0
mov esi, 0xf
cmp dword [esp + 0x110], 0x10
jb 0x46aa58
mov ecx, dword [esp + 0xfc]
push ecx
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0xf4], 0x10
mov dword [esp + 0x110], esi
mov dword [esp + 0x10c], ebx
mov byte [esp + 0xfc], bl
mov byte [esp + 0x30c], 7
jb 0x46aa8f
mov edx, dword [esp + 0xe0]
push edx
call fcn.004ade5d
add esp, 4
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x24]
inc eax
cmp eax, ecx
mov dword [esp + 0xf4], esi
mov dword [esp + 0xf0], ebx
mov byte [esp + 0xe0], bl
mov dword [esp + 0x44], eax
jl 0x469b00
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
mov edx, dword [esi + 0x240]
mov ecx, dword [eax + 0x144]
push edx
call fcn.00482c90
mov ecx, dword [esi + 4]
dec ecx
mov eax, ecx
cmp eax, ebx
mov byte [esp + 0x30c], 6
mov dword [esi + 4], ecx
jne 0x46aaf0
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax]
mov eax, dword [esp + 0x98]
mov edi, 0x10
cmp eax, edi
jb 0x46ab10
mov ecx, dword [esp + 0x84]
push ecx
call fcn.004ade5d
add esp, 4
cmp dword [esp + 0x64], edi
mov esi, 0xf
mov dword [esp + 0x98], esi
mov dword [esp + 0x94], ebx
mov byte [esp + 0x84], bl
jb 0x46ab3d
mov edx, dword [esp + 0x50]
push edx
call fcn.004ade5d
add esp, 4
mov ecx, dword [esp + 0x40]
cmp ecx, ebx
mov dword [esp + 0x64], esi
mov dword [esp + 0x60], ebx
mov byte [esp + 0x50], bl
mov byte [esp + 0x30c], 4
je 0x46ab6c
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x46ab6c
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x28]
cmp ecx, ebx
mov byte [esp + 0x30c], 3
je 0x46ab8f
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x46ab8f
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, dword [esp + 0x2c]
cmp ecx, ebx
mov byte [esp + 0x30c], 2
je 0x46abb2
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x46abb2
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x34]
cmp ecx, ebx
mov byte [esp + 0x30c], 1
je 0x46abd5
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x46abd5
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, dword [esp + 0x3c]
cmp ecx, ebx
mov byte [esp + 0x30c], bl
je 0x46abf7
mov edx, dword [ecx + 4]
dec edx
mov eax, edx
cmp eax, ebx
mov dword [ecx + 4], edx
jne 0x46abf7
mov eax, dword [ecx]
push 1
call dword [eax]
mov ecx, dword [esp + 0x20]
cmp ecx, ebx
mov dword [esp + 0x30c], 0xffffffff
je 0x46ac15
dec dword [ecx + 4]
jne 0x46ac15
mov edx, dword [ecx]
push 1
call dword [edx]
mov ecx, dword [esp + 0x304]
pop edi
pop esi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x2f8]
xor ecx, dword [esp + 0x308]
pop ebp
pop ebx
add esp, 0x300
jmp fcn.004ae650