Function at 0x477f50
Capabilities:
Check if file exists
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x520e4d
mov eax, dword fs:[0]
push eax
mov eax, 0x1820
call fcn.004ac5b0
mov eax, dword [0x56f790]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x1820], eax
lea eax, [ebp - 0x1818]
push eax
call fcn.0040ed70
mov ecx, eax
call fcn.0040af70
lea ecx, [ebp - 0x1811]
mov dword [ebp - 4], 0
call fcn.0050ed90
lea ecx, [ebp - 0x1811]
mov byte [ebp - 4], 1
call fcn.00510880
or edi, 0xffffffff
test eax, eax
je 0x477fdd
push str.CInstaller::CreateDesktopShortcut__IsAnyProductGameCenterShortcutExisting__skip
call fcn.00441ac0
add esp, 4
lea ebx, [edi + 2]
jmp 0x4782fb
push dword [ebp - 0x1818]
lea ecx, [ebp - 0x1811]
call fcn.00510920
test eax, eax
je 0x47800f
push dword [ebp - 0x1818]
push str.CInstaller::CreateDesktopShortcut__IsGameCenterShortcutExisting__s___skip
call fcn.00441ac0
add esp, 8
mov ebx, 1
jmp 0x4782fb
cmp dword [ebp + 8], 0
je 0x478032
push dword [ebp - 0x1818]
push str.CInstaller::CreateDesktopShortcut__wont_create_if_not_exists__s.lnk__skip
call fcn.00441ac0
add esp, 8
mov ebx, 1
jmp 0x4782fb
push str._from
lea ecx, [ebp - 0x181c]
call fcn.004093d0
mov byte [ebp - 4], 2
call fcn.0040ed70
mov ecx, eax
call fcn.0040caa0
test eax, eax
je 0x478081
mov eax, dword [ebx + 0x14]
cmp dword [eax - 0xc], 0
je 0x478081
mov eax, dword [ebx + 0x10]
cmp dword [eax - 0xc], 0
je 0x478081
push dword [ebx + 0x1c]
lea eax, [ebp - 0x181c]
push str._s_dsk
push eax
call fcn.00410920
add esp, 0xc
jmp 0x4780b2
call fcn.0040ed70
mov ecx, eax
call fcn.0040b130
mov esi, dword [eax]
call fcn.0040ed70
mov ecx, eax
call fcn.0040b120
push esi
push dword [eax]
lea eax, [ebp - 0x181c]
push str._s___s_dsk
push eax
call fcn.00410920
add esp, 0x10
push 0x800
lea eax, [ebp - 0x1810]
push 0
push eax
call fcn.004b17e0
add esp, 0xc
lea eax, [ebp - 0x1810]
push 1
push 0x19
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push 0x800
lea eax, [ebp - 0x810]
push 0
push eax
call fcn.004b17e0
add esp, 0xc
call fcn.00410b40
mov ecx, eax
test ecx, ecx
je 0x478348
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x1824], eax
push dword [ebp - 0x1818]
lea eax, [ebp - 0x1824]
mov byte [ebp - 4], 3
push 0x53aae0
push eax
call fcn.0040ecb0
mov esi, dword [ebp - 0x1824]
lea eax, [ebp - 0x1810]
add esp, 0xc
push esi
push eax
lea eax, [ebp - 0x810]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
push 0x800
lea eax, [ebp - 0x1010]
push 0
push eax
call fcn.004b17e0
add esp, 0xc
call fcn.0040ed70
mov ecx, eax
call fcn.0040cbb0
test eax, eax
jne 0x478184
call fcn.0040ed70
mov ecx, eax
call fcn.0040cb60
test eax, eax
jne 0x478184
push str.LDSGameCenter.exe
jmp 0x478189
push str.pgstation.exe
mov eax, dword [ebp - 0x1820]
push dword [eax]
lea eax, [ebp - 0x1010]
push eax
mov eax, dword [sym.imp.SHLWAPI.dll_PathCombineW]
call eax
lea eax, [ebp - 0x810]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4781cb
lea eax, [ebp - 0x810]
push eax
push str.CInstaller::CreateDesktopShortcut__exists__s.lnk__skip
call fcn.00441ac0
add esp, 8
xor ebx, ebx
jmp 0x4782bf
push 0
push 0
lea eax, [ebp - 0x1010]
mov ecx, ebx
push eax
lea eax, [ebp - 0x810]
push eax
push dword [ebp - 0x181c]
lea eax, [ebp - 0x1010]
push eax
push dword [ebp - 0x1818]
call fcn.004787f0
push str.add_dsk
lea ecx, [ebp - 0x182c]
call fcn.004093d0
push str.install
lea ecx, [ebp - 0x1828]
mov byte [ebp - 4], 4
call fcn.004093d0
sub esp, 0x28
mov eax, esp
mov dword [ebp - 0x1820], esp
mov dword [eax + 0x24], 0
push 0
push 0
lea eax, [ebp - 0x182c]
mov byte [ebp - 4], 6
push eax
lea eax, [ebp - 0x1828]
push eax
call fcn.0046f0b0
mov ecx, eax
mov byte [ebp - 4], 5
call fcn.00470670
mov edx, dword [ebp - 0x1828]
mov eax, edi
mov byte [ebp - 4], 4
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x478274
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x182c]
mov eax, edi
mov byte [ebp - 4], 3
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x478295
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0
push 0x2a
push 0x1a
push 0xffff
call dword [sym.imp.USER32.dll_PostMessageW]
push 0
push 0
push 0x1000
push 0x8000000
call dword [sym.imp.SHELL32.dll_SHChangeNotify]
mov ebx, 1
mov byte [ebp - 4], 2
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x4782da
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x181c]
mov eax, edi
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4782fb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x1811]
call fcn.0050ef10
mov eax, dword [ebp - 0x1818]
mov dword [ebp - 4], 0xffffffff
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], edi
dec edi
test edi, edi
jg 0x478328
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004ac4b8
mov esp, ebp
pop ebp
ret 8
push 0x80004005
call fcn.00404400
int3