Function at 0x402aff
Capabilities:
Check if file exists

Disassembly:
push 0x28
mov eax, 0x4107cb
call fcn.0040f448
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x34]
mov dword [ebp - 0x18], SysReAllocString
call dword [sym.imp.SolvusoftWMhelper.dll_public:_void___thiscall_CRegistry::constructor_struct_HKEY____const_const__]
lea eax, [ebp - 0x10]
xor ebx, ebx
push eax
mov dword [ebp - 4], ebx
call dword [sym.imp.SolvusoftWMhelper.dll_public:_static_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t______cdecl_CSystweakApp::GetRegAppPath_void_]
pop ecx
mov byte [ebp - 4], 1
call dword [sym.imp.SolvusoftWMhelper.dll_bool___cdecl_SysIsRunningInWin64_void_]
movzx esi, al
neg esi
sbb esi, esi
and esi, 0x200
push 0xffffffffffffffff
or esi, 0x2001f
push ebx
mov ecx, edi
mov dword [ebp - 0x30], esi
call sub.mfc90u.dll_CStringArray::SetSize
push ebx
push dword [ebp - 0x10]
mov ebx, dword [sym.imp.SolvusoftWMhelper.dll_public:_int___thiscall_CRegistry::Open_struct_HKEY_____wchar_t_const___bool_]
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x34]
call ebx
test eax, eax
je 0x402b89
push edi
push str.SaveFolders
lea ecx, [ebp - 0x34]
call dword [sym.imp.SolvusoftWMhelper.dll_public:_int___thiscall_CRegistry::ListValues_wchar_t_const___class_CStringArray__]
lea ecx, [ebp - 0x34]
call dword [sym.imp.SolvusoftWMhelper.dll_public:_void___thiscall_CRegistry::Close_void_]
cmp dword [edi + 8], 1
jl 0x402c30
push str.SaveFolders
lea ecx, [ebp - 0x14]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x10]
push eax
mov byte [ebp - 4], 2
call dword [sym.imp.SolvusoftWMhelper.dll_enum_PCO_ERROR_CODES___cdecl_STPathAppend_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t______class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t____const__]
pop ecx
pop ecx
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 1
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
push 1
push dword [ebp - 0x10]
lea ecx, [ebp - 0x34]
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x30], esi
call ebx
test eax, eax
je 0x402c30
mov eax, dword [edi + 8]
xor esi, esi
test eax, eax
jle 0x402c27
test esi, esi
jl 0x402c4c
cmp esi, eax
jge 0x402c4c
mov eax, dword [edi + 4]
mov ebx, esi
shl ebx, 2
add eax, ebx
push dword [eax]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x402c1f
cmp esi, dword [edi + 8]
jge 0x402c4c
mov eax, dword [edi + 4]
add eax, ebx
push dword [eax]
lea ecx, [ebp - 0x34]
call dword [sym.imp.SolvusoftWMhelper.dll_public:_int___thiscall_CRegistry::DeleteValue_wchar_t_const__]
push 1
push esi
mov ecx, edi
call sub.mfc90u.dll_CStringArray::RemoveAt
dec esi
mov eax, dword [edi + 8]
inc esi
cmp esi, eax
jl 0x402be1
lea ecx, [ebp - 0x34]
call dword [sym.imp.SolvusoftWMhelper.dll_public:_void___thiscall_CRegistry::Close_void_]
lea ecx, [ebp - 0x10]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x34]
call dword [sym.imp.SolvusoftWMhelper.dll_public_virtual:_void___thiscall_CRegistry::destructor_void_]
call fcn.0040f4e7
ret
call sub.mfc90u.dll_AfxThrowInvalidArgException
int3