Function at 0x4401f0
Capabilities:
Read .ini file

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4b5dfd
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 0x440606
cmp ecx, edx
jl 0x440225
xor eax, eax
jmp 0x44022b
mov eax, dword [ebp + 0x28]
mov eax, dword [eax + ecx*4]
cmp dword [eax], 0
je 0x44023e
mov esi, dword [esp + 0x34c]
mov edi, dword [eax + 4]
cmp edi, esi
je 0x440248
inc ecx
cmp ecx, edx
jl 0x440225
jmp 0x440606
test eax, eax
je 0x440606
push esi
mov ecx, ebp
call fcn.00440740
test eax, eax
jne 0x440606
lea ecx, [esp + 0x14]
call sub.MFC42.DLL_CString::CString_5
lea ecx, [esp + 0x10]
mov dword [esp + 0x344], 0
push ecx
call fcn.004400e0
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.00455b60
add esp, 4
test eax, eax
je 0x440416
lea ecx, [esp + 0xc]
call sub.MFC42.DLL_CString::CString_5
lea edx, [esp + 0x10]
mov byte [esp + 0x344], 2
push edx
call fcn.004400e0
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.00455b60
add esp, 4
test eax, eax
je 0x440405
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 0x440405
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 0x4db968
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 0x4db968
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 0x4db968
push str.GameID
push str.Settings
call esi
mov al, byte [esp + 0x30]
test al, al
jne 0x44042f
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 0x440606
push ebx
lea ecx, [esp + 0x20]
call fcn.00455210
lea ecx, [esp + 0x34]
mov byte [esp + 0x348], 4
test ecx, ecx
lea esi, [esp + 0x34]
je 0x4404f5
mov al, byte [esp + 0x34]
test al, al
je 0x4404f5
lea edi, [esp + 0x34]
mov bl, 6
mov al, byte [esi]
test al, al
je 0x4404bf
cmp al, 0x2c
jne 0x4404aa
cmp esi, edi
jbe 0x4404a7
mov edx, esi
lea ecx, [esp + 0x1c]
sub edx, edi
push edx
push edi
call fcn.00455192
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 0x4404bc
add esi, 2
jmp 0x440463
inc esi
jmp 0x440463
cmp esi, edi
jbe 0x4404f5
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 0x4405cf
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 0x4405ba
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 0x4405aa
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 0x4405ba
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 0x44050f
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