; LLVM IR from intuitive-robots/mdt_policy :: pyhash-0.9.3/src/smhasher (siphash_sse2)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%union.packedelem64_t = type { <2 x i64> }

@siphash_init = external hidden constant [2 x { [2 x i64] }], align 16
@siphash_final = external hidden constant { [2 x i64] }, align 16

; Function Attrs: nounwind uwtable
define dso_local i64 @siphash(ptr noundef %0, ptr noundef %1, i64 noundef %2) #0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i64, align 8
  %7 = alloca <2 x i64>, align 16
  %8 = alloca <2 x i64>, align 16
  %9 = alloca <2 x i64>, align 16
  %10 = alloca <2 x i64>, align 16
  %11 = alloca <2 x i64>, align 16
  %12 = alloca <2 x i64>, align 16
  %13 = alloca <2 x i64>, align 16
  %14 = alloca i64, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store i64 %2, ptr %6, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  %19 = load ptr, ptr %4, align 8, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %19, i64 0
  %21 = call <2 x i64> @_mm_loadu_si128(ptr noundef %20)
  store <2 x i64> %21, ptr %7, align 16, !tbaa !11
  %22 = load <2 x i64>, ptr @siphash_init, align 16, !tbaa !11
  store <2 x i64> %22, ptr %8, align 16, !tbaa !11
  %23 = load <2 x i64>, ptr getelementptr inbounds ([2 x %union.packedelem64_t], ptr @siphash_init, i64 0, i64 1), align 16, !tbaa !11
  store <2 x i64> %23, ptr %10, align 16, !tbaa !11
  %24 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %25 = load <2 x i64>, ptr %7, align 16, !tbaa !11
  %26 = load <2 x i64>, ptr %7, align 16, !tbaa !11
  %27 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %25, <2 x i64> noundef %26)
  %28 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %24, <2 x i64> noundef %27)
  store <2 x i64> %28, ptr %8, align 16, !tbaa !11
  %29 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %30 = load <2 x i64>, ptr %7, align 16, !tbaa !11
  %31 = load <2 x i64>, ptr %7, align 16, !tbaa !11
  %32 = call <2 x i64> @_mm_unpackhi_epi64(<2 x i64> noundef %30, <2 x i64> noundef %31)
  %33 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %29, <2 x i64> noundef %32)
  store <2 x i64> %33, ptr %10, align 16, !tbaa !11
  %34 = load i64, ptr %6, align 8, !tbaa !9
  %35 = and i64 %34, 255
  %36 = shl i64 %35, 56
  store i64 %36, ptr %14, align 8, !tbaa !9
  store i64 0, ptr %17, align 8, !tbaa !9
  %37 = load i64, ptr %6, align 8, !tbaa !9
  %38 = and i64 %37, -8
  store i64 %38, ptr %18, align 8, !tbaa !9
  br label %39

39:                                               ; preds = %175, %3
  %40 = load i64, ptr %17, align 8, !tbaa !9
  %41 = load i64, ptr %18, align 8, !tbaa !9
  %42 = icmp ult i64 %40, %41
  br i1 %42, label %43, label %178

43:                                               ; preds = %39
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = load i64, ptr %17, align 8, !tbaa !9
  %46 = getelementptr inbounds i8, ptr %44, i64 %45
  %47 = call <2 x i64> @_mm_loadl_epi64(ptr noundef %46)
  store <2 x i64> %47, ptr %13, align 16, !tbaa !11
  %48 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %49 = load <2 x i64>, ptr %13, align 16, !tbaa !11
  %50 = bitcast <2 x i64> %49 to <16 x i8>
  %51 = shufflevector <16 x i8> zeroinitializer, <16 x i8> %50, <16 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
  %52 = bitcast <16 x i8> %51 to <2 x i64>
  %53 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %48, <2 x i64> noundef %52)
  store <2 x i64> %53, ptr %10, align 16, !tbaa !11
  %54 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %54, ptr %11, align 16, !tbaa !11
  %55 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %56 = bitcast <2 x i64> %55 to <4 x i32>
  %57 = shufflevector <4 x i32> %56, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %58 = bitcast <4 x i32> %57 to <2 x i64>
  store <2 x i64> %58, ptr %12, align 16, !tbaa !11
  %59 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %60 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %59, i32 noundef 13)
  %61 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %62 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %61, i32 noundef 51)
  %63 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %60, <2 x i64> noundef %62)
  store <2 x i64> %63, ptr %11, align 16, !tbaa !11
  %64 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %65 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %66 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %64, <2 x i64> noundef %65)
  store <2 x i64> %66, ptr %8, align 16, !tbaa !11
  %67 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %68 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %67, i32 noundef 16)
  %69 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %70 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %69, i32 noundef 48)
  %71 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %68, <2 x i64> noundef %70)
  store <2 x i64> %71, ptr %12, align 16, !tbaa !11
  %72 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %73 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %74 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %72, <2 x i64> noundef %73)
  store <2 x i64> %74, ptr %10, align 16, !tbaa !11
  %75 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %76 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %77 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %75, <2 x i64> noundef %76)
  store <2 x i64> %77, ptr %10, align 16, !tbaa !11
  %78 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %79 = bitcast <2 x i64> %78 to <4 x i32>
  %80 = shufflevector <4 x i32> %79, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %81 = bitcast <4 x i32> %80 to <2 x i64>
  store <2 x i64> %81, ptr %9, align 16, !tbaa !11
  %82 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %82, ptr %11, align 16, !tbaa !11
  %83 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %84 = bitcast <2 x i64> %83 to <4 x i32>
  %85 = shufflevector <4 x i32> %84, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %86 = bitcast <4 x i32> %85 to <2 x i64>
  store <2 x i64> %86, ptr %12, align 16, !tbaa !11
  %87 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %88 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %87, i32 noundef 17)
  %89 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %90 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %89, i32 noundef 47)
  %91 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %88, <2 x i64> noundef %90)
  store <2 x i64> %91, ptr %11, align 16, !tbaa !11
  %92 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %93 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %94 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %92, <2 x i64> noundef %93)
  store <2 x i64> %94, ptr %9, align 16, !tbaa !11
  %95 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %96 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %95, i32 noundef 21)
  %97 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %98 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %97, i32 noundef 43)
  %99 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %96, <2 x i64> noundef %98)
  store <2 x i64> %99, ptr %12, align 16, !tbaa !11
  %100 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %101 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %102 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %100, <2 x i64> noundef %101)
  store <2 x i64> %102, ptr %10, align 16, !tbaa !11
  %103 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %104 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %105 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %103, <2 x i64> noundef %104)
  store <2 x i64> %105, ptr %10, align 16, !tbaa !11
  %106 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %107 = bitcast <2 x i64> %106 to <4 x i32>
  %108 = shufflevector <4 x i32> %107, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %109 = bitcast <4 x i32> %108 to <2 x i64>
  store <2 x i64> %109, ptr %8, align 16, !tbaa !11
  %110 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %111 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %112 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %110, <2 x i64> noundef %111)
  store <2 x i64> %112, ptr %10, align 16, !tbaa !11
  %113 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %113, ptr %11, align 16, !tbaa !11
  %114 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %115 = bitcast <2 x i64> %114 to <4 x i32>
  %116 = shufflevector <4 x i32> %115, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %117 = bitcast <4 x i32> %116 to <2 x i64>
  store <2 x i64> %117, ptr %12, align 16, !tbaa !11
  %118 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %119 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %118, i32 noundef 13)
  %120 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %121 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %120, i32 noundef 51)
  %122 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %119, <2 x i64> noundef %121)
  store <2 x i64> %122, ptr %11, align 16, !tbaa !11
  %123 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %124 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %125 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %123, <2 x i64> noundef %124)
  store <2 x i64> %125, ptr %8, align 16, !tbaa !11
  %126 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %127 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %126, i32 noundef 16)
  %128 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %129 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %128, i32 noundef 48)
  %130 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %127, <2 x i64> noundef %129)
  store <2 x i64> %130, ptr %12, align 16, !tbaa !11
  %131 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %132 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %133 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %131, <2 x i64> noundef %132)
  store <2 x i64> %133, ptr %10, align 16, !tbaa !11
  %134 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %135 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %136 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %134, <2 x i64> noundef %135)
  store <2 x i64> %136, ptr %10, align 16, !tbaa !11
  %137 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %138 = bitcast <2 x i64> %137 to <4 x i32>
  %139 = shufflevector <4 x i32> %138, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %140 = bitcast <4 x i32> %139 to <2 x i64>
  store <2 x i64> %140, ptr %9, align 16, !tbaa !11
  %141 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %141, ptr %11, align 16, !tbaa !11
  %142 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %143 = bitcast <2 x i64> %142 to <4 x i32>
  %144 = shufflevector <4 x i32> %143, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %145 = bitcast <4 x i32> %144 to <2 x i64>
  store <2 x i64> %145, ptr %12, align 16, !tbaa !11
  %146 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %147 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %146, i32 noundef 17)
  %148 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %149 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %148, i32 noundef 47)
  %150 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %147, <2 x i64> noundef %149)
  store <2 x i64> %150, ptr %11, align 16, !tbaa !11
  %151 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %152 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %153 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %151, <2 x i64> noundef %152)
  store <2 x i64> %153, ptr %9, align 16, !tbaa !11
  %154 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %155 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %154, i32 noundef 21)
  %156 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %157 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %156, i32 noundef 43)
  %158 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %155, <2 x i64> noundef %157)
  store <2 x i64> %158, ptr %12, align 16, !tbaa !11
  %159 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %160 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %161 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %159, <2 x i64> noundef %160)
  store <2 x i64> %161, ptr %10, align 16, !tbaa !11
  %162 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %163 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %164 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %162, <2 x i64> noundef %163)
  store <2 x i64> %164, ptr %10, align 16, !tbaa !11
  %165 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %166 = bitcast <2 x i64> %165 to <4 x i32>
  %167 = shufflevector <4 x i32> %166, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %168 = bitcast <4 x i32> %167 to <2 x i64>
  store <2 x i64> %168, ptr %8, align 16, !tbaa !11
  %169 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %170 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %171 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %169, <2 x i64> noundef %170)
  store <2 x i64> %171, ptr %10, align 16, !tbaa !11
  %172 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %173 = load <2 x i64>, ptr %13, align 16, !tbaa !11
  %174 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %172, <2 x i64> noundef %173)
  store <2 x i64> %174, ptr %8, align 16, !tbaa !11
  br label %175

175:                                              ; preds = %43
  %176 = load i64, ptr %17, align 8, !tbaa !9
  %177 = add i64 %176, 8
  store i64 %177, ptr %17, align 8, !tbaa !9
  br label %39, !llvm.loop !12

178:                                              ; preds = %39
  %179 = load i64, ptr %6, align 8, !tbaa !9
  %180 = load i64, ptr %18, align 8, !tbaa !9
  %181 = sub i64 %179, %180
  switch i64 %181, label %252 [
    i64 7, label %182
    i64 6, label %192
    i64 5, label %202
    i64 4, label %212
    i64 3, label %222
    i64 2, label %232
    i64 1, label %242
    i64 0, label %251
  ]

182:                                              ; preds = %178
  %183 = load ptr, ptr %5, align 8, !tbaa !5
  %184 = load i64, ptr %17, align 8, !tbaa !9
  %185 = add i64 %184, 6
  %186 = getelementptr inbounds i8, ptr %183, i64 %185
  %187 = load i8, ptr %186, align 1, !tbaa !11
  %188 = zext i8 %187 to i64
  %189 = shl i64 %188, 48
  %190 = load i64, ptr %14, align 8, !tbaa !9
  %191 = or i64 %190, %189
  store i64 %191, ptr %14, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %182, %178
  %193 = load ptr, ptr %5, align 8, !tbaa !5
  %194 = load i64, ptr %17, align 8, !tbaa !9
  %195 = add i64 %194, 5
  %196 = getelementptr inbounds i8, ptr %193, i64 %195
  %197 = load i8, ptr %196, align 1, !tbaa !11
  %198 = zext i8 %197 to i64
  %199 = shl i64 %198, 40
  %200 = load i64, ptr %14, align 8, !tbaa !9
  %201 = or i64 %200, %199
  store i64 %201, ptr %14, align 8, !tbaa !9
  br label %202

202:                                              ; preds = %192, %178
  %203 = load ptr, ptr %5, align 8, !tbaa !5
  %204 = load i64, ptr %17, align 8, !tbaa !9
  %205 = add i64 %204, 4
  %206 = getelementptr inbounds i8, ptr %203, i64 %205
  %207 = load i8, ptr %206, align 1, !tbaa !11
  %208 = zext i8 %207 to i64
  %209 = shl i64 %208, 32
  %210 = load i64, ptr %14, align 8, !tbaa !9
  %211 = or i64 %210, %209
  store i64 %211, ptr %14, align 8, !tbaa !9
  br label %212

212:                                              ; preds = %202, %178
  %213 = load ptr, ptr %5, align 8, !tbaa !5
  %214 = load i64, ptr %17, align 8, !tbaa !9
  %215 = add i64 %214, 3
  %216 = getelementptr inbounds i8, ptr %213, i64 %215
  %217 = load i8, ptr %216, align 1, !tbaa !11
  %218 = zext i8 %217 to i64
  %219 = shl i64 %218, 24
  %220 = load i64, ptr %14, align 8, !tbaa !9
  %221 = or i64 %220, %219
  store i64 %221, ptr %14, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %212, %178
  %223 = load ptr, ptr %5, align 8, !tbaa !5
  %224 = load i64, ptr %17, align 8, !tbaa !9
  %225 = add i64 %224, 2
  %226 = getelementptr inbounds i8, ptr %223, i64 %225
  %227 = load i8, ptr %226, align 1, !tbaa !11
  %228 = zext i8 %227 to i64
  %229 = shl i64 %228, 16
  %230 = load i64, ptr %14, align 8, !tbaa !9
  %231 = or i64 %230, %229
  store i64 %231, ptr %14, align 8, !tbaa !9
  br label %232

232:                                              ; preds = %222, %178
  %233 = load ptr, ptr %5, align 8, !tbaa !5
  %234 = load i64, ptr %17, align 8, !tbaa !9
  %235 = add i64 %234, 1
  %236 = getelementptr inbounds i8, ptr %233, i64 %235
  %237 = load i8, ptr %236, align 1, !tbaa !11
  %238 = zext i8 %237 to i64
  %239 = shl i64 %238, 8
  %240 = load i64, ptr %14, align 8, !tbaa !9
  %241 = or i64 %240, %239
  store i64 %241, ptr %14, align 8, !tbaa !9
  br label %242

242:                                              ; preds = %232, %178
  %243 = load ptr, ptr %5, align 8, !tbaa !5
  %244 = load i64, ptr %17, align 8, !tbaa !9
  %245 = add i64 %244, 0
  %246 = getelementptr inbounds i8, ptr %243, i64 %245
  %247 = load i8, ptr %246, align 1, !tbaa !11
  %248 = zext i8 %247 to i64
  %249 = load i64, ptr %14, align 8, !tbaa !9
  %250 = or i64 %249, %248
  store i64 %250, ptr %14, align 8, !tbaa !9
  br label %251

251:                                              ; preds = %242, %178
  br label %252

252:                                              ; preds = %251, %178
  br label %253

253:                                              ; preds = %252
  %254 = load i64, ptr %14, align 8, !tbaa !9
  %255 = trunc i64 %254 to i32
  %256 = call <2 x i64> @_mm_cvtsi32_si128(i32 noundef %255)
  %257 = load i64, ptr %14, align 8, !tbaa !9
  %258 = lshr i64 %257, 32
  %259 = trunc i64 %258 to i32
  %260 = call <2 x i64> @_mm_cvtsi32_si128(i32 noundef %259)
  %261 = call <2 x i64> @_mm_unpacklo_epi32(<2 x i64> noundef %256, <2 x i64> noundef %260)
  store <2 x i64> %261, ptr %13, align 16, !tbaa !11
  %262 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %263 = load <2 x i64>, ptr %13, align 16, !tbaa !11
  %264 = bitcast <2 x i64> %263 to <16 x i8>
  %265 = shufflevector <16 x i8> zeroinitializer, <16 x i8> %264, <16 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
  %266 = bitcast <16 x i8> %265 to <2 x i64>
  %267 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %262, <2 x i64> noundef %266)
  store <2 x i64> %267, ptr %10, align 16, !tbaa !11
  %268 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %268, ptr %11, align 16, !tbaa !11
  %269 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %270 = bitcast <2 x i64> %269 to <4 x i32>
  %271 = shufflevector <4 x i32> %270, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %272 = bitcast <4 x i32> %271 to <2 x i64>
  store <2 x i64> %272, ptr %12, align 16, !tbaa !11
  %273 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %274 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %273, i32 noundef 13)
  %275 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %276 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %275, i32 noundef 51)
  %277 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %274, <2 x i64> noundef %276)
  store <2 x i64> %277, ptr %11, align 16, !tbaa !11
  %278 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %279 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %280 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %278, <2 x i64> noundef %279)
  store <2 x i64> %280, ptr %8, align 16, !tbaa !11
  %281 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %282 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %281, i32 noundef 16)
  %283 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %284 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %283, i32 noundef 48)
  %285 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %282, <2 x i64> noundef %284)
  store <2 x i64> %285, ptr %12, align 16, !tbaa !11
  %286 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %287 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %288 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %286, <2 x i64> noundef %287)
  store <2 x i64> %288, ptr %10, align 16, !tbaa !11
  %289 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %290 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %291 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %289, <2 x i64> noundef %290)
  store <2 x i64> %291, ptr %10, align 16, !tbaa !11
  %292 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %293 = bitcast <2 x i64> %292 to <4 x i32>
  %294 = shufflevector <4 x i32> %293, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %295 = bitcast <4 x i32> %294 to <2 x i64>
  store <2 x i64> %295, ptr %9, align 16, !tbaa !11
  %296 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %296, ptr %11, align 16, !tbaa !11
  %297 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %298 = bitcast <2 x i64> %297 to <4 x i32>
  %299 = shufflevector <4 x i32> %298, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %300 = bitcast <4 x i32> %299 to <2 x i64>
  store <2 x i64> %300, ptr %12, align 16, !tbaa !11
  %301 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %302 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %301, i32 noundef 17)
  %303 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %304 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %303, i32 noundef 47)
  %305 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %302, <2 x i64> noundef %304)
  store <2 x i64> %305, ptr %11, align 16, !tbaa !11
  %306 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %307 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %308 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %306, <2 x i64> noundef %307)
  store <2 x i64> %308, ptr %9, align 16, !tbaa !11
  %309 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %310 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %309, i32 noundef 21)
  %311 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %312 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %311, i32 noundef 43)
  %313 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %310, <2 x i64> noundef %312)
  store <2 x i64> %313, ptr %12, align 16, !tbaa !11
  %314 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %315 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %316 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %314, <2 x i64> noundef %315)
  store <2 x i64> %316, ptr %10, align 16, !tbaa !11
  %317 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %318 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %319 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %317, <2 x i64> noundef %318)
  store <2 x i64> %319, ptr %10, align 16, !tbaa !11
  %320 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %321 = bitcast <2 x i64> %320 to <4 x i32>
  %322 = shufflevector <4 x i32> %321, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %323 = bitcast <4 x i32> %322 to <2 x i64>
  store <2 x i64> %323, ptr %8, align 16, !tbaa !11
  %324 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %325 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %326 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %324, <2 x i64> noundef %325)
  store <2 x i64> %326, ptr %10, align 16, !tbaa !11
  %327 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %327, ptr %11, align 16, !tbaa !11
  %328 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %329 = bitcast <2 x i64> %328 to <4 x i32>
  %330 = shufflevector <4 x i32> %329, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %331 = bitcast <4 x i32> %330 to <2 x i64>
  store <2 x i64> %331, ptr %12, align 16, !tbaa !11
  %332 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %333 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %332, i32 noundef 13)
  %334 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %335 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %334, i32 noundef 51)
  %336 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %333, <2 x i64> noundef %335)
  store <2 x i64> %336, ptr %11, align 16, !tbaa !11
  %337 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %338 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %339 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %337, <2 x i64> noundef %338)
  store <2 x i64> %339, ptr %8, align 16, !tbaa !11
  %340 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %341 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %340, i32 noundef 16)
  %342 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %343 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %342, i32 noundef 48)
  %344 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %341, <2 x i64> noundef %343)
  store <2 x i64> %344, ptr %12, align 16, !tbaa !11
  %345 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %346 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %347 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %345, <2 x i64> noundef %346)
  store <2 x i64> %347, ptr %10, align 16, !tbaa !11
  %348 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %349 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %350 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %348, <2 x i64> noundef %349)
  store <2 x i64> %350, ptr %10, align 16, !tbaa !11
  %351 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %352 = bitcast <2 x i64> %351 to <4 x i32>
  %353 = shufflevector <4 x i32> %352, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %354 = bitcast <4 x i32> %353 to <2 x i64>
  store <2 x i64> %354, ptr %9, align 16, !tbaa !11
  %355 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %355, ptr %11, align 16, !tbaa !11
  %356 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %357 = bitcast <2 x i64> %356 to <4 x i32>
  %358 = shufflevector <4 x i32> %357, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %359 = bitcast <4 x i32> %358 to <2 x i64>
  store <2 x i64> %359, ptr %12, align 16, !tbaa !11
  %360 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %361 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %360, i32 noundef 17)
  %362 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %363 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %362, i32 noundef 47)
  %364 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %361, <2 x i64> noundef %363)
  store <2 x i64> %364, ptr %11, align 16, !tbaa !11
  %365 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %366 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %367 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %365, <2 x i64> noundef %366)
  store <2 x i64> %367, ptr %9, align 16, !tbaa !11
  %368 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %369 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %368, i32 noundef 21)
  %370 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %371 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %370, i32 noundef 43)
  %372 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %369, <2 x i64> noundef %371)
  store <2 x i64> %372, ptr %12, align 16, !tbaa !11
  %373 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %374 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %375 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %373, <2 x i64> noundef %374)
  store <2 x i64> %375, ptr %10, align 16, !tbaa !11
  %376 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %377 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %378 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %376, <2 x i64> noundef %377)
  store <2 x i64> %378, ptr %10, align 16, !tbaa !11
  %379 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %380 = bitcast <2 x i64> %379 to <4 x i32>
  %381 = shufflevector <4 x i32> %380, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %382 = bitcast <4 x i32> %381 to <2 x i64>
  store <2 x i64> %382, ptr %8, align 16, !tbaa !11
  %383 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %384 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %385 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %383, <2 x i64> noundef %384)
  store <2 x i64> %385, ptr %10, align 16, !tbaa !11
  %386 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %387 = load <2 x i64>, ptr %13, align 16, !tbaa !11
  %388 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %386, <2 x i64> noundef %387)
  store <2 x i64> %388, ptr %8, align 16, !tbaa !11
  %389 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %390 = load <2 x i64>, ptr @siphash_final, align 16, !tbaa !11
  %391 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %389, <2 x i64> noundef %390)
  store <2 x i64> %391, ptr %8, align 16, !tbaa !11
  %392 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %392, ptr %11, align 16, !tbaa !11
  %393 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %394 = bitcast <2 x i64> %393 to <4 x i32>
  %395 = shufflevector <4 x i32> %394, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %396 = bitcast <4 x i32> %395 to <2 x i64>
  store <2 x i64> %396, ptr %12, align 16, !tbaa !11
  %397 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %398 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %397, i32 noundef 13)
  %399 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %400 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %399, i32 noundef 51)
  %401 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %398, <2 x i64> noundef %400)
  store <2 x i64> %401, ptr %11, align 16, !tbaa !11
  %402 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %403 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %404 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %402, <2 x i64> noundef %403)
  store <2 x i64> %404, ptr %8, align 16, !tbaa !11
  %405 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %406 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %405, i32 noundef 16)
  %407 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %408 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %407, i32 noundef 48)
  %409 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %406, <2 x i64> noundef %408)
  store <2 x i64> %409, ptr %12, align 16, !tbaa !11
  %410 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %411 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %412 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %410, <2 x i64> noundef %411)
  store <2 x i64> %412, ptr %10, align 16, !tbaa !11
  %413 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %414 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %415 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %413, <2 x i64> noundef %414)
  store <2 x i64> %415, ptr %10, align 16, !tbaa !11
  %416 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %417 = bitcast <2 x i64> %416 to <4 x i32>
  %418 = shufflevector <4 x i32> %417, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %419 = bitcast <4 x i32> %418 to <2 x i64>
  store <2 x i64> %419, ptr %9, align 16, !tbaa !11
  %420 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %420, ptr %11, align 16, !tbaa !11
  %421 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %422 = bitcast <2 x i64> %421 to <4 x i32>
  %423 = shufflevector <4 x i32> %422, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %424 = bitcast <4 x i32> %423 to <2 x i64>
  store <2 x i64> %424, ptr %12, align 16, !tbaa !11
  %425 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %426 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %425, i32 noundef 17)
  %427 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %428 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %427, i32 noundef 47)
  %429 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %426, <2 x i64> noundef %428)
  store <2 x i64> %429, ptr %11, align 16, !tbaa !11
  %430 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %431 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %432 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %430, <2 x i64> noundef %431)
  store <2 x i64> %432, ptr %9, align 16, !tbaa !11
  %433 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %434 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %433, i32 noundef 21)
  %435 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %436 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %435, i32 noundef 43)
  %437 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %434, <2 x i64> noundef %436)
  store <2 x i64> %437, ptr %12, align 16, !tbaa !11
  %438 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %439 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %440 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %438, <2 x i64> noundef %439)
  store <2 x i64> %440, ptr %10, align 16, !tbaa !11
  %441 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %442 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %443 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %441, <2 x i64> noundef %442)
  store <2 x i64> %443, ptr %10, align 16, !tbaa !11
  %444 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %445 = bitcast <2 x i64> %444 to <4 x i32>
  %446 = shufflevector <4 x i32> %445, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %447 = bitcast <4 x i32> %446 to <2 x i64>
  store <2 x i64> %447, ptr %8, align 16, !tbaa !11
  %448 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %449 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %450 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %448, <2 x i64> noundef %449)
  store <2 x i64> %450, ptr %10, align 16, !tbaa !11
  %451 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %451, ptr %11, align 16, !tbaa !11
  %452 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %453 = bitcast <2 x i64> %452 to <4 x i32>
  %454 = shufflevector <4 x i32> %453, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %455 = bitcast <4 x i32> %454 to <2 x i64>
  store <2 x i64> %455, ptr %12, align 16, !tbaa !11
  %456 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %457 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %456, i32 noundef 13)
  %458 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %459 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %458, i32 noundef 51)
  %460 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %457, <2 x i64> noundef %459)
  store <2 x i64> %460, ptr %11, align 16, !tbaa !11
  %461 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %462 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %463 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %461, <2 x i64> noundef %462)
  store <2 x i64> %463, ptr %8, align 16, !tbaa !11
  %464 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %465 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %464, i32 noundef 16)
  %466 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %467 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %466, i32 noundef 48)
  %468 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %465, <2 x i64> noundef %467)
  store <2 x i64> %468, ptr %12, align 16, !tbaa !11
  %469 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %470 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %471 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %469, <2 x i64> noundef %470)
  store <2 x i64> %471, ptr %10, align 16, !tbaa !11
  %472 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %473 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %474 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %472, <2 x i64> noundef %473)
  store <2 x i64> %474, ptr %10, align 16, !tbaa !11
  %475 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %476 = bitcast <2 x i64> %475 to <4 x i32>
  %477 = shufflevector <4 x i32> %476, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %478 = bitcast <4 x i32> %477 to <2 x i64>
  store <2 x i64> %478, ptr %9, align 16, !tbaa !11
  %479 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %479, ptr %11, align 16, !tbaa !11
  %480 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %481 = bitcast <2 x i64> %480 to <4 x i32>
  %482 = shufflevector <4 x i32> %481, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %483 = bitcast <4 x i32> %482 to <2 x i64>
  store <2 x i64> %483, ptr %12, align 16, !tbaa !11
  %484 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %485 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %484, i32 noundef 17)
  %486 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %487 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %486, i32 noundef 47)
  %488 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %485, <2 x i64> noundef %487)
  store <2 x i64> %488, ptr %11, align 16, !tbaa !11
  %489 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %490 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %491 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %489, <2 x i64> noundef %490)
  store <2 x i64> %491, ptr %9, align 16, !tbaa !11
  %492 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %493 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %492, i32 noundef 21)
  %494 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %495 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %494, i32 noundef 43)
  %496 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %493, <2 x i64> noundef %495)
  store <2 x i64> %496, ptr %12, align 16, !tbaa !11
  %497 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %498 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %499 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %497, <2 x i64> noundef %498)
  store <2 x i64> %499, ptr %10, align 16, !tbaa !11
  %500 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %501 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %502 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %500, <2 x i64> noundef %501)
  store <2 x i64> %502, ptr %10, align 16, !tbaa !11
  %503 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %504 = bitcast <2 x i64> %503 to <4 x i32>
  %505 = shufflevector <4 x i32> %504, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %506 = bitcast <4 x i32> %505 to <2 x i64>
  store <2 x i64> %506, ptr %8, align 16, !tbaa !11
  %507 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %508 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %509 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %507, <2 x i64> noundef %508)
  store <2 x i64> %509, ptr %10, align 16, !tbaa !11
  %510 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %510, ptr %11, align 16, !tbaa !11
  %511 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %512 = bitcast <2 x i64> %511 to <4 x i32>
  %513 = shufflevector <4 x i32> %512, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %514 = bitcast <4 x i32> %513 to <2 x i64>
  store <2 x i64> %514, ptr %12, align 16, !tbaa !11
  %515 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %516 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %515, i32 noundef 13)
  %517 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %518 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %517, i32 noundef 51)
  %519 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %516, <2 x i64> noundef %518)
  store <2 x i64> %519, ptr %11, align 16, !tbaa !11
  %520 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %521 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %522 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %520, <2 x i64> noundef %521)
  store <2 x i64> %522, ptr %8, align 16, !tbaa !11
  %523 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %524 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %523, i32 noundef 16)
  %525 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %526 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %525, i32 noundef 48)
  %527 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %524, <2 x i64> noundef %526)
  store <2 x i64> %527, ptr %12, align 16, !tbaa !11
  %528 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %529 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %530 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %528, <2 x i64> noundef %529)
  store <2 x i64> %530, ptr %10, align 16, !tbaa !11
  %531 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %532 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %533 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %531, <2 x i64> noundef %532)
  store <2 x i64> %533, ptr %10, align 16, !tbaa !11
  %534 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %535 = bitcast <2 x i64> %534 to <4 x i32>
  %536 = shufflevector <4 x i32> %535, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %537 = bitcast <4 x i32> %536 to <2 x i64>
  store <2 x i64> %537, ptr %9, align 16, !tbaa !11
  %538 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %538, ptr %11, align 16, !tbaa !11
  %539 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %540 = bitcast <2 x i64> %539 to <4 x i32>
  %541 = shufflevector <4 x i32> %540, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %542 = bitcast <4 x i32> %541 to <2 x i64>
  store <2 x i64> %542, ptr %12, align 16, !tbaa !11
  %543 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %544 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %543, i32 noundef 17)
  %545 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %546 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %545, i32 noundef 47)
  %547 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %544, <2 x i64> noundef %546)
  store <2 x i64> %547, ptr %11, align 16, !tbaa !11
  %548 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %549 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %550 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %548, <2 x i64> noundef %549)
  store <2 x i64> %550, ptr %9, align 16, !tbaa !11
  %551 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %552 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %551, i32 noundef 21)
  %553 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %554 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %553, i32 noundef 43)
  %555 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %552, <2 x i64> noundef %554)
  store <2 x i64> %555, ptr %12, align 16, !tbaa !11
  %556 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %557 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %558 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %556, <2 x i64> noundef %557)
  store <2 x i64> %558, ptr %10, align 16, !tbaa !11
  %559 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %560 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %561 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %559, <2 x i64> noundef %560)
  store <2 x i64> %561, ptr %10, align 16, !tbaa !11
  %562 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %563 = bitcast <2 x i64> %562 to <4 x i32>
  %564 = shufflevector <4 x i32> %563, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %565 = bitcast <4 x i32> %564 to <2 x i64>
  store <2 x i64> %565, ptr %8, align 16, !tbaa !11
  %566 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %567 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %568 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %566, <2 x i64> noundef %567)
  store <2 x i64> %568, ptr %10, align 16, !tbaa !11
  %569 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %569, ptr %11, align 16, !tbaa !11
  %570 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %571 = bitcast <2 x i64> %570 to <4 x i32>
  %572 = shufflevector <4 x i32> %571, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %573 = bitcast <4 x i32> %572 to <2 x i64>
  store <2 x i64> %573, ptr %12, align 16, !tbaa !11
  %574 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %575 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %574, i32 noundef 13)
  %576 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %577 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %576, i32 noundef 51)
  %578 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %575, <2 x i64> noundef %577)
  store <2 x i64> %578, ptr %11, align 16, !tbaa !11
  %579 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %580 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %581 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %579, <2 x i64> noundef %580)
  store <2 x i64> %581, ptr %8, align 16, !tbaa !11
  %582 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %583 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %582, i32 noundef 16)
  %584 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %585 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %584, i32 noundef 48)
  %586 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %583, <2 x i64> noundef %585)
  store <2 x i64> %586, ptr %12, align 16, !tbaa !11
  %587 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %588 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %589 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %587, <2 x i64> noundef %588)
  store <2 x i64> %589, ptr %10, align 16, !tbaa !11
  %590 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %591 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %592 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %590, <2 x i64> noundef %591)
  store <2 x i64> %592, ptr %10, align 16, !tbaa !11
  %593 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %594 = bitcast <2 x i64> %593 to <4 x i32>
  %595 = shufflevector <4 x i32> %594, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %596 = bitcast <4 x i32> %595 to <2 x i64>
  store <2 x i64> %596, ptr %9, align 16, !tbaa !11
  %597 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  store <2 x i64> %597, ptr %11, align 16, !tbaa !11
  %598 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %599 = bitcast <2 x i64> %598 to <4 x i32>
  %600 = shufflevector <4 x i32> %599, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %601 = bitcast <4 x i32> %600 to <2 x i64>
  store <2 x i64> %601, ptr %12, align 16, !tbaa !11
  %602 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %603 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %602, i32 noundef 17)
  %604 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %605 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %604, i32 noundef 47)
  %606 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %603, <2 x i64> noundef %605)
  store <2 x i64> %606, ptr %11, align 16, !tbaa !11
  %607 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %608 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %609 = call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %607, <2 x i64> noundef %608)
  store <2 x i64> %609, ptr %9, align 16, !tbaa !11
  %610 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %611 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %610, i32 noundef 21)
  %612 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %613 = call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %612, i32 noundef 43)
  %614 = call <2 x i64> @_mm_or_si128(<2 x i64> noundef %611, <2 x i64> noundef %613)
  store <2 x i64> %614, ptr %12, align 16, !tbaa !11
  %615 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %616 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %617 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %615, <2 x i64> noundef %616)
  store <2 x i64> %617, ptr %10, align 16, !tbaa !11
  %618 = load <2 x i64>, ptr %11, align 16, !tbaa !11
  %619 = load <2 x i64>, ptr %12, align 16, !tbaa !11
  %620 = call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %618, <2 x i64> noundef %619)
  store <2 x i64> %620, ptr %10, align 16, !tbaa !11
  %621 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %622 = bitcast <2 x i64> %621 to <4 x i32>
  %623 = shufflevector <4 x i32> %622, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %624 = bitcast <4 x i32> %623 to <2 x i64>
  store <2 x i64> %624, ptr %8, align 16, !tbaa !11
  %625 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %626 = load <2 x i64>, ptr %9, align 16, !tbaa !11
  %627 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %625, <2 x i64> noundef %626)
  store <2 x i64> %627, ptr %10, align 16, !tbaa !11
  %628 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %629 = load <2 x i64>, ptr %10, align 16, !tbaa !11
  %630 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %628, <2 x i64> noundef %629)
  store <2 x i64> %630, ptr %8, align 16, !tbaa !11
  %631 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %632 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %633 = bitcast <2 x i64> %632 to <4 x i32>
  %634 = shufflevector <4 x i32> %633, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 0, i32 1>
  %635 = bitcast <4 x i32> %634 to <2 x i64>
  %636 = call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %631, <2 x i64> noundef %635)
  store <2 x i64> %636, ptr %8, align 16, !tbaa !11
  %637 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %638 = call i32 @_mm_cvtsi128_si32(<2 x i64> noundef %637)
  store i32 %638, ptr %15, align 4, !tbaa !14
  %639 = load <2 x i64>, ptr %8, align 16, !tbaa !11
  %640 = bitcast <2 x i64> %639 to <16 x i8>
  %641 = shufflevector <16 x i8> %640, <16 x i8> zeroinitializer, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19>
  %642 = bitcast <16 x i8> %641 to <2 x i64>
  %643 = call i32 @_mm_cvtsi128_si32(<2 x i64> noundef %642)
  store i32 %643, ptr %16, align 4, !tbaa !14
  %644 = load i32, ptr %16, align 4, !tbaa !14
  %645 = zext i32 %644 to i64
  %646 = shl i64 %645, 32
  %647 = load i32, ptr %15, align 4, !tbaa !14
  %648 = zext i32 %647 to i64
  %649 = or i64 %646, %648
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #3
  ret i64 %649
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_loadu_si128(ptr noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_xor_si128(<2 x i64> noundef, <2 x i64> noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef, <2 x i64> noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_unpackhi_epi64(<2 x i64> noundef, <2 x i64> noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_loadl_epi64(ptr noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_or_si128(<2 x i64> noundef, <2 x i64> noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_slli_epi64(<2 x i64> noundef, i32 noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_srli_epi64(<2 x i64> noundef, i32 noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_add_epi64(<2 x i64> noundef, <2 x i64> noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_unpacklo_epi32(<2 x i64> noundef, <2 x i64> noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_cvtsi32_si128(i32 noundef) #2

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @_mm_cvtsi128_si32(<2 x i64> noundef) #2

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

attributes #0 = { nounwind uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { alwaysinline nounwind uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !15, i64 0}
!15 = !{!"int", !7, i64 0}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@siphash_init = external hidden local_unnamed_addr constant [2 x { [2 x i64] }], align 16
@siphash_final = external hidden local_unnamed_addr constant { [2 x i64] }, align 16

; Function Attrs: nounwind uwtable
define dso_local i64 @siphash(ptr noundef %0, ptr noundef %1, i64 noundef %2) local_unnamed_addr #0 {
  %4 = tail call <2 x i64> @_mm_loadu_si128(ptr noundef %0)
  %5 = load <2 x i64>, ptr @siphash_init, align 16, !tbaa !5
  %6 = load <2 x i64>, ptr getelementptr inbounds (i8, ptr @siphash_init, i64 16), align 16, !tbaa !5
  %7 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %4, <2 x i64> noundef %4)
  %8 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %5, <2 x i64> noundef %7)
  %9 = tail call <2 x i64> @_mm_unpackhi_epi64(<2 x i64> noundef %4, <2 x i64> noundef %4)
  %10 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %6, <2 x i64> noundef %9)
  %11 = shl i64 %2, 56
  %12 = and i64 %2, -8
  %.not = icmp eq i64 %12, 0
  br i1 %.not, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %3, %.lr.ph
  %.0285 = phi <2 x i64> [ %71, %.lr.ph ], [ %8, %3 ]
  %.0279284 = phi i64 [ %72, %.lr.ph ], [ 0, %3 ]
  %.0280283 = phi <2 x i64> [ %70, %.lr.ph ], [ %10, %3 ]
  %13 = getelementptr inbounds i8, ptr %1, i64 %.0279284
  %14 = tail call <2 x i64> @_mm_loadl_epi64(ptr noundef %13)
  %15 = shufflevector <2 x i64> <i64 poison, i64 0>, <2 x i64> %14, <2 x i32> <i32 1, i32 2>
  %16 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %.0280283, <2 x i64> noundef %15)
  %17 = shufflevector <2 x i64> %16, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %18 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %16, i32 noundef 13)
  %19 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %16, i32 noundef 51)
  %20 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %18, <2 x i64> noundef %19)
  %21 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %.0285, <2 x i64> noundef %16)
  %22 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %17, i32 noundef 16)
  %23 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %17, i32 noundef 48)
  %24 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %22, <2 x i64> noundef %23)
  %25 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %20, <2 x i64> noundef %24)
  %26 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %25, <2 x i64> noundef %21)
  %27 = bitcast <2 x i64> %21 to <4 x i32>
  %28 = shufflevector <4 x i32> %27, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %29 = bitcast <4 x i32> %28 to <2 x i64>
  %30 = shufflevector <2 x i64> %26, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %31 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %26, i32 noundef 17)
  %32 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %26, i32 noundef 47)
  %33 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %31, <2 x i64> noundef %32)
  %34 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %29, <2 x i64> noundef %26)
  %35 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %30, i32 noundef 21)
  %36 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %30, i32 noundef 43)
  %37 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %35, <2 x i64> noundef %36)
  %38 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %33, <2 x i64> noundef %37)
  %39 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %33, <2 x i64> noundef %37)
  %40 = bitcast <2 x i64> %34 to <4 x i32>
  %41 = shufflevector <4 x i32> %40, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %42 = bitcast <4 x i32> %41 to <2 x i64>
  %43 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %39, <2 x i64> noundef %34)
  %44 = shufflevector <2 x i64> %43, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %45 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %43, i32 noundef 13)
  %46 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %43, i32 noundef 51)
  %47 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %45, <2 x i64> noundef %46)
  %48 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %42, <2 x i64> noundef %43)
  %49 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %44, i32 noundef 16)
  %50 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %44, i32 noundef 48)
  %51 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %49, <2 x i64> noundef %50)
  %52 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %47, <2 x i64> noundef %51)
  %53 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %52, <2 x i64> noundef %48)
  %54 = bitcast <2 x i64> %48 to <4 x i32>
  %55 = shufflevector <4 x i32> %54, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %56 = bitcast <4 x i32> %55 to <2 x i64>
  %57 = shufflevector <2 x i64> %53, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %58 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %53, i32 noundef 17)
  %59 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %53, i32 noundef 47)
  %60 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %58, <2 x i64> noundef %59)
  %61 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %56, <2 x i64> noundef %53)
  %62 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %57, i32 noundef 21)
  %63 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %57, i32 noundef 43)
  %64 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %62, <2 x i64> noundef %63)
  %65 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %60, <2 x i64> noundef %64)
  %66 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %60, <2 x i64> noundef %64)
  %67 = bitcast <2 x i64> %61 to <4 x i32>
  %68 = shufflevector <4 x i32> %67, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %69 = bitcast <4 x i32> %68 to <2 x i64>
  %70 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %66, <2 x i64> noundef %61)
  %71 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %69, <2 x i64> noundef %14)
  %72 = add nuw i64 %.0279284, 8
  %73 = icmp ult i64 %72, %12
  br i1 %73, label %.lr.ph, label %._crit_edge, !llvm.loop !8

._crit_edge:                                      ; preds = %.lr.ph, %3
  %.0280.lcssa = phi <2 x i64> [ %10, %3 ], [ %70, %.lr.ph ]
  %.0279.lcssa = phi i64 [ 0, %3 ], [ %72, %.lr.ph ]
  %.0.lcssa = phi <2 x i64> [ %8, %3 ], [ %71, %.lr.ph ]
  %74 = and i64 %2, 7
  switch i64 %74, label %default.unreachable [
    i64 7, label %75
    i64 6, label %82
    i64 5, label %89
    i64 4, label %96
    i64 3, label %103
    i64 2, label %110
    i64 1, label %117
    i64 0, label %122
  ]

75:                                               ; preds = %._crit_edge
  %76 = or disjoint i64 %.0279.lcssa, 6
  %77 = getelementptr inbounds i8, ptr %1, i64 %76
  %78 = load i8, ptr %77, align 1, !tbaa !5
  %79 = zext i8 %78 to i64
  %80 = shl nuw nsw i64 %79, 48
  %81 = or disjoint i64 %80, %11
  br label %82

82:                                               ; preds = %75, %._crit_edge
  %.0281 = phi i64 [ %11, %._crit_edge ], [ %81, %75 ]
  %83 = or disjoint i64 %.0279.lcssa, 5
  %84 = getelementptr inbounds i8, ptr %1, i64 %83
  %85 = load i8, ptr %84, align 1, !tbaa !5
  %86 = zext i8 %85 to i64
  %87 = shl nuw nsw i64 %86, 40
  %88 = or i64 %87, %.0281
  br label %89

89:                                               ; preds = %82, %._crit_edge
  %.1 = phi i64 [ %11, %._crit_edge ], [ %88, %82 ]
  %90 = or disjoint i64 %.0279.lcssa, 4
  %91 = getelementptr inbounds i8, ptr %1, i64 %90
  %92 = load i8, ptr %91, align 1, !tbaa !5
  %93 = zext i8 %92 to i64
  %94 = shl nuw nsw i64 %93, 32
  %95 = or i64 %94, %.1
  br label %96

96:                                               ; preds = %89, %._crit_edge
  %.2 = phi i64 [ %11, %._crit_edge ], [ %95, %89 ]
  %97 = or disjoint i64 %.0279.lcssa, 3
  %98 = getelementptr inbounds i8, ptr %1, i64 %97
  %99 = load i8, ptr %98, align 1, !tbaa !5
  %100 = zext i8 %99 to i64
  %101 = shl nuw nsw i64 %100, 24
  %102 = or i64 %101, %.2
  br label %103

103:                                              ; preds = %96, %._crit_edge
  %.3 = phi i64 [ %11, %._crit_edge ], [ %102, %96 ]
  %104 = or disjoint i64 %.0279.lcssa, 2
  %105 = getelementptr inbounds i8, ptr %1, i64 %104
  %106 = load i8, ptr %105, align 1, !tbaa !5
  %107 = zext i8 %106 to i64
  %108 = shl nuw nsw i64 %107, 16
  %109 = or i64 %108, %.3
  br label %110

110:                                              ; preds = %103, %._crit_edge
  %.4 = phi i64 [ %11, %._crit_edge ], [ %109, %103 ]
  %111 = or disjoint i64 %.0279.lcssa, 1
  %112 = getelementptr inbounds i8, ptr %1, i64 %111
  %113 = load i8, ptr %112, align 1, !tbaa !5
  %114 = zext i8 %113 to i64
  %115 = shl nuw nsw i64 %114, 8
  %116 = or i64 %115, %.4
  br label %117

117:                                              ; preds = %110, %._crit_edge
  %.5 = phi i64 [ %11, %._crit_edge ], [ %116, %110 ]
  %118 = getelementptr inbounds i8, ptr %1, i64 %.0279.lcssa
  %119 = load i8, ptr %118, align 1, !tbaa !5
  %120 = zext i8 %119 to i64
  %121 = or i64 %.5, %120
  br label %122

default.unreachable:                              ; preds = %._crit_edge
  unreachable

122:                                              ; preds = %._crit_edge, %117
  %.6 = phi i64 [ %11, %._crit_edge ], [ %121, %117 ]
  %123 = trunc i64 %.6 to i32
  %124 = tail call <2 x i64> @_mm_cvtsi32_si128(i32 noundef %123)
  %125 = lshr i64 %.6, 32
  %126 = trunc nuw i64 %125 to i32
  %127 = tail call <2 x i64> @_mm_cvtsi32_si128(i32 noundef %126)
  %128 = tail call <2 x i64> @_mm_unpacklo_epi32(<2 x i64> noundef %124, <2 x i64> noundef %127)
  %129 = shufflevector <2 x i64> <i64 poison, i64 0>, <2 x i64> %128, <2 x i32> <i32 1, i32 2>
  %130 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %.0280.lcssa, <2 x i64> noundef %129)
  %131 = shufflevector <2 x i64> %130, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %132 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %130, i32 noundef 13)
  %133 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %130, i32 noundef 51)
  %134 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %132, <2 x i64> noundef %133)
  %135 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %.0.lcssa, <2 x i64> noundef %130)
  %136 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %131, i32 noundef 16)
  %137 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %131, i32 noundef 48)
  %138 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %136, <2 x i64> noundef %137)
  %139 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %134, <2 x i64> noundef %138)
  %140 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %139, <2 x i64> noundef %135)
  %141 = bitcast <2 x i64> %135 to <4 x i32>
  %142 = shufflevector <4 x i32> %141, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %143 = bitcast <4 x i32> %142 to <2 x i64>
  %144 = shufflevector <2 x i64> %140, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %145 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %140, i32 noundef 17)
  %146 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %140, i32 noundef 47)
  %147 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %145, <2 x i64> noundef %146)
  %148 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %143, <2 x i64> noundef %140)
  %149 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %144, i32 noundef 21)
  %150 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %144, i32 noundef 43)
  %151 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %149, <2 x i64> noundef %150)
  %152 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %147, <2 x i64> noundef %151)
  %153 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %147, <2 x i64> noundef %151)
  %154 = bitcast <2 x i64> %148 to <4 x i32>
  %155 = shufflevector <4 x i32> %154, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %156 = bitcast <4 x i32> %155 to <2 x i64>
  %157 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %153, <2 x i64> noundef %148)
  %158 = shufflevector <2 x i64> %157, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %159 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %157, i32 noundef 13)
  %160 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %157, i32 noundef 51)
  %161 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %159, <2 x i64> noundef %160)
  %162 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %156, <2 x i64> noundef %157)
  %163 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %158, i32 noundef 16)
  %164 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %158, i32 noundef 48)
  %165 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %163, <2 x i64> noundef %164)
  %166 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %161, <2 x i64> noundef %165)
  %167 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %166, <2 x i64> noundef %162)
  %168 = bitcast <2 x i64> %162 to <4 x i32>
  %169 = shufflevector <4 x i32> %168, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %170 = bitcast <4 x i32> %169 to <2 x i64>
  %171 = shufflevector <2 x i64> %167, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %172 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %167, i32 noundef 17)
  %173 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %167, i32 noundef 47)
  %174 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %172, <2 x i64> noundef %173)
  %175 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %170, <2 x i64> noundef %167)
  %176 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %171, i32 noundef 21)
  %177 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %171, i32 noundef 43)
  %178 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %176, <2 x i64> noundef %177)
  %179 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %174, <2 x i64> noundef %178)
  %180 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %174, <2 x i64> noundef %178)
  %181 = bitcast <2 x i64> %175 to <4 x i32>
  %182 = shufflevector <4 x i32> %181, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %183 = bitcast <4 x i32> %182 to <2 x i64>
  %184 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %180, <2 x i64> noundef %175)
  %185 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %183, <2 x i64> noundef %128)
  %186 = load <2 x i64>, ptr @siphash_final, align 16, !tbaa !5
  %187 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %185, <2 x i64> noundef %186)
  %188 = shufflevector <2 x i64> %184, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %189 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %184, i32 noundef 13)
  %190 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %184, i32 noundef 51)
  %191 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %189, <2 x i64> noundef %190)
  %192 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %187, <2 x i64> noundef %184)
  %193 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %188, i32 noundef 16)
  %194 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %188, i32 noundef 48)
  %195 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %193, <2 x i64> noundef %194)
  %196 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %191, <2 x i64> noundef %195)
  %197 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %196, <2 x i64> noundef %192)
  %198 = bitcast <2 x i64> %192 to <4 x i32>
  %199 = shufflevector <4 x i32> %198, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %200 = bitcast <4 x i32> %199 to <2 x i64>
  %201 = shufflevector <2 x i64> %197, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %202 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %197, i32 noundef 17)
  %203 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %197, i32 noundef 47)
  %204 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %202, <2 x i64> noundef %203)
  %205 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %200, <2 x i64> noundef %197)
  %206 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %201, i32 noundef 21)
  %207 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %201, i32 noundef 43)
  %208 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %206, <2 x i64> noundef %207)
  %209 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %204, <2 x i64> noundef %208)
  %210 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %204, <2 x i64> noundef %208)
  %211 = bitcast <2 x i64> %205 to <4 x i32>
  %212 = shufflevector <4 x i32> %211, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %213 = bitcast <4 x i32> %212 to <2 x i64>
  %214 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %210, <2 x i64> noundef %205)
  %215 = shufflevector <2 x i64> %214, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %216 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %214, i32 noundef 13)
  %217 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %214, i32 noundef 51)
  %218 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %216, <2 x i64> noundef %217)
  %219 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %213, <2 x i64> noundef %214)
  %220 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %215, i32 noundef 16)
  %221 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %215, i32 noundef 48)
  %222 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %220, <2 x i64> noundef %221)
  %223 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %218, <2 x i64> noundef %222)
  %224 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %223, <2 x i64> noundef %219)
  %225 = bitcast <2 x i64> %219 to <4 x i32>
  %226 = shufflevector <4 x i32> %225, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %227 = bitcast <4 x i32> %226 to <2 x i64>
  %228 = shufflevector <2 x i64> %224, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %229 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %224, i32 noundef 17)
  %230 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %224, i32 noundef 47)
  %231 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %229, <2 x i64> noundef %230)
  %232 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %227, <2 x i64> noundef %224)
  %233 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %228, i32 noundef 21)
  %234 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %228, i32 noundef 43)
  %235 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %233, <2 x i64> noundef %234)
  %236 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %231, <2 x i64> noundef %235)
  %237 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %231, <2 x i64> noundef %235)
  %238 = bitcast <2 x i64> %232 to <4 x i32>
  %239 = shufflevector <4 x i32> %238, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %240 = bitcast <4 x i32> %239 to <2 x i64>
  %241 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %237, <2 x i64> noundef %232)
  %242 = shufflevector <2 x i64> %241, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %243 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %241, i32 noundef 13)
  %244 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %241, i32 noundef 51)
  %245 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %243, <2 x i64> noundef %244)
  %246 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %240, <2 x i64> noundef %241)
  %247 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %242, i32 noundef 16)
  %248 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %242, i32 noundef 48)
  %249 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %247, <2 x i64> noundef %248)
  %250 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %245, <2 x i64> noundef %249)
  %251 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %250, <2 x i64> noundef %246)
  %252 = bitcast <2 x i64> %246 to <4 x i32>
  %253 = shufflevector <4 x i32> %252, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %254 = bitcast <4 x i32> %253 to <2 x i64>
  %255 = shufflevector <2 x i64> %251, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %256 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %251, i32 noundef 17)
  %257 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %251, i32 noundef 47)
  %258 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %256, <2 x i64> noundef %257)
  %259 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %254, <2 x i64> noundef %251)
  %260 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %255, i32 noundef 21)
  %261 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %255, i32 noundef 43)
  %262 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %260, <2 x i64> noundef %261)
  %263 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %258, <2 x i64> noundef %262)
  %264 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %258, <2 x i64> noundef %262)
  %265 = bitcast <2 x i64> %259 to <4 x i32>
  %266 = shufflevector <4 x i32> %265, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %267 = bitcast <4 x i32> %266 to <2 x i64>
  %268 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %264, <2 x i64> noundef %259)
  %269 = shufflevector <2 x i64> %268, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %270 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %268, i32 noundef 13)
  %271 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %268, i32 noundef 51)
  %272 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %270, <2 x i64> noundef %271)
  %273 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %267, <2 x i64> noundef %268)
  %274 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %269, i32 noundef 16)
  %275 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %269, i32 noundef 48)
  %276 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %274, <2 x i64> noundef %275)
  %277 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %272, <2 x i64> noundef %276)
  %278 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %277, <2 x i64> noundef %273)
  %279 = bitcast <2 x i64> %273 to <4 x i32>
  %280 = shufflevector <4 x i32> %279, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %281 = bitcast <4 x i32> %280 to <2 x i64>
  %282 = shufflevector <2 x i64> %278, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %283 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %278, i32 noundef 17)
  %284 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %278, i32 noundef 47)
  %285 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %283, <2 x i64> noundef %284)
  %286 = tail call <2 x i64> @_mm_add_epi64(<2 x i64> noundef %281, <2 x i64> noundef %278)
  %287 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %282, i32 noundef 21)
  %288 = tail call <2 x i64> @_mm_srli_epi64(<2 x i64> noundef %282, i32 noundef 43)
  %289 = tail call <2 x i64> @_mm_or_si128(<2 x i64> noundef %287, <2 x i64> noundef %288)
  %290 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %285, <2 x i64> noundef %289)
  %291 = tail call <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef %285, <2 x i64> noundef %289)
  %292 = bitcast <2 x i64> %286 to <4 x i32>
  %293 = shufflevector <4 x i32> %292, <4 x i32> poison, <4 x i32> <i32 2, i32 3, i32 1, i32 0>
  %294 = bitcast <4 x i32> %293 to <2 x i64>
  %295 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %291, <2 x i64> noundef %286)
  %296 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %294, <2 x i64> noundef %295)
  %297 = shufflevector <2 x i64> %296, <2 x i64> poison, <2 x i32> <i32 1, i32 0>
  %298 = tail call <2 x i64> @_mm_xor_si128(<2 x i64> noundef %296, <2 x i64> noundef %297)
  %299 = tail call i32 @_mm_cvtsi128_si32(<2 x i64> noundef %298)
  %300 = bitcast <2 x i64> %298 to <16 x i8>
  %301 = shufflevector <16 x i8> %300, <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison>, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19>
  %302 = bitcast <16 x i8> %301 to <2 x i64>
  %303 = tail call i32 @_mm_cvtsi128_si32(<2 x i64> noundef %302)
  %304 = zext i32 %303 to i64
  %305 = shl nuw i64 %304, 32
  %306 = zext i32 %299 to i64
  %307 = or disjoint i64 %305, %306
  ret i64 %307
}

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_loadu_si128(ptr noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_xor_si128(<2 x i64> noundef, <2 x i64> noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_unpacklo_epi64(<2 x i64> noundef, <2 x i64> noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_unpackhi_epi64(<2 x i64> noundef, <2 x i64> noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_loadl_epi64(ptr noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_or_si128(<2 x i64> noundef, <2 x i64> noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_slli_epi64(<2 x i64> noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_srli_epi64(<2 x i64> noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_add_epi64(<2 x i64> noundef, <2 x i64> noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_unpacklo_epi32(<2 x i64> noundef, <2 x i64> noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden <2 x i64> @_mm_cvtsi32_si128(i32 noundef) local_unnamed_addr #1

; Function Attrs: alwaysinline nounwind uwtable
declare hidden i32 @_mm_cvtsi128_si32(<2 x i64> noundef) local_unnamed_addr #1

attributes #0 = { nounwind uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { alwaysinline nounwind uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
!8 = distinct !{!8, !9}
!9 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass