Function at 0x140088c90
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xc8
mov qword [rsp + 0x48], r9
mov rsi, r8
mov rbx, rdx
mov r14, rcx
cmp rdx, 0x21
jae 0x140088d1e
cmp rbx, 2
jb 0x14008968e
lea rax, [rbx + 0x10]
cmp rax, qword [rsp + 0x48]
ja 0x1400896a2
mov r15, rbx
shr r15, 1
lea rax, [r15*8]
lea rbp, [rax + rax*2]
lea r12, [r14 + rbp]
lea rdi, [rsi + rbp]
cmp rbx, 7
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x68], r12
jbe 0x1400892de
mov rcx, r14
mov rdx, rsi
call fcn.140084480
mov rcx, r12
mov rdx, rdi
call fcn.140084480
mov eax, 4
jmp 0x140089303
mov rax, qword [rsp + 0x138]
mov qword [rsp + 0x60], rax
mov edi, dword [rsp + 0x130]
lea rax, [rsi - 0x18]
mov qword [rsp + 0x70], rax
mov r15, rbx
mov qword [rsp + 0x50], r14
nop word cs:[rax + rax]
sub edi, 1
jb 0x1400892c1
mov dword [rsp + 0x68], edi
mov r9, r15
shr r9, 3
lea rbx, [r9 + r9*2]
shl rbx, 5
add rbx, r14
imul r13, r9, 0xa8
add r13, r14
cmp r15, 0x40
mov qword [rsp + 0x40], r15
jae 0x140088e40
mov rcx, qword [r14 + 8]
mov qword [rsp + 0x30], rcx
mov r15, qword [r14 + 0x10]
mov rdx, qword [rbx + 8]
mov r8, qword [rbx + 0x10]
mov r12, r15
sub r12, r8
mov qword [rsp + 0x58], r8
cmovb r8, r15
mov qword [rsp + 0x38], rdx
call fcn.140313000
cdqe
test eax, eax
cmovne r12, rax
mov rdx, qword [r13 + 8]
mov rbp, qword [r13 + 0x10]
mov rdi, r15
sub rdi, rbp
cmovae r15, rbp
mov rcx, qword [rsp + 0x30]
mov qword [rsp + 0x78], rdx
mov r8, r15
mov r15, qword [rsp + 0x40]
call fcn.140313000
cdqe
test eax, eax
cmovne rdi, rax
mov qword [rsp + 0x30], r12
xor rdi, r12
mov r12, r14
js 0x140088e51
mov rax, qword [rsp + 0x58]
mov rdi, rax
sub rdi, rbp
cmovb rbp, rax
mov rcx, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x78]
mov r8, rbp
call fcn.140313000
cdqe
test eax, eax
cmovne rdi, rax
xor qword [rsp + 0x30], rdi
cmovs rbx, r13
mov r12, rbx
jmp 0x140088e51
mov rcx, r14
mov rdx, rbx
mov r8, r13
call fcn.1400886f0
mov r12, rax
mov rcx, r12
sub rcx, r14
shr rcx, 3
movabs rax, 0xaaaaaaaaaaaaaaab
imul rcx, rax
mov qword [rsp + 0x30], rcx
mov rax, qword [r12 + 0x10]
mov qword [rsp + 0x90], rax
movups xmm0, xmmword [r12]
movaps xmmword [rsp + 0x80], xmm0
cmp qword [rsp + 0x60], 0
je 0x140088ec7
mov rax, qword [rsp + 0x60]
mov rcx, qword [rax + 8]
mov rax, qword [rax + 0x10]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
mov rdi, rax
sub rdi, r8
cmovb r8, rax
call fcn.140313000
cdqe
test eax, eax
cmovne rdi, rax
test rdi, rdi
jns 0x1400890c0
cmp r15, qword [rsp + 0x48]
ja 0x1400896a2
lea rax, [r15 + r15*2]
mov qword [rsp + 0x58], rax
lea r13, [rsi + rax*8]
xor ebx, ebx
mov rdi, r14
mov qword [rsp + 0x38], r13
mov r15, qword [rsp + 0x30]
nop
lea rax, [r15 + r15*2]
lea rbp, [r14 + rax*8]
cmp rdi, rbp
jae 0x140088f5b
nop dword [rax]
mov rcx, qword [rdi + 8]
mov rax, qword [rdi + 0x10]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
mov r14, rax
sub r14, r8
cmovb r8, rax
call fcn.140313000
cdqe
test eax, eax
cmovne r14, rax
add r13, 0xffffffffffffffe8
test r14, r14
mov rax, r13
cmovs rax, rsi
lea rcx, [rbx + rbx*2]
movups xmm0, xmmword [rdi]
movups xmmword [rax + rcx*8], xmm0
mov rdx, qword [rdi + 0x10]
mov qword [rax + rcx*8 + 0x10], rdx
shr r14, 0x3f
add rbx, r14
add rdi, 0x18
cmp rdi, rbp
jb 0x140088f00
mov rax, qword [rsp + 0x40]
cmp r15, rax
mov r15, rax
je 0x140088f90
lea rax, [rbx + rbx*2]
mov rcx, qword [rdi + 0x10]
mov qword [r13 + rax*8 - 8], rcx
movups xmm0, xmmword [rdi]
movups xmmword [r13 + rax*8 - 0x18], xmm0
add r13, 0xffffffffffffffe8
add rdi, 0x18
mov r14, qword [rsp + 0x50]
jmp 0x140088ef0
lea rax, [rbx*8]
lea r8, [rax + rax*2]
mov r14, qword [rsp + 0x50]
mov rcx, r14
mov rdx, rsi
call fcn.1403125c0
mov rdx, r15
sub rdx, rbx
mov r13, qword [rsp + 0x38]
je 0x140089073
lea rax, [rbx + rbx*2]
lea rax, [r14 + rax*8]
lea rcx, [rbx + 1]
cmp r15, rcx
jne 0x140088fe0
xor r9d, r9d
jmp 0x14008904f
mov rcx, rdx
and rcx, 0xfffffffffffffffe
mov r8, qword [rsp + 0x70]
mov r9, qword [rsp + 0x58]
lea r8, [r8 + r9*8]
mov r10, rax
xor r11d, r11d
movabs rdi, 0x1ffffffffffffffe
nop word cs:[rax + rax]
mov r9, qword [r8 + 0x10]
mov qword [r10 + 0x10], r9
movups xmm0, xmmword [r8]
movups xmmword [r10], xmm0
lea r9, [r11 + 2]
xor r11, rdi
lea r11, [r11 + r11*2]
movups xmm0, xmmword [r13 + r11*8]
movups xmmword [r10 + 0x18], xmm0
mov r11, qword [r13 + r11*8 + 0x10]
mov qword [r10 + 0x28], r11
add r10, 0x30
add r8, 0xffffffffffffffd0
mov r11, r9
cmp rcx, r9
jne 0x140089010
test dl, 1
je 0x140089073
lea rcx, [r9 + r9*2]
not r9
lea r8, [r9 + r9*2]
mov r9, qword [r13 + r8*8 + 0x10]
mov qword [rax + rcx*8 + 0x10], r9
movups xmm0, xmmword [r13 + r8*8]
movups xmmword [rax + rcx*8], xmm0
test rbx, rbx
je 0x1400890c0
cmp r15, rbx
jb 0x1400896a4
lea rax, [rbx + rbx*2]
lea rcx, [r14 + rax*8]
lea rax, [rsp + 0x80]
mov qword [rsp + 0x28], rax
mov edi, dword [rsp + 0x68]
mov dword [rsp + 0x20], edi
mov r8, rsi
mov r9, qword [rsp + 0x48]
call fcn.140088c90
mov r15, rbx
cmp rbx, 0x21
jae 0x140088d50
jmp 0x140088cb7
cmp r15, qword [rsp + 0x48]
ja 0x1400896a2
lea rax, [r15 + r15*2]
mov qword [rsp + 0x38], rax
lea rbp, [rsi + rax*8]
xor r13d, r13d
mov rbx, r14
mov qword [rsp + 0x40], rbp
mov rax, qword [rsp + 0x30]
nop dword [rax + rax]
mov qword [rsp + 0x30], rax
lea rax, [rax + rax*2]
lea rdi, [r14 + rax*8]
cmp rbx, rdi
jae 0x14008916d
nop word cs:[rax + rax]
mov rdx, qword [rbx + 8]
mov r8, qword [rbx + 0x10]
mov rcx, qword [r12 + 8]
mov rax, qword [r12 + 0x10]
mov r14, rax
sub r14, r8
cmovb r8, rax
call fcn.140313000
cdqe
test eax, eax
cmovne r14, rax
add rbp, 0xffffffffffffffe8
xor eax, eax
test r14, r14
setns al
mov rcx, rbp
cmovns rcx, rsi
lea rdx, [r13 + r13*2]
movups xmm0, xmmword [rbx]
movups xmmword [rcx + rdx*8], xmm0
mov r8, qword [rbx + 0x10]
mov qword [rcx + rdx*8 + 0x10], r8
add r13, rax
add rbx, 0x18
cmp rbx, rdi
jb 0x140089110
cmp qword [rsp + 0x30], r15
je 0x1400891b0
add rbp, 0xffffffffffffffe8
lea rax, [r13*2]
add rax, r13
mov rcx, qword [rbx + 0x10]
mov qword [rsi + rax*8 + 0x10], rcx
movups xmm0, xmmword [rbx]
movups xmmword [rsi + rax*8], xmm0
inc r13
add rbx, 0x18
mov rax, r15
mov r14, qword [rsp + 0x50]
jmp 0x1400890f0
lea rax, [r13*8]
lea r8, [rax + rax*2]
mov r14, qword [rsp + 0x50]
mov rcx, r14
mov rdx, rsi
call fcn.1403125c0
mov rbx, r15
sub rbx, r13
mov edi, dword [rsp + 0x68]
mov r12, qword [rsp + 0x40]
je 0x140089290
lea rax, [r13*2]
add rax, r13
lea rax, [r14 + rax*8]
lea rcx, [r13 + 1]
cmp r15, rcx
jne 0x1400891fe
xor r8d, r8d
jmp 0x14008926d
mov rcx, rbx
and rcx, 0xfffffffffffffffe
mov rdx, qword [rsp + 0x70]
mov r8, qword [rsp + 0x38]
lea rdx, [rdx + r8*8]
mov r9, rax
xor r10d, r10d
movabs r11, 0x1ffffffffffffffe
nop word cs:[rax + rax]
mov r8, qword [rdx + 0x10]
mov qword [r9 + 0x10], r8
movups xmm0, xmmword [rdx]
movups xmmword [r9], xmm0
lea r8, [r10 + 2]
xor r10, r11
lea r10, [r10 + r10*2]
movups xmm0, xmmword [r12 + r10*8]
movups xmmword [r9 + 0x18], xmm0
mov r10, qword [r12 + r10*8 + 0x10]
mov qword [r9 + 0x28], r10
add r9, 0x30
add rdx, 0xffffffffffffffd0
mov r10, r8
cmp rcx, r8
jne 0x140089230
test bl, 1
je 0x140089290
lea rcx, [r8 + r8*2]
not r8
lea rdx, [r8 + r8*2]
mov r8, qword [r12 + rdx*8 + 0x10]
mov qword [rax + rcx*8 + 0x10], r8
movups xmm0, xmmword [r12 + rdx*8]
movups xmmword [rax + rcx*8], xmm0
cmp r15, r13
jb 0x1400896ea
lea rax, [r13*2]
add rax, r13
lea r14, [r14 + rax*8]
mov eax, 0
mov qword [rsp + 0x60], rax
cmp rbx, 0x21
jae 0x140088d3b
jmp 0x140088cb7
mov byte [rsp + 0x20], 1
mov rcx, r14
mov rdx, r15
mov r8, rsi
mov r9, qword [rsp + 0x48]
call fcn.1400851d0
jmp 0x14008968e
mov rax, qword [r14 + 0x10]
mov qword [rsi + 0x10], rax
movups xmm0, xmmword [r14]
movups xmmword [rsi], xmm0
mov rax, qword [r12 + 0x10]
mov qword [rdi + 0x10], rax
movups xmm0, xmmword [r12]
movups xmmword [rdi], xmm0
mov eax, 1
mov qword [rsp + 0x58], rdi
mov rcx, rbx
sub rcx, r15
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x38], rax
cmp rax, r15
jae 0x14008942a
mov r13, qword [rsp + 0x38]
lea eax, [r13*8]
lea rax, [rax + rax*2]
mov qword [rsp + 0x30], rax
jmp 0x140089368
add r14, rsi
mov rax, rsi
mov rcx, qword [rsp + 0x60]
mov qword [rax], rcx
mov qword [r14 - 0x10], r12
mov qword [r14 - 8], rdi
inc r13
add qword [rsp + 0x30], 0x18
cmp r13, qword [rsp + 0x40]
je 0x14008942a
lea rax, [r13*8]
lea r14, [rax + rax*2]
mov rax, qword [rsp + 0x50]
movups xmm0, xmmword [rax + r14]
movups xmmword [rsi + r14], xmm0
mov rdi, qword [rax + r14 + 0x10]
mov qword [rsi + r14 + 0x10], rdi
mov r12, qword [rsi + r14 + 8]
mov rdx, qword [rsi + r14 - 0x10]
mov r8, qword [rsi + r14 - 8]
mov r15, rdi
sub r15, r8
cmovb r8, rdi
mov rcx, r12
call fcn.140313000
cdqe
test eax, eax
cmovne r15, rax
test r15, r15
jns 0x140089354
add r14, rsi
mov rax, qword [r14]
mov qword [rsp + 0x60], rax
mov rax, qword [rsp + 0x30]
nop dword [rax + rax]
mov r14, rax
mov rax, qword [rsi + rax - 8]
mov qword [rsi + r14 + 0x10], rax
movups xmm0, xmmword [rsi + r14 - 0x18]
movups xmmword [rsi + r14], xmm0
cmp r14, 0x18
je 0x14008933e
mov rdx, qword [rsi + r14 - 0x28]
mov r8, qword [rsi + r14 - 0x20]
mov r15, rdi
sub r15, r8
cmovb r8, rdi
mov rcx, r12
call fcn.140313000
cdqe
test eax, eax
cmovne r15, rax
lea rax, [r14 - 0x18]
test r15, r15
js 0x1400893d0
add r14, rsi
add rax, rsi
jmp 0x140089344
mov r15, qword [rsp + 0x38]
cmp r15, qword [rsp + 0x48]
jae 0x14008953b
add rbp, rsi
lea eax, [r15*8]
lea rax, [rax + rax*2]
mov qword [rsp + 0x30], rax
jmp 0x14008947a
add r13, rbp
mov rax, rbp
mov qword [rax], r15
mov qword [r13 - 0x10], r12
mov qword [r13 - 8], rdi
mov r15, qword [rsp + 0x38]
inc r15
add qword [rsp + 0x30], 0x18
cmp r15, qword [rsp + 0x48]
je 0x14008953b
lea rax, [r15*8]
lea r14, [rax + rax*2]
mov rax, qword [rsp + 0x68]
movups xmm0, xmmword [rax + r14]
movups xmmword [rbp + r14], xmm0
mov rdi, qword [rax + r14 + 0x10]
mov qword [rbp + r14 + 0x10], rdi
mov r12, qword [rbp + r14 + 8]
mov rdx, qword [rbp + r14 - 0x10]
mov r8, qword [rbp + r14 - 8]
mov r13, rdi
sub r13, r8
cmovb r8, rdi
mov rcx, r12
call fcn.140313000
cdqe
test eax, eax
cmovne r13, rax
test r13, r13
jns 0x140089466
mov qword [rsp + 0x38], r15
add r14, rbp
mov r15, qword [r14]
mov rax, qword [rsp + 0x30]
nop
mov r13, rax
mov rax, qword [rbp + rax - 8]
mov qword [rbp + r13 + 0x10], rax
movups xmm0, xmmword [rbp + r13 - 0x18]
movups xmmword [rbp + r13], xmm0
cmp r13, 0x18
je 0x140089450
mov rdx, qword [rbp + r13 - 0x28]
mov r8, qword [rbp + r13 - 0x20]
mov r14, rdi
sub r14, r8
cmovb r8, rdi
mov rcx, r12
call fcn.140313000
cdqe
test eax, eax
cmovne r14, rax
lea rax, [r13 - 0x18]
test r14, r14
js 0x1400894e0
add r13, rbp
add rax, rbp
jmp 0x140089456
mov r13, qword [rsp + 0x58]
lea r12, [r13 - 0x18]
lea rax, [rbx + rbx*2]
lea r15, [rsi + rax*8]
add r15, 0xffffffffffffffe8
mov r14, qword [rsp + 0x50]
lea rbp, [r14 + rax*8]
add rbp, 0xffffffffffffffe8
mov rax, qword [rsp + 0x40]
nop word cs:[rax + rax]
mov qword [rsp + 0x40], rax
mov rcx, qword [r13 + 8]
mov rax, qword [r13 + 0x10]
mov rdx, qword [rsi + 8]
mov r8, qword [rsi + 0x10]
mov rdi, rax
sub rdi, r8
cmovb r8, rax
call fcn.140313000
cdqe
test eax, eax
cmovne rdi, rax
xor eax, eax
test rdi, rdi
setns al
mov rcx, r13
cmovns rcx, rsi
movups xmm0, xmmword [rcx]
movups xmmword [r14], xmm0
mov rcx, qword [rcx + 0x10]
mov qword [r14 + 0x10], rcx
shr rdi, 0x3f
lea rcx, [rdi + rdi*2]
lea r13, [r13 + rcx*8]
lea rax, [rax + rax*2]
lea rsi, [rsi + rax*8]
add r14, 0x18
mov rcx, qword [r15 + 8]
mov rax, qword [r15 + 0x10]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
mov rdi, rax
sub rdi, r8
cmovb r8, rax
call fcn.140313000
cdqe
test eax, eax
cmovne rdi, rax
xor eax, eax
test rdi, rdi
setns al
mov rcx, r12
cmovns rcx, r15
movups xmm0, xmmword [rcx]
movups xmmword [rbp], xmm0
mov rcx, qword [rcx + 0x10]
mov qword [rbp + 0x10], rcx
neg rax
lea rax, [rax + rax*2]
lea r15, [r15 + rax*8]
sar rdi, 0x3f
lea rax, [rdi + rdi*2]
lea r12, [r12 + rax*8]
mov rax, qword [rsp + 0x40]
add rbp, 0xffffffffffffffe8
dec rax
jne 0x140089570
add r12, 0x18
test bl, 1
je 0x140089680
xor eax, eax
xor ecx, ecx
cmp rsi, r12
setae al
setb cl
mov rdx, r13
cmovb rdx, rsi
mov r8, qword [rdx + 0x10]
mov qword [r14 + 0x10], r8
movups xmm0, xmmword [rdx]
movups xmmword [r14], xmm0
lea rcx, [rcx + rcx*2]
lea rsi, [rsi + rcx*8]
lea rax, [rax + rax*2]
lea r13, [r13 + rax*8]
cmp rsi, r12
jne 0x1400896fc
add r15, 0x18
cmp r13, r15
jne 0x1400896fc
add rsp, 0xc8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2
lea rax, str.mid___len
mov qword [rsp + 0x98], rax
mov qword [rsp + 0xa0], 1
mov qword [rsp + 0xa8], 8
xorps xmm0, xmm0
movups xmmword [rsp + 0xb0], xmm0
lea rdx, str._rustc_f6e511eec7342f59a25f7c0534f1dbea00d01b14librarycore_src_slice_sort_stablequicksort.rs
lea rcx, [rsp + 0x98]
call fcn.140313650
lea r8, str._rustc_f6e511eec7342f59a25f7c0534f1dbea00d01b14librarycore_src_slice_sort_stablequicksort.rs
mov rcx, r13
mov rdx, r15
call fcn.140313570
call fcn.140313bf0
int3