Function at 0x402630
Capabilities:
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x42e6d8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x434
push ebx
push ebp
push esi
push edi
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x36]
mov word [esp + 0x34], 0
rep stosd dword es:[edi], eax
mov ebp, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0x103
stosw word es:[edi], ax
lea eax, [esp + 0x38]
push eax
push 0
call ebp
mov esi, dword [sym.imp.MSVCRT.dll_wcsrchr]
lea ecx, [esp + 0x34]
push 0x5c
push ecx
call esi
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x40269f
lea edx, [esp + 0x34]
push 0x2f
push edx
call esi
add esp, 8
mov ebx, eax
mov word [ebx], 0
mov ecx, 0x81
xor eax, eax
lea edi, [esp + 0x23e]
mov word [esp + 0x23c], 0
push 0x103
rep stosd dword es:[edi], eax
mov ecx, dword [0x43b60c]
stosw word es:[edi], ax
lea eax, [esp + 0x240]
push eax
push ecx
call ebp
mov edi, 2
lea edx, [esp + 0x23c]
push 0x5c
push edx
call esi
add esp, 8
test eax, eax
jne 0x4026fd
lea eax, [esp + 0x23c]
push 0x2f
push eax
call esi
add esp, 8
dec edi
mov word [eax], 0
jne 0x4026db
mov cl, byte [esp + 0x13]
push 0
mov byte [esp + 0x28], cl
lea ecx, [esp + 0x28]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
mov ebp, dword [sym.imp.MSVCRT.dll_wcslen]
lea edx, [esp + 0x34]
push edx
call ebp
add esp, 4
mov esi, eax
lea ecx, [esp + 0x24]
push 1
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x40275d
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x34]
push esi
push eax
push ecx
call fcn.00402d90
mov edx, dword [esp + 0x34]
mov dword [esp + 0x38], esi
add esp, 0xc
mov word [edx + esi*2], 0
push str.config.ini
mov dword [esp + 0x450], 0
call ebp
mov edx, dword [esp + 0x30]
mov esi, eax
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::npos]
add esp, 4
mov ecx, dword [eax]
sub ecx, edx
cmp ecx, esi
ja 0x40278b
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
test esi, esi
jbe 0x4027cc
mov edx, dword [esp + 0x2c]
push 0
lea ecx, [esp + 0x28]
lea edi, [edx + esi]
push edi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x4027cc
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
push esi
push str.config.ini
lea eax, [eax + ecx*2]
push eax
call fcn.00402d90
add esp, 0xc
lea ecx, [esp + 0x24]
push edi
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Eos_unsigned_int_]
mov eax, dword [esp + 0x28]
test eax, eax
jne 0x4027d9
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
push eax
push 0
push 0x439240
push 0x439230
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov ecx, eax
mov eax, 0x431bde83
mul ecx
mov esi, edx
mov eax, ecx
xor edx, edx
mov edi, 0xf4240
div edi
mov eax, 0xd1b71759
shr esi, 0x12
mul edx
mov edi, edx
mov eax, ecx
xor edx, edx
mov ecx, 0x2710
div ecx
lea ecx, [esp + 0x23c]
lea eax, [ebx + 2]
push ecx
xor ebx, ebx
push 0xffffffffffffffff
push ebx
push 0x804
push 1
shr edi, 0xd
push 1
push edx
push edi
push esi
lea edx, [esp + 0x58]
push eax
push edx
push eax
push str.QQGame
call fcn.0042a9f0
mov al, byte [esp + 0x47]
add esp, 0x34
lea ecx, [esp + 0x14]
mov byte [esp + 0x14], al
push ebx
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
lea ecx, [esp + 0x23c]
push ecx
call ebp
add esp, 4
mov esi, eax
lea ecx, [esp + 0x14]
push 1
push esi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x4028a1
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x23c]
push esi
push edx
push eax
call fcn.00402d90
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], esi
add esp, 0xc
mov word [ecx + esi*2], bx
push str...configDynamicInfo.ini
mov byte [esp + 0x450], 1
call ebp
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::npos]
mov esi, eax
add esp, 4
mov eax, dword [edx]
mov edx, dword [esp + 0x1c]
sub eax, edx
cmp eax, esi
ja 0x4028cd
call dword [sym.imp.MSVCP60.dll_void___cdecl_std::_Xlen_void_]
cmp esi, ebx
jbe 0x40290d
mov ecx, dword [esp + 0x1c]
push ebx
lea edi, [ecx + esi]
lea ecx, [esp + 0x18]
push edi
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Grow_unsigned_int__bool_]
test al, al
je 0x40290d
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
push esi
push str...configDynamicInfo.ini
lea ecx, [eax + edx*2]
push ecx
call fcn.00402d90
add esp, 0xc
lea ecx, [esp + 0x14]
push edi
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Eos_unsigned_int_]
mov eax, dword [esp + 0x18]
cmp eax, ebx
jne 0x40291a
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
push eax
push ebx
push str.LastQQUin
push 0x439230
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
cmp eax, ebx
jne 0x402935
mov eax, 0x2710
push ebx
push eax
call fcn.0042b0e0
mov ecx, dword [esp + 0x20]
add esp, 8
cmp ecx, ebx
je 0x402965
mov al, byte [ecx - 1]
test al, al
je 0x402959
cmp al, 0xff
je 0x402959
dec al
mov byte [ecx - 1], al
jmp 0x402965
add ecx, 0xfffffffe
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x28]
pop edi
pop esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ebx
pop ebp
cmp ecx, ebx
pop ebx
je 0x4029ae
mov al, byte [ecx - 1]
test al, al
je 0x4029a2
cmp al, 0xff
je 0x4029a2
dec al
mov byte [ecx - 1], al
mov ecx, dword [esp + 0x434]
mov dword fs:[0], ecx
add esp, 0x440
ret
add ecx, 0xfffffffe
push ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov ecx, dword [esp + 0x434]
mov dword fs:[0], ecx
add esp, 0x440
ret