Function at 0x18009fd90
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
xor r9d, r9d
mov rax, r8
shr rax, 3
mov rbx, rdx
mov r11, rcx
mov r10d, r9d
mov edi, r9d
test rax, rax
je 0x18009fe64
cmp rax, 4
jb 0x18009fe31
lea rcx, [rdx + 0x10]
mov r10, rax
and r10, 0xfffffffffffffffc
xorps xmm3, xmm3
mov rdx, r11
movdqa xmm2, xmm3
sub rdx, rbx
nop dword [rax]
movdqu xmm0, xmmword [rcx - 0x10]
add rdi, 4
movdqu xmm1, xmmword [rcx + rdx - 0x10]
lea rcx, [rcx + 0x20]
pxor xmm1, xmm0
por xmm1, xmm3
movdqa xmm3, xmm1
movdqu xmm1, xmmword [rcx + rdx - 0x20]
movdqu xmm0, xmmword [rcx - 0x20]
pxor xmm1, xmm0
por xmm1, xmm2
movdqa xmm2, xmm1
cmp rdi, r10
jb 0x18009fde0
por xmm2, xmm3
movdqa xmm0, xmm2
psrldq xmm0, 8
por xmm2, xmm0
movq r10, xmm2
cmp rdi, rax
jae 0x18009fe64
mov rsi, r11
lea rdx, [rbx + rdi*8]
sub rsi, rbx
sub rax, rdi
add rdi, rax
nop word [rax + rax]
mov rcx, qword [rdx + rsi]
xor rcx, qword [rdx]
lea rdx, [rdx + 8]
or r10, rcx
sub rax, 1
jne 0x18009fe50
lea rdi, [rdi*8]
sub r8, rdi
jne 0x18009fe87
test r10, r10
sete al
mov rbx, qword [rsp + 8]
mov rsi, qword [rsp + 0x10]
mov rdi, qword [rsp + 0x18]
ret
add r11, rdi
add rbx, rdi
mov rcx, r10
mov rdx, r8
shr rcx, 0x20
mov rdi, r9
or ecx, r10d
shr rdx, 2
test rdx, rdx
je 0x18009ff63
cmp rdx, 8
jb 0x18009ff31
mov rsi, rdx
lea rax, [rbx + 0x10]
and rsi, 0xfffffffffffffff8
xorps xmm3, xmm3
mov r10, r11
movdqa xmm2, xmm3
sub r10, rbx
nop dword [rax]
movdqu xmm0, xmmword [rax - 0x10]
add rdi, 8
movdqu xmm1, xmmword [rax + r10 - 0x10]
lea rax, [rax + 0x20]
pxor xmm1, xmm0
por xmm1, xmm3
movdqa xmm3, xmm1
movdqu xmm1, xmmword [rax + r10 - 0x20]
movdqu xmm0, xmmword [rax - 0x20]
pxor xmm1, xmm0
por xmm1, xmm2
movdqa xmm2, xmm1
cmp rdi, rsi
jb 0x18009fed0
por xmm2, xmm3
movdqa xmm0, xmm2
psrldq xmm0, 8
por xmm2, xmm0
movdqa xmm0, xmm2
psrldq xmm0, 4
por xmm2, xmm0
movd eax, xmm2
or ecx, eax
cmp rdi, rdx
jae 0x18009ff63
mov rsi, r11
lea r10, [rbx + rdi*4]
sub rsi, rbx
sub rdx, rdi
add rdi, rdx
nop word [rax + rax]
mov eax, dword [r10 + rsi]
xor eax, dword [r10]
lea r10, [r10 + 4]
or ecx, eax
sub rdx, 1
jne 0x18009ff50
lea rdi, [rdi*4]
sub r8, rdi
jne 0x18009ff85
test ecx, ecx
sete al
mov rbx, qword [rsp + 8]
mov rsi, qword [rsp + 0x10]
mov rdi, qword [rsp + 0x18]
ret
mov edx, ecx
mov eax, ecx
shr edx, 0x18
add r11, rdi
shr eax, 0x10
add rbx, rdi
or dl, al
mov eax, ecx
shr eax, 8
or dl, al
or dl, cl
test r8, r8
je 0x1800a0073
cmp r8, 0x20
jb 0x1800a0047
mov r10, r8
xorps xmm3, xmm3
and r10, 0xffffffffffffffe0
mov rcx, r11
sub rcx, rbx
movdqa xmm2, xmm3
mov rax, rbx
nop word [rax + rax]
movdqu xmm0, xmmword [rax]
add r9, 0x20
movdqu xmm1, xmmword [rax + rcx]
lea rax, [rax + 0x20]
pxor xmm1, xmm0
por xmm1, xmm3
movdqa xmm3, xmm1
movdqu xmm1, xmmword [rcx + rax - 0x10]
movdqu xmm0, xmmword [rax - 0x10]
pxor xmm1, xmm0
por xmm1, xmm2
movdqa xmm2, xmm1
cmp r9, r10
jb 0x18009ffd0
por xmm2, xmm3
movdqa xmm0, xmm2
psrldq xmm0, 8
por xmm2, xmm0
movdqa xmm0, xmm2
psrldq xmm0, 4
por xmm2, xmm0
movdqa xmm0, xmm2
psrldq xmm0, 2
por xmm2, xmm0
movdqa xmm0, xmm2
psrldq xmm0, 1
por xmm2, xmm0
movd eax, xmm2
or dl, al
cmp r9, r8
jae 0x1800a0073
sub r11, rbx
lea rcx, [r9 + rbx]
sub r8, r9
nop word [rax + rax]
movzx eax, byte [rcx + r11]
xor al, byte [rcx]
lea rcx, [rcx + 1]
or dl, al
sub r8, 1
jne 0x1800a0060
mov rbx, qword [rsp + 8]
test dl, dl
mov rsi, qword [rsp + 0x10]
mov rdi, qword [rsp + 0x18]
sete al
ret