Function at 0x4067dc
Capabilities:
Check if file exists
Create process on windows

Disassembly:
push ebp
sub esp, 0xf50
lea ebp, [esp - 4]
mov eax, dword [0x411028]
xor eax, ebp
mov dword [ebp + 0xf50], eax
push 0x5c
mov eax, 0x409657
call fcn.0040847e
xor esi, esi
mov dword [ebp - 4], esi
call dword [sym.imp.ASOHelper.dll_enum_ASO_SUPPORTED_LANG___cdecl_GetCurSelLang_void_]
test eax, eax
jne 0x406855
call dword [sym.imp.ASOHelper.dll_public:_static_bool___cdecl_CSystweakApp::IsRegisteredVersion_void_]
test al, al
jne 0x406855
mov eax, dword [sym.imp.ASOHelper.dll_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t____CSystweakApp::m_strASO_24HOURCLEANDDATETIME]
mov eax, dword [eax]
cmp dword [eax - 0xc], esi
je 0x406855
call dword [sym.imp.ASOHelper.dll_public:_static_long_int___cdecl_CSystweakApp::GetHoursAfterFirstClean_void_]
cmp eax, 0x18
jl 0x406855
call sub.mfc90u.dll_AfxGetThread
cmp eax, esi
je 0x406842
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x7c]
jmp 0x406844
xor eax, eax
push eax
mov ecx, 0x411db8
call dword [sym.imp.ASOHelper.dll_public:_unsigned_int___thiscall_CSystweakApp::Show24HourTrialExipreNag_class_CDialog__]
jmp 0x406bd8
push esi
mov ebx, 0x411db8
push ebx
call fcn.004016aa
cmp eax, esi
je 0x406bd8
lea esi, [ebp - 0x68]
call fcn.004072fe
push str.IDS_SCAN_TIME_FORMAT
lea eax, [ebp - 0x14]
push eax
mov ecx, ebx
call dword [sym.imp.ASOHelper.dll_public:_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t______thiscall_CSystweakApp::LoadStringW_char_const__]
mov byte [ebp - 4], 1
push dword [eax]
lea edi, [ebp - 0x10]
mov ecx, esi
call fcn.00407019
mov byte [ebp - 4], 2
push dword [eax]
mov ecx, ebx
push str.LastPlayed
call dword [sym.imp.ASOHelper.dll_public:_enum_PCO_ERROR_CODES___thiscall_CSystweakApp::SetOptionString_wchar_t_const___wchar_t_const__]
mov ecx, edi
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0
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 str.ASADIMN
call fcn.004066bd
test eax, eax
setne bl
mov dword [esp], str.ENABLESRVOPT
call fcn.004066bd
test eax, eax
setne byte [ebp - 0x16]
mov dword [esp], str.SOUNDSUPR
call fcn.004066bd
mov esi, str.open
lea edi, [ebp + 0xf40]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
test eax, eax
setne byte [ebp - 0x15]
movsd dword es:[edi], dword [esi]
xor eax, eax
lea edi, [ebp + 0xf4c]
stosd dword es:[edi], eax
push 0xfe
mov word [ebp + 0xe40], ax
xor edi, edi
lea eax, [ebp + 0xe42]
push edi
push eax
call sub.MSVCR90.dll_memset
add esp, 0x10
lea ecx, [ebp - 0x1c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
mov byte [ebp - 4], 3
call sub.mfc90u.dll_AfxGetModuleState
mov eax, dword [eax + 8]
lea ecx, [ebp - 0x1c]
push ecx
push eax
call dword [sym.imp.ASOHelper.dll_wchar_t_const____cdecl_GetAppPath_struct_HINSTANCE_____class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t_____]
pop ecx
pop ecx
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x20]
call dword [0x40a62c]
mov byte [ebp - 4], 4
call dword [sym.imp.ASOHelper.dll_bool___cdecl_SysIsRunningInWin64_void_]
test al, al
je 0x4069ed
lea eax, [ebp - 0x20]
push eax
lea ecx, [ebp - 0x14]
call dword [0x40a62c]
push str.GameOptLauncher64.exe
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 5
call dword [0x40a628]
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 6
mov esi, dword [sym.imp.ASOHelper.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__]
push eax
call esi
pop ecx
pop ecx
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 5
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 dword [ebp - 0x14]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4069db
push str.GameOptLauncher.exe
lea ecx, [ebp - 0x10]
call dword [0x40a628]
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x20]
push eax
mov byte [ebp - 4], 7
call esi
pop ecx
pop ecx
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]
jmp 0x4069e8
lea eax, [ebp - 0x14]
push eax
lea ecx, [ebp - 0x20]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
lea ecx, [ebp - 0x14]
jmp 0x406a12
push str.GameOptLauncher.exe
lea ecx, [ebp - 0x10]
call dword [0x40a628]
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x20]
push eax
mov byte [ebp - 4], 8
call dword [sym.imp.ASOHelper.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 - 0x10]
mov byte [ebp - 4], 4
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 0x3c
pop esi
push esi
lea eax, [ebp - 0x5c]
push edi
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
lea eax, [ebp + 0xf40]
mov dword [ebp - 0x5c], esi
mov dword [ebp - 0x50], eax
test bl, bl
je 0x406ad4
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x4c], eax
mov edi, 0x40b198
lea eax, [ebp - 0x14]
push edi
push eax
lea ecx, [ebp + 0xf5c]
call fcn.00406fb8
lea ecx, [ebp - 0x10]
push edi
push ecx
mov esi, eax
mov byte [ebp - 4], 9
call fcn.0040744d
add esp, 0x10
push eax
lea ecx, [ebp + 0xf5c]
mov byte [ebp - 4], 0xa
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
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]
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 4
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
cmp byte [ebp - 0x16], 0
je 0x406aad
push str.__service
lea ecx, [ebp + 0xf5c]
call dword [0x40a3dc]
cmp byte [ebp - 0x15], 0
je 0x406ac4
push str.__sound
lea ecx, [ebp + 0xf5c]
call dword [0x40a3dc]
mov eax, dword [ebp + 0xf5c]
mov dword [ebp - 0x48], eax
xor edi, edi
jmp 0x406b6c
mov eax, dword [ebp + 0xf5c]
push 0xe3e
mov dword [ebp - 0x4c], eax
mov esi, eax
lea eax, [ebp]
lea ecx, [ebp + 0xe40]
push edi
push eax
mov dword [ebp - 0x48], ecx
call sub.MSVCR90.dll_memset
add esp, 0xc
cmp esi, edi
je 0x406b13
push esi
call dword [sym.imp.MSVCR90.dll_wcslen]
pop ecx
test eax, eax
je 0x406b13
push esi
lea eax, [ebp]
call fcn.0040100a
lea eax, [ebp + 0x416]
push eax
lea ecx, [ebp - 0x14]
call dword [0x40a628]
lea ecx, [ebp + 0x410]
push ecx
lea ecx, [ebp - 0x10]
push ecx
mov ecx, eax
mov byte [ebp - 4], 0xb
call fcn.00406fb8
pop ecx
pop ecx
push eax
lea ecx, [ebp - 0x1c]
mov byte [ebp - 4], 0xc
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_1]
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]
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 4
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea eax, [ebp - 0x1c]
push edi
push eax
call dword [sym.imp.ASOHelper.dll_enum_PCO_ERROR_CODES___cdecl_STPathRemoveEndSlash_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t______bool_]
pop ecx
pop ecx
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x44], eax
call sub.mfc90u.dll_AfxGetThread
cmp eax, edi
je 0x406b84
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x7c]
jmp 0x406b86
xor eax, eax
cmp eax, edi
jne 0x406b8f
mov dword [ebp - 0x54], edi
jmp 0x406b95
mov eax, dword [eax + 0x20]
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0x5c]
push eax
mov dword [ebp - 0x58], 0x800040
mov dword [ebp - 0x40], 1
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, edi
je 0x406bc6
cmp dword [ebp - 0x3c], 0x20
jl 0x406bc6
push edi
call dword [sym.imp.USER32.dll_PostQuitMessage]
lea ecx, [ebp - 0x20]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [ebp - 0x1c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [ebp + 0xf5c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0xf50]
xor ecx, ebp
call fcn.00407ddc
add ebp, 0xf54
leave
ret 4