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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d930d
mov eax, dword fs:[0]
push eax
sub esp, 0x30
mov eax, dword [0x516180]
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 ebx, ecx
mov eax, dword [ebx]
mov esi, dword [ebp + 8]
test eax, eax
je 0x4164bf
push eax
call fcn.004b5dbd
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x4164cf
push eax
call fcn.004b5dbd
add esp, 4
push 0x516cd4
lea ecx, [ebp - 0x28]
mov dword [ebx], 0
mov dword [ebx + 4], 0
call fcn.004032c0
push esi
mov dword [ebp - 4], 0
call dword [sym.imp.SHLWAPI.dll_PathIsRelativeW]
mov edx, esi
lea edi, [edx + 2]
nop dword [eax]
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x416500
sub edx, edi
lea ecx, [ebp - 0x28]
sar edx, 1
push edx
push esi
test eax, eax
je 0x41651f
call fcn.00403140
jmp 0x416524
call fcn.00402b10
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
push 0
cmovae eax, dword [ebp - 0x28]
push 0x80
push 3
push 0
push 1
push SysReAllocString
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x30], eax
cmp eax, 0xffffffff
jne 0x416557
mov eax, str.Error_opening_file
jmp 0x41656e
push 0
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
mov dword [ebp - 0x38], esi
test esi, esi
jne 0x416584
mov eax, str.File_is_empty
mov ecx, ebx
mov edx, 0xd8
mov edi, 0x10
add ebx, edi
lea esi, [ecx + edx]
jmp 0x41660a
cmp esi, 0x400000
jbe 0x416593
mov eax, str.File_too_large
jmp 0x416601
push esi
mov dword [ebp - 0x34], 0
call fcn.004a247d
add esp, 4
mov edi, eax
lea eax, [ebp - 0x34]
mov dword [ebp - 0x3c], edi
push 0
push eax
push esi
push edi
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_ReadFile]
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x34], esi
je 0x41662a
push edi
call fcn.004a2486
mov eax, dword [ebx]
add esp, 4
test eax, eax
je 0x4165df
push eax
call fcn.004b5dbd
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x4165ef
push eax
call fcn.004b5dbd
add esp, 4
mov dword [ebx], 0
mov eax, str.Could_not_read_file
mov dword [ebx + 4], 0
lea esi, [ebx + 0xd8]
add ebx, 0x10
push 0x63
push eax
push ebx
call fcn.004bfe66
push 0x31
push 0x4faae0
push esi
call fcn.004bfe66
add esp, 0x18
xor bl, bl
jmp 0x4166db
mov eax, edi
mov dword [ebp - 0x30], eax
cmp esi, 3
jb 0x416651
cmp byte [edi], 0xef
jne 0x416651
cmp byte [edi + 1], 0xbb
jne 0x416651
cmp byte [edi + 2], 0xbf
jne 0x416651
lea eax, [edi + 3]
add esi, 0xfffffffd
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x38], esi
mov edi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push 0
push 0
push esi
push eax
push 0
push 0xfde9
call edi
mov esi, eax
lea ecx, [esi*2 + 2]
push ecx
call fcn.004b7dcb
add esp, 4
mov dword [ebx], eax
push esi
push eax
push dword [ebp - 0x38]
push dword [ebp - 0x30]
push 0
push 0xfde9
call edi
mov eax, dword [ebx]
xor ecx, ecx
mov word [eax + esi*2], cx
mov ecx, ebx
call fcn.00416740
mov byte [ebp - 0x29], al
test al, al
jne 0x4166cd
mov eax, dword [ebx]
test eax, eax
je 0x4166b0
push eax
call fcn.004b5dbd
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x4166c0
push eax
call fcn.004b5dbd
add esp, 4
mov dword [ebx], 0
mov dword [ebx + 4], 0
push dword [ebp - 0x3c]
call fcn.004a2486
mov bl, byte [ebp - 0x29]
add esp, 4
mov ecx, dword [ebp - 0x14]
cmp ecx, 8
jb 0x416711
mov edx, dword [ebp - 0x28]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x416707
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x416731
push ecx
push edx
call fcn.004a246f
add esp, 8
mov al, bl
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.004a248b
mov esp, ebp
pop ebp
ret 8
call fcn.004b0b6f
int3