Function at 0x40f730
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x466b72
mov eax, dword fs:[0]
push eax
sub esp, 0x534
mov eax, dword [0x49001c]
xor eax, esp
mov dword [esp + 0x530], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x49001c]
xor eax, esp
push eax
lea eax, [esp + 0x548]
mov dword fs:[0], eax
mov esi, ecx
mov ebp, dword [esp + 0x558]
mov eax, dword [ebp + 0x224]
test eax, eax
mov edi, edx
mov dword [esp + 0x18], edi
jne 0x40f788
xor ecx, ecx
jmp 0x40f793
mov ecx, dword [ebp + 0x228]
sub ecx, eax
sar ecx, 2
add ecx, 0xffffffff
cmp ecx, esi
jl 0x40f975
mov ecx, eax
test ecx, ecx
je 0x40f7b3
mov eax, dword [ebp + 0x228]
sub eax, ecx
sar eax, 2
cmp esi, eax
jb 0x40f7b9
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov eax, dword [ebp + 0x224]
mov eax, dword [eax + esi*4]
mov ecx, dword [eax]
test ecx, ecx
jne 0x40fd86
cmp byte [esp + 0x55c], cl
mov ebx, dword [eax + 4]
je 0x40fda2
push ebx
call fcn.00438ba0
test al, al
je 0x40f9c6
test edi, edi
je 0x40f7f1
mov byte [edi], 0
mov eax, ebp
call fcn.00411370
mov esi, dword [sym.imp.K8UIRender.dll_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_GameMgr::LoadStr_unsigned_int_]
lea ecx, [esp + 0x38]
push 0x3f9
push ecx
call esi
mov edi, eax
lea edx, [esp + 0x60]
push 0x4b4
push edx
mov dword [esp + 0x560], 0
call esi
add esp, 0x10
push edi
push eax
push 2
mov byte [esp + 0x55c], 1
mov ecx, dword [ebx + 0x25c]
push 3
lea eax, [esp + 0xf4]
push eax
mov edi, ecx
call fcn.0042e930
lea ecx, [esp + 0x58]
mov byte [esp + 0x550], 3
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x38]
mov byte [esp + 0x550], 4
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x1c]
push 0x4c0
push ecx
call esi
add esp, 8
push eax
lea ecx, [esp + 0xe8]
mov byte [esp + 0x554], 5
call fcn.0042f0c0
lea ecx, [esp + 0x1c]
mov byte [esp + 0x550], 4
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea edx, [esp + 0x1c]
push 0x4c1
push edx
call esi
add esp, 8
push eax
lea ecx, [esp + 0xe8]
mov byte [esp + 0x554], 6
call fcn.0042f0f0
lea ecx, [esp + 0x1c]
mov byte [esp + 0x550], 4
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov esi, dword [sym.imp.K8UIRender.dll_public:_class_GameMgr::GMControl____thiscall_GameMgr::GMPaintManager::FindControl_unsigned_int_const]
push 0x67
lea ecx, [esp + 0x10c]
call esi
test eax, eax
mov edi, dword [sym.imp.K8UIRender.dll_public:_void___thiscall_GameMgr::GMControl::SetHtmlText_bool_]
je 0x40f8fa
push 1
mov ecx, eax
call edi
call fcn.00428720
mov edx, dword [eax]
mov edx, dword [edx]
push 0
lea ecx, [esp + 0xe8]
push ecx
mov ecx, eax
call edx
cmp dword [esp + 0x2f8], 1
push 0x67
lea ecx, [esp + 0x10c]
jne 0x40f97c
call esi
test eax, eax
je 0x40f930
push 0
mov ecx, eax
call edi
xor cl, cl
mov esi, ebp
call fcn.00411aa0
mov ecx, ebx
call fcn.00438d20
mov cl, 1
call fcn.00411aa0
mov dword [esp + 0x550], 0xffffffff
lea ecx, [esp + 0xe4]
mov dword [esp + 0xe4], vtable.GameMgr::GMMessageDlg.0
mov dword [esp + method.GameMgr::GMMessageDlg.1.virtual_0], vtable.GameMgr::GMMessageDlg.1.0
call dword [sym.imp.K8UIRender.dll_public:_void___thiscall_GameMgr::GMWindowImplBase::destructor_void_]
xor al, al
jmp 0x40fda4
call esi
test eax, eax
je 0x40f988
push 0
mov ecx, eax
call edi
mov eax, dword [esp + 0x18]
test eax, eax
je 0x40f993
mov byte [eax], 1
mov dword [esp + 0x550], 0xffffffff
lea ecx, [esp + 0xe4]
mov dword [esp + 0xe4], vtable.GameMgr::GMMessageDlg.0
mov dword [esp + method.GameMgr::GMMessageDlg.1.virtual_0], vtable.GameMgr::GMMessageDlg.1.0
call dword [sym.imp.K8UIRender.dll_public:_void___thiscall_GameMgr::GMWindowImplBase::destructor_void_]
jmp 0x40fda2
push ebx
call fcn.00439440
test al, al
je 0x40fda2
test edi, edi
je 0x40f9db
mov byte [edi], 0
lea esi, [esp + 0xc8]
mov eax, ebx
call fcn.00439170
sub esp, 0x1c
mov eax, esp
mov ecx, esi
mov dword [esp + 0x70], esp
push ecx
push eax
mov dword [esp + 0x574], 7
call dword [sym.imp.K8Common.dll_public:_static_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_GameMgr::GMStringConvert::GMStringToGMStringA_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const__]
lea edx, [esp + 0xd0]
add esp, 8
push edx
call dword [sym.imp.K8Common.dll_public:_static_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_GameMgr::GMMD5Utils::CalcuteMD5String_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___]
add esp, 0x20
lea ecx, [esp + 0x38]
mov byte [esp + 0x550], 8
call fcn.004365b0
mov edi, 8
cmp dword [eax + 0x18], edi
jb 0x40fa3b
mov eax, dword [eax + 4]
jmp 0x40fa3e
add eax, 4
cmp dword [esp + 0xc4], edi
mov ecx, dword [esp + 0xb0]
jae 0x40fa55
lea ecx, [esp + 0xb0]
push eax
push 0
push str.prompt_save
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
lea ecx, [esp + 0x38]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x38]
call fcn.004365b0
cmp dword [eax + 0x18], edi
jb 0x40fa81
mov eax, dword [eax + 4]
jmp 0x40fa84
add eax, 4
cmp dword [esp + 0xc4], edi
mov ecx, dword [esp + 0xb0]
jae 0x40fa9b
lea ecx, [esp + 0xb0]
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push eax
push 0x46b610
push str.prompt_save
push ecx
call esi
lea ecx, [esp + 0x38]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x38]
call fcn.004365b0
cmp dword [eax + 0x18], edi
jb 0x40facc
mov ecx, dword [eax + 4]
jmp 0x40facf
lea ecx, [eax + 4]
cmp dword [esp + 0xe0], edi
mov edx, dword [esp + 0xcc]
jae 0x40fae6
lea edx, [esp + 0xcc]
cmp dword [esp + 0xc4], edi
mov eax, dword [esp + 0xb0]
jae 0x40fafd
lea eax, [esp + 0xb0]
push ecx
push edx
push 0x46b684
push eax
call esi
lea ecx, [esp + 0x38]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov eax, ebp
call fcn.00411370
mov esi, dword [sym.imp.K8UIRender.dll_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_GameMgr::LoadStr_unsigned_int_]
lea eax, [esp + 0x58]
push 0x4bf
push eax
call esi
mov edi, eax
lea ecx, [esp + 0x40]
push 0x4be
push ecx
mov byte [esp + 0x560], 9
call esi
add esp, 0x10
push edi
push eax
push 2
mov byte [esp + 0x55c], 0xa
mov ecx, dword [ebx + 0x25c]
push 3
lea edx, [esp + 0x324]
push edx
mov edi, ecx
call fcn.0042e930
lea ecx, [esp + 0x38]
mov byte [esp + 0x550], 0xc
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x58]
mov byte [esp + 0x550], 0xd
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea eax, [esp + 0x1c]
push 0x4c0
push eax
call esi
add esp, 8
push eax
lea ecx, [esp + 0x318]
mov byte [esp + 0x554], 0xe
call fcn.0042f0c0
lea ecx, [esp + 0x1c]
mov byte [esp + 0x550], 0xd
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x1c]
push 0x4c1
push ecx
call esi
add esp, 8
push eax
lea ecx, [esp + 0x318]
mov byte [esp + 0x554], 0xf
call fcn.0042f0f0
lea ecx, [esp + 0x1c]
mov byte [esp + 0x550], 0xd
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
call fcn.00428720
mov edx, dword [eax]
mov edx, dword [edx]
push 0
lea ecx, [esp + 0x318]
push ecx
mov ecx, eax
call edx
cmp dword [esp + 0x528], 1
jne 0x40fc86
mov eax, dword [ebp]
mov edx, dword [eax + 0xd4]
push 0
push ebx
mov ecx, ebp
call edx
mov byte [esp + 0x550], 8
lea ecx, [esp + 0x314]
mov dword [esp + method.GameMgr::GMAddUserDlg.virtual_0], vtable.GameMgr::GMMessageDlg.0
mov dword [esp + method.GameMgr::GMMessageDlg.1.virtual_0], vtable.GameMgr::GMMessageDlg.1.0
call dword [sym.imp.K8UIRender.dll_public:_void___thiscall_GameMgr::GMWindowImplBase::destructor_void_]
lea ecx, [esp + 0xac]
mov byte [esp + 0x550], 7
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0xc8]
mov dword [esp + 0x550], 0xffffffff
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
xor al, al
jmp 0x40fda4
push 0x46a2ac
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
lea esi, [esp + 0x90]
mov eax, ebx
mov byte [esp + 0x550], 0x10
call fcn.00439170
mov edi, eax
push 0
push ebx
lea esi, [esp + 0x7c]
mov byte [esp + 0x558], 0x11
call fcn.004391b0
mov esi, eax
lea eax, [esp + 0x1c]
push eax
mov byte [esp + 0x554], 0x12
mov ebx, dword [ebx + 0x234]
push edi
push ebx
push 2
call fcn.00428720
mov edx, esi
mov ecx, eax
call fcn.00429ac0
lea ecx, [esp + 0x74]
mov byte [esp + 0x550], 0x11
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x90]
mov byte [esp + 0x550], 0x10
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x1c]
mov byte [esp + 0x550], 0xd
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov eax, dword [esp + 0x18]
test eax, eax
je 0x40fd2c
mov byte [eax], 1
mov byte [esp + 0x550], 8
lea ecx, [esp + 0x314]
mov dword [esp + method.GameMgr::GMAddUserDlg.virtual_0], vtable.GameMgr::GMMessageDlg.0
mov dword [esp + method.GameMgr::GMMessageDlg.1.virtual_0], vtable.GameMgr::GMMessageDlg.1.0
call dword [sym.imp.K8UIRender.dll_public:_void___thiscall_GameMgr::GMWindowImplBase::destructor_void_]
lea ecx, [esp + 0xac]
mov byte [esp + 0x550], 7
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0xc8]
mov dword [esp + 0x550], 0xffffffff
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
jmp 0x40fda2
cmp ecx, 1
jne 0x40fda2
mov ecx, dword [ebp + 0x230]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
mov dword [ebp + 0x230], 0
mov al, 1
mov ecx, dword [esp + 0x548]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x530]
xor ecx, esp
call fcn.0045d098
add esp, 0x540
ret 8