Function at 0x140156190
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
xor r9b, r9b
xor ebx, ebx
mov r11, rdx
mov r10, rcx
test cl, 3
jne 0x1401563c5
test r11b, 3
jne 0x1401563c5
test r8, r8
je 0x140156494
mov ecx, ebx
test r10b, 7
jne 0x1401562c8
test r11b, 7
jne 0x1401562c8
mov rsi, r8
mov edx, ebx
shr rsi, 3
mov r9d, ebx
test rsi, rsi
je 0x1401562a4
cmp rsi, 4
jb 0x140156276
mov rdx, rsi
lea rax, [r11 + 0x10]
and rdx, 0xfffffffffffffffc
mov rcx, r10
sub rcx, r11
xorps xmm3, xmm3
xorps xmm2, xmm2
nop dword [rax]
nop word [rax + rax]
movdqu xmm0, xmmword [rax - 0x10]
add r9, 4
movdqu xmm1, xmmword [rcx + rax - 0x10]
lea rax, [rax + 0x20]
pxor xmm1, xmm0
por xmm1, xmm3
movdqa xmm3, xmm1
movdqu xmm1, xmmword [rcx + rax - 0x20]
movdqu xmm0, xmmword [rax - 0x20]
pxor xmm1, xmm0
por xmm1, xmm2
movdqa xmm2, xmm1
cmp r9, rdx
jb 0x140156220
por xmm2, xmm3
movdqa xmm0, xmm2
psrldq xmm0, 8
por xmm2, xmm0
movq rdx, xmm2
cmp r9, rsi
jae 0x1401562a4
mov rbp, r10
lea rcx, [r11 + r9*8]
sub rbp, r11
mov rdi, rsi
sub rdi, r9
mov r9, rsi
nop dword [rax]
mov rax, qword [rcx + rbp]
xor rax, qword [rcx]
lea rcx, [rcx + 8]
or rdx, rax
sub rdi, 1
jne 0x140156290
lea r9, [r9*8]
sub r8, r9
jne 0x1401562b9
test rdx, rdx
jmp 0x140156497
mov rcx, rdx
add r10, r9
shr rcx, 0x20
add r11, r9
or ecx, edx
mov rsi, r8
mov rdi, rbx
shr rsi, 2
test rsi, rsi
je 0x140156391
cmp rsi, 8
jb 0x140156364
mov r9, rsi
lea rax, [r11 + 0x10]
and r9, 0xfffffffffffffff8
mov rdx, r10
sub rdx, r11
xorps xmm3, xmm3
xorps xmm2, xmm2
nop dword [rax]
movdqu xmm0, xmmword [rax - 0x10]
add rdi, 8
movdqu xmm1, xmmword [rax + rdx - 0x10]
lea rax, [rax + 0x20]
pxor xmm1, xmm0
por xmm1, xmm3
movdqa xmm3, xmm1
movdqu xmm1, xmmword [rax + rdx - 0x20]
movdqu xmm0, xmmword [rax - 0x20]
pxor xmm1, xmm0
por xmm1, xmm2
movdqa xmm2, xmm1
cmp rdi, r9
jb 0x140156300
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, rsi
jae 0x140156391
mov rbp, r10
lea rdx, [r11 + rdi*4]
sub rbp, r11
mov r9, rsi
sub r9, rdi
mov rdi, rsi
nop word [rax + rax]
mov eax, dword [rdx + rbp]
xor eax, dword [rdx]
lea rdx, [rdx + 4]
or ecx, eax
sub r9, 1
jne 0x140156380
lea rdi, [rdi*4]
sub r8, rdi
jne 0x1401563a5
test ecx, ecx
jmp 0x140156497
mov r9d, ecx
mov eax, ecx
shr eax, 0x10
add r10, rdi
shr r9d, 0x18
add r11, rdi
or r9b, al
mov eax, ecx
shr eax, 8
or r9b, al
or r9b, cl
test r8, r8
je 0x140156494
cmp r8, 0x20
jb 0x14015646f
mov rdx, r8
lea rax, [r11 + 0x10]
and rdx, 0xffffffffffffffe0
mov rcx, r10
sub rcx, r11
xorps xmm3, xmm3
xorps xmm2, xmm2
nop
movdqu xmm0, xmmword [rax - 0x10]
add rbx, 0x20
movdqu xmm1, xmmword [rax + rcx - 0x10]
lea rax, [rax + 0x20]
pxor xmm1, xmm0
por xmm1, xmm3
movdqa xmm3, xmm1
movdqu xmm1, xmmword [rax + rcx - 0x20]
movdqu xmm0, xmmword [rax - 0x20]
pxor xmm1, xmm0
por xmm1, xmm2
movdqa xmm2, xmm1
cmp rbx, rdx
jb 0x1401563f0
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 r9b, al
cmp rbx, r8
jae 0x140156494
sub r10, r11
lea rcx, [rbx + r11]
sub r8, rbx
nop dword [rax]
movzx eax, byte [rcx + r10]
xor al, byte [rcx]
lea rcx, [rcx + 1]
or r9b, al
sub r8, 1
jne 0x140156480
test r9b, r9b
mov rbx, qword [rsp + 8]
sete al
mov rbp, qword [rsp + 0x10]
mov rsi, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x20]
ret