Function at 0x4088c0
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push rbx
test rdx, rdx
je 0x408b91
test r8d, r8d
not ecx
je 0x408901
test dl, 3
je 0x408910
lea r9, [0x0040e320]
jmp 0x4088e5
test dl, 3
je 0x408910
add rdx, 1
mov r10d, ecx
shr ecx, 8
xor r10b, byte [rdx - 1]
movzx r10d, r10b
xor ecx, dword [r9 + r10*4]
sub r8d, 1
jne 0x4088e0
mov eax, ecx
not eax
pop rbx
ret
cmp r8d, 0x1f
jbe 0x408b95
lea r10d, [r8 - 0x20]
lea r9, [0x0040e320]
shr r10d, 5
add r10, 1
shl r10, 5
add r10, rdx
mov eax, dword [rdx]
xor eax, ecx
mov ebx, eax
movzx ecx, al
mov r11d, eax
shr ebx, 0x18
mov ecx, dword [r9 + rcx*4 + 0xc00]
shr r11d, 0x10
xor ecx, dword [r9 + rbx*4]
movzx eax, ah
movzx r11d, r11b
xor ecx, dword [rdx + 4]
xor ecx, dword [r9 + rax*4 + 0x800]
xor ecx, dword [r9 + r11*4 + 0x400]
mov ebx, ecx
movzx eax, cl
mov r11d, ecx
shr ebx, 0x18
mov eax, dword [r9 + rax*4 + 0xc00]
shr r11d, 0x10
xor eax, dword [r9 + rbx*4]
movzx ecx, ch
movzx r11d, r11b
xor eax, dword [rdx + 8]
xor eax, dword [r9 + rcx*4 + 0x800]
xor eax, dword [r9 + r11*4 + 0x400]
mov ebx, eax
movzx ecx, al
mov r11d, eax
shr ebx, 0x18
mov ecx, dword [r9 + rcx*4 + 0xc00]
shr r11d, 0x10
xor ecx, dword [r9 + rbx*4]
movzx eax, ah
movzx r11d, r11b
xor ecx, dword [rdx + 0xc]
xor ecx, dword [r9 + rax*4 + 0x800]
xor ecx, dword [r9 + r11*4 + 0x400]
mov ebx, ecx
movzx eax, cl
mov r11d, ecx
shr ebx, 0x18
mov eax, dword [r9 + rax*4 + 0xc00]
shr r11d, 0x10
xor eax, dword [r9 + rbx*4]
movzx ecx, ch
movzx r11d, r11b
xor eax, dword [rdx + 0x10]
xor eax, dword [r9 + rcx*4 + 0x800]
xor eax, dword [r9 + r11*4 + 0x400]
mov ebx, eax
movzx ecx, al
mov r11d, eax
shr ebx, 0x18
mov ecx, dword [r9 + rcx*4 + 0xc00]
shr r11d, 0x10
xor ecx, dword [r9 + rbx*4]
movzx eax, ah
movzx r11d, r11b
xor ecx, dword [rdx + 0x14]
xor ecx, dword [r9 + rax*4 + 0x800]
xor ecx, dword [r9 + r11*4 + 0x400]
mov r11d, ecx
mov ebx, ecx
movzx eax, cl
shr r11d, 0x10
shr ebx, 0x18
mov eax, dword [r9 + rax*4 + 0xc00]
xor eax, dword [r9 + rbx*4]
movzx ecx, ch
movzx r11d, r11b
xor eax, dword [rdx + 0x18]
add rdx, 0x20
xor eax, dword [r9 + rcx*4 + 0x800]
xor eax, dword [r9 + r11*4 + 0x400]
mov r11d, eax
movzx ebx, al
mov ecx, eax
shr r11d, 0x18
mov ebx, dword [r9 + rbx*4 + 0xc00]
shr ecx, 0x10
xor ebx, dword [r9 + r11*4]
movzx eax, ah
movzx ecx, cl
xor ebx, dword [rdx - 4]
xor ebx, dword [r9 + rax*4 + 0x800]
xor ebx, dword [r9 + rcx*4 + 0x400]
mov r11d, ebx
mov eax, ebx
movzx ecx, bl
shr r11d, 0x18
shr eax, 0x10
mov ecx, dword [r9 + rcx*4 + 0xc00]
movzx ebx, bh
xor ecx, dword [r9 + r11*4]
movzx eax, al
xor ecx, dword [r9 + rbx*4 + 0x800]
xor ecx, dword [r9 + rax*4 + 0x400]
cmp rdx, r10
jne 0x408934
and r8d, 0x1f
cmp r8d, 3
jbe 0x408b9d
lea eax, [r8 - 4]
lea r9, [0x0040e320]
shr eax, 2
lea rbx, [r10 + rax*4 + 4]
nop dword [rax]
add r10, 4
xor ecx, dword [r10 - 4]
mov edx, ecx
mov r11d, ecx
movzx eax, cl
shr edx, 0x18
shr r11d, 0x10
mov eax, dword [r9 + rax*4 + 0xc00]
xor eax, dword [r9 + rdx*4]
movzx edx, ch
movzx r11d, r11b
xor eax, dword [r9 + rdx*4 + 0x800]
mov ecx, dword [r9 + r11*4 + 0x400]
xor ecx, eax
cmp r10, rbx
jne 0x408b10
and r8d, 3
test r8d, r8d
je 0x408901
lea eax, [r8 - 1]
lea r9, [0x0040e320]
lea rax, [rbx + rax + 1]
nop
add rbx, 1
mov edx, ecx
shr ecx, 8
xor dl, byte [rbx - 1]
movzx edx, dl
xor ecx, dword [r9 + rdx*4]
cmp rbx, rax
jne 0x408b70
mov eax, ecx
not eax
jmp 0x408905
xor eax, eax
pop rbx
ret
mov r10, rdx
jmp 0x408aec
mov rbx, r10
jmp 0x408b55