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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
mov rbx, qword [rdx]
lea rbp, [0x14021d5f0]
mov rdi, qword [rdx + 8]
mov rsi, rcx
mov eax, dword [rcx + 0x28]
mov r11, rdi
and r11, 0xffffffffffffffe0
not eax
add r11, rbx
mov r10, rbx
cmp rbx, r11
jae 0x140017579
movzx ecx, byte [r10 + 2]
movzx r9d, byte [r10 + 3]
shl r9, 8
or r9, rcx
movzx ecx, byte [r10 + 1]
shl r9, 8
or r9, rcx
movzx ecx, byte [r10]
shl r9, 8
or r9, rcx
mov ecx, eax
xor r9, rcx
mov rax, r9
shr rax, 0x10
movzx edx, al
mov rax, r9
shr rax, 8
movzx ecx, al
mov rax, r9
shr rax, 0x18
mov r8d, dword [rbp + rdx*4 + 0x3400]
xor r8d, dword [rbp + rcx*4 + 0x3800]
xor r8d, dword [rbp + rax*4 + 0x3000]
movzx eax, byte [r10 + 0xe]
xor r8d, dword [rbp + rax*4 + 0x400]
movzx eax, byte [r10 + 0xd]
xor r8d, dword [rbp + rax*4 + 0x800]
movzx eax, byte [r10 + 0xc]
xor r8d, dword [rbp + rax*4 + 0xc00]
movzx eax, byte [r10 + 0xb]
xor r8d, dword [rbp + rax*4 + 0x1000]
movzx eax, byte [r10 + 0xa]
xor r8d, dword [rbp + rax*4 + 0x1400]
movzx eax, byte [r10 + 9]
xor r8d, dword [rbp + rax*4 + 0x1800]
movzx eax, byte [r10 + 8]
xor r8d, dword [rbp + rax*4 + 0x1c00]
movzx eax, byte [r10 + 7]
xor r8d, dword [rbp + rax*4 + 0x2000]
movzx eax, byte [r10 + 6]
xor r8d, dword [rbp + rax*4 + 0x2400]
movzx eax, byte [r10 + 0xf]
xor r8d, dword [rbp + rax*4]
movzx eax, byte [r10 + 5]
xor r8d, dword [rbp + rax*4 + 0x2800]
movzx eax, byte [r10 + 4]
xor r8d, dword [rbp + rax*4 + 0x2c00]
movzx eax, r9b
movzx r9d, byte [r10 + 0x13]
shl r9, 8
xor r8d, dword [rbp + rax*4 + 0x3c00]
movzx eax, byte [r10 + 0x12]
or r9, rax
movzx eax, byte [r10 + 0x11]
shl r9, 8
or r9, rax
movzx eax, byte [r10 + 0x10]
shl r9, 8
or r9, rax
mov eax, r8d
xor r9, rax
mov rax, r9
shr rax, 0x10
movzx edx, al
mov rax, r9
shr rax, 8
movzx ecx, al
mov eax, dword [rbp + rdx*4 + 0x3400]
xor eax, dword [rbp + rcx*4 + 0x3800]
mov rcx, r9
shr rcx, 0x18
xor eax, dword [rbp + rcx*4 + 0x3000]
movzx ecx, byte [r10 + 0x1e]
xor eax, dword [rbp + rcx*4 + 0x400]
movzx ecx, byte [r10 + 0x1d]
xor eax, dword [rbp + rcx*4 + 0x800]
movzx ecx, byte [r10 + 0x1c]
xor eax, dword [rbp + rcx*4 + 0xc00]
movzx ecx, byte [r10 + 0x1b]
xor eax, dword [rbp + rcx*4 + 0x1000]
movzx ecx, byte [r10 + 0x1a]
xor eax, dword [rbp + rcx*4 + 0x1400]
movzx ecx, byte [r10 + 0x19]
xor eax, dword [rbp + rcx*4 + 0x1800]
movzx ecx, byte [r10 + 0x18]
xor eax, dword [rbp + rcx*4 + 0x1c00]
movzx ecx, byte [r10 + 0x17]
xor eax, dword [rbp + rcx*4 + 0x2000]
movzx ecx, byte [r10 + 0x16]
xor eax, dword [rbp + rcx*4 + 0x2400]
movzx ecx, byte [r10 + 0x1f]
xor eax, dword [rbp + rcx*4]
movzx ecx, byte [r10 + 0x15]
xor eax, dword [rbp + rcx*4 + 0x2800]
movzx ecx, byte [r10 + 0x14]
add r10, 0x20
xor eax, dword [rbp + rcx*4 + 0x2c00]
movzx ecx, r9b
xor eax, dword [rbp + rcx*4 + 0x3c00]
cmp r10, r11
jb 0x140017370
mov r9, rdi
sub r9, r10
add r9, rbx
and r9, 0xfffffffffffffff0
add r9, r10
cmp r10, r9
jae 0x140017694
movzx ecx, byte [r10 + 2]
movzx r8d, byte [r10 + 3]
shl r8, 8
or r8, rcx
movzx ecx, byte [r10 + 1]
shl r8, 8
or r8, rcx
movzx ecx, byte [r10]
shl r8, 8
or r8, rcx
mov ecx, eax
xor r8, rcx
mov rax, r8
shr rax, 0x10
movzx edx, al
mov rax, r8
shr rax, 8
movzx ecx, al
mov eax, dword [rbp + rdx*4 + 0x3400]
xor eax, dword [rbp + rcx*4 + 0x3800]
mov rcx, r8
shr rcx, 0x18
xor eax, dword [rbp + rcx*4 + 0x3000]
movzx ecx, byte [r10 + 0xe]
xor eax, dword [rbp + rcx*4 + 0x400]
movzx ecx, byte [r10 + 0xd]
xor eax, dword [rbp + rcx*4 + 0x800]
movzx ecx, byte [r10 + 0xc]
xor eax, dword [rbp + rcx*4 + 0xc00]
movzx ecx, byte [r10 + 0xb]
xor eax, dword [rbp + rcx*4 + 0x1000]
movzx ecx, byte [r10 + 0xa]
xor eax, dword [rbp + rcx*4 + 0x1400]
movzx ecx, byte [r10 + 9]
xor eax, dword [rbp + rcx*4 + 0x1800]
movzx ecx, byte [r10 + 8]
xor eax, dword [rbp + rcx*4 + 0x1c00]
movzx ecx, byte [r10 + 7]
xor eax, dword [rbp + rcx*4 + 0x2000]
movzx ecx, byte [r10 + 6]
xor eax, dword [rbp + rcx*4 + 0x2400]
movzx ecx, byte [r10 + 0xf]
xor eax, dword [rbp + rcx*4]
movzx ecx, byte [r10 + 5]
xor eax, dword [rbp + rcx*4 + 0x2800]
movzx ecx, byte [r10 + 4]
add r10, 0x10
xor eax, dword [rbp + rcx*4 + 0x2c00]
movzx ecx, r8b
xor eax, dword [rbp + rcx*4 + 0x3c00]
cmp r10, r9
jb 0x140017592
lea r8, [rdi + rbx]
cmp r10, r8
jae 0x1400176b9
nop dword [rax]
movzx edx, byte [r10]
inc r10
movzx ecx, al
xor rdx, rcx
shr eax, 8
xor eax, dword [rbp + rdx*4]
cmp r10, r8
jb 0x1400176a0
mov rbx, qword [rsp + 8]
not eax
mov rbp, qword [rsp + 0x10]
mov rdi, qword [rsp + 0x20]
mov dword [rsi + 0x28], eax
xor al, al
mov rsi, qword [rsp + 0x18]
ret