Function at 0x140022060
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xe8
mov qword [rsp + 0x58], r9
mov rbp, r8
mov rbx, rdx
mov r15, rcx
cmp rdx, 0x21
mov qword [rsp + 0x60], r8
jae 0x1400220e8
cmp rbx, 2
jb 0x140022b52
lea rax, [rbx + 0x10]
cmp rax, qword [rsp + 0x58]
ja 0x140022bc0
mov rsi, rbx
shr rsi, 1
mov r12, rsi
shl r12, 5
mov rcx, r15
add r15, r12
add r12, rbp
cmp rbx, 7
mov qword [rsp + 0x30], rcx
jbe 0x14002277e
mov rdx, rbp
call sym.core::slice::sort::shared::smallsort::sort4_stable::hfd7905f73b9b1a9e
mov rcx, r15
mov rdx, r12
call sym.core::slice::sort::shared::smallsort::sort4_stable::hfd7905f73b9b1a9e
mov r14d, 4
jmp 0x1400227a7
mov rax, qword [rsp + 0x158]
mov qword [rsp + 0x50], rax
mov esi, dword [rsp + 0x150]
lea rax, [rbp - 0x20]
mov qword [rsp + 0x70], rax
lea rax, [r15 + 0x20]
mov qword [rsp + 0x80], rax
mov rdx, rbx
mov qword [rsp + 0x30], r15
nop dword [rax]
sub esi, 1
jb 0x140022764
mov dword [rsp + 0x78], esi
mov r9, rdx
shr r9, 3
mov rbx, r9
shl rbx, 7
add rbx, r15
imul r13, r9, 0xe0
add r13, r15
mov qword [rsp + 0x38], rdx
cmp rdx, 0x40
jae 0x140022280
mov rcx, qword [r15 + 8]
mov qword [rsp + 0x48], rcx
mov rax, qword [rsp + 0x30]
mov r15, qword [rax + 0x10]
mov rdx, qword [rbx + 8]
mov r8, qword [rbx + 0x10]
mov rsi, r15
sub rsi, r8
mov qword [rsp + 0x68], r8
cmovb r8, r15
mov qword [rsp + 0x40], rdx
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
mov rax, qword [rsp + 0x30]
movzx ebp, byte [rax + 0x18]
movzx ecx, byte [rbx + 0x18]
mov eax, ebp
mov byte [rsp + 0x88], cl
sub al, cl
xor r14d, r14d
cmp al, 0xff
sete r14b
xor eax, eax
test rsi, rsi
sets al
cmovne r14d, eax
mov rdx, qword [r13 + 8]
mov rdi, qword [r13 + 0x10]
mov r12, r15
sub r12, rdi
cmovae r15, rdi
mov rcx, qword [rsp + 0x48]
mov qword [rsp + 0x48], rdx
mov r8, r15
mov r15, qword [rsp + 0x30]
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne r12, rax
movzx esi, byte [r13 + 0x18]
sub bpl, sil
xor eax, eax
cmp bpl, 0xff
mov rbp, qword [rsp + 0x60]
sete al
xor ecx, ecx
test r12, r12
sets cl
cmovne eax, ecx
mov r12, r15
cmp r14b, al
jne 0x140022291
mov rax, qword [rsp + 0x68]
mov r15, rax
sub r15, rdi
cmovb rdi, rax
mov rcx, qword [rsp + 0x40]
mov rdx, qword [rsp + 0x48]
mov r8, rdi
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne r15, rax
movzx ecx, byte [rsp + 0x88]
sub cl, sil
xor eax, eax
cmp cl, 0xff
sete al
xor ecx, ecx
test r15, r15
mov r15, qword [rsp + 0x30]
sets cl
cmovne eax, ecx
xor r14b, al
cmovne rbx, r13
mov r12, rbx
jmp 0x140022291
mov rcx, r15
mov rdx, rbx
mov r8, r13
call sym.core::slice::sort::shared::pivot::median3_rec::h93702cb5cfbba9c2
mov r12, rax
mov rax, r12
sub rax, r15
shr rax, 5
mov qword [rsp + 0x48], rax
movups xmm0, xmmword [r12]
movups xmm1, xmmword [r12 + 0x10]
movaps xmmword [rsp + 0xa0], xmm1
movaps xmmword [rsp + 0x90], xmm0
cmp qword [rsp + 0x50], 0
mov r14, qword [rsp + 0x38]
je 0x14002231f
mov rdi, qword [rsp + 0x50]
mov rcx, qword [rdi + 8]
mov rax, qword [rdi + 0x10]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
mov rsi, rax
sub rsi, r8
cmovb r8, rax
call sub.msvcrt.dll_memcmp
mov r14, qword [rsp + 0x38]
cdqe
test eax, eax
cmovne rsi, rax
movzx eax, byte [rdi + 0x18]
sub al, byte [r12 + 0x18]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rsi, rsi
sets al
cmovne ecx, eax
cmp cl, 1
jne 0x140022560
cmp r14, qword [rsp + 0x58]
ja 0x140022bc0
shl r14, 5
mov qword [rsp + 0x68], r14
lea r13, [r14 + rbp]
xor ebx, ebx
mov rdi, r15
mov qword [rsp + 0x40], r13
mov rbp, qword [rsp + 0x48]
nop word cs:[rax + rax]
mov r14, rbp
shl r14, 5
add r14, r15
cmp rdi, r14
mov r15, qword [rsp + 0x60]
jae 0x1400223e7
nop dword [rax + rax]
mov rcx, qword [rdi + 8]
mov rax, qword [rdi + 0x10]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
mov rsi, rax
sub rsi, r8
cmovb r8, rax
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
movzx eax, byte [rdi + 0x18]
sub al, byte [r12 + 0x18]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rsi, rsi
sets al
cmovne ecx, eax
add r13, 0xffffffffffffffe0
test cl, cl
mov rax, r13
cmovne rax, r15
mov rdx, rbx
shl rdx, 5
movups xmm0, xmmword [rdi]
movups xmm1, xmmword [rdi + 0x10]
movups xmmword [rax + rdx + 0x10], xmm1
movups xmmword [rax + rdx], xmm0
movzx eax, cl
add rbx, rax
add rdi, 0x20
cmp rdi, r14
jb 0x140022370
mov rcx, qword [rsp + 0x38]
cmp rbp, rcx
je 0x140022420
mov rax, rbx
shl rax, 5
movups xmm0, xmmword [rdi]
movups xmm1, xmmword [rdi + 0x10]
movups xmmword [r13 + rax - 0x10], xmm1
movups xmmword [r13 + rax - 0x20], xmm0
add r13, 0xffffffffffffffe0
add rdi, 0x20
mov rbp, rcx
mov r15, qword [rsp + 0x30]
jmp 0x140022350
mov r13, rbx
shl r13, 5
mov r15, qword [rsp + 0x30]
mov rcx, r15
mov rbp, qword [rsp + 0x60]
mov rdx, rbp
mov r8, r13
call sym.memcpy
mov r14, qword [rsp + 0x38]
mov rdx, r14
sub rdx, rbx
mov r11, qword [rsp + 0x40]
je 0x14002250b
lea rax, [rbx + 1]
cmp r14, rax
jne 0x140022470
xor eax, eax
jmp 0x1400224e0
mov rcx, rdx
and rcx, 0xfffffffffffffffe
mov rax, qword [rsp + 0x80]
lea r8, [rax + r13]
mov rsi, qword [rsp + 0x68]
add rsi, qword [rsp + 0x70]
xor r9d, r9d
movabs r10, 0x7fffffffffffffe
nop word [rax + rax]
movups xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movups xmmword [r8 - 0x10], xmm1
movups xmmword [r8 - 0x20], xmm0
lea rax, [r9 + 2]
xor r9, r10
shl r9, 5
movups xmm0, xmmword [r11 + r9]
movups xmm1, xmmword [r11 + r9 + 0x10]
movups xmmword [r8], xmm0
movups xmmword [r8 + 0x10], xmm1
add r8, 0x40
add rsi, 0xffffffffffffffc0
mov r9, rax
cmp rcx, rax
jne 0x1400224a0
test dl, 1
je 0x14002250b
lea rcx, [r15 + r13]
mov r8, rax
not r8
shl r8, 5
shl rax, 5
movups xmm0, xmmword [r11 + r8]
movups xmm1, xmmword [r11 + r8 + 0x10]
movups xmmword [rcx + rax + 0x10], xmm1
movups xmmword [rcx + rax], xmm0
test rbx, rbx
je 0x140022560
cmp r14, rbx
jb 0x140022b66
add r13, r15
lea rax, [rsp + 0x90]
mov qword [rsp + 0x28], rax
mov esi, dword [rsp + 0x78]
mov dword [rsp + 0x20], esi
mov rcx, r13
mov r8, rbp
mov r9, qword [rsp + 0x58]
call sym.core::slice::sort::stable::quicksort::quicksort::h95dcbdc2f13257d1
mov rdx, rbx
cmp rbx, 0x21
jae 0x140022120
jmp 0x14002208c
cmp r14, qword [rsp + 0x58]
ja 0x140022bc0
shl r14, 5
mov qword [rsp + 0x50], r14
lea rbx, [r14 + rbp]
xor r13d, r13d
mov rdi, r15
mov qword [rsp + 0x40], rbx
mov r15, qword [rsp + 0x48]
nop dword [rax + rax]
mov r14, r15
shl r15, 5
add r15, qword [rsp + 0x30]
cmp rdi, r15
jae 0x140022627
nop word cs:[rax + rax]
mov rcx, qword [r12 + 8]
mov rax, qword [r12 + 0x10]
mov rdx, qword [rdi + 8]
mov r8, qword [rdi + 0x10]
mov rsi, rax
sub rsi, r8
cmovb r8, rax
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
movzx eax, byte [r12 + 0x18]
sub al, byte [rdi + 0x18]
xor ecx, ecx
cmp al, 0xff
setne cl
xor eax, eax
test rsi, rsi
setns al
cmovne ecx, eax
add rbx, 0xffffffffffffffe0
test cl, cl
mov rax, rbx
cmovne rax, rbp
mov rdx, r13
shl rdx, 5
movups xmm0, xmmword [rdi]
movups xmm1, xmmword [rdi + 0x10]
movups xmmword [rax + rdx + 0x10], xmm1
movups xmmword [rax + rdx], xmm0
movzx eax, cl
add r13, rax
add rdi, 0x20
cmp rdi, r15
jb 0x1400225b0
mov rcx, qword [rsp + 0x38]
cmp r14, rcx
je 0x140022660
add rbx, 0xffffffffffffffe0
mov rax, r13
shl rax, 5
movups xmm0, xmmword [rdi]
movups xmm1, xmmword [rdi + 0x10]
movups xmmword [rbp + rax + 0x10], xmm1
movups xmmword [rbp + rax], xmm0
inc r13
add rdi, 0x20
mov r15, rcx
jmp 0x140022590
mov r12, r13
shl r12, 5
mov r15, qword [rsp + 0x30]
mov rcx, r15
mov rdx, rbp
mov r8, r12
call sym.memcpy
mov rdx, qword [rsp + 0x38]
mov rbx, rdx
sub rbx, r13
mov r11, qword [rsp + 0x40]
je 0x14002273b
lea rax, [r13 + 1]
cmp rdx, rax
movabs r9, 0x7fffffffffffffe
jne 0x1400226a7
xor eax, eax
jmp 0x140022710
mov rcx, rbx
and rcx, 0xfffffffffffffffe
lea r10, [r15 + r12]
add r10, 0x20
mov rsi, qword [rsp + 0x50]
add rsi, qword [rsp + 0x70]
xor r8d, r8d
nop word cs:[rax + rax]
movups xmm0, xmmword [rsi]
movups xmm1, xmmword [rsi + 0x10]
movups xmmword [r10 - 0x10], xmm1
movups xmmword [r10 - 0x20], xmm0
lea rax, [r8 + 2]
xor r8, r9
shl r8, 5
movups xmm0, xmmword [r11 + r8]
movups xmm1, xmmword [r11 + r8 + 0x10]
movups xmmword [r10], xmm0
movups xmmword [r10 + 0x10], xmm1
add r10, 0x40
add rsi, 0xffffffffffffffc0
mov r8, rax
cmp rcx, rax
jne 0x1400226d0
test bl, 1
je 0x14002273b
lea rcx, [r15 + r12]
mov r8, rax
not r8
shl r8, 5
shl rax, 5
movups xmm0, xmmword [r11 + r8]
movups xmm1, xmmword [r11 + r8 + 0x10]
movups xmmword [rcx + rax + 0x10], xmm1
movups xmmword [rcx + rax], xmm0
cmp rdx, r13
jb 0x140022bac
add r15, r12
mov eax, 0
mov qword [rsp + 0x50], rax
cmp rbx, 0x21
mov esi, dword [rsp + 0x78]
jae 0x140022105
jmp 0x14002208c
mov byte [rsp + 0x20], 1
mov rcx, r15
mov r8, rbp
mov r9, qword [rsp + 0x58]
call sym.core::slice::sort::stable::drift::sort::hb73bc5d810d6ad6a
jmp 0x140022b52
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rbp + 0x10], xmm1
movups xmmword [rbp], xmm0
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 0x10]
movups xmmword [r12 + 0x10], xmm1
movups xmmword [r12], xmm0
mov r14d, 1
mov qword [rsp + 0xb8], 0
mov qword [rsp + 0xc0], rsi
mov qword [rsp + 0xd0], 2
mov rdx, rbx
sub rdx, rsi
mov eax, r14d
shl eax, 5
mov qword [rsp + 0x70], rax
mov eax, 2
xor r8d, r8d
mov rcx, qword [rsp + 0x30]
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x68], r12
mov qword [rsp + 0x88], r14
mov qword [rsp + 0x80], rdx
jmp 0x140022848
mov rax, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x40]
mov r12, qword [rsp + 0x68]
mov r14, qword [rsp + 0x88]
mov rdx, qword [rsp + 0x80]
mov r8, qword [rsp + 0x50]
inc r8
cmp rax, r8
je 0x1400229da
mov rdi, qword [rsp + r8*8 + 0xb8]
test rdi, rdi
mov r9, rdx
cmove r9, rsi
mov qword [rsp + 0x58], r9
cmp r14, r9
jae 0x14002283c
mov qword [rsp + 0x50], r8
shl rdi, 5
lea rax, [rcx + rdi]
mov qword [rsp + 0x48], rax
add rdi, qword [rsp + 0x60]
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x38], rax
jmp 0x1400228d0
mov rbp, rdi
mov rax, qword [rsp + 0x78]
mov qword [rbp], rax
mov qword [rbp + 8], r15
mov qword [rbp + 0x10], r13
mov byte [rbp + 0x18], r12b
mov eax, dword [rsp + 0x90]
mov ecx, dword [rsp + 0x93]
mov dword [rbp + 0x19], eax
mov dword [rbp + 0x1c], ecx
inc r14
add qword [rsp + 0x38], 0x20
cmp r14, qword [rsp + 0x58]
je 0x140022810
mov rbp, r14
shl rbp, 5
mov rax, qword [rsp + 0x48]
movups xmm0, xmmword [rax + rbp]
movups xmm1, xmmword [rax + rbp + 0x10]
movups xmmword [rdi + rbp], xmm0
movups xmmword [rdi + rbp + 0x10], xmm1
mov r15, qword [rdi + rbp + 8]
mov r13, qword [rdi + rbp + 0x10]
mov rdx, qword [rdi + rbp - 0x18]
mov r8, qword [rdi + rbp - 0x10]
mov rsi, r13
sub rsi, r8
cmovb r8, r13
mov rcx, r15
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
movzx r12d, byte [rdi + rbp + 0x18]
mov eax, r12d
sub al, byte [rdi + rbp - 8]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rsi, rsi
sets al
cmovne ecx, eax
cmp cl, 1
jne 0x1400228bc
add rbp, rdi
mov rax, qword [rbp]
mov qword [rsp + 0x78], rax
mov eax, dword [rbp + 0x1c]
mov dword [rsp + 0x93], eax
mov eax, dword [rbp + 0x19]
mov dword [rsp + 0x90], eax
mov rbp, qword [rsp + 0x38]
nop dword [rax]
movups xmm0, xmmword [rdi + rbp - 0x20]
movups xmm1, xmmword [rdi + rbp - 0x10]
movups xmmword [rdi + rbp + 0x10], xmm1
movups xmmword [rdi + rbp], xmm0
cmp rbp, 0x20
je 0x140022890
mov rdx, qword [rdi + rbp - 0x38]
mov r8, qword [rdi + rbp - 0x30]
mov rsi, r13
sub rsi, r8
cmovb r8, r13
mov rcx, r15
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
mov eax, r12d
sub al, byte [rdi + rbp - 0x28]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rsi, rsi
sets al
cmovne ecx, eax
add rbp, 0xffffffffffffffe0
test cl, cl
jne 0x140022970
add rbp, rdi
jmp 0x140022893
lea rbp, [r12 - 0x20]
mov rax, rbx
shl rax, 5
mov r14, qword [rsp + 0x60]
lea r13, [r14 + rax]
add r13, 0xffffffffffffffe0
mov rdi, rcx
mov qword [rsp + 0x38], rax
lea r15, [rcx + rax]
add r15, 0xffffffffffffffe0
nop word cs:[rax + rax]
mov qword [rsp + 0x40], rsi
mov rsi, r14
mov rcx, qword [r12 + 8]
mov rax, qword [r12 + 0x10]
mov rdx, qword [r14 + 8]
mov r8, qword [r14 + 0x10]
mov r14, rax
sub r14, r8
cmovb r8, rax
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne r14, rax
movzx eax, byte [r12 + 0x18]
sub al, byte [rsi + 0x18]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r14, r14
sets al
cmovne ecx, eax
test cl, cl
mov rax, rsi
cmovne rax, r12
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rdi + 0x10], xmm1
movups xmmword [rdi], xmm0
movzx eax, cl
xor cl, 1
shl eax, 5
add rax, r12
mov r12, rax
movzx r14d, cl
shl r14d, 5
add r14, rsi
add rdi, 0x20
mov rcx, qword [r13 + 8]
mov rax, qword [r13 + 0x10]
mov rdx, qword [rbp + 8]
mov r8, qword [rbp + 0x10]
mov rsi, rax
sub rsi, r8
cmovb r8, rax
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
movzx eax, byte [r13 + 0x18]
sub al, byte [rbp + 0x18]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rsi, rsi
mov rsi, qword [rsp + 0x40]
sets al
cmovne ecx, eax
test cl, cl
mov rax, r13
cmovne rax, rbp
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [r15 + 0x10], xmm1
movups xmmword [r15], xmm0
movzx eax, cl
shl eax, 5
add r13, rax
add r13, 0xffffffffffffffe0
sub rbp, rax
add r15, 0xffffffffffffffe0
dec rsi
jne 0x140022a10
add rbp, 0x20
test bl, 1
je 0x140022b44
xor eax, eax
xor ecx, ecx
cmp r14, rbp
setae al
setb cl
mov rdx, r12
cmovb rdx, r14
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
movups xmmword [rdi + 0x10], xmm1
movups xmmword [rdi], xmm0
shl ecx, 5
add r14, rcx
shl eax, 5
add r12, rax
cmp r14, rbp
jne 0x140022bbb
add r13, 0x20
cmp r12, r13
jne 0x140022bbb
add rsp, 0xe8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rax, [0x1401bf0e8]
mov qword [rsp + 0xb8], rax
mov qword [rsp + 0xc0], 1
mov qword [rsp + 0xc8], 8
xorps xmm0, xmm0
movups xmmword [rsp + 0xd0], xmm0
lea rdx, [0x1401bf0f8]
lea rcx, [rsp + 0xb8]
call sym.core::panicking::panic_fmt::ha3b6c343273f2b7f
lea r8, [0x1401bf110]
mov rcx, r13
call sym.core::slice::index::slice_start_index_len_fail::h2ade571ebb8e716c
call sym.core::slice::sort::shared::smallsort::panic_on_ord_violation::h18059a2a34a3c75e
ud2