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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x59103d
mov eax, dword fs:[0]
push eax
sub esp, 0x30
mov eax, dword [0x5f88c0]
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 0x41c76f
push eax
call fcn.0055fc02
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x41c77f
push eax
call fcn.0055fc02
add esp, 4
push 0x5fa0a4
lea ecx, [ebp - 0x28]
mov dword [ebx], 0
mov dword [ebx + 4], 0
call fcn.00403cc0
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 0x41c7b0
sub edx, edi
lea ecx, [ebp - 0x28]
sar edx, 1
push edx
push esi
test eax, eax
je 0x41c7cf
call fcn.00403b40
jmp 0x41c7d4
call fcn.00403260
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 connect
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x30], eax
cmp eax, 0xffffffff
jne 0x41c807
mov eax, 0x5d42c8
jmp 0x41c81e
push 0
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov esi, eax
mov dword [ebp - 0x38], esi
test esi, esi
jne 0x41c834
mov eax, str.File_is_empty
mov ecx, ebx
mov edx, 0xd8
mov edi, 0x10
add ebx, edi
lea esi, [ecx + edx]
jmp 0x41c8ba
cmp esi, 0x400000
jbe 0x41c843
mov eax, str.File_too_large
jmp 0x41c8b1
push esi
mov dword [ebp - 0x34], 0
call fcn.0054b2d5
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 0x41c8da
push edi
call fcn.0054b2de
mov eax, dword [ebx]
add esp, 4
test eax, eax
je 0x41c88f
push eax
call fcn.0055fc02
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x41c89f
push eax
call fcn.0055fc02
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.00568af8
push 0x31
push 0x5d23d0
push esi
call fcn.00568af8
add esp, 0x18
xor bl, bl
jmp 0x41c98b
mov eax, edi
mov dword [ebp - 0x30], eax
cmp esi, 3
jb 0x41c901
cmp byte [edi], 0xef
jne 0x41c901
cmp byte [edi + 1], 0xbb
jne 0x41c901
cmp byte [edi + 2], 0xbf
jne 0x41c901
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.00561eeb
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.0041c9f0
mov byte [ebp - 0x29], al
test al, al
jne 0x41c97d
mov eax, dword [ebx]
test eax, eax
je 0x41c960
push eax
call fcn.0055fc02
add esp, 4
mov eax, dword [ebx + 4]
test eax, eax
je 0x41c970
push eax
call fcn.0055fc02
add esp, 4
mov dword [ebx], 0
mov dword [ebx + 4], 0
push dword [ebp - 0x3c]
call fcn.0054b2de
mov bl, byte [ebp - 0x29]
add esp, 4
mov ecx, dword [ebp - 0x14]
cmp ecx, 8
jb 0x41c9c1
mov edx, dword [ebp - 0x28]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x41c9b7
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41c9e1
push ecx
push edx
call fcn.0054b2c7
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.0054b289
mov esp, ebp
pop ebp
ret 8
call fcn.0055fb01
int3