Function at 0x4067c1
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, 0x4095f0
call fcn.0040840e
and dword [ebp - 4], 0
push 0
mov ebx, 0x411dd0
push ebx
call fcn.004016de
test eax, eax
je 0x406b6d
lea esi, [ebp - 0x68]
call fcn.00407293
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.00406fae
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.004066a2
test eax, eax
setne bl
mov dword [esp], str.ENABLESRVOPT
call fcn.004066a2
test eax, eax
setne byte [ebp - 0x16]
mov dword [esp], str.SOUNDSUPR
call fcn.004066a2
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 [0x40a624]
mov byte [ebp - 4], 4
call dword [sym.imp.ASOHelper.dll_bool___cdecl_SysIsRunningInWin64_void_]
test al, al
je 0x406982
lea eax, [ebp - 0x20]
push eax
lea ecx, [ebp - 0x14]
call dword [0x40a624]
push str.GameOptLauncher64.exe
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 5
call dword [0x40a618]
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 0x406970
push str.GameOptLauncher.exe
lea ecx, [ebp - 0x10]
call dword [0x40a618]
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 0x40697d
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 0x4069a7
push str.GameOptLauncher.exe
lea ecx, [ebp - 0x10]
call dword [0x40a618]
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 0x406a69
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x4c], eax
mov edi, 0x40b180
lea eax, [ebp - 0x14]
push edi
push eax
lea ecx, [ebp + 0xf5c]
call fcn.00406f4d
lea ecx, [ebp - 0x10]
push edi
push ecx
mov esi, eax
mov byte [ebp - 4], 9
call fcn.004073e2
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 0x406a42
push str.__service
lea ecx, [ebp + 0xf5c]
call dword [0x40a3c8]
cmp byte [ebp - 0x15], 0
je 0x406a59
push str.__sound
lea ecx, [ebp + 0xf5c]
call dword [0x40a3c8]
mov eax, dword [ebp + 0xf5c]
mov dword [ebp - 0x48], eax
xor edi, edi
jmp 0x406b01
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 0x406aa8
push esi
call dword [sym.imp.MSVCR90.dll_wcslen]
pop ecx
test eax, eax
je 0x406aa8
push esi
lea eax, [ebp]
call fcn.0040100a
lea eax, [ebp + 0x416]
push eax
lea ecx, [ebp - 0x14]
call dword [0x40a618]
lea ecx, [ebp + 0x410]
push ecx
lea ecx, [ebp - 0x10]
push ecx
mov ecx, eax
mov byte [ebp - 4], 0xb
call fcn.00406f4d
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 0x406b19
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x7c]
jmp 0x406b1b
xor eax, eax
cmp eax, edi
jne 0x406b24
mov dword [ebp - 0x54], edi
jmp 0x406b2a
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 0x406b5b
cmp dword [ebp - 0x3c], 0x20
jl 0x406b5b
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.00407d76
add ebp, 0xf54
leave
ret 4