Function at 0x1400e2770
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 qword [rsp + 0x58], r9
mov rdi, r8
mov rbx, rdx
mov r14, rcx
cmp rdx, 0x21
jae 0x1400e27e9
cmp rbx, 2
jb 0x1400e3300
mov rsi, rbx
shr rsi, 1
mov rcx, r14
mov r14, rsi
shl r14, 5
lea r15, [rcx + r14]
add r14, rdi
cmp rbx, 8
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x70], r15
jb 0x1400e2e51
mov rdx, rdi
call fcn.1400e3380
mov rcx, r15
mov rdx, r14
call fcn.1400e3380
mov eax, 4
jmp 0x1400e2e76
mov rax, qword [rsp + 0x158]
mov qword [rsp + 0x60], rax
mov esi, dword [rsp + 0x150]
lea rax, [rdi - 0x20]
mov qword [rsp + 0x80], rax
lea rax, [r14 + 0x20]
mov qword [rsp + 0x88], rax
mov qword [rsp + 0x38], rbx
mov qword [rsp + 0x48], r14
nop
sub esi, 1
jb 0x1400e2e32
mov dword [rsp + 0x70], esi
mov rsi, qword [rsp + 0x38]
mov r9, rsi
shr r9, 3
mov rbx, r9
shl rbx, 7
add rbx, r14
imul r13, r9, 0xe0
add r13, r14
cmp rsi, 0x40
jae 0x1400e2970
mov rcx, qword [r14 + 8]
mov qword [rsp + 0x40], rcx
mov r15, qword [r14 + 0x10]
mov rdx, qword [rbx + 8]
mov r8, qword [rbx + 0x10]
mov rbp, r15
sub rbp, r8
mov qword [rsp + 0x68], r8
cmovb r8, r15
mov qword [rsp + 0x50], rdx
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rbp, rax
movzx esi, byte [r14 + 0x18]
movzx ecx, byte [rbx + 0x18]
mov eax, esi
mov byte [rsp + 0x78], cl
sub al, cl
xor r14d, r14d
cmp al, 0xff
sete r14b
xor eax, eax
test rbp, rbp
sets al
cmovne r14d, eax
mov rdx, qword [r13 + 8]
mov rbp, qword [r13 + 0x10]
mov r12, r15
sub r12, rbp
cmovae r15, rbp
mov rcx, qword [rsp + 0x40]
mov qword [rsp + 0x40], rdx
mov r8, r15
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r12, rax
movzx r15d, byte [r13 + 0x18]
sub sil, r15b
xor eax, eax
cmp sil, 0xff
mov rsi, qword [rsp + 0x38]
sete al
xor ecx, ecx
test r12, r12
sets cl
cmovne eax, ecx
mov rcx, qword [rsp + 0x48]
mov r12, rcx
cmp r14b, al
jne 0x1400e2984
mov rax, qword [rsp + 0x68]
mov rsi, rax
sub rsi, rbp
cmovb rbp, rax
mov r12, rcx
mov rcx, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x40]
mov r8, rbp
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rsi, rax
movzx ecx, byte [rsp + 0x78]
sub cl, r15b
xor eax, eax
cmp cl, 0xff
sete al
xor ecx, ecx
test rsi, rsi
mov rsi, qword [rsp + 0x38]
sets cl
cmovne eax, ecx
mov rcx, r12
xor r14b, al
cmovne rbx, r13
mov r12, rbx
jmp 0x1400e2984
mov rcx, r14
mov rdx, rbx
mov r8, r13
call fcn.1400e35c0
mov r12, rax
mov rcx, r14
mov rax, r12
sub rax, rcx
shr rax, 5
mov qword [rsp + 0x40], rax
movups xmm0, xmmword [r12]
movups xmm1, xmmword [r12 + 0x10]
movaps xmmword [rsp + 0xd0], xmm1
movaps xmmword [rsp + 0xc0], xmm0
cmp qword [rsp + 0x60], 0
mov r14, rcx
je 0x1400e2a0f
mov rbx, qword [rsp + 0x60]
mov rcx, qword [rbx + 8]
mov rax, qword [rbx + 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 [rbx + 0x18]
sub al, byte [r12 + 0x18]
xor ecx, ecx
cmp al, 0xff
setne cl
xor eax, eax
test rsi, rsi
mov rsi, qword [rsp + 0x38]
setns al
cmovne ecx, eax
test cl, cl
jne 0x1400e2c40
cmp rsi, qword [rsp + 0x58]
ja 0x1400e3314
shl rsi, 5
mov qword [rsp + 0x68], rsi
lea rbp, [rdi + rsi]
xor ebx, ebx
mov r13, r14
mov qword [rsp + 0x50], rbp
mov rsi, qword [rsp + 0x40]
nop word cs:[rax + rax]
mov r14, rsi
shl r14, 5
add r14, qword [rsp + 0x48]
cmp r13, r14
jae 0x1400e2adb
nop word cs:[rax + rax]
mov rcx, qword [r13 + 8]
mov rax, qword [r13 + 0x10]
mov rdx, qword [r12 + 8]
mov r8, qword [r12 + 0x10]
mov r15, rax
sub r15, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r15, rax
movzx eax, byte [r13 + 0x18]
sub al, byte [r12 + 0x18]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r15, r15
sets al
cmovne ecx, eax
add rbp, 0xffffffffffffffe0
test cl, cl
mov rax, rbp
cmovne rax, rdi
mov rdx, rbx
shl rdx, 5
movups xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 0x10]
movups xmmword [rax + rdx + 0x10], xmm1
movups xmmword [rax + rdx], xmm0
movzx eax, cl
add rbx, rax
add r13, 0x20
cmp r13, r14
jb 0x1400e2a60
mov rax, qword [rsp + 0x38]
cmp rsi, rax
mov rsi, rax
je 0x1400e2b10
mov rax, rbx
shl rax, 5
movups xmm0, xmmword [r13]
movups xmm1, xmmword [r13 + 0x10]
movups xmmword [rbp + rax - 0x10], xmm1
movups xmmword [rbp + rax - 0x20], xmm0
add rbp, 0xffffffffffffffe0
add r13, 0x20
jmp 0x1400e2a40
mov r13, rbx
shl r13, 5
mov r14, qword [rsp + 0x48]
mov rcx, r14
mov rdx, rdi
mov r8, r13
call sub.VCRUNTIME140.dll_memcpy
mov rdx, rsi
sub rdx, rbx
mov r11, qword [rsp + 0x50]
je 0x1400e2bed
lea rax, [rbx + 1]
cmp rsi, rax
jne 0x1400e2b50
xor eax, eax
jmp 0x1400e2bc2
mov rcx, rdx
and rcx, 0xfffffffffffffffe
mov rax, qword [rsp + 0x88]
lea r8, [rax + r13]
mov r15, qword [rsp + 0x68]
add r15, qword [rsp + 0x80]
xor r9d, r9d
movabs r10, 0x7fffffffffffffe
nop dword [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 [r11 + r9]
movups xmm1, xmmword [r11 + r9 + 0x10]
movups xmmword [r8], xmm0
movups xmmword [r8 + 0x10], xmm1
add r8, 0x40
add r15, 0xffffffffffffffc0
mov r9, rax
cmp rcx, rax
jne 0x1400e2b80
test dl, 1
je 0x1400e2bed
lea rcx, [r14 + r13]
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 0x1400e2c40
cmp rsi, rbx
jb 0x1400e3316
add r13, r14
lea rax, [rsp + 0xc0]
mov qword [rsp + 0x28], rax
mov esi, dword [rsp + 0x70]
mov dword [rsp + 0x20], esi
mov rcx, r13
mov r8, rdi
mov r9, qword [rsp + 0x58]
call fcn.1400e2770
mov qword [rsp + 0x38], rbx
cmp rbx, 0x21
jae 0x1400e2820
jmp 0x1400e2797
cmp rsi, qword [rsp + 0x58]
ja 0x1400e3314
shl rsi, 5
mov qword [rsp + 0x60], rsi
lea r15, [rdi + rsi]
xor r13d, r13d
mov rbx, r14
mov qword [rsp + 0x50], r15
mov rsi, qword [rsp + 0x40]
nop dword [rax + rax]
mov rbp, rsi
shl rsi, 5
add rsi, r14
cmp rbx, rsi
jae 0x1400e2cf7
nop
mov rcx, qword [r12 + 8]
mov rax, qword [r12 + 0x10]
mov rdx, qword [rbx + 8]
mov r8, qword [rbx + 0x10]
mov r14, rax
sub r14, r8
cmovb r8, rax
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r14, rax
movzx eax, byte [r12 + 0x18]
sub al, byte [rbx + 0x18]
xor ecx, ecx
cmp al, 0xff
setne cl
xor eax, eax
test r14, r14
setns al
cmovne ecx, eax
add r15, 0xffffffffffffffe0
test cl, cl
mov rax, r15
cmovne rax, rdi
mov rdx, r13
shl rdx, 5
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movups xmmword [rax + rdx + 0x10], xmm1
movups xmmword [rax + rdx], xmm0
movzx eax, cl
add r13, rax
add rbx, 0x20
cmp rbx, rsi
jb 0x1400e2c80
mov rsi, qword [rsp + 0x38]
cmp rbp, rsi
je 0x1400e2d30
add r15, 0xffffffffffffffe0
mov rax, r13
shl rax, 5
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movups xmmword [rdi + rax + 0x10], xmm1
movups xmmword [rdi + rax], xmm0
inc r13
add rbx, 0x20
mov r14, qword [rsp + 0x48]
jmp 0x1400e2c70
mov r12, r13
shl r12, 5
mov r14, qword [rsp + 0x48]
mov rcx, r14
mov rdx, rdi
mov r8, r12
call sub.VCRUNTIME140.dll_memcpy
mov rbx, rsi
sub rbx, r13
movabs r9, 0x7fffffffffffffe
mov r10, qword [rsp + 0x50]
je 0x1400e2e09
lea rax, [r13 + 1]
cmp rsi, rax
jne 0x1400e2d72
xor eax, eax
jmp 0x1400e2dde
mov rcx, rbx
and rcx, 0xfffffffffffffffe
lea rdx, [r14 + r12]
add rdx, 0x20
mov r11, qword [rsp + 0x60]
add r11, qword [rsp + 0x80]
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 0x1400e2da0
test bl, 1
je 0x1400e2e09
lea rcx, [r14 + r12]
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, r13
jb 0x1400e335c
add r14, r12
mov eax, 0
mov qword [rsp + 0x60], rax
cmp rbx, 0x21
mov esi, dword [rsp + 0x70]
jae 0x1400e2809
jmp 0x1400e2797
mov byte [rsp + 0x20], 1
mov rcx, r14
mov rdx, qword [rsp + 0x38]
mov r8, rdi
mov r9, qword [rsp + 0x58]
call fcn.1400e1f30
jmp 0x1400e3300
movups xmm0, xmmword [rcx]
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rdi + 0x10], xmm1
movups xmmword [rdi], xmm0
movups xmm0, xmmword [r15]
movups xmm1, xmmword [r15 + 0x10]
movups xmmword [r14 + 0x10], xmm1
movups xmmword [r14], xmm0
mov eax, 1
mov rcx, rbx
sub rcx, rsi
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x58], rax
cmp rax, rsi
jae 0x1400e2fff
mov rax, qword [rsp + 0x58]
mov ecx, eax
shl ecx, 5
mov qword [rsp + 0x50], rcx
mov rbp, rax
jmp 0x1400e2ef3
add rbp, rdi
mov rax, rdi
mov rcx, qword [rsp + 0x78]
mov qword [rax], rcx
mov qword [rbp - 0x18], r12
mov qword [rbp - 0x10], r13
mov byte [rbp - 8], sil
mov rcx, qword [rsp + 0x68]
mov eax, dword [rcx]
mov ecx, dword [rcx + 3]
mov dword [rbp - 7], eax
mov dword [rbp - 4], ecx
mov rbp, qword [rsp + 0x40]
inc rbp
add qword [rsp + 0x50], 0x20
cmp rbp, qword [rsp + 0x38]
je 0x1400e2fff
mov qword [rsp + 0x40], rbp
shl rbp, 5
mov rax, qword [rsp + 0x48]
movups xmm0, xmmword [rax + rbp]
movups xmm1, xmmword [rax + rbp + 0x10]
movups xmmword [rdi + rbp], xmm0
movups xmmword [rdi + rbp + 0x10], xmm1
mov r12, qword [rdi + rbp + 8]
mov r13, qword [rdi + rbp + 0x10]
mov rdx, qword [rdi + rbp - 0x18]
mov r8, qword [rdi + rbp - 0x10]
mov r15, r13
sub r15, r8
cmovb r8, r13
mov rcx, r12
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r15, rax
movzx esi, byte [rdi + rbp + 0x18]
mov eax, esi
sub al, byte [rdi + rbp - 8]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r15, r15
sets al
cmovne ecx, eax
cmp cl, 1
jne 0x1400e2eda
mov rax, qword [rsp + 0x48]
add rax, rbp
add rbp, rdi
mov rcx, qword [rbp]
mov qword [rsp + 0x78], rcx
add rax, 0x19
mov qword [rsp + 0x68], rax
mov rax, qword [rsp + 0x50]
nop dword [rax]
mov rbp, 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 0x1400e2eb0
mov rdx, qword [rdi + rbp - 0x38]
mov r8, qword [rdi + rbp - 0x30]
mov r15, r13
sub r15, r8
cmovb r8, r13
mov rcx, r12
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne r15, rax
mov eax, esi
sub al, byte [rdi + rbp - 0x28]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test r15, r15
sets al
cmovne ecx, eax
lea rax, [rbp - 0x20]
test cl, cl
jne 0x1400e2f90
add rbp, rdi
add rax, rdi
jmp 0x1400e2eb6
mov r13, qword [rsp + 0x58]
cmp r13, qword [rsp + 0x60]
jae 0x1400e3184
mov eax, r13d
shl eax, 5
mov qword [rsp + 0x40], rax
jmp 0x1400e3065
add r13, r14
mov rax, r14
mov rcx, qword [rsp + 0x68]
mov qword [rax], rcx
mov qword [r13 - 0x18], r12
mov qword [r13 - 0x10], r15
mov byte [r13 - 8], sil
mov rcx, qword [rsp + 0x50]
mov eax, dword [rcx]
mov ecx, dword [rcx + 3]
mov dword [r13 - 7], eax
mov dword [r13 - 4], ecx
mov r13, qword [rsp + 0x58]
inc r13
add qword [rsp + 0x40], 0x20
cmp r13, qword [rsp + 0x60]
je 0x1400e3184
mov qword [rsp + 0x58], r13
shl r13, 5
mov rax, qword [rsp + 0x70]
movups xmm0, xmmword [rax + r13]
movups xmm1, xmmword [rax + r13 + 0x10]
movups xmmword [r14 + r13], xmm0
movups xmmword [r14 + r13 + 0x10], xmm1
mov r12, qword [r14 + r13 + 8]
mov r15, qword [r14 + r13 + 0x10]
mov rdx, qword [r14 + r13 - 0x18]
mov r8, qword [r14 + r13 - 0x10]
mov rbp, r15
sub rbp, r8
cmovb r8, r15
mov rcx, r12
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rbp, rax
movzx esi, byte [r14 + r13 + 0x18]
mov eax, esi
sub al, byte [r14 + r13 - 8]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rbp, rbp
sets al
cmovne ecx, eax
cmp cl, 1
jne 0x1400e304c
mov rax, qword [rsp + 0x70]
add rax, r13
add r13, r14
mov rcx, qword [r13]
mov qword [rsp + 0x68], rcx
add rax, 0x19
mov qword [rsp + 0x50], rax
mov rax, qword [rsp + 0x40]
nop word cs:[rax + rax]
mov r13, rax
movups xmm0, xmmword [r14 + rax - 0x20]
movups xmm1, xmmword [r14 + rax - 0x10]
movups xmmword [r14 + rax + 0x10], xmm1
movups xmmword [r14 + rax], xmm0
cmp rax, 0x20
je 0x1400e3020
mov rdx, qword [r14 + r13 - 0x38]
mov r8, qword [r14 + r13 - 0x30]
mov rbp, r15
sub rbp, r8
cmovb r8, r15
mov rcx, r12
call sub.VCRUNTIME140.dll_memcmp
cdqe
test eax, eax
cmovne rbp, rax
mov eax, esi
sub al, byte [r14 + r13 - 0x28]
xor ecx, ecx
cmp al, 0xff
sete cl
xor eax, eax
test rbp, rbp
sets al
cmovne ecx, eax
lea rax, [r13 - 0x20]
test cl, cl
jne 0x1400e3110
add r13, r14
add rax, r14
jmp 0x1400e3026
lea r12, [r14 - 0x20]
mov rax, rbx
shl rax, 5
lea r13, [rdi + rax]
add r13, 0xffffffffffffffe0
mov r15, qword [rsp + 0x48]
lea rbp, [r15 + rax]
add rbp, 0xffffffffffffffe0
mov rax, qword [rsp + 0x38]
nop dword [rax]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x48], r13
mov r13, r14
mov rsi, rdi
mov rcx, qword [r14 + 8]
mov rax, qword [r14 + 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 [r14 + 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, r14
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [r15 + 0x10], xmm1
movups xmmword [r15], xmm0
movzx r14d, cl
xor cl, 1
shl r14d, 5
add r14, r13
mov r13, qword [rsp + 0x48]
movzx edi, cl
shl edi, 5
add rdi, rsi
add r15, 0x20
mov rcx, qword [r13 + 8]
mov rax, qword [r13 + 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 [r13 + 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, r13
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 r13, rax
add r13, 0xffffffffffffffe0
sub r12, rax
mov rax, qword [rsp + 0x38]
add rbp, 0xffffffffffffffe0
dec rax
jne 0x1400e31b0
add r12, 0x20
test bl, 1
je 0x1400e32f2
xor eax, eax
xor ecx, ecx
cmp rdi, r12
setae al
setb cl
mov rdx, r14
cmovb rdx, rdi
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
movups xmmword [r15 + 0x10], xmm1
movups xmmword [r15], xmm0
shl ecx, 5
add rdi, rcx
shl eax, 5
add r14, rax
cmp rdi, r12
jne 0x1400e336e
add r13, 0x20
cmp r14, r13
jne 0x1400e336e
add rsp, 0xe8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2
lea rax, [0x140292510]
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.C:UsersUser.rustup_toolchains_stable_x86_64_pc_windows_msvclib_rustlib_src_rustlibrarycore_src_slice_sort_stablequicksort.rsmid___len
lea rcx, [rsp + 0x90]
call fcn.1401d16a0
lea r8, str.C:UsersUser.rustup_toolchains_stable_x86_64_pc_windows_msvclib_rustlib_src_rustlibrarycore_src_slice_sort_stablequicksort.rsmid___len
mov rcx, r13
mov rdx, rsi
call fcn.1401d15c0
call fcn.1401d1c30
int3