You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ze...@apache.org on 2026/07/18 16:39:20 UTC

(arrow-go) branch main updated: fix(compute): handle comparison output offsets (#956)

This is an automated email from the ASF dual-hosted git repository.

zeroshade pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-go.git


The following commit(s) were added to refs/heads/main by this push:
     new 76109bec fix(compute): handle comparison output offsets (#956)
76109bec is described below

commit 76109bec77e36523479c283c44f06e3abf5d77b6
Author: Minh Vu <vu...@gmail.com>
AuthorDate: Sat Jul 18 18:39:14 2026 +0200

    fix(compute): handle comparison output offsets (#956)
    
    Primitive comparison kernels mishandled a non-byte-aligned output offset: batch counts were derived from the original length and the leading partial byte was not clamped to the available values, so short inputs could over-read the input or corrupt bits outside the output span. This affected both the pure-Go path and the generated amd64 SIMD kernels.
    
    Clamp the prefix to the available value count, recompute batches/tail after consuming the prefix, apply the same fix to _lib/scalar_comparison.cc, and regenerate the AVX2/SSE4 assembly. Adds a kernel-level regression covering offsets 0-7 and lengths through 65 across all operations and operand shapes, exercising both the pure-Go implementation and the runtime SIMD dispatcher.
---
 .../internal/kernels/_lib/scalar_comparison.cc     |    33 +-
 .../kernels/_lib/scalar_comparison_avx2_amd64.s    | 96529 +++++++++---------
 .../kernels/_lib/scalar_comparison_sse4_amd64.s    | 93385 +++++++++---------
 .../kernels/scalar_comparison_avx2_amd64.s         | 98603 ++++++++++---------
 .../kernels/scalar_comparison_sse4_amd64.s         | 85191 ++++++++--------
 .../compute/internal/kernels/scalar_comparisons.go |    26 +-
 .../internal/kernels/scalar_comparisons_test.go    |   119 +
 7 files changed, 190517 insertions(+), 183369 deletions(-)

diff --git a/arrow/compute/internal/kernels/_lib/scalar_comparison.cc b/arrow/compute/internal/kernels/_lib/scalar_comparison.cc
index 09540f36..794970a5 100644
--- a/arrow/compute/internal/kernels/_lib/scalar_comparison.cc
+++ b/arrow/compute/internal/kernels/_lib/scalar_comparison.cc
@@ -67,16 +67,21 @@ struct compare_primitive_arr_arr {
         const T* right = reinterpret_cast<const T*>(right_void);
         uint8_t* out_bitmap = reinterpret_cast<uint8_t*>(out_void);
         static constexpr int kBatchSize = 32;
-        int64_t num_batches = length / kBatchSize;
         uint32_t temp_output[kBatchSize];
 
         if (int prefix = offset % 8) {
-            for (int i = prefix; i < 8; ++i) {
-                set_bit_to(out_bitmap, i, Op::template Call<T>(*left++, *right++));
+            const int64_t prefix_length = length < 8 - prefix ? length : 8 - prefix;
+            for (int64_t i = 0; i < prefix_length; ++i) {
+                set_bit_to(out_bitmap, prefix + i, Op::template Call<T>(*left++, *right++));
+            }
+            length -= prefix_length;
+            if (length == 0) {
+                return;
             }
             out_bitmap++;
         }
 
+        int64_t num_batches = length / kBatchSize;
         for (int64_t j = 0; j < num_batches; ++j) {
             for (int i = 0; i < kBatchSize; ++i) {
                 temp_output[i] = Op::template Call<T>(*left++, *right++);
@@ -98,16 +103,21 @@ struct compare_primitive_arr_scalar {
         const T right = *reinterpret_cast<const T*>(right_void);
         uint8_t* out_bitmap = reinterpret_cast<uint8_t*>(out_void);
         static constexpr int kBatchSize = 32;
-        int64_t num_batches = length / kBatchSize;
         uint32_t temp_output[kBatchSize];
 
         if (int prefix = offset % 8) {
-            for (int i = prefix; i < 8; ++i) {
-                set_bit_to(out_bitmap, i, Op::template Call<T>(*left++, right));
+            const int64_t prefix_length = length < 8 - prefix ? length : 8 - prefix;
+            for (int64_t i = 0; i < prefix_length; ++i) {
+                set_bit_to(out_bitmap, prefix + i, Op::template Call<T>(*left++, right));
+            }
+            length -= prefix_length;
+            if (length == 0) {
+                return;
             }
             out_bitmap++;
         }
 
+        int64_t num_batches = length / kBatchSize;
         for (int64_t j = 0; j < num_batches; ++j) {
             for (int i = 0; i < kBatchSize; ++i) {
                 temp_output[i] = Op::template Call<T>(*left++, right);
@@ -129,16 +139,21 @@ struct compare_primitive_scalar_arr {
         const T* right = reinterpret_cast<const T*>(right_void);
         uint8_t* out_bitmap = reinterpret_cast<uint8_t*>(out_void);
         static constexpr int kBatchSize = 32;
-        int64_t num_batches = length / kBatchSize;
         uint32_t temp_output[kBatchSize];
 
         if (int prefix = offset % 8) {
-            for (int i = prefix; i < 8; ++i) {
-                set_bit_to(out_bitmap, i, Op::template Call<T>(left, *right++));
+            const int64_t prefix_length = length < 8 - prefix ? length : 8 - prefix;
+            for (int64_t i = 0; i < prefix_length; ++i) {
+                set_bit_to(out_bitmap, prefix + i, Op::template Call<T>(left, *right++));
+            }
+            length -= prefix_length;
+            if (length == 0) {
+                return;
             }
             out_bitmap++;
         }
 
+        int64_t num_batches = length / kBatchSize;
         for (int64_t j = 0; j < num_batches; ++j) {
             for (int i = 0; i < kBatchSize; ++i) {
                 temp_output[i] = Op::template Call<T>(left, *right++);
diff --git a/arrow/compute/internal/kernels/_lib/scalar_comparison_avx2_amd64.s b/arrow/compute/internal/kernels/_lib/scalar_comparison_avx2_amd64.s
index 593d4c45..1c28cad7 100644
--- a/arrow/compute/internal/kernels/_lib/scalar_comparison_avx2_amd64.s
+++ b/arrow/compute/internal/kernels/_lib/scalar_comparison_avx2_amd64.s
@@ -15,104 +15,120 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	push	rbx
 	and	rsp, -8
 	sub	rsp, 72
-	mov	eax, r9d
-	mov	r14, r8
-	mov	r12, rcx
+                                        # kill: def $r9d killed $r9d def $r9
+	mov	r12, r8
+	mov	r15, rcx
 	cmp	edi, 6
-	jg	.LBB0_29
+	jg	.LBB0_35
 # %bb.1:
 	cmp	edi, 3
 	jle	.LBB0_2
-# %bb.15:
+# %bb.18:
 	cmp	edi, 4
-	je	.LBB0_68
-# %bb.16:
+	je	.LBB0_83
+# %bb.19:
 	cmp	edi, 5
-	je	.LBB0_79
-# %bb.17:
+	je	.LBB0_97
+# %bb.20:
 	cmp	edi, 6
-	jne	.LBB0_123
-# %bb.18:
-	lea	r15, [r14 + 31]
-	test	r14, r14
-	cmovns	r15, r14
-	lea	ecx, [rax + 7]
-	test	eax, eax
-	cmovns	ecx, eax
-	and	ecx, -8
-	sub	eax, ecx
-	je	.LBB0_22
-# %bb.19:
-	cdqe
+	jne	.LBB0_153
+# %bb.21:
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB0_28
+# %bb.22:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r12
+	cmovg	r8, r12
+	test	r8, r8
+	jle	.LBB0_26
+# %bb.23:
+	movsxd	r9, r9d
+	xor	r10d, r10d
+	xor	eax, eax
 	.p2align	4, 0x90
-.LBB0_20:                               # =>This Inner Loop Header: Depth=1
-	mov	ecx, dword ptr [rsi]
-	add	rsi, 4
-	cmp	ecx, dword ptr [rdx]
-	lea	rdx, [rdx + 4]
-	sete	r10b
-	neg	r10b
-	lea	rdi, [rax + 7]
-	test	rax, rax
-	cmovns	rdi, rax
+.LBB0_24:                               # =>This Inner Loop Header: Depth=1
+	lea	rcx, [r9 + rax]
+	mov	ebx, dword ptr [rsi + 4*rax]
+	cmp	ebx, dword ptr [rdx + 4*rax]
+	sete	r11b
+	neg	r11b
+	lea	rdi, [r9 + rax]
+	add	rdi, 7
+	test	rcx, rcx
+	cmovns	rdi, rcx
 	sar	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
-	xor	r10b, r8b
-	lea	r9d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r9d
+	lea	ebx, [8*rdi]
+	sub	ecx, ebx
 	mov	ebx, 1
-                                        # kill: def $cl killed $cl killed $ecx
+                                        # kill: def $cl killed $cl killed $rcx
 	shl	ebx, cl
-	and	bl, r10b
-	xor	bl, r8b
-	mov	byte ptr [r12 + rdi], bl
+	mov	r14, r15
+	movzx	ecx, byte ptr [r15 + rdi]
+	xor	r11b, cl
+	and	bl, r11b
+	xor	bl, cl
+	mov	byte ptr [r15 + rdi], bl
 	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB0_20
-# %bb.21:
-	add	r12, 1
-.LBB0_22:
-	sar	r15, 5
-	cmp	r14, 32
-	jl	.LBB0_26
-# %bb.23:
-	mov	qword ptr [rsp + 24], r14       # 8-byte Spill
-	mov	qword ptr [rsp + 56], r15       # 8-byte Spill
-	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
+	add	r10, -4
+	cmp	r8, rax
+	jne	.LBB0_24
+# %bb.25:
+	sub	rsi, r10
+	sub	rdx, r10
+.LBB0_26:
+	sub	r12, r8
+	je	.LBB0_153
+# %bb.27:
+	add	r15, 1
+.LBB0_28:
+	lea	rax, [r12 + 31]
+	test	r12, r12
+	cmovns	rax, r12
+	sar	rax, 5
+	cmp	r12, 32
+	jl	.LBB0_32
+# %bb.29:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	mov	qword ptr [rsp + 64], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
 	.p2align	4, 0x90
-.LBB0_24:                               # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 48], r12       # 8-byte Spill
+.LBB0_30:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
 	mov	eax, dword ptr [rsi]
 	mov	ecx, dword ptr [rsi + 4]
 	cmp	eax, dword ptr [rdx]
-	sete	byte ptr [rsp + 4]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
 	cmp	ecx, dword ptr [rdx + 4]
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 8]
 	cmp	eax, dword ptr [rdx + 8]
-	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 30]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 12]
 	cmp	eax, dword ptr [rdx + 12]
-	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 31]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 16]
 	cmp	eax, dword ptr [rdx + 16]
-	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 20]
 	cmp	eax, dword ptr [rdx + 20]
-	sete	byte ptr [rsp + 3]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 24]
 	cmp	eax, dword ptr [rdx + 24]
-	sete	byte ptr [rsp + 5]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 28]
 	cmp	eax, dword ptr [rdx + 28]
 	sete	r13b
 	mov	eax, dword ptr [rsi + 32]
 	cmp	eax, dword ptr [rdx + 32]
-	sete	byte ptr [rsp + 10]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 36]
 	cmp	eax, dword ptr [rdx + 36]
-	sete	r8b
+	sete	dil
 	mov	eax, dword ptr [rsi + 40]
 	cmp	eax, dword ptr [rdx + 40]
 	sete	r11b
@@ -121,21 +137,21 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	sete	r15b
 	mov	eax, dword ptr [rsi + 48]
 	cmp	eax, dword ptr [rdx + 48]
-	sete	byte ptr [rsp + 6]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 52]
 	cmp	eax, dword ptr [rdx + 52]
-	sete	byte ptr [rsp + 7]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 56]
 	cmp	eax, dword ptr [rdx + 56]
-	sete	byte ptr [rsp + 8]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 60]
 	cmp	eax, dword ptr [rdx + 60]
-	sete	dil
+	sete	r8b
 	mov	eax, dword ptr [rsi + 64]
 	mov	ebx, dword ptr [rsi + 68]
 	cmp	eax, dword ptr [rdx + 64]
 	mov	eax, dword ptr [rsi + 72]
-	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
 	cmp	ebx, dword ptr [rdx + 68]
 	mov	ebx, dword ptr [rsi + 76]
 	sete	r10b
@@ -146,144 +162,144 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	mov	ebx, dword ptr [rsi + 84]
 	sete	r12b
 	cmp	eax, dword ptr [rdx + 80]
-	sete	byte ptr [rsp + 9]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
 	cmp	ebx, dword ptr [rdx + 84]
 	mov	eax, dword ptr [rsi + 88]
-	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 88]
 	mov	eax, dword ptr [rsi + 92]
-	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 24]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 92]
 	mov	eax, dword ptr [rsi + 96]
 	sete	r9b
 	cmp	eax, dword ptr [rdx + 96]
 	mov	eax, dword ptr [rsi + 100]
-	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 29]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 100]
 	mov	eax, dword ptr [rsi + 104]
-	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 104]
 	mov	eax, dword ptr [rsi + 108]
-	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 108]
 	mov	eax, dword ptr [rsi + 112]
-	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 25]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 112]
 	mov	eax, dword ptr [rsi + 116]
-	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 26]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 116]
 	mov	eax, dword ptr [rsi + 120]
-	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 120]
 	mov	eax, dword ptr [rsi + 124]
-	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 27]             # 1-byte Folded Spill
 	sub	rsi, -128
 	cmp	eax, dword ptr [rdx + 124]
 	sete	cl
-	movzx	eax, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 4]          # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 13]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 5]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
 	shl	al, 6
 	shl	r13b, 7
 	or	r13b, al
-	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 30]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
-	add	r8b, r8b
-	add	r8b, byte ptr [rsp + 10]        # 1-byte Folded Reload
-	movzx	ebx, byte ptr [rsp + 22]        # 1-byte Folded Reload
+	add	dil, dil
+	add	dil, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 31]        # 1-byte Folded Reload
 	shl	bl, 3
 	or	bl, al
 	mov	eax, ebx
 	shl	r11b, 2
-	or	r11b, r8b
-	movzx	ebx, byte ptr [rsp + 23]        # 1-byte Folded Reload
+	or	r11b, dil
+	movzx	ebx, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	bl, 4
 	or	bl, al
-	mov	r8d, ebx
+	mov	edi, ebx
 	shl	r15b, 3
 	or	r15b, r11b
-	movzx	ebx, byte ptr [rsp + 3]         # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 12]        # 1-byte Folded Reload
 	shl	bl, 5
-	or	bl, r8b
-	movzx	eax, byte ptr [rsp + 6]         # 1-byte Folded Reload
+	or	bl, dil
+	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r15b
-	mov	r8d, eax
-	movzx	eax, byte ptr [rsp + 7]         # 1-byte Folded Reload
+	mov	edi, eax
+	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
 	shl	al, 5
-	or	al, r8b
-	movzx	r8d, byte ptr [rsp + 8]         # 1-byte Folded Reload
-	shl	r8b, 6
-	shl	dil, 7
-	or	dil, r8b
+	or	al, dil
+	movzx	edi, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	shl	dil, 6
+	shl	r8b, 7
+	or	r8b, dil
 	or	r13b, bl
-	or	dil, al
+	or	r8b, al
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 11]       # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 20]       # 1-byte Folded Reload
 	shl	r14b, 2
 	or	r14b, r10b
 	shl	r12b, 3
 	or	r12b, r14b
-	movzx	eax, byte ptr [rsp + 9]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r12b
 	mov	ebx, eax
-	mov	r12, qword ptr [rsp + 48]       # 8-byte Reload
-	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	mov	byte ptr [r12], r13b
-	movzx	ebx, byte ptr [rsp + 13]        # 1-byte Folded Reload
+	mov	rdi, qword ptr [rsp + 32]       # 8-byte Reload
+	mov	byte ptr [rdi], r13b
+	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
+	movzx	ebx, byte ptr [rsp + 24]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r9b, 7
 	or	r9b, bl
-	mov	byte ptr [r12 + 1], dil
+	mov	byte ptr [r15 + 1], r8b
 	or	r9b, al
-	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 22]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 20]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 29]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 23]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 25]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 26]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	movzx	ebx, byte ptr [rsp + 18]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 27]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	cl, 7
 	or	cl, bl
 	or	cl, al
-	mov	byte ptr [r12 + 2], r9b
-	mov	byte ptr [r12 + 3], cl
+	mov	byte ptr [r15 + 2], r9b
+	mov	byte ptr [r15 + 3], cl
 	add	rdx, 128
-	add	r12, 4
-	add	qword ptr [rsp + 32], -1        # 8-byte Folded Spill
-	jne	.LBB0_24
-# %bb.25:
-	mov	r14, qword ptr [rsp + 24]       # 8-byte Reload
-	mov	r15, qword ptr [rsp + 56]       # 8-byte Reload
-.LBB0_26:
-	shl	r15, 5
-	cmp	r15, r14
-	jge	.LBB0_123
-# %bb.27:
-	sub	r14, r15
+	add	r15, 4
+	add	qword ptr [rsp + 48], -1        # 8-byte Folded Spill
+	jne	.LBB0_30
+# %bb.31:
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+	mov	rax, qword ptr [rsp + 64]       # 8-byte Reload
+.LBB0_32:
+	shl	rax, 5
+	sub	r12, rax
+	jle	.LBB0_153
+# %bb.33:
 	xor	ecx, ecx
 	.p2align	4, 0x90
-.LBB0_28:                               # =>This Inner Loop Header: Depth=1
+.LBB0_34:                               # =>This Inner Loop Header: Depth=1
 	lea	r8, [rcx + 1]
 	mov	edi, dword ptr [rsi + 4*rcx]
 	cmp	edi, dword ptr [rdx + 4*rcx]
@@ -291,7 +307,8 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	neg	bl
 	mov	rdi, rcx
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r12 + rdi]
+	mov	r10, r15
+	movzx	r9d, byte ptr [r15 + rdi]
 	xor	bl, r9b
 	and	cl, 7
 	mov	al, 1
@@ -299,106 +316,122 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	shl	al, cl
 	and	al, bl
 	xor	al, r9b
-	mov	byte ptr [r12 + rdi], al
+	mov	byte ptr [r15 + rdi], al
 	mov	rcx, r8
-	cmp	r14, r8
-	jne	.LBB0_28
-	jmp	.LBB0_123
-.LBB0_29:
+	cmp	r12, r8
+	jne	.LBB0_34
+	jmp	.LBB0_153
+.LBB0_35:
 	cmp	edi, 8
-	jle	.LBB0_30
-# %bb.43:
+	jle	.LBB0_36
+# %bb.52:
 	cmp	edi, 9
-	je	.LBB0_101
-# %bb.44:
+	je	.LBB0_125
+# %bb.53:
 	cmp	edi, 11
-	je	.LBB0_112
-# %bb.45:
+	je	.LBB0_139
+# %bb.54:
 	cmp	edi, 12
-	jne	.LBB0_123
-# %bb.46:
-	lea	r15, [r14 + 31]
-	test	r14, r14
-	cmovns	r15, r14
-	lea	ecx, [rax + 7]
-	test	eax, eax
-	cmovns	ecx, eax
-	and	ecx, -8
-	sub	eax, ecx
-	je	.LBB0_50
-# %bb.47:
-	movsxd	r10, eax
+	jne	.LBB0_153
+# %bb.55:
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB0_62
+# %bb.56:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r12
+	cmovg	r8, r12
+	test	r8, r8
+	jle	.LBB0_60
+# %bb.57:
+	movsxd	r9, r9d
+	xor	r11d, r11d
+	xor	r14d, r14d
 	.p2align	4, 0x90
-.LBB0_48:                               # =>This Inner Loop Header: Depth=1
-	vmovsd	xmm0, qword ptr [rsi]           # xmm0 = mem[0],zero
-	add	rsi, 8
-	vucomisd	xmm0, qword ptr [rdx]
-	lea	rdx, [rdx + 8]
-	setnp	cl
+.LBB0_58:                               # =>This Inner Loop Header: Depth=1
+	lea	rcx, [r9 + r14]
+	vmovsd	xmm0, qword ptr [rsi + 8*r14]   # xmm0 = mem[0],zero
+	vucomisd	xmm0, qword ptr [rdx + 8*r14]
+	setnp	r10b
 	sete	bl
-	and	bl, cl
+	and	bl, r10b
 	neg	bl
-	lea	rdi, [r10 + 7]
-	test	r10, r10
-	cmovns	rdi, r10
+	lea	rdi, [r9 + r14]
+	add	rdi, 7
+	test	rcx, rcx
+	cmovns	rdi, rcx
 	sar	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
-	xor	bl, r8b
-	lea	r9d, [8*rdi]
-	mov	ecx, r10d
-	sub	ecx, r9d
+	lea	eax, [8*rdi]
+	sub	ecx, eax
 	mov	eax, 1
-                                        # kill: def $cl killed $cl killed $ecx
+                                        # kill: def $cl killed $cl killed $rcx
 	shl	eax, cl
+	mov	r10, r15
+	movzx	ecx, byte ptr [r15 + rdi]
+	xor	bl, cl
 	and	al, bl
-	xor	al, r8b
-	mov	byte ptr [r12 + rdi], al
-	add	r10, 1
-	cmp	r10, 8
-	jne	.LBB0_48
-# %bb.49:
-	add	r12, 1
-.LBB0_50:
-	sar	r15, 5
-	cmp	r14, 32
-	jl	.LBB0_54
-# %bb.51:
-	mov	qword ptr [rsp + 24], r14       # 8-byte Spill
-	mov	qword ptr [rsp + 64], r15       # 8-byte Spill
-	mov	qword ptr [rsp + 56], r15       # 8-byte Spill
+	xor	al, cl
+	mov	byte ptr [r15 + rdi], al
+	add	r14, 1
+	add	r11, -8
+	cmp	r8, r14
+	jne	.LBB0_58
+# %bb.59:
+	sub	rsi, r11
+	sub	rdx, r11
+.LBB0_60:
+	sub	r12, r8
+	je	.LBB0_153
+# %bb.61:
+	add	r15, 1
+.LBB0_62:
+	lea	rax, [r12 + 31]
+	test	r12, r12
+	cmovns	rax, r12
+	sar	rax, 5
+	cmp	r12, 32
+	jl	.LBB0_66
+# %bb.63:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	mov	qword ptr [rsp + 64], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
 	.p2align	4, 0x90
-.LBB0_52:                               # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 48], r12       # 8-byte Spill
+.LBB0_64:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
 	vmovsd	xmm0, qword ptr [rsi]           # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx]
 	vmovsd	xmm0, qword ptr [rsi + 8]       # xmm0 = mem[0],zero
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 21], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 29], cl         # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rdx + 8]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 13], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 22], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 16]      # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 16]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 20], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 28], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 24]      # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 24]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 23], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 31], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 32]      # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 32]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 22], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 30], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 40]      # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 40]
 	setnp	al
@@ -414,13 +447,13 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 3], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 12], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 64]      # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 64]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 19], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 27], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 72]      # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 72]
 	setnp	al
@@ -431,117 +464,116 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 18], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 26], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 88]      # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 88]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 17], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 25], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 96]      # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 96]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 16], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 11], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 104]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 104]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 15], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 24], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 112]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 112]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 12], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 21], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 120]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 120]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 11], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 20], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 128]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 128]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 14], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 23], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 136]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 136]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 10], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 19], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 144]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 144]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 9], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 18], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 152]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 152]
 	setnp	al
-	sete	r14b
-	and	r14b, al
+	sete	r15b
+	and	r15b, al
 	vmovsd	xmm0, qword ptr [rsi + 160]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 160]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 8], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 17], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 168]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 168]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 7], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 16], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 176]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 176]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 5], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 14], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 184]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 184]
 	setnp	al
-	sete	r15b
-	and	r15b, al
+	sete	r10b
+	and	r10b, al
 	vmovsd	xmm0, qword ptr [rsi + 192]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 192]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 6], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 15], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 200]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 200]
 	setnp	al
-	sete	cl
-	and	cl, al
-	mov	byte ptr [rsp + 32], cl         # 1-byte Spill
+	sete	r12b
+	and	r12b, al
 	vmovsd	xmm0, qword ptr [rsi + 208]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 208]
 	setnp	al
-	sete	r11b
-	and	r11b, al
+	sete	r14b
+	and	r14b, al
 	vmovsd	xmm0, qword ptr [rsi + 216]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 216]
 	setnp	al
-	sete	r10b
-	and	r10b, al
+	sete	r11b
+	and	r11b, al
 	vmovsd	xmm0, qword ptr [rsi + 224]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 224]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 4], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 13], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 232]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 232]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 40], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 56], cl         # 1-byte Spill
 	vmovsd	xmm0, qword ptr [rsi + 240]     # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 240]
 	setnp	al
@@ -553,110 +585,108 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	setnp	al
 	sete	r8b
 	and	r8b, al
-	movzx	eax, byte ptr [rsp + 13]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 22]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 21]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 29]         # 1-byte Folded Reload
 	shl	dil, 5
 	shl	r13b, 6
 	or	r13b, dil
 	mov	edi, r13d
-	movzx	ecx, byte ptr [rsp + 20]        # 1-byte Folded Reload
+	movzx	ecx, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	cl, 2
 	or	cl, al
 	mov	eax, ebx
 	add	al, bl
-	add	al, byte ptr [rsp + 19]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 27]         # 1-byte Folded Reload
 	mov	r13d, eax
-	movzx	eax, byte ptr [rsp + 3]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
 	shl	al, 7
 	or	al, dil
-	mov	byte ptr [rsp + 3], al          # 1-byte Spill
-	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
+	mov	byte ptr [rsp + 12], al         # 1-byte Spill
+	movzx	eax, byte ptr [rsp + 26]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, r13b
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 23]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 31]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, cl
-	movzx	ebx, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 25]        # 1-byte Folded Reload
 	shl	bl, 3
 	or	bl, dil
-	movzx	r13d, byte ptr [rsp + 22]       # 1-byte Folded Reload
+	movzx	r13d, byte ptr [rsp + 30]       # 1-byte Folded Reload
 	shl	r13b, 4
 	or	r13b, al
-	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
-	mov	edi, eax
-	movzx	ebx, byte ptr [rsp + 15]        # 1-byte Folded Reload
+	mov	byte ptr [rsp + 11], al         # 1-byte Spill
+	movzx	ebx, byte ptr [rsp + 24]        # 1-byte Folded Reload
 	shl	bl, 5
-	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
 	shl	al, 6
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 11]        # 1-byte Folded Reload
-	shl	al, 7
-	or	al, bl
-	movzx	ebx, byte ptr [rsp + 10]        # 1-byte Folded Reload
+	movzx	edi, byte ptr [rsp + 20]        # 1-byte Folded Reload
+	shl	dil, 7
+	or	dil, al
+	movzx	ebx, byte ptr [rsp + 19]        # 1-byte Folded Reload
 	add	bl, bl
-	add	bl, byte ptr [rsp + 14]         # 1-byte Folded Reload
-	movzx	ecx, byte ptr [rsp + 9]         # 1-byte Folded Reload
+	add	bl, byte ptr [rsp + 23]         # 1-byte Folded Reload
+	movzx	ecx, byte ptr [rsp + 18]        # 1-byte Folded Reload
 	shl	cl, 2
 	or	cl, bl
-	shl	r14b, 3
-	or	r14b, cl
-	movzx	ebx, byte ptr [rsp + 8]         # 1-byte Folded Reload
+	shl	r15b, 3
+	or	r15b, cl
+	movzx	ebx, byte ptr [rsp + 17]        # 1-byte Folded Reload
 	shl	bl, 4
-	or	bl, r14b
-	mov	r12, qword ptr [rsp + 48]       # 8-byte Reload
-	movzx	r14d, byte ptr [rsp + 3]        # 1-byte Folded Reload
-	or	r14b, r13b
-	movzx	r13d, byte ptr [rsp + 7]        # 1-byte Folded Reload
+	or	bl, r15b
+	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
+	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	or	al, r13b
+	movzx	r13d, byte ptr [rsp + 16]       # 1-byte Folded Reload
 	shl	r13b, 5
-	movzx	ecx, byte ptr [rsp + 5]         # 1-byte Folded Reload
+	movzx	ecx, byte ptr [rsp + 14]        # 1-byte Folded Reload
 	shl	cl, 6
 	or	cl, r13b
-	or	al, dil
-	shl	r15b, 7
-	or	r15b, cl
-	or	r15b, bl
-	movzx	ecx, byte ptr [rsp + 32]        # 1-byte Folded Reload
-	add	cl, cl
-	add	cl, byte ptr [rsp + 6]          # 1-byte Folded Reload
-	shl	r11b, 2
-	or	r11b, cl
-	shl	r10b, 3
-	or	r10b, r11b
-	movzx	ecx, byte ptr [rsp + 4]         # 1-byte Folded Reload
+	or	dil, byte ptr [rsp + 11]        # 1-byte Folded Reload
+	shl	r10b, 7
+	or	r10b, cl
+	or	r10b, bl
+	add	r12b, r12b
+	add	r12b, byte ptr [rsp + 15]       # 1-byte Folded Reload
+	shl	r14b, 2
+	or	r14b, r12b
+	shl	r11b, 3
+	or	r11b, r14b
+	movzx	ecx, byte ptr [rsp + 13]        # 1-byte Folded Reload
 	shl	cl, 4
-	or	cl, r10b
-	mov	byte ptr [r12], r14b
-	movzx	ebx, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	or	cl, r11b
+	mov	byte ptr [r15], al
+	movzx	ebx, byte ptr [rsp + 56]        # 1-byte Folded Reload
 	shl	bl, 5
 	shl	r9b, 6
 	or	r9b, bl
-	mov	byte ptr [r12 + 1], al
+	mov	byte ptr [r15 + 1], dil
 	shl	r8b, 7
 	or	r8b, r9b
 	or	r8b, cl
-	mov	byte ptr [r12 + 2], r15b
-	mov	byte ptr [r12 + 3], r8b
+	mov	byte ptr [r15 + 2], r10b
+	mov	byte ptr [r15 + 3], r8b
 	add	rdx, 256
-	add	r12, 4
-	add	qword ptr [rsp + 56], -1        # 8-byte Folded Spill
-	jne	.LBB0_52
-# %bb.53:
-	mov	r14, qword ptr [rsp + 24]       # 8-byte Reload
-	mov	r15, qword ptr [rsp + 64]       # 8-byte Reload
-.LBB0_54:
-	shl	r15, 5
-	cmp	r15, r14
-	jge	.LBB0_123
-# %bb.55:
-	sub	r14, r15
+	add	r15, 4
+	add	qword ptr [rsp + 48], -1        # 8-byte Folded Spill
+	jne	.LBB0_64
+# %bb.65:
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+	mov	rax, qword ptr [rsp + 64]       # 8-byte Reload
+.LBB0_66:
+	shl	rax, 5
+	sub	r12, rax
+	jle	.LBB0_153
+# %bb.67:
 	xor	ecx, ecx
 	.p2align	4, 0x90
-.LBB0_56:                               # =>This Inner Loop Header: Depth=1
+.LBB0_68:                               # =>This Inner Loop Header: Depth=1
 	lea	r9, [rcx + 1]
 	vmovsd	xmm0, qword ptr [rsi + 8*rcx]   # xmm0 = mem[0],zero
 	vucomisd	xmm0, qword ptr [rdx + 8*rcx]
@@ -666,7 +696,8 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	neg	al
 	mov	rdi, rcx
 	shr	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
+	mov	r10, r15
+	movzx	r8d, byte ptr [r15 + rdi]
 	xor	al, r8b
 	and	cl, 7
 	mov	bl, 1
@@ -674,95 +705,119 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	shl	bl, cl
 	and	bl, al
 	xor	bl, r8b
-	mov	byte ptr [r12 + rdi], bl
+	mov	byte ptr [r15 + rdi], bl
 	mov	rcx, r9
-	cmp	r14, r9
-	jne	.LBB0_56
-	jmp	.LBB0_123
+	cmp	r12, r9
+	jne	.LBB0_68
+	jmp	.LBB0_153
 .LBB0_2:
 	cmp	edi, 2
-	je	.LBB0_57
+	mov	r13, r15
+	je	.LBB0_69
 # %bb.3:
 	cmp	edi, 3
-	jne	.LBB0_123
+	jne	.LBB0_153
 # %bb.4:
-	lea	r15, [r14 + 31]
-	test	r14, r14
-	cmovns	r15, r14
-	lea	ecx, [rax + 7]
-	test	eax, eax
-	cmovns	ecx, eax
-	and	ecx, -8
-	sub	eax, ecx
-	je	.LBB0_8
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB0_11
 # %bb.5:
-	cdqe
-	.p2align	4, 0x90
-.LBB0_6:                                # =>This Inner Loop Header: Depth=1
-	movzx	ecx, byte ptr [rsi]
-	add	rsi, 1
-	cmp	cl, byte ptr [rdx]
-	lea	rdx, [rdx + 1]
-	sete	r10b
-	neg	r10b
-	lea	rdi, [rax + 7]
+	mov	eax, 8
+	sub	eax, r9d
+	cmp	rax, r12
+	cmovg	rax, r12
 	test	rax, rax
-	cmovns	rdi, rax
+	jle	.LBB0_9
+# %bb.6:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	movsxd	rbx, r9d
+	mov	qword ptr [rsp + 32], rax       # 8-byte Spill
+	mov	r9, rax
+	neg	r9
+	xor	r10d, r10d
+	xor	r11d, r11d
+	.p2align	4, 0x90
+.LBB0_7:                                # =>This Inner Loop Header: Depth=1
+	movzx	ecx, byte ptr [rsi + r11]
+	cmp	cl, byte ptr [rdx + r11]
+	sete	r12b
+	neg	r12b
+	lea	rdi, [rbx + 7]
+	test	rbx, rbx
+	cmovns	rdi, rbx
 	sar	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
-	xor	r10b, r8b
-	lea	r9d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r9d
-	mov	ebx, 1
+	movzx	r14d, byte ptr [r15 + rdi]
+	lea	r15d, [8*rdi]
+	mov	ecx, ebx
+	sub	ecx, r15d
+	mov	r8, r13
+	mov	eax, 1
                                         # kill: def $cl killed $cl killed $ecx
-	shl	ebx, cl
-	and	bl, r10b
-	xor	bl, r8b
-	mov	byte ptr [r12 + rdi], bl
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB0_6
-# %bb.7:
-	add	r12, 1
-.LBB0_8:
-	sar	r15, 5
-	cmp	r14, 32
-	jl	.LBB0_12
-# %bb.9:
-	mov	qword ptr [rsp + 24], r14       # 8-byte Spill
-	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
-	mov	qword ptr [rsp + 40], r15       # 8-byte Spill
+	shl	eax, cl
+	xor	r12b, r14b
+	and	al, r12b
+	xor	al, r14b
+	mov	r15, r13
+	mov	byte ptr [r13 + rdi], al
+	add	r11, 1
+	add	rbx, 1
+	add	r10, -1
+	cmp	r9, r10
+	jne	.LBB0_7
+# %bb.8:
+	sub	rsi, r10
+	sub	rdx, r10
+	mov	rax, qword ptr [rsp + 32]       # 8-byte Reload
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+.LBB0_9:
+	sub	r12, rax
+	je	.LBB0_153
+# %bb.10:
+	add	r15, 1
+.LBB0_11:
+	lea	rax, [r12 + 31]
+	test	r12, r12
+	cmovns	rax, r12
+	sar	rax, 5
+	cmp	r12, 32
+	jl	.LBB0_15
+# %bb.12:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 56], rax       # 8-byte Spill
 	.p2align	4, 0x90
-.LBB0_10:                               # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 48], r12       # 8-byte Spill
+.LBB0_13:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
 	movzx	eax, byte ptr [rsi]
 	movzx	ecx, byte ptr [rsi + 1]
 	cmp	al, byte ptr [rdx]
-	sete	byte ptr [rsp + 4]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
 	cmp	cl, byte ptr [rdx + 1]
 	sete	bl
 	movzx	eax, byte ptr [rsi + 2]
 	cmp	al, byte ptr [rdx + 2]
-	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 30]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 3]
 	cmp	al, byte ptr [rdx + 3]
-	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 31]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 4]
 	cmp	al, byte ptr [rdx + 4]
-	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 5]
 	cmp	al, byte ptr [rdx + 5]
-	sete	byte ptr [rsp + 3]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 6]
 	cmp	al, byte ptr [rdx + 6]
-	sete	byte ptr [rsp + 5]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 7]
 	cmp	al, byte ptr [rdx + 7]
-	sete	r15b
+	sete	r14b
 	movzx	eax, byte ptr [rsi + 8]
 	cmp	al, byte ptr [rdx + 8]
-	sete	byte ptr [rsp + 8]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 9]
 	cmp	al, byte ptr [rdx + 9]
 	sete	dil
@@ -774,19 +829,19 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	sete	r11b
 	movzx	eax, byte ptr [rsi + 12]
 	cmp	al, byte ptr [rdx + 12]
-	sete	r14b
+	sete	r15b
 	movzx	eax, byte ptr [rsi + 13]
 	cmp	al, byte ptr [rdx + 13]
-	sete	byte ptr [rsp + 6]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 14]
 	cmp	al, byte ptr [rdx + 14]
-	sete	byte ptr [rsp + 7]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 15]
 	cmp	al, byte ptr [rdx + 15]
 	sete	r8b
 	movzx	eax, byte ptr [rsi + 16]
 	cmp	al, byte ptr [rdx + 16]
-	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 17]
 	cmp	al, byte ptr [rdx + 17]
 	sete	r12b
@@ -795,148 +850,147 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	sete	r13b
 	movzx	eax, byte ptr [rsi + 19]
 	cmp	al, byte ptr [rdx + 19]
-	sete	byte ptr [rsp + 9]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 20]
 	cmp	al, byte ptr [rdx + 20]
-	sete	byte ptr [rsp + 10]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 21]
 	cmp	al, byte ptr [rdx + 21]
-	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 22]
 	cmp	al, byte ptr [rdx + 22]
-	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 23]
 	cmp	al, byte ptr [rdx + 23]
 	sete	r9b
 	movzx	eax, byte ptr [rsi + 24]
 	cmp	al, byte ptr [rdx + 24]
-	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 29]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 25]
 	cmp	al, byte ptr [rdx + 25]
-	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 26]
 	cmp	al, byte ptr [rdx + 26]
-	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 24]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 27]
 	cmp	al, byte ptr [rdx + 27]
-	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 25]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 28]
 	cmp	al, byte ptr [rdx + 28]
-	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 26]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 29]
 	cmp	al, byte ptr [rdx + 29]
-	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 27]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 30]
 	cmp	al, byte ptr [rdx + 30]
-	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 31]
 	add	rsi, 32
 	cmp	al, byte ptr [rdx + 31]
 	sete	cl
 	add	bl, bl
-	add	bl, byte ptr [rsp + 4]          # 1-byte Folded Reload
+	add	bl, byte ptr [rsp + 13]         # 1-byte Folded Reload
 	mov	eax, ebx
-	movzx	ebx, byte ptr [rsp + 5]         # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 14]        # 1-byte Folded Reload
 	shl	bl, 6
-	shl	r15b, 7
-	or	r15b, bl
-	movzx	ebx, byte ptr [rsp + 21]        # 1-byte Folded Reload
+	shl	r14b, 7
+	or	r14b, bl
+	movzx	ebx, byte ptr [rsp + 30]        # 1-byte Folded Reload
 	shl	bl, 2
 	or	bl, al
 	mov	eax, ebx
 	add	dil, dil
-	add	dil, byte ptr [rsp + 8]         # 1-byte Folded Reload
-	movzx	ebx, byte ptr [rsp + 22]        # 1-byte Folded Reload
+	add	dil, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 31]        # 1-byte Folded Reload
 	shl	bl, 3
 	or	bl, al
 	mov	eax, ebx
 	shl	r10b, 2
 	or	r10b, dil
-	movzx	ebx, byte ptr [rsp + 23]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	bl, 4
 	or	bl, al
 	mov	edi, ebx
 	shl	r11b, 3
 	or	r11b, r10b
-	movzx	ebx, byte ptr [rsp + 3]         # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 12]        # 1-byte Folded Reload
 	shl	bl, 5
 	or	bl, dil
-	shl	r14b, 4
-	or	r14b, r11b
-	movzx	eax, byte ptr [rsp + 6]         # 1-byte Folded Reload
+	shl	r15b, 4
+	or	r15b, r11b
+	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
 	shl	al, 5
-	or	al, r14b
-	movzx	edi, byte ptr [rsp + 7]         # 1-byte Folded Reload
+	or	al, r15b
+	movzx	edi, byte ptr [rsp + 16]        # 1-byte Folded Reload
 	shl	dil, 6
 	shl	r8b, 7
 	or	r8b, dil
-	or	r15b, bl
+	or	r14b, bl
 	or	r8b, al
 	add	r12b, r12b
-	add	r12b, byte ptr [rsp + 14]       # 1-byte Folded Reload
+	add	r12b, byte ptr [rsp + 23]       # 1-byte Folded Reload
 	shl	r13b, 2
 	or	r13b, r12b
-	mov	r12, qword ptr [rsp + 48]       # 8-byte Reload
-	movzx	eax, byte ptr [rsp + 9]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, r13b
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 10]        # 1-byte Folded Reload
+	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
+	movzx	eax, byte ptr [rsp + 19]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 11]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 20]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	mov	byte ptr [r12], r15b
-	movzx	ebx, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	mov	byte ptr [r15], r14b
+	movzx	ebx, byte ptr [rsp + 21]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r9b, 7
 	or	r9b, bl
-	mov	byte ptr [r12 + 1], r8b
+	mov	byte ptr [r15 + 1], r8b
 	or	r9b, al
-	movzx	eax, byte ptr [rsp + 13]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 22]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 20]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 29]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 24]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 25]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 26]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 27]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	movzx	ebx, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	cl, 7
 	or	cl, bl
 	or	cl, al
-	mov	byte ptr [r12 + 2], r9b
-	mov	byte ptr [r12 + 3], cl
+	mov	byte ptr [r15 + 2], r9b
+	mov	byte ptr [r15 + 3], cl
 	add	rdx, 32
-	add	r12, 4
-	add	qword ptr [rsp + 40], -1        # 8-byte Folded Spill
-	jne	.LBB0_10
-# %bb.11:
-	mov	r14, qword ptr [rsp + 24]       # 8-byte Reload
-	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
-.LBB0_12:
-	shl	r15, 5
-	cmp	r15, r14
-	jge	.LBB0_123
-# %bb.13:
-	sub	r14, r15
+	add	r15, 4
+	add	qword ptr [rsp + 56], -1        # 8-byte Folded Spill
+	jne	.LBB0_13
+# %bb.14:
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+	mov	rax, qword ptr [rsp + 48]       # 8-byte Reload
+.LBB0_15:
+	shl	rax, 5
+	sub	r12, rax
+	jle	.LBB0_153
+# %bb.16:
 	xor	ecx, ecx
 	.p2align	4, 0x90
-.LBB0_14:                               # =>This Inner Loop Header: Depth=1
+.LBB0_17:                               # =>This Inner Loop Header: Depth=1
 	lea	r8, [rcx + 1]
 	movzx	ebx, byte ptr [rsi + rcx]
 	cmp	bl, byte ptr [rdx + rcx]
@@ -944,7 +998,8 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	neg	bl
 	mov	rdi, rcx
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r12 + rdi]
+	mov	r10, r15
+	movzx	r9d, byte ptr [r15 + rdi]
 	xor	bl, r9b
 	and	cl, 7
 	mov	al, 1
@@ -952,98 +1007,114 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	shl	al, cl
 	and	al, bl
 	xor	al, r9b
-	mov	byte ptr [r12 + rdi], al
+	mov	byte ptr [r15 + rdi], al
 	mov	rcx, r8
-	cmp	r14, r8
-	jne	.LBB0_14
-	jmp	.LBB0_123
-.LBB0_30:
+	cmp	r12, r8
+	jne	.LBB0_17
+	jmp	.LBB0_153
+.LBB0_36:
 	cmp	edi, 7
-	je	.LBB0_90
-# %bb.31:
+	je	.LBB0_111
+# %bb.37:
 	cmp	edi, 8
-	jne	.LBB0_123
-# %bb.32:
-	lea	r15, [r14 + 31]
-	test	r14, r14
-	cmovns	r15, r14
-	lea	ecx, [rax + 7]
-	test	eax, eax
-	cmovns	ecx, eax
-	and	ecx, -8
-	sub	eax, ecx
-	je	.LBB0_36
-# %bb.33:
-	cdqe
+	jne	.LBB0_153
+# %bb.38:
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB0_45
+# %bb.39:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r12
+	cmovg	r8, r12
+	test	r8, r8
+	jle	.LBB0_43
+# %bb.40:
+	movsxd	r9, r9d
+	xor	r10d, r10d
+	xor	eax, eax
 	.p2align	4, 0x90
-.LBB0_34:                               # =>This Inner Loop Header: Depth=1
-	mov	rcx, qword ptr [rsi]
-	add	rsi, 8
-	cmp	rcx, qword ptr [rdx]
-	lea	rdx, [rdx + 8]
-	sete	r10b
-	neg	r10b
-	lea	rdi, [rax + 7]
-	test	rax, rax
-	cmovns	rdi, rax
+.LBB0_41:                               # =>This Inner Loop Header: Depth=1
+	lea	rcx, [r9 + rax]
+	mov	rbx, qword ptr [rsi + 8*rax]
+	cmp	rbx, qword ptr [rdx + 8*rax]
+	sete	r11b
+	neg	r11b
+	lea	rdi, [r9 + rax]
+	add	rdi, 7
+	test	rcx, rcx
+	cmovns	rdi, rcx
 	sar	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
-	xor	r10b, r8b
-	lea	r9d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r9d
+	lea	ebx, [8*rdi]
+	sub	ecx, ebx
 	mov	ebx, 1
-                                        # kill: def $cl killed $cl killed $ecx
+                                        # kill: def $cl killed $cl killed $rcx
 	shl	ebx, cl
-	and	bl, r10b
-	xor	bl, r8b
-	mov	byte ptr [r12 + rdi], bl
+	mov	r14, r15
+	movzx	ecx, byte ptr [r15 + rdi]
+	xor	r11b, cl
+	and	bl, r11b
+	xor	bl, cl
+	mov	byte ptr [r15 + rdi], bl
 	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB0_34
-# %bb.35:
-	add	r12, 1
-.LBB0_36:
-	sar	r15, 5
-	cmp	r14, 32
-	jl	.LBB0_40
-# %bb.37:
-	mov	qword ptr [rsp + 24], r14       # 8-byte Spill
-	mov	qword ptr [rsp + 56], r15       # 8-byte Spill
-	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
+	add	r10, -8
+	cmp	r8, rax
+	jne	.LBB0_41
+# %bb.42:
+	sub	rsi, r10
+	sub	rdx, r10
+.LBB0_43:
+	sub	r12, r8
+	je	.LBB0_153
+# %bb.44:
+	add	r15, 1
+.LBB0_45:
+	lea	rax, [r12 + 31]
+	test	r12, r12
+	cmovns	rax, r12
+	sar	rax, 5
+	cmp	r12, 32
+	jl	.LBB0_49
+# %bb.46:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	mov	qword ptr [rsp + 64], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
 	.p2align	4, 0x90
-.LBB0_38:                               # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 48], r12       # 8-byte Spill
+.LBB0_47:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
 	mov	rax, qword ptr [rsi]
 	mov	rcx, qword ptr [rsi + 8]
 	cmp	rax, qword ptr [rdx]
-	sete	byte ptr [rsp + 4]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
 	cmp	rcx, qword ptr [rdx + 8]
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 16]
 	cmp	rax, qword ptr [rdx + 16]
-	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 30]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 24]
 	cmp	rax, qword ptr [rdx + 24]
-	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 31]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 32]
 	cmp	rax, qword ptr [rdx + 32]
-	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 40]
 	cmp	rax, qword ptr [rdx + 40]
-	sete	byte ptr [rsp + 3]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 48]
 	cmp	rax, qword ptr [rdx + 48]
-	sete	byte ptr [rsp + 5]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 56]
 	cmp	rax, qword ptr [rdx + 56]
 	sete	r13b
 	mov	rax, qword ptr [rsi + 64]
 	cmp	rax, qword ptr [rdx + 64]
-	sete	byte ptr [rsp + 10]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 72]
 	cmp	rax, qword ptr [rdx + 72]
-	sete	r8b
+	sete	dil
 	mov	rax, qword ptr [rsi + 80]
 	cmp	rax, qword ptr [rdx + 80]
 	sete	r11b
@@ -1052,21 +1123,21 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	sete	r15b
 	mov	rax, qword ptr [rsi + 96]
 	cmp	rax, qword ptr [rdx + 96]
-	sete	byte ptr [rsp + 6]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 104]
 	cmp	rax, qword ptr [rdx + 104]
-	sete	byte ptr [rsp + 7]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 112]
 	cmp	rax, qword ptr [rdx + 112]
-	sete	byte ptr [rsp + 8]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 120]
 	cmp	rax, qword ptr [rdx + 120]
-	sete	dil
+	sete	r8b
 	mov	rax, qword ptr [rsi + 128]
 	mov	rbx, qword ptr [rsi + 136]
 	cmp	rax, qword ptr [rdx + 128]
 	mov	rax, qword ptr [rsi + 144]
-	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
 	cmp	rbx, qword ptr [rdx + 136]
 	mov	rbx, qword ptr [rsi + 152]
 	sete	r10b
@@ -1077,144 +1148,144 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	mov	rbx, qword ptr [rsi + 168]
 	sete	r12b
 	cmp	rax, qword ptr [rdx + 160]
-	sete	byte ptr [rsp + 9]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
 	cmp	rbx, qword ptr [rdx + 168]
 	mov	rax, qword ptr [rsi + 176]
-	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 176]
 	mov	rax, qword ptr [rsi + 184]
-	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 24]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 184]
 	mov	rax, qword ptr [rsi + 192]
 	sete	r9b
 	cmp	rax, qword ptr [rdx + 192]
 	mov	rax, qword ptr [rsi + 200]
-	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 29]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 200]
 	mov	rax, qword ptr [rsi + 208]
-	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 208]
 	mov	rax, qword ptr [rsi + 216]
-	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 216]
 	mov	rax, qword ptr [rsi + 224]
-	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 25]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 224]
 	mov	rax, qword ptr [rsi + 232]
-	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 26]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 232]
 	mov	rax, qword ptr [rsi + 240]
-	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 240]
 	mov	rax, qword ptr [rsi + 248]
-	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 27]             # 1-byte Folded Spill
 	add	rsi, 256
 	cmp	rax, qword ptr [rdx + 248]
 	sete	cl
-	movzx	eax, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 4]          # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 13]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 5]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
 	shl	al, 6
 	shl	r13b, 7
 	or	r13b, al
-	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 30]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
-	add	r8b, r8b
-	add	r8b, byte ptr [rsp + 10]        # 1-byte Folded Reload
-	movzx	ebx, byte ptr [rsp + 22]        # 1-byte Folded Reload
+	add	dil, dil
+	add	dil, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 31]        # 1-byte Folded Reload
 	shl	bl, 3
 	or	bl, al
 	mov	eax, ebx
 	shl	r11b, 2
-	or	r11b, r8b
-	movzx	ebx, byte ptr [rsp + 23]        # 1-byte Folded Reload
+	or	r11b, dil
+	movzx	ebx, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	bl, 4
 	or	bl, al
-	mov	r8d, ebx
+	mov	edi, ebx
 	shl	r15b, 3
 	or	r15b, r11b
-	movzx	ebx, byte ptr [rsp + 3]         # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 12]        # 1-byte Folded Reload
 	shl	bl, 5
-	or	bl, r8b
-	movzx	eax, byte ptr [rsp + 6]         # 1-byte Folded Reload
+	or	bl, dil
+	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r15b
-	mov	r8d, eax
-	movzx	eax, byte ptr [rsp + 7]         # 1-byte Folded Reload
+	mov	edi, eax
+	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
 	shl	al, 5
-	or	al, r8b
-	movzx	r8d, byte ptr [rsp + 8]         # 1-byte Folded Reload
-	shl	r8b, 6
-	shl	dil, 7
-	or	dil, r8b
+	or	al, dil
+	movzx	edi, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	shl	dil, 6
+	shl	r8b, 7
+	or	r8b, dil
 	or	r13b, bl
-	or	dil, al
+	or	r8b, al
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 11]       # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 20]       # 1-byte Folded Reload
 	shl	r14b, 2
 	or	r14b, r10b
 	shl	r12b, 3
 	or	r12b, r14b
-	movzx	eax, byte ptr [rsp + 9]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r12b
 	mov	ebx, eax
-	mov	r12, qword ptr [rsp + 48]       # 8-byte Reload
-	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	mov	byte ptr [r12], r13b
-	movzx	ebx, byte ptr [rsp + 13]        # 1-byte Folded Reload
+	mov	rdi, qword ptr [rsp + 32]       # 8-byte Reload
+	mov	byte ptr [rdi], r13b
+	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
+	movzx	ebx, byte ptr [rsp + 24]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r9b, 7
 	or	r9b, bl
-	mov	byte ptr [r12 + 1], dil
+	mov	byte ptr [r15 + 1], r8b
 	or	r9b, al
-	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 22]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 20]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 29]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 23]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 25]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 26]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	movzx	ebx, byte ptr [rsp + 18]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 27]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	cl, 7
 	or	cl, bl
 	or	cl, al
-	mov	byte ptr [r12 + 2], r9b
-	mov	byte ptr [r12 + 3], cl
+	mov	byte ptr [r15 + 2], r9b
+	mov	byte ptr [r15 + 3], cl
 	add	rdx, 256
-	add	r12, 4
-	add	qword ptr [rsp + 32], -1        # 8-byte Folded Spill
-	jne	.LBB0_38
-# %bb.39:
-	mov	r14, qword ptr [rsp + 24]       # 8-byte Reload
-	mov	r15, qword ptr [rsp + 56]       # 8-byte Reload
-.LBB0_40:
-	shl	r15, 5
-	cmp	r15, r14
-	jge	.LBB0_123
-# %bb.41:
-	sub	r14, r15
+	add	r15, 4
+	add	qword ptr [rsp + 48], -1        # 8-byte Folded Spill
+	jne	.LBB0_47
+# %bb.48:
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+	mov	rax, qword ptr [rsp + 64]       # 8-byte Reload
+.LBB0_49:
+	shl	rax, 5
+	sub	r12, rax
+	jle	.LBB0_153
+# %bb.50:
 	xor	ecx, ecx
 	.p2align	4, 0x90
-.LBB0_42:                               # =>This Inner Loop Header: Depth=1
+.LBB0_51:                               # =>This Inner Loop Header: Depth=1
 	lea	r8, [rcx + 1]
 	mov	rdi, qword ptr [rsi + 8*rcx]
 	cmp	rdi, qword ptr [rdx + 8*rcx]
@@ -1222,7 +1293,8 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	neg	bl
 	mov	rdi, rcx
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r12 + rdi]
+	mov	r10, r15
+	movzx	r9d, byte ptr [r15 + rdi]
 	xor	bl, r9b
 	and	cl, 7
 	mov	al, 1
@@ -1230,92 +1302,108 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	shl	al, cl
 	and	al, bl
 	xor	al, r9b
-	mov	byte ptr [r12 + rdi], al
+	mov	byte ptr [r15 + rdi], al
 	mov	rcx, r8
-	cmp	r14, r8
-	jne	.LBB0_42
-	jmp	.LBB0_123
-.LBB0_68:
-	lea	r15, [r14 + 31]
-	test	r14, r14
-	cmovns	r15, r14
-	lea	ecx, [rax + 7]
-	test	eax, eax
-	cmovns	ecx, eax
-	and	ecx, -8
-	sub	eax, ecx
-	je	.LBB0_72
-# %bb.69:
-	cdqe
+	cmp	r12, r8
+	jne	.LBB0_51
+	jmp	.LBB0_153
+.LBB0_83:
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB0_90
+# %bb.84:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r12
+	cmovg	r8, r12
+	test	r8, r8
+	jle	.LBB0_88
+# %bb.85:
+	movsxd	r9, r9d
+	xor	r10d, r10d
+	xor	eax, eax
 	.p2align	4, 0x90
-.LBB0_70:                               # =>This Inner Loop Header: Depth=1
-	movzx	ecx, word ptr [rsi]
-	add	rsi, 2
-	cmp	cx, word ptr [rdx]
-	lea	rdx, [rdx + 2]
-	sete	r10b
-	neg	r10b
-	lea	rdi, [rax + 7]
-	test	rax, rax
-	cmovns	rdi, rax
+.LBB0_86:                               # =>This Inner Loop Header: Depth=1
+	lea	rcx, [r9 + rax]
+	movzx	ebx, word ptr [rsi + 2*rax]
+	cmp	bx, word ptr [rdx + 2*rax]
+	sete	r11b
+	neg	r11b
+	lea	rdi, [r9 + rax]
+	add	rdi, 7
+	test	rcx, rcx
+	cmovns	rdi, rcx
 	sar	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
-	xor	r10b, r8b
-	lea	r9d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r9d
+	lea	ebx, [8*rdi]
+	sub	ecx, ebx
 	mov	ebx, 1
-                                        # kill: def $cl killed $cl killed $ecx
+                                        # kill: def $cl killed $cl killed $rcx
 	shl	ebx, cl
-	and	bl, r10b
-	xor	bl, r8b
-	mov	byte ptr [r12 + rdi], bl
+	mov	r14, r15
+	movzx	ecx, byte ptr [r15 + rdi]
+	xor	r11b, cl
+	and	bl, r11b
+	xor	bl, cl
+	mov	byte ptr [r15 + rdi], bl
 	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB0_70
-# %bb.71:
-	add	r12, 1
-.LBB0_72:
-	sar	r15, 5
-	cmp	r14, 32
-	jl	.LBB0_76
-# %bb.73:
-	mov	qword ptr [rsp + 24], r14       # 8-byte Spill
-	mov	qword ptr [rsp + 56], r15       # 8-byte Spill
-	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
+	add	r10, -2
+	cmp	r8, rax
+	jne	.LBB0_86
+# %bb.87:
+	sub	rsi, r10
+	sub	rdx, r10
+.LBB0_88:
+	sub	r12, r8
+	je	.LBB0_153
+# %bb.89:
+	add	r15, 1
+.LBB0_90:
+	lea	rax, [r12 + 31]
+	test	r12, r12
+	cmovns	rax, r12
+	sar	rax, 5
+	cmp	r12, 32
+	jl	.LBB0_94
+# %bb.91:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	mov	qword ptr [rsp + 64], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
 	.p2align	4, 0x90
-.LBB0_74:                               # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 48], r12       # 8-byte Spill
+.LBB0_92:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
 	movzx	eax, word ptr [rsi]
 	movzx	ecx, word ptr [rsi + 2]
 	cmp	ax, word ptr [rdx]
-	sete	byte ptr [rsp + 4]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
 	cmp	cx, word ptr [rdx + 2]
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 4]
 	cmp	ax, word ptr [rdx + 4]
-	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 30]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 6]
 	cmp	ax, word ptr [rdx + 6]
-	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 31]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 8]
 	cmp	ax, word ptr [rdx + 8]
-	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 10]
 	cmp	ax, word ptr [rdx + 10]
-	sete	byte ptr [rsp + 3]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 12]
 	cmp	ax, word ptr [rdx + 12]
-	sete	byte ptr [rsp + 5]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 14]
 	cmp	ax, word ptr [rdx + 14]
 	sete	r13b
 	movzx	eax, word ptr [rsi + 16]
 	cmp	ax, word ptr [rdx + 16]
-	sete	byte ptr [rsp + 10]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 18]
 	cmp	ax, word ptr [rdx + 18]
-	sete	r8b
+	sete	dil
 	movzx	eax, word ptr [rsi + 20]
 	cmp	ax, word ptr [rdx + 20]
 	sete	r11b
@@ -1324,21 +1412,21 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	sete	r15b
 	movzx	eax, word ptr [rsi + 24]
 	cmp	ax, word ptr [rdx + 24]
-	sete	byte ptr [rsp + 6]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 26]
 	cmp	ax, word ptr [rdx + 26]
-	sete	byte ptr [rsp + 7]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 28]
 	cmp	ax, word ptr [rdx + 28]
-	sete	byte ptr [rsp + 8]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 30]
 	cmp	ax, word ptr [rdx + 30]
-	sete	dil
+	sete	r8b
 	movzx	eax, word ptr [rsi + 32]
 	movzx	ebx, word ptr [rsi + 34]
 	cmp	ax, word ptr [rdx + 32]
 	movzx	eax, word ptr [rsi + 36]
-	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
 	cmp	bx, word ptr [rdx + 34]
 	movzx	ebx, word ptr [rsi + 38]
 	sete	r10b
@@ -1349,144 +1437,144 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	movzx	ebx, word ptr [rsi + 42]
 	sete	r12b
 	cmp	ax, word ptr [rdx + 40]
-	sete	byte ptr [rsp + 9]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
 	cmp	bx, word ptr [rdx + 42]
 	movzx	eax, word ptr [rsi + 44]
-	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 44]
 	movzx	eax, word ptr [rsi + 46]
-	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 24]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 46]
 	movzx	eax, word ptr [rsi + 48]
 	sete	r9b
 	cmp	ax, word ptr [rdx + 48]
 	movzx	eax, word ptr [rsi + 50]
-	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 29]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 50]
 	movzx	eax, word ptr [rsi + 52]
-	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 52]
 	movzx	eax, word ptr [rsi + 54]
-	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 54]
 	movzx	eax, word ptr [rsi + 56]
-	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 25]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 56]
 	movzx	eax, word ptr [rsi + 58]
-	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 26]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 58]
 	movzx	eax, word ptr [rsi + 60]
-	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 60]
 	movzx	eax, word ptr [rsi + 62]
-	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 27]             # 1-byte Folded Spill
 	add	rsi, 64
 	cmp	ax, word ptr [rdx + 62]
 	sete	cl
-	movzx	eax, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 4]          # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 13]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 5]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
 	shl	al, 6
 	shl	r13b, 7
 	or	r13b, al
-	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 30]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
-	add	r8b, r8b
-	add	r8b, byte ptr [rsp + 10]        # 1-byte Folded Reload
-	movzx	ebx, byte ptr [rsp + 22]        # 1-byte Folded Reload
+	add	dil, dil
+	add	dil, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 31]        # 1-byte Folded Reload
 	shl	bl, 3
 	or	bl, al
 	mov	eax, ebx
 	shl	r11b, 2
-	or	r11b, r8b
-	movzx	ebx, byte ptr [rsp + 23]        # 1-byte Folded Reload
+	or	r11b, dil
+	movzx	ebx, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	bl, 4
 	or	bl, al
-	mov	r8d, ebx
+	mov	edi, ebx
 	shl	r15b, 3
 	or	r15b, r11b
-	movzx	ebx, byte ptr [rsp + 3]         # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 12]        # 1-byte Folded Reload
 	shl	bl, 5
-	or	bl, r8b
-	movzx	eax, byte ptr [rsp + 6]         # 1-byte Folded Reload
+	or	bl, dil
+	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r15b
-	mov	r8d, eax
-	movzx	eax, byte ptr [rsp + 7]         # 1-byte Folded Reload
+	mov	edi, eax
+	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
 	shl	al, 5
-	or	al, r8b
-	movzx	r8d, byte ptr [rsp + 8]         # 1-byte Folded Reload
-	shl	r8b, 6
-	shl	dil, 7
-	or	dil, r8b
+	or	al, dil
+	movzx	edi, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	shl	dil, 6
+	shl	r8b, 7
+	or	r8b, dil
 	or	r13b, bl
-	or	dil, al
+	or	r8b, al
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 11]       # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 20]       # 1-byte Folded Reload
 	shl	r14b, 2
 	or	r14b, r10b
 	shl	r12b, 3
 	or	r12b, r14b
-	movzx	eax, byte ptr [rsp + 9]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r12b
 	mov	ebx, eax
-	mov	r12, qword ptr [rsp + 48]       # 8-byte Reload
-	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	mov	byte ptr [r12], r13b
-	movzx	ebx, byte ptr [rsp + 13]        # 1-byte Folded Reload
+	mov	rdi, qword ptr [rsp + 32]       # 8-byte Reload
+	mov	byte ptr [rdi], r13b
+	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
+	movzx	ebx, byte ptr [rsp + 24]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r9b, 7
 	or	r9b, bl
-	mov	byte ptr [r12 + 1], dil
+	mov	byte ptr [r15 + 1], r8b
 	or	r9b, al
-	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 22]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 20]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 29]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 23]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 25]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 26]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	movzx	ebx, byte ptr [rsp + 18]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 27]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	cl, 7
 	or	cl, bl
 	or	cl, al
-	mov	byte ptr [r12 + 2], r9b
-	mov	byte ptr [r12 + 3], cl
+	mov	byte ptr [r15 + 2], r9b
+	mov	byte ptr [r15 + 3], cl
 	add	rdx, 64
-	add	r12, 4
-	add	qword ptr [rsp + 32], -1        # 8-byte Folded Spill
-	jne	.LBB0_74
-# %bb.75:
-	mov	r14, qword ptr [rsp + 24]       # 8-byte Reload
-	mov	r15, qword ptr [rsp + 56]       # 8-byte Reload
-.LBB0_76:
-	shl	r15, 5
-	cmp	r15, r14
-	jge	.LBB0_123
-# %bb.77:
-	sub	r14, r15
+	add	r15, 4
+	add	qword ptr [rsp + 48], -1        # 8-byte Folded Spill
+	jne	.LBB0_92
+# %bb.93:
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+	mov	rax, qword ptr [rsp + 64]       # 8-byte Reload
+.LBB0_94:
+	shl	rax, 5
+	sub	r12, rax
+	jle	.LBB0_153
+# %bb.95:
 	xor	ecx, ecx
 	.p2align	4, 0x90
-.LBB0_78:                               # =>This Inner Loop Header: Depth=1
+.LBB0_96:                               # =>This Inner Loop Header: Depth=1
 	lea	r8, [rcx + 1]
 	movzx	edi, word ptr [rsi + 2*rcx]
 	cmp	di, word ptr [rdx + 2*rcx]
@@ -1494,7 +1582,8 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	neg	bl
 	mov	rdi, rcx
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r12 + rdi]
+	mov	r10, r15
+	movzx	r9d, byte ptr [r15 + rdi]
 	xor	bl, r9b
 	and	cl, 7
 	mov	al, 1
@@ -1502,92 +1591,108 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	shl	al, cl
 	and	al, bl
 	xor	al, r9b
-	mov	byte ptr [r12 + rdi], al
+	mov	byte ptr [r15 + rdi], al
 	mov	rcx, r8
-	cmp	r14, r8
-	jne	.LBB0_78
-	jmp	.LBB0_123
-.LBB0_79:
-	lea	r15, [r14 + 31]
-	test	r14, r14
-	cmovns	r15, r14
-	lea	ecx, [rax + 7]
-	test	eax, eax
-	cmovns	ecx, eax
-	and	ecx, -8
-	sub	eax, ecx
-	je	.LBB0_83
-# %bb.80:
-	cdqe
+	cmp	r12, r8
+	jne	.LBB0_96
+	jmp	.LBB0_153
+.LBB0_97:
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB0_104
+# %bb.98:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r12
+	cmovg	r8, r12
+	test	r8, r8
+	jle	.LBB0_102
+# %bb.99:
+	movsxd	r9, r9d
+	xor	r10d, r10d
+	xor	eax, eax
 	.p2align	4, 0x90
-.LBB0_81:                               # =>This Inner Loop Header: Depth=1
-	movzx	ecx, word ptr [rsi]
-	add	rsi, 2
-	cmp	cx, word ptr [rdx]
-	lea	rdx, [rdx + 2]
-	sete	r10b
-	neg	r10b
-	lea	rdi, [rax + 7]
-	test	rax, rax
-	cmovns	rdi, rax
+.LBB0_100:                              # =>This Inner Loop Header: Depth=1
+	lea	rcx, [r9 + rax]
+	movzx	ebx, word ptr [rsi + 2*rax]
+	cmp	bx, word ptr [rdx + 2*rax]
+	sete	r11b
+	neg	r11b
+	lea	rdi, [r9 + rax]
+	add	rdi, 7
+	test	rcx, rcx
+	cmovns	rdi, rcx
 	sar	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
-	xor	r10b, r8b
-	lea	r9d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r9d
+	lea	ebx, [8*rdi]
+	sub	ecx, ebx
 	mov	ebx, 1
-                                        # kill: def $cl killed $cl killed $ecx
+                                        # kill: def $cl killed $cl killed $rcx
 	shl	ebx, cl
-	and	bl, r10b
-	xor	bl, r8b
-	mov	byte ptr [r12 + rdi], bl
+	mov	r14, r15
+	movzx	ecx, byte ptr [r15 + rdi]
+	xor	r11b, cl
+	and	bl, r11b
+	xor	bl, cl
+	mov	byte ptr [r15 + rdi], bl
 	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB0_81
-# %bb.82:
-	add	r12, 1
-.LBB0_83:
-	sar	r15, 5
-	cmp	r14, 32
-	jl	.LBB0_87
-# %bb.84:
-	mov	qword ptr [rsp + 24], r14       # 8-byte Spill
-	mov	qword ptr [rsp + 56], r15       # 8-byte Spill
-	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
+	add	r10, -2
+	cmp	r8, rax
+	jne	.LBB0_100
+# %bb.101:
+	sub	rsi, r10
+	sub	rdx, r10
+.LBB0_102:
+	sub	r12, r8
+	je	.LBB0_153
+# %bb.103:
+	add	r15, 1
+.LBB0_104:
+	lea	rax, [r12 + 31]
+	test	r12, r12
+	cmovns	rax, r12
+	sar	rax, 5
+	cmp	r12, 32
+	jl	.LBB0_108
+# %bb.105:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	mov	qword ptr [rsp + 64], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
 	.p2align	4, 0x90
-.LBB0_85:                               # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 48], r12       # 8-byte Spill
+.LBB0_106:                              # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
 	movzx	eax, word ptr [rsi]
 	movzx	ecx, word ptr [rsi + 2]
 	cmp	ax, word ptr [rdx]
-	sete	byte ptr [rsp + 4]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
 	cmp	cx, word ptr [rdx + 2]
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 4]
 	cmp	ax, word ptr [rdx + 4]
-	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 30]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 6]
 	cmp	ax, word ptr [rdx + 6]
-	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 31]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 8]
 	cmp	ax, word ptr [rdx + 8]
-	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 10]
 	cmp	ax, word ptr [rdx + 10]
-	sete	byte ptr [rsp + 3]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 12]
 	cmp	ax, word ptr [rdx + 12]
-	sete	byte ptr [rsp + 5]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 14]
 	cmp	ax, word ptr [rdx + 14]
 	sete	r13b
 	movzx	eax, word ptr [rsi + 16]
 	cmp	ax, word ptr [rdx + 16]
-	sete	byte ptr [rsp + 10]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 18]
 	cmp	ax, word ptr [rdx + 18]
-	sete	r8b
+	sete	dil
 	movzx	eax, word ptr [rsi + 20]
 	cmp	ax, word ptr [rdx + 20]
 	sete	r11b
@@ -1596,21 +1701,21 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	sete	r15b
 	movzx	eax, word ptr [rsi + 24]
 	cmp	ax, word ptr [rdx + 24]
-	sete	byte ptr [rsp + 6]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 26]
 	cmp	ax, word ptr [rdx + 26]
-	sete	byte ptr [rsp + 7]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 28]
 	cmp	ax, word ptr [rdx + 28]
-	sete	byte ptr [rsp + 8]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
 	movzx	eax, word ptr [rsi + 30]
 	cmp	ax, word ptr [rdx + 30]
-	sete	dil
+	sete	r8b
 	movzx	eax, word ptr [rsi + 32]
 	movzx	ebx, word ptr [rsi + 34]
 	cmp	ax, word ptr [rdx + 32]
 	movzx	eax, word ptr [rsi + 36]
-	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
 	cmp	bx, word ptr [rdx + 34]
 	movzx	ebx, word ptr [rsi + 38]
 	sete	r10b
@@ -1621,144 +1726,144 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	movzx	ebx, word ptr [rsi + 42]
 	sete	r12b
 	cmp	ax, word ptr [rdx + 40]
-	sete	byte ptr [rsp + 9]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
 	cmp	bx, word ptr [rdx + 42]
 	movzx	eax, word ptr [rsi + 44]
-	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 44]
 	movzx	eax, word ptr [rsi + 46]
-	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 24]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 46]
 	movzx	eax, word ptr [rsi + 48]
 	sete	r9b
 	cmp	ax, word ptr [rdx + 48]
 	movzx	eax, word ptr [rsi + 50]
-	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 29]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 50]
 	movzx	eax, word ptr [rsi + 52]
-	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 52]
 	movzx	eax, word ptr [rsi + 54]
-	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 54]
 	movzx	eax, word ptr [rsi + 56]
-	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 25]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 56]
 	movzx	eax, word ptr [rsi + 58]
-	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 26]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 58]
 	movzx	eax, word ptr [rsi + 60]
-	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	ax, word ptr [rdx + 60]
 	movzx	eax, word ptr [rsi + 62]
-	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 27]             # 1-byte Folded Spill
 	add	rsi, 64
 	cmp	ax, word ptr [rdx + 62]
 	sete	cl
-	movzx	eax, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 4]          # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 13]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 5]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
 	shl	al, 6
 	shl	r13b, 7
 	or	r13b, al
-	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 30]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
-	add	r8b, r8b
-	add	r8b, byte ptr [rsp + 10]        # 1-byte Folded Reload
-	movzx	ebx, byte ptr [rsp + 22]        # 1-byte Folded Reload
+	add	dil, dil
+	add	dil, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 31]        # 1-byte Folded Reload
 	shl	bl, 3
 	or	bl, al
 	mov	eax, ebx
 	shl	r11b, 2
-	or	r11b, r8b
-	movzx	ebx, byte ptr [rsp + 23]        # 1-byte Folded Reload
+	or	r11b, dil
+	movzx	ebx, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	bl, 4
 	or	bl, al
-	mov	r8d, ebx
+	mov	edi, ebx
 	shl	r15b, 3
 	or	r15b, r11b
-	movzx	ebx, byte ptr [rsp + 3]         # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 12]        # 1-byte Folded Reload
 	shl	bl, 5
-	or	bl, r8b
-	movzx	eax, byte ptr [rsp + 6]         # 1-byte Folded Reload
+	or	bl, dil
+	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r15b
-	mov	r8d, eax
-	movzx	eax, byte ptr [rsp + 7]         # 1-byte Folded Reload
+	mov	edi, eax
+	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
 	shl	al, 5
-	or	al, r8b
-	movzx	r8d, byte ptr [rsp + 8]         # 1-byte Folded Reload
-	shl	r8b, 6
-	shl	dil, 7
-	or	dil, r8b
+	or	al, dil
+	movzx	edi, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	shl	dil, 6
+	shl	r8b, 7
+	or	r8b, dil
 	or	r13b, bl
-	or	dil, al
+	or	r8b, al
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 11]       # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 20]       # 1-byte Folded Reload
 	shl	r14b, 2
 	or	r14b, r10b
 	shl	r12b, 3
 	or	r12b, r14b
-	movzx	eax, byte ptr [rsp + 9]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r12b
 	mov	ebx, eax
-	mov	r12, qword ptr [rsp + 48]       # 8-byte Reload
-	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	mov	byte ptr [r12], r13b
-	movzx	ebx, byte ptr [rsp + 13]        # 1-byte Folded Reload
+	mov	rdi, qword ptr [rsp + 32]       # 8-byte Reload
+	mov	byte ptr [rdi], r13b
+	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
+	movzx	ebx, byte ptr [rsp + 24]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r9b, 7
 	or	r9b, bl
-	mov	byte ptr [r12 + 1], dil
+	mov	byte ptr [r15 + 1], r8b
 	or	r9b, al
-	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 22]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 20]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 29]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 23]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 25]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 26]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	movzx	ebx, byte ptr [rsp + 18]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 27]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	cl, 7
 	or	cl, bl
 	or	cl, al
-	mov	byte ptr [r12 + 2], r9b
-	mov	byte ptr [r12 + 3], cl
+	mov	byte ptr [r15 + 2], r9b
+	mov	byte ptr [r15 + 3], cl
 	add	rdx, 64
-	add	r12, 4
-	add	qword ptr [rsp + 32], -1        # 8-byte Folded Spill
-	jne	.LBB0_85
-# %bb.86:
-	mov	r14, qword ptr [rsp + 24]       # 8-byte Reload
-	mov	r15, qword ptr [rsp + 56]       # 8-byte Reload
-.LBB0_87:
-	shl	r15, 5
-	cmp	r15, r14
-	jge	.LBB0_123
-# %bb.88:
-	sub	r14, r15
+	add	r15, 4
+	add	qword ptr [rsp + 48], -1        # 8-byte Folded Spill
+	jne	.LBB0_106
+# %bb.107:
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+	mov	rax, qword ptr [rsp + 64]       # 8-byte Reload
+.LBB0_108:
+	shl	rax, 5
+	sub	r12, rax
+	jle	.LBB0_153
+# %bb.109:
 	xor	ecx, ecx
 	.p2align	4, 0x90
-.LBB0_89:                               # =>This Inner Loop Header: Depth=1
+.LBB0_110:                              # =>This Inner Loop Header: Depth=1
 	lea	r8, [rcx + 1]
 	movzx	edi, word ptr [rsi + 2*rcx]
 	cmp	di, word ptr [rdx + 2*rcx]
@@ -1766,7 +1871,8 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	neg	bl
 	mov	rdi, rcx
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r12 + rdi]
+	mov	r10, r15
+	movzx	r9d, byte ptr [r15 + rdi]
 	xor	bl, r9b
 	and	cl, 7
 	mov	al, 1
@@ -1774,92 +1880,108 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	shl	al, cl
 	and	al, bl
 	xor	al, r9b
-	mov	byte ptr [r12 + rdi], al
+	mov	byte ptr [r15 + rdi], al
 	mov	rcx, r8
-	cmp	r14, r8
-	jne	.LBB0_89
-	jmp	.LBB0_123
-.LBB0_101:
-	lea	r15, [r14 + 31]
-	test	r14, r14
-	cmovns	r15, r14
-	lea	ecx, [rax + 7]
-	test	eax, eax
-	cmovns	ecx, eax
-	and	ecx, -8
-	sub	eax, ecx
-	je	.LBB0_105
-# %bb.102:
-	cdqe
+	cmp	r12, r8
+	jne	.LBB0_110
+	jmp	.LBB0_153
+.LBB0_125:
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB0_132
+# %bb.126:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r12
+	cmovg	r8, r12
+	test	r8, r8
+	jle	.LBB0_130
+# %bb.127:
+	movsxd	r9, r9d
+	xor	r10d, r10d
+	xor	eax, eax
 	.p2align	4, 0x90
-.LBB0_103:                              # =>This Inner Loop Header: Depth=1
-	mov	rcx, qword ptr [rsi]
-	add	rsi, 8
-	cmp	rcx, qword ptr [rdx]
-	lea	rdx, [rdx + 8]
-	sete	r10b
-	neg	r10b
-	lea	rdi, [rax + 7]
-	test	rax, rax
-	cmovns	rdi, rax
+.LBB0_128:                              # =>This Inner Loop Header: Depth=1
+	lea	rcx, [r9 + rax]
+	mov	rbx, qword ptr [rsi + 8*rax]
+	cmp	rbx, qword ptr [rdx + 8*rax]
+	sete	r11b
+	neg	r11b
+	lea	rdi, [r9 + rax]
+	add	rdi, 7
+	test	rcx, rcx
+	cmovns	rdi, rcx
 	sar	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
-	xor	r10b, r8b
-	lea	r9d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r9d
+	lea	ebx, [8*rdi]
+	sub	ecx, ebx
 	mov	ebx, 1
-                                        # kill: def $cl killed $cl killed $ecx
+                                        # kill: def $cl killed $cl killed $rcx
 	shl	ebx, cl
-	and	bl, r10b
-	xor	bl, r8b
-	mov	byte ptr [r12 + rdi], bl
+	mov	r14, r15
+	movzx	ecx, byte ptr [r15 + rdi]
+	xor	r11b, cl
+	and	bl, r11b
+	xor	bl, cl
+	mov	byte ptr [r15 + rdi], bl
 	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB0_103
-# %bb.104:
-	add	r12, 1
-.LBB0_105:
-	sar	r15, 5
-	cmp	r14, 32
-	jl	.LBB0_109
-# %bb.106:
-	mov	qword ptr [rsp + 24], r14       # 8-byte Spill
-	mov	qword ptr [rsp + 56], r15       # 8-byte Spill
-	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
+	add	r10, -8
+	cmp	r8, rax
+	jne	.LBB0_128
+# %bb.129:
+	sub	rsi, r10
+	sub	rdx, r10
+.LBB0_130:
+	sub	r12, r8
+	je	.LBB0_153
+# %bb.131:
+	add	r15, 1
+.LBB0_132:
+	lea	rax, [r12 + 31]
+	test	r12, r12
+	cmovns	rax, r12
+	sar	rax, 5
+	cmp	r12, 32
+	jl	.LBB0_136
+# %bb.133:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	mov	qword ptr [rsp + 64], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
 	.p2align	4, 0x90
-.LBB0_107:                              # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 48], r12       # 8-byte Spill
+.LBB0_134:                              # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
 	mov	rax, qword ptr [rsi]
 	mov	rcx, qword ptr [rsi + 8]
 	cmp	rax, qword ptr [rdx]
-	sete	byte ptr [rsp + 4]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
 	cmp	rcx, qword ptr [rdx + 8]
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 16]
 	cmp	rax, qword ptr [rdx + 16]
-	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 30]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 24]
 	cmp	rax, qword ptr [rdx + 24]
-	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 31]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 32]
 	cmp	rax, qword ptr [rdx + 32]
-	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 40]
 	cmp	rax, qword ptr [rdx + 40]
-	sete	byte ptr [rsp + 3]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 48]
 	cmp	rax, qword ptr [rdx + 48]
-	sete	byte ptr [rsp + 5]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 56]
 	cmp	rax, qword ptr [rdx + 56]
 	sete	r13b
 	mov	rax, qword ptr [rsi + 64]
 	cmp	rax, qword ptr [rdx + 64]
-	sete	byte ptr [rsp + 10]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 72]
 	cmp	rax, qword ptr [rdx + 72]
-	sete	r8b
+	sete	dil
 	mov	rax, qword ptr [rsi + 80]
 	cmp	rax, qword ptr [rdx + 80]
 	sete	r11b
@@ -1868,21 +1990,21 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	sete	r15b
 	mov	rax, qword ptr [rsi + 96]
 	cmp	rax, qword ptr [rdx + 96]
-	sete	byte ptr [rsp + 6]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 104]
 	cmp	rax, qword ptr [rdx + 104]
-	sete	byte ptr [rsp + 7]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 112]
 	cmp	rax, qword ptr [rdx + 112]
-	sete	byte ptr [rsp + 8]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
 	mov	rax, qword ptr [rsi + 120]
 	cmp	rax, qword ptr [rdx + 120]
-	sete	dil
+	sete	r8b
 	mov	rax, qword ptr [rsi + 128]
 	mov	rbx, qword ptr [rsi + 136]
 	cmp	rax, qword ptr [rdx + 128]
 	mov	rax, qword ptr [rsi + 144]
-	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
 	cmp	rbx, qword ptr [rdx + 136]
 	mov	rbx, qword ptr [rsi + 152]
 	sete	r10b
@@ -1893,144 +2015,144 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	mov	rbx, qword ptr [rsi + 168]
 	sete	r12b
 	cmp	rax, qword ptr [rdx + 160]
-	sete	byte ptr [rsp + 9]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
 	cmp	rbx, qword ptr [rdx + 168]
 	mov	rax, qword ptr [rsi + 176]
-	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 176]
 	mov	rax, qword ptr [rsi + 184]
-	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 24]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 184]
 	mov	rax, qword ptr [rsi + 192]
 	sete	r9b
 	cmp	rax, qword ptr [rdx + 192]
 	mov	rax, qword ptr [rsi + 200]
-	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 29]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 200]
 	mov	rax, qword ptr [rsi + 208]
-	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 208]
 	mov	rax, qword ptr [rsi + 216]
-	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 216]
 	mov	rax, qword ptr [rsi + 224]
-	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 25]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 224]
 	mov	rax, qword ptr [rsi + 232]
-	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 26]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 232]
 	mov	rax, qword ptr [rsi + 240]
-	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	rax, qword ptr [rdx + 240]
 	mov	rax, qword ptr [rsi + 248]
-	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 27]             # 1-byte Folded Spill
 	add	rsi, 256
 	cmp	rax, qword ptr [rdx + 248]
 	sete	cl
-	movzx	eax, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 4]          # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 13]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 5]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
 	shl	al, 6
 	shl	r13b, 7
 	or	r13b, al
-	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 30]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
-	add	r8b, r8b
-	add	r8b, byte ptr [rsp + 10]        # 1-byte Folded Reload
-	movzx	ebx, byte ptr [rsp + 22]        # 1-byte Folded Reload
+	add	dil, dil
+	add	dil, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 31]        # 1-byte Folded Reload
 	shl	bl, 3
 	or	bl, al
 	mov	eax, ebx
 	shl	r11b, 2
-	or	r11b, r8b
-	movzx	ebx, byte ptr [rsp + 23]        # 1-byte Folded Reload
+	or	r11b, dil
+	movzx	ebx, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	bl, 4
 	or	bl, al
-	mov	r8d, ebx
+	mov	edi, ebx
 	shl	r15b, 3
 	or	r15b, r11b
-	movzx	ebx, byte ptr [rsp + 3]         # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 12]        # 1-byte Folded Reload
 	shl	bl, 5
-	or	bl, r8b
-	movzx	eax, byte ptr [rsp + 6]         # 1-byte Folded Reload
+	or	bl, dil
+	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r15b
-	mov	r8d, eax
-	movzx	eax, byte ptr [rsp + 7]         # 1-byte Folded Reload
+	mov	edi, eax
+	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
 	shl	al, 5
-	or	al, r8b
-	movzx	r8d, byte ptr [rsp + 8]         # 1-byte Folded Reload
-	shl	r8b, 6
-	shl	dil, 7
-	or	dil, r8b
+	or	al, dil
+	movzx	edi, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	shl	dil, 6
+	shl	r8b, 7
+	or	r8b, dil
 	or	r13b, bl
-	or	dil, al
+	or	r8b, al
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 11]       # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 20]       # 1-byte Folded Reload
 	shl	r14b, 2
 	or	r14b, r10b
 	shl	r12b, 3
 	or	r12b, r14b
-	movzx	eax, byte ptr [rsp + 9]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r12b
 	mov	ebx, eax
-	mov	r12, qword ptr [rsp + 48]       # 8-byte Reload
-	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	mov	byte ptr [r12], r13b
-	movzx	ebx, byte ptr [rsp + 13]        # 1-byte Folded Reload
+	mov	rdi, qword ptr [rsp + 32]       # 8-byte Reload
+	mov	byte ptr [rdi], r13b
+	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
+	movzx	ebx, byte ptr [rsp + 24]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r9b, 7
 	or	r9b, bl
-	mov	byte ptr [r12 + 1], dil
+	mov	byte ptr [r15 + 1], r8b
 	or	r9b, al
-	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 22]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 20]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 29]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 23]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 25]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 26]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	movzx	ebx, byte ptr [rsp + 18]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 27]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	cl, 7
 	or	cl, bl
 	or	cl, al
-	mov	byte ptr [r12 + 2], r9b
-	mov	byte ptr [r12 + 3], cl
+	mov	byte ptr [r15 + 2], r9b
+	mov	byte ptr [r15 + 3], cl
 	add	rdx, 256
-	add	r12, 4
-	add	qword ptr [rsp + 32], -1        # 8-byte Folded Spill
-	jne	.LBB0_107
-# %bb.108:
-	mov	r14, qword ptr [rsp + 24]       # 8-byte Reload
-	mov	r15, qword ptr [rsp + 56]       # 8-byte Reload
-.LBB0_109:
-	shl	r15, 5
-	cmp	r15, r14
-	jge	.LBB0_123
-# %bb.110:
-	sub	r14, r15
+	add	r15, 4
+	add	qword ptr [rsp + 48], -1        # 8-byte Folded Spill
+	jne	.LBB0_134
+# %bb.135:
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+	mov	rax, qword ptr [rsp + 64]       # 8-byte Reload
+.LBB0_136:
+	shl	rax, 5
+	sub	r12, rax
+	jle	.LBB0_153
+# %bb.137:
 	xor	ecx, ecx
 	.p2align	4, 0x90
-.LBB0_111:                              # =>This Inner Loop Header: Depth=1
+.LBB0_138:                              # =>This Inner Loop Header: Depth=1
 	lea	r8, [rcx + 1]
 	mov	rdi, qword ptr [rsi + 8*rcx]
 	cmp	rdi, qword ptr [rdx + 8*rcx]
@@ -2038,7 +2160,8 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	neg	bl
 	mov	rdi, rcx
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r12 + rdi]
+	mov	r10, r15
+	movzx	r9d, byte ptr [r15 + rdi]
 	xor	bl, r9b
 	and	cl, 7
 	mov	al, 1
@@ -2046,94 +2169,110 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	shl	al, cl
 	and	al, bl
 	xor	al, r9b
-	mov	byte ptr [r12 + rdi], al
+	mov	byte ptr [r15 + rdi], al
 	mov	rcx, r8
-	cmp	r14, r8
-	jne	.LBB0_111
-	jmp	.LBB0_123
-.LBB0_112:
-	lea	r15, [r14 + 31]
-	test	r14, r14
-	cmovns	r15, r14
-	lea	ecx, [rax + 7]
-	test	eax, eax
-	cmovns	ecx, eax
-	and	ecx, -8
-	sub	eax, ecx
-	je	.LBB0_116
-# %bb.113:
-	movsxd	r10, eax
+	cmp	r12, r8
+	jne	.LBB0_138
+	jmp	.LBB0_153
+.LBB0_139:
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB0_146
+# %bb.140:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r12
+	cmovg	r8, r12
+	test	r8, r8
+	jle	.LBB0_144
+# %bb.141:
+	movsxd	r9, r9d
+	xor	r11d, r11d
+	xor	r14d, r14d
 	.p2align	4, 0x90
-.LBB0_114:                              # =>This Inner Loop Header: Depth=1
-	vmovss	xmm0, dword ptr [rsi]           # xmm0 = mem[0],zero,zero,zero
-	add	rsi, 4
-	vucomiss	xmm0, dword ptr [rdx]
-	lea	rdx, [rdx + 4]
-	setnp	cl
+.LBB0_142:                              # =>This Inner Loop Header: Depth=1
+	lea	rcx, [r9 + r14]
+	vmovss	xmm0, dword ptr [rsi + 4*r14]   # xmm0 = mem[0],zero,zero,zero
+	vucomiss	xmm0, dword ptr [rdx + 4*r14]
+	setnp	r10b
 	sete	bl
-	and	bl, cl
+	and	bl, r10b
 	neg	bl
-	lea	rdi, [r10 + 7]
-	test	r10, r10
-	cmovns	rdi, r10
+	lea	rdi, [r9 + r14]
+	add	rdi, 7
+	test	rcx, rcx
+	cmovns	rdi, rcx
 	sar	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
-	xor	bl, r8b
-	lea	r9d, [8*rdi]
-	mov	ecx, r10d
-	sub	ecx, r9d
+	lea	eax, [8*rdi]
+	sub	ecx, eax
 	mov	eax, 1
-                                        # kill: def $cl killed $cl killed $ecx
+                                        # kill: def $cl killed $cl killed $rcx
 	shl	eax, cl
+	mov	r10, r15
+	movzx	ecx, byte ptr [r15 + rdi]
+	xor	bl, cl
 	and	al, bl
-	xor	al, r8b
-	mov	byte ptr [r12 + rdi], al
-	add	r10, 1
-	cmp	r10, 8
-	jne	.LBB0_114
-# %bb.115:
-	add	r12, 1
-.LBB0_116:
-	sar	r15, 5
-	cmp	r14, 32
-	jl	.LBB0_120
-# %bb.117:
-	mov	qword ptr [rsp + 24], r14       # 8-byte Spill
-	mov	qword ptr [rsp + 64], r15       # 8-byte Spill
-	mov	qword ptr [rsp + 56], r15       # 8-byte Spill
+	xor	al, cl
+	mov	byte ptr [r15 + rdi], al
+	add	r14, 1
+	add	r11, -4
+	cmp	r8, r14
+	jne	.LBB0_142
+# %bb.143:
+	sub	rsi, r11
+	sub	rdx, r11
+.LBB0_144:
+	sub	r12, r8
+	je	.LBB0_153
+# %bb.145:
+	add	r15, 1
+.LBB0_146:
+	lea	rax, [r12 + 31]
+	test	r12, r12
+	cmovns	rax, r12
+	sar	rax, 5
+	cmp	r12, 32
+	jl	.LBB0_150
+# %bb.147:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	mov	qword ptr [rsp + 64], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
 	.p2align	4, 0x90
-.LBB0_118:                              # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 48], r12       # 8-byte Spill
+.LBB0_148:                              # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
 	vmovss	xmm0, dword ptr [rsi]           # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx]
 	vmovss	xmm0, dword ptr [rsi + 4]       # xmm0 = mem[0],zero,zero,zero
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 21], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 29], cl         # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rdx + 4]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 13], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 22], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 8]       # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 8]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 20], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 28], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 12]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 12]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 23], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 31], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 16]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 16]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 22], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 30], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 20]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 20]
 	setnp	al
@@ -2149,13 +2288,13 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 3], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 12], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 32]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 32]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 19], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 27], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 36]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 36]
 	setnp	al
@@ -2166,78 +2305,78 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 18], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 26], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 44]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 44]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 17], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 25], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 48]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 48]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 16], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 11], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 52]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 52]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 15], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 24], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 56]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 56]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 12], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 21], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 60]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 60]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 11], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 20], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 64]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 64]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 14], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 23], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 68]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 68]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 10], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 19], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 72]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 72]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 9], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 18], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 76]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 76]
 	setnp	al
-	sete	r11b
-	and	r11b, al
+	sete	r15b
+	and	r15b, al
 	vmovss	xmm0, dword ptr [rsi + 80]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 80]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 8], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 17], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 84]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 84]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 7], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 16], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 88]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 88]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 5], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 14], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 92]      # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 92]
 	setnp	al
@@ -2248,35 +2387,34 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 6], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 15], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 100]     # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 100]
 	setnp	al
-	sete	cl
-	and	cl, al
-	mov	byte ptr [rsp + 32], cl         # 1-byte Spill
+	sete	r12b
+	and	r12b, al
 	vmovss	xmm0, dword ptr [rsi + 104]     # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 104]
 	setnp	al
-	sete	r15b
-	and	r15b, al
+	sete	r14b
+	and	r14b, al
 	vmovss	xmm0, dword ptr [rsi + 108]     # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 108]
 	setnp	al
-	sete	r14b
-	and	r14b, al
+	sete	r11b
+	and	r11b, al
 	vmovss	xmm0, dword ptr [rsi + 112]     # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 112]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 4], cl          # 1-byte Spill
+	mov	byte ptr [rsp + 13], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 116]     # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 116]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 40], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 56], cl         # 1-byte Spill
 	vmovss	xmm0, dword ptr [rsi + 120]     # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 120]
 	setnp	al
@@ -2288,110 +2426,108 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	setnp	al
 	sete	r8b
 	and	r8b, al
-	movzx	eax, byte ptr [rsp + 13]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 22]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 21]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 29]         # 1-byte Folded Reload
 	shl	dil, 5
 	shl	r13b, 6
 	or	r13b, dil
 	mov	edi, r13d
-	movzx	ecx, byte ptr [rsp + 20]        # 1-byte Folded Reload
+	movzx	ecx, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	cl, 2
 	or	cl, al
 	mov	eax, ebx
 	add	al, bl
-	add	al, byte ptr [rsp + 19]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 27]         # 1-byte Folded Reload
 	mov	r13d, eax
-	movzx	eax, byte ptr [rsp + 3]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
 	shl	al, 7
 	or	al, dil
-	mov	byte ptr [rsp + 3], al          # 1-byte Spill
-	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
+	mov	byte ptr [rsp + 12], al         # 1-byte Spill
+	movzx	eax, byte ptr [rsp + 26]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, r13b
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 23]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 31]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, cl
-	movzx	ebx, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 25]        # 1-byte Folded Reload
 	shl	bl, 3
 	or	bl, dil
-	movzx	r13d, byte ptr [rsp + 22]       # 1-byte Folded Reload
+	movzx	r13d, byte ptr [rsp + 30]       # 1-byte Folded Reload
 	shl	r13b, 4
 	or	r13b, al
-	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
-	mov	edi, eax
-	movzx	ebx, byte ptr [rsp + 15]        # 1-byte Folded Reload
+	mov	byte ptr [rsp + 11], al         # 1-byte Spill
+	movzx	ebx, byte ptr [rsp + 24]        # 1-byte Folded Reload
 	shl	bl, 5
-	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
 	shl	al, 6
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 11]        # 1-byte Folded Reload
-	shl	al, 7
-	or	al, bl
-	movzx	ebx, byte ptr [rsp + 10]        # 1-byte Folded Reload
+	movzx	edi, byte ptr [rsp + 20]        # 1-byte Folded Reload
+	shl	dil, 7
+	or	dil, al
+	movzx	ebx, byte ptr [rsp + 19]        # 1-byte Folded Reload
 	add	bl, bl
-	add	bl, byte ptr [rsp + 14]         # 1-byte Folded Reload
-	movzx	ecx, byte ptr [rsp + 9]         # 1-byte Folded Reload
+	add	bl, byte ptr [rsp + 23]         # 1-byte Folded Reload
+	movzx	ecx, byte ptr [rsp + 18]        # 1-byte Folded Reload
 	shl	cl, 2
 	or	cl, bl
-	shl	r11b, 3
-	or	r11b, cl
-	movzx	ebx, byte ptr [rsp + 8]         # 1-byte Folded Reload
+	shl	r15b, 3
+	or	r15b, cl
+	movzx	ebx, byte ptr [rsp + 17]        # 1-byte Folded Reload
 	shl	bl, 4
-	or	bl, r11b
-	mov	r12, qword ptr [rsp + 48]       # 8-byte Reload
-	movzx	r11d, byte ptr [rsp + 3]        # 1-byte Folded Reload
-	or	r11b, r13b
-	movzx	r13d, byte ptr [rsp + 7]        # 1-byte Folded Reload
+	or	bl, r15b
+	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
+	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	or	al, r13b
+	movzx	r13d, byte ptr [rsp + 16]       # 1-byte Folded Reload
 	shl	r13b, 5
-	movzx	ecx, byte ptr [rsp + 5]         # 1-byte Folded Reload
+	movzx	ecx, byte ptr [rsp + 14]        # 1-byte Folded Reload
 	shl	cl, 6
 	or	cl, r13b
-	or	al, dil
+	or	dil, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	r10b, 7
 	or	r10b, cl
 	or	r10b, bl
-	movzx	ecx, byte ptr [rsp + 32]        # 1-byte Folded Reload
-	add	cl, cl
-	add	cl, byte ptr [rsp + 6]          # 1-byte Folded Reload
-	shl	r15b, 2
-	or	r15b, cl
-	shl	r14b, 3
-	or	r14b, r15b
-	movzx	ecx, byte ptr [rsp + 4]         # 1-byte Folded Reload
+	add	r12b, r12b
+	add	r12b, byte ptr [rsp + 15]       # 1-byte Folded Reload
+	shl	r14b, 2
+	or	r14b, r12b
+	shl	r11b, 3
+	or	r11b, r14b
+	movzx	ecx, byte ptr [rsp + 13]        # 1-byte Folded Reload
 	shl	cl, 4
-	or	cl, r14b
-	mov	byte ptr [r12], r11b
-	movzx	ebx, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	or	cl, r11b
+	mov	byte ptr [r15], al
+	movzx	ebx, byte ptr [rsp + 56]        # 1-byte Folded Reload
 	shl	bl, 5
 	shl	r9b, 6
 	or	r9b, bl
-	mov	byte ptr [r12 + 1], al
+	mov	byte ptr [r15 + 1], dil
 	shl	r8b, 7
 	or	r8b, r9b
 	or	r8b, cl
-	mov	byte ptr [r12 + 2], r10b
-	mov	byte ptr [r12 + 3], r8b
+	mov	byte ptr [r15 + 2], r10b
+	mov	byte ptr [r15 + 3], r8b
 	add	rdx, 128
-	add	r12, 4
-	add	qword ptr [rsp + 56], -1        # 8-byte Folded Spill
-	jne	.LBB0_118
-# %bb.119:
-	mov	r14, qword ptr [rsp + 24]       # 8-byte Reload
-	mov	r15, qword ptr [rsp + 64]       # 8-byte Reload
-.LBB0_120:
-	shl	r15, 5
-	cmp	r15, r14
-	jge	.LBB0_123
-# %bb.121:
-	sub	r14, r15
+	add	r15, 4
+	add	qword ptr [rsp + 48], -1        # 8-byte Folded Spill
+	jne	.LBB0_148
+# %bb.149:
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+	mov	rax, qword ptr [rsp + 64]       # 8-byte Reload
+.LBB0_150:
+	shl	rax, 5
+	sub	r12, rax
+	jle	.LBB0_153
+# %bb.151:
 	xor	ecx, ecx
 	.p2align	4, 0x90
-.LBB0_122:                              # =>This Inner Loop Header: Depth=1
+.LBB0_152:                              # =>This Inner Loop Header: Depth=1
 	lea	r9, [rcx + 1]
 	vmovss	xmm0, dword ptr [rsi + 4*rcx]   # xmm0 = mem[0],zero,zero,zero
 	vucomiss	xmm0, dword ptr [rdx + 4*rcx]
@@ -2401,7 +2537,8 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	neg	al
 	mov	rdi, rcx
 	shr	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
+	mov	r10, r15
+	movzx	r8d, byte ptr [r15 + rdi]
 	xor	al, r8b
 	and	cl, 7
 	mov	bl, 1
@@ -2409,89 +2546,112 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	shl	bl, cl
 	and	bl, al
 	xor	bl, r8b
-	mov	byte ptr [r12 + rdi], bl
+	mov	byte ptr [r15 + rdi], bl
 	mov	rcx, r9
-	cmp	r14, r9
-	jne	.LBB0_122
-	jmp	.LBB0_123
-.LBB0_57:
-	lea	r15, [r14 + 31]
-	test	r14, r14
-	cmovns	r15, r14
-	lea	ecx, [rax + 7]
-	test	eax, eax
-	cmovns	ecx, eax
-	and	ecx, -8
-	sub	eax, ecx
-	je	.LBB0_61
-# %bb.58:
-	cdqe
-	.p2align	4, 0x90
-.LBB0_59:                               # =>This Inner Loop Header: Depth=1
-	movzx	ecx, byte ptr [rsi]
-	add	rsi, 1
-	cmp	cl, byte ptr [rdx]
-	lea	rdx, [rdx + 1]
-	sete	r10b
-	neg	r10b
-	lea	rdi, [rax + 7]
+	cmp	r12, r9
+	jne	.LBB0_152
+	jmp	.LBB0_153
+.LBB0_69:
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB0_76
+# %bb.70:
+	mov	eax, 8
+	sub	eax, r9d
+	cmp	rax, r12
+	cmovg	rax, r12
 	test	rax, rax
-	cmovns	rdi, rax
+	jle	.LBB0_74
+# %bb.71:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	movsxd	rbx, r9d
+	mov	qword ptr [rsp + 32], rax       # 8-byte Spill
+	mov	r9, rax
+	neg	r9
+	xor	r10d, r10d
+	xor	r11d, r11d
+	.p2align	4, 0x90
+.LBB0_72:                               # =>This Inner Loop Header: Depth=1
+	movzx	ecx, byte ptr [rsi + r11]
+	cmp	cl, byte ptr [rdx + r11]
+	sete	r12b
+	neg	r12b
+	lea	rdi, [rbx + 7]
+	test	rbx, rbx
+	cmovns	rdi, rbx
 	sar	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
-	xor	r10b, r8b
-	lea	r9d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r9d
-	mov	ebx, 1
+	movzx	r14d, byte ptr [r15 + rdi]
+	lea	r15d, [8*rdi]
+	mov	ecx, ebx
+	sub	ecx, r15d
+	mov	r8, r13
+	mov	eax, 1
                                         # kill: def $cl killed $cl killed $ecx
-	shl	ebx, cl
-	and	bl, r10b
-	xor	bl, r8b
-	mov	byte ptr [r12 + rdi], bl
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB0_59
-# %bb.60:
-	add	r12, 1
-.LBB0_61:
-	sar	r15, 5
-	cmp	r14, 32
-	jl	.LBB0_65
-# %bb.62:
-	mov	qword ptr [rsp + 24], r14       # 8-byte Spill
-	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
-	mov	qword ptr [rsp + 40], r15       # 8-byte Spill
+	shl	eax, cl
+	xor	r12b, r14b
+	and	al, r12b
+	xor	al, r14b
+	mov	r15, r13
+	mov	byte ptr [r13 + rdi], al
+	add	r11, 1
+	add	rbx, 1
+	add	r10, -1
+	cmp	r9, r10
+	jne	.LBB0_72
+# %bb.73:
+	sub	rsi, r10
+	sub	rdx, r10
+	mov	rax, qword ptr [rsp + 32]       # 8-byte Reload
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+.LBB0_74:
+	sub	r12, rax
+	je	.LBB0_153
+# %bb.75:
+	add	r15, 1
+.LBB0_76:
+	lea	rax, [r12 + 31]
+	test	r12, r12
+	cmovns	rax, r12
+	sar	rax, 5
+	cmp	r12, 32
+	jl	.LBB0_80
+# %bb.77:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 56], rax       # 8-byte Spill
 	.p2align	4, 0x90
-.LBB0_63:                               # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 48], r12       # 8-byte Spill
+.LBB0_78:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
 	movzx	eax, byte ptr [rsi]
 	movzx	ecx, byte ptr [rsi + 1]
 	cmp	al, byte ptr [rdx]
-	sete	byte ptr [rsp + 4]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
 	cmp	cl, byte ptr [rdx + 1]
 	sete	bl
 	movzx	eax, byte ptr [rsi + 2]
 	cmp	al, byte ptr [rdx + 2]
-	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 30]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 3]
 	cmp	al, byte ptr [rdx + 3]
-	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 31]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 4]
 	cmp	al, byte ptr [rdx + 4]
-	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 5]
 	cmp	al, byte ptr [rdx + 5]
-	sete	byte ptr [rsp + 3]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 6]
 	cmp	al, byte ptr [rdx + 6]
-	sete	byte ptr [rsp + 5]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 7]
 	cmp	al, byte ptr [rdx + 7]
-	sete	r15b
+	sete	r14b
 	movzx	eax, byte ptr [rsi + 8]
 	cmp	al, byte ptr [rdx + 8]
-	sete	byte ptr [rsp + 8]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 9]
 	cmp	al, byte ptr [rdx + 9]
 	sete	dil
@@ -2503,19 +2663,19 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	sete	r11b
 	movzx	eax, byte ptr [rsi + 12]
 	cmp	al, byte ptr [rdx + 12]
-	sete	r14b
+	sete	r15b
 	movzx	eax, byte ptr [rsi + 13]
 	cmp	al, byte ptr [rdx + 13]
-	sete	byte ptr [rsp + 6]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 14]
 	cmp	al, byte ptr [rdx + 14]
-	sete	byte ptr [rsp + 7]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 15]
 	cmp	al, byte ptr [rdx + 15]
 	sete	r8b
 	movzx	eax, byte ptr [rsi + 16]
 	cmp	al, byte ptr [rdx + 16]
-	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 17]
 	cmp	al, byte ptr [rdx + 17]
 	sete	r12b
@@ -2524,148 +2684,147 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	sete	r13b
 	movzx	eax, byte ptr [rsi + 19]
 	cmp	al, byte ptr [rdx + 19]
-	sete	byte ptr [rsp + 9]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 20]
 	cmp	al, byte ptr [rdx + 20]
-	sete	byte ptr [rsp + 10]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 21]
 	cmp	al, byte ptr [rdx + 21]
-	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 22]
 	cmp	al, byte ptr [rdx + 22]
-	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 23]
 	cmp	al, byte ptr [rdx + 23]
 	sete	r9b
 	movzx	eax, byte ptr [rsi + 24]
 	cmp	al, byte ptr [rdx + 24]
-	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 29]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 25]
 	cmp	al, byte ptr [rdx + 25]
-	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 26]
 	cmp	al, byte ptr [rdx + 26]
-	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 24]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 27]
 	cmp	al, byte ptr [rdx + 27]
-	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 25]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 28]
 	cmp	al, byte ptr [rdx + 28]
-	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 26]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 29]
 	cmp	al, byte ptr [rdx + 29]
-	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 27]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 30]
 	cmp	al, byte ptr [rdx + 30]
-	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	movzx	eax, byte ptr [rsi + 31]
 	add	rsi, 32
 	cmp	al, byte ptr [rdx + 31]
 	sete	cl
 	add	bl, bl
-	add	bl, byte ptr [rsp + 4]          # 1-byte Folded Reload
+	add	bl, byte ptr [rsp + 13]         # 1-byte Folded Reload
 	mov	eax, ebx
-	movzx	ebx, byte ptr [rsp + 5]         # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 14]        # 1-byte Folded Reload
 	shl	bl, 6
-	shl	r15b, 7
-	or	r15b, bl
-	movzx	ebx, byte ptr [rsp + 21]        # 1-byte Folded Reload
+	shl	r14b, 7
+	or	r14b, bl
+	movzx	ebx, byte ptr [rsp + 30]        # 1-byte Folded Reload
 	shl	bl, 2
 	or	bl, al
 	mov	eax, ebx
 	add	dil, dil
-	add	dil, byte ptr [rsp + 8]         # 1-byte Folded Reload
-	movzx	ebx, byte ptr [rsp + 22]        # 1-byte Folded Reload
+	add	dil, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 31]        # 1-byte Folded Reload
 	shl	bl, 3
 	or	bl, al
 	mov	eax, ebx
 	shl	r10b, 2
 	or	r10b, dil
-	movzx	ebx, byte ptr [rsp + 23]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	bl, 4
 	or	bl, al
 	mov	edi, ebx
 	shl	r11b, 3
 	or	r11b, r10b
-	movzx	ebx, byte ptr [rsp + 3]         # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 12]        # 1-byte Folded Reload
 	shl	bl, 5
 	or	bl, dil
-	shl	r14b, 4
-	or	r14b, r11b
-	movzx	eax, byte ptr [rsp + 6]         # 1-byte Folded Reload
+	shl	r15b, 4
+	or	r15b, r11b
+	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
 	shl	al, 5
-	or	al, r14b
-	movzx	edi, byte ptr [rsp + 7]         # 1-byte Folded Reload
+	or	al, r15b
+	movzx	edi, byte ptr [rsp + 16]        # 1-byte Folded Reload
 	shl	dil, 6
 	shl	r8b, 7
 	or	r8b, dil
-	or	r15b, bl
+	or	r14b, bl
 	or	r8b, al
 	add	r12b, r12b
-	add	r12b, byte ptr [rsp + 14]       # 1-byte Folded Reload
+	add	r12b, byte ptr [rsp + 23]       # 1-byte Folded Reload
 	shl	r13b, 2
 	or	r13b, r12b
-	mov	r12, qword ptr [rsp + 48]       # 8-byte Reload
-	movzx	eax, byte ptr [rsp + 9]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, r13b
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 10]        # 1-byte Folded Reload
+	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
+	movzx	eax, byte ptr [rsp + 19]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 11]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 20]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	mov	byte ptr [r12], r15b
-	movzx	ebx, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	mov	byte ptr [r15], r14b
+	movzx	ebx, byte ptr [rsp + 21]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r9b, 7
 	or	r9b, bl
-	mov	byte ptr [r12 + 1], r8b
+	mov	byte ptr [r15 + 1], r8b
 	or	r9b, al
-	movzx	eax, byte ptr [rsp + 13]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 22]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 20]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 29]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 24]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 25]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 26]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 27]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	movzx	ebx, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	cl, 7
 	or	cl, bl
 	or	cl, al
-	mov	byte ptr [r12 + 2], r9b
-	mov	byte ptr [r12 + 3], cl
+	mov	byte ptr [r15 + 2], r9b
+	mov	byte ptr [r15 + 3], cl
 	add	rdx, 32
-	add	r12, 4
-	add	qword ptr [rsp + 40], -1        # 8-byte Folded Spill
-	jne	.LBB0_63
-# %bb.64:
-	mov	r14, qword ptr [rsp + 24]       # 8-byte Reload
-	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
-.LBB0_65:
-	shl	r15, 5
-	cmp	r15, r14
-	jge	.LBB0_123
-# %bb.66:
-	sub	r14, r15
+	add	r15, 4
+	add	qword ptr [rsp + 56], -1        # 8-byte Folded Spill
+	jne	.LBB0_78
+# %bb.79:
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+	mov	rax, qword ptr [rsp + 48]       # 8-byte Reload
+.LBB0_80:
+	shl	rax, 5
+	sub	r12, rax
+	jle	.LBB0_153
+# %bb.81:
 	xor	ecx, ecx
 	.p2align	4, 0x90
-.LBB0_67:                               # =>This Inner Loop Header: Depth=1
+.LBB0_82:                               # =>This Inner Loop Header: Depth=1
 	lea	r8, [rcx + 1]
 	movzx	ebx, byte ptr [rsi + rcx]
 	cmp	bl, byte ptr [rdx + rcx]
@@ -2673,7 +2832,8 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	neg	bl
 	mov	rdi, rcx
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r12 + rdi]
+	mov	r10, r15
+	movzx	r9d, byte ptr [r15 + rdi]
 	xor	bl, r9b
 	and	cl, 7
 	mov	al, 1
@@ -2681,92 +2841,108 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	shl	al, cl
 	and	al, bl
 	xor	al, r9b
-	mov	byte ptr [r12 + rdi], al
+	mov	byte ptr [r15 + rdi], al
 	mov	rcx, r8
-	cmp	r14, r8
-	jne	.LBB0_67
-	jmp	.LBB0_123
-.LBB0_90:
-	lea	r15, [r14 + 31]
-	test	r14, r14
-	cmovns	r15, r14
-	lea	ecx, [rax + 7]
-	test	eax, eax
-	cmovns	ecx, eax
-	and	ecx, -8
-	sub	eax, ecx
-	je	.LBB0_94
-# %bb.91:
-	cdqe
+	cmp	r12, r8
+	jne	.LBB0_82
+	jmp	.LBB0_153
+.LBB0_111:
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB0_118
+# %bb.112:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r12
+	cmovg	r8, r12
+	test	r8, r8
+	jle	.LBB0_116
+# %bb.113:
+	movsxd	r9, r9d
+	xor	r10d, r10d
+	xor	eax, eax
 	.p2align	4, 0x90
-.LBB0_92:                               # =>This Inner Loop Header: Depth=1
-	mov	ecx, dword ptr [rsi]
-	add	rsi, 4
-	cmp	ecx, dword ptr [rdx]
-	lea	rdx, [rdx + 4]
-	sete	r10b
-	neg	r10b
-	lea	rdi, [rax + 7]
-	test	rax, rax
-	cmovns	rdi, rax
+.LBB0_114:                              # =>This Inner Loop Header: Depth=1
+	lea	rcx, [r9 + rax]
+	mov	ebx, dword ptr [rsi + 4*rax]
+	cmp	ebx, dword ptr [rdx + 4*rax]
+	sete	r11b
+	neg	r11b
+	lea	rdi, [r9 + rax]
+	add	rdi, 7
+	test	rcx, rcx
+	cmovns	rdi, rcx
 	sar	rdi, 3
-	movzx	r8d, byte ptr [r12 + rdi]
-	xor	r10b, r8b
-	lea	r9d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r9d
+	lea	ebx, [8*rdi]
+	sub	ecx, ebx
 	mov	ebx, 1
-                                        # kill: def $cl killed $cl killed $ecx
+                                        # kill: def $cl killed $cl killed $rcx
 	shl	ebx, cl
-	and	bl, r10b
-	xor	bl, r8b
-	mov	byte ptr [r12 + rdi], bl
+	mov	r14, r15
+	movzx	ecx, byte ptr [r15 + rdi]
+	xor	r11b, cl
+	and	bl, r11b
+	xor	bl, cl
+	mov	byte ptr [r15 + rdi], bl
 	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB0_92
-# %bb.93:
-	add	r12, 1
-.LBB0_94:
-	sar	r15, 5
-	cmp	r14, 32
-	jl	.LBB0_98
-# %bb.95:
-	mov	qword ptr [rsp + 24], r14       # 8-byte Spill
-	mov	qword ptr [rsp + 56], r15       # 8-byte Spill
-	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
+	add	r10, -4
+	cmp	r8, rax
+	jne	.LBB0_114
+# %bb.115:
+	sub	rsi, r10
+	sub	rdx, r10
+.LBB0_116:
+	sub	r12, r8
+	je	.LBB0_153
+# %bb.117:
+	add	r15, 1
+.LBB0_118:
+	lea	rax, [r12 + 31]
+	test	r12, r12
+	cmovns	rax, r12
+	sar	rax, 5
+	cmp	r12, 32
+	jl	.LBB0_122
+# %bb.119:
+	mov	qword ptr [rsp + 40], r12       # 8-byte Spill
+	mov	qword ptr [rsp + 64], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
 	.p2align	4, 0x90
-.LBB0_96:                               # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 48], r12       # 8-byte Spill
+.LBB0_120:                              # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 32], r15       # 8-byte Spill
 	mov	eax, dword ptr [rsi]
 	mov	ecx, dword ptr [rsi + 4]
 	cmp	eax, dword ptr [rdx]
-	sete	byte ptr [rsp + 4]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
 	cmp	ecx, dword ptr [rdx + 4]
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 8]
 	cmp	eax, dword ptr [rdx + 8]
-	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 30]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 12]
 	cmp	eax, dword ptr [rdx + 12]
-	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 31]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 16]
 	cmp	eax, dword ptr [rdx + 16]
-	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 20]
 	cmp	eax, dword ptr [rdx + 20]
-	sete	byte ptr [rsp + 3]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 24]
 	cmp	eax, dword ptr [rdx + 24]
-	sete	byte ptr [rsp + 5]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 28]
 	cmp	eax, dword ptr [rdx + 28]
 	sete	r13b
 	mov	eax, dword ptr [rsi + 32]
 	cmp	eax, dword ptr [rdx + 32]
-	sete	byte ptr [rsp + 10]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 36]
 	cmp	eax, dword ptr [rdx + 36]
-	sete	r8b
+	sete	dil
 	mov	eax, dword ptr [rsi + 40]
 	cmp	eax, dword ptr [rdx + 40]
 	sete	r11b
@@ -2775,21 +2951,21 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	sete	r15b
 	mov	eax, dword ptr [rsi + 48]
 	cmp	eax, dword ptr [rdx + 48]
-	sete	byte ptr [rsp + 6]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 52]
 	cmp	eax, dword ptr [rdx + 52]
-	sete	byte ptr [rsp + 7]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 56]
 	cmp	eax, dword ptr [rdx + 56]
-	sete	byte ptr [rsp + 8]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
 	mov	eax, dword ptr [rsi + 60]
 	cmp	eax, dword ptr [rdx + 60]
-	sete	dil
+	sete	r8b
 	mov	eax, dword ptr [rsi + 64]
 	mov	ebx, dword ptr [rsi + 68]
 	cmp	eax, dword ptr [rdx + 64]
 	mov	eax, dword ptr [rsi + 72]
-	sete	byte ptr [rsp + 11]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
 	cmp	ebx, dword ptr [rdx + 68]
 	mov	ebx, dword ptr [rsi + 76]
 	sete	r10b
@@ -2800,144 +2976,144 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	mov	ebx, dword ptr [rsi + 84]
 	sete	r12b
 	cmp	eax, dword ptr [rdx + 80]
-	sete	byte ptr [rsp + 9]              # 1-byte Folded Spill
+	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
 	cmp	ebx, dword ptr [rdx + 84]
 	mov	eax, dword ptr [rsi + 88]
-	sete	byte ptr [rsp + 12]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 21]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 88]
 	mov	eax, dword ptr [rsi + 92]
-	sete	byte ptr [rsp + 13]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 24]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 92]
 	mov	eax, dword ptr [rsi + 96]
 	sete	r9b
 	cmp	eax, dword ptr [rdx + 96]
 	mov	eax, dword ptr [rsi + 100]
-	sete	byte ptr [rsp + 20]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 29]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 100]
 	mov	eax, dword ptr [rsi + 104]
-	sete	byte ptr [rsp + 14]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 22]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 104]
 	mov	eax, dword ptr [rsi + 108]
-	sete	byte ptr [rsp + 15]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 23]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 108]
 	mov	eax, dword ptr [rsi + 112]
-	sete	byte ptr [rsp + 16]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 25]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 112]
 	mov	eax, dword ptr [rsi + 116]
-	sete	byte ptr [rsp + 17]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 26]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 116]
 	mov	eax, dword ptr [rsi + 120]
-	sete	byte ptr [rsp + 19]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	eax, dword ptr [rdx + 120]
 	mov	eax, dword ptr [rsi + 124]
-	sete	byte ptr [rsp + 18]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 27]             # 1-byte Folded Spill
 	sub	rsi, -128
 	cmp	eax, dword ptr [rdx + 124]
 	sete	cl
-	movzx	eax, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 4]          # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 13]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 5]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
 	shl	al, 6
 	shl	r13b, 7
 	or	r13b, al
-	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 30]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
-	add	r8b, r8b
-	add	r8b, byte ptr [rsp + 10]        # 1-byte Folded Reload
-	movzx	ebx, byte ptr [rsp + 22]        # 1-byte Folded Reload
+	add	dil, dil
+	add	dil, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 31]        # 1-byte Folded Reload
 	shl	bl, 3
 	or	bl, al
 	mov	eax, ebx
 	shl	r11b, 2
-	or	r11b, r8b
-	movzx	ebx, byte ptr [rsp + 23]        # 1-byte Folded Reload
+	or	r11b, dil
+	movzx	ebx, byte ptr [rsp + 11]        # 1-byte Folded Reload
 	shl	bl, 4
 	or	bl, al
-	mov	r8d, ebx
+	mov	edi, ebx
 	shl	r15b, 3
 	or	r15b, r11b
-	movzx	ebx, byte ptr [rsp + 3]         # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 12]        # 1-byte Folded Reload
 	shl	bl, 5
-	or	bl, r8b
-	movzx	eax, byte ptr [rsp + 6]         # 1-byte Folded Reload
+	or	bl, dil
+	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r15b
-	mov	r8d, eax
-	movzx	eax, byte ptr [rsp + 7]         # 1-byte Folded Reload
+	mov	edi, eax
+	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
 	shl	al, 5
-	or	al, r8b
-	movzx	r8d, byte ptr [rsp + 8]         # 1-byte Folded Reload
-	shl	r8b, 6
-	shl	dil, 7
-	or	dil, r8b
+	or	al, dil
+	movzx	edi, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	shl	dil, 6
+	shl	r8b, 7
+	or	r8b, dil
 	or	r13b, bl
-	or	dil, al
+	or	r8b, al
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 11]       # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 20]       # 1-byte Folded Reload
 	shl	r14b, 2
 	or	r14b, r10b
 	shl	r12b, 3
 	or	r12b, r14b
-	movzx	eax, byte ptr [rsp + 9]         # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 18]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r12b
 	mov	ebx, eax
-	mov	r12, qword ptr [rsp + 48]       # 8-byte Reload
-	movzx	eax, byte ptr [rsp + 12]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 21]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	mov	byte ptr [r12], r13b
-	movzx	ebx, byte ptr [rsp + 13]        # 1-byte Folded Reload
+	mov	rdi, qword ptr [rsp + 32]       # 8-byte Reload
+	mov	byte ptr [rdi], r13b
+	mov	r15, qword ptr [rsp + 32]       # 8-byte Reload
+	movzx	ebx, byte ptr [rsp + 24]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r9b, 7
 	or	r9b, bl
-	mov	byte ptr [r12 + 1], dil
+	mov	byte ptr [r15 + 1], r8b
 	or	r9b, al
-	movzx	eax, byte ptr [rsp + 14]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 22]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 20]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 29]         # 1-byte Folded Reload
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 15]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 23]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 16]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 25]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 17]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 26]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, bl
 	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 19]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	al, 5
 	or	al, bl
-	movzx	ebx, byte ptr [rsp + 18]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 27]        # 1-byte Folded Reload
 	shl	bl, 6
 	shl	cl, 7
 	or	cl, bl
 	or	cl, al
-	mov	byte ptr [r12 + 2], r9b
-	mov	byte ptr [r12 + 3], cl
+	mov	byte ptr [r15 + 2], r9b
+	mov	byte ptr [r15 + 3], cl
 	add	rdx, 128
-	add	r12, 4
-	add	qword ptr [rsp + 32], -1        # 8-byte Folded Spill
-	jne	.LBB0_96
-# %bb.97:
-	mov	r14, qword ptr [rsp + 24]       # 8-byte Reload
-	mov	r15, qword ptr [rsp + 56]       # 8-byte Reload
-.LBB0_98:
-	shl	r15, 5
-	cmp	r15, r14
-	jge	.LBB0_123
-# %bb.99:
-	sub	r14, r15
+	add	r15, 4
+	add	qword ptr [rsp + 48], -1        # 8-byte Folded Spill
+	jne	.LBB0_120
+# %bb.121:
+	mov	r12, qword ptr [rsp + 40]       # 8-byte Reload
+	mov	rax, qword ptr [rsp + 64]       # 8-byte Reload
+.LBB0_122:
+	shl	rax, 5
+	sub	r12, rax
+	jle	.LBB0_153
+# %bb.123:
 	xor	ecx, ecx
 	.p2align	4, 0x90
-.LBB0_100:                              # =>This Inner Loop Header: Depth=1
+.LBB0_124:                              # =>This Inner Loop Header: Depth=1
 	lea	r8, [rcx + 1]
 	mov	edi, dword ptr [rsi + 4*rcx]
 	cmp	edi, dword ptr [rdx + 4*rcx]
@@ -2945,7 +3121,8 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	neg	bl
 	mov	rdi, rcx
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r12 + rdi]
+	mov	r10, r15
+	movzx	r9d, byte ptr [r15 + rdi]
 	xor	bl, r9b
 	and	cl, 7
 	mov	al, 1
@@ -2953,11 +3130,11 @@ comparison_equal_arr_arr_avx2:          # @comparison_equal_arr_arr_avx2
 	shl	al, cl
 	and	al, bl
 	xor	al, r9b
-	mov	byte ptr [r12 + rdi], al
+	mov	byte ptr [r15 + rdi], al
 	mov	rcx, r8
-	cmp	r14, r8
-	jne	.LBB0_100
-.LBB0_123:
+	cmp	r12, r8
+	jne	.LBB0_124
+.LBB0_153:
 	lea	rsp, [rbp - 40]
 	pop	rbx
 	pop	r12
@@ -3001,90 +3178,104 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	and	rsp, -32
 	sub	rsp, 1280
                                         # kill: def $r9d killed $r9d def $r9
-	mov	r10, r8
-	mov	r11, rcx
+	mov	r15, r8
+	mov	r14, rcx
 	cmp	edi, 6
-	jg	.LBB1_13
+	jg	.LBB1_19
 # %bb.1:
 	cmp	edi, 3
-	jle	.LBB1_25
+	jle	.LBB1_36
 # %bb.2:
 	cmp	edi, 4
-	je	.LBB1_49
+	je	.LBB1_59
 # %bb.3:
 	cmp	edi, 5
-	je	.LBB1_57
+	je	.LBB1_73
 # %bb.4:
 	cmp	edi, 6
-	jne	.LBB1_165
+	jne	.LBB1_189
 # %bb.5:
 	mov	r13d, dword ptr [rdx]
-	lea	r15, [r10 + 31]
-	test	r10, r10
-	cmovns	r15, r10
 	lea	eax, [r9 + 7]
 	test	r9d, r9d
 	cmovns	eax, r9d
 	and	eax, -8
 	sub	r9d, eax
-	je	.LBB1_9
+	je	.LBB1_11
 # %bb.6:
-	movsxd	rax, r9d
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r15
+	cmovg	r8, r15
+	test	r8, r8
+	jle	.LBB1_9
+# %bb.7:
+	movsxd	rdx, r9d
+	mov	r11, r8
+	mov	rcx, rsi
 	.p2align	4, 0x90
-.LBB1_7:                                # =>This Inner Loop Header: Depth=1
-	cmp	dword ptr [rsi], r13d
-	lea	rsi, [rsi + 4]
-	sete	dl
-	neg	dl
-	lea	rbx, [rax + 7]
-	test	rax, rax
-	cmovns	rbx, rax
-	sar	rbx, 3
-	movzx	r8d, byte ptr [r11 + rbx]
-	xor	dl, r8b
-	lea	edi, [8*rbx]
-	mov	ecx, eax
-	sub	ecx, edi
-	mov	edi, 1
+.LBB1_8:                                # =>This Inner Loop Header: Depth=1
+	lea	rsi, [rcx + 4]
+	cmp	dword ptr [rcx], r13d
+	sete	bl
+	neg	bl
+	lea	rdi, [rdx + 7]
+	test	rdx, rdx
+	cmovns	rdi, rdx
+	sar	rdi, 3
+	mov	r12, r14
+	movzx	r9d, byte ptr [r14 + rdi]
+	xor	bl, r9b
+	lea	r10d, [8*rdi]
+	mov	ecx, edx
+	sub	ecx, r10d
+	mov	eax, 1
                                         # kill: def $cl killed $cl killed $ecx
-	shl	edi, cl
-	and	dil, dl
-	xor	dil, r8b
-	mov	byte ptr [r11 + rbx], dil
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB1_7
-# %bb.8:
-	add	r11, 1
+	shl	eax, cl
+	and	al, bl
+	xor	al, r9b
+	mov	byte ptr [r14 + rdi], al
+	add	rdx, 1
+	mov	rcx, rsi
+	add	r11, -1
+	jne	.LBB1_8
 .LBB1_9:
-	sar	r15, 5
-	cmp	r10, 32
-	jl	.LBB1_101
+	sub	r15, r8
+	je	.LBB1_189
 # %bb.10:
-	mov	qword ptr [rsp + 280], r10      # 8-byte Spill
-	mov	qword ptr [rsp + 168], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 176], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 272], r11      # 8-byte Spill
+	add	r14, 1
+.LBB1_11:
+	lea	rax, [r15 + 31]
+	test	r15, r15
+	cmovns	rax, r15
+	sar	rax, 5
+	cmp	r15, 32
+	jl	.LBB1_15
+# %bb.12:
+	mov	qword ptr [rsp + 280], r15      # 8-byte Spill
+	mov	qword ptr [rsp + 176], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 160], rax      # 8-byte Spill
 	.p2align	4, 0x90
-.LBB1_11:                               # =>This Inner Loop Header: Depth=1
+.LBB1_13:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 272], r14      # 8-byte Spill
 	cmp	dword ptr [rsi], r13d
-	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 168]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 4], r13d
 	sete	r10b
 	cmp	dword ptr [rsi + 8], r13d
 	sete	r14b
 	cmp	dword ptr [rsi + 12], r13d
-	sete	byte ptr [rsp + 160]            # 1-byte Folded Spill
-	cmp	dword ptr [rsi + 16], r13d
 	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
+	cmp	dword ptr [rsi + 16], r13d
+	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 20], r13d
-	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 24], r13d
 	sete	al
 	cmp	dword ptr [rsi + 28], r13d
 	sete	bl
 	cmp	dword ptr [rsi + 32], r13d
-	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 36], r13d
 	sete	dil
 	cmp	dword ptr [rsi + 40], r13d
@@ -3096,33 +3287,33 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	dword ptr [rsi + 52], r13d
 	sete	r12b
 	cmp	dword ptr [rsi + 56], r13d
-	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 60], r13d
-	sete	cl
+	sete	dl
 	cmp	dword ptr [rsi + 64], r13d
-	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 68], r13d
-	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 72], r13d
-	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 76], r13d
-	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 80], r13d
-	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 84], r13d
-	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 88], r13d
-	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 92], r13d
 	sete	r15b
 	cmp	dword ptr [rsi + 96], r13d
-	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 100], r13d
 	sete	byte ptr [rsp + 48]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 104], r13d
 	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 108], r13d
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 112], r13d
 	sete	byte ptr [rsp + 320]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 116], r13d
@@ -3130,185 +3321,241 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	dword ptr [rsi + 120], r13d
 	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 124], r13d
-	sete	dl
+	sete	cl
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 152]      # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 168]      # 1-byte Folded Reload
 	shl	al, 6
 	shl	bl, 7
 	or	bl, al
 	shl	r14b, 2
 	or	r14b, r10b
 	add	dil, dil
-	add	dil, byte ptr [rsp + 104]       # 1-byte Folded Reload
-	movzx	eax, byte ptr [rsp + 160]       # 1-byte Folded Reload
+	add	dil, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
 	shl	al, 3
 	or	al, r14b
 	mov	r10d, eax
+	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
 	shl	r8b, 2
 	or	r8b, dil
-	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r10b
 	mov	edi, eax
 	shl	r9b, 3
 	or	r9b, r8b
-	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 112]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
 	shl	r11b, 4
 	or	r11b, r9b
 	shl	r12b, 5
 	or	r12b, r11b
-	movzx	edi, byte ptr [rsp + 112]       # 1-byte Folded Reload
+	movzx	edi, byte ptr [rsp + 152]       # 1-byte Folded Reload
 	shl	dil, 6
-	shl	cl, 7
-	or	cl, dil
+	shl	dl, 7
+	or	dl, dil
 	or	bl, al
-	or	cl, r12b
-	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
+	or	dl, r12b
+	movzx	eax, byte ptr [rsp + 64]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 72]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 96]         # 1-byte Folded Reload
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 128]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 72]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 104]       # 1-byte Folded Reload
 	shl	al, 4
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
-	mov	edi, eax
-	mov	rax, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	byte ptr [rax], bl
-	movzx	ebx, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	mov	byte ptr [r14], bl
+	movzx	ebx, byte ptr [rsp + 128]       # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r15b, 7
 	or	r15b, bl
-	mov	byte ptr [rax + 1], cl
-	or	r15b, dil
-	movzx	ecx, byte ptr [rsp + 48]        # 1-byte Folded Reload
-	add	cl, cl
-	add	cl, byte ptr [rsp + 32]         # 1-byte Folded Reload
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 56]        # 1-byte Folded Reload
-	shl	cl, 2
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 40]        # 1-byte Folded Reload
-	shl	cl, 3
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 320]       # 1-byte Folded Reload
-	shl	cl, 4
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 288]       # 1-byte Folded Reload
-	shl	cl, 5
-	or	cl, bl
-	movzx	ebx, byte ptr [rsp + 28]        # 1-byte Folded Reload
-	shl	bl, 6
-	shl	dl, 7
-	or	dl, bl
-	or	dl, cl
-	mov	byte ptr [rax + 2], r15b
-	mov	byte ptr [rax + 3], dl
+	mov	byte ptr [r14 + 1], dl
+	or	r15b, al
+	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
+	add	al, al
+	add	al, byte ptr [rsp + 40]         # 1-byte Folded Reload
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
+	shl	al, 2
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 32]        # 1-byte Folded Reload
+	shl	al, 3
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 320]       # 1-byte Folded Reload
+	shl	al, 4
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 288]       # 1-byte Folded Reload
+	shl	al, 5
+	or	al, dl
+	movzx	edx, byte ptr [rsp + 28]        # 1-byte Folded Reload
+	shl	dl, 6
+	shl	cl, 7
+	or	cl, dl
+	or	cl, al
+	mov	byte ptr [r14 + 2], r15b
+	mov	byte ptr [r14 + 3], cl
 	add	rsi, 128
-	add	rax, 4
-	mov	qword ptr [rsp + 272], rax      # 8-byte Spill
-	add	qword ptr [rsp + 176], -1       # 8-byte Folded Spill
-	jne	.LBB1_11
-# %bb.12:
-	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	r10, qword ptr [rsp + 280]      # 8-byte Reload
-	mov	r15, qword ptr [rsp + 168]      # 8-byte Reload
-	shl	r15, 5
-	cmp	r15, r10
-	jl	.LBB1_102
-	jmp	.LBB1_165
-.LBB1_13:
-	cmp	edi, 8
-	jle	.LBB1_39
+	add	r14, 4
+	add	qword ptr [rsp + 160], -1       # 8-byte Folded Spill
+	jne	.LBB1_13
 # %bb.14:
+	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
+	mov	rax, qword ptr [rsp + 176]      # 8-byte Reload
+.LBB1_15:
+	shl	rax, 5
+	mov	r8, r15
+	sub	r8, rax
+	jle	.LBB1_189
+# %bb.16:
+	or	rax, 1
+	cmp	r15, rax
+	je	.LBB1_129
+# %bb.17:
+	mov	r10, r8
+	and	r10, -2
+	xor	r11d, r11d
+	.p2align	4, 0x90
+.LBB1_18:                               # =>This Inner Loop Header: Depth=1
+	cmp	dword ptr [rsi], r13d
+	sete	al
+	neg	al
+	mov	rdi, r11
+	shr	rdi, 3
+	mov	r15, r14
+	movzx	r9d, byte ptr [r14 + rdi]
+	mov	ecx, r11d
+	and	cl, 6
+	mov	bl, 1
+	shl	bl, cl
+	xor	al, r9b
+	and	bl, al
+	xor	bl, r9b
+	mov	byte ptr [r14 + rdi], bl
+	add	r11, 2
+	cmp	dword ptr [rsi + 4], r13d
+	lea	rsi, [rsi + 8]
+	sete	al
+	neg	al
+	xor	al, bl
+	or	cl, 1
+	mov	dl, 1
+	shl	dl, cl
+	and	dl, al
+	xor	dl, bl
+	mov	byte ptr [r14 + rdi], dl
+	cmp	r10, r11
+	jne	.LBB1_18
+	jmp	.LBB1_179
+.LBB1_19:
+	cmp	edi, 8
+	jle	.LBB1_43
+# %bb.20:
 	cmp	edi, 9
-	je	.LBB1_65
-# %bb.15:
+	je	.LBB1_86
+# %bb.21:
 	cmp	edi, 11
-	je	.LBB1_73
-# %bb.16:
+	je	.LBB1_99
+# %bb.22:
 	cmp	edi, 12
-	jne	.LBB1_165
-# %bb.17:
-	lea	r15, [r10 + 31]
-	test	r10, r10
-	cmovns	r15, r10
+	jne	.LBB1_189
+# %bb.23:
+	mov	r12, qword ptr [rdx]
 	lea	eax, [r9 + 7]
 	test	r9d, r9d
 	cmovns	eax, r9d
 	and	eax, -8
-	vmovsd	xmm0, qword ptr [rdx]           # xmm0 = mem[0],zero
 	sub	r9d, eax
-	je	.LBB1_21
-# %bb.18:
-	movsxd	rax, r9d
+	je	.LBB1_29
+# %bb.24:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r15
+	cmovg	r8, r15
+	test	r8, r8
+	jle	.LBB1_27
+# %bb.25:
+	movsxd	rdx, r9d
+	vmovq	xmm0, r12
+	mov	r11, r8
+	mov	rcx, rsi
 	.p2align	4, 0x90
-.LBB1_19:                               # =>This Inner Loop Header: Depth=1
-	vucomisd	xmm0, qword ptr [rsi]
-	lea	rsi, [rsi + 8]
+.LBB1_26:                               # =>This Inner Loop Header: Depth=1
+	vucomisd	xmm0, qword ptr [rcx]
+	lea	rsi, [rcx + 8]
 	setnp	cl
-	sete	dl
-	and	dl, cl
-	neg	dl
-	lea	rdi, [rax + 7]
-	test	rax, rax
-	cmovns	rdi, rax
-	sar	rdi, 3
-	movzx	r9d, byte ptr [r11 + rdi]
-	xor	dl, r9b
-	lea	r8d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r8d
-	mov	ebx, 1
-                                        # kill: def $cl killed $cl killed $ecx
-	shl	ebx, cl
-	and	bl, dl
+	sete	bl
+	and	bl, cl
+	neg	bl
+	lea	rax, [rdx + 7]
+	test	rdx, rdx
+	cmovns	rax, rdx
+	sar	rax, 3
+	mov	r13, r14
+	movzx	r9d, byte ptr [r14 + rax]
 	xor	bl, r9b
-	mov	byte ptr [r11 + rdi], bl
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB1_19
-# %bb.20:
-	add	r11, 1
-.LBB1_21:
-	sar	r15, 5
-	cmp	r10, 32
-	jl	.LBB1_105
-# %bb.22:
-	mov	qword ptr [rsp + 280], r10      # 8-byte Spill
-	mov	qword ptr [rsp + 168], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 176], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 272], r11      # 8-byte Spill
+	lea	r10d, [8*rax]
+	mov	ecx, edx
+	sub	ecx, r10d
+	mov	edi, 1
+                                        # kill: def $cl killed $cl killed $ecx
+	shl	edi, cl
+	and	dil, bl
+	xor	dil, r9b
+	mov	byte ptr [r14 + rax], dil
+	add	rdx, 1
+	mov	rcx, rsi
+	add	r11, -1
+	jne	.LBB1_26
+.LBB1_27:
+	sub	r15, r8
+	je	.LBB1_189
+# %bb.28:
+	add	r14, 1
+.LBB1_29:
+	lea	rax, [r15 + 31]
+	test	r15, r15
+	cmovns	rax, r15
+	sar	rax, 5
+	cmp	r15, 32
+	jl	.LBB1_33
+# %bb.30:
+	mov	qword ptr [rsp + 280], r15      # 8-byte Spill
+	mov	qword ptr [rsp + 184], r12      # 8-byte Spill
+	vmovq	xmm0, r12
+	mov	qword ptr [rsp + 200], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 192], rax      # 8-byte Spill
 	.p2align	4, 0x90
-.LBB1_23:                               # =>This Inner Loop Header: Depth=1
+.LBB1_31:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 272], r14      # 8-byte Spill
 	vucomisd	xmm0, qword ptr [rsi]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 32], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 56], cl         # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 8]
 	setnp	al
-	sete	bl
-	and	bl, al
-	vucomisd	xmm0, qword ptr [rsi + 16]
-	setnp	al
 	sete	r13b
 	and	r13b, al
+	vucomisd	xmm0, qword ptr [rsi + 16]
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 32], cl         # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 24]
 	setnp	al
 	sete	cl
@@ -3318,16 +3565,16 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 288], cl        # 1-byte Spill
+	mov	byte ptr [rsp + 40], cl         # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 40]
 	setnp	al
-	sete	dil
-	and	dil, al
+	sete	r12b
+	and	r12b, al
 	vucomisd	xmm0, qword ptr [rsi + 48]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 56], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 128], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 56]
 	setnp	al
 	sete	cl
@@ -3337,529 +3584,366 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 40], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 48], cl         # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 72]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 48], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 120], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 80]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 64], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 112], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 88]
 	setnp	al
-	sete	cl
-	and	cl, al
-	mov	byte ptr [rsp + 96], cl         # 1-byte Spill
+	sete	bl
+	and	bl, al
 	vucomisd	xmm0, qword ptr [rsi + 96]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 88], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 288], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 104]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 80], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 96], cl         # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 112]
 	setnp	al
-	sete	dl
-	and	dl, al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 88], cl         # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 120]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 72], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 80], cl         # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 128]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 144], cl        # 1-byte Spill
+	mov	byte ptr [rsp + 104], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 136]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 136], cl        # 1-byte Spill
+	mov	byte ptr [rsp + 72], cl         # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 144]
 	setnp	al
 	sete	cl
 	and	cl, al
+	mov	byte ptr [rsp + 64], cl         # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 152]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 128], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 152], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 160]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 120], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 144], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 168]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 104], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 136], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 176]
 	setnp	al
-	sete	r12b
-	and	r12b, al
+	sete	r15b
+	and	r15b, al
 	vucomisd	xmm0, qword ptr [rsi + 184]
 	setnp	al
 	sete	r10b
 	and	r10b, al
 	vucomisd	xmm0, qword ptr [rsi + 192]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 112], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 168], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 200]
 	setnp	al
-	sete	r15b
-	and	r15b, al
+	sete	r11b
+	and	r11b, al
 	vucomisd	xmm0, qword ptr [rsi + 208]
 	setnp	al
-	sete	r14b
-	and	r14b, al
+	sete	r9b
+	and	r9b, al
 	vucomisd	xmm0, qword ptr [rsi + 216]
 	setnp	al
-	sete	r11b
-	and	r11b, al
+	sete	r8b
+	and	r8b, al
 	vucomisd	xmm0, qword ptr [rsi + 224]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 160], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 176], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 232]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 152], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 160], cl        # 1-byte Spill
 	vucomisd	xmm0, qword ptr [rsi + 240]
 	setnp	al
-	sete	r9b
-	and	r9b, al
+	sete	dil
+	and	dil, al
 	vucomisd	xmm0, qword ptr [rsi + 248]
 	setnp	al
-	sete	r8b
-	and	r8b, al
-	add	bl, bl
-	add	bl, byte ptr [rsp + 32]         # 1-byte Folded Reload
-	shl	dil, 5
-	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
-	shl	al, 6
-	or	al, dil
-	mov	edi, eax
-	shl	r13b, 2
-	or	r13b, bl
-	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
-	add	al, al
-	add	al, byte ptr [rsp + 40]         # 1-byte Folded Reload
-	mov	ebx, eax
+	sete	dl
+	and	dl, al
+	add	r13b, r13b
+	add	r13b, byte ptr [rsp + 56]       # 1-byte Folded Reload
+	mov	eax, r13d
+	shl	r12b, 5
+	movzx	r13d, byte ptr [rsp + 128]      # 1-byte Folded Reload
+	shl	r13b, 6
+	or	r13b, r12b
+	movzx	r12d, byte ptr [rsp + 32]       # 1-byte Folded Reload
+	shl	r12b, 2
+	or	r12b, al
+	movzx	ecx, byte ptr [rsp + 120]       # 1-byte Folded Reload
+	add	cl, cl
+	add	cl, byte ptr [rsp + 48]         # 1-byte Folded Reload
 	movzx	eax, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	al, 7
-	or	al, dil
+	or	al, r13b
 	mov	byte ptr [rsp + 28], al         # 1-byte Spill
-	movzx	eax, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 112]       # 1-byte Folded Reload
 	shl	al, 2
-	or	al, bl
-	mov	ebx, eax
+	or	al, cl
+	mov	ecx, eax
 	movzx	eax, byte ptr [rsp + 320]       # 1-byte Folded Reload
 	shl	al, 3
-	or	al, r13b
-	mov	r13d, eax
-	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
-	shl	al, 3
-	or	al, bl
-	mov	edi, eax
+	or	al, r12b
+	shl	bl, 3
+	or	bl, cl
+	movzx	r13d, byte ptr [rsp + 40]       # 1-byte Folded Reload
+	shl	r13b, 4
+	or	r13b, al
 	movzx	eax, byte ptr [rsp + 288]       # 1-byte Folded Reload
 	shl	al, 4
+	or	al, bl
+	mov	byte ptr [rsp + 288], al        # 1-byte Spill
+	movzx	ecx, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	shl	cl, 5
+	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
+	shl	al, 6
+	or	al, cl
+	mov	ecx, eax
+	movzx	r14d, byte ptr [rsp + 80]       # 1-byte Folded Reload
+	shl	r14b, 7
+	or	r14b, al
+	movzx	ecx, byte ptr [rsp + 72]        # 1-byte Folded Reload
+	add	cl, cl
+	add	cl, byte ptr [rsp + 104]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	shl	bl, 2
+	or	bl, cl
+	movzx	ecx, byte ptr [rsp + 152]       # 1-byte Folded Reload
+	shl	cl, 3
+	or	cl, bl
+	mov	ebx, ecx
+	movzx	ecx, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	shl	cl, 4
+	or	cl, bl
+	mov	r12d, ecx
+	mov	rcx, qword ptr [rsp + 272]      # 8-byte Reload
+	movzx	eax, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	or	al, r13b
-	movzx	ebx, byte ptr [rsp + 88]        # 1-byte Folded Reload
-	shl	bl, 4
-	or	bl, dil
-	movzx	edi, byte ptr [rsp + 80]        # 1-byte Folded Reload
-	shl	dil, 5
-	shl	dl, 6
-	or	dl, dil
-	movzx	r13d, byte ptr [rsp + 72]       # 1-byte Folded Reload
-	shl	r13b, 7
-	or	r13b, dl
-	movzx	edx, byte ptr [rsp + 136]       # 1-byte Folded Reload
-	add	dl, dl
-	add	dl, byte ptr [rsp + 144]        # 1-byte Folded Reload
-	shl	cl, 2
-	or	cl, dl
-	movzx	edx, byte ptr [rsp + 128]       # 1-byte Folded Reload
-	shl	dl, 3
-	or	dl, cl
-	mov	ecx, edx
-	movzx	edx, byte ptr [rsp + 120]       # 1-byte Folded Reload
-	shl	dl, 4
-	or	dl, cl
-	movzx	ecx, byte ptr [rsp + 28]        # 1-byte Folded Reload
-	or	cl, al
-	movzx	eax, byte ptr [rsp + 104]       # 1-byte Folded Reload
-	shl	al, 5
-	shl	r12b, 6
-	or	r12b, al
-	or	r13b, bl
+	movzx	ebx, byte ptr [rsp + 136]       # 1-byte Folded Reload
+	shl	bl, 5
+	shl	r15b, 6
+	or	r15b, bl
+	or	r14b, byte ptr [rsp + 288]      # 1-byte Folded Reload
 	shl	r10b, 7
+	or	r10b, r15b
 	or	r10b, r12b
-	or	r10b, dl
-	add	r15b, r15b
-	add	r15b, byte ptr [rsp + 112]      # 1-byte Folded Reload
-	shl	r14b, 2
-	or	r14b, r15b
-	shl	r11b, 3
-	or	r11b, r14b
-	movzx	eax, byte ptr [rsp + 160]       # 1-byte Folded Reload
-	shl	al, 4
-	or	al, r11b
-	mov	ebx, eax
-	mov	rax, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	byte ptr [rax], cl
-	movzx	edx, byte ptr [rsp + 152]       # 1-byte Folded Reload
-	shl	dl, 5
-	shl	r9b, 6
-	or	r9b, dl
-	mov	byte ptr [rax + 1], r13b
-	shl	r8b, 7
+	add	r11b, r11b
+	add	r11b, byte ptr [rsp + 168]      # 1-byte Folded Reload
+	shl	r9b, 2
+	or	r9b, r11b
+	shl	r8b, 3
 	or	r8b, r9b
-	or	r8b, bl
-	mov	byte ptr [rax + 2], r10b
-	mov	byte ptr [rax + 3], r8b
+	movzx	ebx, byte ptr [rsp + 176]       # 1-byte Folded Reload
+	shl	bl, 4
+	or	bl, r8b
+	mov	r8d, ebx
+	mov	byte ptr [rcx], al
+	movzx	ebx, byte ptr [rsp + 160]       # 1-byte Folded Reload
+	shl	bl, 5
+	shl	dil, 6
+	or	dil, bl
+	mov	byte ptr [rcx + 1], r14b
+	shl	dl, 7
+	or	dl, dil
+	or	dl, r8b
+	mov	byte ptr [rcx + 2], r10b
+	mov	byte ptr [rcx + 3], dl
 	add	rsi, 256
-	add	rax, 4
-	mov	qword ptr [rsp + 272], rax      # 8-byte Spill
-	add	qword ptr [rsp + 176], -1       # 8-byte Folded Spill
-	jne	.LBB1_23
-# %bb.24:
-	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	r10, qword ptr [rsp + 280]      # 8-byte Reload
-	mov	r15, qword ptr [rsp + 168]      # 8-byte Reload
-	shl	r15, 5
-	cmp	r15, r10
-	jl	.LBB1_106
-	jmp	.LBB1_165
-.LBB1_25:
+	add	rcx, 4
+	mov	r14, rcx
+	add	qword ptr [rsp + 192], -1       # 8-byte Folded Spill
+	jne	.LBB1_31
+# %bb.32:
+	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
+	mov	r12, qword ptr [rsp + 184]      # 8-byte Reload
+	mov	rax, qword ptr [rsp + 200]      # 8-byte Reload
+.LBB1_33:
+	shl	rax, 5
+	mov	r8, r15
+	sub	r8, rax
+	jle	.LBB1_189
+# %bb.34:
+	vmovq	xmm0, r12
+	or	rax, 1
+	cmp	r15, rax
+	jne	.LBB1_160
+# %bb.35:
+	xor	r11d, r11d
+	jmp	.LBB1_162
+.LBB1_36:
 	cmp	edi, 2
-	je	.LBB1_81
-# %bb.26:
+	je	.LBB1_112
+# %bb.37:
 	cmp	edi, 3
-	jne	.LBB1_165
-# %bb.27:
-	mov	r14b, byte ptr [rdx]
-	lea	r13, [r10 + 31]
-	test	r10, r10
-	mov	r15, r10
-	cmovns	r13, r10
+	jne	.LBB1_189
+# %bb.38:
+	mov	r12b, byte ptr [rdx]
 	lea	eax, [r9 + 7]
 	test	r9d, r9d
 	cmovns	eax, r9d
 	and	eax, -8
 	sub	r9d, eax
-	je	.LBB1_31
-# %bb.28:
-	movsxd	rax, r9d
+	je	.LBB1_130
+# %bb.39:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r15
+	cmovg	r8, r15
+	test	r8, r8
+	jle	.LBB1_132
+# %bb.40:
+	movsxd	rdx, r9d
+	mov	r11, r8
 	.p2align	4, 0x90
-.LBB1_29:                               # =>This Inner Loop Header: Depth=1
-	cmp	byte ptr [rsi], r14b
-	lea	rsi, [rsi + 1]
-	sete	dl
-	neg	dl
-	lea	rdi, [rax + 7]
-	test	rax, rax
-	cmovns	rdi, rax
-	sar	rdi, 3
-	movzx	r9d, byte ptr [r11 + rdi]
-	xor	dl, r9b
-	lea	r8d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r8d
-	mov	ebx, 1
+.LBB1_41:                               # =>This Inner Loop Header: Depth=1
+	lea	rdi, [rsi + 1]
+	cmp	byte ptr [rsi], r12b
+	sete	bl
+	neg	bl
+	lea	rsi, [rdx + 7]
+	test	rdx, rdx
+	cmovns	rsi, rdx
+	sar	rsi, 3
+	mov	r13, r14
+	movzx	r9d, byte ptr [r14 + rsi]
+	xor	bl, r9b
+	lea	r10d, [8*rsi]
+	mov	ecx, edx
+	sub	ecx, r10d
+	mov	eax, 1
                                         # kill: def $cl killed $cl killed $ecx
-	shl	ebx, cl
-	and	bl, dl
+	shl	eax, cl
+	and	al, bl
+	xor	al, r9b
+	mov	byte ptr [r14 + rsi], al
+	add	rdx, 1
+	mov	rsi, rdi
+	add	r11, -1
+	jne	.LBB1_41
+# %bb.42:
+	sub	r15, r8
+	jne	.LBB1_133
+	jmp	.LBB1_189
+.LBB1_43:
+	cmp	edi, 7
+	je	.LBB1_117
+# %bb.44:
+	cmp	edi, 8
+	jne	.LBB1_189
+# %bb.45:
+	mov	r13, qword ptr [rdx]
+	lea	eax, [r9 + 7]
+	test	r9d, r9d
+	cmovns	eax, r9d
+	and	eax, -8
+	sub	r9d, eax
+	je	.LBB1_51
+# %bb.46:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r15
+	cmovg	r8, r15
+	test	r8, r8
+	jle	.LBB1_49
+# %bb.47:
+	movsxd	rdx, r9d
+	mov	r11, r8
+	mov	rcx, rsi
+	.p2align	4, 0x90
+.LBB1_48:                               # =>This Inner Loop Header: Depth=1
+	lea	rsi, [rcx + 8]
+	cmp	qword ptr [rcx], r13
+	sete	bl
+	neg	bl
+	lea	rdi, [rdx + 7]
+	test	rdx, rdx
+	cmovns	rdi, rdx
+	sar	rdi, 3
+	mov	r12, r14
+	movzx	r9d, byte ptr [r14 + rdi]
 	xor	bl, r9b
-	mov	byte ptr [r11 + rdi], bl
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB1_29
-# %bb.30:
-	add	r11, 1
-.LBB1_31:
-	sar	r13, 5
+	lea	r10d, [8*rdi]
+	mov	ecx, edx
+	sub	ecx, r10d
+	mov	eax, 1
+                                        # kill: def $cl killed $cl killed $ecx
+	shl	eax, cl
+	and	al, bl
+	xor	al, r9b
+	mov	byte ptr [r14 + rdi], al
+	add	rdx, 1
+	mov	rcx, rsi
+	add	r11, -1
+	jne	.LBB1_48
+.LBB1_49:
+	sub	r15, r8
+	je	.LBB1_189
+# %bb.50:
+	add	r14, 1
+.LBB1_51:
+	lea	rax, [r15 + 31]
+	test	r15, r15
+	cmovns	rax, r15
+	sar	rax, 5
 	cmp	r15, 32
-	jl	.LBB1_108
-# %bb.32:
-	cmp	r13, 32
-	mov	dword ptr [rsp + 28], r14d      # 4-byte Spill
+	jl	.LBB1_55
+# %bb.52:
 	mov	qword ptr [rsp + 280], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 392], r13      # 8-byte Spill
-	jb	.LBB1_35
-# %bb.33:
-	mov	rax, r13
-	shl	rax, 5
-	add	rax, rsi
-	cmp	r11, rax
-	jae	.LBB1_166
-# %bb.34:
-	lea	rax, [r11 + 4*r13]
-	cmp	rsi, rax
-	jae	.LBB1_166
-.LBB1_35:
-	xor	eax, eax
-	mov	qword ptr [rsp + 384], rax      # 8-byte Spill
-	mov	r12, rsi
-	mov	qword ptr [rsp + 376], r11      # 8-byte Spill
-.LBB1_36:
-	sub	r13, qword ptr [rsp + 384]      # 8-byte Folded Reload
-	mov	qword ptr [rsp + 152], r13      # 8-byte Spill
+	mov	qword ptr [rsp + 176], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 160], rax      # 8-byte Spill
 	.p2align	4, 0x90
-.LBB1_37:                               # =>This Inner Loop Header: Depth=1
-	mov	rcx, r12
-	cmp	byte ptr [r12], r14b
-	sete	byte ptr [rsp + 48]             # 1-byte Folded Spill
-	cmp	byte ptr [r12 + 1], r14b
-	sete	r8b
-	cmp	byte ptr [r12 + 2], r14b
-	sete	r15b
-	cmp	byte ptr [r12 + 3], r14b
-	sete	r13b
-	cmp	byte ptr [r12 + 4], r14b
-	sete	byte ptr [rsp + 160]            # 1-byte Folded Spill
-	cmp	byte ptr [r12 + 5], r14b
+.LBB1_53:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 272], r14      # 8-byte Spill
+	cmp	qword ptr [rsi], r13
+	sete	byte ptr [rsp + 168]            # 1-byte Folded Spill
+	cmp	qword ptr [rsi + 8], r13
+	sete	r10b
+	cmp	qword ptr [rsi + 16], r13
+	sete	r14b
+	cmp	qword ptr [rsi + 24], r13
+	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
+	cmp	qword ptr [rsi + 32], r13
+	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
+	cmp	qword ptr [rsi + 40], r13
 	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
-	cmp	byte ptr [r12 + 6], r14b
-	sete	al
-	cmp	byte ptr [r12 + 7], r14b
-	sete	r11b
-	cmp	byte ptr [r12 + 8], r14b
-	sete	byte ptr [rsp + 320]            # 1-byte Folded Spill
-	cmp	byte ptr [r12 + 9], r14b
-	sete	dl
-	cmp	byte ptr [r12 + 10], r14b
-	sete	sil
-	cmp	byte ptr [r12 + 11], r14b
-	sete	dil
-	cmp	byte ptr [r12 + 12], r14b
-	sete	r10b
-	cmp	byte ptr [r12 + 13], r14b
-	sete	r12b
-	cmp	byte ptr [rcx + 14], r14b
-	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 15], r14b
-	sete	r9b
-	cmp	byte ptr [rcx + 16], r14b
-	sete	byte ptr [rsp + 288]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 17], r14b
-	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 18], r14b
-	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 19], r14b
-	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 20], r14b
-	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 21], r14b
-	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 22], r14b
-	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 23], r14b
-	sete	r14b
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 24], bl
-	sete	byte ptr [rsp + 272]            # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 25], bl
-	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 26], bl
-	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 27], bl
-	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 28], bl
-	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 29], bl
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 30], bl
-	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 31], bl
-	sete	bl
-	add	r8b, r8b
-	add	r8b, byte ptr [rsp + 48]        # 1-byte Folded Reload
-	shl	al, 6
-	shl	r11b, 7
-	or	r11b, al
-	shl	r15b, 2
-	or	r15b, r8b
-	add	dl, dl
-	add	dl, byte ptr [rsp + 320]        # 1-byte Folded Reload
-	shl	r13b, 3
-	or	r13b, r15b
-	shl	sil, 2
-	or	sil, dl
-	movzx	edx, byte ptr [rsp + 160]       # 1-byte Folded Reload
-	shl	dl, 4
-	or	dl, r13b
-	mov	r8d, edx
-	shl	dil, 3
-	or	dil, sil
-	movzx	edx, byte ptr [rsp + 112]       # 1-byte Folded Reload
-	shl	dl, 5
-	or	dl, r8b
-	shl	r10b, 4
-	or	r10b, dil
-	shl	r12b, 5
-	or	r12b, r10b
-	movzx	esi, byte ptr [rsp + 104]       # 1-byte Folded Reload
-	shl	sil, 6
-	shl	r9b, 7
-	or	r9b, sil
-	or	r11b, dl
-	or	r9b, r12b
-	movzx	eax, byte ptr [rsp + 128]       # 1-byte Folded Reload
-	add	al, al
-	add	al, byte ptr [rsp + 288]        # 1-byte Folded Reload
-	movzx	edx, byte ptr [rsp + 120]       # 1-byte Folded Reload
-	shl	dl, 2
-	or	dl, al
-	mov	esi, edx
-	movzx	edx, byte ptr [rsp + 136]       # 1-byte Folded Reload
-	shl	dl, 3
-	or	dl, sil
-	mov	esi, edx
-	movzx	edx, byte ptr [rsp + 144]       # 1-byte Folded Reload
-	shl	dl, 4
-	or	dl, sil
-	mov	esi, edx
-	movzx	edx, byte ptr [rsp + 72]        # 1-byte Folded Reload
-	shl	dl, 5
-	or	dl, sil
-	mov	rsi, qword ptr [rsp + 376]      # 8-byte Reload
-	mov	byte ptr [rsi], r11b
-	movzx	edi, byte ptr [rsp + 88]        # 1-byte Folded Reload
-	shl	dil, 6
-	shl	r14b, 7
-	or	r14b, dil
-	mov	byte ptr [rsi + 1], r9b
-	or	r14b, dl
-	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
-	add	al, al
-	add	al, byte ptr [rsp + 272]        # 1-byte Folded Reload
-	mov	edx, eax
-	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
-	shl	al, 2
-	or	al, dl
-	mov	edx, eax
-	movzx	eax, byte ptr [rsp + 64]        # 1-byte Folded Reload
-	shl	al, 3
-	or	al, dl
-	mov	edx, eax
-	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
-	shl	al, 4
-	or	al, dl
-	mov	edx, eax
-	movzx	eax, byte ptr [rsp + 40]        # 1-byte Folded Reload
-	shl	al, 5
-	or	al, dl
-	movzx	edx, byte ptr [rsp + 32]        # 1-byte Folded Reload
-	shl	dl, 6
-	shl	bl, 7
-	or	bl, dl
-	or	bl, al
-	mov	byte ptr [rsi + 2], r14b
-	mov	r14d, dword ptr [rsp + 28]      # 4-byte Reload
-	mov	byte ptr [rsi + 3], bl
-	lea	r12, [rcx + 32]
-	add	rsi, 4
-	mov	qword ptr [rsp + 376], rsi      # 8-byte Spill
-	add	qword ptr [rsp + 152], -1       # 8-byte Folded Spill
-	jne	.LBB1_37
-# %bb.38:
-	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
-	mov	r13, qword ptr [rsp + 392]      # 8-byte Reload
-	jmp	.LBB1_109
-.LBB1_39:
-	cmp	edi, 7
-	je	.LBB1_93
-# %bb.40:
-	cmp	edi, 8
-	jne	.LBB1_165
-# %bb.41:
-	mov	r13, qword ptr [rdx]
-	lea	r15, [r10 + 31]
-	test	r10, r10
-	cmovns	r15, r10
-	lea	eax, [r9 + 7]
-	test	r9d, r9d
-	cmovns	eax, r9d
-	and	eax, -8
-	sub	r9d, eax
-	je	.LBB1_45
-# %bb.42:
-	movsxd	rax, r9d
-	.p2align	4, 0x90
-.LBB1_43:                               # =>This Inner Loop Header: Depth=1
-	cmp	qword ptr [rsi], r13
-	lea	rsi, [rsi + 8]
-	sete	dl
-	neg	dl
-	lea	rbx, [rax + 7]
-	test	rax, rax
-	cmovns	rbx, rax
-	sar	rbx, 3
-	movzx	r8d, byte ptr [r11 + rbx]
-	xor	dl, r8b
-	lea	edi, [8*rbx]
-	mov	ecx, eax
-	sub	ecx, edi
-	mov	edi, 1
-                                        # kill: def $cl killed $cl killed $ecx
-	shl	edi, cl
-	and	dil, dl
-	xor	dil, r8b
-	mov	byte ptr [r11 + rbx], dil
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB1_43
-# %bb.44:
-	add	r11, 1
-.LBB1_45:
-	sar	r15, 5
-	cmp	r10, 32
-	jl	.LBB1_112
-# %bb.46:
-	mov	qword ptr [rsp + 280], r10      # 8-byte Spill
-	mov	qword ptr [rsp + 168], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 176], r15      # 8-byte Spill
-	.p2align	4, 0x90
-.LBB1_47:                               # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 272], r11      # 8-byte Spill
-	cmp	qword ptr [rsi], r13
-	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
-	cmp	qword ptr [rsi + 8], r13
-	sete	r10b
-	cmp	qword ptr [rsi + 16], r13
-	sete	r14b
-	cmp	qword ptr [rsi + 24], r13
-	sete	byte ptr [rsp + 160]            # 1-byte Folded Spill
-	cmp	qword ptr [rsi + 32], r13
-	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
-	cmp	qword ptr [rsi + 40], r13
-	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
-	cmp	qword ptr [rsi + 48], r13
+	cmp	qword ptr [rsi + 48], r13
 	sete	al
 	cmp	qword ptr [rsi + 56], r13
 	sete	bl
 	cmp	qword ptr [rsi + 64], r13
-	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 72], r13
 	sete	dil
 	cmp	qword ptr [rsi + 80], r13
@@ -3871,33 +3955,33 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	qword ptr [rsi + 104], r13
 	sete	r12b
 	cmp	qword ptr [rsi + 112], r13
-	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 120], r13
-	sete	cl
+	sete	dl
 	cmp	qword ptr [rsi + 128], r13
-	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 136], r13
-	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 144], r13
-	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 152], r13
-	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 160], r13
-	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 168], r13
-	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 176], r13
-	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 184], r13
 	sete	r15b
 	cmp	qword ptr [rsi + 192], r13
-	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 200], r13
 	sete	byte ptr [rsp + 48]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 208], r13
 	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 216], r13
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 224], r13
 	sete	byte ptr [rsp + 320]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 232], r13
@@ -3905,156 +3989,210 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	qword ptr [rsi + 240], r13
 	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 248], r13
-	sete	dl
+	sete	cl
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 152]      # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 168]      # 1-byte Folded Reload
 	shl	al, 6
 	shl	bl, 7
 	or	bl, al
 	shl	r14b, 2
 	or	r14b, r10b
 	add	dil, dil
-	add	dil, byte ptr [rsp + 104]       # 1-byte Folded Reload
-	movzx	eax, byte ptr [rsp + 160]       # 1-byte Folded Reload
+	add	dil, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
 	shl	al, 3
 	or	al, r14b
 	mov	r10d, eax
+	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
 	shl	r8b, 2
 	or	r8b, dil
-	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r10b
 	mov	edi, eax
 	shl	r9b, 3
 	or	r9b, r8b
-	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 112]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
 	shl	r11b, 4
 	or	r11b, r9b
 	shl	r12b, 5
 	or	r12b, r11b
-	mov	r11, qword ptr [rsp + 272]      # 8-byte Reload
-	movzx	edi, byte ptr [rsp + 112]       # 1-byte Folded Reload
+	movzx	edi, byte ptr [rsp + 152]       # 1-byte Folded Reload
 	shl	dil, 6
-	shl	cl, 7
-	or	cl, dil
+	shl	dl, 7
+	or	dl, dil
 	or	bl, al
-	or	cl, r12b
-	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
+	or	dl, r12b
+	movzx	eax, byte ptr [rsp + 64]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 72]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 96]         # 1-byte Folded Reload
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 128]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 72]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 104]       # 1-byte Folded Reload
 	shl	al, 4
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
-	mov	byte ptr [r11], bl
-	movzx	ebx, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	mov	byte ptr [r14], bl
+	movzx	ebx, byte ptr [rsp + 128]       # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r15b, 7
 	or	r15b, bl
-	mov	byte ptr [r11 + 1], cl
+	mov	byte ptr [r14 + 1], dl
 	or	r15b, al
 	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 32]         # 1-byte Folded Reload
-	mov	ecx, eax
+	add	al, byte ptr [rsp + 40]         # 1-byte Folded Reload
+	mov	edx, eax
 	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
 	shl	al, 2
-	or	al, cl
-	mov	ecx, eax
-	movzx	eax, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 32]        # 1-byte Folded Reload
 	shl	al, 3
-	or	al, cl
-	mov	ecx, eax
+	or	al, dl
+	mov	edx, eax
 	movzx	eax, byte ptr [rsp + 320]       # 1-byte Folded Reload
 	shl	al, 4
-	or	al, cl
-	mov	ecx, eax
+	or	al, dl
+	mov	edx, eax
 	movzx	eax, byte ptr [rsp + 288]       # 1-byte Folded Reload
 	shl	al, 5
-	or	al, cl
-	movzx	ecx, byte ptr [rsp + 28]        # 1-byte Folded Reload
-	shl	cl, 6
-	shl	dl, 7
-	or	dl, cl
-	or	dl, al
-	mov	byte ptr [r11 + 2], r15b
-	mov	byte ptr [r11 + 3], dl
+	or	al, dl
+	movzx	edx, byte ptr [rsp + 28]        # 1-byte Folded Reload
+	shl	dl, 6
+	shl	cl, 7
+	or	cl, dl
+	or	cl, al
+	mov	byte ptr [r14 + 2], r15b
+	mov	byte ptr [r14 + 3], cl
 	add	rsi, 256
-	add	r11, 4
-	add	qword ptr [rsp + 176], -1       # 8-byte Folded Spill
-	jne	.LBB1_47
-# %bb.48:
-	mov	r14, r11
-	mov	r10, qword ptr [rsp + 280]      # 8-byte Reload
-	mov	r15, qword ptr [rsp + 168]      # 8-byte Reload
-	shl	r15, 5
-	cmp	r15, r10
-	jl	.LBB1_113
-	jmp	.LBB1_165
-.LBB1_49:
+	add	r14, 4
+	add	qword ptr [rsp + 160], -1       # 8-byte Folded Spill
+	jne	.LBB1_53
+# %bb.54:
+	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
+	mov	rax, qword ptr [rsp + 176]      # 8-byte Reload
+.LBB1_55:
+	shl	rax, 5
+	mov	r8, r15
+	sub	r8, rax
+	jle	.LBB1_189
+# %bb.56:
+	or	rax, 1
+	cmp	r15, rax
+	je	.LBB1_98
+# %bb.57:
+	mov	r10, r8
+	and	r10, -2
+	xor	r11d, r11d
+	.p2align	4, 0x90
+.LBB1_58:                               # =>This Inner Loop Header: Depth=1
+	cmp	qword ptr [rsi], r13
+	sete	al
+	neg	al
+	mov	rdi, r11
+	shr	rdi, 3
+	mov	r15, r14
+	movzx	r9d, byte ptr [r14 + rdi]
+	mov	ecx, r11d
+	and	cl, 6
+	mov	bl, 1
+	shl	bl, cl
+	xor	al, r9b
+	and	bl, al
+	xor	bl, r9b
+	mov	byte ptr [r14 + rdi], bl
+	add	r11, 2
+	cmp	qword ptr [rsi + 8], r13
+	lea	rsi, [rsi + 16]
+	sete	al
+	neg	al
+	xor	al, bl
+	or	cl, 1
+	mov	dl, 1
+	shl	dl, cl
+	and	dl, al
+	xor	dl, bl
+	mov	byte ptr [r14 + rdi], dl
+	cmp	r10, r11
+	jne	.LBB1_58
+	jmp	.LBB1_170
+.LBB1_59:
 	movzx	r13d, word ptr [rdx]
-	lea	r15, [r10 + 31]
-	test	r10, r10
-	cmovns	r15, r10
 	lea	eax, [r9 + 7]
 	test	r9d, r9d
 	cmovns	eax, r9d
 	and	eax, -8
 	sub	r9d, eax
-	je	.LBB1_53
-# %bb.50:
-	movsxd	rax, r9d
+	je	.LBB1_65
+# %bb.60:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r15
+	cmovg	r8, r15
+	test	r8, r8
+	jle	.LBB1_63
+# %bb.61:
+	movsxd	rdx, r9d
+	mov	r11, r8
+	mov	rcx, rsi
 	.p2align	4, 0x90
-.LBB1_51:                               # =>This Inner Loop Header: Depth=1
-	cmp	word ptr [rsi], r13w
-	lea	rsi, [rsi + 2]
-	sete	dl
-	neg	dl
-	lea	rbx, [rax + 7]
-	test	rax, rax
-	cmovns	rbx, rax
-	sar	rbx, 3
-	movzx	r8d, byte ptr [r11 + rbx]
-	xor	dl, r8b
-	lea	edi, [8*rbx]
-	mov	ecx, eax
-	sub	ecx, edi
-	mov	edi, 1
+.LBB1_62:                               # =>This Inner Loop Header: Depth=1
+	lea	rsi, [rcx + 2]
+	cmp	word ptr [rcx], r13w
+	sete	bl
+	neg	bl
+	lea	rdi, [rdx + 7]
+	test	rdx, rdx
+	cmovns	rdi, rdx
+	sar	rdi, 3
+	mov	r12, r14
+	movzx	r9d, byte ptr [r14 + rdi]
+	xor	bl, r9b
+	lea	r10d, [8*rdi]
+	mov	ecx, edx
+	sub	ecx, r10d
+	mov	eax, 1
                                         # kill: def $cl killed $cl killed $ecx
-	shl	edi, cl
-	and	dil, dl
-	xor	dil, r8b
-	mov	byte ptr [r11 + rbx], dil
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB1_51
-# %bb.52:
-	add	r11, 1
-.LBB1_53:
-	sar	r15, 5
-	cmp	r10, 32
-	jl	.LBB1_116
-# %bb.54:
-	mov	qword ptr [rsp + 280], r10      # 8-byte Spill
-	mov	qword ptr [rsp + 168], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 176], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 272], r11      # 8-byte Spill
+	shl	eax, cl
+	and	al, bl
+	xor	al, r9b
+	mov	byte ptr [r14 + rdi], al
+	add	rdx, 1
+	mov	rcx, rsi
+	add	r11, -1
+	jne	.LBB1_62
+.LBB1_63:
+	sub	r15, r8
+	je	.LBB1_189
+# %bb.64:
+	add	r14, 1
+.LBB1_65:
+	lea	rax, [r15 + 31]
+	test	r15, r15
+	cmovns	rax, r15
+	sar	rax, 5
+	cmp	r15, 32
+	jl	.LBB1_69
+# %bb.66:
+	mov	qword ptr [rsp + 280], r15      # 8-byte Spill
+	mov	qword ptr [rsp + 176], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 160], rax      # 8-byte Spill
 	.p2align	4, 0x90
-.LBB1_55:                               # =>This Inner Loop Header: Depth=1
+.LBB1_67:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 272], r14      # 8-byte Spill
 	cmp	word ptr [rsi], r13w
 	sete	al
 	cmp	word ptr [rsi + 2], r13w
@@ -4062,17 +4200,17 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	word ptr [rsi + 4], r13w
 	sete	r14b
 	cmp	word ptr [rsi + 6], r13w
-	sete	byte ptr [rsp + 160]            # 1-byte Folded Spill
-	cmp	word ptr [rsi + 8], r13w
 	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
+	cmp	word ptr [rsi + 8], r13w
+	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 10], r13w
-	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 12], r13w
-	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 168]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 14], r13w
 	sete	bl
 	cmp	word ptr [rsi + 16], r13w
-	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 18], r13w
 	sete	dil
 	cmp	word ptr [rsi + 20], r13w
@@ -4084,33 +4222,33 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	word ptr [rsi + 26], r13w
 	sete	r12b
 	cmp	word ptr [rsi + 28], r13w
-	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 30], r13w
-	sete	cl
+	sete	dl
 	cmp	word ptr [rsi + 32], r13w
-	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 34], r13w
-	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 36], r13w
-	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 38], r13w
-	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 40], r13w
-	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 42], r13w
-	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 44], r13w
-	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 46], r13w
 	sete	r15b
 	cmp	word ptr [rsi + 48], r13w
-	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 50], r13w
 	sete	byte ptr [rsp + 48]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 52], r13w
 	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 54], r13w
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 56], r13w
 	sete	byte ptr [rsp + 320]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 58], r13w
@@ -4118,177 +4256,229 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	word ptr [rsi + 60], r13w
 	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 62], r13w
-	sete	dl
+	sete	cl
 	add	r10b, r10b
 	or	r10b, al
-	movzx	eax, byte ptr [rsp + 152]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 168]       # 1-byte Folded Reload
 	shl	al, 6
 	shl	bl, 7
 	or	bl, al
 	shl	r14b, 2
 	or	r14b, r10b
 	add	dil, dil
-	add	dil, byte ptr [rsp + 112]       # 1-byte Folded Reload
-	movzx	eax, byte ptr [rsp + 160]       # 1-byte Folded Reload
+	add	dil, byte ptr [rsp + 152]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
 	shl	al, 3
 	or	al, r14b
 	mov	r10d, eax
+	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
 	shl	r8b, 2
 	or	r8b, dil
-	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r10b
 	mov	edi, eax
 	shl	r9b, 3
 	or	r9b, r8b
-	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 112]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
 	shl	r11b, 4
 	or	r11b, r9b
 	shl	r12b, 5
 	or	r12b, r11b
-	movzx	edi, byte ptr [rsp + 104]       # 1-byte Folded Reload
+	movzx	edi, byte ptr [rsp + 144]       # 1-byte Folded Reload
 	shl	dil, 6
-	shl	cl, 7
-	or	cl, dil
+	shl	dl, 7
+	or	dl, dil
 	or	bl, al
-	or	cl, r12b
-	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
+	or	dl, r12b
+	movzx	eax, byte ptr [rsp + 64]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 72]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 96]         # 1-byte Folded Reload
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 128]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 72]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 104]       # 1-byte Folded Reload
 	shl	al, 4
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
-	mov	edi, eax
-	mov	rax, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	byte ptr [rax], bl
-	movzx	ebx, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	mov	byte ptr [r14], bl
+	movzx	ebx, byte ptr [rsp + 128]       # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r15b, 7
 	or	r15b, bl
-	mov	byte ptr [rax + 1], cl
-	or	r15b, dil
-	movzx	ecx, byte ptr [rsp + 48]        # 1-byte Folded Reload
-	add	cl, cl
-	add	cl, byte ptr [rsp + 32]         # 1-byte Folded Reload
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 56]        # 1-byte Folded Reload
-	shl	cl, 2
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 40]        # 1-byte Folded Reload
-	shl	cl, 3
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 320]       # 1-byte Folded Reload
-	shl	cl, 4
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 288]       # 1-byte Folded Reload
-	shl	cl, 5
-	or	cl, bl
-	movzx	ebx, byte ptr [rsp + 28]        # 1-byte Folded Reload
-	shl	bl, 6
-	shl	dl, 7
-	or	dl, bl
-	or	dl, cl
-	mov	byte ptr [rax + 2], r15b
-	mov	byte ptr [rax + 3], dl
+	mov	byte ptr [r14 + 1], dl
+	or	r15b, al
+	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
+	add	al, al
+	add	al, byte ptr [rsp + 40]         # 1-byte Folded Reload
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
+	shl	al, 2
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 32]        # 1-byte Folded Reload
+	shl	al, 3
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 320]       # 1-byte Folded Reload
+	shl	al, 4
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 288]       # 1-byte Folded Reload
+	shl	al, 5
+	or	al, dl
+	movzx	edx, byte ptr [rsp + 28]        # 1-byte Folded Reload
+	shl	dl, 6
+	shl	cl, 7
+	or	cl, dl
+	or	cl, al
+	mov	byte ptr [r14 + 2], r15b
+	mov	byte ptr [r14 + 3], cl
 	add	rsi, 64
-	add	rax, 4
-	mov	qword ptr [rsp + 272], rax      # 8-byte Spill
-	add	qword ptr [rsp + 176], -1       # 8-byte Folded Spill
-	jne	.LBB1_55
-# %bb.56:
-	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	r10, qword ptr [rsp + 280]      # 8-byte Reload
-	mov	r15, qword ptr [rsp + 168]      # 8-byte Reload
-	shl	r15, 5
-	cmp	r15, r10
-	jl	.LBB1_117
-	jmp	.LBB1_165
-.LBB1_57:
+	add	r14, 4
+	add	qword ptr [rsp + 160], -1       # 8-byte Folded Spill
+	jne	.LBB1_67
+# %bb.68:
+	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
+	mov	rax, qword ptr [rsp + 176]      # 8-byte Reload
+.LBB1_69:
+	shl	rax, 5
+	mov	r8, r15
+	sub	r8, rax
+	jle	.LBB1_189
+# %bb.70:
+	or	rax, 1
+	cmp	r15, rax
+	je	.LBB1_85
+# %bb.71:
+	mov	r10, r8
+	and	r10, -2
+	xor	r11d, r11d
+	.p2align	4, 0x90
+.LBB1_72:                               # =>This Inner Loop Header: Depth=1
+	cmp	word ptr [rsi], r13w
+	sete	al
+	neg	al
+	mov	rdi, r11
+	shr	rdi, 3
+	mov	r15, r14
+	movzx	r9d, byte ptr [r14 + rdi]
+	mov	ecx, r11d
+	and	cl, 6
+	mov	bl, 1
+	shl	bl, cl
+	xor	al, r9b
+	and	bl, al
+	xor	bl, r9b
+	mov	byte ptr [r14 + rdi], bl
+	add	r11, 2
+	cmp	word ptr [rsi + 2], r13w
+	lea	rsi, [rsi + 4]
+	sete	al
+	neg	al
+	xor	al, bl
+	or	cl, 1
+	mov	dl, 1
+	shl	dl, cl
+	and	dl, al
+	xor	dl, bl
+	mov	byte ptr [r14 + rdi], dl
+	cmp	r10, r11
+	jne	.LBB1_72
+	jmp	.LBB1_166
+.LBB1_73:
 	movzx	r13d, word ptr [rdx]
-	lea	r15, [r10 + 31]
-	test	r10, r10
-	cmovns	r15, r10
 	lea	eax, [r9 + 7]
 	test	r9d, r9d
 	cmovns	eax, r9d
 	and	eax, -8
 	sub	r9d, eax
-	je	.LBB1_61
-# %bb.58:
-	movsxd	rax, r9d
+	je	.LBB1_79
+# %bb.74:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r15
+	cmovg	r8, r15
+	test	r8, r8
+	jle	.LBB1_77
+# %bb.75:
+	movsxd	rdx, r9d
+	mov	r11, r8
+	mov	rcx, rsi
 	.p2align	4, 0x90
-.LBB1_59:                               # =>This Inner Loop Header: Depth=1
-	cmp	word ptr [rsi], r13w
-	lea	rsi, [rsi + 2]
-	sete	dl
-	neg	dl
-	lea	rbx, [rax + 7]
-	test	rax, rax
-	cmovns	rbx, rax
-	sar	rbx, 3
-	movzx	r8d, byte ptr [r11 + rbx]
-	xor	dl, r8b
-	lea	edi, [8*rbx]
-	mov	ecx, eax
-	sub	ecx, edi
-	mov	edi, 1
+.LBB1_76:                               # =>This Inner Loop Header: Depth=1
+	lea	rsi, [rcx + 2]
+	cmp	word ptr [rcx], r13w
+	sete	bl
+	neg	bl
+	lea	rdi, [rdx + 7]
+	test	rdx, rdx
+	cmovns	rdi, rdx
+	sar	rdi, 3
+	mov	r12, r14
+	movzx	r9d, byte ptr [r14 + rdi]
+	xor	bl, r9b
+	lea	r10d, [8*rdi]
+	mov	ecx, edx
+	sub	ecx, r10d
+	mov	eax, 1
                                         # kill: def $cl killed $cl killed $ecx
-	shl	edi, cl
-	and	dil, dl
-	xor	dil, r8b
-	mov	byte ptr [r11 + rbx], dil
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB1_59
-# %bb.60:
-	add	r11, 1
-.LBB1_61:
-	sar	r15, 5
-	cmp	r10, 32
-	jl	.LBB1_120
-# %bb.62:
-	mov	qword ptr [rsp + 280], r10      # 8-byte Spill
-	mov	qword ptr [rsp + 168], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 176], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 272], r11      # 8-byte Spill
+	shl	eax, cl
+	and	al, bl
+	xor	al, r9b
+	mov	byte ptr [r14 + rdi], al
+	add	rdx, 1
+	mov	rcx, rsi
+	add	r11, -1
+	jne	.LBB1_76
+.LBB1_77:
+	sub	r15, r8
+	je	.LBB1_189
+# %bb.78:
+	add	r14, 1
+.LBB1_79:
+	lea	rax, [r15 + 31]
+	test	r15, r15
+	cmovns	rax, r15
+	sar	rax, 5
+	cmp	r15, 32
+	jl	.LBB1_83
+# %bb.80:
+	mov	qword ptr [rsp + 280], r15      # 8-byte Spill
+	mov	qword ptr [rsp + 176], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 160], rax      # 8-byte Spill
 	.p2align	4, 0x90
-.LBB1_63:                               # =>This Inner Loop Header: Depth=1
+.LBB1_81:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 272], r14      # 8-byte Spill
 	cmp	word ptr [rsi], r13w
-	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 168]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 2], r13w
 	sete	r10b
 	cmp	word ptr [rsi + 4], r13w
 	sete	r14b
 	cmp	word ptr [rsi + 6], r13w
-	sete	byte ptr [rsp + 160]            # 1-byte Folded Spill
-	cmp	word ptr [rsi + 8], r13w
 	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
+	cmp	word ptr [rsi + 8], r13w
+	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 10], r13w
-	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 12], r13w
 	sete	al
 	cmp	word ptr [rsi + 14], r13w
 	sete	bl
 	cmp	word ptr [rsi + 16], r13w
-	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 18], r13w
 	sete	dil
 	cmp	word ptr [rsi + 20], r13w
@@ -4300,33 +4490,33 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	word ptr [rsi + 26], r13w
 	sete	r12b
 	cmp	word ptr [rsi + 28], r13w
-	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 30], r13w
-	sete	cl
+	sete	dl
 	cmp	word ptr [rsi + 32], r13w
-	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 34], r13w
-	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 36], r13w
-	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 38], r13w
-	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 40], r13w
-	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 42], r13w
-	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 44], r13w
-	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 46], r13w
 	sete	r15b
 	cmp	word ptr [rsi + 48], r13w
-	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 50], r13w
 	sete	byte ptr [rsp + 48]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 52], r13w
 	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 54], r13w
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 56], r13w
 	sete	byte ptr [rsp + 320]            # 1-byte Folded Spill
 	cmp	word ptr [rsi + 58], r13w
@@ -4334,176 +4524,195 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	word ptr [rsi + 60], r13w
 	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	word ptr [rsi + 62], r13w
-	sete	dl
+	sete	cl
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 152]      # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 168]      # 1-byte Folded Reload
 	shl	al, 6
 	shl	bl, 7
 	or	bl, al
 	shl	r14b, 2
 	or	r14b, r10b
 	add	dil, dil
-	add	dil, byte ptr [rsp + 104]       # 1-byte Folded Reload
-	movzx	eax, byte ptr [rsp + 160]       # 1-byte Folded Reload
+	add	dil, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
 	shl	al, 3
 	or	al, r14b
 	mov	r10d, eax
+	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
 	shl	r8b, 2
 	or	r8b, dil
-	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r10b
 	mov	edi, eax
 	shl	r9b, 3
 	or	r9b, r8b
-	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 112]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
 	shl	r11b, 4
 	or	r11b, r9b
 	shl	r12b, 5
 	or	r12b, r11b
-	movzx	edi, byte ptr [rsp + 112]       # 1-byte Folded Reload
+	movzx	edi, byte ptr [rsp + 152]       # 1-byte Folded Reload
 	shl	dil, 6
-	shl	cl, 7
-	or	cl, dil
+	shl	dl, 7
+	or	dl, dil
 	or	bl, al
-	or	cl, r12b
-	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
+	or	dl, r12b
+	movzx	eax, byte ptr [rsp + 64]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 72]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 96]         # 1-byte Folded Reload
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 128]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 72]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 104]       # 1-byte Folded Reload
 	shl	al, 4
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
-	mov	edi, eax
-	mov	rax, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	byte ptr [rax], bl
-	movzx	ebx, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	mov	byte ptr [r14], bl
+	movzx	ebx, byte ptr [rsp + 128]       # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r15b, 7
 	or	r15b, bl
-	mov	byte ptr [rax + 1], cl
-	or	r15b, dil
-	movzx	ecx, byte ptr [rsp + 48]        # 1-byte Folded Reload
-	add	cl, cl
-	add	cl, byte ptr [rsp + 32]         # 1-byte Folded Reload
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 56]        # 1-byte Folded Reload
-	shl	cl, 2
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 40]        # 1-byte Folded Reload
-	shl	cl, 3
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 320]       # 1-byte Folded Reload
-	shl	cl, 4
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 288]       # 1-byte Folded Reload
-	shl	cl, 5
-	or	cl, bl
-	movzx	ebx, byte ptr [rsp + 28]        # 1-byte Folded Reload
-	shl	bl, 6
-	shl	dl, 7
-	or	dl, bl
-	or	dl, cl
-	mov	byte ptr [rax + 2], r15b
-	mov	byte ptr [rax + 3], dl
+	mov	byte ptr [r14 + 1], dl
+	or	r15b, al
+	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
+	add	al, al
+	add	al, byte ptr [rsp + 40]         # 1-byte Folded Reload
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
+	shl	al, 2
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 32]        # 1-byte Folded Reload
+	shl	al, 3
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 320]       # 1-byte Folded Reload
+	shl	al, 4
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 288]       # 1-byte Folded Reload
+	shl	al, 5
+	or	al, dl
+	movzx	edx, byte ptr [rsp + 28]        # 1-byte Folded Reload
+	shl	dl, 6
+	shl	cl, 7
+	or	cl, dl
+	or	cl, al
+	mov	byte ptr [r14 + 2], r15b
+	mov	byte ptr [r14 + 3], cl
 	add	rsi, 64
-	add	rax, 4
-	mov	qword ptr [rsp + 272], rax      # 8-byte Spill
-	add	qword ptr [rsp + 176], -1       # 8-byte Folded Spill
-	jne	.LBB1_63
-# %bb.64:
-	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	r10, qword ptr [rsp + 280]      # 8-byte Reload
-	mov	r15, qword ptr [rsp + 168]      # 8-byte Reload
-	shl	r15, 5
-	cmp	r15, r10
-	jl	.LBB1_121
-	jmp	.LBB1_165
-.LBB1_65:
+	add	r14, 4
+	add	qword ptr [rsp + 160], -1       # 8-byte Folded Spill
+	jne	.LBB1_81
+# %bb.82:
+	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
+	mov	rax, qword ptr [rsp + 176]      # 8-byte Reload
+.LBB1_83:
+	shl	rax, 5
+	mov	r8, r15
+	sub	r8, rax
+	jle	.LBB1_189
+# %bb.84:
+	or	rax, 1
+	cmp	r15, rax
+	jne	.LBB1_164
+.LBB1_85:
+	xor	r11d, r11d
+	jmp	.LBB1_166
+.LBB1_86:
 	mov	r13, qword ptr [rdx]
-	lea	r15, [r10 + 31]
-	test	r10, r10
-	cmovns	r15, r10
 	lea	eax, [r9 + 7]
 	test	r9d, r9d
 	cmovns	eax, r9d
 	and	eax, -8
 	sub	r9d, eax
-	je	.LBB1_69
-# %bb.66:
-	movsxd	rax, r9d
+	je	.LBB1_92
+# %bb.87:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r15
+	cmovg	r8, r15
+	test	r8, r8
+	jle	.LBB1_90
+# %bb.88:
+	movsxd	rdx, r9d
+	mov	r11, r8
+	mov	rcx, rsi
 	.p2align	4, 0x90
-.LBB1_67:                               # =>This Inner Loop Header: Depth=1
-	cmp	qword ptr [rsi], r13
-	lea	rsi, [rsi + 8]
-	sete	dl
-	neg	dl
-	lea	rbx, [rax + 7]
-	test	rax, rax
-	cmovns	rbx, rax
-	sar	rbx, 3
-	movzx	r8d, byte ptr [r11 + rbx]
-	xor	dl, r8b
-	lea	edi, [8*rbx]
-	mov	ecx, eax
-	sub	ecx, edi
-	mov	edi, 1
+.LBB1_89:                               # =>This Inner Loop Header: Depth=1
+	lea	rsi, [rcx + 8]
+	cmp	qword ptr [rcx], r13
+	sete	bl
+	neg	bl
+	lea	rdi, [rdx + 7]
+	test	rdx, rdx
+	cmovns	rdi, rdx
+	sar	rdi, 3
+	mov	r12, r14
+	movzx	r9d, byte ptr [r14 + rdi]
+	xor	bl, r9b
+	lea	r10d, [8*rdi]
+	mov	ecx, edx
+	sub	ecx, r10d
+	mov	eax, 1
                                         # kill: def $cl killed $cl killed $ecx
-	shl	edi, cl
-	and	dil, dl
-	xor	dil, r8b
-	mov	byte ptr [r11 + rbx], dil
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB1_67
-# %bb.68:
-	add	r11, 1
-.LBB1_69:
-	sar	r15, 5
-	cmp	r10, 32
-	jl	.LBB1_123
-# %bb.70:
-	mov	qword ptr [rsp + 280], r10      # 8-byte Spill
-	mov	qword ptr [rsp + 168], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 176], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 272], r11      # 8-byte Spill
+	shl	eax, cl
+	and	al, bl
+	xor	al, r9b
+	mov	byte ptr [r14 + rdi], al
+	add	rdx, 1
+	mov	rcx, rsi
+	add	r11, -1
+	jne	.LBB1_89
+.LBB1_90:
+	sub	r15, r8
+	je	.LBB1_189
+# %bb.91:
+	add	r14, 1
+.LBB1_92:
+	lea	rax, [r15 + 31]
+	test	r15, r15
+	cmovns	rax, r15
+	sar	rax, 5
+	cmp	r15, 32
+	jl	.LBB1_96
+# %bb.93:
+	mov	qword ptr [rsp + 280], r15      # 8-byte Spill
+	mov	qword ptr [rsp + 176], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 160], rax      # 8-byte Spill
 	.p2align	4, 0x90
-.LBB1_71:                               # =>This Inner Loop Header: Depth=1
+.LBB1_94:                               # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 272], r14      # 8-byte Spill
 	cmp	qword ptr [rsi], r13
-	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 168]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 8], r13
 	sete	r10b
 	cmp	qword ptr [rsi + 16], r13
 	sete	r14b
 	cmp	qword ptr [rsi + 24], r13
-	sete	byte ptr [rsp + 160]            # 1-byte Folded Spill
-	cmp	qword ptr [rsi + 32], r13
 	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
+	cmp	qword ptr [rsi + 32], r13
+	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 40], r13
-	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 48], r13
 	sete	al
 	cmp	qword ptr [rsi + 56], r13
 	sete	bl
 	cmp	qword ptr [rsi + 64], r13
-	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 72], r13
 	sete	dil
 	cmp	qword ptr [rsi + 80], r13
@@ -4515,33 +4724,33 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	qword ptr [rsi + 104], r13
 	sete	r12b
 	cmp	qword ptr [rsi + 112], r13
-	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 120], r13
-	sete	cl
+	sete	dl
 	cmp	qword ptr [rsi + 128], r13
-	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 136], r13
-	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 144], r13
-	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 152], r13
-	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 160], r13
-	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 168], r13
-	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 176], r13
-	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 184], r13
 	sete	r15b
 	cmp	qword ptr [rsi + 192], r13
-	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 200], r13
 	sete	byte ptr [rsp + 48]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 208], r13
 	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 216], r13
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 224], r13
 	sete	byte ptr [rsp + 320]            # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 232], r13
@@ -4549,173 +4758,196 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	qword ptr [rsi + 240], r13
 	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	qword ptr [rsi + 248], r13
-	sete	dl
+	sete	cl
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 152]      # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 168]      # 1-byte Folded Reload
 	shl	al, 6
 	shl	bl, 7
 	or	bl, al
 	shl	r14b, 2
 	or	r14b, r10b
 	add	dil, dil
-	add	dil, byte ptr [rsp + 104]       # 1-byte Folded Reload
-	movzx	eax, byte ptr [rsp + 160]       # 1-byte Folded Reload
+	add	dil, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
 	shl	al, 3
 	or	al, r14b
 	mov	r10d, eax
+	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
 	shl	r8b, 2
 	or	r8b, dil
-	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r10b
 	mov	edi, eax
 	shl	r9b, 3
 	or	r9b, r8b
-	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 112]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
 	shl	r11b, 4
 	or	r11b, r9b
 	shl	r12b, 5
 	or	r12b, r11b
-	movzx	edi, byte ptr [rsp + 112]       # 1-byte Folded Reload
+	movzx	edi, byte ptr [rsp + 152]       # 1-byte Folded Reload
 	shl	dil, 6
-	shl	cl, 7
-	or	cl, dil
+	shl	dl, 7
+	or	dl, dil
 	or	bl, al
-	or	cl, r12b
-	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
+	or	dl, r12b
+	movzx	eax, byte ptr [rsp + 64]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 72]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 96]         # 1-byte Folded Reload
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 128]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 72]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 104]       # 1-byte Folded Reload
 	shl	al, 4
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
-	mov	edi, eax
-	mov	rax, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	byte ptr [rax], bl
-	movzx	ebx, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	mov	byte ptr [r14], bl
+	movzx	ebx, byte ptr [rsp + 128]       # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r15b, 7
 	or	r15b, bl
-	mov	byte ptr [rax + 1], cl
-	or	r15b, dil
-	movzx	ecx, byte ptr [rsp + 48]        # 1-byte Folded Reload
-	add	cl, cl
-	add	cl, byte ptr [rsp + 32]         # 1-byte Folded Reload
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 56]        # 1-byte Folded Reload
-	shl	cl, 2
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 40]        # 1-byte Folded Reload
-	shl	cl, 3
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 320]       # 1-byte Folded Reload
-	shl	cl, 4
-	or	cl, bl
-	mov	ebx, ecx
-	movzx	ecx, byte ptr [rsp + 288]       # 1-byte Folded Reload
-	shl	cl, 5
-	or	cl, bl
-	movzx	ebx, byte ptr [rsp + 28]        # 1-byte Folded Reload
-	shl	bl, 6
-	shl	dl, 7
-	or	dl, bl
-	or	dl, cl
-	mov	byte ptr [rax + 2], r15b
-	mov	byte ptr [rax + 3], dl
+	mov	byte ptr [r14 + 1], dl
+	or	r15b, al
+	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
+	add	al, al
+	add	al, byte ptr [rsp + 40]         # 1-byte Folded Reload
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
+	shl	al, 2
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 32]        # 1-byte Folded Reload
+	shl	al, 3
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 320]       # 1-byte Folded Reload
+	shl	al, 4
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 288]       # 1-byte Folded Reload
+	shl	al, 5
+	or	al, dl
+	movzx	edx, byte ptr [rsp + 28]        # 1-byte Folded Reload
+	shl	dl, 6
+	shl	cl, 7
+	or	cl, dl
+	or	cl, al
+	mov	byte ptr [r14 + 2], r15b
+	mov	byte ptr [r14 + 3], cl
 	add	rsi, 256
-	add	rax, 4
-	mov	qword ptr [rsp + 272], rax      # 8-byte Spill
-	add	qword ptr [rsp + 176], -1       # 8-byte Folded Spill
-	jne	.LBB1_71
-# %bb.72:
-	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	r10, qword ptr [rsp + 280]      # 8-byte Reload
-	mov	r15, qword ptr [rsp + 168]      # 8-byte Reload
-	shl	r15, 5
-	cmp	r15, r10
-	jl	.LBB1_124
-	jmp	.LBB1_165
-.LBB1_73:
-	lea	r15, [r10 + 31]
-	test	r10, r10
-	cmovns	r15, r10
+	add	r14, 4
+	add	qword ptr [rsp + 160], -1       # 8-byte Folded Spill
+	jne	.LBB1_94
+# %bb.95:
+	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
+	mov	rax, qword ptr [rsp + 176]      # 8-byte Reload
+.LBB1_96:
+	shl	rax, 5
+	mov	r8, r15
+	sub	r8, rax
+	jle	.LBB1_189
+# %bb.97:
+	or	rax, 1
+	cmp	r15, rax
+	jne	.LBB1_168
+.LBB1_98:
+	xor	r11d, r11d
+	jmp	.LBB1_170
+.LBB1_99:
+	mov	r12d, dword ptr [rdx]
 	lea	eax, [r9 + 7]
 	test	r9d, r9d
 	cmovns	eax, r9d
 	and	eax, -8
-	vmovss	xmm0, dword ptr [rdx]           # xmm0 = mem[0],zero,zero,zero
 	sub	r9d, eax
-	je	.LBB1_77
-# %bb.74:
-	movsxd	rax, r9d
+	je	.LBB1_105
+# %bb.100:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r15
+	cmovg	r8, r15
+	test	r8, r8
+	jle	.LBB1_103
+# %bb.101:
+	movsxd	rdx, r9d
+	vmovd	xmm0, r12d
+	mov	r11, r8
+	mov	rcx, rsi
 	.p2align	4, 0x90
-.LBB1_75:                               # =>This Inner Loop Header: Depth=1
-	vucomiss	xmm0, dword ptr [rsi]
-	lea	rsi, [rsi + 4]
+.LBB1_102:                              # =>This Inner Loop Header: Depth=1
+	vucomiss	xmm0, dword ptr [rcx]
+	lea	rsi, [rcx + 4]
 	setnp	cl
-	sete	dl
-	and	dl, cl
-	neg	dl
-	lea	rdi, [rax + 7]
-	test	rax, rax
-	cmovns	rdi, rax
-	sar	rdi, 3
-	movzx	r9d, byte ptr [r11 + rdi]
-	xor	dl, r9b
-	lea	r8d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r8d
-	mov	ebx, 1
-                                        # kill: def $cl killed $cl killed $ecx
-	shl	ebx, cl
-	and	bl, dl
+	sete	bl
+	and	bl, cl
+	neg	bl
+	lea	rax, [rdx + 7]
+	test	rdx, rdx
+	cmovns	rax, rdx
+	sar	rax, 3
+	mov	r13, r14
+	movzx	r9d, byte ptr [r14 + rax]
 	xor	bl, r9b
-	mov	byte ptr [r11 + rdi], bl
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB1_75
-# %bb.76:
-	add	r11, 1
-.LBB1_77:
-	sar	r15, 5
-	cmp	r10, 32
-	jl	.LBB1_126
-# %bb.78:
-	mov	qword ptr [rsp + 280], r10      # 8-byte Spill
-	mov	qword ptr [rsp + 168], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 176], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 272], r11      # 8-byte Spill
+	lea	r10d, [8*rax]
+	mov	ecx, edx
+	sub	ecx, r10d
+	mov	edi, 1
+                                        # kill: def $cl killed $cl killed $ecx
+	shl	edi, cl
+	and	dil, bl
+	xor	dil, r9b
+	mov	byte ptr [r14 + rax], dil
+	add	rdx, 1
+	mov	rcx, rsi
+	add	r11, -1
+	jne	.LBB1_102
+.LBB1_103:
+	sub	r15, r8
+	je	.LBB1_189
+# %bb.104:
+	add	r14, 1
+.LBB1_105:
+	lea	rax, [r15 + 31]
+	test	r15, r15
+	cmovns	rax, r15
+	sar	rax, 5
+	cmp	r15, 32
+	jl	.LBB1_109
+# %bb.106:
+	mov	qword ptr [rsp + 280], r15      # 8-byte Spill
+	mov	dword ptr [rsp + 192], r12d     # 4-byte Spill
+	vmovd	xmm0, r12d
+	mov	qword ptr [rsp + 184], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 176], rax      # 8-byte Spill
 	.p2align	4, 0x90
-.LBB1_79:                               # =>This Inner Loop Header: Depth=1
+.LBB1_107:                              # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 272], r14      # 8-byte Spill
 	vucomiss	xmm0, dword ptr [rsi]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 32], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 56], cl         # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 4]
 	setnp	al
-	sete	bl
-	and	bl, al
-	vucomiss	xmm0, dword ptr [rsi + 8]
-	setnp	al
 	sete	r13b
 	and	r13b, al
+	vucomiss	xmm0, dword ptr [rsi + 8]
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 32], cl         # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 12]
 	setnp	al
 	sete	cl
@@ -4725,16 +4957,16 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 288], cl        # 1-byte Spill
+	mov	byte ptr [rsp + 40], cl         # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 20]
 	setnp	al
-	sete	dil
-	and	dil, al
+	sete	r12b
+	and	r12b, al
 	vucomiss	xmm0, dword ptr [rsi + 24]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 56], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 128], cl        # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 28]
 	setnp	al
 	sete	cl
@@ -4744,516 +4976,348 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 40], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 48], cl         # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 36]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 48], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 120], cl        # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 40]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 64], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 112], cl        # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 44]
 	setnp	al
-	sete	cl
-	and	cl, al
-	mov	byte ptr [rsp + 96], cl         # 1-byte Spill
+	sete	bl
+	and	bl, al
 	vucomiss	xmm0, dword ptr [rsi + 48]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 88], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 288], cl        # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 52]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 80], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 96], cl         # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 56]
 	setnp	al
-	sete	dl
-	and	dl, al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 88], cl         # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 60]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 72], cl         # 1-byte Spill
+	mov	byte ptr [rsp + 80], cl         # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 64]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 144], cl        # 1-byte Spill
+	mov	byte ptr [rsp + 104], cl        # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 68]
 	setnp	al
 	sete	cl
 	and	cl, al
-	mov	byte ptr [rsp + 136], cl        # 1-byte Spill
+	mov	byte ptr [rsp + 72], cl         # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 72]
 	setnp	al
 	sete	cl
 	and	cl, al
+	mov	byte ptr [rsp + 64], cl         # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 76]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 128], al        # 1-byte Spill
+	setnp	al
+	sete	r14b
+	and	r14b, al
 	vucomiss	xmm0, dword ptr [rsi + 80]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 120], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 152], cl        # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 84]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 104], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 144], cl        # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 88]
 	setnp	al
-	sete	r12b
-	and	r12b, al
+	sete	r15b
+	and	r15b, al
 	vucomiss	xmm0, dword ptr [rsi + 92]
 	setnp	al
 	sete	r10b
 	and	r10b, al
 	vucomiss	xmm0, dword ptr [rsi + 96]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 112], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 136], cl        # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 100]
 	setnp	al
-	sete	r15b
-	and	r15b, al
+	sete	r11b
+	and	r11b, al
 	vucomiss	xmm0, dword ptr [rsi + 104]
 	setnp	al
-	sete	r14b
-	and	r14b, al
+	sete	r9b
+	and	r9b, al
 	vucomiss	xmm0, dword ptr [rsi + 108]
 	setnp	al
-	sete	r11b
-	and	r11b, al
+	sete	r8b
+	and	r8b, al
 	vucomiss	xmm0, dword ptr [rsi + 112]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 160], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 168], cl        # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 116]
-	setnp	r8b
-	sete	al
-	and	al, r8b
-	mov	byte ptr [rsp + 152], al        # 1-byte Spill
+	setnp	al
+	sete	cl
+	and	cl, al
+	mov	byte ptr [rsp + 160], cl        # 1-byte Spill
 	vucomiss	xmm0, dword ptr [rsi + 120]
 	setnp	al
-	sete	r9b
-	and	r9b, al
+	sete	dil
+	and	dil, al
 	vucomiss	xmm0, dword ptr [rsi + 124]
 	setnp	al
-	sete	r8b
-	and	r8b, al
-	add	bl, bl
-	add	bl, byte ptr [rsp + 32]         # 1-byte Folded Reload
-	shl	dil, 5
-	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
-	shl	al, 6
-	or	al, dil
-	mov	edi, eax
-	shl	r13b, 2
-	or	r13b, bl
-	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
-	add	al, al
-	add	al, byte ptr [rsp + 40]         # 1-byte Folded Reload
-	mov	ebx, eax
+	sete	dl
+	and	dl, al
+	add	r13b, r13b
+	add	r13b, byte ptr [rsp + 56]       # 1-byte Folded Reload
+	mov	eax, r13d
+	shl	r12b, 5
+	movzx	r13d, byte ptr [rsp + 128]      # 1-byte Folded Reload
+	shl	r13b, 6
+	or	r13b, r12b
+	movzx	r12d, byte ptr [rsp + 32]       # 1-byte Folded Reload
+	shl	r12b, 2
+	or	r12b, al
+	movzx	ecx, byte ptr [rsp + 120]       # 1-byte Folded Reload
+	add	cl, cl
+	add	cl, byte ptr [rsp + 48]         # 1-byte Folded Reload
 	movzx	eax, byte ptr [rsp + 28]        # 1-byte Folded Reload
 	shl	al, 7
-	or	al, dil
+	or	al, r13b
 	mov	byte ptr [rsp + 28], al         # 1-byte Spill
-	movzx	eax, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 112]       # 1-byte Folded Reload
 	shl	al, 2
-	or	al, bl
-	mov	ebx, eax
-	movzx	eax, byte ptr [rsp + 320]       # 1-byte Folded Reload
-	shl	al, 3
-	or	al, r13b
-	mov	r13d, eax
-	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	or	al, cl
+	mov	ecx, eax
+	movzx	eax, byte ptr [rsp + 320]       # 1-byte Folded Reload
 	shl	al, 3
-	or	al, bl
-	mov	edi, eax
+	or	al, r12b
+	shl	bl, 3
+	or	bl, cl
+	movzx	r13d, byte ptr [rsp + 40]       # 1-byte Folded Reload
+	shl	r13b, 4
+	or	r13b, al
 	movzx	eax, byte ptr [rsp + 288]       # 1-byte Folded Reload
 	shl	al, 4
-	or	al, r13b
-	movzx	ebx, byte ptr [rsp + 88]        # 1-byte Folded Reload
-	shl	bl, 4
-	or	bl, dil
-	movzx	edi, byte ptr [rsp + 80]        # 1-byte Folded Reload
-	shl	dil, 5
-	shl	dl, 6
-	or	dl, dil
-	movzx	r13d, byte ptr [rsp + 72]       # 1-byte Folded Reload
-	shl	r13b, 7
-	or	r13b, dl
-	movzx	edx, byte ptr [rsp + 136]       # 1-byte Folded Reload
-	add	dl, dl
-	add	dl, byte ptr [rsp + 144]        # 1-byte Folded Reload
-	shl	cl, 2
-	or	cl, dl
-	movzx	edx, byte ptr [rsp + 128]       # 1-byte Folded Reload
-	shl	dl, 3
-	or	dl, cl
-	mov	ecx, edx
-	movzx	edx, byte ptr [rsp + 120]       # 1-byte Folded Reload
-	shl	dl, 4
-	or	dl, cl
-	movzx	ecx, byte ptr [rsp + 28]        # 1-byte Folded Reload
-	or	cl, al
-	movzx	eax, byte ptr [rsp + 104]       # 1-byte Folded Reload
-	shl	al, 5
-	shl	r12b, 6
-	or	r12b, al
-	or	r13b, bl
+	or	al, bl
+	mov	byte ptr [rsp + 288], al        # 1-byte Spill
+	movzx	ecx, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	shl	cl, 5
+	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
+	shl	al, 6
+	or	al, cl
+	mov	ecx, eax
+	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
+	shl	al, 7
+	or	al, cl
+	movzx	ecx, byte ptr [rsp + 72]        # 1-byte Folded Reload
+	add	cl, cl
+	add	cl, byte ptr [rsp + 104]        # 1-byte Folded Reload
+	movzx	ebx, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	shl	bl, 2
+	or	bl, cl
+	shl	r14b, 3
+	or	r14b, bl
+	movzx	ecx, byte ptr [rsp + 152]       # 1-byte Folded Reload
+	shl	cl, 4
+	or	cl, r14b
+	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
+	movzx	r12d, byte ptr [rsp + 28]       # 1-byte Folded Reload
+	or	r12b, r13b
+	movzx	ebx, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	shl	bl, 5
+	shl	r15b, 6
+	or	r15b, bl
+	or	al, byte ptr [rsp + 288]        # 1-byte Folded Reload
 	shl	r10b, 7
-	or	r10b, r12b
-	or	r10b, dl
-	add	r15b, r15b
-	add	r15b, byte ptr [rsp + 112]      # 1-byte Folded Reload
-	shl	r14b, 2
-	or	r14b, r15b
-	shl	r11b, 3
-	or	r11b, r14b
-	movzx	eax, byte ptr [rsp + 160]       # 1-byte Folded Reload
-	shl	al, 4
-	or	al, r11b
-	mov	ebx, eax
-	mov	rax, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	byte ptr [rax], cl
-	movzx	edx, byte ptr [rsp + 152]       # 1-byte Folded Reload
-	shl	dl, 5
-	shl	r9b, 6
-	or	r9b, dl
-	mov	byte ptr [rax + 1], r13b
-	shl	r8b, 7
+	or	r10b, r15b
+	or	r10b, cl
+	add	r11b, r11b
+	add	r11b, byte ptr [rsp + 136]      # 1-byte Folded Reload
+	shl	r9b, 2
+	or	r9b, r11b
+	shl	r8b, 3
 	or	r8b, r9b
-	or	r8b, bl
-	mov	byte ptr [rax + 2], r10b
-	mov	byte ptr [rax + 3], r8b
+	movzx	ecx, byte ptr [rsp + 168]       # 1-byte Folded Reload
+	shl	cl, 4
+	or	cl, r8b
+	mov	byte ptr [r14], r12b
+	movzx	ebx, byte ptr [rsp + 160]       # 1-byte Folded Reload
+	shl	bl, 5
+	shl	dil, 6
+	or	dil, bl
+	mov	byte ptr [r14 + 1], al
+	shl	dl, 7
+	or	dl, dil
+	or	dl, cl
+	mov	byte ptr [r14 + 2], r10b
+	mov	byte ptr [r14 + 3], dl
 	add	rsi, 128
-	add	rax, 4
-	mov	qword ptr [rsp + 272], rax      # 8-byte Spill
+	add	r14, 4
 	add	qword ptr [rsp + 176], -1       # 8-byte Folded Spill
-	jne	.LBB1_79
-# %bb.80:
-	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
-	mov	r10, qword ptr [rsp + 280]      # 8-byte Reload
-	mov	r15, qword ptr [rsp + 168]      # 8-byte Reload
-	shl	r15, 5
-	cmp	r15, r10
-	jl	.LBB1_127
-	jmp	.LBB1_165
-.LBB1_81:
-	mov	r14b, byte ptr [rdx]
-	lea	r15, [r10 + 31]
-	test	r10, r10
-	cmovns	r15, r10
+	jne	.LBB1_107
+# %bb.108:
+	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
+	mov	r12d, dword ptr [rsp + 192]     # 4-byte Reload
+	mov	rax, qword ptr [rsp + 184]      # 8-byte Reload
+.LBB1_109:
+	shl	rax, 5
+	mov	r8, r15
+	sub	r8, rax
+	jle	.LBB1_189
+# %bb.110:
+	vmovd	xmm0, r12d
+	or	rax, 1
+	cmp	r15, rax
+	jne	.LBB1_172
+# %bb.111:
+	xor	r11d, r11d
+	jmp	.LBB1_174
+.LBB1_112:
+	mov	r12b, byte ptr [rdx]
 	lea	eax, [r9 + 7]
 	test	r9d, r9d
 	cmovns	eax, r9d
 	and	eax, -8
 	sub	r9d, eax
-	je	.LBB1_85
-# %bb.82:
-	movsxd	rax, r9d
-	.p2align	4, 0x90
-.LBB1_83:                               # =>This Inner Loop Header: Depth=1
-	cmp	byte ptr [rsi], r14b
-	lea	rsi, [rsi + 1]
-	sete	dl
-	neg	dl
-	lea	rdi, [rax + 7]
-	test	rax, rax
-	cmovns	rdi, rax
-	sar	rdi, 3
-	movzx	r9d, byte ptr [r11 + rdi]
-	xor	dl, r9b
-	lea	r8d, [8*rdi]
-	mov	ecx, eax
-	sub	ecx, r8d
-	mov	ebx, 1
-                                        # kill: def $cl killed $cl killed $ecx
-	shl	ebx, cl
-	and	bl, dl
-	xor	bl, r9b
-	mov	byte ptr [r11 + rdi], bl
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB1_83
-# %bb.84:
-	add	r11, 1
-.LBB1_85:
-	sar	r15, 5
-	cmp	r10, 32
-	jl	.LBB1_129
-# %bb.86:
-	cmp	r15, 32
-	mov	dword ptr [rsp + 28], r14d      # 4-byte Spill
-	mov	qword ptr [rsp + 280], r10      # 8-byte Spill
-	mov	qword ptr [rsp + 392], r15      # 8-byte Spill
-	jb	.LBB1_89
-# %bb.87:
-	mov	rax, r15
-	shl	rax, 5
-	add	rax, rsi
-	cmp	r11, rax
-	jae	.LBB1_169
-# %bb.88:
-	lea	rax, [r11 + 4*r15]
-	cmp	rsi, rax
-	jae	.LBB1_169
-.LBB1_89:
-	xor	eax, eax
-	mov	qword ptr [rsp + 384], rax      # 8-byte Spill
-	mov	r12, rsi
-	mov	qword ptr [rsp + 376], r11      # 8-byte Spill
-.LBB1_90:
-	sub	r15, qword ptr [rsp + 384]      # 8-byte Folded Reload
-	mov	qword ptr [rsp + 152], r15      # 8-byte Spill
+	je	.LBB1_131
+# %bb.113:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r15
+	cmovg	r8, r15
+	test	r8, r8
+	jle	.LBB1_146
+# %bb.114:
+	movsxd	rdx, r9d
+	mov	r11, r8
 	.p2align	4, 0x90
-.LBB1_91:                               # =>This Inner Loop Header: Depth=1
-	mov	rcx, r12
-	cmp	byte ptr [r12], r14b
-	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
-	cmp	byte ptr [r12 + 1], r14b
-	sete	r8b
-	cmp	byte ptr [r12 + 2], r14b
-	sete	r15b
-	cmp	byte ptr [r12 + 3], r14b
-	sete	r13b
-	cmp	byte ptr [r12 + 4], r14b
-	sete	byte ptr [rsp + 160]            # 1-byte Folded Spill
-	cmp	byte ptr [r12 + 5], r14b
-	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
-	cmp	byte ptr [r12 + 6], r14b
-	sete	al
-	cmp	byte ptr [r12 + 7], r14b
-	sete	r11b
-	cmp	byte ptr [r12 + 8], r14b
-	sete	byte ptr [rsp + 320]            # 1-byte Folded Spill
-	cmp	byte ptr [r12 + 9], r14b
-	sete	dl
-	cmp	byte ptr [r12 + 10], r14b
-	sete	sil
-	cmp	byte ptr [r12 + 11], r14b
-	sete	dil
-	cmp	byte ptr [r12 + 12], r14b
-	sete	r10b
-	cmp	byte ptr [r12 + 13], r14b
-	sete	r12b
-	cmp	byte ptr [rcx + 14], r14b
-	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 15], r14b
-	sete	r9b
-	cmp	byte ptr [rcx + 16], r14b
-	sete	byte ptr [rsp + 288]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 17], r14b
-	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 18], r14b
-	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 19], r14b
-	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 20], r14b
-	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 21], r14b
-	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 22], r14b
-	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
-	cmp	byte ptr [rcx + 23], r14b
-	sete	r14b
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 24], bl
-	sete	byte ptr [rsp + 272]            # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 25], bl
-	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 26], bl
-	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 27], bl
-	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 28], bl
-	sete	byte ptr [rsp + 48]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 29], bl
-	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 30], bl
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
-	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
-	cmp	byte ptr [rcx + 31], bl
+.LBB1_115:                              # =>This Inner Loop Header: Depth=1
+	lea	rdi, [rsi + 1]
+	cmp	byte ptr [rsi], r12b
 	sete	bl
-	add	r8b, r8b
-	add	r8b, byte ptr [rsp + 32]        # 1-byte Folded Reload
-	shl	al, 6
-	shl	r11b, 7
-	or	r11b, al
-	shl	r15b, 2
-	or	r15b, r8b
-	add	dl, dl
-	add	dl, byte ptr [rsp + 320]        # 1-byte Folded Reload
-	shl	r13b, 3
-	or	r13b, r15b
-	shl	sil, 2
-	or	sil, dl
-	movzx	edx, byte ptr [rsp + 160]       # 1-byte Folded Reload
-	shl	dl, 4
-	or	dl, r13b
-	mov	r8d, edx
-	shl	dil, 3
-	or	dil, sil
-	movzx	edx, byte ptr [rsp + 112]       # 1-byte Folded Reload
-	shl	dl, 5
-	or	dl, r8b
-	shl	r10b, 4
-	or	r10b, dil
-	shl	r12b, 5
-	or	r12b, r10b
-	movzx	esi, byte ptr [rsp + 104]       # 1-byte Folded Reload
-	shl	sil, 6
-	shl	r9b, 7
-	or	r9b, sil
-	or	r11b, dl
-	or	r9b, r12b
-	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
-	add	al, al
-	add	al, byte ptr [rsp + 288]        # 1-byte Folded Reload
-	movzx	edx, byte ptr [rsp + 120]       # 1-byte Folded Reload
-	shl	dl, 2
-	or	dl, al
-	mov	esi, edx
-	movzx	edx, byte ptr [rsp + 128]       # 1-byte Folded Reload
-	shl	dl, 3
-	or	dl, sil
-	mov	esi, edx
-	movzx	edx, byte ptr [rsp + 144]       # 1-byte Folded Reload
-	shl	dl, 4
-	or	dl, sil
-	mov	esi, edx
-	movzx	edx, byte ptr [rsp + 72]        # 1-byte Folded Reload
-	shl	dl, 5
-	or	dl, sil
-	mov	rsi, qword ptr [rsp + 376]      # 8-byte Reload
-	mov	byte ptr [rsi], r11b
-	movzx	edi, byte ptr [rsp + 80]        # 1-byte Folded Reload
-	shl	dil, 6
-	shl	r14b, 7
-	or	r14b, dil
-	mov	byte ptr [rsi + 1], r9b
-	or	r14b, dl
-	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
-	add	al, al
-	add	al, byte ptr [rsp + 272]        # 1-byte Folded Reload
-	mov	edx, eax
-	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
-	shl	al, 2
-	or	al, dl
-	mov	edx, eax
-	movzx	eax, byte ptr [rsp + 64]        # 1-byte Folded Reload
-	shl	al, 3
-	or	al, dl
-	mov	edx, eax
-	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
-	shl	al, 4
-	or	al, dl
-	mov	edx, eax
-	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
-	shl	al, 5
-	or	al, dl
-	movzx	edx, byte ptr [rsp + 40]        # 1-byte Folded Reload
-	shl	dl, 6
-	shl	bl, 7
-	or	bl, dl
-	or	bl, al
-	mov	byte ptr [rsi + 2], r14b
-	mov	r14d, dword ptr [rsp + 28]      # 4-byte Reload
-	mov	byte ptr [rsi + 3], bl
-	lea	r12, [rcx + 32]
-	add	rsi, 4
-	mov	qword ptr [rsp + 376], rsi      # 8-byte Spill
-	add	qword ptr [rsp + 152], -1       # 8-byte Folded Spill
-	jne	.LBB1_91
-# %bb.92:
-	mov	r10, qword ptr [rsp + 280]      # 8-byte Reload
-	mov	r15, qword ptr [rsp + 392]      # 8-byte Reload
-	jmp	.LBB1_130
-.LBB1_93:
+	neg	bl
+	lea	rsi, [rdx + 7]
+	test	rdx, rdx
+	cmovns	rsi, rdx
+	sar	rsi, 3
+	mov	r13, r14
+	movzx	r9d, byte ptr [r14 + rsi]
+	xor	bl, r9b
+	lea	r10d, [8*rsi]
+	mov	ecx, edx
+	sub	ecx, r10d
+	mov	eax, 1
+                                        # kill: def $cl killed $cl killed $ecx
+	shl	eax, cl
+	and	al, bl
+	xor	al, r9b
+	mov	byte ptr [r14 + rsi], al
+	add	rdx, 1
+	mov	rsi, rdi
+	add	r11, -1
+	jne	.LBB1_115
+# %bb.116:
+	sub	r15, r8
+	jne	.LBB1_147
+	jmp	.LBB1_189
+.LBB1_117:
 	mov	r13d, dword ptr [rdx]
-	lea	r15, [r10 + 31]
-	test	r10, r10
-	cmovns	r15, r10
 	lea	eax, [r9 + 7]
 	test	r9d, r9d
 	cmovns	eax, r9d
 	and	eax, -8
 	sub	r9d, eax
-	je	.LBB1_97
-# %bb.94:
-	movsxd	rax, r9d
+	je	.LBB1_123
+# %bb.118:
+	mov	r8d, 8
+	sub	r8d, r9d
+	cmp	r8, r15
+	cmovg	r8, r15
+	test	r8, r8
+	jle	.LBB1_121
+# %bb.119:
+	movsxd	rdx, r9d
+	mov	r11, r8
+	mov	rcx, rsi
 	.p2align	4, 0x90
-.LBB1_95:                               # =>This Inner Loop Header: Depth=1
-	cmp	dword ptr [rsi], r13d
-	lea	rsi, [rsi + 4]
-	sete	dl
-	neg	dl
-	lea	rbx, [rax + 7]
-	test	rax, rax
-	cmovns	rbx, rax
-	sar	rbx, 3
-	movzx	r8d, byte ptr [r11 + rbx]
-	xor	dl, r8b
-	lea	edi, [8*rbx]
-	mov	ecx, eax
-	sub	ecx, edi
-	mov	edi, 1
+.LBB1_120:                              # =>This Inner Loop Header: Depth=1
+	lea	rsi, [rcx + 4]
+	cmp	dword ptr [rcx], r13d
+	sete	bl
+	neg	bl
+	lea	rdi, [rdx + 7]
+	test	rdx, rdx
+	cmovns	rdi, rdx
+	sar	rdi, 3
+	mov	r12, r14
+	movzx	r9d, byte ptr [r14 + rdi]
+	xor	bl, r9b
+	lea	r10d, [8*rdi]
+	mov	ecx, edx
+	sub	ecx, r10d
+	mov	eax, 1
                                         # kill: def $cl killed $cl killed $ecx
-	shl	edi, cl
-	and	dil, dl
-	xor	dil, r8b
-	mov	byte ptr [r11 + rbx], dil
-	add	rax, 1
-	cmp	rax, 8
-	jne	.LBB1_95
-# %bb.96:
-	add	r11, 1
-.LBB1_97:
-	sar	r15, 5
-	cmp	r10, 32
-	jl	.LBB1_133
-# %bb.98:
-	mov	qword ptr [rsp + 280], r10      # 8-byte Spill
-	mov	qword ptr [rsp + 168], r15      # 8-byte Spill
-	mov	qword ptr [rsp + 176], r15      # 8-byte Spill
+	shl	eax, cl
+	and	al, bl
+	xor	al, r9b
+	mov	byte ptr [r14 + rdi], al
+	add	rdx, 1
+	mov	rcx, rsi
+	add	r11, -1
+	jne	.LBB1_120
+.LBB1_121:
+	sub	r15, r8
+	je	.LBB1_189
+# %bb.122:
+	add	r14, 1
+.LBB1_123:
+	lea	rax, [r15 + 31]
+	test	r15, r15
+	cmovns	rax, r15
+	sar	rax, 5
+	cmp	r15, 32
+	jl	.LBB1_127
+# %bb.124:
+	mov	qword ptr [rsp + 280], r15      # 8-byte Spill
+	mov	qword ptr [rsp + 176], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 160], rax      # 8-byte Spill
 	.p2align	4, 0x90
-.LBB1_99:                               # =>This Inner Loop Header: Depth=1
-	mov	qword ptr [rsp + 272], r11      # 8-byte Spill
+.LBB1_125:                              # =>This Inner Loop Header: Depth=1
+	mov	qword ptr [rsp + 272], r14      # 8-byte Spill
 	cmp	dword ptr [rsi], r13d
-	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 168]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 4], r13d
 	sete	r10b
 	cmp	dword ptr [rsi + 8], r13d
 	sete	r14b
 	cmp	dword ptr [rsi + 12], r13d
-	sete	byte ptr [rsp + 160]            # 1-byte Folded Spill
-	cmp	dword ptr [rsi + 16], r13d
 	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
+	cmp	dword ptr [rsi + 16], r13d
+	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 20], r13d
-	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 24], r13d
 	sete	al
 	cmp	dword ptr [rsi + 28], r13d
 	sete	bl
 	cmp	dword ptr [rsi + 32], r13d
-	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 36], r13d
 	sete	dil
 	cmp	dword ptr [rsi + 40], r13d
@@ -5265,33 +5329,33 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	dword ptr [rsi + 52], r13d
 	sete	r12b
 	cmp	dword ptr [rsi + 56], r13d
-	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 60], r13d
-	sete	cl
+	sete	dl
 	cmp	dword ptr [rsi + 64], r13d
-	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 68], r13d
-	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 72], r13d
-	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 76], r13d
-	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
+	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 80], r13d
-	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 84], r13d
-	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 88], r13d
-	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 92], r13d
 	sete	r15b
 	cmp	dword ptr [rsi + 96], r13d
-	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 100], r13d
 	sete	byte ptr [rsp + 48]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 104], r13d
 	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 108], r13d
-	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 112], r13d
 	sete	byte ptr [rsp + 320]            # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 116], r13d
@@ -5299,388 +5363,644 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	cmp	dword ptr [rsi + 120], r13d
 	sete	byte ptr [rsp + 28]             # 1-byte Folded Spill
 	cmp	dword ptr [rsi + 124], r13d
-	sete	dl
+	sete	cl
 	add	r10b, r10b
-	add	r10b, byte ptr [rsp + 152]      # 1-byte Folded Reload
+	add	r10b, byte ptr [rsp + 168]      # 1-byte Folded Reload
 	shl	al, 6
 	shl	bl, 7
 	or	bl, al
 	shl	r14b, 2
 	or	r14b, r10b
 	add	dil, dil
-	add	dil, byte ptr [rsp + 104]       # 1-byte Folded Reload
-	movzx	eax, byte ptr [rsp + 160]       # 1-byte Folded Reload
+	add	dil, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
 	shl	al, 3
 	or	al, r14b
 	mov	r10d, eax
+	mov	r14, qword ptr [rsp + 272]      # 8-byte Reload
 	shl	r8b, 2
 	or	r8b, dil
-	movzx	eax, byte ptr [rsp + 136]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
 	shl	al, 4
 	or	al, r10b
 	mov	edi, eax
 	shl	r9b, 3
 	or	r9b, r8b
-	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 112]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
 	shl	r11b, 4
 	or	r11b, r9b
 	shl	r12b, 5
 	or	r12b, r11b
-	mov	r11, qword ptr [rsp + 272]      # 8-byte Reload
-	movzx	edi, byte ptr [rsp + 112]       # 1-byte Folded Reload
+	movzx	edi, byte ptr [rsp + 152]       # 1-byte Folded Reload
 	shl	dil, 6
-	shl	cl, 7
-	or	cl, dil
+	shl	dl, 7
+	or	dl, dil
 	or	bl, al
-	or	cl, r12b
-	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
+	or	dl, r12b
+	movzx	eax, byte ptr [rsp + 64]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 72]         # 1-byte Folded Reload
+	add	al, byte ptr [rsp + 96]         # 1-byte Folded Reload
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 128]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 72]        # 1-byte Folded Reload
 	shl	al, 2
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
 	shl	al, 3
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 104]       # 1-byte Folded Reload
 	shl	al, 4
 	or	al, dil
 	mov	edi, eax
-	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 120]       # 1-byte Folded Reload
 	shl	al, 5
 	or	al, dil
-	mov	byte ptr [r11], bl
-	movzx	ebx, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	mov	byte ptr [r14], bl
+	movzx	ebx, byte ptr [rsp + 128]       # 1-byte Folded Reload
 	shl	bl, 6
 	shl	r15b, 7
 	or	r15b, bl
-	mov	byte ptr [r11 + 1], cl
+	mov	byte ptr [r14 + 1], dl
 	or	r15b, al
 	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
 	add	al, al
-	add	al, byte ptr [rsp + 32]         # 1-byte Folded Reload
-	mov	ecx, eax
+	add	al, byte ptr [rsp + 40]         # 1-byte Folded Reload
+	mov	edx, eax
 	movzx	eax, byte ptr [rsp + 56]        # 1-byte Folded Reload
 	shl	al, 2
-	or	al, cl
-	mov	ecx, eax
-	movzx	eax, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 32]        # 1-byte Folded Reload
 	shl	al, 3
-	or	al, cl
-	mov	ecx, eax
+	or	al, dl
+	mov	edx, eax
 	movzx	eax, byte ptr [rsp + 320]       # 1-byte Folded Reload
 	shl	al, 4
-	or	al, cl
-	mov	ecx, eax
+	or	al, dl
+	mov	edx, eax
 	movzx	eax, byte ptr [rsp + 288]       # 1-byte Folded Reload
 	shl	al, 5
-	or	al, cl
-	movzx	ecx, byte ptr [rsp + 28]        # 1-byte Folded Reload
-	shl	cl, 6
-	shl	dl, 7
-	or	dl, cl
-	or	dl, al
-	mov	byte ptr [r11 + 2], r15b
-	mov	byte ptr [r11 + 3], dl
+	or	al, dl
+	movzx	edx, byte ptr [rsp + 28]        # 1-byte Folded Reload
+	shl	dl, 6
+	shl	cl, 7
+	or	cl, dl
+	or	cl, al
+	mov	byte ptr [r14 + 2], r15b
+	mov	byte ptr [r14 + 3], cl
 	add	rsi, 128
-	add	r11, 4
-	add	qword ptr [rsp + 176], -1       # 8-byte Folded Spill
-	jne	.LBB1_99
-# %bb.100:
-	mov	r14, r11
-	mov	r10, qword ptr [rsp + 280]      # 8-byte Reload
-	mov	r15, qword ptr [rsp + 168]      # 8-byte Reload
-	shl	r15, 5
-	cmp	r15, r10
-	jl	.LBB1_134
-	jmp	.LBB1_165
-.LBB1_101:
-	mov	r14, r11
-	shl	r15, 5
-	cmp	r15, r10
-	jge	.LBB1_165
-.LBB1_102:
-	mov	r8, r10
-	sub	r8, r15
-	not	r15
-	add	r15, r10
-	je	.LBB1_135
-# %bb.103:
-	mov	r10, r8
-	and	r10, -2
-	xor	r11d, r11d
-	mov	r15, r14
-	.p2align	4, 0x90
-.LBB1_104:                              # =>This Inner Loop Header: Depth=1
-	cmp	dword ptr [rsi], r13d
-	sete	al
-	neg	al
-	mov	rdi, r11
-	shr	rdi, 3
-	movzx	r9d, byte ptr [r15 + rdi]
-	mov	ecx, r11d
-	and	cl, 6
-	mov	bl, 1
-	shl	bl, cl
-	xor	al, r9b
-	and	bl, al
-	xor	bl, r9b
-	mov	byte ptr [r15 + rdi], bl
-	add	r11, 2
-	cmp	dword ptr [rsi + 4], r13d
-	lea	rsi, [rsi + 8]
-	sete	al
-	neg	al
-	xor	al, bl
-	or	cl, 1
-	mov	dl, 1
-	shl	dl, cl
-	and	dl, al
-	xor	dl, bl
-	mov	byte ptr [r15 + rdi], dl
-	cmp	r10, r11
-	jne	.LBB1_104
-	jmp	.LBB1_162
-.LBB1_105:
-	mov	r14, r11
-	shl	r15, 5
-	cmp	r15, r10
-	jge	.LBB1_165
-.LBB1_106:
-	mov	r8, r10
-	sub	r8, r15
-	not	r15
-	add	r15, r10
-	jne	.LBB1_136
-# %bb.107:
-	xor	r11d, r11d
-	jmp	.LBB1_138
-.LBB1_108:
-	mov	qword ptr [rsp + 376], r11      # 8-byte Spill
-	mov	r12, rsi
-.LBB1_109:
-	shl	r13, 5
-	cmp	r13, r15
-	jge	.LBB1_165
-# %bb.110:
+	add	r14, 4
+	add	qword ptr [rsp + 160], -1       # 8-byte Folded Spill
+	jne	.LBB1_125
+# %bb.126:
+	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
+	mov	rax, qword ptr [rsp + 176]      # 8-byte Reload
+.LBB1_127:
+	shl	rax, 5
 	mov	r8, r15
-	sub	r8, r13
-	not	r13
-	add	r13, r15
-	je	.LBB1_132
-# %bb.140:
-	mov	r10, r8
-	and	r10, -2
-	xor	esi, esi
-	mov	r11, qword ptr [rsp + 376]      # 8-byte Reload
-	.p2align	4, 0x90
-.LBB1_141:                              # =>This Inner Loop Header: Depth=1
-	cmp	byte ptr [r12 + rsi], r14b
-	sete	bl
-	neg	bl
+	sub	r8, rax
+	jle	.LBB1_189
+# %bb.128:
+	or	rax, 1
+	cmp	r15, rax
+	jne	.LBB1_177
+.LBB1_129:
+	xor	r11d, r11d
+	jmp	.LBB1_179
+.LBB1_130:
 	mov	rdi, rsi
-	shr	rdi, 3
-	mov	ecx, esi
-	and	cl, 6
-	mov	dl, 1
-	shl	dl, cl
-	movzx	r9d, byte ptr [r11 + rdi]
-	xor	bl, r9b
-	and	dl, bl
-	xor	dl, r9b
-	mov	byte ptr [r11 + rdi], dl
-	cmp	byte ptr [r12 + rsi + 1], r14b
-	lea	rsi, [rsi + 2]
-	sete	bl
-	neg	bl
-	xor	bl, dl
-	or	cl, 1
-	mov	al, 1
-	shl	al, cl
-	and	al, bl
-	xor	al, dl
-	mov	byte ptr [r11 + rdi], al
-	cmp	r10, rsi
-	jne	.LBB1_141
-	jmp	.LBB1_157
-.LBB1_112:
-	mov	r14, r11
-	shl	r15, 5
-	cmp	r15, r10
-	jge	.LBB1_165
-.LBB1_113:
-	mov	r8, r10
-	sub	r8, r15
-	not	r15
-	add	r15, r10
-	je	.LBB1_125
-# %bb.114:
+	jmp	.LBB1_134
+.LBB1_131:
+	mov	rdi, rsi
+	jmp	.LBB1_148
+.LBB1_132:
+	mov	rdi, rsi
+	sub	r15, r8
+	je	.LBB1_189
+.LBB1_133:
+	add	r14, 1
+.LBB1_134:
+	lea	rcx, [r15 + 31]
+	test	r15, r15
+	cmovns	rcx, r15
+	sar	rcx, 5
+	cmp	r15, 32
+	jl	.LBB1_142
+# %bb.135:
+	cmp	rcx, 32
+	mov	dword ptr [rsp + 28], r12d      # 4-byte Spill
+	mov	qword ptr [rsp + 280], r15      # 8-byte Spill
+	mov	qword ptr [rsp + 392], rcx      # 8-byte Spill
+	jb	.LBB1_138
+# %bb.136:
+	mov	rax, rcx
+	shl	rax, 5
+	add	rax, rdi
+	cmp	r14, rax
+	jae	.LBB1_190
+# %bb.137:
+	lea	rax, [r14 + 4*rcx]
+	cmp	rdi, rax
+	jae	.LBB1_190
+.LBB1_138:
+	xor	eax, eax
+	mov	qword ptr [rsp + 384], rax      # 8-byte Spill
+	mov	rsi, rdi
+	mov	qword ptr [rsp + 376], r14      # 8-byte Spill
+.LBB1_139:
+	sub	rcx, qword ptr [rsp + 384]      # 8-byte Folded Reload
+	mov	qword ptr [rsp + 160], rcx      # 8-byte Spill
+	.p2align	4, 0x90
+.LBB1_140:                              # =>This Inner Loop Header: Depth=1
+	mov	rcx, rsi
+	cmp	byte ptr [rsi], r12b
+	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	cmp	byte ptr [rsi + 1], r12b
+	sete	r8b
+	cmp	byte ptr [rsi + 2], r12b
+	sete	r14b
+	cmp	byte ptr [rsi + 3], r12b
+	sete	r13b
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 4], al
+	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 5], al
+	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 6], al
+	sete	byte ptr [rsp + 168]            # 1-byte Folded Spill
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 7], al
+	sete	r11b
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 8], al
+	sete	byte ptr [rsp + 320]            # 1-byte Folded Spill
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 9], al
+	sete	dl
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 10], al
+	sete	sil
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 11], al
+	sete	dil
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 12], al
+	sete	r10b
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 13], al
+	sete	r12b
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 14], al
+	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 15], al
+	sete	r9b
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 16], bl
+	sete	byte ptr [rsp + 288]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 17], bl
+	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 18], bl
+	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 19], bl
+	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 20], bl
+	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 21], bl
+	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 22], bl
+	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 23], bl
+	sete	r15b
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 24], bl
+	sete	byte ptr [rsp + 272]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 25], bl
+	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 26], bl
+	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 27], bl
+	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 28], bl
+	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 29], bl
+	sete	byte ptr [rsp + 48]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 30], bl
+	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 31], bl
+	sete	bl
+	add	r8b, r8b
+	add	r8b, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 168]       # 1-byte Folded Reload
+	shl	al, 6
+	shl	r11b, 7
+	or	r11b, al
+	shl	r14b, 2
+	or	r14b, r8b
+	add	dl, dl
+	add	dl, byte ptr [rsp + 320]        # 1-byte Folded Reload
+	shl	r13b, 3
+	or	r13b, r14b
+	shl	sil, 2
+	or	sil, dl
+	movzx	edx, byte ptr [rsp + 112]       # 1-byte Folded Reload
+	shl	dl, 4
+	or	dl, r13b
+	mov	r8d, edx
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	shl	dil, 3
+	or	dil, sil
+	movzx	edx, byte ptr [rsp + 32]        # 1-byte Folded Reload
+	shl	dl, 5
+	or	dl, r8b
+	shl	r10b, 4
+	or	r10b, dil
+	shl	r12b, 5
+	or	r12b, r10b
+	movzx	esi, byte ptr [rsp + 136]       # 1-byte Folded Reload
+	shl	sil, 6
+	shl	r9b, 7
+	or	r9b, sil
+	or	r11b, dl
+	or	r9b, r12b
+	mov	r12d, eax
+	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
+	add	al, al
+	add	al, byte ptr [rsp + 288]        # 1-byte Folded Reload
+	movzx	edx, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	shl	dl, 2
+	or	dl, al
+	mov	esi, edx
+	movzx	edx, byte ptr [rsp + 152]       # 1-byte Folded Reload
+	shl	dl, 3
+	or	dl, sil
+	mov	esi, edx
+	movzx	edx, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	shl	dl, 4
+	or	dl, sil
+	mov	esi, edx
+	movzx	edx, byte ptr [rsp + 72]        # 1-byte Folded Reload
+	shl	dl, 5
+	or	dl, sil
+	mov	rdi, qword ptr [rsp + 376]      # 8-byte Reload
+	mov	byte ptr [rdi], r11b
+	movzx	esi, byte ptr [rsp + 120]       # 1-byte Folded Reload
+	shl	sil, 6
+	shl	r15b, 7
+	or	r15b, sil
+	mov	byte ptr [rdi + 1], r9b
+	or	r15b, dl
+	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	add	al, al
+	add	al, byte ptr [rsp + 272]        # 1-byte Folded Reload
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
+	shl	al, 2
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 104]       # 1-byte Folded Reload
+	shl	al, 3
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 128]       # 1-byte Folded Reload
+	shl	al, 4
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
+	shl	al, 5
+	or	al, dl
+	movzx	edx, byte ptr [rsp + 56]        # 1-byte Folded Reload
+	shl	dl, 6
+	shl	bl, 7
+	or	bl, dl
+	or	bl, al
+	mov	byte ptr [rdi + 2], r15b
+	mov	byte ptr [rdi + 3], bl
+	lea	rsi, [rcx + 32]
+	add	rdi, 4
+	mov	qword ptr [rsp + 376], rdi      # 8-byte Spill
+	add	qword ptr [rsp + 160], -1       # 8-byte Folded Spill
+	jne	.LBB1_140
+# %bb.141:
+	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
+	mov	rcx, qword ptr [rsp + 392]      # 8-byte Reload
+	jmp	.LBB1_143
+.LBB1_142:
+	mov	qword ptr [rsp + 376], r14      # 8-byte Spill
+	mov	rsi, rdi
+.LBB1_143:
+	shl	rcx, 5
+	mov	r8, r15
+	sub	r8, rcx
+	jle	.LBB1_189
+# %bb.144:
+	or	rcx, 1
+	cmp	r15, rcx
+	je	.LBB1_159
+# %bb.182:
 	mov	r10, r8
 	and	r10, -2
-	xor	r11d, r11d
-	mov	r15, r14
+	xor	r9d, r9d
+	mov	r11, qword ptr [rsp + 376]      # 8-byte Reload
 	.p2align	4, 0x90
-.LBB1_115:                              # =>This Inner Loop Header: Depth=1
-	cmp	qword ptr [rsi], r13
-	sete	al
-	neg	al
-	mov	rdi, r11
+.LBB1_183:                              # =>This Inner Loop Header: Depth=1
+	mov	rax, r9
+	cmp	byte ptr [rsi + r9], r12b
+	sete	bl
+	neg	bl
+	mov	rdi, r9
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r15 + rdi]
-	mov	ecx, r11d
+	mov	ecx, eax
 	and	cl, 6
-	mov	bl, 1
-	shl	bl, cl
-	xor	al, r9b
-	and	bl, al
-	xor	bl, r9b
-	mov	byte ptr [r15 + rdi], bl
-	add	r11, 2
-	cmp	qword ptr [rsi + 8], r13
-	lea	rsi, [rsi + 16]
-	sete	al
-	neg	al
-	xor	al, bl
-	or	cl, 1
 	mov	dl, 1
 	shl	dl, cl
-	and	dl, al
-	xor	dl, bl
-	mov	byte ptr [r15 + rdi], dl
-	cmp	r10, r11
-	jne	.LBB1_115
-	jmp	.LBB1_148
-.LBB1_116:
-	mov	r14, r11
-	shl	r15, 5
-	cmp	r15, r10
-	jge	.LBB1_165
-.LBB1_117:
-	mov	r8, r10
-	sub	r8, r15
-	not	r15
-	add	r15, r10
-	je	.LBB1_122
-# %bb.118:
-	mov	r10, r8
-	and	r10, -2
-	xor	r11d, r11d
-	mov	r15, r14
-	.p2align	4, 0x90
-.LBB1_119:                              # =>This Inner Loop Header: Depth=1
-	cmp	word ptr [rsi], r13w
-	sete	al
-	neg	al
-	mov	rdi, r11
-	shr	rdi, 3
-	movzx	r9d, byte ptr [r15 + rdi]
-	mov	ecx, r11d
-	and	cl, 6
-	mov	bl, 1
-	shl	bl, cl
-	xor	al, r9b
-	and	bl, al
+	movzx	r9d, byte ptr [r11 + rdi]
 	xor	bl, r9b
-	mov	byte ptr [r15 + rdi], bl
-	add	r11, 2
-	cmp	word ptr [rsi + 2], r13w
-	lea	rsi, [rsi + 4]
-	sete	al
-	neg	al
-	xor	al, bl
+	and	dl, bl
+	xor	dl, r9b
+	mov	byte ptr [r11 + rdi], dl
+	cmp	byte ptr [rsi + rax + 1], r12b
+	lea	r9, [rax + 2]
+	sete	bl
+	neg	bl
+	xor	bl, dl
 	or	cl, 1
-	mov	dl, 1
-	shl	dl, cl
-	and	dl, al
-	xor	dl, bl
-	mov	byte ptr [r15 + rdi], dl
-	cmp	r10, r11
-	jne	.LBB1_119
-	jmp	.LBB1_144
-.LBB1_120:
-	mov	r14, r11
-	shl	r15, 5
-	cmp	r15, r10
-	jge	.LBB1_165
-.LBB1_121:
-	mov	r8, r10
-	sub	r8, r15
-	not	r15
-	add	r15, r10
-	jne	.LBB1_142
-.LBB1_122:
-	xor	r11d, r11d
-	jmp	.LBB1_144
-.LBB1_123:
-	mov	r14, r11
-	shl	r15, 5
-	cmp	r15, r10
-	jge	.LBB1_165
-.LBB1_124:
-	mov	r8, r10
-	sub	r8, r15
-	not	r15
-	add	r15, r10
-	jne	.LBB1_146
-.LBB1_125:
-	xor	r11d, r11d
-	jmp	.LBB1_148
-.LBB1_126:
-	mov	r14, r11
-	shl	r15, 5
-	cmp	r15, r10
-	jge	.LBB1_165
-.LBB1_127:
-	mov	r8, r10
-	sub	r8, r15
-	not	r15
-	add	r15, r10
-	jne	.LBB1_150
-# %bb.128:
-	xor	r11d, r11d
-	jmp	.LBB1_152
-.LBB1_129:
-	mov	qword ptr [rsp + 376], r11      # 8-byte Spill
-	mov	r12, rsi
-.LBB1_130:
-	shl	r15, 5
-	cmp	r15, r10
-	jge	.LBB1_165
-# %bb.131:
-	mov	r8, r10
-	sub	r8, r15
-	not	r15
-	add	r15, r10
-	jne	.LBB1_155
-.LBB1_132:
-	xor	esi, esi
-	jmp	.LBB1_158
-.LBB1_133:
-	mov	r14, r11
-	shl	r15, 5
-	cmp	r15, r10
-	jge	.LBB1_165
-.LBB1_134:
-	mov	r8, r10
-	sub	r8, r15
-	not	r15
-	add	r15, r10
-	jne	.LBB1_160
-.LBB1_135:
-	xor	r11d, r11d
-	jmp	.LBB1_162
-.LBB1_136:
+	mov	al, 1
+	shl	al, cl
+	and	al, bl
+	xor	al, dl
+	mov	byte ptr [r11 + rdi], al
+	cmp	r10, r9
+	jne	.LBB1_183
+	jmp	.LBB1_186
+.LBB1_146:
+	mov	rdi, rsi
+	sub	r15, r8
+	je	.LBB1_189
+.LBB1_147:
+	add	r14, 1
+.LBB1_148:
+	lea	rcx, [r15 + 31]
+	test	r15, r15
+	cmovns	rcx, r15
+	sar	rcx, 5
+	cmp	r15, 32
+	jl	.LBB1_156
+# %bb.149:
+	cmp	rcx, 32
+	mov	dword ptr [rsp + 28], r12d      # 4-byte Spill
+	mov	qword ptr [rsp + 280], r15      # 8-byte Spill
+	mov	qword ptr [rsp + 392], rcx      # 8-byte Spill
+	jb	.LBB1_152
+# %bb.150:
+	mov	rax, rcx
+	shl	rax, 5
+	add	rax, rdi
+	cmp	r14, rax
+	jae	.LBB1_193
+# %bb.151:
+	lea	rax, [r14 + 4*rcx]
+	cmp	rdi, rax
+	jae	.LBB1_193
+.LBB1_152:
+	xor	eax, eax
+	mov	qword ptr [rsp + 384], rax      # 8-byte Spill
+	mov	rsi, rdi
+	mov	qword ptr [rsp + 376], r14      # 8-byte Spill
+.LBB1_153:
+	sub	rcx, qword ptr [rsp + 384]      # 8-byte Folded Reload
+	mov	qword ptr [rsp + 160], rcx      # 8-byte Spill
+	.p2align	4, 0x90
+.LBB1_154:                              # =>This Inner Loop Header: Depth=1
+	mov	rcx, rsi
+	cmp	byte ptr [rsi], r12b
+	sete	byte ptr [rsp + 40]             # 1-byte Folded Spill
+	cmp	byte ptr [rsi + 1], r12b
+	sete	r8b
+	cmp	byte ptr [rsi + 2], r12b
+	sete	r14b
+	cmp	byte ptr [rsi + 3], r12b
+	sete	r13b
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 4], al
+	sete	byte ptr [rsp + 112]            # 1-byte Folded Spill
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 5], al
+	sete	byte ptr [rsp + 32]             # 1-byte Folded Spill
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 6], al
+	sete	byte ptr [rsp + 168]            # 1-byte Folded Spill
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 7], al
+	sete	r11b
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 8], al
+	sete	byte ptr [rsp + 320]            # 1-byte Folded Spill
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 9], al
+	sete	dl
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rsi + 10], al
+	sete	sil
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 11], al
+	sete	dil
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 12], al
+	sete	r10b
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 13], al
+	sete	r12b
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 14], al
+	sete	byte ptr [rsp + 136]            # 1-byte Folded Spill
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 15], al
+	sete	r9b
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 16], bl
+	sete	byte ptr [rsp + 288]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 17], bl
+	sete	byte ptr [rsp + 80]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 18], bl
+	sete	byte ptr [rsp + 144]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 19], bl
+	sete	byte ptr [rsp + 152]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 20], bl
+	sete	byte ptr [rsp + 64]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 21], bl
+	sete	byte ptr [rsp + 72]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 22], bl
+	sete	byte ptr [rsp + 120]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 23], bl
+	sete	r15b
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 24], bl
+	sete	byte ptr [rsp + 272]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 25], bl
+	sete	byte ptr [rsp + 96]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 26], bl
+	sete	byte ptr [rsp + 88]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 27], bl
+	sete	byte ptr [rsp + 104]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 28], bl
+	sete	byte ptr [rsp + 128]            # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 29], bl
+	sete	byte ptr [rsp + 48]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 30], bl
+	sete	byte ptr [rsp + 56]             # 1-byte Folded Spill
+	mov	ebx, dword ptr [rsp + 28]       # 4-byte Reload
+	cmp	byte ptr [rcx + 31], bl
+	sete	bl
+	add	r8b, r8b
+	add	r8b, byte ptr [rsp + 40]        # 1-byte Folded Reload
+	movzx	eax, byte ptr [rsp + 168]       # 1-byte Folded Reload
+	shl	al, 6
+	shl	r11b, 7
+	or	r11b, al
+	shl	r14b, 2
+	or	r14b, r8b
+	add	dl, dl
+	add	dl, byte ptr [rsp + 320]        # 1-byte Folded Reload
+	shl	r13b, 3
+	or	r13b, r14b
+	shl	sil, 2
+	or	sil, dl
+	movzx	edx, byte ptr [rsp + 112]       # 1-byte Folded Reload
+	shl	dl, 4
+	or	dl, r13b
+	mov	r8d, edx
+	mov	eax, dword ptr [rsp + 28]       # 4-byte Reload
+	shl	dil, 3
+	or	dil, sil
+	movzx	edx, byte ptr [rsp + 32]        # 1-byte Folded Reload
+	shl	dl, 5
+	or	dl, r8b
+	shl	r10b, 4
+	or	r10b, dil
+	shl	r12b, 5
+	or	r12b, r10b
+	movzx	esi, byte ptr [rsp + 136]       # 1-byte Folded Reload
+	shl	sil, 6
+	shl	r9b, 7
+	or	r9b, sil
+	or	r11b, dl
+	or	r9b, r12b
+	mov	r12d, eax
+	movzx	eax, byte ptr [rsp + 80]        # 1-byte Folded Reload
+	add	al, al
+	add	al, byte ptr [rsp + 288]        # 1-byte Folded Reload
+	movzx	edx, byte ptr [rsp + 144]       # 1-byte Folded Reload
+	shl	dl, 2
+	or	dl, al
+	mov	esi, edx
+	movzx	edx, byte ptr [rsp + 152]       # 1-byte Folded Reload
+	shl	dl, 3
+	or	dl, sil
+	mov	esi, edx
+	movzx	edx, byte ptr [rsp + 64]        # 1-byte Folded Reload
+	shl	dl, 4
+	or	dl, sil
+	mov	esi, edx
+	movzx	edx, byte ptr [rsp + 72]        # 1-byte Folded Reload
+	shl	dl, 5
+	or	dl, sil
+	mov	rdi, qword ptr [rsp + 376]      # 8-byte Reload
+	mov	byte ptr [rdi], r11b
+	movzx	esi, byte ptr [rsp + 120]       # 1-byte Folded Reload
+	shl	sil, 6
+	shl	r15b, 7
+	or	r15b, sil
+	mov	byte ptr [rdi + 1], r9b
+	or	r15b, dl
+	movzx	eax, byte ptr [rsp + 96]        # 1-byte Folded Reload
+	add	al, al
+	add	al, byte ptr [rsp + 272]        # 1-byte Folded Reload
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 88]        # 1-byte Folded Reload
+	shl	al, 2
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 104]       # 1-byte Folded Reload
+	shl	al, 3
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 128]       # 1-byte Folded Reload
+	shl	al, 4
+	or	al, dl
+	mov	edx, eax
+	movzx	eax, byte ptr [rsp + 48]        # 1-byte Folded Reload
+	shl	al, 5
+	or	al, dl
+	movzx	edx, byte ptr [rsp + 56]        # 1-byte Folded Reload
+	shl	dl, 6
+	shl	bl, 7
+	or	bl, dl
+	or	bl, al
+	mov	byte ptr [rdi + 2], r15b
+	mov	byte ptr [rdi + 3], bl
+	lea	rsi, [rcx + 32]
+	add	rdi, 4
+	mov	qword ptr [rsp + 376], rdi      # 8-byte Spill
+	add	qword ptr [rsp + 160], -1       # 8-byte Folded Spill
+	jne	.LBB1_154
+# %bb.155:
+	mov	r15, qword ptr [rsp + 280]      # 8-byte Reload
+	mov	rcx, qword ptr [rsp + 392]      # 8-byte Reload
+	jmp	.LBB1_157
+.LBB1_156:
+	mov	qword ptr [rsp + 376], r14      # 8-byte Spill
+	mov	rsi, rdi
+.LBB1_157:
+	shl	rcx, 5
+	mov	r8, r15
+	sub	r8, rcx
+	jle	.LBB1_189
+# %bb.158:
+	or	rcx, 1
+	cmp	r15, rcx
+	jne	.LBB1_184
+.LBB1_159:
+	xor	r9d, r9d
+	jmp	.LBB1_187
+.LBB1_160:
 	mov	r9, r8
 	and	r9, -2
 	xor	r11d, r11d
-	mov	r15, r14
 	.p2align	4, 0x90
-.LBB1_137:                              # =>This Inner Loop Header: Depth=1
+.LBB1_161:                              # =>This Inner Loop Header: Depth=1
 	vucomisd	xmm0, qword ptr [rsi]
 	setnp	cl
 	sete	al
@@ -5688,7 +6008,8 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	neg	al
 	mov	rdi, r11
 	shr	rdi, 3
-	movzx	r10d, byte ptr [r15 + rdi]
+	mov	r15, r14
+	movzx	r10d, byte ptr [r14 + rdi]
 	mov	ecx, r11d
 	and	cl, 6
 	mov	bl, 1
@@ -5696,7 +6017,7 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	xor	al, r10b
 	and	bl, al
 	xor	bl, r10b
-	mov	byte ptr [r15 + rdi], bl
+	mov	byte ptr [r14 + rdi], bl
 	add	r11, 2
 	vucomisd	xmm0, qword ptr [rsi + 8]
 	lea	rsi, [rsi + 16]
@@ -5710,28 +6031,28 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	shl	dl, cl
 	and	dl, al
 	xor	dl, bl
-	mov	byte ptr [r15 + rdi], dl
+	mov	byte ptr [r14 + rdi], dl
 	cmp	r9, r11
-	jne	.LBB1_137
-.LBB1_138:
+	jne	.LBB1_161
+.LBB1_162:
 	test	r8b, 1
-	je	.LBB1_165
-# %bb.139:
+	je	.LBB1_189
+# %bb.163:
 	vucomisd	xmm0, qword ptr [rsi]
-	jmp	.LBB1_154
-.LBB1_142:
+	jmp	.LBB1_176
+.LBB1_164:
 	mov	r10, r8
 	and	r10, -2
 	xor	r11d, r11d
-	mov	r15, r14
 	.p2align	4, 0x90
-.LBB1_143:                              # =>This Inner Loop Header: Depth=1
+.LBB1_165:                              # =>This Inner Loop Header: Depth=1
 	cmp	word ptr [rsi], r13w
 	sete	al
 	neg	al
 	mov	rdi, r11
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r15 + rdi]
+	mov	r15, r14
+	movzx	r9d, byte ptr [r14 + rdi]
 	mov	ecx, r11d
 	and	cl, 6
 	mov	bl, 1
@@ -5739,7 +6060,7 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	xor	al, r9b
 	and	bl, al
 	xor	bl, r9b
-	mov	byte ptr [r15 + rdi], bl
+	mov	byte ptr [r14 + rdi], bl
 	add	r11, 2
 	cmp	word ptr [rsi + 2], r13w
 	lea	rsi, [rsi + 4]
@@ -5751,28 +6072,28 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	shl	dl, cl
 	and	dl, al
 	xor	dl, bl
-	mov	byte ptr [r15 + rdi], dl
+	mov	byte ptr [r14 + rdi], dl
 	cmp	r10, r11
-	jne	.LBB1_143
-.LBB1_144:
+	jne	.LBB1_165
+.LBB1_166:
 	test	r8b, 1
-	je	.LBB1_165
-# %bb.145:
+	je	.LBB1_189
+# %bb.167:
 	cmp	word ptr [rsi], r13w
-	jmp	.LBB1_164
-.LBB1_146:
+	jmp	.LBB1_181
+.LBB1_168:
 	mov	r10, r8
 	and	r10, -2
 	xor	r11d, r11d
-	mov	r15, r14
 	.p2align	4, 0x90
-.LBB1_147:                              # =>This Inner Loop Header: Depth=1
+.LBB1_169:                              # =>This Inner Loop Header: Depth=1
 	cmp	qword ptr [rsi], r13
 	sete	al
 	neg	al
 	mov	rdi, r11
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r15 + rdi]
+	mov	r15, r14
+	movzx	r9d, byte ptr [r14 + rdi]
 	mov	ecx, r11d
 	and	cl, 6
 	mov	bl, 1
@@ -5780,7 +6101,7 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	xor	al, r9b
 	and	bl, al
 	xor	bl, r9b
-	mov	byte ptr [r15 + rdi], bl
+	mov	byte ptr [r14 + rdi], bl
 	add	r11, 2
 	cmp	qword ptr [rsi + 8], r13
 	lea	rsi, [rsi + 16]
@@ -5792,22 +6113,21 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	shl	dl, cl
 	and	dl, al
 	xor	dl, bl
-	mov	byte ptr [r15 + rdi], dl
+	mov	byte ptr [r14 + rdi], dl
 	cmp	r10, r11
-	jne	.LBB1_147
-.LBB1_148:
+	jne	.LBB1_169
+.LBB1_170:
 	test	r8b, 1
-	je	.LBB1_165
-# %bb.149:
+	je	.LBB1_189
+# %bb.171:
 	cmp	qword ptr [rsi], r13
-	jmp	.LBB1_164
-.LBB1_150:
+	jmp	.LBB1_181
+.LBB1_172:
 	mov	r9, r8
 	and	r9, -2
 	xor	r11d, r11d
-	mov	r15, r14
 	.p2align	4, 0x90
-.LBB1_151:                              # =>This Inner Loop Header: Depth=1
+.LBB1_173:                              # =>This Inner Loop Header: Depth=1
 	vucomiss	xmm0, dword ptr [rsi]
 	setnp	cl
 	sete	al
@@ -5815,7 +6135,8 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	neg	al
 	mov	rdi, r11
 	shr	rdi, 3
-	movzx	r10d, byte ptr [r15 + rdi]
+	mov	r15, r14
+	movzx	r10d, byte ptr [r14 + rdi]
 	mov	ecx, r11d
 	and	cl, 6
 	mov	bl, 1
@@ -5823,7 +6144,7 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	xor	al, r10b
 	and	bl, al
 	xor	bl, r10b
-	mov	byte ptr [r15 + rdi], bl
+	mov	byte ptr [r14 + rdi], bl
 	add	r11, 2
 	vucomiss	xmm0, dword ptr [rsi + 4]
 	lea	rsi, [rsi + 8]
@@ -5837,15 +6158,15 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	shl	dl, cl
 	and	dl, al
 	xor	dl, bl
-	mov	byte ptr [r15 + rdi], dl
+	mov	byte ptr [r14 + rdi], dl
 	cmp	r9, r11
-	jne	.LBB1_151
-.LBB1_152:
+	jne	.LBB1_173
+.LBB1_174:
 	test	r8b, 1
-	je	.LBB1_165
-# %bb.153:
+	je	.LBB1_189
+# %bb.175:
 	vucomiss	xmm0, dword ptr [rsi]
-.LBB1_154:
+.LBB1_176:
 	setnp	al
 	sete	dl
 	and	dl, al
@@ -5861,76 +6182,20 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	and	bl, dl
 	xor	bl, sil
 	mov	byte ptr [r14 + rax], bl
-	jmp	.LBB1_165
-.LBB1_155:
+	jmp	.LBB1_189
+.LBB1_177:
 	mov	r10, r8
 	and	r10, -2
-	xor	esi, esi
-	mov	r11, qword ptr [rsp + 376]      # 8-byte Reload
+	xor	r11d, r11d
 	.p2align	4, 0x90
-.LBB1_156:                              # =>This Inner Loop Header: Depth=1
-	cmp	byte ptr [r12 + rsi], r14b
-	sete	bl
-	neg	bl
-	mov	rdi, rsi
-	shr	rdi, 3
-	mov	ecx, esi
-	and	cl, 6
-	mov	dl, 1
-	shl	dl, cl
-	movzx	r9d, byte ptr [r11 + rdi]
-	xor	bl, r9b
-	and	dl, bl
-	xor	dl, r9b
-	mov	byte ptr [r11 + rdi], dl
-	cmp	byte ptr [r12 + rsi + 1], r14b
-	lea	rsi, [rsi + 2]
-	sete	bl
-	neg	bl
-	xor	bl, dl
-	or	cl, 1
-	mov	al, 1
-	shl	al, cl
-	and	al, bl
-	xor	al, dl
-	mov	byte ptr [r11 + rdi], al
-	cmp	r10, rsi
-	jne	.LBB1_156
-.LBB1_157:
-	add	r12, rsi
-.LBB1_158:
-	test	r8b, 1
-	je	.LBB1_165
-# %bb.159:
-	cmp	byte ptr [r12], r14b
-	sete	al
-	neg	al
-	mov	rdx, rsi
-	shr	rdx, 3
-	mov	r8, qword ptr [rsp + 376]       # 8-byte Reload
-	mov	dil, byte ptr [r8 + rdx]
-	and	sil, 7
-	mov	bl, 1
-	mov	ecx, esi
-	shl	bl, cl
-	xor	al, dil
-	and	bl, al
-	xor	bl, dil
-	mov	byte ptr [r8 + rdx], bl
-	jmp	.LBB1_165
-.LBB1_160:
-	mov	r10, r8
-	and	r10, -2
-	xor	r11d, r11d
-	mov	r15, r14
-	.p2align	4, 0x90
-.LBB1_161:                              # =>This Inner Loop Header: Depth=1
+.LBB1_178:                              # =>This Inner Loop Header: Depth=1
 	cmp	dword ptr [rsi], r13d
 	sete	al
 	neg	al
 	mov	rdi, r11
 	shr	rdi, 3
-	movzx	r9d, byte ptr [r15 + rdi]
+	mov	r15, r14
+	movzx	r9d, byte ptr [r14 + rdi]
 	mov	ecx, r11d
 	and	cl, 6
 	mov	bl, 1
@@ -5938,7 +6203,7 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	xor	al, r9b
 	and	bl, al
 	xor	bl, r9b
-	mov	byte ptr [r15 + rdi], bl
+	mov	byte ptr [r14 + rdi], bl
 	add	r11, 2
 	cmp	dword ptr [rsi + 4], r13d
 	lea	rsi, [rsi + 8]
@@ -5950,15 +6215,15 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	shl	dl, cl
 	and	dl, al
 	xor	dl, bl
-	mov	byte ptr [r15 + rdi], dl
+	mov	byte ptr [r14 + rdi], dl
 	cmp	r10, r11
-	jne	.LBB1_161
-.LBB1_162:
+	jne	.LBB1_178
+.LBB1_179:
 	test	r8b, 1
-	je	.LBB1_165
-# %bb.163:
+	je	.LBB1_189
+# %bb.180:
 	cmp	dword ptr [rsi], r13d
-.LBB1_164:
+.LBB1_181:
 	sete	al
 	neg	al
 	mov	rdx, r11
@@ -5972,7 +6237,64 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	and	bl, al
 	xor	bl, sil
 	mov	byte ptr [r14 + rdx], bl
-.LBB1_165:
+	jmp	.LBB1_189
+.LBB1_184:
+	mov	r10, r8
+	and	r10, -2
+	xor	r9d, r9d
+	mov	r11, qword ptr [rsp + 376]      # 8-byte Reload
+	.p2align	4, 0x90
+.LBB1_185:                              # =>This Inner Loop Header: Depth=1
+	mov	rax, r9
+	cmp	byte ptr [rsi + r9], r12b
+	sete	bl
+	neg	bl
+	mov	rdi, r9
+	shr	rdi, 3
+	mov	ecx, eax
+	and	cl, 6
+	mov	dl, 1
+	shl	dl, cl
+	movzx	r9d, byte ptr [r11 + rdi]
+	xor	bl, r9b
+	and	dl, bl
+	xor	dl, r9b
+	mov	byte ptr [r11 + rdi], dl
+	cmp	byte ptr [rsi + rax + 1], r12b
+	lea	r9, [rax + 2]
+	sete	bl
+	neg	bl
+	xor	bl, dl
+	or	cl, 1
+	mov	al, 1
+	shl	al, cl
+	and	al, bl
+	xor	al, dl
+	mov	byte ptr [r11 + rdi], al
+	cmp	r10, r9
+	jne	.LBB1_185
+.LBB1_186:
+	add	rsi, r9
+.LBB1_187:
+	test	r8b, 1
+	je	.LBB1_189
+# %bb.188:
+	cmp	byte ptr [rsi], r12b
+	sete	al
+	neg	al
+	mov	rdx, r9
+	shr	rdx, 3
+	mov	r8, qword ptr [rsp + 376]       # 8-byte Reload
+	mov	dil, byte ptr [r8 + rdx]
+	and	r9b, 7
+	mov	bl, 1
+	mov	ecx, r9d
+	shl	bl, cl
+	xor	al, dil
+	and	bl, al
+	xor	bl, dil
+	mov	byte ptr [r8 + rdx], bl
+.LBB1_189:
 	lea	rsp, [rbp - 40]
 	pop	rbx
 	pop	r12
@@ -5982,102 +6304,102 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	pop	rbp
 	vzeroupper
 	ret
-.LBB1_166:
-	and	r13, -32
-	mov	rax, r13
+.LBB1_190:
+	and	rcx, -32
+	mov	rax, rcx
 	shl	rax, 5
-	add	rax, rsi
+	add	rax, rdi
 	mov	qword ptr [rsp + 400], rax      # 8-byte Spill
-	mov	qword ptr [rsp + 384], r13      # 8-byte Spill
-	lea	rax, [r11 + 4*r13]
+	mov	qword ptr [rsp + 384], rcx      # 8-byte Spill
+	lea	rax, [r14 + 4*rcx]
 	mov	qword ptr [rsp + 376], rax      # 8-byte Spill
-	vmovd	xmm0, r14d
+	vmovd	xmm0, r12d
 	vpbroadcastb	ymm0, xmm0
 	vmovdqa	ymmword ptr [rsp + 512], ymm0   # 32-byte Spill
 	xor	eax, eax
-	mov	qword ptr [rsp + 272], r11      # 8-byte Spill
+	mov	qword ptr [rsp + 272], r14      # 8-byte Spill
 	.p2align	4, 0x90
-.LBB1_167:                              # =>This Inner Loop Header: Depth=1
+.LBB1_191:                              # =>This Inner Loop Header: Depth=1
 	mov	rbx, rax
 	mov	qword ptr [rsp + 408], rax      # 8-byte Spill
 	shl	rbx, 5
 	mov	rax, rbx
 	or	rax, 32
-	mov	qword ptr [rsp + 208], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 184], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 64
-	mov	qword ptr [rsp + 88], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 120], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 96
-	mov	qword ptr [rsp + 64], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 56], rax       # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 128
-	mov	qword ptr [rsp + 160], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 176], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 160
-	mov	qword ptr [rsp + 320], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 136], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 192
-	mov	qword ptr [rsp + 144], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 152], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 224
-	mov	qword ptr [rsp + 224], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 248], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 256
-	mov	qword ptr [rsp + 264], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 168], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 288
-	mov	qword ptr [rsp + 96], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 160], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 320
-	mov	qword ptr [rsp + 136], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 40], rax       # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 512
 	mov	rcx, rax
-	movzx	eax, byte ptr [rsi + rax]
-	mov	rdx, rcx
+	movzx	eax, byte ptr [rdi + rax]
 	vmovd	xmm0, eax
-	mov	rcx, rbx
-	movzx	eax, byte ptr [rsi + rbx]
+	movzx	eax, byte ptr [rdi + rbx]
 	vmovd	xmm3, eax
-	movzx	eax, byte ptr [rsi + rdx + 1]
+	movzx	eax, byte ptr [rdi + rcx + 1]
+	mov	rdx, rcx
 	vmovd	xmm4, eax
-	movzx	eax, byte ptr [rsi + rbx + 1]
+	mov	rcx, rbx
+	movzx	eax, byte ptr [rdi + rbx + 1]
 	vmovd	xmm10, eax
-	movzx	eax, byte ptr [rsi + rdx + 2]
+	movzx	eax, byte ptr [rdi + rdx + 2]
 	vmovd	xmm1, eax
 	vmovdqa	xmmword ptr [rsp + 480], xmm1   # 16-byte Spill
-	movzx	eax, byte ptr [rsi + rbx + 2]
+	movzx	eax, byte ptr [rdi + rbx + 2]
 	vmovd	xmm1, eax
 	vmovdqa	xmmword ptr [rsp + 448], xmm1   # 16-byte Spill
-	movzx	eax, byte ptr [rsi + rdx + 3]
+	movzx	eax, byte ptr [rdi + rdx + 3]
 	vmovd	xmm11, eax
-	movzx	eax, byte ptr [rsi + rbx + 3]
+	movzx	eax, byte ptr [rdi + rbx + 3]
 	vmovd	xmm8, eax
-	movzx	eax, byte ptr [rsi + rdx + 4]
+	movzx	eax, byte ptr [rdi + rdx + 4]
 	vmovd	xmm1, eax
 	vmovdqa	xmmword ptr [rsp + 416], xmm1   # 16-byte Spill
-	movzx	eax, byte ptr [rsi + rbx + 4]
+	movzx	eax, byte ptr [rdi + rbx + 4]
 	vmovd	xmm13, eax
-	movzx	eax, byte ptr [rsi + rdx + 5]
+	movzx	eax, byte ptr [rdi + rdx + 5]
 	vmovd	xmm14, eax
-	movzx	eax, byte ptr [rsi + rbx + 5]
+	movzx	eax, byte ptr [rdi + rbx + 5]
 	vmovd	xmm6, eax
-	movzx	eax, byte ptr [rsi + rdx + 6]
+	movzx	eax, byte ptr [rdi + rdx + 6]
 	mov	qword ptr [rsp + 240], rdx      # 8-byte Spill
 	vmovd	xmm12, eax
-	movzx	eax, byte ptr [rsi + rbx + 6]
+	movzx	eax, byte ptr [rdi + rbx + 6]
 	vmovd	xmm7, eax
-	movzx	eax, byte ptr [rsi + rdx + 7]
+	movzx	eax, byte ptr [rdi + rdx + 7]
 	vmovd	xmm2, eax
-	movzx	eax, byte ptr [rsi + rbx + 7]
+	movzx	eax, byte ptr [rdi + rbx + 7]
 	vmovd	xmm1, eax
 	mov	rax, rbx
 	or	rax, 352
 	mov	qword ptr [rsp + 128], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 384
-	mov	qword ptr [rsp + 120], rax      # 8-byte Spill
+	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 416
 	mov	qword ptr [rsp + 32], rax       # 8-byte Spill
@@ -6086,1881 +6408,1882 @@ comparison_equal_arr_scalar_avx2:       # @comparison_equal_arr_scalar_avx2
 	mov	qword ptr [rsp + 288], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 480
-	mov	qword ptr [rsp + 48], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 320], rax      # 8-byte Spill
 	mov	rax, rbx
 	or	rax, 544
-	mov	qword ptr [rsp + 152], rax      # 8-byte Spill
-	mov	rax, rbx
-	or	rax, 576
-	mov	qword ptr [rsp + 232], rax      # 8-byte Spill
-	mov	rax, rbx
-	or	rax, 608
 	mov	qword ptr [rsp + 104], rax      # 8-byte Spill
-	mov	r15, rbx
-	or	r15, 640
-	mov	qword ptr [rsp + 168], r15      # 8-byte Spill
-	mov	r11, rbx
-	or	r11, 672
-	mov	qword ptr [rsp + 200], r11      # 8-byte Spill
-	mov	r8, rbx
-	or	r8, 704
-	mov	qword ptr [rsp + 176], r8       # 8-byte Spill
-	mov	rdx, rbx
-	or	rdx, 736
-	mov	qword ptr [rsp + 192], rdx      # 8-byte Spill
-	mov	r12, rbx
-	or	r12, 768
-	mov	qword ptr [rsp + 216], r12      # 8-byte Spill
-	mov	r14, rbx
-	or	r14, 800
-	mov	qword ptr [rsp + 184], r14      # 8-byte Spill
-	mov	r10, rbx
+	or	rbx, 576
+	mov	qword ptr [rsp + 264], rbx      # 8-byte Spill
+	mov	rax, rcx
+	or	rax, 608
+	mov	qword ptr [rsp + 200], rax      # 8-byte Spill
+	mov	r14, rcx
+	or	r14, 640
+	mov	qword ptr [rsp + 112], r14      # 8-byte Spill
+	mov	rax, rcx
+	or	rax, 672
+	mov	qword ptr [rsp + 192], rax      # 8-byte Spill
+	mov	r12, rcx
+	or	r12, 704
+	mov	qword ptr [rsp + 144], r12      # 8-byte Spill
+	mov	rsi, rcx
+	or	rsi, 736
+	mov	qword ptr [rsp + 208], rsi      # 8-byte Spill
+	mov	r15, rcx
+	or	r15, 768
+	mov	qword ptr [rsp + 224], r15      # 8-byte Spill
+	mov	r11, rcx
+	or	r11, 800
+	mov	qword ptr [rsp + 232], r11      # 8-byte Spill
+	mov	r10, rcx
 	or	r10, 832
-	mov	qword ptr [rsp + 80], r10       # 8-byte Spill
-	mov	r9, rbx
+	mov	qword ptr [rsp + 88], r10       # 8-byte Spill
+	mov	r9, rcx
 	or	r9, 864
-	mov	qword ptr [rsp + 72], r9        # 8-byte Spill
-	mov	rax, rbx
-	or	rax, 896
-	mov	qword ptr [rsp + 248], rax      # 8-byte Spill
-	mov	rdi, rbx
-	or	rdi, 928
-	mov	qword ptr [rsp + 112], rdi      # 8-byte Spill
-	mov	rax, rbx
-	mov	qword ptr [rsp + 256], rbx      # 8-byte Spill
+	mov	qword ptr [rsp + 216], r9       # 8-byte Spill
+	mov	r8, rcx
+	or	r8, 896
+	mov	qword ptr [rsp + 80], r8        # 8-byte Spill
+	mov	rdx, rcx
+	or	rdx, 928
+	mov	qword ptr [rsp + 72], rdx       # 8-byte Spill
+	mov	rax, rcx
+	mov	qword ptr [rsp + 256], rcx      # 8-byte Spill
 	or	rax, 960
-	mov	qword ptr [rsp + 40], rax       # 8-byte Spill
+	mov	qword ptr [rsp + 64], rax       # 8-byte Spill
 	or	rcx, 992
-	mov	qword ptr [rsp + 56], rcx       # 8-byte Spill
-	mov	r13, qword ptr [rsp + 152]      # 8-byte Reload
-	vpinsrb	xmm9, xmm0, byte ptr [rsi + r13], 1
-	mov	rbx, qword ptr [rsp + 232]      # 8-byte Reload
-	vpinsrb	xmm0, xmm9, byte ptr [rsi + rbx], 2
-	mov	rbx, qword ptr [rsp + 104]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rbx], 3
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r15], 4
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r11], 5
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r8], 6
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rdx], 7
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r12], 8
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r14], 9
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r10], 10
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r9], 11
-	mov	r13, qword ptr [rsp + 248]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r13], 12
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rdi], 13
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rax], 14
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rcx], 15
-	mov	r14, qword ptr [rsp + 208]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + r14], 1
-	mov	r12, qword ptr [rsp + 88]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + r12], 2
-	mov	r10, qword ptr [rsp + 64]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + r10], 3
-	mov	r11, qword ptr [rsp + 160]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + r11], 4
-	mov	r8, qword ptr [rsp + 320]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + r8], 5
-	mov	r9, qword ptr [rsp + 144]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + r9], 6
-	mov	r15, qword ptr [rsp + 224]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + r15], 7
-	mov	rdi, qword ptr [rsp + 264]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rdi], 8
-	mov	rax, qword ptr [rsp + 96]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rax], 9
-	mov	rbx, qword ptr [rsp + 136]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rbx], 10
-	mov	rcx, qword ptr [rsp + 128]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rcx], 11
-	mov	rdx, qword ptr [rsp + 120]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rdx], 12
-	mov	rdx, qword ptr [rsp + 32]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rdx], 13
-	mov	rdx, qword ptr [rsp + 288]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rdx], 14
-	mov	rdx, qword ptr [rsp + 48]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rdx], 15
-	mov	rdx, qword ptr [rsp + 152]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 1
-	mov	rdx, qword ptr [rsp + 232]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 2
-	mov	rdx, qword ptr [rsp + 104]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 3
+	mov	qword ptr [rsp + 96], rcx       # 8-byte Spill
+	mov	r13, qword ptr [rsp + 104]      # 8-byte Reload
+	vpinsrb	xmm9, xmm0, byte ptr [rdi + r13], 1
+	vpinsrb	xmm0, xmm9, byte ptr [rdi + rbx], 2
+	mov	rbx, qword ptr [rsp + 200]      # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rbx], 3
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r14], 4
+	mov	rbx, qword ptr [rsp + 192]      # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rbx], 5
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r12], 6
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rsi], 7
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r15], 8
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r11], 9
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r10], 10
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r9], 11
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r8], 12
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rdx], 13
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rax], 14
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rcx], 15
+	mov	r14, qword ptr [rsp + 184]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + r14], 1
+	mov	r12, qword ptr [rsp + 120]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + r12], 2
+	mov	r8, qword ptr [rsp + 56]        # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + r8], 3
+	mov	r9, qword ptr [rsp + 176]       # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + r9], 4
+	mov	r11, qword ptr [rsp + 136]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + r11], 5
+	mov	r10, qword ptr [rsp + 152]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + r10], 6
+	mov	r15, qword ptr [rsp + 248]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + r15], 7
 	mov	rdx, qword ptr [rsp + 168]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 4
-	mov	rdx, qword ptr [rsp + 200]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 5
-	mov	rdx, qword ptr [rsp + 176]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 6
-	mov	rdx, qword ptr [rsp + 192]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 7
-	mov	rdx, qword ptr [rsp + 216]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 8
-	mov	rdx, qword ptr [rsp + 184]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 9
-	mov	rdx, qword ptr [rsp + 80]       # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 10
-	mov	rdx, qword ptr [rsp + 72]       # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 11
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + r13 + 1], 12
-	mov	rdx, qword ptr [rsp + 112]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 13
-	mov	r13, qword ptr [rsp + 40]       # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + r13 + 1], 14
-	mov	rdx, qword ptr [rsp + 56]       # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 1], 15
-	vpinsrb	xmm5, xmm10, byte ptr [rsi + r14 + 1], 1
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + r12 + 1], 2
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + r10 + 1], 3
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + r11 + 1], 4
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + r8 + 1], 5
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + r9 + 1], 6
-	mov	r8, r9
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + r15 + 1], 7
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rdi + 1], 8
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rax + 1], 9
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rbx + 1], 10
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rcx + 1], 11
-	mov	rax, qword ptr [rsp + 120]      # 8-byte Reload
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rax + 1], 12
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rdx], 8
+	mov	rax, qword ptr [rsp + 160]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rax], 9
+	mov	rbx, qword ptr [rsp + 40]       # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rbx], 10
+	mov	rcx, qword ptr [rsp + 128]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rcx], 11
+	mov	rsi, qword ptr [rsp + 48]       # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rsi], 12
+	mov	rsi, qword ptr [rsp + 32]       # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rsi], 13
+	mov	rsi, qword ptr [rsp + 288]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rsi], 14
+	mov	rsi, qword ptr [rsp + 320]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rsi], 15
+	mov	rsi, qword ptr [rsp + 104]      # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 1
+	mov	r13, qword ptr [rsp + 264]      # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + r13 + 1], 2
+	mov	rsi, qword ptr [rsp + 200]      # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 3
+	mov	r13, qword ptr [rsp + 112]      # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + r13 + 1], 4
+	mov	rsi, qword ptr [rsp + 192]      # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 5
+	mov	r13, qword ptr [rsp + 144]      # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + r13 + 1], 6
+	mov	r13, qword ptr [rsp + 208]      # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + r13 + 1], 7
+	mov	rsi, qword ptr [rsp + 224]      # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 8
+	mov	rsi, qword ptr [rsp + 232]      # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 9
+	mov	rsi, qword ptr [rsp + 88]       # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 10
+	mov	rsi, qword ptr [rsp + 216]      # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 11
+	mov	rsi, qword ptr [rsp + 80]       # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 12
+	mov	rsi, qword ptr [rsp + 72]       # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 13
+	mov	rsi, qword ptr [rsp + 64]       # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 14
+	mov	rsi, qword ptr [rsp + 96]       # 8-byte Reload
+	vpinsrb	xmm4, xmm4, byte ptr [rdi + rsi + 1], 15
+	vpinsrb	xmm5, xmm10, byte ptr [rdi + r14 + 1], 1
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + r12 + 1], 2
+	mov	rsi, r12
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + r8 + 1], 3
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + r9 + 1], 4
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + r11 + 1], 5
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + r10 + 1], 6
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + r15 + 1], 7
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + rdx + 1], 8
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + rax + 1], 9
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + rbx + 1], 10
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + rcx + 1], 11
+	mov	rax, qword ptr [rsp + 48]       # 8-byte Reload
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + rax + 1], 12
 	mov	rax, qword ptr [rsp + 32]       # 8-byte Reload
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rax + 1], 13
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + rax + 1], 13
 	mov	rax, qword ptr [rsp + 288]      # 8-byte Reload
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rax + 1], 14
+	vpinsrb	xmm5, xmm5, byte ptr [rdi + rax + 1], 14
 	vinserti128	ymm15, ymm3, xmm0, 1
-	mov	rax, qword ptr [rsp + 48]       # 8-byte Reload
-	vpinsrb	xmm0, xmm5, byte ptr [rsi + rax + 1], 15
+	mov	rax, qword ptr [rsp + 320]      # 8-byte Reload
+	vpinsrb	xmm0, xmm5, byte ptr [rdi + rax + 1], 15
 	mov	rax, qword ptr [rsp + 240]      # 8-byte Reload
-	movzx	edi, byte ptr [rsi + rax + 8]
-	vmovd	xmm9, edi
+	movzx	edx, byte ptr [rdi + rax + 8]
+	vmovd	xmm9, edx
 	vinserti128	ymm0, ymm0, xmm4, 1
 	vmovdqa	ymmword ptr [rsp + 1216], ymm0  # 32-byte Spill
 	mov	rax, qword ptr [rsp + 256]      # 8-byte Reload
-	movzx	edi, byte ptr [rsi + rax + 8]
-	vmovd	xmm10, edi
-	mov	rdx, qword ptr [rsp + 152]      # 8-byte Reload
+	movzx	edx, byte ptr [rdi + rax + 8]
+	vmovd	xmm10, edx
+	mov	r8, qword ptr [rsp + 104]       # 8-byte Reload
 	vmovdqa	xmm0, xmmword ptr [rsp + 480]   # 16-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rdx + 2], 1
-	mov	rcx, qword ptr [rsp + 232]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rcx + 2], 2
-	mov	r10, qword ptr [rsp + 104]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r10 + 2], 3
-	mov	rax, qword ptr [rsp + 168]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rax + 2], 4
-	mov	rax, qword ptr [rsp + 200]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rax + 2], 5
-	mov	rax, qword ptr [rsp + 176]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rax + 2], 6
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r8 + 2], 1
+	mov	r9, qword ptr [rsp + 264]       # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r9 + 2], 2
+	mov	r10, qword ptr [rsp + 200]      # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r10 + 2], 3
+	mov	rax, qword ptr [rsp + 112]      # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rax + 2], 4
 	mov	rax, qword ptr [rsp + 192]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rax + 2], 7
-	mov	r12, qword ptr [rsp + 216]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r12 + 2], 8
-	mov	r13, qword ptr [rsp + 184]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r13 + 2], 9
-	mov	r9, qword ptr [rsp + 80]        # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r9 + 2], 10
-	mov	r11, qword ptr [rsp + 72]       # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r11 + 2], 11
-	mov	r14, qword ptr [rsp + 248]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r14 + 2], 12
-	mov	r15, qword ptr [rsp + 112]      # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + r15 + 2], 13
-	mov	rax, qword ptr [rsp + 40]       # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rax + 2], 14
-	mov	rax, qword ptr [rsp + 56]       # 8-byte Reload
-	vpinsrb	xmm0, xmm0, byte ptr [rsi + rax + 2], 15
-	mov	rax, qword ptr [rsp + 208]      # 8-byte Reload
-	vmovdqa	xmm3, xmmword ptr [rsp + 448]   # 16-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rax + 2], 1
-	mov	rdi, qword ptr [rsp + 88]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rdi + 2], 2
-	mov	rdi, qword ptr [rsp + 64]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rdi + 2], 3
-	mov	rdi, qword ptr [rsp + 160]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rdi + 2], 4
-	mov	rdi, qword ptr [rsp + 320]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rdi + 2], 5
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + r8 + 2], 6
-	mov	rdi, qword ptr [rsp + 224]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rdi + 2], 7
-	mov	rbx, qword ptr [rsp + 264]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rbx + 2], 8
-	mov	rbx, qword ptr [rsp + 96]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rbx + 2], 9
-	mov	rbx, qword ptr [rsp + 136]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rbx + 2], 10
-	mov	r8, qword ptr [rsp + 128]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + r8 + 2], 11
-	mov	rbx, qword ptr [rsp + 120]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rbx + 2], 12
-	mov	rbx, qword ptr [rsp + 32]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rbx + 2], 13
-	mov	rbx, qword ptr [rsp + 288]      # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rbx + 2], 14
-	mov	rbx, qword ptr [rsp + 48]       # 8-byte Reload
-	vpinsrb	xmm3, xmm3, byte ptr [rsi + rbx + 2], 15
-	vpinsrb	xmm4, xmm11, byte ptr [rsi + rdx + 3], 1
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rcx + 3], 2
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + r10 + 3], 3
-	mov	rcx, qword ptr [rsp + 168]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rcx + 3], 4
-	mov	rcx, qword ptr [rsp + 200]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rcx + 3], 5
-	mov	rcx, qword ptr [rsp + 176]      # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rcx + 3], 6
-	mov	r8, qword ptr [rsp + 192]       # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + r8 + 3], 7
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + r12 + 3], 8
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + r13 + 3], 9
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + r9 + 3], 10
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + r11 + 3], 11
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + r14 + 3], 12
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + r15 + 3], 13
-	mov	r14, r15
-	mov	rdx, qword ptr [rsp + 40]       # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rdx + 3], 14
-	mov	rcx, qword ptr [rsp + 56]       # 8-byte Reload
-	vpinsrb	xmm4, xmm4, byte ptr [rsi + rcx + 3], 15
-	vpinsrb	xmm5, xmm8, byte ptr [rsi + rax + 3], 1
-	mov	rax, qword ptr [rsp + 88]       # 8-byte Reload
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rax + 3], 2
-	mov	r10, qword ptr [rsp + 64]       # 8-byte Reload
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + r10 + 3], 3
-	mov	r15, qword ptr [rsp + 160]      # 8-byte Reload
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + r15 + 3], 4
-	mov	rax, qword ptr [rsp + 320]      # 8-byte Reload
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rax + 3], 5
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rax + 2], 5
 	mov	rax, qword ptr [rsp + 144]      # 8-byte Reload
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rax + 3], 6
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rdi + 3], 7
-	mov	r11, qword ptr [rsp + 264]      # 8-byte Reload
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + r11 + 3], 8
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rax + 2], 6
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r13 + 2], 7
+	mov	rcx, qword ptr [rsp + 224]      # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rcx + 2], 8
+	mov	r12, qword ptr [rsp + 232]      # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r12 + 2], 9
+	mov	r13, qword ptr [rsp + 88]       # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r13 + 2], 10
+	mov	r11, qword ptr [rsp + 216]      # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r11 + 2], 11
+	mov	r14, qword ptr [rsp + 80]       # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r14 + 2], 12
+	mov	r15, qword ptr [rsp + 72]       # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + r15 + 2], 13
+	mov	rax, qword ptr [rsp + 64]       # 8-byte Reload
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rax + 2], 14
 	mov	rax, qword ptr [rsp + 96]       # 8-byte Reload
-	vpinsrb	xmm5, xmm5, byte ptr [rsi + rax + 3], 9
+	vpinsrb	xmm0, xmm0, byte ptr [rdi + rax + 2], 15
+	mov	rax, qword ptr [rsp + 184]      # 8-byte Reload
+	vmovdqa	xmm3, xmmword ptr [rsp + 448]   # 16-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rax + 2], 1
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rsi + 2], 2
+	mov	rdx, qword ptr [rsp + 56]       # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rdx + 2], 3
+	mov	rdx, qword ptr [rsp + 176]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rdx + 2], 4
+	mov	rdx, qword ptr [rsp + 136]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rdx + 2], 5
+	mov	rdx, qword ptr [rsp + 152]      # 8-byte Reload
+	vpinsrb	xmm3, xmm3, byte ptr [rdi + rdx + 2], 6
... 420987 lines suppressed ...