Function at 0x465720
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49065b
mov eax, dword fs:[0]
push eax
sub esp, 0xc20
mov eax, dword [0x4e32e0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0xc0c], ecx
mov ebx, dword [ebp + 8]
mov dword [ebp - 0xc08], 0
cmp dword [ecx + 0x24], 0
je 0x465779
cmp byte [ebp + 0xc], 0
jne 0x465774
xor al, al
jmp 0x465e2d
call fcn.00466010
push 0x103
lea eax, [ebp - 0x217]
mov byte [ebp - 0x218], 0
push 0
push eax
call fcn.00467be0
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x4657c9
push 0x4dde80
lea eax, [ebp - 0xc0c]
mov dword [ebp - 0xc0c], str.GetModuleFileName_failed__n
push eax
call fcn.0046710d
lea eax, [ebp - 0x218]
push 0x5c
push eax
call fcn.00473450
push 0x103
push 0
mov byte [eax], 0
lea eax, [ebp - 0x113]
push eax
mov byte [ebp - 0x114], 0
call fcn.00467be0
lea edx, [ebp - 0x218]
add esp, 0x14
mov esi, edx
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x465800
lea edi, [ebp - 0x114]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x465810
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x114]
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x465830
mov ax, word [0x4c3138]
mov esi, ebx
mov word [edi], ax
mov al, byte [ebx]
inc ebx
test al, al
jne 0x465845
lea edi, [ebp - 0x114]
sub ebx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x465855
mov ecx, ebx
lea eax, [ebp - 0xc2c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push eax
call dword [sym.imp.icuuc48.dll_public:_static_class_icu_48::Locale_const____cdecl_icu_48::Locale::getChinese_void_]
push eax
call dword [sym.imp.icuuc48.dll_public:_static_void___cdecl_icu_48::Locale::setDefault_class_icu_48::Locale_const___enum_UErrorCode__]
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp - 0x114]
add esp, 8
push eax
push 0x400
lea eax, [ebp - 0xa18]
push eax
push 0x4c313c
push str.locale
push str.locale
call edi
push 0x104
call fcn.0046478c
lea edx, [ebp - 0xa18]
mov esi, eax
mov ecx, edx
add esp, 4
sub esi, ecx
mov cl, byte [edx]
lea edx, [edx + 1]
mov byte [edx + esi - 1], cl
test cl, cl
jne 0x4658c5
mov ebx, dword [ebp - 0xc0c]
mov dword [ebx + 8], eax
lea eax, [ebp - 0x114]
push eax
push 0x400
lea eax, [ebp - 0x618]
push eax
lea eax, [ebp - 0x218]
push eax
push str.path
push str.locale
call edi
push 0x104
call fcn.0046478c
lea edx, [ebp - 0x618]
mov esi, eax
mov ecx, edx
add esp, 4
sub esi, ecx
lea ebx, [ebx]
mov cl, byte [edx]
lea edx, [edx + 1]
mov byte [edx + esi - 1], cl
test cl, cl
jne 0x465920
mov dword [ebx + 4], eax
lea eax, [ebp - 0x114]
push eax
push 0
push 0x4b12a8
push str.locale
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [ebx + 0x20], eax
test eax, eax
je 0x4659d1
push dword [ebx + 4]
lea ecx, [ebp - 0xa98]
call fcn.00417540
push str._res.log
push eax
lea eax, [ebp - 0xa60]
mov dword [ebp - 4], 0
push eax
call fcn.004609e0
add esp, 0xc
cmp dword [ebp - 0xa84], 0x10
jb 0x465995
push dword [ebp - 0xa98]
call fcn.004664c4
add esp, 4
cmp dword [ebp - 0xa4c], 0x10
lea eax, [ebp - 0xa60]
push 0x4c2f54
cmovae eax, dword [ebp - 0xa60]
push eax
call fcn.00468c8e
add esp, 8
mov dword [ebx + 0x28], eax
cmp dword [ebp - 0xa4c], 0x10
jb 0x4659d1
push dword [ebp - 0xa60]
call fcn.004664c4
add esp, 4
lea eax, [ebp - 0xc04]
mov dword [ebp - 0xc04], 0
push eax
push 0
call sub.icuuc48.dll_ucnv_open_48
mov dword [ebx + 0x18], eax
add esp, 8
mov eax, dword [ebp - 0xc04]
test eax, eax
jle 0x465a22
push 0
push 0
cmp eax, 7
jne 0x465a09
push str.Memory_allocation_error
jmp 0x465a1a
cmp eax, 4
jne 0x465a15
push str.The_requested_file_cannot_be_found
jmp 0x465a1a
push str.Other_error_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push dword [ebx + 0x18]
mov dword [ebp - 0xc04], 0
call sub.icuuc48.dll_ucnv_getMaxCharSize_48
movsx eax, al
push 0xc
mov dword [ebx + 0x1c], eax
call dword [sym.imp.icuuc48.dll_public:_static_void____cdecl_icu_48::UMemory::operator_new_unsigned_int_]
mov esi, eax
add esp, 8
mov dword [ebp - 0xc18], esi
mov dword [ebp - 4], 1
test esi, esi
je 0x465a9c
push 0
push 0
push 0
push dword [ebx + 8]
lea ecx, [ebp - 0xc00]
call dword [sym.imp.icuuc48.dll_public:_void___thiscall_icu_48::Locale::constructor_char_const___char_const___char_const___char_const__]
lea eax, [ebp - 0xc04]
mov dword [ebp - 0xc08], 1
push eax
lea eax, [ebp - 0xc00]
mov byte [ebp - 4], 2
push eax
push dword [ebx + 4]
mov ecx, esi
call dword [sym.imp.icuuc48.dll_public:_void___thiscall_icu_48::ResourceBundle::constructor_char_const___class_icu_48::Locale_const___enum_UErrorCode__]
mov dword [esi], vtable.icu_48::ResourceBundle.0
jmp 0x465a9e
xor esi, esi
test byte [ebp - 0xc08], 1
mov dword [ebx + 0x14], esi
mov dword [ebp - 4], 0xffffffff
je 0x465abd
lea ecx, [ebp - 0xc00]
call dword [sym.imp.icuuc48.dll_public_virtual:_void___thiscall_icu_48::Locale::destructor_void_]
mov ecx, dword [ebx + 0x14]
call dword [sym.imp.icuuc48.dll_public:_void___thiscall_icu_48::ResourceBundle::resetIterator_void_]
mov ecx, dword [ebx + 0x14]
call dword [sym.imp.icuuc48.dll_public:_signed_char___thiscall_icu_48::ResourceBundle::hasNext_void_const]
test al, al
je 0x465e24
lea eax, [ebx + 0xc]
mov dword [ebp - 0xc08], eax
mov ecx, dword [ebx + 0x14]
lea eax, [ebp - 0xc04]
push eax
lea eax, [ebp - 0xc28]
mov dword [ebp - 0xc04], 0
push eax
call dword [sym.imp.icuuc48.dll_public:_class_icu_48::ResourceBundle___thiscall_icu_48::ResourceBundle::getNext_enum_UErrorCode__]
lea ecx, [ebp - 0xc28]
mov dword [ebp - 4], 4
call dword [sym.imp.icuuc48.dll_public:_char_const____thiscall_icu_48::ResourceBundle::getKey_void_const]
mov dword [ebp - 0xc14], eax
lea ecx, [ebp - 0xc28]
lea eax, [ebp - 0xc04]
push eax
lea eax, [ebp - 0xa80]
push eax
call dword [sym.imp.icuuc48.dll_public:_class_icu_48::UnicodeString___thiscall_icu_48::ResourceBundle::getString_enum_UErrorCode__]
lea ecx, [ebp - 0xa80]
mov byte [ebp - 4], 5
call dword [sym.imp.icuuc48.dll_public:_wchar_t_const____thiscall_icu_48::UnicodeString::getTerminatedBuffer_void_]
mov cl, byte [ebp - 0xa62]
mov edi, eax
movsx esi, cl
test cl, cl
jns 0x465b59
mov esi, dword [ebp - 0xa74]
inc esi
imul esi, dword [ebx + 0x1c]
push esi
call fcn.0046478c
mov dword [ebp - 0xc1c], eax
lea eax, [ebp - 0xc04]
push eax
push 0xffffffffffffffff
push edi
push esi
mov esi, dword [ebp - 0xc1c]
push esi
push dword [ebx + 0x18]
mov dword [ebp - 0xc04], 0
call sub.icuuc48.dll_ucnv_fromUChars_48
add esp, 0x1c
mov dword [ebp - 0xa1c], 0xf
cmp byte [esi], 0
mov dword [ebp - 0xa20], 0
mov byte [ebp - 0xa30], 0
jne 0x465bb5
xor ecx, ecx
jmp 0x465bc9
mov ecx, esi
lea edx, [ecx + 1]
lea ebx, [ebx]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x465bc0
sub ecx, edx
push ecx
push esi
lea ecx, [ebp - 0xa30]
call fcn.0041ee80
mov ebx, dword [ebp - 0xc14]
mov byte [ebp - 4], 6
mov dword [ebp - 0xa34], 0xf
mov dword [ebp - 0xa38], 0
cmp byte [ebx], 0
mov byte [ebp - 0xa48], 0
jne 0x465c04
xor ecx, ecx
jmp 0x465c19
mov ecx, ebx
lea edx, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x465c10
sub ecx, edx
push ecx
push ebx
lea ecx, [ebp - 0xa48]
call fcn.0041ee80
mov ebx, dword [ebp - 0xc08]
lea eax, [ebp - 0xa48]
push eax
mov ecx, ebx
mov byte [ebp - 4], 7
call fcn.00423c20
mov esi, eax
cmp esi, dword [ebx]
je 0x465ca1
cmp dword [esi + 0x24], 0x10
lea edx, [esi + 0x10]
mov edi, dword [edx + 0x10]
jb 0x465c52
mov edx, dword [edx]
cmp dword [ebp - 0xa34], 0x10
lea ecx, [ebp - 0xa48]
mov ebx, dword [ebp - 0xa38]
mov eax, edi
cmovae ecx, dword [ebp - 0xa48]
cmp ebx, edi
cmovb eax, ebx
push eax
push edx
push ecx
call fcn.00423e20
add esp, 0xc
test eax, eax
jne 0x465c94
cmp ebx, edi
jae 0x465c8b
or eax, 0xffffffff
jmp 0x465c92
xor eax, eax
cmp ebx, edi
setne al
test eax, eax
sets al
test al, al
je 0x465ce1
mov ebx, dword [ebp - 0xc08]
lea eax, [ebp - 0xa48]
mov ecx, ebx
mov dword [ebp - 0xc14], eax
lea eax, [ebp - 0xc0d]
push eax
lea eax, [ebp - 0xc14]
push eax
push 0x4ea753
call fcn.004203a0
push eax
add eax, 0x10
mov ecx, ebx
push eax
push esi
lea eax, [ebp - 0xc18]
push eax
call fcn.00420600
mov esi, dword [ebp - 0xc18]
add esi, 0x28
lea eax, [ebp - 0xa30]
cmp esi, eax
je 0x465d77
cmp dword [esi + 0x14], 0x10
jb 0x465d02
push dword [esi]
call fcn.004664c4
add esp, 4
mov dword [esi + 0x14], 0xf
mov dword [esi + 0x10], 0
mov byte [esi], 0
cmp dword [ebp - 0xa1c], 0x10
jae 0x465d38
mov eax, dword [ebp - 0xa20]
inc eax
je 0x465d4a
push eax
lea eax, [ebp - 0xa30]
push eax
push esi
call fcn.00466610
add esp, 0xc
jmp 0x465d4a
mov eax, dword [ebp - 0xa30]
mov dword [esi], eax
mov dword [ebp - 0xa30], 0
mov eax, dword [ebp - 0xa20]
mov dword [esi + 0x10], eax
mov eax, dword [ebp - 0xa1c]
mov dword [esi + 0x14], eax
mov dword [ebp - 0xa1c], 0xf
mov dword [ebp - 0xa20], 0
mov byte [ebp - 0xa30], 0
cmp dword [ebp - 0xa34], 0x10
jb 0x465d8e
push dword [ebp - 0xa48]
call fcn.004664c4
add esp, 4
cmp dword [ebp - 0xa1c], 0x10
mov dword [ebp - 0xa34], 0xf
mov dword [ebp - 0xa38], 0
mov byte [ebp - 0xa48], 0
jb 0x465dc0
push dword [ebp - 0xa30]
call fcn.004664c4
add esp, 4
mov eax, dword [ebp - 0xc1c]
push eax
mov dword [ebp - 0xa1c], 0xf
mov dword [ebp - 0xa20], 0
mov byte [ebp - 0xa30], 0
call fcn.004670d3
add esp, 4
mov byte [ebp - 4], 4
lea ecx, [ebp - 0xa80]
call dword [sym.imp.icuuc48.dll_public_virtual:_void___thiscall_icu_48::UnicodeString::destructor_void_]
lea ecx, [ebp - 0xc28]
mov dword [ebp - 4], 0xffffffff
call dword [sym.imp.icuuc48.dll_public_virtual:_void___thiscall_icu_48::ResourceBundle::destructor_void_]
mov ebx, dword [ebp - 0xc0c]
mov ecx, dword [ebx + 0x14]
call dword [sym.imp.icuuc48.dll_public:_signed_char___thiscall_icu_48::ResourceBundle::hasNext_void_const]
test al, al
jne 0x465ae0
mov dword [ebx + 0x24], 1
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004670fe
mov esp, ebp
pop ebp
ret 8