Function at 0x422960
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x456bcb
mov eax, dword fs:[0]
push eax
sub esp, 0x440
mov eax, dword [0x47f060]
xor eax, esp
mov dword [esp + 0x438], eax
push ebx
push esi
push edi
mov eax, dword [0x47f060]
xor eax, esp
push eax
lea eax, [esp + 0x450]
mov dword fs:[0], eax
mov edi, ecx
mov eax, dword [0x48277c]
test eax, eax
jne 0x4229e7
push 0xe4
call dword [sym.imp.MSVCR110.dll_void____cdecl_operator_new_unsigned_int_]
add esp, 4
mov dword [esp + 0x10], eax
mov dword [esp + 0x458], 0
test eax, eax
je 0x4229d5
mov ecx, eax
call fcn.004122b0
jmp 0x4229d7
xor eax, eax
mov dword [esp + 0x458], 0xffffffff
mov dword [0x48277c], eax
cmp byte [eax + 0xdd], 0
mov esi, dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
jne 0x422bc8
push str.IDC_PATH_COMBO
lea eax, [esp + 0x30]
push eax
mov ecx, edi
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COString___thiscall_OUI::COVDialog::GetDlgItemTextW_wchar_t_const__]
lea ecx, [esp + 0x2c]
mov dword [esp + 0x458], 1
call dword [sym.imp.ouilibx.dll_public:_int___thiscall_OUI::COString::IsEmpty_void_const]
test eax, eax
je 0x422a42
call fcn.00412430
add eax, 0x90
cmp dword [eax + 0x14], 8
jb 0x422a37
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x30]
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COString____thiscall_OUI::COString::operator_wchar_t_const__]
mov ebx, dword [sym.imp.ouilibx.dll_public:_wchar_t_const____thiscall_OUI::COString::operator_wchar_t_const__void_const]
lea ecx, [esp + 0x2c]
call ebx
mov ecx, eax
call fcn.0040b6b0
test al, al
jne 0x422aba
lea eax, [esp + 0x30]
push str.IDS_INSTALL_DIR_INVALID
push eax
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::OSTRING_TABLE____cdecl_OUI::OSTRING_TABLE::GetStringTable_void_]
mov ecx, eax
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COString___thiscall_OUI::OSTRING_TABLE::LoadStringW_wchar_t_const__]
push 0x10
push 0
lea ecx, [esp + 0x38]
mov byte [esp + 0x460], 2
call ebx
push eax
mov ecx, edi
call dword [sym.imp.ouilibx.dll_public:_int___thiscall_OUI::COVDialog::MessageBoxW_wchar_t_const___wchar_t_const___unsigned_int_]
mov byte [esp + 0x458], 1
mov esi, dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
lea ecx, [esp + 0x30]
call esi
lea ecx, [esp + 0x2c]
mov bl, 1
mov dword [esp + 0x458], 0xffffffff
call esi
mov al, bl
jmp 0x422f34
push 0
push 0x480294
push 0x47f204
push 0
push str.IDC_MAIN_INST_VS
mov ecx, edi
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COVWnd____thiscall_OUI::COVContainer::GetChildWnd_wchar_t_const__]
push eax
call sub.MSVCR110.dll___RTDynamicCast
add esp, 0x14
mov dword [esp + 0x10], eax
test eax, eax
jne 0x422b06
mov esi, dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
lea ecx, [esp + 0x2c]
xor bl, bl
mov dword [esp + 0x458], 0xffffffff
call esi
mov al, bl
jmp 0x422f34
lea ecx, [esp + 0x2c]
call ebx
mov ebx, eax
call fcn.00412430
add eax, 0x90
cmp word [ebx], 0
mov dword [esp + 0x30], eax
jne 0x422b26
xor ecx, ecx
jmp 0x422b43
mov ecx, ebx
lea edx, [ecx + 2]
jmp 0x422b30
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422b30
mov eax, dword [esp + 0x30]
sub ecx, edx
sar ecx, 1
push ecx
push ebx
mov ecx, eax
call fcn.00406c00
push 2
push 0x168
push 0x280
push 0
push 0
mov ecx, edi
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COVWnd::SetWindowPos_int__int__int__int__unsigned_int_]
mov ecx, dword [esp + 0x10]
push 1
push str.IDC_INST_SECOND_VIEW
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COVViewStack::ShowViewByID_wchar_t_const___bool_]
push 0
push 0x480278
push 0x47f204
push 0
push str.IDC_LOGO_ANIM
mov ecx, edi
call dword [sym.imp.ouilibx.dll_public:_class_OUI::COVWnd____thiscall_OUI::COVDialog::GetDlgItem_wchar_t_const__]
push eax
call sub.MSVCR110.dll___RTDynamicCast
add esp, 0x14
test eax, eax
je 0x422ba9
mov edx, dword [eax]
push 0x50
mov ecx, eax
call dword [edx + 0x1d8]
push str.CInstMainDlg::OnClickInstBtn__ShowView:_IDC_INST_SECOND_VIEW_
call esi
add esp, 4
lea ecx, [esp + 0x2c]
mov dword [esp + 0x458], 0xffffffff
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
xor cl, cl
call fcn.00409d10
test al, al
je 0x422e85
call fcn.0040abc0
test al, al
je 0x422c0b
push str.CInstMainDlg::OnClickInstBtn__local_version_is_earlier_than_installer_version_
call esi
add esp, 4
lea ecx, [esp + 0x34]
call fcn.00419530
push str.cover
lea ecx, [esp + 0x38]
call fcn.004198a0
call fcn.00408230
jmp 0x422e85
push str.CInstMainDlg::OnClickInstBtn__local_version_is_older_than_v2.5.0_
call esi
add esp, 4
call fcn.00409f70
mov bl, al
xor eax, eax
push 0x206
push eax
mov word [esp + 0x244], ax
lea eax, [esp + 0x246]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea ecx, [esp + 0x23c]
call fcn.0040b7f0
call fcn.00412430
add eax, 0x90
cmp word [esp + 0x23c], 0
mov dword [esp + 0x10], eax
jne 0x422c65
xor ecx, ecx
jmp 0x422c83
lea ecx, [esp + 0x23c]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x422c70
mov eax, dword [esp + 0x10]
sub ecx, edx
sar ecx, 1
push ecx
lea ecx, [esp + 0x240]
push ecx
mov ecx, eax
call fcn.00406c00
call fcn.00412430
cmp byte [eax + 0xe2], 0
jne 0x422d11
test bl, bl
jne 0x422d11
xor eax, eax
push 0x206
push eax
mov word [esp + 0x3c], ax
lea eax, [esp + 0x3e]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea eax, [esp + 0x23c]
push 0x45d39c
push eax
lea eax, [esp + 0x3c]
push str._s_s
push eax
call fcn.00405ac0
add esp, 0x10
call fcn.00405070
push 1
push 0
push 0x45ec1c
lea eax, [esp + 0x40]
push eax
call fcn.00443c20
push str.CInstMainDlg::OnClickInstBtn__call_iStart.exe:_end_
call esi
mov eax, dword [edi]
add esp, 4
mov ecx, edi
push 0
call dword [eax + 0x24c]
jmp 0x422f32
xor eax, eax
push 0x206
push eax
mov word [esp + 0x3c], ax
lea eax, [esp + 0x3e]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea eax, [esp + 0x23c]
push str.uninstall.exe
push eax
lea eax, [esp + 0x3c]
push str._s_s
push eax
call fcn.00405ac0
add esp, 0x10
call fcn.00412430
add eax, 0x60
cmp dword [eax + 0x14], 8
jb 0x422d5a
mov eax, dword [eax]
push eax
push str.silence
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
jne 0x422d9a
lea eax, [esp + 0x34]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x422e85
call fcn.00405070
push 0
push 1
push str._popup__silence
lea eax, [esp + 0x40]
push eax
call fcn.00443c20
jmp 0x422e85
push str.CInstMainDlg::OnClickInstBtn__ShowWindow_false__
call esi
mov eax, dword [edi]
add esp, 4
mov ecx, edi
push 0
call dword [eax + 0x40]
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov dword [eax + 8], edi
lea eax, [esp + 0x34]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x422e85
call fcn.00405070
push ecx
call fcn.00443d20
test al, al
je 0x422df1
push str.CInstMainDlg::OnClickInstBtn__StopiSafeService:_begin_
call esi
add esp, 4
call fcn.0040c370
push str.CInstMainDlg::OnClickInstBtn__StopiSafeService:_end_
call esi
add esp, 4
push str.CInstMainDlg::OnClickInstBtn__BackUpIgnoreFiles:_begin_
call esi
add esp, 4
lea eax, [esp + 0x23c]
push eax
lea ecx, [esp + 0x18]
call fcn.00406d00
lea eax, [esp + 0x14]
push eax
mov dword [esp + 0x45c], 3
call fcn.00413c00
lea ecx, [esp + 0x14]
mov dword [esp + 0x458], 0xffffffff
call fcn.00401100
push str.CInstMainDlg::OnClickInstBtn__BackUpIgnoreFiles:_end_
call esi
mov eax, dword [edi]
add esp, 4
mov ecx, edi
push 0
call dword [eax + 0x40]
push str.CInstMainDlg::OnClickInstBtn__call_uninstall.exe__popup:_begin_
call esi
add esp, 4
call fcn.00405070
push 0
push 1
push str._popup
lea eax, [esp + 0x40]
push eax
call fcn.00443c20
push str.CInstMainDlg::OnClickInstBtn__call_uninstall.exe__popup:_end_
call esi
mov eax, dword [edi]
add esp, 4
mov ecx, edi
push 1
call dword [eax + 0x40]
mov ecx, edi
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COVDialog::BringToFront_void_]
sub esp, 0x20
mov ecx, esp
mov dword [esp + 0x30], esp
sub esp, 0x14
mov eax, esp
mov dword [esp + 0x48], 0x420ff0
mov dword [esp + 0x4c], 0
movq xmm0, qword [esp + 0x48]
movq qword [eax], xmm0
mov dword [esp + 0x50], edi
movq xmm0, qword [esp + 0x50]
movq qword [eax + 8], xmm0
call fcn.004231b0
mov dword [esp + 0x478], 4
mov eax, dword [0x483158]
test al, 1
jne 0x422f13
or eax, 1
mov dword [0x483158], eax
mov byte [esp + 0x478], 5
mov dword [0x483144], 0
mov dword [0x48314c], 0
call fcn.00447a20
push 0x45aef0
call fcn.004521b7
add esp, 4
mov byte [esp + 0x478], 4
mov ecx, 0x48312c
mov dword [esp + 0x478], 0xffffffff
call fcn.00447af0
push str.CInstMainDlg::OnClickInstBtn__AddTask:_Install_
call esi
add esp, 4
mov al, 1
mov ecx, dword [esp + 0x450]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x438]
xor ecx, esp
call fcn.00452076
mov esp, ebp
pop ebp
ret 4