Function at 0x5bc9c0
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 0x5bc6e9
not ecx
test r8, r8
je 0x5bc9a9
lea rsi, [r8 - 0x20]
xor r11d, r11d
lea r9, [0x007ee050]
nop word cs:[rax + rax]
lea rdi, [rdx + r11]
test dil, 3
je 0x5bc6f0
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 0x5bc6c0
jmp 0x5bc9a9
xor ecx, ecx
jmp 0x5bc9ab
mov r10, r8
sub r10, r11
cmp r10, 0x20
jae 0x5bc730
cmp r10, 4
jae 0x5bc8e4
test r10, r10
je 0x5bc9a9
test r10b, 1
jne 0x5bc956
mov rdx, r10
cmp r10, 1
jne 0x5bc980
jmp 0x5bc9a9
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 0x5bc730
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 0x5bc706
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 0x5bc900
lea rdi, [rdi + r8*4 + 4]
and r11d, 3
mov r10, r11
test r10, r10
jne 0x5bc70f
jmp 0x5bc9a9
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 0x5bc9a9
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 0x5bc980
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 0x5bc690