Function at 0x14012ed10
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x108
mov r13, r9
mov rdi, r8
mov r12, rdx
mov qword [rsp + 0x38], rcx
mov rsi, qword [rsp + 0x180]
cmp rdx, 0x21
jae 0x14012ed5c
mov qword [rsp + 0x20], rsi
mov rcx, qword [rsp + 0x38]
mov rdx, r12
mov r8, rdi
mov r9, r13
call sym.core::slice::sort::shared::smallsort::small_sort_general_with_scratch::h3a407f5a48130003
jmp 0x14012f422
mov rax, qword [rsp + 0x178]
mov qword [rsp + 0x48], rax
mov ebx, dword [rsp + 0x170]
lea rax, [rdi - 0x50]
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x70], r13
mov r14, r12
nop word cs:[rax + rax]
sub ebx, 1
jb 0x14012f405
mov dword [rsp + 0x44], ebx
mov rbx, qword [rsp + 0x38]
mov rcx, rbx
mov rdx, r14
mov r8, rsi
call sym.core::slice::sort::shared::pivot::choose_pivot::hd92f0de5fa6a156e
mov r15, rax
lea rax, [rax + rax*4]
shl rax, 4
lea rsi, [rbx + rax]
movups xmm0, xmmword [rbx + rax + 0x40]
movaps xmmword [rsp + 0xf0], xmm0
movups xmm0, xmmword [rbx + rax]
movups xmm1, xmmword [rbx + rax + 0x10]
movups xmm2, xmmword [rbx + rax + 0x20]
movups xmm3, xmmword [rbx + rax + 0x30]
movaps xmmword [rsp + 0xe0], xmm3
movaps xmmword [rsp + 0xd0], xmm2
movaps xmmword [rsp + 0xc0], xmm1
movaps xmmword [rsp + 0xb0], xmm0
cmp qword [rsp + 0x48], 0
mov qword [rsp + 0x60], r14
je 0x14012ee41
mov rax, qword [rsp + 0x48]
mov rcx, qword [rax + 8]
mov rax, qword [rax + 0x10]
mov rdx, qword [rsi + 8]
mov r8, qword [rsi + 0x10]
mov rbx, rax
sub rbx, r8
cmovb r8, rax
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne rbx, rax
test rbx, rbx
jns 0x14012f130
cmp r14, r13
ja 0x14012f437
lea rax, [r14 + r14*4]
shl rax, 4
mov qword [rsp + 0x78], rax
lea rbp, [rdi + rax]
xor r12d, r12d
mov r13, qword [rsp + 0x38]
mov qword [rsp + 0x50], rbp
mov qword [rsp + 0x58], r15
nop dword [rax]
lea rbx, [r15 + r15*4]
shl rbx, 4
add rbx, qword [rsp + 0x38]
cmp r13, rbx
jae 0x14012ef0e
nop word cs:[rax + rax]
mov rcx, qword [r13 + 8]
mov rax, qword [r13 + 0x10]
mov rdx, qword [rsi + 8]
mov r8, qword [rsi + 0x10]
mov r14, rax
sub r14, r8
cmovb r8, rax
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne r14, rax
add rbp, 0xffffffffffffffb0
test r14, r14
mov rax, rbp
cmovs rax, rdi
lea rcx, [r12 + r12*4]
shl rcx, 4
movups xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 0x10]
movups xmm2, xmmword [r13 + 0x20]
movups xmm3, xmmword [r13 + 0x30]
movups xmmword [rax + rcx], xmm0
movups xmmword [rax + rcx + 0x10], xmm1
movups xmmword [rax + rcx + 0x20], xmm2
movups xmmword [rax + rcx + 0x30], xmm3
movups xmm0, xmmword [r13 + 0x40]
movups xmmword [rax + rcx + 0x40], xmm0
shr r14, 0x3f
add r12, r14
add r13, 0x50
cmp r13, rbx
jb 0x14012ee90
mov r14, qword [rsp + 0x60]
cmp r15, r14
je 0x14012ef70
lea rax, [r12 + r12*4]
shl rax, 4
movups xmm0, xmmword [r13 + 0x40]
movups xmmword [rbp + rax - 0x10], xmm0
movups xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 0x10]
movups xmm2, xmmword [r13 + 0x20]
movups xmm3, xmmword [r13 + 0x30]
movups xmmword [rbp + rax - 0x20], xmm3
movups xmmword [rbp + rax - 0x30], xmm2
movups xmmword [rbp + rax - 0x40], xmm1
movups xmmword [rbp + rax - 0x50], xmm0
add rbp, 0xffffffffffffffb0
add r13, 0x50
mov r15, r14
jmp 0x14012ee70
mov rax, r12
shl rax, 4
lea r8, [rax + rax*4]
mov rcx, qword [rsp + 0x38]
mov rdx, rdi
call sym.memcpy
mov rdx, r14
sub rdx, r12
mov r13, qword [rsp + 0x70]
mov r15, qword [rsp + 0x58]
mov r11, qword [rsp + 0x50]
je 0x14012f0ce
lea rax, [r12 + r12*4]
shl rax, 4
add rax, qword [rsp + 0x38]
lea rcx, [r12 + 1]
cmp r14, rcx
jne 0x14012efd0
xor r9d, r9d
jmp 0x14012f081
mov rcx, rdx
and rcx, 0xfffffffffffffffe
mov rbx, qword [rsp + 0x78]
add rbx, qword [rsp + 0x68]
mov r8, rax
xor r10d, r10d
nop word [rax + rax]
movups xmm0, xmmword [rbx + 0x40]
movups xmmword [r8 + 0x40], xmm0
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movups xmm2, xmmword [rbx + 0x20]
movups xmm3, xmmword [rbx + 0x30]
movups xmmword [r8 + 0x30], xmm3
movups xmmword [r8 + 0x20], xmm2
movups xmmword [r8 + 0x10], xmm1
movups xmmword [r8], xmm0
lea r9, [r10 + 2]
xor r10, 0xfffffffffffffffe
lea r10, [r10 + r10*4]
shl r10, 4
movups xmm0, xmmword [r11 + r10]
movups xmm1, xmmword [r11 + r10 + 0x10]
movups xmm2, xmmword [r11 + r10 + 0x20]
movups xmm3, xmmword [r11 + r10 + 0x30]
movups xmmword [r8 + 0x50], xmm0
movups xmmword [r8 + 0x60], xmm1
movups xmmword [r8 + 0x70], xmm2
movups xmmword [r8 + 0x80], xmm3
movups xmm0, xmmword [r11 + r10 + 0x40]
movups xmmword [r8 + 0x90], xmm0
add r8, 0xa0
add rbx, 0xffffffffffffff60
mov r10, r9
cmp rcx, r9
jne 0x14012eff0
test dl, 1
je 0x14012f0ce
lea rcx, [r9 + r9*4]
not r9
lea r8, [r9 + r9*4]
shl r8, 4
shl rcx, 4
movups xmm0, xmmword [r11 + r8 + 0x40]
movups xmmword [rax + rcx + 0x40], xmm0
movups xmm0, xmmword [r11 + r8]
movups xmm1, xmmword [r11 + r8 + 0x10]
movups xmm2, xmmword [r11 + r8 + 0x20]
movups xmm3, xmmword [r11 + r8 + 0x30]
movups xmmword [rax + rcx + 0x30], xmm3
movups xmmword [rax + rcx + 0x20], xmm2
movups xmmword [rax + rcx + 0x10], xmm1
movups xmmword [rax + rcx], xmm0
test r12, r12
je 0x14012f130
cmp r14, r12
jb 0x14012f439
lea rcx, [r12 + r12*4]
shl rcx, 4
add rcx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x180]
mov qword [rsp + 0x30], rsi
lea rax, [rsp + 0xb0]
mov qword [rsp + 0x28], rax
mov ebx, dword [rsp + 0x44]
mov dword [rsp + 0x20], ebx
mov r8, rdi
mov r9, r13
call sym.core::slice::sort::stable::quicksort::quicksort::h1c3bc4a8479e38e8
mov r14, r12
cmp r12, 0x21
jae 0x14012ed90
jmp 0x14012ed3f
cmp r14, r13
ja 0x14012f437
lea rax, [r14 + r14*4]
shl rax, 4
mov qword [rsp + 0x50], rax
lea r13, [rdi + rax]
xor ebp, ebp
mov r12, qword [rsp + 0x38]
mov qword [rsp + 0x58], r13
nop word cs:[rax + rax]
mov r14, r15
lea rbx, [r15 + r15*4]
shl rbx, 4
add rbx, qword [rsp + 0x38]
cmp r12, rbx
jae 0x14012f210
nop dword [rax]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
mov rcx, qword [rsi + 8]
mov rax, qword [rsi + 0x10]
mov r15, rax
sub r15, r8
cmovb r8, rax
call sub.msvcrt.dll_memcmp
cdqe
test eax, eax
cmovne r15, rax
add r13, 0xffffffffffffffb0
xor eax, eax
test r15, r15
mov rcx, r13
cmovns rcx, rdi
setns al
lea rdx, [rbp*4]
add rdx, rbp
shl rdx, 4
movups xmm0, xmmword [r12]
movups xmm1, xmmword [r12 + 0x10]
movups xmm2, xmmword [r12 + 0x20]
movups xmm3, xmmword [r12 + 0x30]
movups xmmword [rcx + rdx], xmm0
movups xmmword [rcx + rdx + 0x10], xmm1
movups xmmword [rcx + rdx + 0x20], xmm2
movups xmmword [rcx + rdx + 0x30], xmm3
movups xmm0, xmmword [r12 + 0x40]
movups xmmword [rcx + rdx + 0x40], xmm0
add rbp, rax
add r12, 0x50
cmp r12, rbx
jb 0x14012f180
mov r15, qword [rsp + 0x60]
cmp r14, r15
je 0x14012f270
add r13, 0xffffffffffffffb0
lea rax, [rbp*4]
add rax, rbp
shl rax, 4
movups xmm0, xmmword [r12 + 0x40]
movups xmmword [rdi + rax + 0x40], xmm0
movups xmm0, xmmword [r12]
movups xmm1, xmmword [r12 + 0x10]
movups xmm2, xmmword [r12 + 0x20]
movups xmm3, xmmword [r12 + 0x30]
movups xmmword [rdi + rax + 0x30], xmm3
movups xmmword [rdi + rax + 0x20], xmm2
movups xmmword [rdi + rax + 0x10], xmm1
movups xmmword [rdi + rax], xmm0
inc rbp
add r12, 0x50
jmp 0x14012f160
mov rax, rbp
shl rax, 4
lea r8, [rax + rax*4]
mov rcx, qword [rsp + 0x38]
mov rdx, rdi
call sym.memcpy
mov r12, r15
sub r12, rbp
mov r13, qword [rsp + 0x70]
mov rsi, qword [rsp + 0x180]
mov ebx, dword [rsp + 0x44]
mov r10, qword [rsp + 0x58]
je 0x14012f3cf
lea rax, [rbp*4]
add rax, rbp
shl rax, 4
add rax, qword [rsp + 0x38]
lea rcx, [rbp + 1]
cmp r15, rcx
jne 0x14012f2cf
xor r8d, r8d
jmp 0x14012f37c
mov rcx, r12
and rcx, 0xfffffffffffffffe
mov r11, qword [rsp + 0x50]
add r11, qword [rsp + 0x68]
mov rdx, rax
xor r9d, r9d
nop word cs:[rax + rax]
movups xmm0, xmmword [r11 + 0x40]
movups xmmword [rdx + 0x40], xmm0
movups xmm0, xmmword [r11]
movups xmm1, xmmword [r11 + 0x10]
movups xmm2, xmmword [r11 + 0x20]
movups xmm3, xmmword [r11 + 0x30]
movups xmmword [rdx + 0x30], xmm3
movups xmmword [rdx + 0x20], xmm2
movups xmmword [rdx + 0x10], xmm1
movups xmmword [rdx], xmm0
lea r8, [r9 + 2]
xor r9, 0xfffffffffffffffe
lea r9, [r9 + r9*4]
shl r9, 4
movups xmm0, xmmword [r10 + r9]
movups xmm1, xmmword [r10 + r9 + 0x10]
movups xmm2, xmmword [r10 + r9 + 0x20]
movups xmm3, xmmword [r10 + r9 + 0x30]
movups xmmword [rdx + 0x50], xmm0
movups xmmword [rdx + 0x60], xmm1
movups xmmword [rdx + 0x70], xmm2
movups xmmword [rdx + 0x80], xmm3
movups xmm0, xmmword [r10 + r9 + 0x40]
movups xmmword [rdx + 0x90], xmm0
add rdx, 0xa0
add r11, 0xffffffffffffff60
mov r9, r8
cmp rcx, r8
jne 0x14012f2f0
test r12b, 1
mov r15, qword [rsp + 0x60]
je 0x14012f3cf
lea rcx, [r8 + r8*4]
not r8
lea rdx, [r8 + r8*4]
shl rdx, 4
shl rcx, 4
movups xmm0, xmmword [r10 + rdx + 0x40]
movups xmmword [rax + rcx + 0x40], xmm0
movups xmm0, xmmword [r10 + rdx]
movups xmm1, xmmword [r10 + rdx + 0x10]
movups xmm2, xmmword [r10 + rdx + 0x20]
movups xmm3, xmmword [r10 + rdx + 0x30]
movups xmmword [rax + rcx + 0x30], xmm3
movups xmmword [rax + rcx + 0x20], xmm2
movups xmmword [rax + rcx + 0x10], xmm1
movups xmmword [rax + rcx], xmm0
cmp r15, rbp
jb 0x14012f47f
lea rax, [rbp*4]
add rax, rbp
shl rax, 4
add qword [rsp + 0x38], rax
mov eax, 0
mov qword [rsp + 0x48], rax
cmp r12, 0x21
jae 0x14012ed7e
jmp 0x14012ed3f
mov qword [rsp + 0x28], rsi
mov byte [rsp + 0x20], 1
mov rcx, qword [rsp + 0x38]
mov rdx, r14
mov r8, rdi
mov r9, r13
call sym.core::slice::sort::stable::drift::sort::h90c3bcc12549fe99
nop
add rsp, 0x108
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2
lea rax, [0x140366ff0]
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x88], 1
mov qword [rsp + 0x90], 8
xorps xmm0, xmm0
movups xmmword [rsp + 0x98], xmm0
lea rdx, [0x140367000]
lea rcx, [rsp + 0x80]
call sym.core::panicking::panic_fmt::h50bba86df16ca19f
lea r8, [0x140367018]
mov rcx, rbp
mov rdx, r15
call sym.core::slice::index::slice_start_index_len_fail::h8d3d56967d6340e8
int3