Function at 0xc868ac
Capabilities:
Delete file
Get file size
Read file on windows
Set file attributes
Write file on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd4
push ebx
push esi
push edi
mov ebx, ecx
mov dword [ebp - 4], edx
mov edi, eax
mov byte [ebp - 5], 0
cmp dword [0xc8ac8c], 0xffffffff
je 0xc86ad3
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
push 0
mov eax, dword [0xc8ac8c]
push eax
call sub.KERNEL32.DLL_GetFileSize
xor edx, edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edx
cmp dword [ebp - 0x14], 0
jne 0xc868fe
cmp dword [ebp - 0x18], 0
jbe 0xc8690c
jmp 0xc86900
jle 0xc8690c
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
jne 0xc8691d
cmp dword [ebp - 0x28], 0
ja 0xc86923
jmp 0xc86ad3
jle 0xc86ad3
call fcn.00c84834
cdq
mov dword [0xc890ac], eax
mov dword [0xc890b0], edx
mov eax, dword [0xc890ac]
mov edx, dword [0xc890b0]
cmp edx, dword [ebp - 0x24]
jne 0xc8694d
cmp eax, dword [ebp - 0x28]
jbe 0xc8696c
jmp 0xc8694f
jle 0xc8696c
mov dword [0xc890ac], 0
mov dword [0xc890b0], 0
xor eax, eax
call fcn.00c84938
jmp 0xc86986
mov eax, dword [0xc890ac]
mov edx, dword [0xc890b0]
cmp edx, dword [ebp - 0x24]
jne 0xc86986
cmp eax, dword [ebp - 0x28]
je 0xc86ad3
cmp dword [0xc89098], 0
je 0xc86ad3
push 0
push 0
mov eax, dword [0xc8ac74]
push eax
mov eax, dword [0xc89098]
push eax
call sub.user32.dll_SendMessageA
push 0
push 0
mov eax, dword [0xc890ac]
push eax
mov eax, dword [0xc8ac8c]
push eax
call sub.KERNEL32.DLL_SetFilePointer
push 4
push 0x1000
mov esi, dword [ebp - 0x28]
mov eax, esi
sub eax, dword [0xc890ac]
push eax
push 0
call sub.KERNEL32.DLL_VirtualAlloc
mov dword [ebp - 0xc], eax
push 0
lea eax, [ebp - 0x1c]
push eax
sub esi, dword [0xc890ac]
push esi
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [0xc8ac8c]
push eax
call sub.KERNEL32.DLL_ReadFile
push 2
push 0
push 0
mov eax, dword [0xc8ac8c]
push eax
call sub.KERNEL32.DLL_SetFilePointer
push 0
push 0
mov eax, dword [0xc8ac78]
push eax
mov eax, dword [0xc89098]
push eax
call sub.user32.dll_SendMessageA
push 0x80
push ebx
call sub.KERNEL32.DLL_SetFileAttributesW
push ebx
call sub.KERNEL32.DLL_DeleteFileW
push 0
push 0
push 2
push 0
push 0
push 0x40000000
push ebx
call sub.KERNEL32.DLL_CreateFileW
mov esi, eax
cmp esi, 0xffffffff
je 0xc86a8c
mov byte [ebp - 0x2a], 0xff
mov byte [ebp - 0x29], 0xfe
push 0
lea eax, [ebp - 0x1c]
push eax
push 2
lea eax, [ebp - 0x2a]
push eax
push esi
call sub.KERNEL32.DLL_WriteFile
lea eax, [ebp - 0x1c]
push eax
push 0
mov ecx, dword [ebp - 0x28]
sub ecx, dword [0xc890ac]
mov edx, dword [ebp - 0xc]
mov eax, esi
call fcn.00c845d0
push 0x8000
push 0
lea eax, [ebp - 0xc]
push eax
call sub.KERNEL32.DLL_VirtualFree
push esi
call sub.KERNEL32.DLL_CloseHandle
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
push eax
mov ecx, ebx
mov edx, dword [ebp - 4]
mov eax, edi
call fcn.00c86de4
mov byte [ebp - 5], al
cmp byte [ebp - 5], 1
jne 0xc86acd
mov eax, dword [ebp - 0x28]
mov dword [0xc890ac], eax
mov eax, dword [ebp - 0x24]
mov dword [0xc890b0], eax
mov eax, dword [ebp - 0x28]
call fcn.00c84938
push ebx
call sub.KERNEL32.DLL_DeleteFileW
mov al, byte [ebp - 5]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc