Function at 0x4096ec
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov dword [esp + 4], 0x450e48
mov eax, dword [ebp + 8]
mov dword [esp], eax
call sub.msvcrt.dll_fopen
mov dword [ebp - 0x20], eax
test eax, eax
jne 0x409722
mov edx, dword [ebp + 8]
mov dword [esp + 4], edx
mov dword [esp], str.cannot_open__s_n
call fcn.0042c45d
mov dword [esp + 8], 0
mov eax, dword [ebp + 0x18]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call sub.msvcrt.dll_fseek
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 0x10]
test esi, esi
js 0x409962
test esi, esi
jg 0x409757
cmp ebx, 0
jbe 0x409962
mov eax, ebx
test esi, esi
js 0x40976e
test esi, esi
jg 0x409769
cmp ebx, 0x8000
jbe 0x40976e
mov eax, 0x8000
add eax, 0x7ff
and eax, 0xfffff800
mov dword [ebp - 0x24], eax
mov edi, 0x455398
cld
mov ecx, eax
shr ecx, 2
mov eax, 0
rep stosd dword es:[edi], eax
mov edx, dword [ebp - 0x20]
mov dword [esp + 0xc], edx
mov eax, dword [ebp - 0x24]
mov dword [esp + 8], eax
mov dword [esp + 4], 1
mov dword [esp], 0x455398
call sub.msvcrt.dll_fread
test eax, eax
jne 0x4097c6
mov edx, dword [ebp + 8]
mov dword [esp + 4], edx
mov dword [esp], str.cannot_read_from__s_n
call fcn.0042c45d
mov eax, 1
test esi, esi
js 0x4097e0
test esi, esi
jg 0x4097db
cmp ebx, 0x8000
jbe 0x4097e0
mov eax, 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 8
mov eax, dword [ebp + 0x14]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 1
mov edx, dword [ebp - 0x24]
mov dword [esp + 4], edx
mov dword [esp], 0x455398
call fcn.00409408
mov eax, dword [ebp - 0x24]
test eax, eax
jns 0x40981a
add eax, 0x7ff
sar eax, 0xb
add dword [0x455320], eax
cmp dword [0x430040], 0
jle 0x409945
mov eax, dword [ebp - 0x24]
test eax, eax
jns 0x40983c
add eax, 0x7ff
mov ecx, eax
sar ecx, 0xb
cmp dword [0x4550a0], 0
je 0x40986f
mov edi, dword [0x455320]
mov edx, 0x10624dd3
mov eax, edi
mul edx
shr edx, 5
imul edx, edx, 0x1f4
mov eax, edi
sub eax, edx
cmp eax, ecx
jl 0x409893
jmp 0x409945
mov edi, dword [0x455320]
mov edx, 0xd1b71759
mov eax, edi
mul edx
shr edx, 0xc
imul edx, edx, 0x1388
mov eax, edi
sub eax, edx
cmp eax, ecx
jge 0x409945
lea eax, [ebp - 0x14]
mov dword [esp], eax
call sub.msvcrt.dll_time
mov eax, dword [0x455320]
mov edx, 0
push edx
push eax
fild qword [esp]
lea esp, [esp + 8]
fstp qword [ebp - 0x30]
mov eax, dword [0x455018]
mov edx, 0
push edx
push eax
fild qword [esp]
lea esp, [esp + 8]
fdivr qword [ebp - 0x30]
fstp qword [ebp - 0x30]
fild dword [0x466e10]
mov eax, dword [ebp - 0x14]
sub eax, dword [0x466e10]
push eax
fild dword [esp]
lea esp, [esp + 4]
fdiv qword [ebp - 0x30]
faddp st(1)
fnstcw word [ebp - 0x1a]
movzx eax, word [ebp - 0x1a]
or ax, 0xc00
mov word [ebp - 0x1c], ax
fldcw word [ebp - 0x1c]
fistp dword [ebp - 0x18]
fldcw word [ebp - 0x1a]
lea eax, [ebp - 0x18]
mov dword [esp], eax
call sub.msvcrt.dll_ctime
mov dword [esp + 0x10], eax
fld qword [ebp - 0x30]
fmul dword [0x450e98]
fstp qword [esp + 8]
mov dword [esp + 4], str._6.2f___done__estimate_finish__s
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.0042c789
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov eax, dword [ebp - 0x24]
cdq
sub ebx, eax
sbb esi, edx
test esi, esi
js 0x409962
test esi, esi
jg 0x409757
cmp ebx, 0
ja 0x409757
mov edx, dword [ebp - 0x20]
mov dword [esp], edx
call sub.msvcrt.dll_fclose
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret