Function at 0x428510
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x457586
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x100c
call fcn.00452b30
mov eax, dword [0x47f060]
xor eax, esp
mov dword [esp + 0x1008], eax
push ebx
push esi
push edi
mov eax, dword [0x47f060]
xor eax, esp
push eax
lea eax, [esp + 0x1020]
mov dword fs:[0], eax
mov esi, ecx
call fcn.00428330
mov eax, dword [0x48277c]
mov ebx, dword [sym.imp.MSVCR110.dll_void____cdecl_operator_new_unsigned_int_]
test eax, eax
jne 0x4285a3
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov dword [esp + 0x1028], 0
test eax, eax
je 0x428591
mov ecx, eax
call fcn.004122b0
jmp 0x428593
xor eax, eax
mov dword [esp + 0x1028], 0xffffffff
mov dword [0x48277c], eax
cmp byte [eax + 0xdf], 0
jne 0x428618
push 0
push 1
sub esp, 0x20
mov ecx, esp
mov dword [esp + 0x38], esp
sub esp, 0x14
mov eax, esp
mov dword [esp + 0x70], 0x420ee0
mov dword [esp + 0x74], 0
movq xmm0, qword [esp + 0x70]
movq qword [eax], xmm0
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], 0xa
movq xmm0, qword [esp + 0x78]
movq qword [eax + 8], xmm0
call fcn.00429950
mov dword [esp + 0x1050], 1
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
mov dword [esp + 0x1050], 0xffffffff
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COUIManager::AddUIHandler_class_boost::function_void____cdecl___void____bool__void__]
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x2710
call edi
call fcn.0040c370
mov eax, dword [0x482724]
test al, 1
jne 0x428648
or eax, 1
push 0x45aec0
mov dword [0x482724], eax
call fcn.004521b7
add esp, 4
sub esp, 8
call fcn.00442f40
mov eax, dword [0x48277c]
test eax, eax
jne 0x428691
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov dword [esp + 0x1028], 2
test eax, eax
je 0x42867f
mov ecx, eax
call fcn.004122b0
jmp 0x428681
xor eax, eax
mov dword [esp + 0x1028], 0xffffffff
mov dword [0x48277c], eax
lea ecx, [eax + 0x90]
call fcn.0040eae0
push 0x1f4
call edi
xor eax, eax
push 0x616
push eax
mov word [esp + 0xa04], ax
lea eax, [esp + 0xa06]
push eax
call sub.MSVCR110.dll_memset
add esp, 4
mov edx, 0x30c
lea ecx, [esp + 0xa04]
call fcn.0042a830
xor eax, eax
push 0x206
push eax
mov word [esp + 0x1ec], ax
lea eax, [esp + 0x1ee]
push eax
call sub.MSVCR110.dll_memset
mov eax, dword [0x48277c]
add esp, 0x14
test eax, eax
jne 0x428735
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov dword [esp + 0x1028], 3
test eax, eax
je 0x428723
mov ecx, eax
call fcn.004122b0
jmp 0x428725
xor eax, eax
mov dword [esp + 0x1028], 0xffffffff
mov dword [0x48277c], eax
add eax, 0x90
cmp dword [eax + 0x14], 8
jb 0x428742
mov eax, dword [eax]
push str.iSafeSvc2.exe
push eax
lea eax, [esp + 0x1e4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
xor eax, eax
mov dword [esp + 0x130], 7
mov dword [esp + 0x12c], 0
mov word [esp + 0x11c], ax
cmp word [esp + 0x1dc], ax
jne 0x428784
xor ecx, ecx
jmp 0x42879f
lea ecx, [esp + 0x1dc]
lea edx, [ecx + 2]
mov edi, edi
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x428790
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [esp + 0x1e0]
push eax
lea ecx, [esp + 0x124]
call fcn.00406c00
lea ecx, [esp + 0x11c]
mov dword [esp + 0x1028], 4
call fcn.0042a1b0
mov edi, dword [sym.imp.MSVCR110.dll_void___cdecl_operator_delete_void__]
test al, al
je 0x4289be
xor eax, eax
mov dword [esp + 0x60], 7
mov dword [esp + 0x5c], 0
mov word [esp + 0x4c], ax
cmp word [esp + 0x9fc], ax
jne 0x4287fe
xor ecx, ecx
jmp 0x42881f
lea ecx, [esp + 0x9fc]
lea edx, [ecx + 2]
jmp 0x428810
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x428810
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [esp + 0xa00]
push eax
lea ecx, [esp + 0x54]
call fcn.00406c00
xor eax, eax
mov dword [esp + 0xac], 7
mov dword [esp + 0xa8], 0
mov word [esp + 0x98], ax
push 8
push str.upgrade_
lea ecx, [esp + 0xa0]
mov byte [esp + 0x1030], 6
call fcn.00405270
lea eax, [esp + 0x4c]
push eax
lea edx, [esp + 0x9c]
lea ecx, [esp + 0x6c]
call fcn.004116b0
add esp, 4
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x98]
cmp ecx, eax
je 0x4288da
cmp dword [esp + 0xac], 8
jb 0x4288ad
push dword [esp + 0x98]
call edi
mov eax, dword [esp + 0x14]
add esp, 4
xor ecx, ecx
mov word [esp + 0x98], cx
push eax
lea ecx, [esp + 0x9c]
mov dword [esp + 0xb0], 7
mov dword [esp + 0xac], 0
call fcn.004066d0
mov byte [esp + 0x1028], 6
cmp dword [esp + 0x7c], 8
jb 0x4288f2
push dword [esp + 0x68]
call edi
add esp, 4
sub esp, 0x18
mov ecx, esp
mov dword [esp + 0x28], esp
xor eax, eax
push 0xffffffffffffffff
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push eax
mov word [ecx], ax
lea eax, [esp + 0xb8]
push eax
call fcn.00406870
sub esp, 0x18
mov ecx, esp
mov byte [esp + 0x1058], 8
push 0x12
xor eax, eax
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push str.uninst.svc2.failed
mov word [ecx], ax
call fcn.00406c00
mov byte [esp + 0x1058], 6
call fcn.0040ced0
add esp, 0x30
cmp dword [esp + 0xac], 8
jb 0x428970
push dword [esp + 0x98]
call edi
add esp, 4
xor eax, eax
mov byte [esp + 0x1028], 4
cmp dword [esp + 0x60], 8
mov dword [esp + 0xac], 7
mov dword [esp + 0xa8], 0
mov word [esp + 0x98], ax
jb 0x4289a8
push dword [esp + 0x4c]
call edi
add esp, 4
lea eax, [esp + 0x9fc]
push eax
push str.CUpgradeDlg::Upgrade__SendSvc2FailedEvent:_uid___s_
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
add esp, 8
xor eax, eax
push 0x206
push eax
mov word [esp + 0x5f4], ax
lea eax, [esp + 0x5f6]
push eax
call sub.MSVCR110.dll_memset
mov eax, dword [0x48277c]
add esp, 0xc
test eax, eax
jne 0x428a19
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1028], 9
test eax, eax
je 0x428a0a
mov ecx, eax
call fcn.004122b0
jmp 0x428a0c
xor eax, eax
mov byte [esp + 0x1028], 4
mov dword [0x48277c], eax
add eax, 0x90
cmp dword [eax + 0x14], 8
jb 0x428a26
mov eax, dword [eax]
push 0x45f1b8
push eax
lea eax, [esp + 0x5f4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
xor eax, eax
mov dword [esp + 0xf4], 7
mov dword [esp + 0xf0], 0
mov word [esp + 0xe0], ax
cmp word [esp + 0x5ec], ax
jne 0x428a68
xor ecx, ecx
jmp 0x428a81
lea ecx, [esp + 0x5ec]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x428a72
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [esp + 0x5f0]
push eax
lea ecx, [esp + 0xe8]
call fcn.00406c00
lea ecx, [esp + 0xe0]
mov byte [esp + 0x1028], 0xa
call fcn.0042a1b0
test al, al
je 0x428c8f
xor eax, eax
mov dword [esp + 0x60], 7
mov dword [esp + 0x5c], 0
mov word [esp + 0x4c], ax
cmp word [esp + 0x9fc], ax
jne 0x428ad7
xor ecx, ecx
jmp 0x428af0
lea ecx, [esp + 0x9fc]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x428ae1
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [esp + 0xa00]
push eax
lea ecx, [esp + 0x54]
call fcn.00406c00
xor eax, eax
mov dword [esp + 0x94], 7
mov dword [esp + 0x90], 0
mov word [esp + 0x80], ax
push 8
push str.upgrade_
lea ecx, [esp + 0x88]
mov byte [esp + 0x1030], 0xc
call fcn.00405270
lea eax, [esp + 0x4c]
push eax
lea edx, [esp + 0x84]
lea ecx, [esp + 0x6c]
call fcn.004116b0
add esp, 4
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x80]
cmp ecx, eax
je 0x428bab
cmp dword [esp + 0x94], 8
jb 0x428b7e
push dword [esp + 0x80]
call edi
mov eax, dword [esp + 0x14]
add esp, 4
xor ecx, ecx
mov word [esp + 0x80], cx
push eax
lea ecx, [esp + 0x84]
mov dword [esp + 0x98], 7
mov dword [esp + 0x94], 0
call fcn.004066d0
mov byte [esp + 0x1028], 0xc
cmp dword [esp + 0x7c], 8
jb 0x428bc3
push dword [esp + 0x68]
call edi
add esp, 4
sub esp, 0x18
mov ecx, esp
mov dword [esp + 0x28], esp
xor eax, eax
push 0xffffffffffffffff
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push eax
mov word [ecx], ax
lea eax, [esp + 0xa0]
push eax
call fcn.00406870
sub esp, 0x18
mov ecx, esp
mov byte [esp + 0x1058], 0xe
push 0x11
xor eax, eax
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push str.uninst.svc.failed
mov word [ecx], ax
call fcn.00406c00
mov byte [esp + 0x1058], 0xc
call fcn.0040ced0
add esp, 0x30
cmp dword [esp + 0x94], 8
jb 0x428c41
push dword [esp + 0x80]
call edi
add esp, 4
xor eax, eax
mov byte [esp + 0x1028], 0xa
cmp dword [esp + 0x60], 8
mov dword [esp + 0x94], 7
mov dword [esp + 0x90], 0
mov word [esp + 0x80], ax
jb 0x428c79
push dword [esp + 0x4c]
call edi
add esp, 4
lea eax, [esp + 0x9fc]
push eax
push str.CUpgradeDlg::Upgrade__SendSvcFailedEvent:_uid___s_
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
add esp, 8
mov eax, dword [0x48277c]
test eax, eax
jne 0x428cca
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1028], 0xf
test eax, eax
je 0x428cbb
mov ecx, eax
call fcn.004122b0
jmp 0x428cbd
xor eax, eax
mov byte [esp + 0x1028], 0xa
mov dword [0x48277c], eax
cmp dword [eax + 0xa4], 8
lea ecx, [eax + 0x90]
jb 0x428cdb
mov ecx, dword [ecx]
call fcn.0040bca0
mov eax, dword [0x48277c]
test eax, eax
jne 0x428d1b
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1028], 0x10
test eax, eax
je 0x428d0c
mov ecx, eax
call fcn.004122b0
jmp 0x428d0e
xor eax, eax
mov byte [esp + 0x1028], 0xa
mov dword [0x48277c], eax
cmp dword [eax + 0xa4], 8
lea ecx, [eax + 0x90]
jb 0x428d2c
mov ecx, dword [ecx]
call fcn.0040bb80
mov eax, dword [0x48277c]
test eax, eax
jne 0x428d6c
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1028], 0x11
test eax, eax
je 0x428d5d
mov ecx, eax
call fcn.004122b0
jmp 0x428d5f
xor eax, eax
mov byte [esp + 0x1028], 0xa
mov dword [0x48277c], eax
cmp dword [eax + 0xa4], 8
lea ecx, [eax + 0x90]
jb 0x428d7d
mov ecx, dword [ecx]
call fcn.0040f090
mov eax, dword [0x48277c]
test eax, eax
jne 0x428dbd
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1028], 0x12
test eax, eax
je 0x428dae
mov ecx, eax
call fcn.004122b0
jmp 0x428db0
xor eax, eax
mov byte [esp + 0x1028], 0xa
mov dword [0x48277c], eax
cmp byte [eax + 0xdf], 0
jne 0x428e2c
push 0
push 1
sub esp, 0x20
mov ecx, esp
mov dword [esp + 0x38], esp
sub esp, 0x14
mov eax, esp
mov dword [esp + 0x70], 0x420ee0
mov dword [esp + 0x74], 0
movq xmm0, qword [esp + 0x70]
movq qword [eax], xmm0
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], 0x14
movq xmm0, qword [esp + 0x78]
movq qword [eax + 8], xmm0
call fcn.00429950
mov byte [esp + 0x1050], 0x13
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
mov byte [esp + 0x1050], 0xa
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COUIManager::AddUIHandler_class_boost::function_void____cdecl___void____bool__void__]
push ecx
call fcn.0040ace0
add esp, 4
cmp eax, 0xffffffff
mov eax, dword [0x483120]
sete byte [esp + 0x1b]
test al, 1
jne 0x428e70
or eax, 1
push ecx
mov ecx, 0x483090
mov dword [0x483120], eax
call fcn.004139f0
mov ecx, 0x483090
call fcn.00414be0
push 0x45aed0
call fcn.004521b7
add esp, 4
call fcn.004166d0
cmp byte [esp + 0x1b], 0
je 0x4290f7
lea eax, [esp + 0x14]
push str.IDS_SHORTCUT_DEEPCLEAN
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__]
mov ecx, eax
mov byte [esp + 0x1028], 0x14
call dword [sym.imp.ouilibx.dll_public:_wchar_t_const____thiscall_OUI::COString::operator_wchar_t_const__void_const]
mov edx, eax
xor eax, eax
mov dword [esp + 0x60], 7
mov dword [esp + 0x5c], 0
mov word [esp + 0x4c], ax
cmp word [edx], ax
jne 0x428eca
xor ecx, ecx
jmp 0x428ee4
mov ecx, edx
lea eax, [ecx + 2]
mov dword [esp + 0x10], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x428ed3
sub ecx, dword [esp + 0x10]
sar ecx, 1
push ecx
push edx
lea ecx, [esp + 0x54]
call fcn.00406c00
lea ecx, [esp + 0x14]
mov byte [esp + 0x1028], 0x16
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
push 3
xor eax, eax
push 0x460874
lea ecx, [esp + 0x24]
mov dword [esp + 0x38], 7
mov dword [esp + 0x34], 0
mov word [esp + 0x24], ax
call fcn.00406c00
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x1c]
call fcn.004101f0
cmp dword [esp + 0x30], 8
jb 0x428f45
push dword [esp + 0x1c]
call edi
add esp, 4
push 4
push str..lnk
lea ecx, [esp + 0x54]
call fcn.00405270
mov eax, dword [0x48277c]
test eax, eax
jne 0x428f90
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1028], 0x17
test eax, eax
je 0x428f81
mov ecx, eax
call fcn.004122b0
jmp 0x428f83
xor eax, eax
mov byte [esp + 0x1028], 0x16
mov dword [0x48277c], eax
push str.iStart.exe
lea edx, [eax + 0x90]
lea ecx, [esp + 0x6c]
call fcn.00411480
add esp, 4
mov byte [esp + 0x1028], 0x18
push 0x27
xor eax, eax
push str._divertop__param09__param10__param21
lea ecx, [esp + 0x3c]
mov dword [esp + 0x50], 7
mov dword [esp + 0x4c], 0
mov word [esp + 0x3c], ax
call fcn.00406c00
mov byte [esp + 0x1028], 0x19
mov eax, dword [0x48277c]
test eax, eax
jne 0x429019
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1028], 0x1a
test eax, eax
je 0x42900a
mov ecx, eax
call fcn.004122b0
jmp 0x42900c
xor eax, eax
mov byte [esp + 0x1028], 0x19
mov dword [0x48277c], eax
lea edx, [eax + 0x90]
lea ecx, [esp + 0xc8]
call fcn.0040fa30
lea eax, [esp + 0xc8]
push eax
lea eax, [esp + 0x38]
push eax
lea edx, [esp + 0x70]
lea ecx, [esp + 0x54]
mov byte [esp + 0x1030], 0x1b
call fcn.00407b10
push str.CUpgradeDlg::Upgrade__CreateDeepCleanShortCut:_end_
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
add esp, 0xc
cmp dword [esp + 0xdc], 8
jb 0x429071
push dword [esp + 0xc8]
call edi
add esp, 4
xor eax, eax
cmp dword [esp + 0x48], 8
mov dword [esp + 0xdc], 7
mov dword [esp + 0xd8], 0
mov word [esp + 0xc8], ax
jb 0x4290a1
push dword [esp + 0x34]
call edi
add esp, 4
xor eax, eax
cmp dword [esp + 0x7c], 8
mov dword [esp + 0x48], 7
mov dword [esp + 0x44], 0
mov word [esp + 0x34], ax
jb 0x4290c8
push dword [esp + 0x68]
call edi
add esp, 4
xor eax, eax
mov byte [esp + 0x1028], 0xa
cmp dword [esp + 0x60], 8
mov dword [esp + 0x7c], 7
mov dword [esp + 0x78], 0
mov word [esp + 0x68], ax
jb 0x4290f7
push dword [esp + 0x4c]
call edi
add esp, 4
lea ecx, [esp + 0x114]
mov dword [esp + 0x110], 0
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::constructor_void_]
mov dword [esp + 0x118], 3
mov byte [esp + 0x1028], 0x1c
call fcn.00412430
cmp byte [eax + 0xdf], 0
jne 0x429196
push 0
push 1
sub esp, 0x20
mov ecx, esp
mov dword [esp + 0x38], esp
sub esp, 0x14
mov eax, esp
mov dword [esp + 0x70], 0x420ee0
mov dword [esp + 0x74], 0
movq xmm0, qword [esp + 0x70]
movq qword [eax], xmm0
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], 0x28
movq xmm0, qword [esp + 0x78]
movq qword [eax + 8], xmm0
call fcn.00429950
mov byte [esp + 0x1050], 0x1d
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
mov byte [esp + 0x1050], 0x1c
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COUIManager::AddUIHandler_class_boost::function_void____cdecl___void____bool__void__]
xor eax, eax
push 0x206
push eax
mov word [esp + 0x3ec], ax
lea eax, [esp + 0x3ee]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea ecx, [esp + 0xf8]
call fcn.0042cdc0
mov byte [esp + 0x1028], 0x1e
cmp dword [esp + 0x10c], 8
lea eax, [esp + 0xf8]
cmovae eax, dword [esp + 0xf8]
push eax
lea eax, [esp + 0x3e8]
push 0x461430
push eax
call fcn.00405ac0
add esp, 0xc
lea eax, [esp + 0x3e4]
push 0x46cc18
push eax
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [esp + 0x3e4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x429561
call fcn.00412430
xor ecx, ecx
push 0xffffffffffffffff
push ecx
add eax, 0x90
mov word [esp + 0xb8], cx
push eax
lea ecx, [esp + 0xbc]
mov dword [esp + 0xd0], 7
mov dword [esp + 0xcc], 0
call fcn.00406870
push 0x45ebf0
lea ecx, [esp + 0x20]
mov byte [esp + 0x102c], 0x1f
call fcn.00406d00
push 0x45d3c0
lea ecx, [esp + 0x6c]
mov byte [esp + 0x102c], 0x20
call fcn.00406d00
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x6c]
push eax
lea edx, [esp + 0xb8]
lea ecx, [esp + 0xd0]
mov byte [esp + 0x1030], 0x21
call fcn.0042caa0
mov ebx, eax
lea eax, [esp + 0xb8]
add esp, 8
cmp eax, ebx
je 0x4292ff
cmp dword [esp + 0xc4], 8
jb 0x4292d2
push dword [esp + 0xb0]
call edi
add esp, 4
xor eax, eax
push ebx
lea ecx, [esp + 0xb4]
mov dword [esp + 0xc8], 7
mov dword [esp + 0xc4], 0
mov word [esp + 0xb4], ax
call fcn.004066d0
cmp dword [esp + 0xdc], 8
jb 0x429315
push dword [esp + 0xc8]
call edi
add esp, 4
xor eax, eax
cmp dword [esp + 0x7c], 8
mov dword [esp + 0xdc], 7
mov dword [esp + 0xd8], 0
mov word [esp + 0xc8], ax
jb 0x429345
push dword [esp + 0x68]
call edi
add esp, 4
xor eax, eax
mov byte [esp + 0x1028], 0x1f
cmp dword [esp + 0x30], 8
mov dword [esp + 0x7c], 7
mov dword [esp + 0x78], 0
mov word [esp + 0x68], ax
jb 0x429374
push dword [esp + 0x1c]
call edi
add esp, 4
lea ecx, [esp + 0x134]
call fcn.004124b0
lea edx, [esp + 0xb0]
lea ecx, [esp + 0x134]
mov byte [esp + 0x1028], 0x22
call fcn.004099f0
xor eax, eax
push 0x206
push eax
mov word [esp + 0x7fc], ax
lea eax, [esp + 0x7fe]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
mov dword [esp + 0x10], 0
call fcn.00412430
add eax, 0x90
cmp dword [eax + 0x14], 8
jb 0x4293d5
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x14]
call fcn.00417570
sub esp, 8
lea ecx, [esp + 0x18]
mov byte [esp + 0x1030], 0x23
call fcn.00429830
push str.iSafeKrnlCall.dll
push dword [esp + 0x14]
lea eax, [esp + 0x7fc]
push 0x45d3b4
push eax
call fcn.00405ac0
add esp, 0x10
lea eax, [esp + 0x7f4]
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x18], 0
call fcn.00417570
push 0x45ebf0
push 0x45d3c0
lea ecx, [esp + 0x1c]
mov byte [esp + 0x1030], 0x24
call fcn.004176b0
push dword [esp + 0x14]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4294ec
push dword [esp + 0x14]
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebx, eax
test ebx, ebx
jne 0x4294cf
mov byte [esp + 0x1028], 0x23
mov edx, dword [esp + 0x14]
add edx, 0xfffffff0
or ebx, 0xffffffff
lea ecx, [edx + 0xc]
mov eax, ebx
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x42948f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x1028], 0x22
mov edx, dword [esp + 0x10]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x4294b2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [esp + 0x134]
call fcn.00413ae0
lea ecx, [esp + 0xb0]
call fcn.00401100
jmp 0x42976b
push str.Install
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0
push 0
push 0
push 0
call eax
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov byte [esp + 0x1028], 0x23
mov edx, dword [esp + 0x14]
add edx, 0xfffffff0
or ebx, 0xffffffff
lea ecx, [edx + 0xc]
mov eax, ebx
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x429514
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x1028], 0x22
mov edx, dword [esp + 0x10]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x429537
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [esp + 0x134]
call fcn.00413ae0
mov byte [esp + 0x1028], 0x1e
cmp dword [esp + 0xc4], 8
jb 0x429561
push dword [esp + 0xb0]
call edi
add esp, 4
call fcn.00412430
cmp byte [eax + 0xdf], 0
jne 0x4295d5
push 0
push 1
sub esp, 0x20
mov ecx, esp
mov dword [esp + 0x38], esp
sub esp, 0x14
mov eax, esp
mov dword [esp + 0x70], 0x420ee0
mov dword [esp + 0x74], 0
movq xmm0, qword [esp + 0x70]
movq qword [eax], xmm0
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], 0x3c
movq xmm0, qword [esp + 0x78]
movq qword [eax + 8], xmm0
call fcn.00429950
mov byte [esp + 0x1050], 0x25
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
mov byte [esp + 0x1050], 0x1e
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COUIManager::AddUIHandler_class_boost::function_void____cdecl___void____bool__void__]
mov eax, dword [0x482720]
test al, 1
jne 0x4295f3
or eax, 1
push 0x45aeb0
mov dword [0x482720], eax
call fcn.004521b7
add esp, 4
push ecx
call fcn.00443d20
test al, al
je 0x429604
call fcn.0040be50
jmp 0x429609
call fcn.004145b0
call fcn.00412430
sub esp, 0x18
mov ecx, esp
xor edx, edx
push 0xffffffffffffffff
add eax, 0x90
push edx
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push eax
mov word [ecx], dx
call fcn.00406870
call fcn.0040d6d0
mov ebx, dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
push str.CUpgradeDlg::Upgrade__RegisterRKScanShellDLL:_begin_
call ebx
add esp, 0x1c
call fcn.00412430
add eax, 0x90
cmp dword [eax + 0x14], 8
jb 0x42965b
mov eax, dword [eax]
mov ecx, eax
call fcn.0040ee60
push str.CUpgradeDlg::Upgrade__RegisterRKScanShellDLL:_end_
call ebx
add esp, 4
call fcn.00412430
cmp byte [eax + 0xdf], 0
jne 0x4296e4
push 0
push 1
sub esp, 0x20
mov ecx, esp
mov dword [esp + 0x38], esp
sub esp, 0x14
mov eax, esp
mov dword [esp + 0x70], 0x420ee0
mov dword [esp + 0x74], 0
movq xmm0, qword [esp + 0x70]
movq qword [eax], xmm0
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], 0x50
movq xmm0, qword [esp + 0x78]
movq qword [eax + 8], xmm0
call fcn.00429950
mov byte [esp + 0x1050], 0x26
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ebx, dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COUIManager::AddUIHandler_class_boost::function_void____cdecl___void____bool__void__]
mov ecx, eax
mov byte [esp + 0x1050], 0x1e
call ebx
jmp 0x4296ea
mov ebx, dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COUIManager::AddUIHandler_class_boost::function_void____cdecl___void____bool__void__]
call fcn.00412430
cmp byte [eax + 0xdf], 0
jne 0x42975a
push 0
push 1
sub esp, 0x20
mov ecx, esp
mov dword [esp + 0x38], esp
sub esp, 0x14
mov eax, esp
mov dword [esp + 0x70], 0x420ee0
mov dword [esp + 0x74], 0
movq xmm0, qword [esp + 0x70]
movq qword [eax], xmm0
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], 0x64
movq xmm0, qword [esp + 0x78]
movq qword [eax + 8], xmm0
call fcn.00429950
mov byte [esp + 0x1050], 0x27
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
mov byte [esp + 0x1050], 0x1e
call ebx
call fcn.0040ba70
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 0x220]
cmp dword [esp + 0x10c], 8
jb 0x429781
push dword [esp + 0xf8]
call edi
add esp, 4
xor eax, eax
lea ecx, [esp + 0x114]
mov dword [esp + 0x10c], 7
mov dword [esp + 0x108], 0
mov word [esp + 0xf8], ax
mov byte [esp + 0x1028], 0xa
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
cmp dword [esp + 0xf4], 8
jb 0x4297cc
push dword [esp + 0xe0]
call edi
add esp, 4
xor eax, eax
cmp dword [esp + 0x130], 8
mov dword [esp + 0xf4], 7
mov dword [esp + 0xf0], 0
mov word [esp + 0xe0], ax
jb 0x429802
push dword [esp + 0x11c]
call edi
add esp, 4
mov ecx, dword [esp + 0x1020]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1008]
xor ecx, esp
call fcn.00452076
mov esp, ebp
pop ebp
ret