Function at 0x14002c670
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x158
lea rbp, [rsp + 0x80]
movaps xmmword [rbp + 0xc0], xmm15
movaps xmmword [rbp + 0xb0], xmm14
movaps xmmword [rbp + 0xa0], xmm13
movaps xmmword [rbp + 0x90], xmm12
movaps xmmword [rbp + 0x80], xmm11
movaps xmmword [rbp + 0x70], xmm10
movaps xmmword [rbp + 0x60], xmm9
movaps xmmword [rbp + 0x50], xmm8
movaps xmmword [rbp + 0x40], xmm7
movaps xmmword [rbp + 0x30], xmm6
mov rsi, r8
push rdx
pop rbx
nop
mov rdi, rcx
cmp rdx, 0x21
jae 0x14002c908
cmp rbx, 2
jb 0x14002d058
mov r13, rbx
shr r13, 1
cmp rbx, 8
mov qword [rbp + 0x28], rdi
jb 0x14002cd81
mov rax, qword [rdi + 0x30]
mov rdx, qword [rdi + 0x70]
sub ecx, ecx
xor r10d, r10d
cmp rax, qword [rdi + 0x10]
setae cl
setb r10b
xor r9d, r9d
cmp rdx, qword [rdi + 0x50]
setb r9b
shl r10d, 5
lea r15, [rdi + r10]
shl ecx, 5
lea r14, [rdi + rcx]
mov eax, r9d
shl eax, 5
lea r8, [rdi + rax]
add r8, 0x40
xor r9d, 3
shl r9d, 5
mov rax, qword [rdi + rax + 0x50]
mov r11, qword [rdi + r9 + 0x10]
mov rcx, qword [rdi + rcx + 0x10]
cmp r11, rcx
mov rdi, r14
cmovb rdi, r8
mov rdx, qword [rbp + 0x28]
cmp rax, qword [rdx + r10 + 0x10]
cmovb rdi, r15
cmovb r15, r8
mov qword [rbp + 0x20], r15
mov rax, qword [rbp + 0x28]
lea rax, [rax + r9]
cmovb r8, r14
cmp r11, rcx
cmovae r14, rax
mov qword [rbp + 0x18], r14
cmovb r8, rax
mov rax, qword [r8 + 0x10]
cmp rax, qword [rdi + 0x10]
mov r10, rdi
cmovb r10, r8
cmovb r8, rdi
mov r9, r13
shl r9, 5
mov rax, qword [rbp + 0x28]
lea r14, [rax + r9]
mov rax, qword [rbp + 0x28]
mov rax, qword [rax + r9 + 0x30]
sub ecx, ecx
mov qword [rbp + 0x10], r13
xor r13d, r13d
mov rdx, qword [rbp + 0x28]
cmp rax, qword [rdx + r9 + 0x10]
mov rax, qword [rbp + 0x28]
mov rax, qword [rax + r9 + 0x70]
setae cl
setb r13b
xor r12d, r12d
mov rdx, qword [rbp + 0x28]
cmp rax, qword [rdx + r9 + 0x50]
setb r12b
shl r13d, 5
shl ecx, 5
lea r11, [r14 + rcx]
mov eax, r12d
shl eax, 5
lea r15, [rax + r14]
add r15, 0x40
xor r12d, 3
shl r12d, 5
mov rdx, qword [r14 + rax + 0x50]
mov rdi, qword [r12 + r14 + 0x10]
mov rax, qword [rcx + r14 + 0x10]
cmp rdi, rax
mov rcx, r11
cmovb rcx, r15
cmp rdx, qword [r13 + r14 + 0x10]
lea rdx, [r14 + r13]
mov r13, qword [rbp + 0x10]
cmovb rcx, rdx
cmovb rdx, r15
cmovb r15, r11
cmp rdi, rax
mov rdi, qword [rbp + 0x28]
mov rax, qword [rbp + 0x20]
movups xmm0, xmmword [rax]
movups xmm2, xmmword [rax + 0x10]
lea rax, [r14 + r12]
movups xmm1, xmmword [r10]
cmovae r11, rax
movups xmm3, xmmword [r10 + 0x10]
cmovb r15, rax
movups xmm4, xmmword [r8]
movups xmm5, xmmword [r8 + 0x10]
mov rax, qword [r15 + 0x10]
cmp rax, qword [rcx + 0x10]
mov r8, qword [rbp + 0x18]
movups xmm6, xmmword [r8]
push rcx
nop
pop rax
cmovb rax, r15
movups xmm7, xmmword [r8 + 0x10]
cmovb r15, rcx
movups xmm8, xmmword [rdx]
movups xmm9, xmmword [rdx + 0x10]
movups xmm10, xmmword [rax]
movups xmm11, xmmword [rax + 0x10]
movups xmm12, xmmword [r15]
movups xmm13, xmmword [r15 + 0x10]
movups xmm14, xmmword [r11]
movups xmm15, xmmword [r11 + 0x10]
movups xmmword [rsi + 0x10], xmm2
movups xmmword [rsi], xmm0
movups xmmword [rsi + 0x30], xmm3
movups xmmword [rsi + 0x20], xmm1
movups xmmword [rsi + 0x50], xmm5
movups xmmword [rsi + 0x40], xmm4
movups xmmword [rsi + 0x70], xmm7
movups xmmword [rsi + 0x60], xmm6
movups xmmword [rsi + r9 + 0x10], xmm9
movups xmmword [rsi + r9], xmm8
movups xmmword [rsi + r9 + 0x20], xmm10
movups xmmword [rsi + r9 + 0x30], xmm11
movups xmmword [rsi + r9 + 0x40], xmm12
movups xmmword [rsi + r9 + 0x50], xmm13
movups xmmword [rsi + r9 + 0x60], xmm14
movups xmmword [rsi + r9 + 0x70], xmm15
mov edx, 4
jmp 0x14002cdad
mov r15, r9
mov rax, qword [rbp + 0x148]
mov qword [rbp + 0x20], rax
mov r13d, dword [rbp + 0x140]
lea rax, [rsi - 0x20]
mov qword [rbp], rax
mov qword [rbp + 0x28], r9
lea rax, [rdi + 0x20]
mov qword [rbp + 8], rax
mov r14, rbx
nop word cs:[rax + rax]
sub r13d, 1
jb 0x14002cd66
mov r9, r14
shr r9, 3
mov rax, r9
shl rax, 7
add rax, rdi
imul r8, r9, 0xe0
add r8, rdi
cmp r14, 0x40
jae 0x14002c9a0
mov rcx, qword [rdi + 0x10]
mov rdx, qword [rax + 0x10]
cmp rcx, rdx
setb r9b
mov r10, qword [r8 + 0x10]
cmp rcx, r10
setb cl
xor cl, r9b
cmp rdx, r10
setb dl
xor dl, r9b
cmovne rax, r8
test cl, cl
cmovne rax, rdi
jmp 0x14002c9ab
nop
push rdi
pop rcx
push rax
nop
pop rdx
call fcn.14002d120
mov r11, rax
sub r11, rdi
shr r11, 5
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rbp - 0x40], xmm1
movaps xmmword [rbp - 0x50], xmm0
cmp qword [rbp + 0x20], 0
mov dword [rbp + 0x10], r13d
je 0x14002c9e1
mov rcx, qword [rbp + 0x20]
mov rcx, qword [rcx + 0x10]
cmp rcx, qword [rax + 0x10]
jae 0x14002cbc0
cmp r14, r15
ja 0x14002d0f4
mov r15, r14
shl r15, 5
lea r13, [rsi + r15]
mov rax, r11
shl rax, 5
add rax, rdi
add rax, 0x10
xor ebx, ebx
push rdi
nop
pop rcx
mov rdx, r13
mov qword [rbp + 0x18], r11
mov r8, r11
nop word cs:[rax + rax]
mov r9, r8
shl r9, 5
add r9, rdi
cmp rcx, r9
jae 0x14002ca68
nop
mov r10, qword [rcx + 0x10]
add rdx, 0xffffffffffffffe0
mov r11, rbx
shl r11, 5
cmp r10, qword [rax]
mov r10, rdx
cmovb r10, rsi
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [r10 + r11 + 0x10], xmm1
movups xmmword [r10 + r11], xmm0
adc rbx, 0
add rcx, 0x20
cmp rcx, r9
jb 0x14002ca30
cmp r8, r14
je 0x14002caa0
mov r8, rbx
shl r8, 5
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rdx + r8 - 0x10], xmm1
movups xmmword [rdx + r8 - 0x20], xmm0
add rdx, 0xffffffffffffffe0
add rcx, 0x20
mov r8, r14
jmp 0x14002ca20
mov r12, rbx
shl r12, 5
push rdi
pop rcx
nop
push rsi
nop
pop rdx
mov r8, r12
call sub.msvcrt.dll_memcpy
mov rdx, r14
sub rdx, rbx
movabs r10, 0x7fffffffffffffe
mov r11, qword [rbp + 0x18]
je 0x14002cb6f
lea rax, [rbx + 1]
cmp r14, rax
jne 0x14002cae0
sub eax, eax
jmp 0x14002cb43
push rdx
nop
pop rcx
and rcx, 0xfffffffffffffffe
mov rax, qword [rbp + 8]
lea r8, [rax + r12]
add r15, qword [rbp]
xor r9d, r9d
nop word cs:[rax + rax]
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 0x10]
movups xmmword [r8 - 0x10], xmm1
movups xmmword [r8 - 0x20], xmm0
lea rax, [r9 + 2]
xor r9, r10
shl r9, 5
movups xmm0, xmmword [r13 + r9]
movups xmm1, xmmword [r13 + r9 + 0x10]
movups xmmword [r8], xmm0
movups xmmword [r8 + 0x10], xmm1
add r8, 0x40
add r15, 0xffffffffffffffc0
mov r9, rax
cmp rcx, rax
jne 0x14002cb00
test dl, 1
je 0x14002cb6f
lea rcx, [rdi + r12]
mov r8, rax
not r8
shl r8, 5
shl rax, 5
movups xmm0, xmmword [r13 + r8]
movups xmm1, xmmword [r13 + r8 + 0x10]
movups xmmword [rcx + rax + 0x10], xmm1
movups xmmword [rcx + rax], xmm0
test rbx, rbx
mov r15, qword [rbp + 0x28]
mov r13d, dword [rbp + 0x10]
je 0x14002cbc0
cmp r14, rbx
jb 0x14002d0ab
add r12, rdi
lea rax, [rbp - 0x50]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r13d
mov rcx, r12
mov r8, rsi
mov r9, r15
call fcn.14002c670
mov r14, rbx
cmp rbx, 0x21
jae 0x14002c940
jmp 0x14002c6dd
cmp r14, r15
ja 0x14002d0f4
mov r13, r14
shl r13, 5
lea rdx, [rsi + r13]
mov rax, r11
shl rax, 5
add rax, rdi
add rax, 0x10
xor r12d, r12d
nop
push rdi
pop rcx
mov qword [rbp + 0x20], rdx
nop dword [rax]
mov r8, r11
shl r8, 5
add r8, rdi
cmp rcx, r8
jae 0x14002cc38
nop
mov r9, qword [rax]
add rdx, 0xffffffffffffffe0
mov r10, r12
shl r10, 5
cmp r9, qword [rcx + 0x10]
mov r9, rdx
cmovae r9, rsi
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [r9 + r10 + 0x10], xmm1
movups xmmword [r9 + r10], xmm0
sbb r12, 0xffffffffffffffff
add rcx, 0x20
cmp rcx, r8
jb 0x14002cc00
cmp r11, r14
je 0x14002cc70
add rdx, 0xffffffffffffffe0
mov r8, r12
shl r8, 5
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rsi + r8 + 0x10], xmm1
movups xmmword [rsi + r8], xmm0
inc r12
add rcx, 0x20
mov r11, r14
jmp 0x14002cbf0
mov r8, r12
shl r8, 5
nop
push rdi
pop rcx
push rsi
nop
pop rdx
mov qword [rbp + 0x18], r8
call sub.msvcrt.dll_memcpy
movabs r9, 0x7fffffffffffffe
mov rbx, r14
sub rbx, r12
mov r10, qword [rbp + 0x20]
je 0x14002cd3d
lea rax, [r12 + 1]
cmp r14, rax
jne 0x14002ccae
xor eax, eax
jmp 0x14002cd0f
mov rcx, rbx
and rcx, 0xfffffffffffffffe
mov rax, qword [rbp + 0x18]
lea rdx, [rdi + rax]
add rdx, 0x20
add r13, qword [rbp]
sub r8d, r8d
nop dword [rax + rax]
movups xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 0x10]
movups xmmword [rdx - 0x10], xmm1
movups xmmword [rdx - 0x20], xmm0
lea rax, [r8 + 2]
xor r8, r9
shl r8, 5
movups xmm0, xmmword [r10 + r8]
movups xmm1, xmmword [r10 + r8 + 0x10]
movups xmmword [rdx], xmm0
movups xmmword [rdx + 0x10], xmm1
add rdx, 0x40
add r13, 0xffffffffffffffc0
mov r8, rax
cmp rcx, rax
jne 0x14002ccd0
test bl, 1
je 0x14002cd3d
mov rcx, qword [rbp + 0x18]
add rcx, rdi
push rax
nop
pop rdx
not rdx
shl rdx, 5
shl rax, 5
movups xmm0, xmmword [r10 + rdx]
movups xmm1, xmmword [r10 + rdx + 0x10]
movups xmmword [rcx + rax + 0x10], xmm1
movups xmmword [rcx + rax], xmm0
cmp r14, r12
jb 0x14002d0dd
add rdi, qword [rbp + 0x18]
mov eax, 0
mov qword [rbp + 0x20], rax
cmp rbx, 0x21
mov r13d, dword [rbp + 0x10]
jae 0x14002c929
jmp 0x14002c6dd
mov byte [rsp + 0x20], 1
mov rcx, rdi
mov rdx, r14
mov r8, rsi
mov r9, r15
call fcn.14002bfa0
jmp 0x14002d058
movups xmm0, xmmword [rdi]
movups xmm1, xmmword [rdi + 0x10]
movups xmmword [rsi + 0x10], xmm1
movups xmmword [rsi], xmm0
mov rax, r13
shl rax, 5
movups xmm0, xmmword [rdi + rax]
movups xmm1, xmmword [rdi + rax + 0x10]
movups xmmword [rsi + rax + 0x10], xmm1
movups xmmword [rsi + rax], xmm0
mov edx, 1
mov r8, rbx
sub r8, r13
cmp rdx, r13
jae 0x14002ce62
mov ecx, edx
shl ecx, 5
mov r9, rdx
jmp 0x14002cdf1
add r15, rsi
push rsi
pop rax
nop
movups xmm0, xmmword [r11]
movups xmmword [rax], xmm0
mov qword [r15 - 0x10], r10
mov qword [r15 - 8], r14
inc r9
add rcx, 0x20
cmp r9, r13
je 0x14002ce62
mov rax, r9
shl rax, 5
movups xmm0, xmmword [rdi + rax]
movups xmm1, xmmword [rdi + rax + 0x10]
movups xmmword [rsi + rax + 0x10], xmm1
movups xmmword [rsi + rax], xmm0
mov r10, qword [rsi + rax + 0x10]
cmp r10, qword [rsi + rax - 0x10]
jae 0x14002cde5
lea r11, [rdi + rax]
add rax, rsi
mov r14, qword [rax + 0x18]
push rcx
pop rax
nop
nop word cs:[rax + rax]
mov r15, rax
movups xmm0, xmmword [rsi + rax - 0x20]
movups xmm1, xmmword [rsi + rax - 0x10]
movups xmmword [rsi + rax + 0x10], xmm1
movups xmmword [rsi + rax], xmm0
cmp rax, 0x20
je 0x14002cdd0
lea rax, [r15 - 0x20]
cmp r10, qword [rsi + r15 - 0x30]
jb 0x14002ce30
add r15, rsi
add rax, rsi
jmp 0x14002cdd6
mov r9, r13
shl r9, 5
lea rcx, [rsi + r9]
cmp rdx, r8
jae 0x14002cf23
add r9, rdi
mov r10d, edx
shl r10d, 5
jmp 0x14002ceb3
add r12, rcx
push rcx
pop rax
nop
movups xmm0, xmmword [r14]
movups xmmword [rax], xmm0
mov qword [r12 - 0x10], r11
mov qword [r12 - 8], r15
inc rdx
add r10, 0x20
cmp rdx, r8
je 0x14002cf23
push rdx
pop rax
nop
shl rax, 5
movups xmm0, xmmword [r9 + rax]
movups xmm1, xmmword [r9 + rax + 0x10]
movups xmmword [rcx + rax + 0x10], xmm1
movups xmmword [rcx + rax], xmm0
mov r11, qword [rcx + rax + 0x10]
cmp r11, qword [rcx + rax - 0x10]
jae 0x14002cea7
lea r14, [r9 + rax]
add rax, rcx
mov r15, qword [rax + 0x18]
mov rax, r10
nop dword [rax + rax]
mov r12, rax
movups xmm0, xmmword [rcx + rax - 0x20]
movups xmm1, xmmword [rcx + rax - 0x10]
movups xmmword [rcx + rax + 0x10], xmm1
movups xmmword [rcx + rax], xmm0
cmp rax, 0x20
je 0x14002ce90
lea rax, [r12 - 0x20]
cmp r11, qword [rcx + r12 - 0x30]
jb 0x14002cef0
add r12, rcx
add rax, rcx
jmp 0x14002ce96
lea rax, [rcx - 0x20]
mov r8, rbx
shl r8, 5
lea rdx, [rsi + r8]
add rdx, 0xffffffffffffffe0
mov qword [rbp + 8], r8
lea r11, [rdi + r8]
add r11, 0xffffffffffffffe0
mov r9, rsi
mov r10, rdi
jmp 0x14002cfa6
movzx edi, byte [rbp + 0x20]
mov r12b, dil
mov edi, 0
sbb rdi, rdi
shl r12d, 5
add rcx, r12
movzx r14d, byte [rbp + 0x18]
mov r15b, r14b
shl r15d, 5
add r9, r15
add r10, 0x20
movups xmm0, xmmword [r8]
movups xmm1, xmmword [r8 + 0x10]
movups xmmword [r11 + 0x10], xmm1
movups xmmword [r11], xmm0
shl r13, 5
add rdx, r13
shl rdi, 5
add rax, rdi
add r11, 0xffffffffffffffe0
mov r13, qword [rbp + 0x10]
dec r13
je 0x14002d003
mov qword [rbp + 0x10], r13
mov rdi, qword [rcx + 0x10]
xor r15d, r15d
xor r12d, r12d
mov r8, rcx
cmp rdi, qword [r9 + 0x10]
setae byte [rbp + 0x18]
setb byte [rbp + 0x20]
jb 0x14002cfc8
mov r8, r9
movups xmm0, xmmword [r8]
movups xmm1, xmmword [r8 + 0x10]
movups xmmword [r10 + 0x10], xmm1
movups xmmword [r10], xmm0
mov r14, qword [rdx + 0x10]
mov rdi, qword [rax + 0x10]
cmp r14, rdi
mov r13d, 0
adc r13, 0xffffffffffffffff
mov r8, rax
cmp r14, rdi
jb 0x14002cf50
mov r8, rdx
jmp 0x14002cf50
add rax, 0x20
test bl, 1
je 0x14002d042
xor r8d, r8d
xor r11d, r11d
cmp r9, rax
setae r8b
setb r11b
mov rdi, rcx
cmovb rdi, r9
movups xmm0, xmmword [rdi]
movups xmm1, xmmword [rdi + 0x10]
movups xmmword [r10 + 0x10], xmm1
movups xmmword [r10], xmm0
shl r11d, 5
add r9, r11
shl r8d, 5
add rcx, r8
cmp r9, rax
jne 0x14002d0ef
add rdx, 0x20
cmp rcx, rdx
jne 0x14002d0ef
movaps xmm6, xmmword [rbp + 0x30]
movaps xmm7, xmmword [rbp + 0x40]
movaps xmm8, xmmword [rbp + 0x50]
movaps xmm9, xmmword [rbp + 0x60]
movaps xmm10, xmmword [rbp + 0x70]
movaps xmm11, xmmword [rbp + 0x80]
movaps xmm12, xmmword [rbp + 0x90]
movaps xmm13, xmmword [rbp + 0xa0]
movaps xmm14, xmmword [rbp + 0xb0]
movaps xmm15, xmmword [rbp + 0xc0]
add rsp, 0x158
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
lea rax, str.mid___len
mov qword [rbp - 0x30], rax
mov qword [rbp - 0x28], 1
mov qword [rbp - 0x20], 8
xorps xmm0, xmm0
movups xmmword [rbp - 0x18], xmm0
lea rdx, str._rustc_f6e511eec7342f59a25f7c0534f1dbea00d01b14librarycore_src_slice_sort_stablequicksort.rs
lea rcx, [rbp - 0x30]
call fcn.140002f20
lea r8, str._rustc_f6e511eec7342f59a25f7c0534f1dbea00d01b14librarycore_src_slice_sort_stablequicksort.rs
mov rcx, r12
mov rdx, r14
call fcn.140002d20
call fcn.140005c60
ud2