Function at 0x404bf0
Capabilities:
Clear file content
Encode data using xor
Get file size
Move file
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2bc
push ebx
push esi
push edi
mov edi, ecx
push edi
mov dword [ebp - 4], edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, dword [sym.imp.KERNEL32.dll_HeapAlloc]
lea eax, [eax*2 + 0x100]
push eax
push 8
push dword [0x422334]
mov dword [ebp - 8], eax
call esi
mov ebx, eax
mov dword [ebp - 0xc], ebx
test ebx, ebx
jne 0x404c52
mov edi, dword [ebp - 8]
nop
push 0x80
call dword [sym.imp.KERNEL32.dll_Sleep]
push edi
push 8
push dword [0x422334]
call esi
mov ebx, eax
mov dword [ebp - 0xc], eax
test ebx, ebx
je 0x404c30
mov edi, dword [ebp - 4]
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push ebx
call dword [sym.imp.SHLWAPI.dll_PathRemoveExtensionW]
push 0
push 0
push 3
push 0
push 0
push 0xc0000000
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
mov dword [ebp - 8], edi
cmp edi, 0xffffffff
je 0x404fa8
push 2
push 0
push 0xffffffffffffffff
push 0xffffffffffffffc0
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push 0
lea eax, [ebp - 0x1c]
push eax
push 0x40
lea eax, [ebp - 0xa0]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_ReadFile]
movups xmm0, xmmword [0x41f0b0]
lea edx, [ebp - 0x90]
lea ecx, [ebp - 0x148]
movups xmmword [ebp - 0x3c], xmm0
mov byte [ebp - 0x3c], 0x98
movups xmm0, xmmword [str.YZ_b_]
movups xmmword [ebp - 0x2c], xmm0
psrldq xmm0, 0xf
movd eax, xmm0
and al, 0x3f
or al, 0x40
mov byte [ebp - 0x1d], al
call fcn.004020c0
lea eax, [ebp - 0x148]
push eax
lea eax, [ebp - 0x3c]
push eax
lea edx, [ebp - 0xf8]
lea ecx, [ebp - 0x230]
call fcn.00403240
lea edx, [ebp - 0xf8]
lea ecx, [ebp - 0x1e0]
call fcn.00403500
lea eax, [ebp - 0x1e0]
push eax
lea edx, [ebp - 0x230]
lea ecx, [ebp - 0x190]
call fcn.00401680
add esp, 0xc
lea ecx, [ebp - 0x190]
call fcn.00401b50
lea ecx, [ebp - 0x190]
call fcn.00401c30
movups xmm0, xmmword [ebp - 0x190]
lea edx, [ebp - 0xf8]
lea ecx, [ebp - 0x5c]
movups xmmword [ebp - 0xf8], xmm0
movups xmm0, xmmword [ebp - 0x180]
movups xmmword [ebp - 0xe8], xmm0
movups xmm0, xmmword [ebp - 0x170]
movups xmmword [ebp - 0xd8], xmm0
movups xmm0, xmmword [ebp - 0x160]
movups xmmword [ebp - 0xc8], xmm0
movups xmm0, xmmword [ebp - 0x150]
movups xmmword [ebp - 0xb8], xmm0
call fcn.004023c0
lea edx, [ebp - 0x5c]
push ecx
mov ecx, edx
call fcn.00405f50
add esp, 4
lea edi, [ebp - 0x5c]
or eax, 0xffffffff
mov ebx, 0x20
movzx ecx, byte [edi]
lea edi, [edi + 1]
mov edx, eax
shl eax, 8
shr edx, 0x18
xor edx, ecx
xor eax, dword [edx*4 + 0x41ec50]
sub ebx, 1
jne 0x404db0
mov ebx, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x68]
je 0x404dea
mov edi, dword [ebp - 4]
push edi
push str.File_Corrupted:__s
call fcn.00404950
add esp, 8
jmp 0x404fa8
mov edi, dword [ebp - 8]
push 2
push 0
push 0xffffffffffffffff
push 0xffffffffffffffc0
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointerEx]
push edi
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x2b8]
push eax
lea edx, [ebp - 0x70]
lea ecx, [ebp - 0x5c]
call fcn.00401100
add esp, 4
lea eax, [ebp - 0xa0]
mov edx, eax
lea ecx, [ebp - 0x2b8]
push 0x10
push eax
call fcn.00401540
mov edi, dword [ebp - 4]
add esp, 8
push 9
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
jne 0x404e63
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push edi
push str.Unable_To_Rename_File:__s____lu
call fcn.00404950
add esp, 0xc
jmp 0x404fa8
push 0
push 0x48000000
push 3
push 0
push 0
push 0xc0000000
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov edi, eax
mov dword [ebp - 8], edi
cmp edi, 0xffffffff
je 0x404fa8
lea eax, [ebp - 0x18]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
je 0x404fa0
mov ecx, dword [ebp - 0x18]
mov eax, ecx
mov edx, dword [ebp - 0x14]
or eax, edx
mov dword [ebp - 4], ecx
je 0x404fa0
test edx, edx
jl 0x404ec6
jg 0x404ebe
cmp ecx, 0x100000
jb 0x404ec6
mov ecx, 0x100000
mov dword [ebp - 4], ecx
lea eax, [ecx + 0xb8]
push eax
push 8
push dword [0x422334]
mov dword [ebp - 0x10], eax
call esi
mov ebx, eax
test ebx, ebx
jne 0x404f03
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x80
call edi
push dword [ebp - 0x10]
push 8
push dword [0x422334]
call esi
mov ebx, eax
test ebx, ebx
je 0x404ee6
mov edi, dword [ebp - 8]
mov eax, dword [ebp - 4]
mov dword [ebx + 0xb4], eax
mov dword [ebx + 0x9c], edi
mov eax, dword [ebp - 0xa0]
mov dword [ebx + 0xb0], eax
cmp eax, 3
jne 0x404f3b
mov eax, dword [ebp - 0x98]
mov ecx, dword [ebp - 0x94]
mov dword [ebx + 0xa8], eax
mov dword [ebx + 0xac], ecx
push 0
push 0
push dword [0x42232c]
lea edi, [ebx + 0x18]
mov ecx, 0x21
lea esi, [ebp - 0x2b8]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 8]
push esi
call dword [sym.imp.KERNEL32.dll_CreateIoCompletionPort]
test eax, eax
je 0x404f84
push ebx
push 0
push 0
push dword [0x42232c]
call dword [sym.imp.KERNEL32.dll_PostQueuedCompletionStatus]
test eax, eax
je 0x404f84
lock inc dword [0x422330]
mov ebx, dword [ebp - 0xc]
jmp 0x404fa8
mov eax, dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
call eax
push ebx
push 0
push dword [0x422334]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ebx, dword [ebp - 0xc]
jmp 0x404fa8
mov eax, dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
call eax
push ebx
push 0
push dword [0x422334]
call dword [sym.imp.KERNEL32.dll_HeapFree]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret