Function at 0x40cf14
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
mov esi, ecx
test esi, esi
push edi
mov dword [ebp - 4], eax
je 0x40d120
cmp byte [esi + 0x5c], 0x72
jne 0x40d120
mov ecx, dword [esi + 0x38]
cmp ecx, 0xfffffffd
je 0x40d11b
cmp ecx, 0xffffffff
je 0x40d11b
xor edi, edi
inc edi
cmp ecx, edi
jne 0x40cf56
xor eax, eax
jmp 0x40d123
cmp dword [esi + 0x6c], 0xffffffff
mov ebx, 0x4000
mov dword [ebp - 8], eax
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], ebx
je 0x40cf93
mov cl, byte [esi + 0x6c]
mov byte [eax], cl
or dword [esi + 0x6c], 0xffffffff
inc eax
inc dword [esi + 0xc]
dec dword [esi + 0x10]
inc dword [esi + 0x68]
cmp dword [esi + 0x70], 0
mov dword [ebp - 8], eax
mov dword [ebp - 4], eax
je 0x40cf93
mov dword [esi + 0x38], edi
mov eax, edi
jmp 0x40d123
cmp dword [esi + 0x10], 0
je 0x40d0e9
xor ecx, ecx
cmp dword [esi + 0x58], ecx
jne 0x40d083
cmp dword [esi + 4], ecx
jne 0x40cfed
cmp dword [esi + 0x3c], ecx
jne 0x40cfed
call sub.msvcrt.dll__errno
and dword [eax], 0
push dword [esi + 0x40]
xor edi, edi
push ebx
inc edi
push edi
push dword [esi + 0x44]
call sub.msvcrt.dll_fread
add esp, 0x10
test eax, eax
mov dword [esi + 4], eax
jne 0x40cfe8
push dword [esi + 0x40]
mov dword [esi + 0x3c], edi
call sub.msvcrt.dll_ferror
test eax, eax
pop ecx
jne 0x40d0e5
mov eax, dword [esi + 0x44]
mov dword [esi], eax
mov eax, dword [esi + 4]
add dword [esi + 0x64], eax
mov eax, dword [esi + 0x10]
add dword [esi + 0x68], eax
push esi
call fcn.0040d766
pop ecx
mov ecx, dword [esi + 4]
sub dword [esi + 0x64], ecx
mov ecx, dword [esi + 0x10]
sub dword [esi + 0x68], ecx
cmp eax, 1
mov dword [esi + 0x38], eax
jne 0x40d063
mov eax, dword [esi + 0xc]
sub eax, dword [ebp - 4]
push eax
push dword [ebp - 4]
push dword [esi + 0x4c]
call fcn.0040d284
mov dword [esi + 0x4c], eax
mov eax, dword [esi + 0xc]
mov dword [ebp - 4], eax
add esp, 0xc
mov eax, esi
call fcn.0040d128
cmp eax, dword [esi + 0x4c]
jne 0x40d07a
mov eax, esi
call fcn.0040d128
mov eax, esi
call fcn.0040cd31
xor edi, edi
cmp dword [esi + 0x38], edi
jne 0x40d0e9
mov ecx, esi
call fcn.0040d4f9
mov dword [esi + 0x4c], edi
jmp 0x40d065
xor edi, edi
cmp dword [esi + 0x38], edi
jne 0x40d0e9
cmp dword [esi + 0x3c], edi
jne 0x40d0e9
cmp dword [esi + 0x10], edi
jne 0x40cf9d
jmp 0x40d0e9
mov dword [esi + 0x38], 0xfffffffd
jmp 0x40d0e9
mov edi, dword [esi + 4]
mov eax, dword [esi + 0x10]
cmp edi, eax
jbe 0x40d08f
mov edi, eax
cmp edi, ecx
jbe 0x40d0b2
push edi
push dword [esi]
push dword [esi + 0xc]
call sub.msvcrt.dll_memcpy
add dword [ebp - 8], edi
mov eax, dword [ebp - 8]
add dword [esi], edi
sub dword [esi + 0x10], edi
add esp, 0xc
sub dword [esi + 4], edi
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x10]
test eax, eax
jbe 0x40d0cd
push dword [esi + 0x40]
push eax
push 1
push dword [ebp - 8]
call sub.msvcrt.dll_fread
add esp, 0x10
sub dword [esi + 0x10], eax
mov eax, ebx
sub eax, dword [esi + 0x10]
add dword [esi + 0x64], eax
add dword [esi + 0x68], eax
test eax, eax
jne 0x40d123
mov dword [esi + 0x3c], 1
jmp 0x40d123
or dword [esi + 0x38], 0xffffffff
mov eax, dword [esi + 0xc]
sub eax, dword [ebp - 4]
push eax
push dword [ebp - 4]
push dword [esi + 0x4c]
call fcn.0040d284
mov ecx, dword [esi + 0x10]
add esp, 0xc
cmp ecx, ebx
mov dword [esi + 0x4c], eax
jne 0x40d115
mov esi, dword [esi + 0x38]
cmp esi, 0xfffffffd
je 0x40d11b
cmp esi, 0xffffffff
je 0x40d11b
mov eax, ebx
sub eax, ecx
jmp 0x40d123
or eax, 0xffffffff
jmp 0x40d123
push 0xfffffffffffffffe
pop eax
pop edi
pop esi
pop ebx
leave
ret