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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rcx
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x70
mov qword [rsp + 0x58], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 0x20], rsi
mov r15, r9
mov rdi, rcx
mov r12, qword [rsp + 0xc0]
test r12, r12
jne 0x180021366
mov eax, 0x80004005
jmp 0x180021728
mov eax, edx
lea rcx, [rax + rax*2]
mov rax, qword [rdi + 0x1a0]
mov r13, qword [rax + rcx*8]
mov r9, qword [rax + rcx*8 + 8]
mov qword [rsp + 0x48], r9
mov r14d, dword [rax + rcx*8 + 0x10]
mov eax, dword [rax + rcx*8 + 0x14]
mov dword [rsp + 0x34], eax
mov qword [rsp + 0x38], 0
mov rax, qword [r12]
lea r9, [rsp + 0x38]
mov rcx, r12
call qword [rax + 0x38]
mov ebx, eax
cmp eax, 1
jne 0x1800213c4
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1800213bd
mov rax, qword [rcx]
call qword [rax + 0x10]
xor eax, eax
jmp 0x180021728
test eax, eax
js 0x180021716
xor esi, esi
or ebp, 0xffffffff
lea rdx, [0x1800fee28]
mov ecx, 0x400
call fcn.1800626b4
mov rbx, rax
mov qword [rsp + 0x60], rax
test rax, rax
je 0x18002143f
xor edx, edx
mov r8d, 0x400
mov rcx, rax
call fcn.1800644c0
xor r11d, r11d
mov rdx, rbx
nop word [rax + rax]
mov eax, r11d
mov ecx, 8
test al, 1
je 0x180021425
shr eax, 1
xor eax, 0xedb88320
jmp 0x180021427
shr eax, 1
dec ecx
test ecx, ecx
jg 0x180021418
mov dword [rdx], eax
inc r11d
add rdx, 4
cmp r11d, 0x100
jl 0x180021410
test r13, r13
je 0x18002167c
nop dword [rax + rax]
mov qword [rsp + 0x40], 0
mov rax, r13
sub rax, rsi
cmp rax, 0x20000
jbe 0x180021474
mov dword [rsp + 0xc0], 0x20000
jmp 0x180021480
mov eax, r13d
sub eax, esi
mov dword [rsp + 0xc0], eax
mov rcx, qword [rdi + 0x188]
mov rax, qword [rcx]
lea rdx, [rsp + 0xc0]
mov qword [rsp + 0x28], rdx
lea rdx, [rsp + 0x40]
mov qword [rsp + 0x20], rdx
mov r9, rsi
mov r8d, dword [rsp + 0x34]
mov rdx, qword [rsp + 0x48]
call qword [rax + 0x20]
test eax, eax
jne 0x180021646
mov rdx, qword [rsp + 0x40]
test rdx, rdx
je 0x180021646
mov r8d, dword [rsp + 0xc0]
test r8d, r8d
je 0x180021646
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x18002150c
mov dword [rsp + 0x30], eax
mov rax, qword [rcx]
lea r9, [rsp + 0x30]
call qword [rax + 0x18]
mov edi, eax
test eax, eax
jne 0x1800215fc
mov eax, dword [rsp + 0xc0]
cmp dword [rsp + 0x30], eax
jne 0x18002159b
lea rax, [rsi + r15]
mov qword [rsp + 0x50], rax
mov rax, qword [r12]
lea rdx, [rsp + 0x50]
mov rcx, r12
call qword [rax + 0x20]
mov edi, eax
test eax, eax
jne 0x180021621
mov edx, dword [rsp + 0xc0]
test r14d, r14d
je 0x180021582
mov r8, qword [rsp + 0x40]
test r8, r8
je 0x180021580
test edx, edx
je 0x180021580
test rbx, rbx
je 0x180021580
test edx, edx
je 0x180021582
mov r9, rdx
nop word [rax + rax]
movzx ecx, bpl
movzx eax, byte [r8]
xor rcx, rax
mov eax, ebp
shr eax, 8
mov ebp, dword [rbx + rcx*4]
xor ebp, eax
inc r8
sub r9, 1
jne 0x180021560
jmp 0x180021582
xor ebp, ebp
add rsi, rdx
cmp rsi, r13
jae 0x18002167c
mov rdi, qword [rsp + 0xa0]
jmp 0x180021450
mov rdi, qword [r12]
call fcn.1800030e0
mov edx, eax
mov rcx, r12
call qword [rdi + 0x28]
mov edi, eax
test eax, eax
je 0x1800215d7
test rbx, rbx
je 0x1800215c0
mov rcx, rbx
call fcn.1800626bc
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1800215d0
mov rax, qword [rcx]
call qword [rax + 0x10]
mov eax, edi
jmp 0x180021728
test rbx, rbx
je 0x1800215e5
mov rcx, rbx
call fcn.1800626bc
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1800215f5
mov rax, qword [rcx]
call qword [rax + 0x10]
xor eax, eax
jmp 0x180021728
test rbx, rbx
je 0x18002160a
mov rcx, rbx
call fcn.1800626bc
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x18002161a
mov rax, qword [rcx]
call qword [rax + 0x10]
mov eax, edi
jmp 0x180021728
test rbx, rbx
je 0x18002162f
mov rcx, rbx
call fcn.1800626bc
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x18002163f
mov rax, qword [rcx]
call qword [rax + 0x10]
mov eax, edi
jmp 0x180021728
mov rax, qword [r12]
mov edx, 0xe00e0004
mov rcx, r12
call qword [rax + 0x28]
mov edi, eax
test rbx, rbx
je 0x180021665
mov rcx, rbx
call fcn.1800626bc
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x180021675
mov rdx, qword [rcx]
call qword [rdx + 0x10]
mov eax, edi
jmp 0x180021728
test r14d, r14d
je 0x1800216c0
not r14d
cmp ebp, r14d
je 0x1800216c0
mov rax, qword [r12]
mov edx, 0xe00e0003
mov rcx, r12
call qword [rax + 0x28]
mov edi, eax
test eax, eax
je 0x1800216f4
test rbx, rbx
je 0x1800216ac
mov rcx, rbx
call fcn.1800626bc
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1800216bc
mov rax, qword [rcx]
call qword [rax + 0x10]
mov eax, edi
jmp 0x180021728
mov rax, qword [r12]
xor edx, edx
mov rcx, r12
call qword [rax + 0x28]
mov edi, eax
test eax, eax
je 0x1800216f4
test rbx, rbx
je 0x1800216e0
mov rcx, rbx
call fcn.1800626bc
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1800216f0
mov rax, qword [rcx]
call qword [rax + 0x10]
mov eax, edi
jmp 0x180021728
test rbx, rbx
je 0x180021702
mov rcx, rbx
call fcn.1800626bc
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x180021712
mov rax, qword [rcx]
call qword [rax + 0x10]
xor eax, eax
jmp 0x180021728
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x180021726
mov rax, qword [rcx]
call qword [rax + 0x10]
mov eax, ebx
lea r11, [rsp + 0x70]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret