Function at 0x4036c0
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xa6c
mov eax, dword [0x467060]
xor eax, esp
mov dword [esp + 0xa68], eax
mov eax, dword [ebp + 0x10]
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov ecx, eax
mov dword [esp + 0x14], eax
call fcn.00401c00
call fcn.004024e0
or al, byte [0x469f10]
mov byte [0x469f13], al
mov eax, dword [0x469f00]
test al, 1
jne 0x40371c
or eax, 1
push 0x4486c0
mov dword [0x469f00], eax
call fcn.00441527
add esp, 4
push ebx
mov ecx, 0x469af0
call fcn.00433140
mov eax, dword [0x469aec]
test al, 1
jne 0x40374a
or eax, 1
mov dword [0x469aec], eax
call fcn.00432790
push 0x4486b0
call fcn.00441527
add esp, 4
push 0x10
push 0x449fac
mov ecx, 0x469ad4
call fcn.00405570
mov eax, dword [0x469f00]
test al, 1
jne 0x403779
or eax, 1
push 0x4486c0
mov dword [0x469f00], eax
call fcn.00441527
add esp, 4
xor eax, eax
mov dword [esp + 0x2c], 7
mov dword [esp + 0x28], 0
mov word [esp + 0x18], ax
cmp word [0x469af0], ax
jne 0x40379d
xor ecx, ecx
jmp 0x4037b4
mov ecx, 0x469af0
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4037a5
sub ecx, edx
sar ecx, 1
push ecx
push 0x469af0
lea ecx, [esp + 0x20]
call fcn.00405570
xor eax, eax
push 0x206
push eax
mov word [esp + 0x258], ax
lea eax, [esp + 0x25a]
push eax
call sub.MSVCR110.dll_memset
mov eax, dword [0x469f00]
add esp, 0xc
test al, 1
jne 0x403801
or eax, 1
push 0x4486c0
mov dword [0x469f00], eax
call fcn.00441527
add esp, 4
sub esp, 8
lea eax, [esp + 0x258]
push eax
call fcn.00433200
mov eax, dword [0x469f00]
test al, 1
jne 0x40382f
or eax, 1
push 0x4486c0
mov dword [0x469f00], eax
call fcn.00441527
add esp, 4
lea eax, [esp + 0x250]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40388d
lea eax, [esp + 0x250]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
test eax, eax
je 0x40388d
mov eax, dword [0x46a9cc]
test al, 1
jne 0x403873
or eax, 1
push 0x448830
mov dword [0x46a9cc], eax
call fcn.00441527
add esp, 4
lea eax, [esp + 0x250]
push eax
push str.Failed_to_create_directory_:__s
push 0x46a9c8
call fcn.0043aff0
add esp, 0xc
xor eax, eax
push 0x206
push eax
mov word [esp + 0x870], ax
lea eax, [esp + 0x872]
push eax
call sub.MSVCR110.dll_memset
mov esi, dword [sym.imp.SHLWAPI.dll_PathCombineW]
add esp, 0xc
cmp dword [esp + 0x2c], 8
lea eax, [esp + 0x18]
cmovae eax, dword [esp + 0x18]
push str.skin2um_uninstall_style_style.xml
push eax
lea eax, [esp + 0x870]
push eax
call esi
xor eax, eax
push 0x206
push eax
mov word [esp + 0x668], ax
lea eax, [esp + 0x66a]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
cmp dword [esp + 0x2c], 8
lea eax, [esp + 0x18]
cmovae eax, dword [esp + 0x18]
push str.skin2um_uninstallimage_resource.xml
push eax
lea eax, [esp + 0x668]
push eax
call esi
xor eax, eax
push 0x206
push eax
mov word [esp + 0x50], ax
lea eax, [esp + 0x52]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
cmp dword [esp + 0x2c], 8
lea eax, [esp + 0x18]
cmovae eax, dword [esp + 0x18]
push str.langum_uninstall_lang.xml
push eax
lea eax, [esp + 0x50]
push eax
call esi
xor eax, eax
push 0x206
push eax
mov word [esp + 0x460], ax
lea eax, [esp + 0x462]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
cmp dword [esp + 0x2c], 8
lea eax, [esp + 0x18]
cmovae eax, dword [esp + 0x18]
push str.skin2um_uninstalllayoutmsgbox.xml
push eax
lea eax, [esp + 0x460]
push eax
call esi
push 0
lea eax, [esp + 0x45c]
push eax
push 0
lea eax, [esp + 0x66c]
push eax
lea eax, [esp + 0x878]
push eax
push ebx
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::Initialize_struct_HINSTANCE_____wchar_t___wchar_t___wchar_t___wchar_t___bool_]
call fcn.0040cc40
mov edi, eax
test edi, edi
jne 0x4039c1
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLCID]
movzx edi, ax
mov esi, dword [0x469f34]
test esi, esi
jne 0x4039f0
push 0xe4
call dword [sym.imp.MSVCR110.dll_void____cdecl_operator_new_unsigned_int_]
add esp, 4
test eax, eax
je 0x4039e8
mov ecx, eax
call fcn.0040dc50
mov esi, eax
jmp 0x4039ea
xor esi, esi
mov dword [0x469f34], esi
mov eax, dword [0x469f04]
mov dword [esi + 0xa8], edi
test al, 1
jne 0x403a14
or eax, 1
push 0x4486d0
mov dword [0x469f04], eax
call fcn.00441527
add esp, 4
push dword [esi + 0xa8]
call fcn.00433680
mov edi, eax
lea eax, [esp + 0x48]
push edi
push eax
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::OSTRING_TABLE____cdecl_OUI::OSTRING_TABLE::GetStringTable_void_]
mov esi, dword [sym.imp.ouilibx.dll_public:_bool___thiscall_OUI::OSTRING_TABLE::UpdateStringTableXML_wchar_t_const___wchar_t_const__]
mov ecx, eax
call esi
test al, al
jne 0x403a88
push edi
push str.Failed_to_find_system_language:__s
push 0xffffffffffffffff
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLog]
add esp, 0xc
lea eax, [esp + 0x48]
push 0x44a9e0
push eax
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::OSTRING_TABLE____cdecl_OUI::OSTRING_TABLE::GetStringTable_void_]
mov ecx, eax
call esi
test al, al
jne 0x403a88
push str.Failed_to_find_default_language:_en_us
push 0xffffffffffffffff
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogString]
add esp, 8
lea eax, [esp + 0x48]
push 0x44aa40
push eax
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::OSTRING_TABLE____cdecl_OUI::OSTRING_TABLE::GetStringTable_void_]
mov ecx, eax
call esi
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::OGLOBAL_DATA____cdecl_OUI::OGLOBAL_DATA::GetGlobalData_void_]
mov dword [eax + 0x24], 0xecffed
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::OGLOBAL_DATA____cdecl_OUI::OGLOBAL_DATA::GetGlobalData_void_]
mov dword [eax + 0x20], 0xecffed
call fcn.00432530
xor eax, eax
push eax
push 0x44acac
lea ecx, [esp + 0x38]
mov dword [esp + 0x4c], 7
mov dword [esp + 0x48], 0
mov word [esp + 0x38], ax
call fcn.00405570
cmp byte [0x469f1a], 0
je 0x403adf
push 0x45
push str.GlobalUNINSTALLMASTER251196C8_21EC_4CE3_BF26_ED255D27C52EUninstall
jmp 0x403b01
cmp byte [0x469f1b], 0
je 0x403af1
push 0x43
push str.GlobalUNINSTALLMASTER251196C8_21EC_4CE3_BF26_ED255D27C52EInstall
jmp 0x403b01
cmp byte [0x469f18], 0
je 0x403b0a
push 0x43
push str.GlobalUNINSTALLMASTER251196C8_21EC_4CE3_BF26_ED255D27C52EUpgrade
lea ecx, [esp + 0x38]
call fcn.00405570
cmp dword [esp + 0x44], 8
mov eax, dword [0x469f0c]
lea esi, [esp + 0x30]
cmovae esi, dword [esp + 0x30]
test al, 1
jne 0x403b36
or eax, 1
push 0x4486e0
mov dword [0x469f0c], eax
call fcn.00441527
add esp, 4
push esi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0xc], eax
test esi, esi
je 0x403b71
push esi
call edi
cmp dword [esp + 0xc], 0xb7
sete al
test al, al
je 0x403b71
or esi, 0xffffffff
jmp 0x403c6c
cmp dword [esp + 0x44], 8
lea eax, [esp + 0x30]
cmovae eax, dword [esp + 0x30]
push eax
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], 0
call fcn.00401ae0
cmp byte [0x469f1a], 0
je 0x403ba6
sub esp, 0x18
mov ecx, esp
push 0x44abe8
jmp 0x403be3
cmp byte [0x469f19], 0
je 0x403bbb
sub esp, 0x18
mov ecx, esp
push 0x44abe8
jmp 0x403be3
cmp byte [0x469f1b], 0
je 0x403bd0
sub esp, 0x18
mov ecx, esp
push str.install
jmp 0x403be3
cmp byte [0x469f18], 0
je 0x403bf0
sub esp, 0x18
mov ecx, esp
push 0x44a03c
call fcn.00405670
call fcn.00402e80
add esp, 0x18
mov ecx, dword [esp + 0x14]
call fcn.004029b0
call dword [sym.imp.isaferpt.dll_IReportStart]
push ecx
mov ecx, ebx
call fcn.00403030
add esp, 4
test eax, eax
jne 0x403c39
push str.InitInstance_end__return_FALSE
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
add esp, 4
call dword [sym.imp.isafepxy.dll_ISAFE_CloseProgramLog]
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov edx, dword [eax]
mov ecx, eax
call dword [edx]
call dword [sym.imp.isaferpt.dll_IReportEnd]
or esi, 0xffffffff
jmp 0x403c61
push str.InitInstance_end__return_TRUE
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
add esp, 4
call dword [sym.imp.isafepxy.dll_ISAFE_CloseProgramLog]
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov edx, dword [eax]
mov ecx, eax
call dword [edx]
call dword [sym.imp.isaferpt.dll_IReportEnd]
xor esi, esi
mov eax, dword [esp + 0xc]
test eax, eax
je 0x403c6c
push eax
call edi
cmp dword [esp + 0x44], 8
mov edi, dword [sym.imp.MSVCR110.dll_void___cdecl_operator_delete_void__]
jb 0x403c82
push dword [esp + 0x30]
call edi
add esp, 4
xor eax, eax
cmp dword [esp + 0x2c], 8
mov dword [esp + 0x44], 7
mov dword [esp + 0x40], 0
mov word [esp + 0x30], ax
jb 0x403ca9
push dword [esp + 0x18]
call edi
add esp, 4
mov ecx, dword [esp + 0xa74]
pop edi
mov eax, esi
pop esi
pop ebx
xor ecx, esp
call fcn.004413e6
mov esp, ebp
pop ebp
ret 0x10