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

Disassembly:
push rsi
push rdi
push rbx
test rdx, rdx
jne 0x18010f59b
xor eax, eax
jmp 0x18010f7eb
mov eax, ecx
not eax
test r8, r8
je 0x18010f7e9
lea rdi, [0x180541550]
test dl, 3
je 0x18010f5cf
movzx ecx, byte [rdx]
inc rdx
movzx esi, al
xor esi, ecx
shr eax, 8
xor eax, dword [rdi + rsi*4]
dec r8
jne 0x18010f5af
jmp 0x18010f7e9
cmp r8, 0x20
jb 0x18010f76e
lea r9, [r8 - 0x20]
mov r11, r9
and r11, 0xffffffffffffffe0
lea r10, [rdx + r11]
add r10, 0x20
xor eax, dword [rdx]
movzx esi, al
movzx ecx, ah
mov ecx, dword [rdi + rcx*4 + 0x800]
xor ecx, dword [rdi + rsi*4 + 0xc00]
mov esi, eax
shr esi, 0x10
movzx esi, sil
xor ecx, dword [rdi + rsi*4 + 0x400]
shr eax, 0x18
xor ecx, dword [rdi + rax*4]
xor ecx, dword [rdx + 4]
movzx esi, cl
movzx eax, ch
mov eax, dword [rdi + rax*4 + 0x800]
xor eax, dword [rdi + rsi*4 + 0xc00]
mov esi, ecx
shr esi, 0x10
movzx esi, sil
xor eax, dword [rdi + rsi*4 + 0x400]
shr ecx, 0x18
xor eax, dword [rdi + rcx*4]
xor eax, dword [rdx + 8]
movzx esi, al
movzx ecx, ah
mov ecx, dword [rdi + rcx*4 + 0x800]
xor ecx, dword [rdi + rsi*4 + 0xc00]
mov esi, eax
shr esi, 0x10
movzx esi, sil
xor ecx, dword [rdi + rsi*4 + 0x400]
shr eax, 0x18
xor ecx, dword [rdi + rax*4]
xor ecx, dword [rdx + 0xc]
movzx esi, cl
movzx eax, ch
mov eax, dword [rdi + rax*4 + 0x800]
xor eax, dword [rdi + rsi*4 + 0xc00]
mov esi, ecx
shr esi, 0x10
movzx esi, sil
xor eax, dword [rdi + rsi*4 + 0x400]
shr ecx, 0x18
xor eax, dword [rdi + rcx*4]
xor eax, dword [rdx + 0x10]
movzx esi, al
movzx ecx, ah
mov ecx, dword [rdi + rcx*4 + 0x800]
xor ecx, dword [rdi + rsi*4 + 0xc00]
mov esi, eax
shr esi, 0x10
movzx esi, sil
xor ecx, dword [rdi + rsi*4 + 0x400]
shr eax, 0x18
xor ecx, dword [rdi + rax*4]
xor ecx, dword [rdx + 0x14]
movzx esi, cl
movzx eax, ch
mov eax, dword [rdi + rax*4 + 0x800]
xor eax, dword [rdi + rsi*4 + 0xc00]
mov esi, ecx
shr esi, 0x10
movzx esi, sil
xor eax, dword [rdi + rsi*4 + 0x400]
shr ecx, 0x18
xor eax, dword [rdi + rcx*4]
xor eax, dword [rdx + 0x18]
movzx esi, al
movzx ecx, ah
mov ecx, dword [rdi + rcx*4 + 0x800]
xor ecx, dword [rdi + rsi*4 + 0xc00]
mov esi, eax
shr esi, 0x10
movzx esi, sil
xor ecx, dword [rdi + rsi*4 + 0x400]
shr eax, 0x18
xor ecx, dword [rdi + rax*4]
xor ecx, dword [rdx + 0x1c]
add rdx, 0x20
movzx esi, cl
movzx eax, ch
mov eax, dword [rdi + rax*4 + 0x800]
xor eax, dword [rdi + rsi*4 + 0xc00]
mov esi, ecx
shr esi, 0x10
movzx esi, sil
xor eax, dword [rdi + rsi*4 + 0x400]
shr ecx, 0x18
xor eax, dword [rdi + rcx*4]
add r8, 0xffffffffffffffe0
cmp r8, 0x1f
ja 0x18010f5ec
sub r9, r11
mov r8, r9
mov rdx, r10
cmp r8, 4
jb 0x18010f7ce
lea r9, [r8 - 4]
mov r10, r9
shr r10, 2
mov rcx, rdx
xor eax, dword [rcx]
movzx r11d, al
movzx ebx, ah
mov esi, eax
mov ebx, dword [rdi + rbx*4 + 0x800]
xor ebx, dword [rdi + r11*4 + 0xc00]
add rcx, 4
shr eax, 0x10
movzx eax, al
xor ebx, dword [rdi + rax*4 + 0x400]
shr esi, 0x18
mov eax, ebx
xor eax, dword [rdi + rsi*4]
add r8, 0xfffffffffffffffc
cmp r8, 3
ja 0x18010f782
lea rdx, [rdx + r10*4]
add rdx, 4
and r9d, 3
mov r8, r9
test r8, r8
je 0x18010f7e9
movzx ecx, byte [rdx]
inc rdx
movzx ebx, al
xor ebx, ecx
shr eax, 8
xor eax, dword [rdi + rbx*4]
dec r8
jne 0x18010f7d3
not eax
pop rbx
pop rdi
pop rsi
ret
mov r8d, r8d
jmp 0x18010f58c