Function at 0x489530
Capabilities:
Encode data using xor

Disassembly:
push rbx
test cl, 3
mov r10, rdx
je 0x489790
cmp r10d, 0xb
mov r11d, edx
mov eax, 0x9e3779b9
mov edx, 0x9e3779b9
jbe 0x489670
nop dword [rax]
movzx r9d, byte [rcx + 5]
movzx ebx, byte [rcx + 6]
shl r9d, 8
shl ebx, 0x10
add r9d, ebx
movzx ebx, byte [rcx + 4]
add r9d, ebx
movzx ebx, byte [rcx + 7]
shl ebx, 0x18
add r9d, ebx
movzx ebx, byte [rcx + 0xa]
add r9d, eax
movzx eax, byte [rcx + 9]
shl ebx, 0x10
shl eax, 8
add eax, ebx
movzx ebx, byte [rcx + 8]
add eax, ebx
movzx ebx, byte [rcx + 0xb]
shl ebx, 0x18
add eax, ebx
movzx ebx, byte [rcx + 2]
add eax, r8d
movzx r8d, byte [rcx + 1]
shl ebx, 0x10
shl r8d, 8
add r8d, ebx
movzx ebx, byte [rcx]
add r8d, ebx
movzx ebx, byte [rcx + 3]
shl ebx, 0x18
add r8d, ebx
sub r8d, r9d
sub r9d, eax
sub r8d, eax
add edx, r8d
mov r8d, eax
shr r8d, 0xd
xor edx, r8d
sub r9d, edx
sub eax, edx
mov r8d, r9d
mov r9d, edx
shl r9d, 8
xor r9d, r8d
sub eax, r9d
mov r8d, eax
mov eax, r9d
shr eax, 0xd
xor eax, r8d
sub edx, r9d
sub r11d, 0xc
sub edx, eax
sub r9d, eax
add rcx, 0xc
mov r8d, edx
mov edx, eax
shr edx, 0xc
xor edx, r8d
sub r9d, edx
sub eax, edx
mov r8d, r9d
mov r9d, edx
shl r9d, 0x10
xor r9d, r8d
mov r8d, r9d
sub eax, r9d
sub edx, r9d
shr r8d, 5
xor r8d, eax
mov eax, edx
mov edx, r8d
sub eax, r8d
sub r9d, r8d
shr edx, 3
xor edx, eax
mov eax, edx
sub r9d, edx
sub r8d, edx
shl eax, 0xa
xor eax, r9d
mov r9d, r8d
mov r8d, eax
sub r9d, eax
shr r8d, 0xf
xor r8d, r9d
cmp r11d, 0xb
ja 0x489558
add r8d, r10d
cmp r11d, 0xb
ja case.0x48968b.0
lea r10, [0x00586ea4]
movsxd r9, dword [r10 + r11*4]
add r9, r10
jmp r9
movzx r9d, byte [rcx + 0xa]
shl r9d, 0x18
add r8d, r9d
movzx r9d, byte [rcx + 9]
shl r9d, 0x10
add r8d, r9d
movzx r9d, byte [rcx + 8]
shl r9d, 8
add r8d, r9d
movzx r9d, byte [rcx + 7]
shl r9d, 0x18
add eax, r9d
movzx r9d, byte [rcx + 6]
shl r9d, 0x10
add eax, r9d
movzx r9d, byte [rcx + 5]
shl r9d, 8
add eax, r9d
movzx r9d, byte [rcx + 4]
add eax, r9d
movzx r9d, byte [rcx + 3]
shl r9d, 0x18
add edx, r9d
movzx r9d, byte [rcx + 2]
shl r9d, 0x10
add edx, r9d
movzx r9d, byte [rcx + 1]
shl r9d, 8
add edx, r9d
movzx ecx, byte [rcx]
add edx, ecx
lea ecx, [rax + r8]
sub eax, r8d
sub edx, ecx
mov ecx, r8d
shr ecx, 0xd
xor ecx, edx
mov edx, ecx
sub eax, ecx
sub r8d, ecx
shl edx, 8
xor eax, edx
mov edx, r8d
mov r8d, eax
sub edx, eax
sub ecx, eax
shr r8d, 0xd
xor r8d, edx
sub ecx, r8d
sub eax, r8d
mov edx, ecx
mov ecx, r8d
shr ecx, 0xc
xor ecx, edx
sub eax, ecx
sub r8d, ecx
mov edx, eax
mov eax, ecx
shl eax, 0x10
xor eax, edx
mov edx, eax
sub r8d, eax
sub ecx, eax
shr edx, 5
xor edx, r8d
mov r8d, edx
sub ecx, edx
sub eax, edx
shr r8d, 3
xor r8d, ecx
mov ecx, r8d
sub eax, r8d
sub edx, r8d
shl ecx, 0xa
xor eax, ecx
sub edx, eax
shr eax, 0xf
xor eax, edx
pop rbx
ret
cmp edx, 0xb
jbe 0x489870
mov r11d, edx
mov eax, 0x9e3779b9
mov edx, 0x9e3779b9
nop word cs:[rax + rax]
add r8d, dword [rcx + 8]
add eax, dword [rcx + 4]
add edx, dword [rcx]
lea ebx, [rax + r8]
sub eax, r8d
sub edx, ebx
mov r9d, edx
mov edx, r8d
shr edx, 0xd
xor edx, r9d
sub eax, edx
sub r8d, edx
mov r9d, eax
mov eax, edx
shl eax, 8
xor eax, r9d
mov r9d, r8d
mov r8d, eax
sub r9d, eax
sub edx, eax
shr r8d, 0xd
xor r8d, r9d
sub edx, r8d
sub eax, r8d
mov r9d, edx
mov edx, r8d
shr edx, 0xc
xor edx, r9d
sub eax, edx
sub r8d, edx
mov r9d, eax
mov eax, edx
shl eax, 0x10
xor eax, r9d
mov r9d, r8d
mov r8d, eax
sub r9d, eax
sub edx, eax
shr r8d, 5
xor r8d, r9d
sub edx, r8d
sub eax, r8d
mov r9d, edx
mov edx, r8d
shr edx, 3
xor edx, r9d
sub eax, edx
mov r9d, eax
mov eax, edx
shl eax, 0xa
sub r8d, edx
sub r11d, 0xc
xor eax, r9d
mov r9d, r8d
add rcx, 0xc
mov r8d, eax
sub r9d, eax
shr r8d, 0xf
xor r8d, r9d
cmp r11d, 0xb
ja 0x4897b0
jmp 0x489670
mov r11d, edx
mov eax, 0x9e3779b9
mov edx, 0x9e3779b9
jmp 0x489670