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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r15
sub rsp, 0x20
mov rax, qword [rcx + 0x10]
lea rbx, [fcn.14016cf00]
xor r12d, r12d
mov ebp, r9d
mov r15, r8
mov rsi, rdx
mov rdi, rcx
cmp rbx, rax
je 0x14016cf99
test rax, rax
je 0x14016cf99
mov rax, qword [rcx + 0x20]
mov rcx, qword [rcx]
test rax, rax
je 0x14016cf50
call qword [case.0x1400d90b6.0]
jmp 0x14016cf72
test rsi, rsi
je 0x14016cf6d
mov rax, qword [rdx + 8]
test rax, rax
je 0x14016cf6d
mov rdx, rcx
mov rcx, qword [rsi + 0x10]
call qword [case.0x1400d90b6.0]
jmp 0x14016cf72
call fcn.1401b3750
mov qword [rdi], r12
mov qword [rdi + 8], 0xffffffffffffffff
mov qword [rdi + 0x18], r12
mov qword [rdi + 0x20], r12
mov qword [rdi + 0x28], r12
mov qword [rdi + 0x30], r12
mov qword [rdi + 0x38], r12
mov qword [rdi + 0x40], r12
mov qword [rdi + 0x48], r12
mov qword [rdi + 0x10], rbx
test r15, r15
je 0x14016d1f5
mov rbx, qword [rdi]
test rbx, rbx
jne 0x14016d096
test rsi, rsi
je 0x14016cfd4
mov rax, qword [rsi]
test rax, rax
je 0x14016cfd4
mov rcx, qword [rsi + 0x10]
lea edx, [rbx + 1]
mov r8d, 0x5e0
call qword [case.0x1400d90b6.0]
jmp 0x14016cfde
mov ecx, 0x5e0
call fcn.1401b57f8
mov rbx, rax
test rax, rax
je 0x14016d163
mov qword [rdi], rax
lea rax, [0x14016c6a0]
mov qword [rdi + 0x18], rax
lea rax, [0x14016cac0]
mov qword [rdi + 0x20], rax
lea rax, [fcn.14016cd30]
mov qword [rdi + 0x40], rax
mov qword [rbx + 0x128], 0xffffffffffffffff
mov qword [rbx + 8], r12
mov qword [rbx + 0x10], 0xffffffffffffffff
mov qword [rbx + 0x18], r12
mov qword [rbx + 0x20], r12
mov qword [rbx + 0x28], r12
mov qword [rbx + 0x30], r12
mov qword [rbx + 0x38], r12
mov qword [rbx + 0x40], r12
mov qword [rbx + 0x48], r12
mov qword [rbx + 0x50], r12
mov qword [rbx + 0x178], r12
mov qword [rbx + 0x180], 0xffffffffffffffff
mov qword [rbx + 0x188], r12
mov qword [rbx + 0x190], r12
mov qword [rbx + 0x198], r12
mov qword [rbx + 0x1a0], r12
mov qword [rbx + 0x1a8], r12
mov qword [rbx + 0x1b0], r12
mov qword [rbx + 0x1b8], r12
mov qword [rbx + 0x1c0], r12
mov qword [rbx + 0x1c8], r12
mov qword [rsp + 0x40], r14
mov r14, qword [rbx + 0x1c8]
mov dword [rbx], r12d
mov dword [rbx + 0x58], r12d
mov dword [rbx + 0x60], ebp
test r14, r14
je 0x14016d14a
mov rdi, qword [r14]
test rdi, rdi
je 0x14016d125
mov rcx, qword [rdi + 0x18]
test rcx, rcx
je 0x14016d0d5
lea r8, [0x140174fd0]
mov rdx, rsi
call fcn.140174d90
mov rcx, qword [rdi + 0x20]
test rcx, rcx
je 0x14016d0ed
lea r8, [0x140174fd0]
mov rdx, rsi
call fcn.140174d90
lea rcx, [rdi + 0x38]
mov rdx, rsi
lea r8, [0x14016a860]
call fcn.140174df0
test rsi, rsi
je 0x14016d11d
mov rax, qword [rsi + 8]
test rax, rax
je 0x14016d11d
mov rcx, qword [rsi + 0x10]
mov rdx, rdi
call qword [case.0x1400d90b6.0]
jmp 0x14016d12a
mov rcx, rdi
call fcn.1401b3750
test rsi, rsi
je 0x14016d142
mov rax, qword [rsi + 8]
test rax, rax
je 0x14016d142
mov rcx, qword [rsi + 0x10]
mov rdx, r14
call qword [case.0x1400d90b6.0]
jmp 0x14016d14a
mov rcx, r14
call fcn.1401b3750
mov rcx, rsi
call fcn.140175090
mov r14, qword [rsp + 0x40]
mov qword [rbx + 0x1c8], rax
test rax, rax
jne 0x14016d16d
mov eax, 5
jmp 0x14016d1fa
mov eax, dword [0x140250ea8]
lea r8, [rbx + 0x1e6]
mov dword [rbx + 0x1e0], eax
movzx eax, word [0x140250eac]
mov word [rbx + 0x1e4], ax
cmp ebp, 0xf
ja 0x14016d1f5
mov byte [r8], r12b
lea r10, [0x1402530e0]
mov byte [r8 + 1], bpl
mov edx, 0xffffffff
mov r9d, 2
nop dword [rax]
movzx eax, byte [r8]
lea r8, [r8 + 1]
movzx ecx, dl
xor rcx, rax
shr edx, 8
xor edx, dword [r10 + rcx*4]
sub r9, 1
jne 0x14016d1b0
not edx
mov r8, r15
mov dword [rbx + 0x1e8], edx
mov rcx, rbx
mov rdx, rsi
mov qword [rbx + 0x1d0], r12
mov qword [rbx + 0x1d8], 0xc
call fcn.14016cd30
jmp 0x14016d1fa
mov eax, 0xb
mov rbx, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r12
pop rdi
ret