Function at 0x4fa350
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x580077
push eax
mov eax, 0xf1a8
mov dword fs:[0], esp
call fcn.005655c0
push ebx
push esi
push edi
xor edi, edi
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x1c], edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x20], edi
mov bl, 2
push 0x5ed8c0
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], bl
call fcn.0040f8c0
mov eax, dword [0x5e5d30]
mov byte [ebp - 4], 3
cmp eax, edi
jne 0x4fa3f5
cmp dword [0x5e5d2c], edi
jne 0x4fa3f5
push 0xc
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [ebp - 0x2c], eax
cmp eax, edi
mov byte [ebp - 4], 4
je 0x4fa3cb
mov ecx, eax
call fcn.00464f50
jmp 0x4fa3cd
xor eax, eax
mov dword [0x5e5d2c], eax
mov eax, dword [0x5cf938]
push eax
push 0x41dab0
mov ecx, 0x5eafa0
mov byte [ebp - 4], 3
call fcn.00406600
mov dword [0x5e5d30], 1
mov ecx, dword [ebp - 0x14]
mov esi, dword [0x5e5d2c]
mov byte [ebp - 4], bl
mov edx, dword [ecx]
call dword [edx + 8]
mov eax, dword [esi]
lea ecx, [ebp - 0x1c]
push ecx
push esi
call dword [eax + 8]
test eax, eax
jl 0x4fa906
mov eax, dword [ebp - 0x1c]
cmp eax, edi
je 0x4fa906
push 0x5d1b68
lea edx, [ebp - 0x28]
push eax
push edx
call fcn.00427500
mov eax, dword [ebp - 0x1c]
push 0x5d0be0
lea ecx, [ebp - 0x20]
push eax
push ecx
call fcn.00427500
mov dword [ebp - 0x30], edi
mov eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x30]
push ecx
push eax
mov edx, dword [eax]
mov byte [ebp - 4], 5
call dword [edx + 0x10]
test eax, eax
jl 0x4fa8fc
mov dword [ebp - 0x10], edi
push 0x5ed920
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 6
call fcn.0040f8c0
mov eax, dword [0x5e5cb8]
mov bl, 7
cmp eax, edi
mov byte [ebp - 4], bl
jne 0x4fa4d6
cmp dword [0x5e5cb4], edi
jne 0x4fa4d6
push 0x380
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [ebp - 0x2c], eax
cmp eax, edi
mov byte [ebp - 4], 8
je 0x4fa4ac
push edi
mov ecx, eax
call fcn.00414650
jmp 0x4fa4ae
xor eax, eax
mov edx, dword [0x5cebb0]
mov ecx, 0x5eafa0
push edx
push 0x406a50
mov byte [ebp - 4], bl
mov dword [0x5e5cb4], eax
call fcn.00406600
mov dword [0x5e5cb8], 1
mov ecx, dword [ebp - 0x14]
mov esi, dword [0x5e5cb4]
mov byte [ebp - 4], 6
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, dword [esi]
lea edx, [ebp - 0x10]
push edx
push esi
call dword [ecx + 0x78]
mov eax, 0x5e5830
test eax, eax
mov eax, dword [ebp - 0x10]
jne 0x4fa507
cmp eax, edi
je 0x4fa55d
jmp 0x4fa5c4
cmp eax, edi
je 0x4fa5c4
mov ecx, 0x5e5830
test ecx, ecx
jne 0x4fa51c
xor eax, eax
jmp 0x4fa546
push 0x5e5830
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
mov esi, eax
inc esi
lea eax, [esi + esi]
add eax, 3
and al, 0xfc
call fcn.005655c0
mov eax, esp
push edi
push esi
push 0x5e5830
push eax
call fcn.0042d240
mov edx, dword [ebp - 0x10]
push eax
push edx
call dword [sym.imp.MSVCRT.dll_wcscmp]
add esp, 8
test eax, eax
sete al
test al, al
je 0x4fa5c4
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x153]
mov byte [ebp - 0x154], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 0
push eax
push 5
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x4fa5c2
lea ecx, [ebp - 0x154]
push ecx
push eax
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListA]
test eax, eax
je 0x4fa5c2
mov edx, dword [ebp - 0x10]
push edx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
lea eax, [ebp - 0x154]
push 0xffffffffffffffff
push eax
call fcn.00406d70
add esp, 8
mov dword [ebp - 0x10], eax
xor edi, edi
push 0x5ed920
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x34], edi
call fcn.0040f8c0
mov eax, dword [0x5e5cb8]
mov bl, 9
cmp eax, edi
mov byte [ebp - 4], bl
jne 0x4fa636
cmp dword [0x5e5cb4], edi
jne 0x4fa636
push 0x380
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [ebp - 0x2c], eax
cmp eax, edi
mov byte [ebp - 4], 0xa
je 0x4fa60c
push edi
mov ecx, eax
call fcn.00414650
jmp 0x4fa60e
xor eax, eax
mov ecx, dword [0x5cebb0]
mov byte [ebp - 4], bl
push ecx
push 0x406a50
mov ecx, 0x5eafa0
mov dword [0x5e5cb4], eax
call fcn.00406600
mov dword [0x5e5cb8], 1
mov ecx, dword [ebp - 0x14]
mov esi, dword [0x5e5cb4]
mov byte [ebp - 4], 6
mov edx, dword [ecx]
call dword [edx + 8]
mov eax, dword [esi]
lea ecx, [ebp - 0x34]
push ecx
push esi
call dword [eax + 0x8c]
cmp dword [ebp - 0x34], edi
je 0x4fa66b
mov ecx, dword [0x5e6010]
cmp ecx, edi
je 0x4fa66b
push 1
call fcn.004f2660
call fcn.0041d750
mov ecx, eax
call fcn.00527810
mov edx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x30]
push edx
push eax
call sub.MFC42.DLL_CWnd::FromHandle
push eax
push esi
push 0x80206
push edi
push edi
push 1
lea ecx, [ebp - 0xf1b4]
call fcn.0044c9c0
lea ecx, [ebp - 0xf1b4]
mov byte [ebp - 4], 0xb
call fcn.0044cac0
cmp eax, 1
jne 0x4fa8ce
mov eax, dword [0x5e5d28]
cmp eax, edi
je 0x4fa6c3
mov ebx, eax
test ebx, ebx
jne 0x4fa723
xor edi, edi
lea ecx, [ebp - 0xf1b4]
mov byte [ebp - 4], 6
call fcn.00450af0
mov eax, dword [ebp - 0x10]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push eax
call esi
mov ecx, dword [ebp - 0x30]
push ecx
call esi
mov eax, dword [ebp - 0x20]
mov byte [ebp - 4], 1
cmp eax, edi
je 0x4fa6f5
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 0
cmp eax, edi
je 0x4fa706
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 4], 0xffffffff
cmp eax, edi
je 0x4fa93c
mov edx, dword [eax]
push eax
call dword [edx + 8]
jmp 0x4fa93c
xor edi, edi
mov dword [ebp - 0x24], edi
mov eax, dword [ebx]
lea ecx, [ebp - 0x24]
push ecx
push ebx
mov byte [ebp - 4], 0xc
call dword [eax + 0xc0]
mov eax, dword [ebp - 0x24]
cmp eax, edi
je 0x4fa8be
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x14], edi
mov edx, dword [eax]
push ecx
push eax
call dword [edx + 0x24]
xor esi, esi
mov dword [ebp - 0x48], esi
mov eax, dword [ebp - 0x20]
mov byte [ebp - 4], 0xd
cmp eax, edi
mov dword [ebp - 0x40], edi
je 0x4fa76e
mov edx, dword [eax]
lea ecx, [ebp - 0x40]
push ecx
push eax
call dword [edx + 0x24]
lea ecx, [ebp - 0xf1b4]
mov dword [ebp - 0x4c], 1
mov dword [ebp - 0x44], 0xffffffff
call fcn.0044cc60
cmp eax, edi
mov dword [ebp - 0x38], eax
je 0x4fa7d8
lea edx, [ebp - 0x38]
lea ecx, [ebp - 0xf1b4]
push edx
call fcn.0044cc70
push esi
mov edi, eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
push edi
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov esi, eax
lea eax, [ebp - 0x44]
push 0
push eax
mov eax, dword [ebp - 0x40]
lea ecx, [ebp - 0x4c]
test eax, eax
setne dl
push ecx
mov ecx, dword [ebp - 0x3c]
push edx
push esi
push ebx
mov dword [ebp - 0x48], esi
call fcn.004faf10
mov eax, dword [ebp - 0x38]
test eax, eax
jne 0x4fa78e
xor edi, edi
mov eax, dword [ebp - 0x24]
lea edx, [ebp - 0x2c]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x24]
mov ebx, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x14]
sub ebx, ecx
cmp ebx, edi
jle 0x4fa8b4
lea ecx, [ebp - 0x18]
call sub.MFC42.DLL_CString::CString_3
push ebx
lea eax, [ebp - 0x18]
push 0x5d7978
push eax
mov byte [ebp - 4], 0xe
call sub.MFC42.DLL_CString::Format
mov edx, dword [0x5ed8e0]
mov ecx, 0x5ed8e0
add esp, 0xc
mov dword [ebp - 0x3c], ecx
call dword [edx + 4]
mov eax, dword [0x5e5d38]
mov bl, 0xf
cmp eax, edi
mov byte [ebp - 4], bl
jne 0x4fa885
cmp dword [0x5e5d34], edi
jne 0x4fa885
push 0x13e4
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [ebp - 0x50], eax
cmp eax, edi
mov byte [ebp - 4], 0x10
je 0x4fa85c
push edi
mov ecx, eax
call fcn.0041db10
jmp 0x4fa85e
xor eax, eax
mov dword [0x5e5d34], eax
mov eax, dword [0x5cf9c0]
push eax
push 0x41dae0
mov ecx, 0x5eafa0
mov byte [ebp - 4], bl
call fcn.00406600
mov dword [0x5e5d38], 1
mov edx, dword [0x5ed8e0]
mov ebx, dword [0x5e5d34]
mov ecx, 0x5ed8e0
mov byte [ebp - 4], 0xe
call dword [edx + 8]
lea eax, [ebp - 0x18]
mov ecx, ebx
push eax
call fcn.00528bc0
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 0xd
call sub.MFC42.DLL_CString::CString
push esi
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x24]
cmp eax, edi
mov byte [ebp - 4], 0xb
je 0x4fa8cc
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
xor edi, edi
cmp dword [ebp - 0x34], edi
je 0x4fa8e3
mov ecx, dword [0x5e6010]
cmp ecx, edi
je 0x4fa8e3
push edi
call fcn.004f2660
lea ecx, [ebp - 0xf1b4]
mov byte [ebp - 4], 6
call fcn.00450af0
mov edx, dword [ebp - 0x10]
push edx
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x30]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x20]
mov byte [ebp - 4], 1
cmp eax, edi
je 0x4fa917
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x28]
mov byte [ebp - 4], 0
cmp eax, edi
je 0x4fa928
mov edx, dword [eax]
push eax
call dword [edx + 8]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 4], 0xffffffff
cmp eax, edi
je 0x4fa93c
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0xf1c0]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret