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

Disassembly:
push rsi
push rbx
not ecx
test r8, r8
je 0x140040079
mov eax, edx
and eax, 3
je 0x140040079
lea r9, [rdx + 1]
movzx eax, byte [rdx]
xor al, cl
movzx r10d, al
lea rax, [0x1401799a0]
shr ecx, 8
xor ecx, dword [rax + r10*4]
mov r10, r8
dec r10
je 0x140040073
mov r11d, r9d
and r11d, 3
je 0x140040073
lea r9, [rdx + 2]
movzx r10d, byte [rdx + 1]
xor r10b, cl
movzx r10d, r10b
shr ecx, 8
xor ecx, dword [rax + r10*4]
mov r10, r8
add r10, 0xfffffffffffffffe
je 0x140040073
mov r11d, r9d
and r11d, 3
je 0x140040073
lea r9, [rdx + 3]
movzx r10d, byte [rdx + 2]
xor r10b, cl
movzx r10d, r10b
shr ecx, 8
xor ecx, dword [rax + r10*4]
mov r10, r8
add r10, 0xfffffffffffffffd
je 0x140040073
mov r11d, r9d
and r11d, 3
je 0x140040073
movzx r9d, byte [rdx + 3]
xor r9b, cl
add rdx, 4
movzx r9d, r9b
shr ecx, 8
xor ecx, dword [rax + r9*4]
add r8, 0xfffffffffffffffc
jmp 0x140040079
mov rdx, r9
mov r8, r10
cmp r8, 0x20
jb 0x140040231
lea rax, [0x1401799a0]
nop word [rax + rax]
xor ecx, dword [rdx]
movzx r9d, cl
movzx esi, ch
mov ebx, dword [rax + rsi*4 + 0x800]
xor ebx, dword [rax + r9*4 + 0xc00]
mov r9d, ecx
shr r9d, 0x10
movzx r9d, r9b
xor ebx, dword [rax + r9*4 + 0x400]
shr ecx, 0x18
xor ebx, dword [rax + rcx*4]
xor ebx, dword [rdx + 4]
movzx r9d, bl
movzx ecx, bh
mov ecx, dword [rax + rcx*4 + 0x800]
xor ecx, dword [rax + r9*4 + 0xc00]
mov r9d, ebx
shr r9d, 0x10
movzx r9d, r9b
xor ecx, dword [rax + r9*4 + 0x400]
shr ebx, 0x18
xor ecx, dword [rax + rbx*4]
xor ecx, dword [rdx + 8]
movzx r9d, cl
movzx esi, ch
mov ebx, dword [rax + rsi*4 + 0x800]
xor ebx, dword [rax + r9*4 + 0xc00]
mov r9d, ecx
shr r9d, 0x10
movzx r9d, r9b
xor ebx, dword [rax + r9*4 + 0x400]
shr ecx, 0x18
xor ebx, dword [rax + rcx*4]
xor ebx, dword [rdx + 0xc]
movzx r9d, bl
movzx ecx, bh
mov ecx, dword [rax + rcx*4 + 0x800]
xor ecx, dword [rax + r9*4 + 0xc00]
mov r9d, ebx
shr r9d, 0x10
movzx r9d, r9b
xor ecx, dword [rax + r9*4 + 0x400]
shr ebx, 0x18
xor ecx, dword [rax + rbx*4]
xor ecx, dword [rdx + 0x10]
movzx r9d, cl
movzx esi, ch
mov ebx, dword [rax + rsi*4 + 0x800]
xor ebx, dword [rax + r9*4 + 0xc00]
mov r9d, ecx
shr r9d, 0x10
movzx r9d, r9b
xor ebx, dword [rax + r9*4 + 0x400]
shr ecx, 0x18
xor ebx, dword [rax + rcx*4]
xor ebx, dword [rdx + 0x14]
movzx r9d, bl
movzx ecx, bh
mov ecx, dword [rax + rcx*4 + 0x800]
xor ecx, dword [rax + r9*4 + 0xc00]
mov r9d, ebx
shr r9d, 0x10
movzx r9d, r9b
xor ecx, dword [rax + r9*4 + 0x400]
shr ebx, 0x18
xor ecx, dword [rax + rbx*4]
xor ecx, dword [rdx + 0x18]
movzx r9d, cl
movzx esi, ch
mov ebx, dword [rax + rsi*4 + 0x800]
xor ebx, dword [rax + r9*4 + 0xc00]
mov r9d, ecx
shr r9d, 0x10
movzx r9d, r9b
xor ebx, dword [rax + r9*4 + 0x400]
shr ecx, 0x18
xor ebx, dword [rax + rcx*4]
xor ebx, dword [rdx + 0x1c]
add rdx, 0x20
movzx r9d, bl
movzx ecx, bh
mov ecx, dword [rax + rcx*4 + 0x800]
xor ecx, dword [rax + r9*4 + 0xc00]
mov r9d, ebx
shr r9d, 0x10
movzx r9d, r9b
xor ecx, dword [rax + r9*4 + 0x400]
shr ebx, 0x18
xor ecx, dword [rax + rbx*4]
add r8, 0xffffffffffffffe0
cmp r8, 0x1f
ja 0x140040090
cmp r8, 4
jb 0x14004028a
lea r9, [0x1401799a0]
nop
xor ecx, dword [rdx]
movzx r10d, cl
movzx eax, ch
mov eax, dword [r9 + rax*4 + 0x800]
xor eax, dword [r9 + r10*4 + 0xc00]
mov r10d, ecx
shr r10d, 0x10
movzx r10d, r10b
xor eax, dword [r9 + r10*4 + 0x400]
shr ecx, 0x18
xor eax, dword [r9 + rcx*4]
add rdx, 4
add r8, 0xfffffffffffffffc
mov ecx, eax
cmp r8, 3
ja 0x140040240
test r8, r8
jne 0x140040291
jmp 0x140040300
mov eax, ecx
test r8, r8
je 0x140040300
test r8b, 1
jne 0x1400402a2
mov rcx, r8
cmp r8, 1
jne 0x1400402c5
jmp 0x140040300
movzx ecx, byte [rdx]
xor cl, al
inc rdx
movzx ecx, cl
lea r9, [0x1401799a0]
shr eax, 8
xor eax, dword [r9 + rcx*4]
lea rcx, [r8 - 1]
cmp r8, 1
je 0x140040300
xor r8d, r8d
lea r9, [0x1401799a0]
nop
movzx r10d, byte [rdx + r8]
xor r10b, al
movzx r10d, r10b
shr eax, 8
xor eax, dword [r9 + r10*4]
movzx r10d, byte [rdx + r8 + 1]
xor r10b, al
movzx r10d, r10b
shr eax, 8
xor eax, dword [r9 + r10*4]
add r8, 2
cmp rcx, r8
jne 0x1400402d0
not eax
pop rbx
pop rsi
ret