Function at 0x456400
Capabilities:
Get common file path
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x4c8d23
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x16c
mov eax, dword [ecx + 0x338]
push ebx
push ebp
lea ebp, [ecx + 0x32c]
xor ebx, ebx
cmp eax, ebx
push esi
push edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x10], ebx
jge 0x456446
push ebx
call fcn.0042e150
add esp, 4
mov dword [esp + 0x10], eax
mov edx, dword [ebp + 8]
cmp edx, ebx
jge 0x4564c6
mov esi, dword [esp + 0x10]
mov ecx, edx
imul ecx, ecx, 0xffffffec
lea edx, [edx + edx*4]
lea edi, [esi + edx*4]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov esi, dword [ebp + 8]
cmp esi, ebx
mov dword [esp + 0x1c], esi
jge 0x4564c6
jmp 0x456480
mov ecx, dword [esp + 0x10]
lea eax, [esi + esi*4]
lea edi, [ecx + eax*4]
mov dword [esp + 0x20], edi
cmp edi, ebx
mov dword [esp + 0x184], 1
je 0x4564b4
mov ecx, edi
call fcn.0042a870
lea ecx, [edi + 8]
mov byte [esp + 0x184], 2
call fcn.0042a870
inc esi
mov dword [esp + 0x184], 0xffffffff
mov dword [esp + 0x1c], esi
js 0x456480
cmp dword [ebp + 8], ebx
jle 0x45650b
xor esi, esi
lea ecx, [ecx]
mov edi, dword [ebp + 4]
add edi, ebx
mov dword [esp + 0x1c], edi
lea ecx, [edi + 8]
mov dword [esp + 0x184], 3
call fcn.0042a980
mov ecx, edi
mov dword [esp + 0x184], 0xffffffff
call fcn.0042a980
mov eax, dword [ebp + 8]
inc esi
add ebx, 0x14
cmp esi, eax
jl 0x4564d0
xor ebx, ebx
mov eax, dword [ebp + 4]
cmp eax, ebx
je 0x456524
push eax
call fcn.0042df40
mov edx, dword [esp + 0x14]
add esp, 4
mov dword [ebp + 4], edx
jmp 0x45652b
mov eax, dword [esp + 0x10]
mov dword [ebp + 4], eax
mov dword [ebp + 0xc], ebx
mov dword [ebp + 8], ebx
mov dword [esp + 0x2c], 1
mov dword [esp + 0x30], ebp
mov dword [esp + 0x1c], 0xa
mov dword [esp + 0x20], 0x186a0
lea ecx, [ecx]
mov ebx, dword [ebp + 8]
inc ebx
jne 0x456560
mov dword [esp + 0x14], 0
jmp 0x4565ab
mov eax, dword [ebp + 0xc]
cmp eax, ebx
jge 0x45659c
mov ecx, dword [ebp + 8]
lea edx, [ecx + 1]
cmp ebx, edx
jne 0x45658d
test eax, eax
jne 0x45657e
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x14], eax
jmp 0x4565ab
cmp ecx, eax
jne 0x4565ab
mov ecx, dword [ebp + 0x14]
add ecx, eax
mov dword [esp + 0x14], ecx
jmp 0x4565ab
mov ecx, dword [ebp + 0x14]
add eax, ecx
cmp ebx, eax
jg 0x4565a7
mov dword [esp + 0x14], eax
jmp 0x4565ab
mov edx, dword [ebp + 8]
cmp ebx, edx
jge 0x45670d
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x14]
cmp eax, dword [ebp + 0xc]
mov dword [esp + 0x10], 0
jle 0x4565fb
lea edx, [eax + eax*4]
shl edx, 2
push edx
call fcn.0042e150
add esp, 4
test ebx, ebx
mov dword [esp + 0x10], eax
jle 0x4565fb
mov eax, dword [ebp + 8]
test eax, eax
jle 0x4565fb
cmp ebx, eax
jge 0x4565e0
mov eax, ebx
mov esi, dword [ebp + 4]
mov edi, dword [esp + 0x10]
lea ecx, [eax + eax*4]
shl ecx, 2
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [ebp + 8]
cmp ebx, edx
jle 0x456679
mov esi, dword [esp + 0x10]
mov eax, ebx
sub eax, edx
lea ecx, [eax + eax*4]
shl ecx, 2
lea edx, [edx + edx*4]
lea edi, [esi + edx*4]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [ebp + 8]
cmp edi, ebx
mov dword [esp + 0x18], edi
jge 0x456679
mov ecx, dword [esp + 0x10]
lea eax, [edi + edi*4]
lea esi, [ecx + eax*4]
mov dword [esp + 0x24], esi
test esi, esi
mov dword [esp + 0x184], 6
je 0x456665
mov ecx, esi
call fcn.0042a870
lea ecx, [esi + 8]
mov byte [esp + 0x184], 7
call fcn.0042a870
inc edi
cmp edi, ebx
mov dword [esp + 0x184], 0xffffffff
mov dword [esp + 0x18], edi
jl 0x456631
cmp ebx, dword [ebp + 8]
jge 0x4566d1
lea edi, [ebx + ebx*4]
mov dword [esp + 0x18], ebx
shl edi, 2
jmp 0x456690
mov esi, dword [ebp + 4]
add esi, edi
mov dword [esp + 0x24], esi
lea ecx, [esi + 8]
mov dword [esp + 0x184], 8
call fcn.0042a980
mov ecx, esi
mov dword [esp + 0x184], 0xffffffff
call fcn.0042a980
mov eax, dword [esp + 0x18]
mov ecx, dword [ebp + 8]
inc eax
add edi, 0x14
cmp eax, ecx
mov dword [esp + 0x18], eax
jl 0x456690
mov eax, dword [ebp + 4]
test eax, eax
je 0x4566fd
mov esi, dword [esp + 0x14]
cmp esi, dword [ebp + 0xc]
jle 0x456787
push eax
call fcn.0042df40
mov edx, dword [esp + 0x14]
add esp, 4
mov dword [ebp + 4], edx
mov dword [ebp + 0xc], esi
jmp 0x456787
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [ebp + 4], eax
mov dword [ebp + 0xc], ecx
jmp 0x456787
mov esi, dword [ebp + 4]
mov eax, ebx
sub eax, edx
lea ecx, [eax + eax*4]
shl ecx, 2
lea edx, [edx + edx*4]
lea edi, [esi + edx*4]
mov edx, ecx
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [ebp + 8]
cmp edi, ebx
mov dword [esp + 0x18], edi
jge 0x456787
jmp 0x456740
mov ecx, dword [ebp + 4]
lea eax, [edi + edi*4]
lea esi, [ecx + eax*4]
mov dword [esp + 0x24], esi
test esi, esi
mov dword [esp + 0x184], 4
je 0x456773
mov ecx, esi
call fcn.0042a870
lea ecx, [esi + 8]
mov byte [esp + 0x184], 5
call fcn.0042a870
inc edi
cmp edi, ebx
mov dword [esp + 0x184], 0xffffffff
mov dword [esp + 0x18], edi
jl 0x456740
mov esi, dword [esp + 0x2c]
mov eax, dword [ebp + 4]
push esi
lea ecx, [esp + 0x5c]
lea edx, [ebx + ebx*4]
push str.Player_d
push ecx
mov dword [ebp + 8], ebx
lea edi, [eax + edx*4 - 0x14]
call fcn.0048025b
add esp, 0xc
lea edx, [esp + 0x58]
push edx
mov ecx, edi
call fcn.0042ab70
mov ebx, dword [esp + 0x1c]
push ebx
lea eax, [esp + 0x5c]
push str._d_1
push eax
call fcn.0048025b
add esp, 0xc
lea ecx, [esp + 0x58]
push ecx
lea ecx, [edi + 8]
call fcn.0042ab70
mov eax, dword [esp + 0x20]
inc esi
mov dword [edi + 0x10], eax
sub eax, 0x2710
dec ebx
cmp eax, 0x2710
mov dword [esp + 0x2c], esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ebx
jge 0x456550
mov ebx, dword [esp + 0x28]
mov eax, dword [ebx + 0x25c]
lea edx, [esp + 0x78]
push edx
push 0
push 0
push 0x8023
push eax
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
lea eax, [esp + 0x78]
lea esi, [ebx + 0x344]
push eax
mov ecx, esi
call fcn.0042ab70
push str.Genimo
mov ecx, esi
call fcn.0042abd0
push 0x4d3d58
mov ecx, esi
call fcn.0042abd0
push str.High.score
mov ecx, esi
call fcn.0042abd0
push 0x2c
call fcn.0047fffa
add esp, 4
mov dword [esp + 0x24], eax
test eax, eax
mov dword [esp + 0x184], 9
je 0x456884
push 1
push 1
push 1
push esi
mov ecx, eax
call fcn.0042be20
mov ebp, eax
jmp 0x456886
xor ebp, ebp
test ebp, ebp
mov dword [esp + 0x184], 0xffffffff
je 0x4569b1
mov ecx, ebp
call fcn.0042c100
test al, al
je 0x4569a1
lea ecx, [esp + 0x30]
call fcn.0042a870
push str.Version
lea ecx, [esp + 0x34]
push ecx
mov ecx, ebp
mov dword [esp + 0x18c], 0xa
call fcn.0042bd70
test al, al
je 0x45698d
push 0x4d3da4
lea ecx, [esp + 0x34]
call fcn.004027d0
test al, al
je 0x45698d
mov eax, dword [ebx + 0x334]
mov edi, 1
cmp eax, edi
jl 0x45698d
mov esi, 0x14
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x330]
push edi
lea ecx, [esp + 0x3c]
push str.Player_dName
push ecx
lea ebx, [esi + eax - 0x14]
call fcn.0048025b
add esp, 0xc
lea edx, [esp + 0x38]
push edx
push ebx
mov ecx, ebp
call fcn.0042bd70
push edi
lea eax, [esp + 0x3c]
push str.Player_dLevel
push eax
call fcn.0048025b
add esp, 0xc
lea ecx, [esp + 0x38]
push ecx
lea edx, [ebx + 8]
push edx
mov ecx, ebp
call fcn.0042bd70
push edi
lea eax, [esp + 0x3c]
push str.Player_dScore
push eax
call fcn.0048025b
add esp, 0xc
lea ecx, [esp + 0x38]
push ecx
add ebx, 0x10
push ebx
mov ecx, ebp
call fcn.0042c860
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x334]
inc edi
add esi, 0x14
cmp edi, eax
jle 0x456903
lea ecx, [esp + 0x30]
mov dword [esp + 0x184], 0xffffffff
call fcn.0042a980
mov ecx, ebp
call fcn.0042c170
mov eax, dword [ebp]
push 1
mov ecx, ebp
call dword [eax]
mov ecx, dword [esp + 0x17c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x178
ret