Function at 0x603bf0
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 0x603919
not ecx
test r8, r8
je 0x603bd9
lea rsi, [r8 - 0x20]
xor r11d, r11d
lea r9, [0x0077dfd0]
nop word cs:[rax + rax]
lea rdi, [rdx + r11]
test dil, 3
je 0x603920
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 0x6038f0
jmp 0x603bd9
xor ecx, ecx
jmp 0x603bdb
mov r10, r8
sub r10, r11
cmp r10, 0x20
jae 0x603960
cmp r10, 4
jae 0x603b14
test r10, r10
je 0x603bd9
test r10b, 1
jne 0x603b86
mov rdx, r10
cmp r10, 1
jne 0x603bb0
jmp 0x603bd9
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 0x603960
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 0x603936
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 0x603b30
lea rdi, [rdi + r8*4 + 4]
and r11d, 3
mov r10, r11
test r10, r10
jne 0x60393f
jmp 0x603bd9
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 0x603bd9
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 0x603bb0
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 0x6038c0