Function at 0x4014f6
Capabilities:
Get file size
Read file on windows
Set file attributes
Timestomp file
Write file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x28
mov ebx, eax
push pe_nt_image_headers32
push eax
call sub.KERNEL32.DLL_SetFileAttributesA
push 0
push pe_nt_image_headers32
push 4
push 0
push 1
push 0xc0000000
push ebx
call sub.KERNEL32.DLL_CreateFileA
mov dword [esp + 0x10], eax
cmp eax, 0xffffffff
je 0x401744
cmp dword [0x40c030], 0
jne 0x401554
push 0x40c2c0
push 0
push 0x40c2b0
push eax
mov dword [0x40c030], 1
call sub.KERNEL32.DLL_GetFileTime
push 0
push dword [esp + 0x14]
call sub.KERNEL32.DLL_GetFileSize
test eax, eax
je 0x40170f
cmp eax, 0xffffffff
je 0x40170f
push 0
lea edx, [esp + 0x28]
push edx
push eax
call fcn.00401000
mov dword [esp + 0x2c], eax
push eax
push dword [esp + 0x20]
call sub.KERNEL32.DLL_ReadFile
test eax, eax
jne 0x40159d
mov eax, dword [esp + 0x20]
call fcn.00401029
jmp 0x40170f
mov ebp, dword [esp + 0x20]
mov eax, ebp
add eax, dword [esp + 0x24]
cmp ebp, eax
mov dword [esp + 0x1c], eax
jae 0x4016b8
movzx eax, byte [ebp]
cmp al, 0xd
sete dl
cmp al, 0xa
sete al
or eax, edx
test al, 1
je 0x4015cd
inc ebp
jmp 0x4016af
cmp ebp, dword [esp + 0x1c]
jae 0x4016b8
lea ebx, [ebp + 1]
cmp ebx, dword [esp + 0x1c]
jae 0x4015f8
movzx eax, byte [ebp + 1]
jmp 0x4015f4
cmp al, 0xa
je 0x4015f8
inc ebx
cmp ebx, dword [esp + 0x1c]
jae 0x4015f8
movzx eax, byte [ebx]
cmp al, 0xd
jne 0x4015e6
mov dword [esp + 0x18], 0x40aaa0
mov edx, ebx
sub edx, ebp
cmp dword [0x40aaa0], 0
mov dword [esp + 0x14], edx
je 0x4016ad
mov dword [esp + 0xc], ebp
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
mov eax, dword [eax]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
cmp byte [eax], 0
je 0x401674
push eax
call sub.KERNEL32.DLL_lstrlenA
dec dword [esp + 4]
cmp dword [esp + 0x14], eax
mov dword [esp], eax
jl 0x40169c
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 8]
inc dword [esp + 0xc]
mov edi, eax
jmp 0x401659
inc esi
cmp byte [esi], 0
je 0x401674
movzx eax, byte [edi]
inc edi
push eax
call sub.USER32.dll_CharLowerA
cmp byte [esi], al
je 0x401653
mov eax, dword [esp + 4]
dec dword [esp + 4]
cmp eax, dword [esp]
jmp 0x401641
inc ebx
cmp ebx, dword [esp + 0x1c]
jae 0x401685
xor eax, eax
cmp byte [ebx], 0xa
sete al
add ebx, eax
mov edx, ebp
cmp ebx, dword [esp + 0x1c]
jae 0x401696
movzx eax, byte [ebx]
inc ebx
mov byte [edx], al
inc edx
jmp 0x401687
mov dword [esp + 0x1c], edx
jmp 0x4016af
add dword [esp + 0x18], 4
mov eax, dword [esp + 0x18]
cmp dword [eax], 0
jmp 0x40160f
mov ebp, ebx
cmp ebp, dword [esp + 0x1c]
jmp 0x4015ad
push 0
push 0
push 0
push dword [esp + 0x1c]
call sub.KERNEL32.DLL_SetFilePointer
push 0
lea edx, [esp + 0x28]
push edx
push 0x45
push 0x40a260
push dword [esp + 0x20]
call sub.KERNEL32.DLL_WriteFile
push 0
lea eax, [esp + 0x28]
push eax
mov edx, dword [esp + 0x28]
sub dword [esp + 0x24], edx
push dword [esp + 0x24]
push edx
push dword [esp + 0x20]
call sub.KERNEL32.DLL_WriteFile
push dword [esp + 0x10]
call sub.KERNEL32.DLL_SetEndOfFile
mov eax, dword [esp + 0x20]
call fcn.00401029
jmp 0x401726
push 0
lea eax, [esp + 0x28]
push eax
push 0x45
push 0x40a260
push dword [esp + 0x20]
call sub.KERNEL32.DLL_WriteFile
push 0x40c2c0
push 0
push 0x40c2b0
push dword [esp + 0x1c]
call sub.KERNEL32.DLL_SetFileTime
push dword [esp + 0x10]
call sub.KERNEL32.DLL_CloseHandle
add esp, 0x28
pop ebx
pop esi
pop edi
pop ebp
ret