Function at 0x40b120
Capabilities:
Check if file exists
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x428367
mov eax, dword fs:[0]
push eax
sub esp, 0x258
mov eax, dword [0x442060]
xor eax, esp
mov dword [esp + 0x250], eax
push ebx
push esi
push edi
mov eax, dword [0x442060]
xor eax, esp
push eax
lea eax, [esp + 0x268]
mov dword fs:[0], eax
mov edi, ecx
call dword [sym.imp.ouilibx.dll_public_virtual:_bool___thiscall_OUI::COVDialog::OnInitDialog_void_]
test al, al
jne 0x40b183
push str.OnInitDialog__Failed_
push 0xffffffffffffffff
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogString]
add esp, 8
xor al, al
jmp 0x40b3e6
mov ebx, dword [sym.imp.ouilibx.dll_public:_struct_HWND____const___thiscall_OUI::COVWnd::GetSafeHwnd_void_]
mov ecx, edi
call ebx
mov esi, eax
test esi, esi
jne 0x40b1aa
push str.CreateWnd:_Failed_
push 0xffffffffffffffff
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogString]
add esp, 8
xor al, al
jmp 0x40b3e6
call dword [sym.imp.ouilibx.dll_public:_static_class_OUI::COUIManager____cdecl_OUI::COUIManager::GetUIManager_void_]
mov dword [eax + 8], edi
cmp dword [edi + 0x128], 8
lea eax, [edi + 0x114]
jb 0x40b1c4
mov eax, dword [eax]
push 1
push eax
push esi
call dword [sym.imp.USER32.dll_SetPropW]
lea eax, [esp + 0x14]
push eax
push 0x20019
push 0
push str.SoftwareiSafe
push 0x80000002
mov dword [esp + 0x34], 0x208
mov dword [esp + 0x30], 1
mov dword [esp + 0x28], 0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x40b226
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x24]
push eax
push 0
push str.path
push dword [esp + 0x28]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x40b235
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [esp + 0x18]
push str.IDS_SOFTUNINSTALL_TITLE
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__]
lea ecx, [esp + 0x18]
mov dword [esp + 0x270], 0
call dword [sym.imp.ouilibx.dll_public:_wchar_t_const____thiscall_OUI::COString::operator_wchar_t_const__void_const]
push eax
mov ecx, edi
call ebx
push eax
call dword [sym.imp.USER32.dll_SetWindowTextW]
lea eax, [esp + 0x54]
push eax
mov byte [esp + 0x17], 0
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40b362
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0x28]
mov dword [esp + 0x28], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
call fcn.004214a0
sub esp, 0x18
mov ecx, esp
mov byte [esp + 0x288], 1
xor eax, eax
push 0xffffffffffffffff
mov dword [ecx + 0x14], 7
mov dword [ecx + 0x10], 0
push eax
mov word [ecx], ax
lea eax, [edi + 0xd8]
push eax
call fcn.00406d50
lea ecx, [esp + 0x3c]
call fcn.00421a60
mov ebx, eax
test ebx, ebx
je 0x40b351
mov ecx, edi
call fcn.0040b500
test eax, eax
je 0x40b351
mov ecx, dword [edi + 0xf4]
lea esi, [edi + 0xf0]
mov eax, dword [ecx]
push esi
push ebx
push 0
call dword [eax + 0x3c]
mov ecx, dword [edi + 0xf4]
push dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x1c]
mov dword [edi + 0xf8], eax
test eax, eax
je 0x40b351
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
mov ecx, dword [edi + 0xf8]
mov dword [edi + 0xcc], 1
mov eax, dword [ecx]
lea edx, [edi + 0xc8]
push edx
call dword [eax + 8]
mov byte [esp + 0x13], 1
lea ecx, [esp + 0x24]
mov byte [esp + 0x270], 0
call fcn.004215a0
mov esi, dword [sym.imp.isafepxy.dll_public:_static_class_elex::commumod::SCommuMod____cdecl_elex::commumod::SCommuMod::instance_void_]
call esi
mov ebx, dword [sym.imp.isafepxy.dll_public:_static_int___cdecl_elex::commumod::SCommuMod::SendAction_wchar_t_const__]
push str.screenview.isafehlppu.analysis
call ebx
add esp, 4
cmp byte [esp + 0x13], 0
jne 0x40b3cf
push str.SoftUninstall_Init_Failed.
call dword [sym.imp.isafepxy.dll_ISAFE_WriteProgramLogNoMask]
add esp, 4
mov ecx, edi
push 0
push 0x44257c
push 0x442560
push 0
push str.IDC_MAIN_VS
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
test eax, eax
je 0x40b3cf
push 1
push 1
mov ecx, eax
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COVViewStack::ShowView_int__bool_]
call esi
push str.screenview.isafehlppu.nofindremain
call ebx
add esp, 4
lea ecx, [esp + 0x18]
mov dword [esp + 0x270], 0xffffffff
call dword [sym.imp.ouilibx.dll_public:_void___thiscall_OUI::COString::destructor_void_]
mov al, 1
mov ecx, dword [esp + 0x268]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x250]
xor ecx, esp
call fcn.004258f6
mov esp, ebp
pop ebp
ret