Function at 0x404ece
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
mov eax, dword [0x420030]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0x10]
push edi
push 0x30032
mov dword [ebp - 0x2c], eax
call fcn.0040a284
mov edi, eax
pop ecx
test edi, edi
jne 0x404f04
or eax, 0xffffffff
jmp 0x405120
push esi
push edi
push dword [ebp + 8]
mov esi, edi
call fcn.00404d99
pop ecx
pop ecx
mov ecx, eax
cmp ecx, 0xffffffff
jne 0x404f28
push edi
call fcn.0040a3c5
pop ecx
or eax, 0xffffffff
jmp 0x40511f
movzx eax, byte [edi + 0x13]
movzx edx, byte [edi + 0x12]
shl eax, 8
or eax, edx
movzx edx, byte [edi + 0x11]
shl eax, 8
or eax, edx
movzx edx, byte [edi + 0x10]
shl eax, 8
or eax, edx
movzx edx, byte [edi + 0xf]
push ebx
movzx ebx, byte [edi + 0xe]
shl edx, 8
or edx, ebx
movzx ebx, byte [edi + 0xd]
shl edx, 8
or edx, ebx
movzx ebx, byte [edi + 0xc]
shl edx, 8
or edx, ebx
add edx, eax
sub ecx, edx
push 0
add eax, ecx
push eax
push dword [ebp + 8]
mov dword [ebp - 0x30], ecx
call fcn.00416522
add esp, 0xc
test eax, eax
js 0x405114
push 0x400
push edi
push dword [ebp + 8]
call fcn.00415a5c
mov ebx, eax
add esp, 0xc
test ebx, ebx
js 0x405114
movzx eax, byte [edi + 3]
movzx ecx, byte [edi + 2]
shl eax, 8
or eax, ecx
movzx ecx, byte [edi + 1]
shl eax, 8
or eax, ecx
movzx ecx, byte [edi]
jmp 0x4050b6
cmp ebx, 0x2e
jge 0x404fec
push ebx
push esi
push edi
call fcn.0040ba00
mov esi, eax
push 0x400
lea eax, [ebx + edi]
push eax
push dword [ebp + 8]
call fcn.00415a5c
add esp, 0x18
test eax, eax
jle 0x405114
add ebx, eax
movzx eax, byte [esi + 0x21]
movzx ecx, byte [esi + 0x20]
movzx edx, byte [esi + 0x1e]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi + 0x1f]
shl ecx, 8
or ecx, edx
movzx edx, byte [esi + 0x1c]
add eax, ecx
movzx ecx, byte [esi + 0x1d]
shl ecx, 8
or ecx, edx
lea eax, [eax + ecx + 0x2e]
lea ecx, [eax + 4]
mov dword [ebp - 0x28], eax
cmp ebx, ecx
jge 0x405061
cmp esi, edi
je 0x405037
push ebx
push esi
push edi
call fcn.0040ba00
mov esi, eax
mov eax, dword [ebp - 0x28]
add esp, 0xc
sub eax, ebx
add eax, 4
mov ecx, 0x400
cmp eax, ecx
jge 0x405047
mov eax, ecx
push eax
lea eax, [ebx + edi]
push eax
push dword [ebp + 8]
call fcn.00415a5c
add esp, 0xc
test eax, eax
jle 0x405114
add ebx, eax
push dword [ebp - 0x2c]
call fcn.00408090
movzx edx, byte [esi + 0x1c]
pop ecx
movzx ecx, byte [esi + 0x1d]
shl ecx, 8
or ecx, edx
cmp ecx, eax
jne 0x405097
push dword [ebp - 0x2c]
call fcn.00408090
push eax
push dword [ebp - 0x2c]
lea eax, [esi + 0x2e]
push eax
call fcn.0040a4a0
add esp, 0x10
test eax, eax
je 0x4050cb
add esi, dword [ebp - 0x28]
sub ebx, dword [ebp - 0x28]
movzx eax, byte [esi + 3]
movzx ecx, byte [esi + 2]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi + 1]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi]
shl eax, 8
or eax, ecx
cmp eax, 0x2014b50
je 0x404fbf
jmp 0x405153
movzx eax, byte [esi + 0x2d]
movzx ecx, byte [esi + 0x2c]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi + 0x2b]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi + 0x2a]
shl eax, 8
or eax, ecx
add eax, dword [ebp - 0x30]
push 0
push eax
push dword [ebp + 8]
call fcn.00416522
add esp, 0xc
test eax, eax
js 0x405114
push 0x1e
lea eax, [ebp - 0x24]
push eax
push dword [ebp + 8]
call fcn.00415a5c
add esp, 0xc
test eax, eax
jns 0x40512d
push edi
call fcn.0040a3c5
pop ecx
or eax, 0xffffffff
pop ebx
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop edi
call fcn.004088d9
leave
ret
movzx eax, byte [ebp - 0x21]
movzx ecx, byte [ebp - 0x22]
shl eax, 8
or eax, ecx
movzx ecx, byte [ebp - 0x23]
shl eax, 8
or eax, ecx
movzx ecx, byte [ebp - 0x24]
shl eax, 8
or eax, ecx
cmp eax, 0x4034b50
je 0x405161
or esi, 0xffffffff
push edi
call fcn.0040a3c5
pop ecx
mov eax, esi
jmp 0x40511e
movzx ecx, byte [esi + 0x1b]
movzx eax, byte [esi + 0x1a]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x19]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 0x18]
shl ecx, 8
or ecx, eax
mov eax, dword [ebp - 0x34]
mov dword [eax], ecx
movzx ecx, byte [esi + 0x17]
movzx edx, byte [esi + 0x16]
shl ecx, 8
or ecx, edx
movzx edx, byte [esi + 0x15]
shl ecx, 8
or ecx, edx
movzx edx, byte [esi + 0x14]
shl ecx, 8
or ecx, edx
mov dword [eax + 4], ecx
movzx eax, byte [esi + 0x2d]
movzx ecx, byte [esi + 0x2c]
movzx edx, byte [ebp - 8]
movzx ebx, byte [ebp - 0xa]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi + 0x2b]
shl eax, 8
or eax, ecx
movzx ecx, byte [esi + 0x2a]
shl eax, 8
or eax, ecx
movzx ecx, byte [ebp - 7]
shl ecx, 8
or ecx, edx
add ecx, dword [ebp - 0x30]
movzx edx, byte [ebp - 9]
add ecx, eax
mov eax, dword [ebp - 0x34]
shl edx, 8
or edx, ebx
lea ecx, [edx + ecx + 0x1e]
mov dword [eax + 8], ecx
movzx ecx, byte [esi + 0xb]
movzx edx, byte [esi + 0xa]
shl ecx, 8
or ecx, edx
mov dword [eax + 0xc], ecx
xor esi, esi
jmp 0x405156