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

Disassembly:
push ebp
mov ebp, esp
push ecx
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 4], ecx
test edi, edi
jne 0x40acb5
push 0x57
pop eax
jmp 0x40af16
push ebx
push esi
push 0
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebx, eax
test ebx, ebx
jne 0x40acca
push 0xd
jmp 0x40acdc
lea eax, [ebx + 2]
push eax
call fcn.0042a45f
mov esi, eax
pop ecx
test esi, esi
jne 0x40acdf
push 8
pop ebx
jmp 0x40ad01
push 0
lea eax, [ebp + 8]
push eax
push ebx
push esi
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x40ad0f
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
mov ebx, eax
call fcn.0042a45a
pop ecx
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, ebx
jmp 0x40af14
push edi
mov word [esi + ebx], 0
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp ebx, dword [ebp + 8]
jbe 0x40ad28
push 0x1e
jmp 0x40af0a
push 0xd
pop edi
cmp ebx, 3
jbe 0x40af0b
mov al, byte [esi]
or edx, 0xffffffff
push 0x32
pop edi
push 0x3c
pop ebx
push 0xfffffffffffffffe
pop ecx
test al, al
jne 0x40ad5d
cmp byte [esi + 1], al
jne 0x40ae4a
cmp byte [esi + 2], cl
jne 0x40ad82
cmp byte [esi + 3], dl
je 0x40af0b
cmp al, dl
jne 0x40ad7e
cmp byte [esi + 1], cl
jne 0x40aeea
cmp byte [esi + 2], 0
jne 0x40ae01
cmp byte [esi + 3], 0
je 0x40af0b
test al, al
jne 0x40ad9e
cmp byte [esi + 1], 0
jne 0x40ae4a
cmp byte [esi + 2], dl
jne 0x40ae17
cmp byte [esi + 3], cl
je 0x40af0b
cmp al, cl
jne 0x40adb7
cmp byte [esi + 1], dl
jne 0x40addb
cmp byte [esi + 2], 0
jne 0x40addb
cmp byte [esi + 3], 0
je 0x40af0b
cmp al, 0xef
jne 0x40add7
cmp byte [esi + 1], 0xbb
jne 0x40aeea
cmp byte [esi + 2], 0xbf
jne 0x40aeea
lea eax, [esi + 3]
jmp 0x40aefb
cmp al, cl
jne 0x40adfd
lea eax, [esi + 1]
cmp byte [eax], dl
jne 0x40aeea
mov dl, byte [eax - 1]
mov cl, byte [eax]
test dl, dl
jne 0x40adf3
test cl, cl
je 0x40ae0a
mov byte [eax - 1], cl
mov byte [eax], dl
add eax, 2
jmp 0x40ade6
cmp al, dl
jne 0x40ae13
cmp byte [esi + 1], cl
jne 0x40aeea
lea eax, [esi + 2]
push eax
jmp 0x40aeb7
test al, al
jne 0x40ae2c
cmp byte [esi + 1], 0
jne 0x40ae4a
cmp byte [esi + 2], 0
jne 0x40ae4a
cmp byte [esi + 3], bl
je 0x40af0b
cmp al, bl
jne 0x40ae46
cmp byte [esi + 1], 0
jne 0x40aea4
cmp byte [esi + 2], 0
jne 0x40aea4
cmp byte [esi + 3], 0
je 0x40af0b
test al, al
jne 0x40aea0
lea eax, [esi + 1]
mov cl, byte [eax]
test cl, cl
jne 0x40ae61
cmp byte [esi + 2], bl
jne 0x40ae61
cmp byte [esi + 3], cl
je 0x40af0b
cmp cl, bl
jne 0x40aeea
cmp byte [esi + 2], 0
jne 0x40ae79
cmp byte [esi + 3], 0
je 0x40af0b
cmp cl, bl
jne 0x40aeea
cmp byte [esi + 2], 0
jne 0x40aeea
cmp byte [esi + 3], 0x3f
jne 0x40aeea
mov dl, byte [eax - 1]
mov cl, byte [eax]
test dl, dl
jne 0x40ae96
test cl, cl
je 0x40aeb6
mov byte [eax - 1], cl
mov byte [eax], dl
add eax, 2
jmp 0x40ae89
cmp al, bl
jne 0x40aed4
mov al, byte [esi + 1]
test al, al
jne 0x40aec1
cmp byte [esi + 2], 0x3f
jne 0x40aec1
cmp byte [esi + 3], al
jne 0x40aec1
push esi
mov ecx, dword [ebp - 4]
call fcn.00409843
jmp 0x40af04
cmp al, 0x3f
jne 0x40aeea
cmp byte [esi + 2], 0x78
jne 0x40aeea
cmp byte [esi + 3], 0x6d
jne 0x40aeea
push esi
jmp 0x40aefc
cmp al, 0x4c
jne 0x40aeea
cmp byte [esi + 1], 0x6f
jne 0x40aeea
cmp byte [esi + 2], 0xa7
jne 0x40aeea
cmp byte [esi + 3], 0x94
je 0x40af0b
push 0x44d8a4
push esi
call fcn.00425ef0
pop ecx
pop ecx
test eax, eax
je 0x40af08
push eax
mov ecx, dword [ebp - 4]
call fcn.00409731
mov edi, eax
jmp 0x40af0b
push 0xd
pop edi
push esi
call fcn.0042a45a
pop ecx
mov eax, edi
pop esi
pop ebx
pop edi
leave
ret 4