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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
lea rbp, [0x0048a090]
mov r9d, ecx
not r9d
mov rbx, r8
mov rdi, rdx
test r8, r8
je 0x4638cb
test dil, 3
je 0x4638cb
movzx ecx, byte [rdi]
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
inc rdi
xor r9d, dword [rbp + rax*4]
sub rbx, 1
jne 0x4638a7
cmp rbx, 0x20
jb 0x463b2d
mov rsi, rbx
shr rsi, 5
imul rax, rsi, 0xffffffffffffffe0
add rbx, rax
mov edx, dword [rdi]
mov r8d, dword [rdi + 4]
mov r10d, dword [rdi + 8]
mov r11d, dword [rdi + 0xc]
mov eax, r9d
xor rdx, rax
mov rax, rdx
shr rax, 0x10
movzx ecx, al
mov rax, rdx
shr rax, 8
mov r9d, dword [rbp + rcx*4 + 0x400]
movzx ecx, al
mov eax, dword [rbp + rcx*4 + 0x800]
xor r9, rax
mov rax, rdx
shr rax, 0x18
mov eax, dword [rbp + rax*4]
xor r9, rax
movzx eax, dl
mov eax, dword [rbp + rax*4 + 0xc00]
xor r9, rax
xor r9, r8
mov rax, r9
shr rax, 0x10
movzx ecx, al
mov rax, r9
shr rax, 8
mov edx, dword [rbp + rcx*4 + 0x400]
movzx ecx, al
mov eax, dword [rbp + rcx*4 + 0x800]
xor rdx, rax
mov rax, r9
shr rax, 0x18
mov eax, dword [rbp + rax*4]
xor rdx, rax
movzx eax, r9b
mov r9d, dword [rdi + 0x10]
mov eax, dword [rbp + rax*4 + 0xc00]
xor rdx, rax
xor rdx, r10
mov r10d, dword [rdi + 0x14]
mov rax, rdx
shr rax, 0x10
movzx ecx, al
mov rax, rdx
shr rax, 8
mov r8d, dword [rbp + rcx*4 + 0x400]
movzx ecx, al
mov eax, dword [rbp + rcx*4 + 0x800]
xor r8, rax
mov rax, rdx
shr rax, 0x18
mov eax, dword [rbp + rax*4]
xor r8, rax
movzx eax, dl
mov eax, dword [rbp + rax*4 + 0xc00]
xor r8, rax
xor r8, r11
mov r11d, dword [rdi + 0x18]
mov rax, r8
shr rax, 0x10
movzx ecx, al
mov rax, r8
shr rax, 8
mov edx, dword [rbp + rcx*4 + 0x400]
movzx ecx, al
mov eax, dword [rbp + rcx*4 + 0x800]
xor rdx, rax
mov rax, r8
shr rax, 0x18
mov eax, dword [rbp + rax*4]
xor rdx, rax
movzx eax, r8b
mov eax, dword [rbp + rax*4 + 0xc00]
xor rdx, rax
xor rdx, r9
mov rax, rdx
shr rax, 0x10
movzx ecx, al
mov r8d, dword [rbp + rcx*4 + 0x400]
mov r9d, dword [rdi + 0x1c]
mov rax, rdx
shr rax, 8
add rdi, 0x20
movzx ecx, al
mov eax, dword [rbp + rcx*4 + 0x800]
xor r8, rax
mov rax, rdx
shr rax, 0x18
mov eax, dword [rbp + rax*4]
xor r8, rax
movzx eax, dl
mov eax, dword [rbp + rax*4 + 0xc00]
xor r8, rax
xor r8, r10
mov rax, r8
shr rax, 0x10
movzx ecx, al
mov rax, r8
shr rax, 8
mov edx, dword [rbp + rcx*4 + 0x400]
movzx ecx, al
mov eax, dword [rbp + rcx*4 + 0x800]
xor rdx, rax
mov rax, r8
shr rax, 0x18
mov eax, dword [rbp + rax*4]
xor rdx, rax
movzx eax, r8b
mov eax, dword [rbp + rax*4 + 0xc00]
xor rdx, rax
xor rdx, r11
mov rax, rdx
shr rax, 0x10
movzx ecx, al
mov rax, rdx
shr rax, 8
mov r8d, dword [rbp + rcx*4 + 0x400]
movzx ecx, al
mov eax, dword [rbp + rcx*4 + 0x800]
xor r8, rax
mov rax, rdx
shr rax, 0x18
mov eax, dword [rbp + rax*4]
xor r8, rax
movzx eax, dl
mov eax, dword [rbp + rax*4 + 0xc00]
xor r8, rax
xor r8, r9
mov rax, r8
shr rax, 0x10
movzx edx, al
mov rax, r8
shr rax, 8
movzx ecx, al
mov rax, r8
shr rax, 0x18
mov r9d, dword [rbp + rdx*4 + 0x400]
xor r9d, dword [rbp + rcx*4 + 0x800]
xor r9d, dword [rbp + rax*4]
movzx eax, r8b
xor r9d, dword [rbp + rax*4 + 0xc00]
sub rsi, 1
jne 0x4638e3
cmp rbx, 4
jb 0x463b90
mov r10, rbx
shr r10, 2
imul rax, r10, 0xfffffffffffffffc
add rbx, rax
mov r8d, dword [rdi]
add rdi, 4
mov eax, r9d
xor r8, rax
mov rax, r8
shr rax, 0x10
movzx edx, al
mov rax, r8
shr rax, 8
movzx ecx, al
mov rax, r8
shr rax, 0x18
mov r9d, dword [rbp + rdx*4 + 0x400]
xor r9d, dword [rbp + rcx*4 + 0x800]
xor r9d, dword [rbp + rax*4]
movzx eax, r8b
xor r9d, dword [rbp + rax*4 + 0xc00]
sub r10, 1
jne 0x463b41
test rbx, rbx
je 0x463bb3
movzx ecx, byte [rdi]
mov eax, r9d
xor rcx, rax
shr r9d, 8
movzx eax, cl
inc rdi
xor r9d, dword [rbp + rax*4]
sub rbx, 1
jne 0x463b95
mov rbx, qword [rsp + 8]
not r9d
mov rbp, qword [rsp + 0x10]
mov eax, r9d
mov rsi, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
ret