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

Disassembly:
push rsi
push rbx
xor eax, eax
test rdx, rdx
je 0x4be519
mov eax, ecx
lea r10, [0x00538b20]
not eax
test r8d, r8d
je 0x4be517
test dl, 3
je 0x4be2bc
mov r9b, byte [rdx]
inc rdx
dec r8d
xor r9d, eax
shr eax, 8
movzx r9d, r9b
xor eax, dword [r10 + r9*4]
jmp 0x4be295
mov r10, rdx
lea r11d, [r8 + rdx]
lea r9, [0x00538b20]
mov ecx, r11d
sub ecx, r10d
cmp ecx, 0x1f
jbe 0x4be479
xor eax, dword [r10]
mov ebx, eax
mov esi, eax
movzx ecx, al
movzx eax, ah
shr ebx, 0x10
shr esi, 0x18
mov ecx, dword [r9 + rcx*4 + 0xc00]
movzx ebx, bl
xor ecx, dword [r9 + rsi*4]
xor ecx, dword [r10 + 4]
xor ecx, dword [r9 + rax*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0x400]
mov ebx, ecx
mov esi, ecx
movzx eax, cl
movzx ecx, ch
shr ebx, 0x10
shr esi, 0x18
mov eax, dword [r9 + rax*4 + 0xc00]
movzx ebx, bl
xor eax, dword [r9 + rsi*4]
xor eax, dword [r10 + 8]
xor eax, dword [r9 + rcx*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0x400]
mov ebx, eax
mov esi, eax
movzx ecx, al
movzx eax, ah
shr ebx, 0x10
shr esi, 0x18
mov ecx, dword [r9 + rcx*4 + 0xc00]
movzx ebx, bl
xor ecx, dword [r9 + rsi*4]
xor ecx, dword [r10 + 0xc]
xor ecx, dword [r9 + rax*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0x400]
mov ebx, ecx
mov esi, ecx
movzx eax, cl
movzx ecx, ch
shr ebx, 0x10
shr esi, 0x18
mov eax, dword [r9 + rax*4 + 0xc00]
movzx ebx, bl
xor eax, dword [r9 + rsi*4]
xor eax, dword [r10 + 0x10]
xor eax, dword [r9 + rcx*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0x400]
mov ebx, eax
mov esi, eax
movzx ecx, al
movzx eax, ah
shr ebx, 0x10
shr esi, 0x18
mov ecx, dword [r9 + rcx*4 + 0xc00]
movzx ebx, bl
xor ecx, dword [r9 + rsi*4]
xor ecx, dword [r10 + 0x14]
xor ecx, dword [r9 + rax*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0x400]
mov ebx, ecx
mov esi, ecx
movzx eax, cl
movzx ecx, ch
shr ebx, 0x10
shr esi, 0x18
mov eax, dword [r9 + rax*4 + 0xc00]
add r10, 0x20
movzx ebx, bl
xor eax, dword [r9 + rsi*4]
xor eax, dword [r10 - 8]
xor eax, dword [r9 + rcx*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0x400]
mov ecx, eax
mov esi, eax
movzx ebx, al
movzx eax, ah
shr ecx, 0x10
shr esi, 0x18
mov ebx, dword [r9 + rbx*4 + 0xc00]
movzx ecx, cl
xor ebx, dword [r9 + rsi*4]
xor ebx, dword [r10 - 4]
xor ebx, dword [r9 + rax*4 + 0x800]
xor ebx, dword [r9 + rcx*4 + 0x400]
mov ecx, ebx
mov esi, ebx
movzx eax, bl
movzx ebx, bh
shr ecx, 0x10
shr esi, 0x18
mov eax, dword [r9 + rax*4 + 0xc00]
movzx ecx, cl
xor eax, dword [r9 + rsi*4]
xor eax, dword [r9 + rbx*4 + 0x800]
xor eax, dword [r9 + rcx*4 + 0x400]
jmp 0x4be2ca
mov ecx, r8d
xor r10d, r10d
lea r11, [0x00538b20]
shr ecx, 5
mov ebx, ecx
imul ecx, ecx, 0xffffffe0
shl rbx, 5
add rbx, rdx
add r8d, ecx
mov edx, r8d
sub edx, r10d
cmp edx, 3
jbe 0x4be4e0
xor eax, dword [rbx + r10]
add r10, 4
mov edx, eax
movzx ecx, al
mov r9d, eax
movzx eax, ah
mov eax, dword [r11 + rax*4 + 0x800]
shr edx, 0x10
shr r9d, 0x18
mov ecx, dword [r11 + rcx*4 + 0xc00]
movzx edx, dl
xor ecx, dword [r11 + r9*4]
xor eax, ecx
xor eax, dword [r11 + rdx*4 + 0x400]
jmp 0x4be498
mov edx, r8d
shr edx, 2
mov ecx, edx
imul edx, edx, 0xfffffffc
lea r10, [rbx + rcx*4]
add r8d, edx
je 0x4be517
xor edx, edx
lea rcx, [0x00538b20]
mov r9b, byte [r10 + rdx]
inc rdx
xor r9d, eax
shr eax, 8
movzx r9d, r9b
xor eax, dword [rcx + r9*4]
cmp r8d, edx
jne 0x4be4fd
not eax
pop rbx
pop rsi
ret