Function at 0x514750
Capabilities:
Get file size
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5db354
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x43c
mov eax, dword [0x644904]
push ebx
push esi
mov esi, dword [ebp + 8]
xor ebx, ebx
cmp esi, ebx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x434], ecx
jne 0x51479c
push 0x60f014
push 0x24
push 0x60eff8
call dword [sym.imp.tengine.dll_void___cdecl_tThrowAssertException_char_const___int__char_const__]
add esp, 0xc
push ebx
push 0x80
push 3
push ebx
push 3
push 0x80000000
push esi
call dword [sym.imp.kernel32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
je 0x51491b
push edi
lea eax, [ebp - 0x448]
push eax
push esi
call dword [sym.imp.kernel32.dll_GetFileSize]
push esi
mov edi, eax
call dword [sym.imp.kernel32.dll_CloseHandle]
cmp edi, ebx
je 0x51491a
lea ecx, [edi + 0x20]
push ecx
call fcn.005c8858
mov esi, eax
add esp, 4
cmp esi, ebx
je 0x51491a
mov edx, dword [ebp + 8]
push edx
push edi
push esi
push 0x5f1898
call dword [sym.imp.kernel32.dll_GetPrivateProfileSectionA]
mov dword [ebp - 0x440], ebx
mov dword [ebp - 0x43c], ebx
mov dword [ebp - 0x438], ebx
lea eax, [ebp - 0x444]
push eax
push edi
push esi
mov dword [ebp - 4], ebx
call fcn.00514520
push esi
call sub.msvcr71.dll_void___cdecl_operator_delete___void__
mov edi, dword [ebp - 0x440]
add esp, 0x10
mov dword [ebp - 0x430], ebx
mov esi, edi
nop
cmp edi, ebx
jne 0x514848
xor eax, eax
jmp 0x514863
mov ecx, dword [ebp - 0x43c]
sub ecx, edi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp - 0x430], eax
jge 0x514908
push ebx
push 0x60eff4
mov ecx, esi
call dword [sym.imp.msvcp71.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_first_of_char_const___unsigned_int_const]
mov ecx, dword [sym.imp.msvcp71.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
cmp eax, dword [ecx]
je 0x5148fa
push eax
push ebx
lea edx, [ebp - 0x2c]
push edx
mov ecx, esi
call dword [sym.imp.msvcp71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::substr_unsigned_int__unsigned_int_]
mov eax, dword [ebp + 8]
push eax
push 0x400
lea ecx, [ebp - 0x42c]
push ecx
push 0x5eb0c0
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 1
call dword [sym.imp.msvcp71.dll_public:_char____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Myptr_void_]
push eax
push 0x5f1898
call dword [sym.imp.kernel32.dll_GetPrivateProfileStringA]
mov edx, dword [ebp - 0x434]
mov edi, dword [edx]
push 1
push ebx
lea eax, [ebp - 0x42c]
push eax
lea ecx, [ebp - 0x2c]
call dword [sym.imp.msvcp71.dll_public:_char____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Myptr_void_]
mov ecx, dword [ebp - 0x434]
push eax
call dword [edi + 0x3c]
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], bl
call dword [sym.imp.msvcp71.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov edi, dword [ebp - 0x440]
inc dword [ebp - 0x430]
add esi, 0x1c
jmp 0x514840
lea ecx, [ebp - 0x444]
mov dword [ebp - 4], 0xffffffff
call fcn.0040c220
pop edi
mov ecx, dword [ebp - 0xc]
pop esi
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
pop ebx
call fcn.005c8895
mov esp, ebp
pop ebp
ret 8