Function at 0x10016500
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4a4
mov eax, dword [0x1005f070]
xor eax, esp
mov dword [esp + 0x4a0], eax
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
push 0x10
mov edi, ecx
push 0x10
lea ecx, [esp + 0x20]
mov dword [esp + 0x18], edx
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COSize::constructor_int__int_]
test esi, esi
je 0x10016545
mov eax, dword [esi]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 4]
mov dword [esp + 0x1c], eax
xor eax, eax
push 0x206
push eax
mov word [esp + 0xa0], ax
lea eax, [esp + 0xa2]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
call dword [sym.imp.iSafeBase.dll_public:_static_class_elex::CAppMgr____cdecl_oopa::CSingleton_class_elex::CAppMgr_::GetInstance_void_]
mov ecx, eax
call dword [sym.imp.iSafeBase.dll_public:_class_COProductUtil____thiscall_elex::CAppMgr::GetProductUtil_void_]
cmp dword [eax + 0x2c], 8
lea esi, [eax + 0x18]
jb 0x1001657e
mov esi, dword [esi]
call dword [sym.imp.iSafeBase.dll_public:_static_class_elex::CAppMgr____cdecl_oopa::CSingleton_class_elex::CAppMgr_::GetInstance_void_]
mov ebx, dword [sym.imp.iSafeBase.dll_public:_class_COPathManager____thiscall_elex::CAppMgr::GetPathMgr_void_]
mov ecx, eax
call ebx
push esi
sub esp, 8
lea eax, [esp + 0xa4]
push eax
call fcn.1002d7f0
push 0x10046630
lea eax, [esp + 0x9c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
call dword [sym.imp.iSafeBase.dll_public:_static_class_elex::CAppMgr____cdecl_oopa::CSingleton_class_elex::CAppMgr_::GetInstance_void_]
mov ecx, eax
call ebx
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
lea eax, [esp + 0x98]
push eax
call esi
test eax, eax
jne 0x10016626
lea eax, [esp + 0x98]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
test eax, eax
je 0x10016626
mov eax, dword [0x10063644]
test al, 1
jne 0x1001660c
or eax, 1
push 0x1003f6d0
mov dword [0x10063644], eax
mov dword [0x10063640], 0
call fcn.1003748a
add esp, 4
lea eax, [esp + 0x98]
push eax
push str.Failed_to_create_directory_:__s
push 0x10063640
call fcn.10035e40
add esp, 0xc
xor eax, eax
push 0x76
push eax
mov word [esp + 0x28], ax
lea eax, [esp + 0x2a]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
call dword [sym.imp.iSafeBase.dll_public:_static_class_elex::CAppMgr____cdecl_oopa::CSingleton_class_elex::CAppMgr_::GetInstance_void_]
mov ecx, eax
call ebx
mov ecx, edi
lea edx, [ecx + 2]
lea esp, [esp]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x10016650
sub ecx, edx
sar ecx, 1
je 0x1001666d
lea eax, [esp + 0x20]
push eax
mov ecx, edi
call fcn.1002d8e0
xor eax, eax
push 0x206
push eax
mov word [esp + 0x2a8], ax
lea eax, [esp + 0x2aa]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x9c]
push eax
lea eax, [esp + 0x2a8]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [esp + 0x2a0]
push eax
call esi
test eax, eax
jne 0x100166d5
push eax
push eax
push eax
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x2b0]
push eax
push edi
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
call dword [sym.imp.ouilibx.dll_public:_bool___thiscall_OUI::COUIManager::ExtractImageFileIcon_wchar_t_const___wchar_t___struct_tagSIZE___bool__int___int_]
lea eax, [esp + 0x2a0]
push eax
call esi
test eax, eax
je 0x10016716
push 0
push dword [esp + 0x14]
lea eax, [esp + 0x2a8]
push eax
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::ORES_TABLE____cdecl_OUI::ORES_TABLE::GetResTable_void_]
mov ecx, eax
call dword [sym.imp.ouilibx.dll_public:_bool___thiscall_OUI::ORES_TABLE::LoadImageFromFile_wchar_t_const___struct_OUI::IImage____bool_]
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x4a0]
xor ecx, esp
call fcn.10037276
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x4ac]
pop edi
pop esi
pop ebx
xor ecx, esp
xor al, al
call fcn.10037276
mov esp, ebp
pop ebp
ret