Function at 0x440270
Capabilities:
Read .ini file

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4b5c9d
push eax
mov dword fs:[0], esp
sub esp, 0x330
push ebp
mov ebp, ecx
xor ecx, ecx
push esi
mov edx, dword [ebp + 0x24]
push edi
test edx, edx
jle 0x440686
cmp ecx, edx
jl 0x4402a5
xor eax, eax
jmp 0x4402ab
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + ecx*4]
cmp dword [eax], 0
je 0x4402be
mov esi, dword [esp + 0x34c]
mov edi, dword [eax + 4]
cmp edi, esi
je 0x4402c8
inc ecx
cmp ecx, edx
jl 0x4402a5
jmp 0x440686
test eax, eax
je 0x440686
push esi
mov ecx, ebp
call fcn.004407c0
test eax, eax
jne 0x440686
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_5
lea ecx, [esp + 0x10]
mov dword [esp + 0x344], 0
push ecx
call fcn.00440160
add esp, 4
mov edx, dword [eax]
push esi
push edx
lea eax, [esp + 0x1c]
push str._s_0d
push eax
mov byte [esp + 0x354], 1
call sub.MFC42.DLL_CString::Format_1
add esp, 0x10
lea ecx, [esp + 0x10]
mov byte [esp + 0x344], 0
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x14]
push ecx
call fcn.00455aa0
add esp, 4
test eax, eax
je 0x440496
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::CString_5
lea edx, [esp + 0x10]
mov byte [esp + 0x344], 2
push edx
call fcn.00440160
add esp, 4
mov eax, dword [eax]
push esi
push eax
lea ecx, [esp + 0x14]
push str._s_0d_settings.ini
push ecx
mov byte [esp + 0x354], 3
call sub.MFC42.DLL_CString::Format_1
add esp, 0x10
lea ecx, [esp + 0x10]
mov byte [esp + 0x344], 2
call sub.MFC42.DLL_CString::CString
mov edx, dword [esp + 0xc]
push edx
call fcn.00455aa0
add esp, 4
test eax, eax
je 0x440485
mov eax, dword [esp + 0xc]
push eax
push 1
push str.IsPlay
push str.settings
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
test eax, eax
je 0x440485
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x135]
mov byte [esp + 0x134], 0
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0xc]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push ecx
lea edx, [esp + 0x138]
push 0x104
push edx
stosw word es:[edi], ax
push 0x4db920
push str.MainFile
push str.Settings
stosb byte es:[edi], al
call esi
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x239]
mov byte [esp + 0x238], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov eax, dword [esp + 0xc]
lea ecx, [esp + 0x238]
push eax
push 0x104
push ecx
push 0x4db920
push str.Tips
push str.Settings
call esi
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x31]
mov byte [esp + 0x30], 0
rep stosd dword es:[edi], eax
mov edx, dword [esp + 0xc]
stosw word es:[edi], ax
stosb byte es:[edi], al
push edx
lea eax, [esp + 0x34]
push 0x104
push eax
push 0x4db920
push str.GameID
push str.Settings
call esi
mov al, byte [esp + 0x30]
test al, al
jne 0x4404af
lea ecx, [esp + 0xc]
mov byte [esp + 0x344], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x14]
mov dword [esp + 0x344], 0xffffffff
call sub.MFC42.DLL_CString::CString
jmp 0x440686
push ebx
lea ecx, [esp + 0x20]
call fcn.00455150
lea ecx, [esp + 0x34]
mov byte [esp + 0x348], 4
test ecx, ecx
lea esi, [esp + 0x34]
je 0x440575
mov al, byte [esp + 0x34]
test al, al
je 0x440575
lea edi, [esp + 0x34]
mov bl, 6
mov al, byte [esi]
test al, al
je 0x44053f
cmp al, 0x2c
jne 0x44052a
cmp esi, edi
jbe 0x440527
mov edx, esi
lea ecx, [esp + 0x1c]
sub edx, edi
push edx
push edi
call fcn.004550d2
push eax
mov eax, dword [esp + 0x2c]
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0x350], bl
call sub.MFC42.DLL_CStringArray::SetAtGrow
lea ecx, [esp + 0x1c]
mov byte [esp + 0x348], 4
call sub.MFC42.DLL_CString::CString
lea edi, [esi + 1]
mov cl, byte [esi]
push ecx
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByte]
test eax, eax
je 0x44053c
add esi, 2
jmp 0x4404e3
inc esi
jmp 0x4404e3
cmp esi, edi
jbe 0x440575
push edi
lea ecx, [esp + 0x18]
call sub.MFC42.DLL_CString::CString_4
mov edx, dword [esp + 0x28]
push eax
push edx
lea ecx, [esp + 0x28]
mov byte [esp + 0x350], 5
call sub.MFC42.DLL_CStringArray::SetAtGrow
lea ecx, [esp + 0x14]
mov byte [esp + 0x348], 4
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x28]
mov dword [esp + 0x14], 0
test eax, eax
jle 0x44064f
mov ebx, dword [sym.imp.MSVCRT.dll_strncpy]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + ecx*4]
push eax
call dword [sym.imp.MSVCRT.dll_atoi]
push 0x214
mov edi, eax
call sub.MFC42.DLL_operatornew
mov esi, eax
add esp, 8
test esi, esi
je 0x44063a
mov edx, dword [esp + 0x350]
lea eax, [esp + 0x138]
push 0x104
lea ecx, [esi + 8]
push eax
push ecx
mov dword [esi + 4], edx
mov dword [esi], edi
call ebx
lea edx, [esp + 0x248]
push 0x104
lea eax, [esi + 0x10c]
push edx
push eax
call ebx
mov cl, byte [esp + 0x36c]
add esp, 0x18
mov byte [esi + 0x210], cl
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebp + 0x10]
jg 0x44062a
mov edx, dword [ebp + 8]
add edx, eax
mov eax, dword [ebp + 0x14]
shl edx, 2
push edx
push eax
call dword [sym.imp.MSVCRT.dll_realloc]
add esp, 8
test eax, eax
je 0x44063a
mov ecx, dword [ebp + 8]
mov dword [ebp + 0x14], eax
add dword [ebp + 0xc], ecx
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0x14]
mov dword [eax + edx*4], esi
mov eax, dword [ebp + 0x10]
inc eax
mov dword [ebp + 0x10], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x28]
inc eax
cmp eax, ecx
mov dword [esp + 0x14], eax
jl 0x44058f
lea ecx, [esp + 0x20]
mov byte [esp + 0x348], 2
call sub.MFC42.DLL_CStringArray::CStringArray
lea ecx, [esp + 0x10]
mov byte [esp + 0x348], 0
call sub.MFC42.DLL_CString::CString
lea ecx, [esp + 0x18]
mov dword [esp + 0x348], 0xffffffff
call sub.MFC42.DLL_CString::CString
pop ebx
mov ecx, dword [esp + 0x33c]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
add esp, 0x33c
ret 8