Function at 0x440430
Capabilities:
Read .ini file

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4b5e4d
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 0x440846
cmp ecx, edx
jl 0x440465
xor eax, eax
jmp 0x44046b
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + ecx*4]
cmp dword [eax], 0
je 0x44047e
mov esi, dword [esp + 0x34c]
mov edi, dword [eax + 4]
cmp edi, esi
je 0x440488
inc ecx
cmp ecx, edx
jl 0x440465
jmp 0x440846
test eax, eax
je 0x440846
push esi
mov ecx, ebp
call fcn.00440980
test eax, eax
jne 0x440846
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_5
lea ecx, [esp + 0x10]
mov dword [esp + 0x344], 0
push ecx
call fcn.00440320
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.00455c40
add esp, 4
test eax, eax
je 0x440656
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::CString_5
lea edx, [esp + 0x10]
mov byte [esp + 0x344], 2
push edx
call fcn.00440320
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.00455c40
add esp, 4
test eax, eax
je 0x440645
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 0x440645
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 0x4db948
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 0x4db948
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 0x4db948
push str.GameID
push str.Settings
call esi
mov al, byte [esp + 0x30]
test al, al
jne 0x44066f
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 0x440846
push ebx
lea ecx, [esp + 0x20]
call fcn.004552f0
lea ecx, [esp + 0x34]
mov byte [esp + 0x348], 4
test ecx, ecx
lea esi, [esp + 0x34]
je 0x440735
mov al, byte [esp + 0x34]
test al, al
je 0x440735
lea edi, [esp + 0x34]
mov bl, 6
mov al, byte [esi]
test al, al
je 0x4406ff
cmp al, 0x2c
jne 0x4406ea
cmp esi, edi
jbe 0x4406e7
mov edx, esi
lea ecx, [esp + 0x1c]
sub edx, edi
push edx
push edi
call fcn.00455272
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 0x4406fc
add esi, 2
jmp 0x4406a3
inc esi
jmp 0x4406a3
cmp esi, edi
jbe 0x440735
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 0x44080f
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 0x4407fa
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 0x4407ea
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 0x4407fa
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 0x44074f
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