Function at 0x41abb0
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x44561b
mov eax, dword fs:[0]
push eax
sub esp, 0x1000
mov eax, dword [0x467060]
xor eax, esp
mov dword [esp + 0xff8], eax
push ebx
push esi
push edi
mov eax, dword [0x467060]
xor eax, esp
push eax
lea eax, [esp + 0x1010]
mov dword fs:[0], eax
mov esi, ecx
call fcn.0041a8d0
mov eax, dword [0x469f34]
mov ebx, dword [sym.imp.MSVCR110.dll_void____cdecl_operator_new_unsigned_int_]
test eax, eax
jne 0x41ac3e
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov dword [esp + 0x1018], 0
test eax, eax
je 0x41ac2c
mov ecx, eax
call fcn.0040dc50
jmp 0x41ac2e
xor eax, eax
mov dword [esp + 0x1018], 0xffffffff
mov dword [0x469f34], eax
cmp byte [eax + 0xaf], 0
jne 0x41acb3
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], 0x41aab0
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.0041bfc0
mov dword [esp + 0x1040], 1
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
mov dword [esp + 0x1040], 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.0040b4c0
mov eax, dword [0x46a8e4]
test al, 1
jne 0x41ace3
or eax, 1
push 0x448700
mov dword [0x46a8e4], eax
call fcn.00441527
add esp, 4
sub esp, 8
call fcn.004369b0
mov eax, dword [0x469f34]
test eax, eax
jne 0x41ad2c
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov dword [esp + 0x1018], 2
test eax, eax
je 0x41ad1a
mov ecx, eax
call fcn.0040dc50
jmp 0x41ad1c
xor eax, eax
mov dword [esp + 0x1018], 0xffffffff
mov dword [0x469f34], eax
lea ecx, [eax + 0x78]
call fcn.0040be60
push 0x1f4
call edi
xor eax, eax
push 0x616
push eax
mov word [esp + 0x9f4], ax
lea eax, [esp + 0x9f6]
push eax
call sub.MSVCR110.dll_memset
add esp, 4
lea ecx, [esp + 0x9f4]
call fcn.0041ce80
xor eax, eax
push 0x206
push eax
mov word [esp + 0x5ec], ax
lea eax, [esp + 0x5ee]
push eax
call sub.MSVCR110.dll_memset
mov eax, dword [0x469f34]
add esp, 0x14
test eax, eax
jne 0x41adc8
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov dword [esp + 0x1018], 3
test eax, eax
je 0x41adb6
mov ecx, eax
call fcn.0040dc50
jmp 0x41adb8
xor eax, eax
mov dword [esp + 0x1018], 0xffffffff
mov dword [0x469f34], eax
add eax, 0x78
cmp dword [eax + 0x14], 8
jb 0x41add3
mov eax, dword [eax]
push str.iSafeSvc2.exe
push eax
lea eax, [esp + 0x5e4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
xor eax, eax
mov dword [esp + 0x120], 7
mov dword [esp + 0x11c], 0
mov word [esp + 0x10c], ax
cmp word [esp + 0x5dc], ax
jne 0x41ae15
xor ecx, ecx
jmp 0x41ae2f
lea ecx, [esp + 0x5dc]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41ae20
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [esp + 0x5e0]
push eax
lea ecx, [esp + 0x114]
call fcn.00405570
lea ecx, [esp + 0x10c]
mov dword [esp + 0x1018], 4
call fcn.0041c820
mov edi, dword [sym.imp.MSVCR110.dll_void___cdecl_operator_delete_void__]
test al, al
je 0x41b04e
xor eax, eax
mov dword [esp + 0x60], 7
mov dword [esp + 0x5c], 0
mov word [esp + 0x4c], ax
cmp word [esp + 0x9ec], ax
jne 0x41ae8e
xor ecx, ecx
jmp 0x41aeaf
lea ecx, [esp + 0x9ec]
lea edx, [ecx + 2]
jmp 0x41aea0
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41aea0
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [esp + 0x9f0]
push eax
lea ecx, [esp + 0x54]
call fcn.00405570
xor eax, eax
mov dword [esp + 0xa8], 7
mov dword [esp + 0xa4], 0
mov word [esp + 0x94], ax
push 8
push str.upgrade_
lea ecx, [esp + 0x9c]
mov byte [esp + 0x1020], 6
call fcn.00404020
lea eax, [esp + 0x4c]
push eax
lea edx, [esp + 0x98]
lea ecx, [esp + 0x68]
call fcn.0040d3f0
add esp, 4
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x94]
cmp ecx, eax
je 0x41af6a
cmp dword [esp + 0xa8], 8
jb 0x41af3d
push dword [esp + 0x94]
call edi
mov eax, dword [esp + 0x14]
add esp, 4
xor ecx, ecx
mov word [esp + 0x94], cx
push eax
lea ecx, [esp + 0x98]
mov dword [esp + 0xac], 7
mov dword [esp + 0xa8], 0
call fcn.004053a0
mov byte [esp + 0x1018], 6
cmp dword [esp + 0x78], 8
jb 0x41af82
push dword [esp + 0x64]
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 + 0xb4]
push eax
call fcn.00405a00
sub esp, 0x18
mov ecx, esp
mov byte [esp + 0x1048], 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.00405570
mov byte [esp + 0x1048], 6
call fcn.0040b6d0
add esp, 0x30
cmp dword [esp + 0xa8], 8
jb 0x41b000
push dword [esp + 0x94]
call edi
add esp, 4
xor eax, eax
mov byte [esp + 0x1018], 4
cmp dword [esp + 0x60], 8
mov dword [esp + 0xa8], 7
mov dword [esp + 0xa4], 0
mov word [esp + 0x94], ax
jb 0x41b038
push dword [esp + 0x4c]
call edi
add esp, 4
lea eax, [esp + 0x9ec]
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 + 0x1d4], ax
lea eax, [esp + 0x1d6]
push eax
call sub.MSVCR110.dll_memset
mov eax, dword [0x469f34]
add esp, 0xc
test eax, eax
jne 0x41b0a9
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1018], 9
test eax, eax
je 0x41b09a
mov ecx, eax
call fcn.0040dc50
jmp 0x41b09c
xor eax, eax
mov byte [esp + 0x1018], 4
mov dword [0x469f34], eax
add eax, 0x78
cmp dword [eax + 0x14], 8
jb 0x41b0b4
mov eax, dword [eax]
push str.iSafeSvc.exe
push eax
lea eax, [esp + 0x1d4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
xor eax, eax
mov dword [esp + 0xf0], 7
mov dword [esp + 0xec], 0
mov word [esp + 0xdc], ax
cmp word [esp + 0x1cc], ax
jne 0x41b0f6
xor ecx, ecx
jmp 0x41b10f
lea ecx, [esp + 0x1cc]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41b100
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [esp + 0x1d0]
push eax
lea ecx, [esp + 0xe4]
call fcn.00405570
lea ecx, [esp + 0xdc]
mov byte [esp + 0x1018], 0xa
call fcn.0041c820
test al, al
je 0x41b30c
xor eax, eax
mov dword [esp + 0x60], 7
mov dword [esp + 0x5c], 0
mov word [esp + 0x4c], ax
cmp word [esp + 0x9ec], ax
jne 0x41b165
xor ecx, ecx
jmp 0x41b17f
lea ecx, [esp + 0x9ec]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41b170
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [esp + 0x9f0]
push eax
lea ecx, [esp + 0x54]
call fcn.00405570
xor eax, eax
mov dword [esp + 0x90], 7
mov dword [esp + 0x8c], 0
mov word [esp + 0x7c], ax
push 8
push str.upgrade_
lea ecx, [esp + 0x84]
mov byte [esp + 0x1020], 0xc
call fcn.00404020
lea eax, [esp + 0x4c]
push eax
lea edx, [esp + 0x80]
lea ecx, [esp + 0x68]
call fcn.0040d3f0
add esp, 4
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x7c]
cmp ecx, eax
je 0x41b22e
cmp dword [esp + 0x90], 8
jb 0x41b204
push dword [esp + 0x7c]
call edi
mov eax, dword [esp + 0x14]
add esp, 4
xor ecx, ecx
mov word [esp + 0x7c], cx
push eax
lea ecx, [esp + 0x80]
mov dword [esp + 0x94], 7
mov dword [esp + 0x90], 0
call fcn.004053a0
mov byte [esp + 0x1018], 0xc
cmp dword [esp + 0x78], 8
jb 0x41b246
push dword [esp + 0x64]
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 + 0x9c]
push eax
call fcn.00405a00
sub esp, 0x18
mov ecx, esp
mov byte [esp + 0x1048], 0xe
push 0x11
xor eax, eax
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push 0x44c114
mov word [ecx], ax
call fcn.00405570
mov byte [esp + 0x1048], 0xc
call fcn.0040b6d0
add esp, 0x30
cmp dword [esp + 0x90], 8
jb 0x41b2c1
push dword [esp + 0x7c]
call edi
add esp, 4
xor eax, eax
mov byte [esp + 0x1018], 0xa
cmp dword [esp + 0x60], 8
mov dword [esp + 0x90], 7
mov dword [esp + 0x8c], 0
mov word [esp + 0x7c], ax
jb 0x41b2f6
push dword [esp + 0x4c]
call edi
add esp, 4
lea eax, [esp + 0x9ec]
push eax
push str.CUpgradeDlg::Upgrade__SendSvcFailedEvent:_uid___s_
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
add esp, 8
mov eax, dword [0x469f34]
test eax, eax
jne 0x41b347
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1018], 0xf
test eax, eax
je 0x41b338
mov ecx, eax
call fcn.0040dc50
jmp 0x41b33a
xor eax, eax
mov byte [esp + 0x1018], 0xa
mov dword [0x469f34], eax
cmp dword [eax + 0x8c], 8
lea ecx, [eax + 0x78]
jb 0x41b355
mov ecx, dword [ecx]
call fcn.0040ae00
mov eax, dword [0x469f34]
test eax, eax
jne 0x41b395
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1018], 0x10
test eax, eax
je 0x41b386
mov ecx, eax
call fcn.0040dc50
jmp 0x41b388
xor eax, eax
mov byte [esp + 0x1018], 0xa
mov dword [0x469f34], eax
cmp dword [eax + 0x8c], 8
lea ecx, [eax + 0x78]
jb 0x41b3a3
mov ecx, dword [ecx]
call fcn.0040ace0
mov eax, dword [0x469f34]
test eax, eax
jne 0x41b3e3
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1018], 0x11
test eax, eax
je 0x41b3d4
mov ecx, eax
call fcn.0040dc50
jmp 0x41b3d6
xor eax, eax
mov byte [esp + 0x1018], 0xa
mov dword [0x469f34], eax
cmp dword [eax + 0x8c], 8
lea ecx, [eax + 0x78]
jb 0x41b3f1
mov ecx, dword [ecx]
call fcn.0040c210
mov eax, dword [0x469f34]
test eax, eax
jne 0x41b431
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1018], 0x12
test eax, eax
je 0x41b422
mov ecx, eax
call fcn.0040dc50
jmp 0x41b424
xor eax, eax
mov byte [esp + 0x1018], 0xa
mov dword [0x469f34], eax
cmp byte [eax + 0xaf], 0
jne 0x41b4a0
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], 0x41aab0
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.0041bfc0
mov byte [esp + 0x1040], 0x13
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
mov byte [esp + 0x1040], 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.00409da0
add esp, 4
cmp eax, 0xffffffff
mov eax, dword [0x46a8e0]
sete byte [esp + 0x17]
test al, 1
jne 0x41b4e4
or eax, 1
push ecx
mov ecx, 0x46a850
mov dword [0x46a8e0], eax
call fcn.0040ed40
mov ecx, 0x46a850
call fcn.0040eec0
push 0x4486f0
call fcn.00441527
add esp, 4
call fcn.004108a0
cmp byte [esp + 0x17], 0
je 0x41b765
lea eax, [esp + 0x18]
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 + 0x1018], 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 0x41b53e
xor ecx, ecx
jmp 0x41b558
mov ecx, edx
lea eax, [ecx + 2]
mov dword [esp + 0x10], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41b547
sub ecx, dword [esp + 0x10]
sar ecx, 1
push ecx
push edx
lea ecx, [esp + 0x54]
call fcn.00405570
lea ecx, [esp + 0x18]
mov byte [esp + 0x1018], 0x16
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
push 3
xor eax, eax
push 0x44d97c
lea ecx, [esp + 0x24]
mov dword [esp + 0x38], 7
mov dword [esp + 0x34], 0
mov word [esp + 0x24], ax
call fcn.00405570
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x1c]
call fcn.0040cd70
cmp dword [esp + 0x30], 8
jb 0x41b5b9
push dword [esp + 0x1c]
call edi
add esp, 4
push 4
push str..lnk
lea ecx, [esp + 0x54]
call fcn.00404020
mov eax, dword [0x469f34]
test eax, eax
jne 0x41b604
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1018], 0x17
test eax, eax
je 0x41b5f5
mov ecx, eax
call fcn.0040dc50
jmp 0x41b5f7
xor eax, eax
mov byte [esp + 0x1018], 0x16
mov dword [0x469f34], eax
push str.iStart.exe
lea edx, [eax + 0x78]
lea ecx, [esp + 0x68]
call fcn.0041fa60
add esp, 4
mov byte [esp + 0x1018], 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.00405570
mov byte [esp + 0x1018], 0x19
mov eax, dword [0x469f34]
test eax, eax
jne 0x41b68a
push 0xe4
call ebx
add esp, 4
mov dword [esp + 0x10], eax
mov byte [esp + 0x1018], 0x1a
test eax, eax
je 0x41b67b
mov ecx, eax
call fcn.0040dc50
jmp 0x41b67d
xor eax, eax
mov byte [esp + 0x1018], 0x19
mov dword [0x469f34], eax
lea edx, [eax + 0x78]
lea ecx, [esp + 0xc4]
call fcn.0040c560
lea eax, [esp + 0xc4]
push eax
lea eax, [esp + 0x38]
push eax
lea edx, [esp + 0x6c]
lea ecx, [esp + 0x54]
mov byte [esp + 0x1020], 0x1b
call fcn.00406bd0
push str.CUpgradeDlg::Upgrade__CreateDeepCleanShortCut:_end_
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
add esp, 0xc
cmp dword [esp + 0xd8], 8
jb 0x41b6df
push dword [esp + 0xc4]
call edi
add esp, 4
xor eax, eax
cmp dword [esp + 0x48], 8
mov dword [esp + 0xd8], 7
mov dword [esp + 0xd4], 0
mov word [esp + 0xc4], ax
jb 0x41b70f
push dword [esp + 0x34]
call edi
add esp, 4
xor eax, eax
cmp dword [esp + 0x78], 8
mov dword [esp + 0x48], 7
mov dword [esp + 0x44], 0
mov word [esp + 0x34], ax
jb 0x41b736
push dword [esp + 0x64]
call edi
add esp, 4
xor eax, eax
mov byte [esp + 0x1018], 0xa
cmp dword [esp + 0x60], 8
mov dword [esp + 0x78], 7
mov dword [esp + 0x74], 0
mov word [esp + 0x64], ax
jb 0x41b765
push dword [esp + 0x4c]
call edi
add esp, 4
call fcn.0040dde0
cmp byte [eax + 0xaf], 0
jne 0x41b7d9
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], 0x41aab0
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.0041bfc0
mov byte [esp + 0x1040], 0x1c
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
mov byte [esp + 0x1040], 0xa
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 + 0x3dc], ax
lea eax, [esp + 0x3de]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
lea ecx, [esp + 0xf4]
call fcn.0041f3f0
mov byte [esp + 0x1018], 0x1d
cmp dword [esp + 0x108], 8
lea eax, [esp + 0xf4]
cmovae eax, dword [esp + 0xf4]
push eax
lea eax, [esp + 0x3d8]
push 0x44d178
push eax
call fcn.00411d00
add esp, 0xc
lea eax, [esp + 0x3d4]
push 0x450478
push eax
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [esp + 0x3d4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41bba0
call fcn.0040dde0
xor ecx, ecx
push 0xffffffffffffffff
push ecx
add eax, 0x78
mov word [esp + 0xb4], cx
push eax
lea ecx, [esp + 0xb8]
mov dword [esp + 0xcc], 7
mov dword [esp + 0xc8], 0
call fcn.00405a00
push 0x44aca8
lea ecx, [esp + 0x20]
mov byte [esp + 0x101c], 0x1e
call fcn.00405670
push 0x44b720
lea ecx, [esp + 0x68]
mov byte [esp + 0x101c], 0x1f
call fcn.00405670
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x68]
push eax
lea edx, [esp + 0xb4]
lea ecx, [esp + 0xcc]
mov byte [esp + 0x1020], 0x20
call fcn.0041f0f0
mov ebx, eax
lea eax, [esp + 0xb4]
add esp, 8
cmp eax, ebx
je 0x41b940
cmp dword [esp + 0xc0], 8
jb 0x41b913
push dword [esp + 0xac]
call edi
add esp, 4
xor eax, eax
push ebx
lea ecx, [esp + 0xb0]
mov dword [esp + 0xc4], 7
mov dword [esp + 0xc0], 0
mov word [esp + 0xb0], ax
call fcn.004053a0
cmp dword [esp + 0xd8], 8
jb 0x41b956
push dword [esp + 0xc4]
call edi
add esp, 4
xor eax, eax
cmp dword [esp + 0x78], 8
mov dword [esp + 0xd8], 7
mov dword [esp + 0xd4], 0
mov word [esp + 0xc4], ax
jb 0x41b986
push dword [esp + 0x64]
call edi
add esp, 4
xor eax, eax
mov byte [esp + 0x1018], 0x1e
cmp dword [esp + 0x30], 8
mov dword [esp + 0x78], 7
mov dword [esp + 0x74], 0
mov word [esp + 0x64], ax
jb 0x41b9b5
push dword [esp + 0x1c]
call edi
add esp, 4
lea ecx, [esp + 0x124]
call fcn.00405bb0
lea edx, [esp + 0xac]
lea ecx, [esp + 0x124]
mov byte [esp + 0x1018], 0x21
call fcn.00408ad0
xor eax, eax
push 0x206
push eax
mov word [esp + 0x7ec], ax
lea eax, [esp + 0x7ee]
push eax
call sub.MSVCR110.dll_memset
add esp, 0xc
mov dword [esp + 0x10], 0
call fcn.0040dde0
add eax, 0x78
cmp dword [eax + 0x14], 8
jb 0x41ba14
mov eax, dword [eax]
push eax
lea ecx, [esp + 0x14]
call fcn.00411380
sub esp, 8
lea ecx, [esp + 0x18]
mov byte [esp + 0x1020], 0x22
call fcn.0041be90
push str.iSafeKrnlCall.dll
push dword [esp + 0x14]
lea eax, [esp + 0x7ec]
push str._s_s
push eax
call fcn.00411d00
add esp, 0x10
lea eax, [esp + 0x7e4]
push eax
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], 0
call fcn.00411380
push 0x44aca8
push 0x44b720
lea ecx, [esp + 0x20]
mov byte [esp + 0x1020], 0x23
call fcn.004114c0
push dword [esp + 0x18]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41bb2b
push dword [esp + 0x18]
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ebx, eax
test ebx, ebx
jne 0x41bb0e
mov byte [esp + 0x1018], 0x22
mov edx, dword [esp + 0x18]
add edx, 0xfffffff0
or ebx, 0xffffffff
lea ecx, [edx + 0xc]
mov eax, ebx
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x41bace
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x1018], 0x21
mov edx, dword [esp + 0x10]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x41baf1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [esp + 0x124]
call fcn.00408480
lea ecx, [esp + 0xac]
call fcn.00401270
jmp 0x41bde3
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 + 0x1018], 0x22
mov edx, dword [esp + 0x18]
add edx, 0xfffffff0
or ebx, 0xffffffff
lea ecx, [edx + 0xc]
mov eax, ebx
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x41bb53
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x1018], 0x21
mov edx, dword [esp + 0x10]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x41bb76
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [esp + 0x124]
call fcn.00408480
mov byte [esp + 0x1018], 0x1d
cmp dword [esp + 0xc0], 8
jb 0x41bba0
push dword [esp + 0xac]
call edi
add esp, 4
call fcn.0040dde0
cmp byte [eax + 0xaf], 0
jne 0x41bc14
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], 0x41aab0
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.0041bfc0
mov byte [esp + 0x1040], 0x24
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
mov byte [esp + 0x1040], 0x1d
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COUIManager::AddUIHandler_class_boost::function_void____cdecl___void____bool__void__]
mov eax, dword [0x469f0c]
test al, 1
jne 0x41bc32
or eax, 1
push 0x4486e0
mov dword [0x469f0c], eax
call fcn.00441527
add esp, 4
push 1
push 0
push 0
mov byte [esp + 0x23], 0
call dword [sym.imp.ADVAPI32.dll_OpenSCManagerW]
mov ebx, eax
test ebx, ebx
je 0x41bc80
push 4
push str.iSafeService
push ebx
call dword [sym.imp.ADVAPI32.dll_OpenServiceW]
mov ecx, eax
mov eax, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
test ecx, ecx
je 0x41bc6f
push ecx
mov byte [esp + 0x1b], 1
call eax
mov eax, dword [sym.imp.ADVAPI32.dll_CloseServiceHandle]
push ebx
call eax
cmp byte [esp + 0x17], 0
je 0x41bc80
call fcn.0040afa0
jmp 0x41bc85
call fcn.0040e7b0
call fcn.0040dde0
sub esp, 0x18
mov ecx, esp
xor edx, edx
push 0xffffffffffffffff
add eax, 0x78
push edx
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push eax
mov word [ecx], dx
call fcn.00405a00
call fcn.0040b990
mov ebx, dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
push str.CUpgradeDlg::Upgrade__RegisterRKScanShellDLL:_begin_
call ebx
add esp, 0x1c
call fcn.0040dde0
add eax, 0x78
cmp dword [eax + 0x14], 8
jb 0x41bcd3
mov eax, dword [eax]
mov ecx, eax
call fcn.0040c030
push str.CUpgradeDlg::Upgrade__RegisterRKScanShellDLL:_end_
call ebx
add esp, 4
call fcn.0040dde0
cmp byte [eax + 0xaf], 0
jne 0x41bd5c
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], 0x41aab0
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.0041bfc0
mov byte [esp + 0x1040], 0x25
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 + 0x1040], 0x1d
call ebx
jmp 0x41bd62
mov ebx, dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COUIManager::AddUIHandler_class_boost::function_void____cdecl___void____bool__void__]
call fcn.0040dde0
cmp byte [eax + 0xaf], 0
jne 0x41bdd2
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], 0x41aab0
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.0041bfc0
mov byte [esp + 0x1040], 0x26
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov ecx, eax
mov byte [esp + 0x1040], 0x1d
call ebx
call fcn.0040abd0
mov eax, dword [esi]
push 1
mov ecx, esi
call dword [eax + 0x220]
cmp dword [esp + 0x108], 8
jb 0x41bdf9
push dword [esp + 0xf4]
call edi
add esp, 4
xor eax, eax
cmp dword [esp + 0xf0], 8
mov dword [esp + 0x108], 7
mov dword [esp + 0x104], 0
mov word [esp + 0xf4], ax
jb 0x41be2f
push dword [esp + 0xdc]
call edi
add esp, 4
xor eax, eax
cmp dword [esp + 0x120], 8
mov dword [esp + 0xf0], 7
mov dword [esp + 0xec], 0
mov word [esp + 0xdc], ax
jb 0x41be65
push dword [esp + 0x10c]
call edi
add esp, 4
mov ecx, dword [esp + 0x1010]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xff8]
xor ecx, esp
call fcn.004413e6
mov esp, ebp
pop ebp
ret