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

Disassembly:
push rbp
push rsi
push rdi
push rbx
mov rbp, rsp
test rdx, rdx
je 0x5bccc9
not ecx
test r8, r8
je 0x5bcf89
lea rsi, [r8 - 0x20]
xor r11d, r11d
lea r9, [0x007c4fe0]
nop word cs:[rax + rax]
lea rdi, [rdx + r11]
test dil, 3
je 0x5bccd0
movzx eax, byte [rdi]
movzx edi, cl
xor edi, eax
shr ecx, 8
xor ecx, dword [r9 + rdi*4]
inc r11
dec rsi
cmp r8, r11
jne 0x5bcca0
jmp 0x5bcf89
xor ecx, ecx
jmp 0x5bcf8b
mov r10, r8
sub r10, r11
cmp r10, 0x20
jae 0x5bcd10
cmp r10, 4
jae 0x5bcec4
test r10, r10
je 0x5bcf89
test r10b, 1
jne 0x5bcf36
mov rdx, r10
cmp r10, 1
jne 0x5bcf60
jmp 0x5bcf89
xor ecx, dword [rdi]
movzx ebx, cl
movzx eax, ch
mov eax, dword [r9 + rax*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor eax, dword [r9 + rbx*4 + 0x400]
shr ecx, 0x18
xor eax, dword [r9 + rcx*4]
xor eax, dword [rdi + 4]
movzx ebx, al
movzx ecx, ah
mov ecx, dword [r9 + rcx*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0xc00]
mov ebx, eax
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [r9 + rbx*4 + 0x400]
shr eax, 0x18
xor ecx, dword [r9 + rax*4]
xor ecx, dword [rdi + 8]
movzx ebx, cl
movzx eax, ch
mov eax, dword [r9 + rax*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor eax, dword [r9 + rbx*4 + 0x400]
shr ecx, 0x18
xor eax, dword [r9 + rcx*4]
xor eax, dword [rdi + 0xc]
movzx ebx, al
movzx ecx, ah
mov ecx, dword [r9 + rcx*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0xc00]
mov ebx, eax
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [r9 + rbx*4 + 0x400]
shr eax, 0x18
xor ecx, dword [r9 + rax*4]
xor ecx, dword [rdi + 0x10]
movzx ebx, cl
movzx eax, ch
mov eax, dword [r9 + rax*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor eax, dword [r9 + rbx*4 + 0x400]
shr ecx, 0x18
xor eax, dword [r9 + rcx*4]
xor eax, dword [rdi + 0x14]
movzx ebx, al
movzx ecx, ah
mov ecx, dword [r9 + rcx*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0xc00]
mov ebx, eax
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [r9 + rbx*4 + 0x400]
shr eax, 0x18
xor ecx, dword [r9 + rax*4]
xor ecx, dword [rdi + 0x18]
movzx ebx, cl
movzx eax, ch
mov eax, dword [r9 + rax*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor eax, dword [r9 + rbx*4 + 0x400]
shr ecx, 0x18
xor eax, dword [r9 + rcx*4]
xor eax, dword [rdi + 0x1c]
movzx ebx, al
movzx ecx, ah
mov ecx, dword [r9 + rcx*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0xc00]
mov ebx, eax
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [r9 + rbx*4 + 0x400]
shr eax, 0x18
xor ecx, dword [r9 + rax*4]
add r10, 0xffffffffffffffe0
add rdi, 0x20
cmp r10, 0x1f
ja 0x5bcd10
and rsi, 0xffffffffffffffe0
add rdx, rsi
lea rdi, [r11 + rdx + 0x20]
add r8, 0xffffffffffffffe0
sub r8, rsi
sub r8, r11
mov r10, r8
cmp r10, 4
jb 0x5bcce6
lea r11, [r10 - 4]
mov r8, r11
shr r8, 2
mov rax, rdi
nop word cs:[rax + rax]
xor ecx, dword [rax]
movzx ebx, cl
movzx esi, ch
mov edx, ecx
mov esi, dword [r9 + rsi*4 + 0x800]
xor esi, dword [r9 + rbx*4 + 0xc00]
add rax, 4
shr ecx, 0x10
movzx ecx, cl
xor esi, dword [r9 + rcx*4 + 0x400]
shr edx, 0x18
mov ecx, esi
xor ecx, dword [r9 + rdx*4]
add r10, 0xfffffffffffffffc
cmp r10, 3
ja 0x5bcee0
lea rdi, [rdi + r8*4 + 4]
and r11d, 3
mov r10, r11
test r10, r10
jne 0x5bccef
jmp 0x5bcf89
movzx eax, byte [rdi]
inc rdi
movzx edx, cl
xor edx, eax
shr ecx, 8
xor ecx, dword [r9 + rdx*4]
lea rdx, [r10 - 1]
cmp r10, 1
je 0x5bcf89
nop word cs:[rax + rax]
movzx eax, byte [rdi]
movzx ebx, cl
xor ebx, eax
shr ecx, 8
xor ecx, dword [r9 + rbx*4]
movzx eax, byte [rdi + 1]
movzx ebx, cl
xor ebx, eax
shr ecx, 8
xor ecx, dword [r9 + rbx*4]
add rdi, 2
add rdx, 0xfffffffffffffffe
jne 0x5bcf60
not ecx
mov eax, ecx
pop rbx
pop rdi
pop rsi
pop rbp
ret
push rbp
mov rbp, rsp
mov r8d, r8d
pop rbp
jmp 0x5bcc70