Function at 0x40b320
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, 0x51c
mov eax, dword [0x4285e0]
xor eax, esp
push ebx
mov ebx, dword [esp + 0x524]
push ebp
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CreateFileA]
push 0
push 0x8000027
push 3
push 0
push 3
push 0x80000000
push ebx
mov dword [esp + 0x540], eax
mov dword [esp + 0x34], ebx
call esi
mov ebp, eax
cmp ebp, 0xffffffff
jne 0x40b395
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push ebx
push str.File_s__WinErr_d
push 3
call fcn.0040add0
add esp, 0x10
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x518]
xor ecx, esp
call fcn.00410a75
add esp, 0x51c
ret
push edi
xor eax, eax
mov byte [esp + 0x24], 0
mov ecx, 0x40
lea edi, [esp + 0x25]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x24]
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 + 0x28]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea edi, [esp + 0x24]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x40b3d3
mov edx, dword [str..tmp]
mov al, byte [0x421974]
push 0
push 0x20
push 2
push 0
push 3
push 0xc0000000
lea ecx, [esp + 0x3c]
mov dword [edi], edx
push ecx
mov byte [edi + 4], al
call esi
cmp eax, 0xffffffff
mov dword [esp + 0x10], eax
jne 0x40b433
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea edx, [esp + 0x28]
push edx
push str.File_s__WinErr_d
push 3
call fcn.0040add0
add esp, 0x10
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor al, al
jmp 0x40b5e3
push 0
push ebp
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov cl, byte [esp + 0x534]
test cl, cl
mov dword [esp + 0x18], eax
je 0x40b475
cmp eax, 4
ja 0x40b46e
push ebx
push str.File_s_too_small_
push 0xa
call fcn.0040add0
add esp, 0xc
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor al, al
jmp 0x40b5e3
sub eax, 4
mov dword [esp + 0x18], eax
push 0
lea eax, [esp + 0x18]
push eax
push 0x400
lea ecx, [esp + 0x134]
push ecx
push ebp
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov edi, eax
xor ebx, ebx
test edi, edi
je 0x40b56c
lea esp, [esp]
mov esi, dword [esp + 0x14]
test esi, esi
je 0x40b568
xor ecx, ecx
test esi, esi
jbe 0x40b4db
mov al, bl
add al, cl
mov dl, 0xd
imul dl
add al, 0x2f
movzx eax, al
mov dl, byte [eax + 0x4281d0]
xor dl, byte [esp + ecx + 0x128]
xor dl, 0xce
mov byte [esp + ecx + 0x128], dl
inc ecx
cmp ecx, esi
jb 0x40b4b2
mov eax, dword [esp + 0x18]
add ebx, esi
cmp ebx, eax
jbe 0x40b4ed
sub eax, ebx
add esi, eax
mov dword [esp + 0x14], esi
test esi, esi
je 0x40b568
push 0
lea eax, [esp + 0x24]
push eax
push esi
mov esi, dword [esp + 0x1c]
lea ecx, [esp + 0x134]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x40b537
push 0
lea edx, [esp + 0x18]
push edx
push 0x400
lea eax, [esp + 0x134]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov edi, eax
test edi, edi
jne 0x40b4a0
jmp 0x40b56c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.WinErr_d
push 5
call fcn.0040add0
add esp, 0xc
push esi
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
push ebp
call esi
lea ecx, [esp + 0x24]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
xor al, al
jmp 0x40b5e3
test edi, edi
jne 0x40b5a1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.WinErr_d
push 5
call fcn.0040add0
mov edx, dword [esp + 0x1c]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
add esp, 0xc
push edx
call esi
push ebp
call esi
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
xor al, al
jmp 0x40b5e3
mov ecx, dword [esp + 0x10]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
push ecx
call esi
push ebp
call esi
mov edx, dword [esp + 0x1c]
push 3
push edx
lea eax, [esp + 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
test eax, eax
jne 0x40b5e1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.WinErr_d
push 5
call fcn.0040add0
add esp, 0xc
xor al, al
jmp 0x40b5e3
mov al, 1
mov ecx, dword [esp + 0x528]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00410a75
add esp, 0x51c
ret