Function at 0x40deb0
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x4403e0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x14
push esi
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_1
lea ecx, [esp + 0x14]
mov dword [esp + 0x20], 0
call fcn.00402d70
lea eax, [esp + 4]
push str.QBGames.ini
push eax
lea ecx, [esp + 0x1c]
mov dword [esp + 0x28], 1
call fcn.00402e00
lea ecx, [esp + 0x10]
mov byte [esp + 0x20], 2
call sub.MFC42.DLL_CString::CString_1
mov esi, dword [esp + 4]
push 0x1f4
push 0x1f4
lea ecx, [esp + 0x18]
mov byte [esp + 0x28], 3
call sub.MFC42.DLL_CString::GetBuffer
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
push 0xffffffffffffffff
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::ReleaseBuffer
lea ecx, [esp + 0x10]
push ecx
lea ecx, [esp + 8]
call sub.MFC42.DLL_CString::operator_1
mov edx, dword [esp + 4]
push 0
push edx
call dword [sym.imp.MSVCRT.dll__access]
add esp, 8
test eax, eax
je 0x40df77
mov eax, dword [esp + 4]
push 0x452ee8
push eax
call dword [sym.imp.MSVCRT.dll_fopen]
push eax
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 0xc
mov ecx, dword [esp + 4]
push ecx
push 0
push str.Version
push str.Version
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
cmp eax, dword [0x452bf8]
jl 0x40dfd3
lea ecx, [esp + 0x10]
mov byte [esp + 0x20], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 4]
mov byte [esp + 0x20], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov dword [esp + 0x20], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop esi
mov ecx, dword [esp + 0x14]
mov dword fs:[0], ecx
add esp, 0x20
ret
push ebp
push edi
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_1
mov edx, dword [0x452bf8]
lea eax, [esp + 0x14]
push edx
push 0x452488
push eax
mov byte [esp + 0x34], 4
call sub.MFC42.DLL_CString::Format
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
mov edi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
add esp, 0xc
push ecx
push edx
push str.Version
push str.Version
call edi
xor esi, esi
lea ecx, [esp + 0x10]
call sub.MFC42.DLL_CString::CString_1
lea ebp, [esi + 1]
lea eax, [esp + 0x10]
push ebp
push str.Game_d
push eax
mov byte [esp + 0x34], 5
call sub.MFC42.DLL_CString::Format
mov ecx, dword [esi*4 + 0x452a24]
lea edx, [esp + 0x20]
push ecx
push 0x452488
push edx
call sub.MFC42.DLL_CString::Format
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
add esp, 0x18
push eax
push ecx
push str.GameIndex
push edx
call edi
mov eax, dword [esi*4 + 0x452a58]
lea ecx, [esp + 0x14]
push eax
push 0x452488
push ecx
call sub.MFC42.DLL_CString::Format
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
add esp, 0xc
push edx
push eax
push str.GameID
push ecx
call edi
mov edx, dword [esp + 0xc]
mov eax, dword [esi*4 + 0x452a8c]
mov ecx, dword [esp + 0x10]
push edx
push eax
push str.Name
push ecx
call edi
mov edx, dword [esp + 0xc]
mov eax, dword [esi*4 + 0x452ac0]
mov ecx, dword [esp + 0x10]
push edx
push eax
push str.PreferExe
push ecx
call edi
mov edx, dword [esp + 0xc]
mov eax, dword [esi*4 + 0x452af4]
mov ecx, dword [esp + 0x10]
push edx
push eax
push str.PreferParam
push ecx
call edi
mov edx, dword [esi*4 + 0x452b28]
lea eax, [esp + 0x14]
push edx
push 0x452488
push eax
call sub.MFC42.DLL_CString::Format
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
add esp, 0xc
push ecx
push edx
push str.Icon
push eax
call edi
mov ecx, dword [esp + 0xc]
push ecx
mov edx, dword [esi*4 + 0x452b5c]
mov eax, dword [esp + 0x14]
push edx
push str.IconFile
push eax
call edi
mov ecx, dword [esp + 0xc]
mov edx, dword [esi*4 + 0x452b90]
mov eax, dword [esp + 0x10]
push ecx
push edx
push str.HookProcess
push eax
call edi
mov ecx, dword [esp + 0xc]
mov edx, dword [esi*4 + 0x452bc4]
mov eax, dword [esp + 0x10]
push ecx
push edx
push str.SocketProcess
push eax
call edi
lea ecx, [esp + 0x10]
mov byte [esp + 0x28], 4
call sub.MFC42.DLL_CString::CString
mov esi, ebp
cmp esi, 0xd
jl 0x40e01a
lea ecx, [esp + 0x14]
mov byte [esp + 0x28], 3
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
mov byte [esp + 0x28], 2
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0xc]
mov byte [esp + 0x28], 1
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x1c]
mov dword [esp + 0x28], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x20]
pop edi
pop ebp
pop esi
mov dword fs:[0], ecx
add esp, 0x20
ret