Function at 0x180076260
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 r12, r9
mov rdi, r8
mov rbx, rdx
mov r14, rcx
cmp rdx, 0x21
jae 0x1800762e0
cmp rbx, 2
jb 0x180076d24
lea rax, [rbx + 0x10]
cmp rax, r12
ja 0x180076d38
mov rsi, rbx
shr rsi, 1
mov rbp, rsi
shl rbp, 5
lea r12, [r14 + rbp]
lea r15, [rdi + rbp]
cmp rbx, 7
mov qword [rsp + 0x70], r12
jbe 0x180076862
mov rcx, r14
mov rdx, rdi
call fcn.180073f70
mov rcx, r12
mov rdx, r15
call fcn.180073f70
mov eax, 4
jmp 0x18007688b
mov rsi, qword [rsp + 0x160]
mov rax, qword [rsp + 0x158]
mov qword [rsp + 0x70], rax
mov r15d, dword [rsp + 0x150]
lea rax, [rdi - 0x20]
mov qword [rsp + 0x88], rax
mov qword [rsp + 0x78], r12
lea rax, [r14 + 0x20]
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x60], r14
nop word cs:[rax + rax]
sub r15d, 1
jb 0x180076840
mov dword [rsp + 0x50], r15d
mov rcx, r14
mov rdx, qword [rsp + 0x40]
mov r8, rsi
mov rsi, rdx
call fcn.180056430
mov qword [rsp + 0x58], rax
shl rax, 5
lea r15, [r14 + rax]
movups xmm0, xmmword [r14 + rax]
movups xmm1, xmmword [r14 + rax + 0x10]
movaps xmmword [rsp + 0xd0], xmm1
movaps xmmword [rsp + 0xc0], xmm0
cmp qword [rsp + 0x70], 0
je 0x1800763d6
mov rbx, qword [rsp + 0x70]
mov rcx, qword [rbx + 8]
mov rax, qword [rbx + 0x10]
mov rdx, qword [r15 + 8]
mov r8, qword [r15 + 0x10]
mov rsi, rax
sub rsi, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
movzx eax, byte [rbx + 0x18]
sub al, byte [r15 + 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
cmp cl, 1
jne 0x180076620
cmp rsi, r12
ja 0x180076d38
shl rsi, 5
mov qword [rsp + 0x68], rsi
lea rax, [rdi + rsi]
xor ebx, ebx
mov rbp, r14
mov qword [rsp + 0x48], rax
mov r14, rax
mov rsi, qword [rsp + 0x58]
nop
mov r13, rsi
shl r13, 5
add r13, qword [rsp + 0x60]
cmp rbp, r13
jae 0x180076495
nop word cs:[rax + rax]
mov rcx, qword [rbp + 8]
mov rax, qword [rbp + 0x10]
mov rdx, qword [r15 + 8]
mov r8, qword [r15 + 0x10]
mov r12, rax
sub r12, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r12, rax
movzx eax, byte [rbp + 0x18]
sub al, byte [r15 + 0x18]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r12, r12
sets al
cmovne ecx, eax
add r14, 0xffffffffffffffe0
test cl, cl
mov rax, r14
cmovne rax, rdi
mov rdx, rbx
shl rdx, 5
movups xmm0, xmmword [rbp]
movups xmm1, xmmword [rbp + 0x10]
movups xmmword [rax + rdx + 0x10], xmm1
movups xmmword [rax + rdx], xmm0
movzx eax, cl
add rbx, rax
add rbp, 0x20
cmp rbp, r13
jb 0x180076420
mov rax, qword [rsp + 0x40]
cmp rsi, rax
mov rsi, rax
je 0x1800764d0
mov rax, rbx
shl rax, 5
movups xmm0, xmmword [rbp]
movups xmm1, xmmword [rbp + 0x10]
movups xmmword [r14 + rax - 0x10], xmm1
movups xmmword [r14 + rax - 0x20], xmm0
add r14, 0xffffffffffffffe0
add rbp, 0x20
jmp 0x180076400
mov rbp, rbx
shl rbp, 5
mov r14, qword [rsp + 0x60]
mov rcx, r14
mov rdx, rdi
mov r8, rbp
call sub.VCRUNTIME140.dll_memcpy
mov rdx, rsi
sub rdx, rbx
mov r12, qword [rsp + 0x78]
mov r11, qword [rsp + 0x48]
mov r13, qword [rsp + 0x68]
je 0x1800765be
lea rax, [rbx + 1]
cmp rsi, rax
jne 0x180076520
xor eax, eax
jmp 0x180076593
mov rcx, rdx
and rcx, 0xfffffffffffffffe
mov rax, qword [rsp + 0x80]
lea r8, [rax + rbp]
add r13, qword [rsp + 0x88]
xor r9d, r9d
movabs r10, 0x7fffffffffffffe
nop dword [rax + rax]
movups xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 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 r13, 0xffffffffffffffc0
mov r9, rax
cmp rcx, rax
jne 0x180076550
test dl, 1
je 0x1800765be
lea rcx, [r14 + rbp]
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 0x180076620
cmp rsi, rbx
jb 0x180076d3a
add rbp, r14
mov rsi, qword [rsp + 0x160]
mov qword [rsp + 0x30], rsi
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x28], rax
mov r15d, dword [rsp + 0x50]
mov dword [rsp + 0x20], r15d
mov rcx, rbp
mov r8, rdi
mov r9, r12
call fcn.180076260
mov qword [rsp + 0x40], rbx
cmp rbx, 0x21
jae 0x180076330
jmp 0x180076285
cmp rsi, r12
ja 0x180076d38
shl rsi, 5
mov qword [rsp + 0x68], rsi
lea rax, [rdi + rsi]
xor ebp, ebp
mov rbx, r14
mov qword [rsp + 0x48], rax
mov r14, rax
mov rsi, qword [rsp + 0x58]
nop dword [rax + rax]
mov r12, rsi
shl rsi, 5
add rsi, qword [rsp + 0x60]
jmp 0x180076682
mov r8, rbp
shl r8, 5
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movups xmmword [rdx + r8 + 0x10], xmm1
movups xmmword [rdx + r8], xmm0
mov cl, al
add rbp, rcx
add rbx, 0x20
cmp rbx, rsi
jae 0x1800766f0
mov rcx, qword [r15 + 8]
mov rax, qword [r15 + 0x10]
mov rdx, qword [rbx + 8]
mov r8, qword [rbx + 0x10]
mov r13, rax
sub r13, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r13, rax
xor eax, eax
test r13, r13
setne al
mov ecx, 0xff
cmovs eax, ecx
test al, al
jne 0x1800766cd
movzx eax, byte [r15 + 0x18]
sub al, byte [rbx + 0x18]
movzx eax, al
add r14, 0xffffffffffffffe0
xor ecx, ecx
mov rdx, rdi
cmp al, 0xff
setne al
jne 0x180076660
mov rdx, r14
jmp 0x180076660
mov rsi, qword [rsp + 0x40]
cmp r12, rsi
je 0x180076730
add r14, 0xffffffffffffffe0
mov rax, rbp
shl rax, 5
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movups xmmword [rdi + rax + 0x10], xmm1
movups xmmword [rdi + rax], xmm0
inc rbp
add rbx, 0x20
jmp 0x180076650
mov r15, rbp
shl r15, 5
mov r14, qword [rsp + 0x60]
mov rcx, r14
mov rdx, rdi
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
mov rbx, rsi
sub rbx, rbp
movabs r9, 0x7fffffffffffffe
mov r10, qword [rsp + 0x48]
mov r11, qword [rsp + 0x68]
je 0x180076809
lea rax, [rbp + 1]
cmp rsi, rax
jne 0x180076777
xor eax, eax
jmp 0x1800767de
mov rcx, rbx
and rcx, 0xfffffffffffffffe
lea rdx, [r14 + r15]
add rdx, 0x20
add r11, qword [rsp + 0x88]
xor r8d, r8d
nop word cs:[rax + rax]
movups xmm0, xmmword [r11]
movups xmm1, xmmword [r11 + 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 r11, 0xffffffffffffffc0
mov r8, rax
cmp rcx, rax
jne 0x1800767a0
test bl, 1
je 0x180076809
lea rcx, [r14 + r15]
mov rdx, rax
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 rsi, rbp
jb 0x180076d80
add r14, r15
mov eax, 0
mov qword [rsp + 0x70], rax
cmp rbx, 0x21
mov r12, qword [rsp + 0x78]
mov rsi, qword [rsp + 0x160]
mov r15d, dword [rsp + 0x50]
jae 0x18007630e
jmp 0x180076285
mov qword [rsp + 0x28], rsi
mov byte [rsp + 0x20], 1
mov rcx, r14
mov rdx, qword [rsp + 0x40]
mov r8, rdi
mov r9, r12
call fcn.180074f80
jmp 0x180076d24
movups xmm0, xmmword [r14]
movups xmm1, xmmword [r14 + 0x10]
movups xmmword [rdi + 0x10], xmm1
movups xmmword [rdi], xmm0
movups xmm0, xmmword [r12]
movups xmm1, xmmword [r12 + 0x10]
movups xmmword [r15 + 0x10], xmm1
movups xmmword [r15], xmm0
mov eax, 1
mov qword [rsp + 0x80], r15
mov rcx, rbx
sub rcx, rsi
mov qword [rsp + 0x68], rcx
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x58], rax
cmp rax, rsi
mov qword [rsp + 0x60], r14
jae 0x180076a2d
mov rax, qword [rsp + 0x58]
mov ecx, eax
shl ecx, 5
mov qword [rsp + 0x48], rcx
mov r13, rax
jmp 0x180076920
mov rax, rdi
mov rcx, qword [rsp + 0x78]
mov qword [rax], rcx
mov qword [rdi + r13 - 0x18], r12
mov qword [rdi + r13 - 0x10], r15
mov byte [rdi + r13 - 8], sil
mov eax, dword [rsp + 0x90]
mov ecx, dword [rsp + 0x93]
mov dword [rdi + r13 - 7], eax
mov dword [rdi + r13 - 4], ecx
mov r13, qword [rsp + 0x50]
inc r13
add qword [rsp + 0x48], 0x20
cmp r13, qword [rsp + 0x40]
mov r14, qword [rsp + 0x60]
je 0x180076a2d
mov qword [rsp + 0x50], r13
shl r13, 5
movups xmm0, xmmword [r14 + r13]
movups xmm1, xmmword [r14 + r13 + 0x10]
movups xmmword [rdi + r13], xmm0
movups xmmword [rdi + r13 + 0x10], xmm1
mov r12, qword [rdi + r13 + 8]
mov r15, qword [rdi + r13 + 0x10]
mov rdx, qword [rdi + r13 - 0x18]
mov r8, qword [rdi + r13 - 0x10]
mov r14, r15
sub r14, r8
cmovb r8, r15
mov rcx, r12
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r14, rax
movzx esi, byte [rdi + r13 + 0x18]
mov eax, esi
sub al, byte [rdi + r13 - 8]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r14, r14
sets al
cmovne ecx, eax
cmp cl, 1
jne 0x180076902
add r13, rdi
mov rax, qword [r13]
mov qword [rsp + 0x78], rax
mov eax, dword [r13 + 0x1c]
mov dword [rsp + 0x93], eax
mov eax, dword [r13 + 0x19]
mov dword [rsp + 0x90], eax
mov rax, qword [rsp + 0x48]
nop dword [rax]
mov r13, rax
movups xmm0, xmmword [rdi + rax - 0x20]
movups xmm1, xmmword [rdi + rax - 0x10]
movups xmmword [rdi + rax + 0x10], xmm1
movups xmmword [rdi + rax], xmm0
cmp rax, 0x20
je 0x1800768d0
mov rdx, qword [rdi + r13 - 0x38]
mov r8, qword [rdi + r13 - 0x30]
mov r14, r15
sub r14, r8
cmovb r8, r15
mov rcx, r12
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r14, rax
mov eax, esi
sub al, byte [rdi + r13 - 0x28]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r14, r14
sets al
cmovne ecx, eax
lea rax, [r13 - 0x20]
test cl, cl
jne 0x1800769c0
add rax, rdi
jmp 0x1800768d3
mov r15, qword [rsp + 0x58]
cmp r15, qword [rsp + 0x68]
jae 0x180076bae
add rbp, rdi
mov eax, r15d
shl eax, 5
mov qword [rsp + 0x50], rax
jmp 0x180076a9b
mov rax, rbp
mov rcx, qword [rsp + 0x48]
mov qword [rax], rcx
mov qword [rbp + r15 - 0x18], r12
mov qword [rbp + r15 - 0x10], r13
mov byte [rbp + r15 - 8], sil
mov eax, dword [rsp + 0x90]
mov ecx, dword [rsp + 0x93]
mov dword [rbp + r15 - 7], eax
mov dword [rbp + r15 - 4], ecx
mov r15, qword [rsp + 0x58]
inc r15
add qword [rsp + 0x50], 0x20
cmp r15, qword [rsp + 0x68]
je 0x180076bae
mov qword [rsp + 0x58], r15
shl r15, 5
mov rax, qword [rsp + 0x70]
movups xmm0, xmmword [rax + r15]
movups xmm1, xmmword [rax + r15 + 0x10]
movups xmmword [rbp + r15], xmm0
movups xmmword [rbp + r15 + 0x10], xmm1
mov r12, qword [rbp + r15 + 8]
mov r13, qword [rbp + r15 + 0x10]
mov rdx, qword [rbp + r15 - 0x18]
mov r8, qword [rbp + r15 - 0x10]
mov r14, r13
sub r14, r8
cmovb r8, r13
mov rcx, r12
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r14, rax
movzx esi, byte [rbp + r15 + 0x18]
mov eax, esi
sub al, byte [rbp + r15 - 8]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r14, r14
sets al
cmovne ecx, eax
cmp cl, 1
jne 0x180076a82
add r15, rbp
mov rax, qword [r15]
mov qword [rsp + 0x48], rax
mov eax, dword [r15 + 0x1c]
mov dword [rsp + 0x93], eax
mov eax, dword [r15 + 0x19]
mov dword [rsp + 0x90], eax
mov rax, qword [rsp + 0x50]
nop dword [rax]
mov r15, rax
movups xmm0, xmmword [rbp + rax - 0x20]
movups xmm1, xmmword [rbp + rax - 0x10]
movups xmmword [rbp + rax + 0x10], xmm1
movups xmmword [rbp + rax], xmm0
cmp rax, 0x20
je 0x180076a50
mov rdx, qword [rbp + r15 - 0x38]
mov r8, qword [rbp + r15 - 0x30]
mov r14, r13
sub r14, r8
cmovb r8, r13
mov rcx, r12
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r14, rax
mov eax, esi
sub al, byte [rbp + r15 - 0x28]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r14, r14
sets al
cmovne ecx, eax
lea rax, [r15 - 0x20]
test cl, cl
jne 0x180076b40
add rax, rbp
jmp 0x180076a53
mov r13, qword [rsp + 0x80]
lea r12, [r13 - 0x20]
mov rax, rbx
shl rax, 5
lea r15, [rdi + rax]
add r15, 0xffffffffffffffe0
mov r14, qword [rsp + 0x60]
lea rbp, [r14 + rax]
add rbp, 0xffffffffffffffe0
mov rax, qword [rsp + 0x40]
nop dword [rax + rax]
mov qword [rsp + 0x40], rax
mov rsi, rdi
mov rcx, qword [r13 + 8]
mov rax, qword [r13 + 0x10]
mov rdx, qword [rdi + 8]
mov r8, qword [rdi + 0x10]
mov rdi, rax
sub rdi, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rdi, rax
movzx eax, byte [r13 + 0x18]
sub al, byte [rsi + 0x18]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rdi, rdi
sets al
cmovne ecx, eax
test cl, cl
mov rax, rsi
cmovne rax, r13
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [r14 + 0x10], xmm1
movups xmmword [r14], xmm0
movzx eax, cl
xor cl, 1
shl eax, 5
add rax, r13
mov r13, rax
movzx edi, cl
shl edi, 5
add rdi, rsi
add r14, 0x20
mov rcx, qword [r15 + 8]
mov rax, qword [r15 + 0x10]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
mov rsi, rax
sub rsi, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
movzx eax, byte [r15 + 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
test cl, cl
mov rax, r15
cmovne rax, r12
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x10], xmm1
movups xmmword [rbp], xmm0
movzx eax, cl
shl eax, 5
add r15, rax
add r15, 0xffffffffffffffe0
sub r12, rax
mov rax, qword [rsp + 0x40]
add rbp, 0xffffffffffffffe0
dec rax
jne 0x180076be0
add r12, 0x20
test bl, 1
je 0x180076d16
xor eax, eax
xor ecx, ecx
cmp rdi, r12
setae al
setb cl
mov rdx, r13
cmovb rdx, rdi
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
movups xmmword [r14 + 0x10], xmm1
movups xmmword [r14], xmm0
shl ecx, 5
add rdi, rcx
shl eax, 5
add r13, rax
cmp rdi, r12
jne 0x180076d92
add r15, 0x20
cmp r13, r15
jne 0x180076d92
add rsp, 0xe8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2
lea rax, [0x180139020]
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x98], 1
mov qword [rsp + 0xa0], 8
xorps xmm0, xmm0
movups xmmword [rsp + 0xa8], xmm0
lea rdx, str._rustc_eff09483c67e6fc96c8098ba46dce476162754c5librarycore_src_slice_sort_stablequicksort.rsmid___len
lea rcx, [rsp + 0x90]
call fcn.180112410
lea r8, str._rustc_eff09483c67e6fc96c8098ba46dce476162754c5librarycore_src_slice_sort_stablequicksort.rsmid___len
mov rcx, rbp
mov rdx, rsi
call fcn.180112830
call fcn.180109bd0
int3