Function at 0x420fa0
Capabilities:
Delete file
Encode data using xor
Get common file path
Get file size
Hash data with crc32
Move file
Read file on windows
Write file on windows

Disassembly:
sub esp, 0x518
mov eax, dword [0x46aa78]
push ebx
mov ebx, dword [esp + 0x520]
push ebp
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CreateFileA]
push 0
push 0x8000027
push 3
push 0
push 3
push SysReAllocStringLen
push ebx
mov dword [esp + 0x53c], eax
call esi
mov ebp, eax
cmp ebp, 0xffffffff
jne 0x42100d
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push ebx
push str.File_s__WinErr_d
push 3
call fcn.0041d220
add esp, 0x10
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x514]
call fcn.00430cd9
add esp, 0x518
ret
push edi
xor eax, eax
mov byte [esp + 0x20], 0
mov ecx, 0x40
lea edi, [esp + 0x21]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x20]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push ebx
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameA]
push eax
lea ecx, [esp + 0x24]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea edi, [esp + 0x20]
dec edi
jmp 0x421050
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x421050
mov edx, dword [str..tmp]
mov al, byte [0x457aa4]
push 0
push 0x20
push 2
push 0
push 3
push 0xc0000000
lea ecx, [esp + 0x38]
mov dword [edi], edx
push ecx
mov byte [edi + 4], al
call esi
cmp eax, 0xffffffff
mov dword [esp + 0x14], eax
jne 0x4210c2
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea edx, [esp + 0x24]
push edx
push str.File_s__WinErr_d
push 3
call fcn.0041d220
add esp, 0x10
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x514]
call fcn.00430cd9
add esp, 0x518
ret
push 0
push ebp
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov cl, byte [esp + 0x530]
test cl, cl
mov dword [esp + 0x18], eax
je 0x421116
cmp eax, 4
ja 0x42110f
push ebx
push str.File_s_too_small_
push 0xa
call fcn.0041d220
add esp, 0xc
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x514]
call fcn.00430cd9
add esp, 0x518
ret
sub eax, 4
mov dword [esp + 0x18], eax
push 0
lea eax, [esp + 0x14]
push eax
push 0x400
lea ecx, [esp + 0x130]
push ecx
push ebp
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov edi, eax
xor ebx, ebx
test edi, edi
je 0x421225
lea ecx, [ecx]
mov esi, dword [esp + 0x10]
test esi, esi
je 0x421221
xor ecx, ecx
test esi, esi
jbe 0x42117b
mov al, bl
add al, cl
mov dl, 0xd
imul dl
add al, 0x2f
movzx eax, al
mov dl, byte [eax + 0x469490]
xor dl, byte [esp + ecx + 0x124]
xor dl, 0xce
mov byte [esp + ecx + 0x124], dl
inc ecx
cmp ecx, esi
jb 0x421152
mov eax, dword [esp + 0x18]
add ebx, esi
cmp ebx, eax
jbe 0x42118d
sub eax, ebx
add esi, eax
mov dword [esp + 0x10], esi
test esi, esi
je 0x421221
push 0
lea eax, [esp + 0x20]
push eax
push esi
mov esi, dword [esp + 0x20]
lea ecx, [esp + 0x130]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x4211db
push 0
lea edx, [esp + 0x14]
push edx
push 0x400
lea eax, [esp + 0x130]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov edi, eax
test edi, edi
jne 0x421140
jmp 0x421225
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.WinErr_d
push 5
call fcn.0041d220
add esp, 0xc
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push ebp
call esi
lea ecx, [esp + 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x514]
call fcn.00430cd9
add esp, 0x518
ret
test edi, edi
jne 0x42126f
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.WinErr_d
push 5
call fcn.0041d220
mov edx, dword [esp + 0x20]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
add esp, 0xc
push edx
call esi
push ebp
call esi
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
pop edi
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x514]
call fcn.00430cd9
add esp, 0x518
ret
mov ecx, dword [esp + 0x14]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
call esi
push ebp
call esi
mov edx, dword [esp + 0x52c]
push 3
push edx
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
test eax, eax
jne 0x4212c7
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.WinErr_d
push 5
call fcn.0041d220
add esp, 0xc
pop edi
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x514]
call fcn.00430cd9
add esp, 0x518
ret
mov ecx, dword [esp + 0x524]
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
call fcn.00430cd9
add esp, 0x518
ret