Function at 0x140081460
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xd8
mov r13, rdx
mov qword [rsp + 0x38], rcx
cmp rdx, 0x15
jae 0x1400814b1
cmp r13, 1
jbe 0x140081b85
mov r8d, 1
mov rcx, qword [rsp + 0x38]
mov rdx, r13
add rsp, 0xd8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp 0x140082e70
movabs r15, 0x7ffffffffffffffe
mov rcx, r13
and rcx, r15
movzx eax, byte [0x14013e141]
mov edx, 1
mov qword [rsp + 0x68], rcx
call fcn.140006350
test rax, rax
je 0x140081ca7
mov rsi, rax
movzx eax, byte [0x14013e141]
mov ecx, 0x100
mov edx, 8
call fcn.140006350
test rax, rax
je 0x140081cb3
mov rbx, rax
mov rax, qword [rsp + 0x38]
lea rcx, [rax + 3]
mov qword [rsp + 0x78], rcx
lea rcx, [rax - 1]
mov qword [rsp + 0x70], rcx
add rax, 0xfffffffffffffffe
mov qword [rsp + 0x80], rax
mov eax, 0x10
mov qword [rsp + 0x50], rax
xor edi, edi
xor ebp, ebp
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], r13
jmp 0x140081563
mov ebp, 1
mov rdi, qword [rsp + 0x60]
cmp rdi, r13
jae 0x140081b48
mov rax, r13
sub rax, rdi
mov rcx, qword [rsp + 0x38]
lea rcx, [rcx + rdi*2]
cmp rax, 2
mov qword [rsp + 0x40], rbx
jae 0x140081590
mov r8, rax
lea r12, [r8 + rdi]
jmp 0x140081710
movzx edx, byte [rcx + 2]
cmp dl, byte [rcx]
jb 0x1400815a5
jne 0x1400815e6
movzx r8d, byte [rcx + 1]
cmp byte [rcx + 3], r8b
jae 0x1400815e6
mov r8d, 2
cmp rax, 2
jne 0x1400815c8
jmp 0x140081634
inc r8
cmp rax, r8
je 0x140081631
mov r9d, edx
movzx edx, byte [rcx + r8*2]
cmp dl, r9b
jb 0x1400815c0
jne 0x140081634
movzx r9d, byte [rcx + r8*2 - 1]
cmp byte [rcx + r8*2 + 1], r9b
jb 0x1400815c0
jmp 0x140081634
mov r8d, 2
cmp rax, 2
jne 0x14008160c
jmp 0x140081580
inc r8
cmp rax, r8
je 0x14008157d
mov r9d, edx
movzx edx, byte [rcx + r8*2]
cmp dl, r9b
jb 0x140081580
jne 0x140081600
movzx r9d, byte [rcx + r8*2 - 1]
cmp byte [rcx + r8*2 + 1], r9b
jae 0x140081600
jmp 0x140081580
mov r8, rax
mov r12, r8
add r12, rdi
jb 0x140081c95
cmp r12, r13
ja 0x140081c83
cmp r8, 2
jae 0x14008165a
mov r8d, 1
jmp 0x140081710
mov qword [rsp + 0x48], rbp
mov rax, r8
shr rax, 1
lea rdx, [rcx + r8*2]
mov r9, r8
and r9, 0xfffffffffffffffe
sub rdx, r9
cmp rax, 1
jne 0x14008167e
xor r9d, r9d
jmp 0x1400816df
mov r10, rax
and r10, 0xfffffffffffffffe
mov r9, qword [rsp + 0x78]
lea r11, [r9 + rdi*2]
mov r9, qword [rsp + 0x70]
lea rsi, [r9 + r12*2]
xor r9d, r9d
nop word [rax + rax]
movzx ebx, word [r11 + r9*2 - 3]
movzx ebp, word [rsi - 1]
mov word [r11 + r9*2 - 3], bp
mov word [rsi - 1], bx
mov rbx, r9
xor rbx, r15
add rbx, rax
movzx ebp, word [r11 + r9*2 - 1]
movzx r14d, word [rdx + rbx*2]
mov word [r11 + r9*2 - 1], r14w
mov word [rdx + rbx*2], bp
add r9, 2
add rsi, 0xfffffffffffffffc
cmp r10, r9
jne 0x1400816a0
test r8b, 2
je 0x140081702
mov r10, r9
not r10
add rax, r10
movzx r10d, word [rcx + r9*2]
movzx r11d, word [rdx + rax*2]
mov word [rcx + r9*2], r11w
mov word [rdx + rax*2], r10w
mov rsi, qword [rsp + 0x28]
mov rbp, qword [rsp + 0x48]
nop dword [rax]
mov rbx, r12
sub rbx, rdi
jb 0x140081c4d
cmp r12, r13
ja 0x140081c4d
jae 0x140081770
cmp r8, 0xa
jae 0x140081770
lea rbx, [rdi + 0xa]
cmp rbx, r13
cmovae rbx, r13
cmp rdi, 0xfffffffffffffff6
jae 0x140081c65
cmp r8, 1
adc r8, 0
mov qword [rsp + 0x60], rbx
sub rbx, rdi
mov rdx, rbx
call 0x140082e70
cmp rbp, qword [rsp + 0x50]
je 0x14008177c
mov rcx, qword [rsp + 0x40]
jmp 0x1400817e0
mov qword [rsp + 0x60], r12
cmp rbp, qword [rsp + 0x50]
jne 0x140081761
mov rcx, rbp
shl rcx, 5
movzx eax, byte [0x14013e141]
mov edx, 8
call fcn.140006350
test rax, rax
je 0x140081c77
mov rsi, rax
lea rax, [rbp*2]
mov qword [rsp + 0x50], rax
mov r12, rbp
shl r12, 4
mov rcx, rsi
mov r14, qword [rsp + 0x40]
mov rdx, r14
mov r8, r12
call sub.VCRUNTIME140.dll_memcpy
mov r8d, 8
mov rcx, r14
mov rdx, r12
call fcn.140006360
mov rcx, rsi
mov rsi, qword [rsp + 0x28]
mov rax, rbp
shl rax, 4
mov qword [rcx + rax], rbx
mov qword [rcx + rax + 8], rdi
inc rbp
mov rax, rbp
cmp rbp, 2
mov rbx, rcx
mov qword [rsp + 0x40], rcx
jae 0x14008187d
jmp 0x140081555
mov rbp, rbx
mov rdx, rsi
mov rbx, qword [rsp + 0x40]
add rdi, rbx
add r14, rbx
sub r8, rdx
mov rcx, rbp
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x88]
add rax, qword [rsp + 0x58]
mov qword [r14], rax
mov rax, qword [rsp + 0x90]
mov qword [r14 + 8], rax
lea rdx, [rdi + 0x10]
mov rax, qword [rsp + 0x98]
not rax
mov r8, qword [rsp + 0x48]
add r8, rax
shl r8, 4
mov rcx, rdi
call sub.VCRUNTIME140.dll_memmove
mov rax, qword [rsp + 0xa0]
cmp rax, 1
jbe 0x140081550
mov rbp, rax
lea r10, [rax - 1]
mov rcx, r10
shl rcx, 4
mov rax, qword [rbx + rcx]
mov rcx, qword [rbx + rcx + 8]
add rcx, rax
cmp rcx, r13
je 0x1400818f0
mov rdx, rbp
shl rdx, 4
mov r8, qword [rdx + rbx - 0x20]
cmp r8, rax
jbe 0x1400818f0
cmp rbp, 2
je 0x140081b34
lea r11, [rbp - 3]
mov rcx, r11
shl rcx, 4
mov rcx, qword [rbx + rcx]
lea r9, [r8 + rax]
cmp rcx, r9
jbe 0x140081905
cmp rbp, 3
jbe 0x140081b3e
add r8, rcx
cmp qword [rdx + rbx - 0x40], r8
jbe 0x140081905
jmp 0x140081555
cmp rbp, 2
je 0x14008190a
lea r11, [rbp - 3]
mov rcx, r11
shl rcx, 4
mov rcx, qword [rbx + rcx]
cmp rcx, rax
jb 0x14008190e
lea r11, [rbp - 2]
cmp rbp, r11
jbe 0x140081c04
lea r14, [r11 + 1]
cmp rbp, r14
jbe 0x140081b9a
mov r12, r15
mov rdi, r11
shl rdi, 4
mov rcx, qword [rbx + rdi + 8]
shl r14, 4
mov rax, qword [rbx + r14]
mov r15, qword [rbx + r14 + 8]
add r15, rax
mov rsi, r15
sub rsi, rcx
jb 0x140081be3
cmp r15, r13
ja 0x140081bf2
mov qword [rsp + 0x88], rax
mov qword [rsp + 0x98], r11
mov qword [rsp + 0xa0], r10
mov qword [rsp + 0x48], rbp
mov rdx, qword [rbx + rdi]
mov rax, qword [rsp + 0x38]
mov qword [rsp + 0x90], rcx
lea rbp, [rax + rcx*2]
lea rbx, [rdx*2]
add rbx, rbp
mov r13, rsi
sub r13, rdx
cmp r13, rdx
mov qword [rsp + 0x58], rdx
jae 0x140081a60
lea r8, [r13*2]
mov rsi, qword [rsp + 0x28]
mov rcx, rsi
mov rdx, rbx
call sub.VCRUNTIME140.dll_memcpy
lea r8, [rsi + r13*2]
cmp qword [rsp + 0x58], 0
jle 0x140081b10
test r13, r13
jle 0x140081b10
mov rax, qword [rsp + 0x80]
lea rax, [rax + r15*2]
mov r13, qword [rsp + 0x30]
mov r15, r12
jmp 0x140081a36
movzx ecx, byte [r8 - 1]
sete dl
cmp cl, byte [rbx - 1]
setb cl
and cl, dl
movzx ecx, cl
sub rbx, rcx
sub rbx, rcx
lea r8, [r8 + rcx*2]
add r8, 0xfffffffffffffffe
test cl, cl
mov rcx, r8
cmovne rcx, rbx
movzx ecx, word [rcx]
mov word [rax], cx
cmp rbx, rbp
jbe 0x140081810
add rax, 0xfffffffffffffffe
cmp r8, rsi
jbe 0x140081810
movzx ecx, byte [rbx - 2]
cmp byte [r8 - 2], cl
jae 0x1400819f0
add rbx, 0xfffffffffffffffe
mov rcx, rbx
movzx ecx, word [rcx]
mov word [rax], cx
cmp rbx, rbp
ja 0x140081a29
jmp 0x140081810
lea r8, [rdx + rdx]
mov r13, qword [rsp + 0x28]
mov rcx, r13
mov rdx, rbp
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x58]
lea r8, [rax*2]
add r8, r13
test rax, rax
jle 0x140081b1f
cmp rsi, rax
mov r13, qword [rsp + 0x30]
jle 0x140081b15
mov rax, qword [rsp + 0x38]
lea rax, [rax + r15*2]
mov rsi, qword [rsp + 0x28]
mov rdx, rsi
mov r15, r12
nop
movzx r10d, byte [rdx]
mov cl, 1
mov r9, rbx
cmp byte [rbx], r10b
jb 0x140081ad7
movzx ecx, byte [rbx + 1]
sete r10b
cmp cl, byte [rdx + 1]
setb cl
mov r9, rbx
and cl, r10b
jne 0x140081ad7
mov r9, rdx
movzx r9d, word [r9]
mov word [rbp], r9w
add rbp, 2
mov r9d, ecx
xor r9b, 1
movzx r9d, r9b
lea rdx, [rdx + r9*2]
cmp rdx, r8
jae 0x140081816
movzx ecx, cl
lea rbx, [rbx + rcx*2]
cmp rbx, rax
jb 0x140081ab0
jmp 0x140081816
mov rbp, rbx
jmp 0x140081b24
mov rsi, qword [rsp + 0x28]
mov rdx, rsi
jmp 0x140081b2c
mov rsi, qword [rsp + 0x28]
mov rdx, rsi
mov r13, qword [rsp + 0x30]
mov r15, r12
jmp 0x140081816
mov ebp, 2
jmp 0x140081555
mov ebp, 3
jmp 0x140081555
mov rdx, qword [rsp + 0x50]
shl rdx, 4
mov r8d, 8
mov rcx, rbx
call fcn.140006360
mov r8d, 1
mov rcx, rsi
mov rdx, qword [rsp + 0x68]
add rsp, 0xd8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.140006360
nop
add rsp, 0xd8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rax, str.Index_out_of_bounds
mov qword [rsp + 0xa8], rax
mov qword [rsp + 0xb0], 1
lea rax, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
mov qword [rsp + 0xb8], rax
xorps xmm0, xmm0
movups xmmword [rsp + 0xc0], xmm0
lea rdx, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
lea rcx, [rsp + 0xa8]
call fcn.1400b76f0
lea r8, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
mov rdx, r15
call fcn.1400b7bf0
lea r8, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
mov rcx, r15
mov rdx, r13
call fcn.1400b7be0
lea rax, str.Index_out_of_bounds
mov qword [rsp + 0xa8], rax
mov qword [rsp + 0xb0], 1
lea rax, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
mov qword [rsp + 0xb8], rax
xorps xmm0, xmm0
movups xmmword [rsp + 0xc0], xmm0
lea rdx, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
lea rcx, [rsp + 0xa8]
call fcn.1400b76f0
lea rcx, str.assertion_failed:_end___start__end___len
lea r8, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
mov edx, 0x2c
call fcn.1400b77c0
lea r8, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
mov rcx, rdi
mov rdx, rbx
call fcn.1400b7bf0
lea rcx, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
call fcn.1400b76b0
lea r8, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
mov rcx, r12
mov rdx, r13
call fcn.1400b7be0
lea r8, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
mov rcx, rdi
mov rdx, r12
call fcn.1400b7bf0
lea rcx, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
call fcn.1400b76b0
lea rcx, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
call fcn.1400b76b0
int3
push rsi
push rdi
sub rsp, 0x28
lea rax, [r8 - 1]
cmp rax, rdx
jae 0x140082f57
cmp r8, rdx
jae 0x140082f50
lea rax, [rcx + r8*2]
add rax, 0xfffffffffffffffe
jmp 0x140082eca
mov r11, rcx
movzx r9d, r9b
movzx r10d, r10b
shl r10d, 8
movzx r9d, r9w
or r9d, r10d
mov word [r11], r9w
inc r8
add rax, 2
cmp r8, rdx
je 0x140082f50
movzx r9d, byte [rcx + r8*2]
cmp r9b, byte [rcx + r8*2 - 2]
jae 0x140082ee0
movzx r10d, byte [rcx + r8*2 + 1]
jmp 0x140082ef6
jne 0x140082eba
lea r11, [rcx + r8*2]
add r11, 2
movzx r10d, byte [rcx + r8*2 + 1]
cmp r10b, byte [r11 - 3]
jae 0x140082eba
lea r11, [rcx + r8*2]
add r11, 0xfffffffffffffffe
movzx esi, word [r11]
mov word [rcx + r8*2], si
cmp r8, 1
je 0x140082ea3
mov esi, 1
mov r11, rax
jmp 0x140082f39
movzx edi, word [r11 - 2]
mov word [r11], di
add r11, 0xfffffffffffffffe
inc rsi
cmp r8, rsi
je 0x140082ea0
cmp r9b, byte [r11 - 2]
jb 0x140082f20
jne 0x140082ea3
cmp r10b, byte [r11 - 1]
jb 0x140082f20
jmp 0x140082ea3
add rsp, 0x28
pop rdi
pop rsi
ret
lea rcx, str.assertion_failed:_offset___0__offset___len
lea r8, str._rustc_9b00956e56009bab2aa15d7bff10916599e3d6d6librarycore_src_slice_sort.rs
mov edx, 0x2e
call fcn.1400b77c0
int3