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

Disassembly:
push 0xffffffffffffffff
push 0x4d22f3
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x16c
mov eax, dword [ecx + 0x320]
push ebx
push ebp
lea ebp, [ecx + 0x314]
xor ebx, ebx
cmp eax, ebx
push esi
push edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x10], ebx
jge 0x45e576
push ebx
call fcn.004354d0
add esp, 4
mov dword [esp + 0x10], eax
mov edx, dword [ebp + 8]
cmp edx, ebx
jge 0x45e5f6
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 0x45e5f6
jmp 0x45e5b0
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 0x45e5e4
mov ecx, edi
call fcn.004318f0
lea ecx, [edi + 8]
mov byte [esp + 0x184], 2
call fcn.004318f0
inc esi
mov dword [esp + 0x184], 0xffffffff
mov dword [esp + 0x1c], esi
js 0x45e5b0
cmp dword [ebp + 8], ebx
jle 0x45e63b
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.00431a00
mov ecx, edi
mov dword [esp + 0x184], 0xffffffff
call fcn.00431a00
mov eax, dword [ebp + 8]
inc esi
add ebx, 0x14
cmp esi, eax
jl 0x45e600
xor ebx, ebx
mov eax, dword [ebp + 4]
cmp eax, ebx
je 0x45e654
push eax
call fcn.004352c0
mov edx, dword [esp + 0x14]
add esp, 4
mov dword [ebp + 4], edx
jmp 0x45e65b
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 0x45e690
mov dword [esp + 0x14], 0
jmp 0x45e6db
mov eax, dword [ebp + 0xc]
cmp eax, ebx
jge 0x45e6cc
mov ecx, dword [ebp + 8]
lea edx, [ecx + 1]
cmp ebx, edx
jne 0x45e6bd
test eax, eax
jne 0x45e6ae
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x14], eax
jmp 0x45e6db
cmp ecx, eax
jne 0x45e6db
mov ecx, dword [ebp + 0x14]
add ecx, eax
mov dword [esp + 0x14], ecx
jmp 0x45e6db
mov ecx, dword [ebp + 0x14]
add eax, ecx
cmp ebx, eax
jg 0x45e6d7
mov dword [esp + 0x14], eax
jmp 0x45e6db
mov edx, dword [ebp + 8]
cmp ebx, edx
jge 0x45e83d
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x14]
cmp eax, dword [ebp + 0xc]
mov dword [esp + 0x10], 0
jle 0x45e72b
lea edx, [eax + eax*4]
shl edx, 2
push edx
call fcn.004354d0
add esp, 4
test ebx, ebx
mov dword [esp + 0x10], eax
jle 0x45e72b
mov eax, dword [ebp + 8]
test eax, eax
jle 0x45e72b
cmp ebx, eax
jge 0x45e710
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 0x45e7a9
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 0x45e7a9
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 0x45e795
mov ecx, esi
call fcn.004318f0
lea ecx, [esi + 8]
mov byte [esp + 0x184], 7
call fcn.004318f0
inc edi
cmp edi, ebx
mov dword [esp + 0x184], 0xffffffff
mov dword [esp + 0x18], edi
jl 0x45e761
cmp ebx, dword [ebp + 8]
jge 0x45e801
lea edi, [ebx + ebx*4]
mov dword [esp + 0x18], ebx
shl edi, 2
jmp 0x45e7c0
mov esi, dword [ebp + 4]
add esi, edi
mov dword [esp + 0x24], esi
lea ecx, [esi + 8]
mov dword [esp + 0x184], 8
call fcn.00431a00
mov ecx, esi
mov dword [esp + 0x184], 0xffffffff
call fcn.00431a00
mov eax, dword [esp + 0x18]
mov ecx, dword [ebp + 8]
inc eax
add edi, 0x14
cmp eax, ecx
mov dword [esp + 0x18], eax
jl 0x45e7c0
mov eax, dword [ebp + 4]
test eax, eax
je 0x45e82d
mov esi, dword [esp + 0x14]
cmp esi, dword [ebp + 0xc]
jle 0x45e8b7
push eax
call fcn.004352c0
mov edx, dword [esp + 0x14]
add esp, 4
mov dword [ebp + 4], edx
mov dword [ebp + 0xc], esi
jmp 0x45e8b7
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [ebp + 4], eax
mov dword [ebp + 0xc], ecx
jmp 0x45e8b7
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 0x45e8b7
jmp 0x45e870
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 0x45e8a3
mov ecx, esi
call fcn.004318f0
lea ecx, [esi + 8]
mov byte [esp + 0x184], 5
call fcn.004318f0
inc edi
cmp edi, ebx
mov dword [esp + 0x184], 0xffffffff
mov dword [esp + 0x18], edi
jl 0x45e870
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.004887ad
add esp, 0xc
lea edx, [esp + 0x58]
push edx
mov ecx, edi
call fcn.00431bf0
mov ebx, dword [esp + 0x1c]
push ebx
lea eax, [esp + 0x5c]
push str._d_1
push eax
call fcn.004887ad
add esp, 0xc
lea ecx, [esp + 0x58]
push ecx
lea ecx, [edi + 8]
call fcn.00431bf0
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 0x45e680
mov ebx, dword [esp + 0x28]
mov eax, dword [ebx + 0x238]
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 + 0x32c]
push eax
mov ecx, esi
call fcn.00431bf0
push str.Genimo
mov ecx, esi
call fcn.00431c50
push 0x4de60c
mov ecx, esi
call fcn.00431c50
push str.High.score
mov ecx, esi
call fcn.00431c50
push 0x2c
call fcn.0048887d
add esp, 4
mov dword [esp + 0x24], eax
test eax, eax
mov dword [esp + 0x184], 9
je 0x45e9b4
push 1
push 1
push 1
push esi
mov ecx, eax
call fcn.004330b0
mov ebp, eax
jmp 0x45e9b6
xor ebp, ebp
test ebp, ebp
mov dword [esp + 0x184], 0xffffffff
je 0x45eae1
mov ecx, ebp
call fcn.00433390
test al, al
je 0x45ead1
lea ecx, [esp + 0x30]
call fcn.004318f0
push str.Version
lea ecx, [esp + 0x34]
push ecx
mov ecx, ebp
mov dword [esp + 0x18c], 0xa
call fcn.00432ff0
test al, al
je 0x45eabd
push 0x4de658
lea ecx, [esp + 0x34]
call fcn.00403460
test al, al
je 0x45eabd
mov eax, dword [ebx + 0x31c]
mov edi, 1
cmp eax, edi
jl 0x45eabd
mov esi, 0x14
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x318]
push edi
lea ecx, [esp + 0x3c]
push str.Player_dName
push ecx
lea ebx, [esi + eax - 0x14]
call fcn.004887ad
add esp, 0xc
lea edx, [esp + 0x38]
push edx
push ebx
mov ecx, ebp
call fcn.00432ff0
push edi
lea eax, [esp + 0x3c]
push str.Player_dLevel
push eax
call fcn.004887ad
add esp, 0xc
lea ecx, [esp + 0x38]
push ecx
lea edx, [ebx + 8]
push edx
mov ecx, ebp
call fcn.00432ff0
push edi
lea eax, [esp + 0x3c]
push str.Player_dScore
push eax
call fcn.004887ad
add esp, 0xc
lea ecx, [esp + 0x38]
push ecx
add ebx, 0x10
push ebx
mov ecx, ebp
call fcn.00433be0
mov edx, dword [esp + 0x28]
mov eax, dword [edx + 0x31c]
inc edi
add esi, 0x14
cmp edi, eax
jle 0x45ea33
lea ecx, [esp + 0x30]
mov dword [esp + 0x184], 0xffffffff
call fcn.00431a00
mov ecx, ebp
call fcn.00433400
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