Function at 0x40a2c1
Capabilities:
Get file size
Read file on windows

Disassembly:
push 0x3c
mov eax, 0x46453a
call fcn.0046359a
lea eax, [ebp - 0x48]
push eax
mov edi, ecx
call fcn.0045d890
mov dword [esp], str.vi.dat
push eax
lea eax, [ebp - 0x44]
xor esi, esi
push eax
mov dword [ebp - 4], esi
call fcn.00409f29
add esp, 0xc
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 2
call dword [sym.imp.MFC80U.DLL_Ordinal_577]
push esi
push esi
push 3
push esi
push 1
push 0x80000000
lea ecx, [ebp - 0x44]
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x3c], esi
call dword [sym.imp.MFC80U.DLL_Ordinal_870]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x40a373
lea eax, [ebp - 0x34]
push eax
push ebx
mov dword [ebp - 0x34], esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
cmp dword [ebp - 0x34], esi
mov dword [ebp - 0x38], eax
jne 0x40a36c
cmp eax, 0x1000
jae 0x40a36c
push eax
call sub.MFC80U.DLL_Ordinal_265
push dword [ebp - 0x38]
mov dword [ebp - 0x30], eax
push esi
push eax
call sub.MSVCR80.dll_memset
add esp, 0x10
push esi
lea eax, [ebp - 0x3c]
push eax
push dword [ebp - 0x38]
push dword [ebp - 0x30]
push ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_void_]
push dword [ebp - 0x3c]
lea eax, [ebp - 0x2c]
push dword [ebp - 0x30]
mov ecx, edi
push eax
mov byte [ebp - 4], 3
call fcn.00409d30
cmp dword [ebp - 0x18], 0x10
jb 0x40a4e7
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP80.dll_public:_char_const____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::c_str_void_const]
mov ebx, dword [ebp - 0x18]
mov esi, eax
push 0xc
lea eax, [edi + 8]
push esi
push eax
call sub.MSVCR80.dll_memcpy
add esi, 0xc
movzx eax, word [esi]
movzx eax, ax
add esp, 0xc
inc esi
sub ebx, 0xe
lea ecx, [eax + 2]
inc esi
cmp ebx, ecx
mov dword [ebp - 0x30], eax
jb 0x40a512
shr eax, 1
push eax
push esi
lea ecx, [ebp - 0x34]
call dword [sym.imp.AuCommon.dll_public:_void___thiscall_CTXStringW::constructor_wchar_t_const___int_]
add esi, dword [ebp - 0x30]
sub ebx, dword [ebp - 0x30]
movzx eax, word [esi]
inc esi
inc esi
dec ebx
movzx eax, ax
dec ebx
cmp ebx, eax
mov byte [ebp - 4], 4
mov dword [ebp - 0x30], eax
jb 0x40a505
shr eax, 1
push eax
push esi
lea ecx, [ebp - 0x40]
call dword [sym.imp.AuCommon.dll_public:_void___thiscall_CTXStringW::constructor_wchar_t_const___int_]
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 5
call dword [sym.imp.AuCommon.dll_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const]
push eax
lea ecx, [edi + 0x14]
call dword [sym.imp.MFC80U.DLL_Ordinal_776]
lea ecx, [ebp - 0x34]
call dword [sym.imp.AuCommon.dll_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const]
push eax
lea ecx, [edi + 0x18]
call dword [sym.imp.MFC80U.DLL_Ordinal_776]
movzx edx, byte [edi + 8]
movzx ecx, byte [edi + 9]
imul edx, edx, 0x64
add esi, dword [ebp - 0x30]
sub ebx, dword [ebp - 0x30]
add ecx, edx
cmp ecx, 0xa0e
lea eax, [edi + 0x1c]
mov dword [eax], 0x10101
mov dword [edi + 0x20], 0x6400
jl 0x40a488
cmp ebx, 8
jb 0x40a488
push 4
push esi
push eax
call sub.MSVCR80.dll_memcpy
push 4
lea eax, [esi + 4]
push eax
lea eax, [edi + 0x20]
push eax
call sub.MSVCR80.dll_memcpy
add esp, 0x18
add esi, 8
sub ebx, 8
cmp ebx, 2
jb 0x40a4cc
movzx eax, word [esi]
inc esi
inc esi
dec ebx
movzx eax, ax
dec ebx
cmp ebx, eax
jb 0x40a4cc
shr eax, 1
push eax
push esi
lea ecx, [ebp - 0x38]
call dword [sym.imp.AuCommon.dll_public:_void___thiscall_CTXStringW::constructor_wchar_t_const___int_]
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 6
call dword [sym.imp.AuCommon.dll_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const]
push eax
lea ecx, [edi + 0x24]
call dword [sym.imp.MFC80U.DLL_Ordinal_776]
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 5
call dword [sym.imp.AuCommon.dll_public:_void___thiscall_CTXStringW::destructor_void_]
mov esi, dword [sym.imp.AuCommon.dll_public:_void___thiscall_CTXStringW::destructor_void_]
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 4
call esi
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 3
call esi
xor esi, esi
inc esi
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 2
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x44]
call dword [sym.imp.MFC80U.DLL_Ordinal_577]
mov eax, esi
call fcn.0046361d
ret
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 3
call dword [sym.imp.AuCommon.dll_public:_void___thiscall_CTXStringW::destructor_void_]
xor esi, esi
jmp 0x40a4e7