Function at 0x583890
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x5e71a4
mov eax, dword fs:[0]
push eax
sub esp, 0x224
mov eax, dword [0x72d630]
xor eax, esp
mov dword [esp + 0x220], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x72d630]
xor eax, esp
push eax
lea eax, [esp + 0x238]
mov dword fs:[0], eax
mov esi, ecx
mov eax, dword [esi]
mov edx, dword [eax + 0x14c]
call edx
mov ebp, eax
mov dword [esp + 0x18], ebp
test ebp, ebp
je 0x583b34
cmp dword [ebp + 8], 0
je 0x583b34
mov eax, dword [esi + 0xf8]
mov ecx, dword [esi + 0x80]
mov eax, dword [eax + 0x2c]
inc ecx
cmp ecx, eax
jge 0x583977
mov eax, dword [esi + 0x80]
add eax, 1
mov ecx, dword [esi + 0xf8]
js 0x583924
cmp eax, dword [ecx + 0x2c]
jge 0x583924
mov edx, dword [ecx + 0x28]
mov edi, dword [edx + eax*4]
lea eax, [edx + eax*4]
jmp 0x583926
xor edi, edi
mov eax, dword [esi]
mov edx, dword [eax + 0x150]
mov ebx, dword [edi + 0x84]
mov ecx, esi
call edx
cmp ebx, eax
jl 0x583977
mov eax, dword [esi]
mov edx, dword [eax + 0x150]
mov ebx, dword [edi + 0x84]
mov ecx, esi
call edx
add eax, dword [ebp + 4]
cmp ebx, eax
jg 0x583977
mov ecx, dword [esi + 0xf8]
mov eax, dword [ecx]
mov edx, dword [eax + 0x58]
push edi
call edx
mov eax, dword [esi + 0xf8]
mov ecx, dword [esi + 0x80]
mov eax, dword [eax + 0x2c]
inc ecx
cmp ecx, eax
jl 0x583903
mov ecx, dword [esi + 0x100]
call fcn.00538ee0
test eax, eax
je 0x5839a0
mov edx, dword [esi]
mov eax, dword [edx + 0x68]
push 1
mov ecx, esi
mov dword [esi + 0xd0], 0
call eax
jmp 0x583b34
mov ecx, dword [ebp + 8]
call dword [sym.imp.mfc90u.dll_ATL::CSimpleStringT_wchar_t_1_::IsEmpty]
test al, al
je 0x5839c7
mov edx, dword [esi]
mov eax, dword [edx + 0x68]
push 0
mov ecx, esi
mov dword [esi + 0xd0], 0
call eax
jmp 0x583b34
or dword [esi + 0xd0], 1
lea ecx, [esp + 0x28]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
lea edx, [esp + 0x28]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
mov eax, 0x5c
mov word [esp + ebx*2 + 0x28], ax
xor ecx, ecx
inc ebx
mov word [esp + ebx*2 + 0x28], cx
lea ecx, [esp + 0x14]
mov dword [esp + 0x1c], ebx
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
xor edi, edi
lea ecx, [esp + 0x20]
mov dword [esp + 0x240], edi
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
cmp dword [ebp + 4], edi
mov byte [esp + 0x240], 1
jle 0x583b20
jmp 0x583a37
mov ebx, dword [esp + 0x1c]
mov ebp, ecx
mov edx, dword [ebp]
mov edx, dword [edx + 8]
push 1
push ebx
lea eax, [esp + 0x30]
push eax
push edi
lea ecx, [esp + 0x24]
push ecx
mov ecx, ebp
call edx
test eax, eax
je 0x583b20
mov eax, dword [esi + 0x80]
mov edx, dword [esi]
lea ecx, [edi + eax + 1]
mov eax, dword [edx + 0x150]
push 1
push ecx
push 0x6b70dc
mov ecx, esi
call eax
mov ecx, dword [esi + 0xf8]
add eax, edi
push eax
push 1
call fcn.005266b0
lea ebx, [edi + 1]
push ebx
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x2c]
push edx
mov ebp, eax
call fcn.00582520
add esp, 0xc
mov ecx, eax
mov byte [esp + 0x240], 2
call dword [sym.imp.mfc90u.dll_]
push eax
mov ecx, ebp
call fcn.0052c750
lea ecx, [esp + 0x24]
mov byte [esp + 0x240], 1
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
push 8
mov ecx, ebp
call fcn.0052c1a0
test edi, edi
jne 0x583ae1
cmp dword [esi + 0x80], edi
je 0x583ae1
lea eax, [edi + 1]
jmp 0x583ae3
xor eax, eax
mov edx, dword [ebp]
push eax
mov eax, dword [edx + 0x64]
mov ecx, ebp
call eax
mov ecx, esi
call fcn.0052c1b0
test al, al
jns 0x583b11
test edi, edi
jne 0x583b11
mov ecx, ebp
call fcn.0052c1b0
or eax, 0x80
push eax
mov ecx, ebp
call fcn.0052c1a0
mov ecx, dword [esp + 0x18]
mov edi, ebx
cmp edi, dword [ecx + 4]
jl 0x583a31
lea ecx, [esp + 0x20]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [esp + 0x14]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
mov ecx, dword [esp + 0x238]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x220]
xor ecx, esp
call fcn.005e038a
add esp, 0x230
ret 4