Function at 0x420920
Capabilities:
Check if file exists
Get file system object information

Disassembly:
push 0xffffffffffffffff
push 0x51ee76
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x168
push ebx
push ebp
push esi
mov esi, dword [esp + 0x184]
push edi
push esi
lea ecx, [esp + 0x14]
xor ebx, ebx
call sub.MFC42.DLL_CString::CString_2
push 0x2c
push esi
mov dword [esp + 0x188], ebx
call dword [sym.imp.MSVCRT.dll_strchr]
add esp, 8
test eax, eax
jne 0x420a9f
push 0x56f01c
push 0x5623e8
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::Replace
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x420b46
mov ecx, dword [esp + 0x10]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFindExtensionA]
push str..exe
push ecx
call esi
mov edi, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
push eax
call edi
test eax, eax
je 0x4209d4
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryA]
test eax, eax
jne 0x420a08
mov eax, dword [esp + 0x10]
push 0x56f01c
push eax
call esi
push eax
call edi
test eax, eax
jne 0x420a08
mov ecx, dword [esp + 0x10]
push ebx
push ecx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.SHELL32.dll_ExtractIconA]
mov ebp, eax
cmp ebp, ebx
je 0x420a08
lea ecx, [esp + 0x10]
mov dword [esp + 0x180], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, ebp
jmp 0x420b5c
mov edx, dword [esp + 0x10]
push str..exe
push edx
call esi
push eax
call edi
test eax, eax
jne 0x420a2e
mov eax, dword [esp + 0x10]
push str..dll
push eax
call esi
push eax
call edi
test eax, eax
je 0x420a6a
mov ecx, dword [esp + 0x10]
push 0x10
push 0x10
push 0x10
push 1
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.USER32.dll_LoadImageA]
mov esi, eax
cmp esi, ebx
je 0x420a6a
lea ecx, [esp + 0x10]
mov dword [esp + 0x180], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, esi
jmp 0x420b5c
mov ecx, 0x57
xor eax, eax
lea edi, [esp + 0x1c]
mov dword [esp + 0x18], ebx
push 0x100
lea edx, [esp + 0x1c]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x14]
push 0x160
push edx
push ebx
push eax
call dword [sym.imp.SHELL32.dll_SHGetFileInfoA]
mov ebx, dword [esp + 0x18]
jmp 0x420b46
push 0x2c
lea ecx, [esp + 0x14]
or edi, 0xffffffff
call sub.MFC42.DLL_CString::Find
mov esi, eax
cmp esi, ebx
jle 0x420b0f
lea ecx, [esi + 1]
lea edx, [esp + 0x14]
push ecx
push edx
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::Mid_1
mov eax, dword [eax]
push eax
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
lea ecx, [esp + 0x14]
mov edi, eax
call sub.MFC42.DLL_CString::CString
push esi
lea eax, [esp + 0x18]
push 0xffffffffffffffff
push eax
lea ecx, [esp + 0x1c]
call sub.MFC42.DLL_CString::Mid
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x184], 1
call sub.MFC42.DLL_CString::operator_2
lea ecx, [esp + 0x14]
mov byte [esp + 0x180], bl
call sub.MFC42.DLL_CString::CString
push 0x56f01c
push 0x5623e8
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::Replace
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
je 0x420b46
mov edx, dword [esp + 0x10]
push edi
push edx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.SHELL32.dll_ExtractIconA]
mov ebx, eax
lea ecx, [esp + 0x10]
mov dword [esp + 0x180], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, ebx
mov ecx, dword [esp + 0x178]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x174
ret