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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x28
mov rsi, rdx
mov r10, r8
test rdx, rdx
je 0x408ec4
not ecx
mov r8d, ecx
cmp r10, 0x2e
jbe 0x408dd6
test dl, 7
je 0x408f0c
lea rdi, [0x0041c980]
jmp 0x408b9a
test sil, 7
je 0x408ec8
add rsi, 1
mov eax, r8d
xor r8b, byte [rsi - 1]
shr eax, 8
movzx r8d, r8b
xor eax, dword [rdi + r8*4]
mov r8d, eax
sub r10, 1
jne 0x408b90
mov rbx, rsi
mov rax, 0xffffffffffffffff
mov rdx, 0xffffffffffffffff
mov qword [rsp + 8], rbx
xor r11d, r11d
xor r15d, r15d
xor r12d, r12d
mov qword [rsp + 0x10], rax
xor r13d, r13d
lea r9, [0x0041a980]
mov qword [rsp + 0x80], r10
mov qword [rsp + 0x18], rdi
mov qword [rsp], rdx
mov rdx, rsi
nop dword [rax + rax]
mov rdi, qword [rdx + 8]
xor r8, qword [rdx]
add rdx, 0x28
mov r10d, 1
mov rsi, qword [rdx - 0x18]
mov rbx, qword [rdx - 0x10]
movzx ecx, r8b
mov rbp, r8
xor rdi, r13
mov r14, qword [rdx - 8]
mov r8d, dword [r9 + rcx*4]
mov qword [rsp + 0x78], rdx
xor rsi, r12
movzx ecx, dil
xor rbx, r15
mov r13d, dword [r9 + rcx*4]
movzx ecx, sil
xor r14, r11
mov r12d, dword [r9 + rcx*4]
movzx ecx, bl
mov r15d, dword [r9 + rcx*4]
movzx ecx, r14b
mov r11d, dword [r9 + rcx*4]
nop dword [rax + rax]
lea ecx, [r10*8]
mov rdx, rbp
movsxd rax, r10d
add r10d, 1
shr rdx, cl
shl rax, 8
movzx edx, dl
add rdx, rax
xor r8d, dword [r9 + rdx*4]
mov rdx, rdi
shr rdx, cl
movzx edx, dl
add rdx, rax
xor r13d, dword [r9 + rdx*4]
mov rdx, rsi
shr rdx, cl
movzx edx, dl
add rdx, rax
xor r12d, dword [r9 + rdx*4]
mov rdx, rbx
shr rdx, cl
movzx edx, dl
add rdx, rax
xor r15d, dword [r9 + rdx*4]
mov rdx, r14
shr rdx, cl
movzx edx, dl
add rax, rdx
xor r11d, dword [r9 + rax*4]
cmp r10d, 8
jne 0x408c60
sub qword [rsp], 1
mov rdx, qword [rsp + 0x78]
jne 0x408c00
mov rax, qword [rsp + 0x10]
mov rbx, qword [rsp + 8]
mov edx, r13d
mov ecx, r12d
mov r10, qword [rsp + 0x80]
mov rdi, qword [rsp + 0x18]
lea rax, [rax + rax*4]
lea rsi, [rbx + rax*8]
mov eax, r15d
xor r8, qword [rsi]
mov r9d, 8
nop word [rax + rax]
mov rbx, r8
movzx r8d, r8b
mov r8d, dword [rdi + r8*4]
shr rbx, 8
xor r8, rbx
sub r9d, 1
jne 0x408d10
mov r8d, r8d
xor rdx, qword [rsi + 8]
xor rdx, r8
mov r8d, 8
nop dword [rax + rax]
mov r9, rdx
movzx edx, dl
mov edx, dword [rdi + rdx*4]
shr r9, 8
xor rdx, r9
sub r8d, 1
jne 0x408d40
xor rcx, qword [rsi + 0x10]
mov edx, edx
xor rdx, rcx
mov ecx, 8
nop dword [rax]
mov r8, rdx
movzx edx, dl
mov edx, dword [rdi + rdx*4]
shr r8, 8
xor rdx, r8
sub ecx, 1
jne 0x408d68
mov edx, edx
xor rax, qword [rsi + 0x18]
xor rax, rdx
mov edx, 8
nop dword [rax + rax]
mov rcx, rax
movzx eax, al
mov eax, dword [rdi + rax*4]
shr rcx, 8
xor rax, rcx
sub edx, 1
jne 0x408d90
mov eax, eax
xor r11, qword [rsi + 0x20]
xor r11, rax
mov eax, 8
nop dword [rax + rax]
mov rdx, r11
movzx r11d, r11b
mov r11d, dword [rdi + r11*4]
shr rdx, 8
xor r11, rdx
sub eax, 1
jne 0x408db8
mov r8d, r11d
add rsi, 0x28
cmp r10, 7
jbe 0x408ef8
lea rax, [r10 - 8]
lea rdi, [0x0041c980]
shr rax, 3
lea rcx, [rsi + rax*8 + 8]
nop dword [rax]
mov eax, r8d
xor r8b, byte [rsi]
add rsi, 8
movzx r8d, r8b
shr eax, 8
xor eax, dword [rdi + r8*4]
mov edx, eax
xor al, byte [rsi - 7]
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
mov eax, edx
xor dl, byte [rsi - 6]
movzx edx, dl
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov edx, eax
xor al, byte [rsi - 5]
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
mov eax, edx
xor dl, byte [rsi - 4]
movzx edx, dl
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov edx, eax
xor al, byte [rsi - 3]
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
mov eax, edx
xor dl, byte [rsi - 2]
movzx edx, dl
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov r8d, eax
xor al, byte [rsi - 1]
movzx eax, al
shr r8d, 8
xor r8d, dword [rdi + rax*4]
cmp rsi, rcx
jne 0x408df8
and r10d, 7
test r10, r10
je 0x408eae
add r10, rcx
lea rdi, [0x0041c980]
nop word [rax + rax]
add rcx, 1
mov eax, r8d
xor r8b, byte [rcx - 1]
shr eax, 8
movzx r8d, r8b
xor eax, dword [rdi + r8*4]
mov r8d, eax
cmp rcx, r10
jne 0x408e90
mov eax, r8d
not eax
add rsp, 0x28
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor eax, eax
jmp 0x408eb3
movabs rax, 0xcccccccccccccccd
mul r10
shr rdx, 5
lea rax, [rdx + rdx*4]
sub rdx, 1
shl rax, 3
sub r10, rax
test rdx, rdx
je 0x408f00
mov rax, rdx
mov rbx, rsi
jmp 0x408bca
mov rcx, rsi
jmp 0x408e7b
xor r11d, r11d
xor eax, eax
xor ecx, ecx
jmp 0x408d01
movabs rax, 0xcccccccccccccccd
lea rdi, [0x0041c980]
mul r10
mov rax, rdx
shr rax, 5
lea rdx, [rax + rax*4]
shl rdx, 3
sub r10, rdx
lea rdx, [rax - 1]
jmp 0x408ee8
mov r8d, r8d
jmp 0x408b50