Function at 0x4092e0
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 [0x4255e0]
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 0x409355
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push ebx
push str.File_s__WinErr_d
push 3
call fcn.00408d90
add esp, 0x10
pop esi
pop ebp
xor al, al
pop ebx
mov ecx, dword [esp + 0x518]
xor ecx, esp
call fcn.0040e9b5
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 0x409393
mov edx, dword [str..tmp]
mov al, byte [0x41e768]
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 0x4093f3
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.00408d90
add esp, 0x10
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor al, al
jmp 0x4095a3
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 0x409435
cmp eax, 4
ja 0x40942e
push ebx
push str.File_s_too_small_
push 0xa
call fcn.00408d90
add esp, 0xc
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor al, al
jmp 0x4095a3
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 0x40952c
lea esp, [esp]
mov esi, dword [esp + 0x14]
test esi, esi
je 0x409528
xor ecx, ecx
test esi, esi
jbe 0x40949b
mov al, bl
add al, cl
mov dl, 0xd
imul dl
add al, 0x2f
movzx eax, al
mov dl, byte [eax + 0x4251c8]
xor dl, byte [esp + ecx + 0x128]
xor dl, 0xce
mov byte [esp + ecx + 0x128], dl
inc ecx
cmp ecx, esi
jb 0x409472
mov eax, dword [esp + 0x18]
add ebx, esi
cmp ebx, eax
jbe 0x4094ad
sub eax, ebx
add esi, eax
mov dword [esp + 0x14], esi
test esi, esi
je 0x409528
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 0x4094f7
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 0x409460
jmp 0x40952c
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.WinErr_d
push 5
call fcn.00408d90
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 0x4095a3
test edi, edi
jne 0x409561
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.WinErr_d
push 5
call fcn.00408d90
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 0x4095a3
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 0x4095a1
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.WinErr_d
push 5
call fcn.00408d90
add esp, 0xc
xor al, al
jmp 0x4095a3
mov al, 1
mov ecx, dword [esp + 0x528]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0040e9b5
add esp, 0x51c
ret