; LLVM IR from docknetwork/crypto :: oblivious_transfer/c (transpose)

; 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.anon = type { <2 x i64> }

@.str = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [85 x i8], align 1
@__PRETTY_FUNCTION__.sse_trans = external hidden unnamed_addr constant [63 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @sse_trans(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3) #0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i64, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca %union.anon, align 16
  %14 = alloca <2 x i64>, align 16
  %15 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i64 %2, ptr %7, align 8, !tbaa !9
  store i64 %3, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #4
  %16 = load i64, ptr %7, align 8, !tbaa !9
  %17 = urem i64 %16, 8
  %18 = icmp eq i64 %17, 0
  br i1 %18, label %19, label %24

19:                                               ; preds = %4
  %20 = load i64, ptr %8, align 8, !tbaa !9
  %21 = urem i64 %20, 8
  %22 = icmp eq i64 %21, 0
  br i1 %22, label %23, label %24

23:                                               ; preds = %19
  br label %25

24:                                               ; preds = %19, %4
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.1, i32 noundef 49, ptr noundef @__PRETTY_FUNCTION__.sse_trans) #5
  unreachable

25:                                               ; preds = %23
  store i64 0, ptr %9, align 8, !tbaa !9
  br label %26

26:                                               ; preds = %242, %25
  %27 = load i64, ptr %9, align 8, !tbaa !9
  %28 = load i64, ptr %7, align 8, !tbaa !9
  %29 = sub i64 %28, 16
  %30 = icmp ule i64 %27, %29
  br i1 %30, label %31, label %245

31:                                               ; preds = %26
  store i64 0, ptr %10, align 8, !tbaa !9
  br label %32

32:                                               ; preds = %238, %31
  %33 = load i64, ptr %10, align 8, !tbaa !9
  %34 = load i64, ptr %8, align 8, !tbaa !9
  %35 = icmp ult i64 %33, %34
  br i1 %35, label %36, label %241

36:                                               ; preds = %32
  %37 = load ptr, ptr %6, align 8, !tbaa !5
  %38 = load i64, ptr %9, align 8, !tbaa !9
  %39 = add i64 %38, 15
  %40 = load i64, ptr %8, align 8, !tbaa !9
  %41 = mul i64 %39, %40
  %42 = udiv i64 %41, 8
  %43 = load i64, ptr %10, align 8, !tbaa !9
  %44 = udiv i64 %43, 8
  %45 = add i64 %42, %44
  %46 = getelementptr inbounds i8, ptr %37, i64 %45
  %47 = load i8, ptr %46, align 1, !tbaa !11
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = load i64, ptr %9, align 8, !tbaa !9
  %50 = add i64 %49, 14
  %51 = load i64, ptr %8, align 8, !tbaa !9
  %52 = mul i64 %50, %51
  %53 = udiv i64 %52, 8
  %54 = load i64, ptr %10, align 8, !tbaa !9
  %55 = udiv i64 %54, 8
  %56 = add i64 %53, %55
  %57 = getelementptr inbounds i8, ptr %48, i64 %56
  %58 = load i8, ptr %57, align 1, !tbaa !11
  %59 = load ptr, ptr %6, align 8, !tbaa !5
  %60 = load i64, ptr %9, align 8, !tbaa !9
  %61 = add i64 %60, 13
  %62 = load i64, ptr %8, align 8, !tbaa !9
  %63 = mul i64 %61, %62
  %64 = udiv i64 %63, 8
  %65 = load i64, ptr %10, align 8, !tbaa !9
  %66 = udiv i64 %65, 8
  %67 = add i64 %64, %66
  %68 = getelementptr inbounds i8, ptr %59, i64 %67
  %69 = load i8, ptr %68, align 1, !tbaa !11
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = load i64, ptr %9, align 8, !tbaa !9
  %72 = add i64 %71, 12
  %73 = load i64, ptr %8, align 8, !tbaa !9
  %74 = mul i64 %72, %73
  %75 = udiv i64 %74, 8
  %76 = load i64, ptr %10, align 8, !tbaa !9
  %77 = udiv i64 %76, 8
  %78 = add i64 %75, %77
  %79 = getelementptr inbounds i8, ptr %70, i64 %78
  %80 = load i8, ptr %79, align 1, !tbaa !11
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = load i64, ptr %9, align 8, !tbaa !9
  %83 = add i64 %82, 11
  %84 = load i64, ptr %8, align 8, !tbaa !9
  %85 = mul i64 %83, %84
  %86 = udiv i64 %85, 8
  %87 = load i64, ptr %10, align 8, !tbaa !9
  %88 = udiv i64 %87, 8
  %89 = add i64 %86, %88
  %90 = getelementptr inbounds i8, ptr %81, i64 %89
  %91 = load i8, ptr %90, align 1, !tbaa !11
  %92 = load ptr, ptr %6, align 8, !tbaa !5
  %93 = load i64, ptr %9, align 8, !tbaa !9
  %94 = add i64 %93, 10
  %95 = load i64, ptr %8, align 8, !tbaa !9
  %96 = mul i64 %94, %95
  %97 = udiv i64 %96, 8
  %98 = load i64, ptr %10, align 8, !tbaa !9
  %99 = udiv i64 %98, 8
  %100 = add i64 %97, %99
  %101 = getelementptr inbounds i8, ptr %92, i64 %100
  %102 = load i8, ptr %101, align 1, !tbaa !11
  %103 = load ptr, ptr %6, align 8, !tbaa !5
  %104 = load i64, ptr %9, align 8, !tbaa !9
  %105 = add i64 %104, 9
  %106 = load i64, ptr %8, align 8, !tbaa !9
  %107 = mul i64 %105, %106
  %108 = udiv i64 %107, 8
  %109 = load i64, ptr %10, align 8, !tbaa !9
  %110 = udiv i64 %109, 8
  %111 = add i64 %108, %110
  %112 = getelementptr inbounds i8, ptr %103, i64 %111
  %113 = load i8, ptr %112, align 1, !tbaa !11
  %114 = load ptr, ptr %6, align 8, !tbaa !5
  %115 = load i64, ptr %9, align 8, !tbaa !9
  %116 = add i64 %115, 8
  %117 = load i64, ptr %8, align 8, !tbaa !9
  %118 = mul i64 %116, %117
  %119 = udiv i64 %118, 8
  %120 = load i64, ptr %10, align 8, !tbaa !9
  %121 = udiv i64 %120, 8
  %122 = add i64 %119, %121
  %123 = getelementptr inbounds i8, ptr %114, i64 %122
  %124 = load i8, ptr %123, align 1, !tbaa !11
  %125 = load ptr, ptr %6, align 8, !tbaa !5
  %126 = load i64, ptr %9, align 8, !tbaa !9
  %127 = add i64 %126, 7
  %128 = load i64, ptr %8, align 8, !tbaa !9
  %129 = mul i64 %127, %128
  %130 = udiv i64 %129, 8
  %131 = load i64, ptr %10, align 8, !tbaa !9
  %132 = udiv i64 %131, 8
  %133 = add i64 %130, %132
  %134 = getelementptr inbounds i8, ptr %125, i64 %133
  %135 = load i8, ptr %134, align 1, !tbaa !11
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = load i64, ptr %9, align 8, !tbaa !9
  %138 = add i64 %137, 6
  %139 = load i64, ptr %8, align 8, !tbaa !9
  %140 = mul i64 %138, %139
  %141 = udiv i64 %140, 8
  %142 = load i64, ptr %10, align 8, !tbaa !9
  %143 = udiv i64 %142, 8
  %144 = add i64 %141, %143
  %145 = getelementptr inbounds i8, ptr %136, i64 %144
  %146 = load i8, ptr %145, align 1, !tbaa !11
  %147 = load ptr, ptr %6, align 8, !tbaa !5
  %148 = load i64, ptr %9, align 8, !tbaa !9
  %149 = add i64 %148, 5
  %150 = load i64, ptr %8, align 8, !tbaa !9
  %151 = mul i64 %149, %150
  %152 = udiv i64 %151, 8
  %153 = load i64, ptr %10, align 8, !tbaa !9
  %154 = udiv i64 %153, 8
  %155 = add i64 %152, %154
  %156 = getelementptr inbounds i8, ptr %147, i64 %155
  %157 = load i8, ptr %156, align 1, !tbaa !11
  %158 = load ptr, ptr %6, align 8, !tbaa !5
  %159 = load i64, ptr %9, align 8, !tbaa !9
  %160 = add i64 %159, 4
  %161 = load i64, ptr %8, align 8, !tbaa !9
  %162 = mul i64 %160, %161
  %163 = udiv i64 %162, 8
  %164 = load i64, ptr %10, align 8, !tbaa !9
  %165 = udiv i64 %164, 8
  %166 = add i64 %163, %165
  %167 = getelementptr inbounds i8, ptr %158, i64 %166
  %168 = load i8, ptr %167, align 1, !tbaa !11
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  %170 = load i64, ptr %9, align 8, !tbaa !9
  %171 = add i64 %170, 3
  %172 = load i64, ptr %8, align 8, !tbaa !9
  %173 = mul i64 %171, %172
  %174 = udiv i64 %173, 8
  %175 = load i64, ptr %10, align 8, !tbaa !9
  %176 = udiv i64 %175, 8
  %177 = add i64 %174, %176
  %178 = getelementptr inbounds i8, ptr %169, i64 %177
  %179 = load i8, ptr %178, align 1, !tbaa !11
  %180 = load ptr, ptr %6, align 8, !tbaa !5
  %181 = load i64, ptr %9, align 8, !tbaa !9
  %182 = add i64 %181, 2
  %183 = load i64, ptr %8, align 8, !tbaa !9
  %184 = mul i64 %182, %183
  %185 = udiv i64 %184, 8
  %186 = load i64, ptr %10, align 8, !tbaa !9
  %187 = udiv i64 %186, 8
  %188 = add i64 %185, %187
  %189 = getelementptr inbounds i8, ptr %180, i64 %188
  %190 = load i8, ptr %189, align 1, !tbaa !11
  %191 = load ptr, ptr %6, align 8, !tbaa !5
  %192 = load i64, ptr %9, align 8, !tbaa !9
  %193 = add i64 %192, 1
  %194 = load i64, ptr %8, align 8, !tbaa !9
  %195 = mul i64 %193, %194
  %196 = udiv i64 %195, 8
  %197 = load i64, ptr %10, align 8, !tbaa !9
  %198 = udiv i64 %197, 8
  %199 = add i64 %196, %198
  %200 = getelementptr inbounds i8, ptr %191, i64 %199
  %201 = load i8, ptr %200, align 1, !tbaa !11
  %202 = load ptr, ptr %6, align 8, !tbaa !5
  %203 = load i64, ptr %9, align 8, !tbaa !9
  %204 = add i64 %203, 0
  %205 = load i64, ptr %8, align 8, !tbaa !9
  %206 = mul i64 %204, %205
  %207 = udiv i64 %206, 8
  %208 = load i64, ptr %10, align 8, !tbaa !9
  %209 = udiv i64 %208, 8
  %210 = add i64 %207, %209
  %211 = getelementptr inbounds i8, ptr %202, i64 %210
  %212 = load i8, ptr %211, align 1, !tbaa !11
  %213 = call <2 x i64> @_mm_set_epi8(i8 noundef signext %47, i8 noundef signext %58, i8 noundef signext %69, i8 noundef signext %80, i8 noundef signext %91, i8 noundef signext %102, i8 noundef signext %113, i8 noundef signext %124, i8 noundef signext %135, i8 noundef signext %146, i8 noundef signext %157, i8 noundef signext %168, i8 noundef signext %179, i8 noundef signext %190, i8 noundef signext %201, i8 noundef signext %212)
  store <2 x i64> %213, ptr %14, align 16, !tbaa !11
  store i32 8, ptr %11, align 4, !tbaa !12
  br label %214

214:                                              ; preds = %234, %36
  %215 = load i32, ptr %11, align 4, !tbaa !12
  %216 = add nsw i32 %215, -1
  store i32 %216, ptr %11, align 4, !tbaa !12
  %217 = icmp sge i32 %216, 0
  br i1 %217, label %218, label %237

218:                                              ; preds = %214
  %219 = load <2 x i64>, ptr %14, align 16, !tbaa !11
  %220 = call i32 @_mm_movemask_epi8(<2 x i64> noundef %219)
  %221 = trunc i32 %220 to i16
  %222 = load ptr, ptr %5, align 8, !tbaa !5
  %223 = load i64, ptr %10, align 8, !tbaa !9
  %224 = load i32, ptr %11, align 4, !tbaa !12
  %225 = sext i32 %224 to i64
  %226 = add i64 %223, %225
  %227 = load i64, ptr %7, align 8, !tbaa !9
  %228 = mul i64 %226, %227
  %229 = udiv i64 %228, 8
  %230 = load i64, ptr %9, align 8, !tbaa !9
  %231 = udiv i64 %230, 8
  %232 = add i64 %229, %231
  %233 = getelementptr inbounds i8, ptr %222, i64 %232
  store i16 %221, ptr %233, align 2, !tbaa !14
  br label %234

234:                                              ; preds = %218
  %235 = load <2 x i64>, ptr %14, align 16, !tbaa !11
  %236 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %235, i32 noundef 1)
  store <2 x i64> %236, ptr %14, align 16, !tbaa !11
  br label %214, !llvm.loop !16

237:                                              ; preds = %214
  br label %238

238:                                              ; preds = %237
  %239 = load i64, ptr %10, align 8, !tbaa !9
  %240 = add i64 %239, 8
  store i64 %240, ptr %10, align 8, !tbaa !9
  br label %32, !llvm.loop !18

241:                                              ; preds = %32
  br label %242

242:                                              ; preds = %241
  %243 = load i64, ptr %9, align 8, !tbaa !9
  %244 = add i64 %243, 16
  store i64 %244, ptr %9, align 8, !tbaa !9
  br label %26, !llvm.loop !19

245:                                              ; preds = %26
  %246 = load i64, ptr %9, align 8, !tbaa !9
  %247 = load i64, ptr %7, align 8, !tbaa !9
  %248 = icmp eq i64 %246, %247
  br i1 %248, label %249, label %250

249:                                              ; preds = %245
  store i32 1, ptr %15, align 4
  br label %544

250:                                              ; preds = %245
  %251 = load i64, ptr %8, align 8, !tbaa !9
  %252 = urem i64 %251, 8
  %253 = icmp eq i64 %252, 0
  br i1 %253, label %254, label %258

254:                                              ; preds = %250
  %255 = load i64, ptr %8, align 8, !tbaa !9
  %256 = urem i64 %255, 16
  %257 = icmp ne i64 %256, 0
  br i1 %257, label %266, label %258

258:                                              ; preds = %254, %250
  %259 = load i64, ptr %7, align 8, !tbaa !9
  %260 = urem i64 %259, 8
  %261 = icmp eq i64 %260, 0
  br i1 %261, label %262, label %350

262:                                              ; preds = %258
  %263 = load i64, ptr %7, align 8, !tbaa !9
  %264 = urem i64 %263, 16
  %265 = icmp ne i64 %264, 0
  br i1 %265, label %266, label %350

266:                                              ; preds = %262, %254
  store i64 0, ptr %10, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %346, %266
  %268 = load i64, ptr %10, align 8, !tbaa !9
  %269 = load i64, ptr %8, align 8, !tbaa !9
  %270 = sub i64 %269, 16
  %271 = icmp ule i64 %268, %270
  br i1 %271, label %272, label %349

272:                                              ; preds = %267
  store i32 0, ptr %11, align 4, !tbaa !12
  br label %273

273:                                              ; preds = %302, %272
  %274 = load i32, ptr %11, align 4, !tbaa !12
  %275 = icmp slt i32 %274, 8
  br i1 %275, label %276, label %305

276:                                              ; preds = %273
  %277 = load ptr, ptr %6, align 8, !tbaa !5
  %278 = load i64, ptr %9, align 8, !tbaa !9
  %279 = load i32, ptr %11, align 4, !tbaa !12
  %280 = sext i32 %279 to i64
  %281 = add i64 %278, %280
  %282 = load i64, ptr %8, align 8, !tbaa !9
  %283 = mul i64 %281, %282
  %284 = udiv i64 %283, 8
  %285 = load i64, ptr %10, align 8, !tbaa !9
  %286 = udiv i64 %285, 8
  %287 = add i64 %284, %286
  %288 = getelementptr inbounds i8, ptr %277, i64 %287
  %289 = load i16, ptr %288, align 2, !tbaa !14
  %290 = zext i16 %289 to i32
  store i32 %290, ptr %12, align 4, !tbaa !12
  %291 = trunc i32 %290 to i8
  %292 = load i32, ptr %11, align 4, !tbaa !12
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds [16 x i8], ptr %13, i64 0, i64 %293
  store i8 %291, ptr %294, align 1, !tbaa !11
  %295 = load i32, ptr %12, align 4, !tbaa !12
  %296 = ashr i32 %295, 8
  %297 = trunc i32 %296 to i8
  %298 = load i32, ptr %11, align 4, !tbaa !12
  %299 = add nsw i32 %298, 8
  %300 = sext i32 %299 to i64
  %301 = getelementptr inbounds [16 x i8], ptr %13, i64 0, i64 %300
  store i8 %297, ptr %301, align 1, !tbaa !11
  br label %302

302:                                              ; preds = %276
  %303 = load i32, ptr %11, align 4, !tbaa !12
  %304 = add nsw i32 %303, 1
  store i32 %304, ptr %11, align 4, !tbaa !12
  br label %273, !llvm.loop !20

305:                                              ; preds = %273
  store i32 8, ptr %11, align 4, !tbaa !12
  br label %306

306:                                              ; preds = %342, %305
  %307 = load i32, ptr %11, align 4, !tbaa !12
  %308 = add nsw i32 %307, -1
  store i32 %308, ptr %11, align 4, !tbaa !12
  %309 = icmp sge i32 %308, 0
  br i1 %309, label %310, label %345

310:                                              ; preds = %306
  %311 = load <2 x i64>, ptr %13, align 16, !tbaa !11
  %312 = call i32 @_mm_movemask_epi8(<2 x i64> noundef %311)
  store i32 %312, ptr %12, align 4, !tbaa !12
  %313 = trunc i32 %312 to i8
  %314 = load ptr, ptr %5, align 8, !tbaa !5
  %315 = load i64, ptr %10, align 8, !tbaa !9
  %316 = load i32, ptr %11, align 4, !tbaa !12
  %317 = sext i32 %316 to i64
  %318 = add i64 %315, %317
  %319 = load i64, ptr %7, align 8, !tbaa !9
  %320 = mul i64 %318, %319
  %321 = udiv i64 %320, 8
  %322 = load i64, ptr %9, align 8, !tbaa !9
  %323 = udiv i64 %322, 8
  %324 = add i64 %321, %323
  %325 = getelementptr inbounds i8, ptr %314, i64 %324
  store i8 %313, ptr %325, align 1, !tbaa !11
  %326 = load i32, ptr %12, align 4, !tbaa !12
  %327 = ashr i32 %326, 8
  %328 = trunc i32 %327 to i8
  %329 = load ptr, ptr %5, align 8, !tbaa !5
  %330 = load i64, ptr %10, align 8, !tbaa !9
  %331 = load i32, ptr %11, align 4, !tbaa !12
  %332 = sext i32 %331 to i64
  %333 = add i64 %330, %332
  %334 = add i64 %333, 8
  %335 = load i64, ptr %7, align 8, !tbaa !9
  %336 = mul i64 %334, %335
  %337 = udiv i64 %336, 8
  %338 = load i64, ptr %9, align 8, !tbaa !9
  %339 = udiv i64 %338, 8
  %340 = add i64 %337, %339
  %341 = getelementptr inbounds i8, ptr %329, i64 %340
  store i8 %328, ptr %341, align 1, !tbaa !11
  br label %342

342:                                              ; preds = %310
  %343 = load <2 x i64>, ptr %13, align 16, !tbaa !11
  %344 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %343, i32 noundef 1)
  store <2 x i64> %344, ptr %13, align 16, !tbaa !11
  br label %306, !llvm.loop !21

345:                                              ; preds = %306
  br label %346

346:                                              ; preds = %345
  %347 = load i64, ptr %10, align 8, !tbaa !9
  %348 = add i64 %347, 16
  store i64 %348, ptr %10, align 8, !tbaa !9
  br label %267, !llvm.loop !22

349:                                              ; preds = %267
  br label %490

350:                                              ; preds = %262, %258
  store i64 0, ptr %10, align 8, !tbaa !9
  br label %351

351:                                              ; preds = %486, %350
  %352 = load i64, ptr %10, align 8, !tbaa !9
  %353 = load i64, ptr %8, align 8, !tbaa !9
  %354 = sub i64 %353, 16
  %355 = icmp ule i64 %352, %354
  br i1 %355, label %356, label %489

356:                                              ; preds = %351
  %357 = load ptr, ptr %6, align 8, !tbaa !5
  %358 = load i64, ptr %9, align 8, !tbaa !9
  %359 = add i64 %358, 7
  %360 = load i64, ptr %8, align 8, !tbaa !9
  %361 = mul i64 %359, %360
  %362 = udiv i64 %361, 8
  %363 = load i64, ptr %10, align 8, !tbaa !9
  %364 = udiv i64 %363, 8
  %365 = add i64 %362, %364
  %366 = getelementptr inbounds i8, ptr %357, i64 %365
  %367 = load i16, ptr %366, align 2, !tbaa !14
  %368 = load ptr, ptr %6, align 8, !tbaa !5
  %369 = load i64, ptr %9, align 8, !tbaa !9
  %370 = add i64 %369, 6
  %371 = load i64, ptr %8, align 8, !tbaa !9
  %372 = mul i64 %370, %371
  %373 = udiv i64 %372, 8
  %374 = load i64, ptr %10, align 8, !tbaa !9
  %375 = udiv i64 %374, 8
  %376 = add i64 %373, %375
  %377 = getelementptr inbounds i8, ptr %368, i64 %376
  %378 = load i16, ptr %377, align 2, !tbaa !14
  %379 = load ptr, ptr %6, align 8, !tbaa !5
  %380 = load i64, ptr %9, align 8, !tbaa !9
  %381 = add i64 %380, 5
  %382 = load i64, ptr %8, align 8, !tbaa !9
  %383 = mul i64 %381, %382
  %384 = udiv i64 %383, 8
  %385 = load i64, ptr %10, align 8, !tbaa !9
  %386 = udiv i64 %385, 8
  %387 = add i64 %384, %386
  %388 = getelementptr inbounds i8, ptr %379, i64 %387
  %389 = load i16, ptr %388, align 2, !tbaa !14
  %390 = load ptr, ptr %6, align 8, !tbaa !5
  %391 = load i64, ptr %9, align 8, !tbaa !9
  %392 = add i64 %391, 4
  %393 = load i64, ptr %8, align 8, !tbaa !9
  %394 = mul i64 %392, %393
  %395 = udiv i64 %394, 8
  %396 = load i64, ptr %10, align 8, !tbaa !9
  %397 = udiv i64 %396, 8
  %398 = add i64 %395, %397
  %399 = getelementptr inbounds i8, ptr %390, i64 %398
  %400 = load i16, ptr %399, align 2, !tbaa !14
  %401 = load ptr, ptr %6, align 8, !tbaa !5
  %402 = load i64, ptr %9, align 8, !tbaa !9
  %403 = add i64 %402, 3
  %404 = load i64, ptr %8, align 8, !tbaa !9
  %405 = mul i64 %403, %404
  %406 = udiv i64 %405, 8
  %407 = load i64, ptr %10, align 8, !tbaa !9
  %408 = udiv i64 %407, 8
  %409 = add i64 %406, %408
  %410 = getelementptr inbounds i8, ptr %401, i64 %409
  %411 = load i16, ptr %410, align 2, !tbaa !14
  %412 = load ptr, ptr %6, align 8, !tbaa !5
  %413 = load i64, ptr %9, align 8, !tbaa !9
  %414 = add i64 %413, 2
  %415 = load i64, ptr %8, align 8, !tbaa !9
  %416 = mul i64 %414, %415
  %417 = udiv i64 %416, 8
  %418 = load i64, ptr %10, align 8, !tbaa !9
  %419 = udiv i64 %418, 8
  %420 = add i64 %417, %419
  %421 = getelementptr inbounds i8, ptr %412, i64 %420
  %422 = load i16, ptr %421, align 2, !tbaa !14
  %423 = load ptr, ptr %6, align 8, !tbaa !5
  %424 = load i64, ptr %9, align 8, !tbaa !9
  %425 = add i64 %424, 1
  %426 = load i64, ptr %8, align 8, !tbaa !9
  %427 = mul i64 %425, %426
  %428 = udiv i64 %427, 8
  %429 = load i64, ptr %10, align 8, !tbaa !9
  %430 = udiv i64 %429, 8
  %431 = add i64 %428, %430
  %432 = getelementptr inbounds i8, ptr %423, i64 %431
  %433 = load i16, ptr %432, align 2, !tbaa !14
  %434 = load ptr, ptr %6, align 8, !tbaa !5
  %435 = load i64, ptr %9, align 8, !tbaa !9
  %436 = add i64 %435, 0
  %437 = load i64, ptr %8, align 8, !tbaa !9
  %438 = mul i64 %436, %437
  %439 = udiv i64 %438, 8
  %440 = load i64, ptr %10, align 8, !tbaa !9
  %441 = udiv i64 %440, 8
  %442 = add i64 %439, %441
  %443 = getelementptr inbounds i8, ptr %434, i64 %442
  %444 = load i16, ptr %443, align 2, !tbaa !14
  %445 = call <2 x i64> @_mm_set_epi16(i16 noundef signext %367, i16 noundef signext %378, i16 noundef signext %389, i16 noundef signext %400, i16 noundef signext %411, i16 noundef signext %422, i16 noundef signext %433, i16 noundef signext %444)
  store <2 x i64> %445, ptr %14, align 16, !tbaa !11
  store i32 8, ptr %11, align 4, !tbaa !12
  br label %446

446:                                              ; preds = %482, %356
  %447 = load i32, ptr %11, align 4, !tbaa !12
  %448 = add nsw i32 %447, -1
  store i32 %448, ptr %11, align 4, !tbaa !12
  %449 = icmp sge i32 %448, 0
  br i1 %449, label %450, label %485

450:                                              ; preds = %446
  %451 = load <2 x i64>, ptr %14, align 16, !tbaa !11
  %452 = call i32 @_mm_movemask_epi8(<2 x i64> noundef %451)
  store i32 %452, ptr %12, align 4, !tbaa !12
  %453 = trunc i32 %452 to i8
  %454 = load ptr, ptr %5, align 8, !tbaa !5
  %455 = load i64, ptr %10, align 8, !tbaa !9
  %456 = load i32, ptr %11, align 4, !tbaa !12
  %457 = sext i32 %456 to i64
  %458 = add i64 %455, %457
  %459 = load i64, ptr %7, align 8, !tbaa !9
  %460 = mul i64 %458, %459
  %461 = udiv i64 %460, 8
  %462 = load i64, ptr %9, align 8, !tbaa !9
  %463 = udiv i64 %462, 8
  %464 = add i64 %461, %463
  %465 = getelementptr inbounds i8, ptr %454, i64 %464
  store i8 %453, ptr %465, align 1, !tbaa !11
  %466 = load i32, ptr %12, align 4, !tbaa !12
  %467 = ashr i32 %466, 8
  %468 = trunc i32 %467 to i8
  %469 = load ptr, ptr %5, align 8, !tbaa !5
  %470 = load i64, ptr %10, align 8, !tbaa !9
  %471 = load i32, ptr %11, align 4, !tbaa !12
  %472 = sext i32 %471 to i64
  %473 = add i64 %470, %472
  %474 = add i64 %473, 8
  %475 = load i64, ptr %7, align 8, !tbaa !9
  %476 = mul i64 %474, %475
  %477 = udiv i64 %476, 8
  %478 = load i64, ptr %9, align 8, !tbaa !9
  %479 = udiv i64 %478, 8
  %480 = add i64 %477, %479
  %481 = getelementptr inbounds i8, ptr %469, i64 %480
  store i8 %468, ptr %481, align 1, !tbaa !11
  br label %482

482:                                              ; preds = %450
  %483 = load <2 x i64>, ptr %14, align 16, !tbaa !11
  %484 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %483, i32 noundef 1)
  store <2 x i64> %484, ptr %14, align 16, !tbaa !11
  br label %446, !llvm.loop !23

485:                                              ; preds = %446
  br label %486

486:                                              ; preds = %485
  %487 = load i64, ptr %10, align 8, !tbaa !9
  %488 = add i64 %487, 16
  store i64 %488, ptr %10, align 8, !tbaa !9
  br label %351, !llvm.loop !24

489:                                              ; preds = %351
  br label %490

490:                                              ; preds = %489, %349
  %491 = load i64, ptr %10, align 8, !tbaa !9
  %492 = load i64, ptr %8, align 8, !tbaa !9
  %493 = icmp eq i64 %491, %492
  br i1 %493, label %494, label %495

494:                                              ; preds = %490
  store i32 1, ptr %15, align 4
  br label %544

495:                                              ; preds = %490
  store i32 0, ptr %11, align 4, !tbaa !12
  br label %496

496:                                              ; preds = %516, %495
  %497 = load i32, ptr %11, align 4, !tbaa !12
  %498 = icmp slt i32 %497, 8
  br i1 %498, label %499, label %519

499:                                              ; preds = %496
  %500 = load ptr, ptr %6, align 8, !tbaa !5
  %501 = load i64, ptr %9, align 8, !tbaa !9
  %502 = load i32, ptr %11, align 4, !tbaa !12
  %503 = sext i32 %502 to i64
  %504 = add i64 %501, %503
  %505 = load i64, ptr %8, align 8, !tbaa !9
  %506 = mul i64 %504, %505
  %507 = udiv i64 %506, 8
  %508 = load i64, ptr %10, align 8, !tbaa !9
  %509 = udiv i64 %508, 8
  %510 = add i64 %507, %509
  %511 = getelementptr inbounds i8, ptr %500, i64 %510
  %512 = load i8, ptr %511, align 1, !tbaa !11
  %513 = load i32, ptr %11, align 4, !tbaa !12
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds [16 x i8], ptr %13, i64 0, i64 %514
  store i8 %512, ptr %515, align 1, !tbaa !11
  br label %516

516:                                              ; preds = %499
  %517 = load i32, ptr %11, align 4, !tbaa !12
  %518 = add nsw i32 %517, 1
  store i32 %518, ptr %11, align 4, !tbaa !12
  br label %496, !llvm.loop !25

519:                                              ; preds = %496
  store i32 8, ptr %11, align 4, !tbaa !12
  br label %520

520:                                              ; preds = %540, %519
  %521 = load i32, ptr %11, align 4, !tbaa !12
  %522 = add nsw i32 %521, -1
  store i32 %522, ptr %11, align 4, !tbaa !12
  %523 = icmp sge i32 %522, 0
  br i1 %523, label %524, label %543

524:                                              ; preds = %520
  %525 = load <2 x i64>, ptr %13, align 16, !tbaa !11
  %526 = call i32 @_mm_movemask_epi8(<2 x i64> noundef %525)
  %527 = trunc i32 %526 to i8
  %528 = load ptr, ptr %5, align 8, !tbaa !5
  %529 = load i64, ptr %10, align 8, !tbaa !9
  %530 = load i32, ptr %11, align 4, !tbaa !12
  %531 = sext i32 %530 to i64
  %532 = add i64 %529, %531
  %533 = load i64, ptr %7, align 8, !tbaa !9
  %534 = mul i64 %532, %533
  %535 = udiv i64 %534, 8
  %536 = load i64, ptr %9, align 8, !tbaa !9
  %537 = udiv i64 %536, 8
  %538 = add i64 %535, %537
  %539 = getelementptr inbounds i8, ptr %528, i64 %538
  store i8 %527, ptr %539, align 1, !tbaa !11
  br label %540

540:                                              ; preds = %524
  %541 = load <2 x i64>, ptr %13, align 16, !tbaa !11
  %542 = call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %541, i32 noundef 1)
  store <2 x i64> %542, ptr %13, align 16, !tbaa !11
  br label %520, !llvm.loop !26

543:                                              ; preds = %520
  store i32 0, ptr %15, align 4
  br label %544

544:                                              ; preds = %543, %494, %249
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #4
  %545 = load i32, ptr %15, align 4
  switch i32 %545, label %547 [
    i32 0, label %546
    i32 1, label %546
  ]

546:                                              ; preds = %544, %544
  ret void

547:                                              ; preds = %544
  unreachable
}

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #2

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

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

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

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

; 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 = { noreturn nounwind "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 = { 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 #4 = { nounwind }
attributes #5 = { noreturn 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 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"short", !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}


; 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"

@.str = external hidden unnamed_addr constant [33 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [85 x i8], align 1
@__PRETTY_FUNCTION__.sse_trans = external hidden unnamed_addr constant [63 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @sse_trans(ptr nocapture noundef writeonly %0, ptr nocapture noundef readonly %1, i64 noundef %2, i64 noundef %3) local_unnamed_addr #0 {
  %5 = or i64 %3, %2
  %6 = and i64 %5, 7
  %or.cond = icmp eq i64 %6, 0
  br i1 %or.cond, label %.preheader203, label %161

.preheader203:                                    ; preds = %4
  %7 = add i64 %2, -16
  %.not230 = icmp eq i64 %3, 0
  br i1 %.not230, label %.preheader202.preheader, label %.preheader202.us

.preheader202.preheader:                          ; preds = %.preheader203
  %8 = add i64 %2, -15
  %umax = tail call i64 @llvm.umax.i64(i64 %8, i64 16)
  %9 = add i64 %umax, -1
  %10 = and i64 %9, -16
  %11 = add i64 %10, 16
  br label %.split.us

.preheader202.us:                                 ; preds = %.preheader203, %._crit_edge.us
  %.0181207.us = phi i64 [ %160, %._crit_edge.us ], [ 0, %.preheader203 ]
  %12 = or disjoint i64 %.0181207.us, 15
  %13 = mul i64 %12, %3
  %14 = lshr exact i64 %13, 3
  %15 = getelementptr inbounds i8, ptr %1, i64 %14
  %16 = or disjoint i64 %.0181207.us, 14
  %17 = mul i64 %16, %3
  %18 = lshr exact i64 %17, 3
  %19 = getelementptr inbounds i8, ptr %1, i64 %18
  %20 = or disjoint i64 %.0181207.us, 13
  %21 = mul i64 %20, %3
  %22 = lshr exact i64 %21, 3
  %23 = getelementptr inbounds i8, ptr %1, i64 %22
  %24 = or disjoint i64 %.0181207.us, 12
  %25 = mul i64 %24, %3
  %26 = lshr exact i64 %25, 3
  %27 = getelementptr inbounds i8, ptr %1, i64 %26
  %28 = or disjoint i64 %.0181207.us, 11
  %29 = mul i64 %28, %3
  %30 = lshr exact i64 %29, 3
  %31 = getelementptr inbounds i8, ptr %1, i64 %30
  %32 = or disjoint i64 %.0181207.us, 10
  %33 = mul i64 %32, %3
  %34 = lshr exact i64 %33, 3
  %35 = getelementptr inbounds i8, ptr %1, i64 %34
  %36 = or disjoint i64 %.0181207.us, 9
  %37 = mul i64 %36, %3
  %38 = lshr exact i64 %37, 3
  %39 = getelementptr inbounds i8, ptr %1, i64 %38
  %40 = or disjoint i64 %.0181207.us, 8
  %41 = mul i64 %40, %3
  %42 = lshr exact i64 %41, 3
  %43 = getelementptr inbounds i8, ptr %1, i64 %42
  %44 = or disjoint i64 %.0181207.us, 7
  %45 = mul i64 %44, %3
  %46 = lshr exact i64 %45, 3
  %47 = getelementptr inbounds i8, ptr %1, i64 %46
  %48 = or disjoint i64 %.0181207.us, 6
  %49 = mul i64 %48, %3
  %50 = lshr exact i64 %49, 3
  %51 = getelementptr inbounds i8, ptr %1, i64 %50
  %52 = or disjoint i64 %.0181207.us, 5
  %53 = mul i64 %52, %3
  %54 = lshr exact i64 %53, 3
  %55 = getelementptr inbounds i8, ptr %1, i64 %54
  %56 = or disjoint i64 %.0181207.us, 4
  %57 = mul i64 %56, %3
  %58 = lshr exact i64 %57, 3
  %59 = getelementptr inbounds i8, ptr %1, i64 %58
  %60 = or disjoint i64 %.0181207.us, 3
  %61 = mul i64 %60, %3
  %62 = lshr exact i64 %61, 3
  %63 = getelementptr inbounds i8, ptr %1, i64 %62
  %64 = or disjoint i64 %.0181207.us, 2
  %65 = mul i64 %64, %3
  %66 = lshr exact i64 %65, 3
  %67 = getelementptr inbounds i8, ptr %1, i64 %66
  %68 = or disjoint i64 %.0181207.us, 1
  %69 = mul i64 %68, %3
  %70 = lshr exact i64 %69, 3
  %71 = getelementptr inbounds i8, ptr %1, i64 %70
  %72 = mul i64 %.0181207.us, %3
  %73 = lshr exact i64 %72, 3
  %74 = getelementptr inbounds i8, ptr %1, i64 %73
  %75 = lshr exact i64 %.0181207.us, 3
  %invariant.gep.us = getelementptr inbounds i8, ptr %0, i64 %75
  br label %76

76:                                               ; preds = %.preheader202.us, %76
  %.0177206.us = phi i64 [ 0, %.preheader202.us ], [ %158, %76 ]
  %77 = lshr exact i64 %.0177206.us, 3
  %78 = getelementptr inbounds i8, ptr %15, i64 %77
  %79 = load i8, ptr %78, align 1, !tbaa !5
  %80 = getelementptr inbounds i8, ptr %19, i64 %77
  %81 = load i8, ptr %80, align 1, !tbaa !5
  %82 = getelementptr inbounds i8, ptr %23, i64 %77
  %83 = load i8, ptr %82, align 1, !tbaa !5
  %84 = getelementptr inbounds i8, ptr %27, i64 %77
  %85 = load i8, ptr %84, align 1, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %31, i64 %77
  %87 = load i8, ptr %86, align 1, !tbaa !5
  %88 = getelementptr inbounds i8, ptr %35, i64 %77
  %89 = load i8, ptr %88, align 1, !tbaa !5
  %90 = getelementptr inbounds i8, ptr %39, i64 %77
  %91 = load i8, ptr %90, align 1, !tbaa !5
  %92 = getelementptr inbounds i8, ptr %43, i64 %77
  %93 = load i8, ptr %92, align 1, !tbaa !5
  %94 = getelementptr inbounds i8, ptr %47, i64 %77
  %95 = load i8, ptr %94, align 1, !tbaa !5
  %96 = getelementptr inbounds i8, ptr %51, i64 %77
  %97 = load i8, ptr %96, align 1, !tbaa !5
  %98 = getelementptr inbounds i8, ptr %55, i64 %77
  %99 = load i8, ptr %98, align 1, !tbaa !5
  %100 = getelementptr inbounds i8, ptr %59, i64 %77
  %101 = load i8, ptr %100, align 1, !tbaa !5
  %102 = getelementptr inbounds i8, ptr %63, i64 %77
  %103 = load i8, ptr %102, align 1, !tbaa !5
  %104 = getelementptr inbounds i8, ptr %67, i64 %77
  %105 = load i8, ptr %104, align 1, !tbaa !5
  %106 = getelementptr inbounds i8, ptr %71, i64 %77
  %107 = load i8, ptr %106, align 1, !tbaa !5
  %108 = getelementptr inbounds i8, ptr %74, i64 %77
  %109 = load i8, ptr %108, align 1, !tbaa !5
  %110 = tail call <2 x i64> @_mm_set_epi8(i8 noundef signext %79, i8 noundef signext %81, i8 noundef signext %83, i8 noundef signext %85, i8 noundef signext %87, i8 noundef signext %89, i8 noundef signext %91, i8 noundef signext %93, i8 noundef signext %95, i8 noundef signext %97, i8 noundef signext %99, i8 noundef signext %101, i8 noundef signext %103, i8 noundef signext %105, i8 noundef signext %107, i8 noundef signext %109)
  %111 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %110)
  %112 = trunc i32 %111 to i16
  %113 = or disjoint i64 %.0177206.us, 7
  %114 = mul i64 %113, %2
  %115 = lshr exact i64 %114, 3
  %gep.us = getelementptr inbounds i8, ptr %invariant.gep.us, i64 %115
  store i16 %112, ptr %gep.us, align 2, !tbaa !8
  %116 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %110, i32 noundef 1)
  %117 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %116)
  %118 = trunc i32 %117 to i16
  %119 = or disjoint i64 %.0177206.us, 6
  %120 = mul i64 %119, %2
  %121 = lshr exact i64 %120, 3
  %gep.us.1 = getelementptr inbounds i8, ptr %invariant.gep.us, i64 %121
  store i16 %118, ptr %gep.us.1, align 2, !tbaa !8
  %122 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %116, i32 noundef 1)
  %123 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %122)
  %124 = trunc i32 %123 to i16
  %125 = or disjoint i64 %.0177206.us, 5
  %126 = mul i64 %125, %2
  %127 = lshr exact i64 %126, 3
  %gep.us.2 = getelementptr inbounds i8, ptr %invariant.gep.us, i64 %127
  store i16 %124, ptr %gep.us.2, align 2, !tbaa !8
  %128 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %122, i32 noundef 1)
  %129 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %128)
  %130 = trunc i32 %129 to i16
  %131 = or disjoint i64 %.0177206.us, 4
  %132 = mul i64 %131, %2
  %133 = lshr exact i64 %132, 3
  %gep.us.3 = getelementptr inbounds i8, ptr %invariant.gep.us, i64 %133
  store i16 %130, ptr %gep.us.3, align 2, !tbaa !8
  %134 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %128, i32 noundef 1)
  %135 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %134)
  %136 = trunc i32 %135 to i16
  %137 = or disjoint i64 %.0177206.us, 3
  %138 = mul i64 %137, %2
  %139 = lshr exact i64 %138, 3
  %gep.us.4 = getelementptr inbounds i8, ptr %invariant.gep.us, i64 %139
  store i16 %136, ptr %gep.us.4, align 2, !tbaa !8
  %140 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %134, i32 noundef 1)
  %141 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %140)
  %142 = trunc i32 %141 to i16
  %143 = or disjoint i64 %.0177206.us, 2
  %144 = mul i64 %143, %2
  %145 = lshr exact i64 %144, 3
  %gep.us.5 = getelementptr inbounds i8, ptr %invariant.gep.us, i64 %145
  store i16 %142, ptr %gep.us.5, align 2, !tbaa !8
  %146 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %140, i32 noundef 1)
  %147 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %146)
  %148 = trunc i32 %147 to i16
  %149 = or disjoint i64 %.0177206.us, 1
  %150 = mul i64 %149, %2
  %151 = lshr exact i64 %150, 3
  %gep.us.6 = getelementptr inbounds i8, ptr %invariant.gep.us, i64 %151
  store i16 %148, ptr %gep.us.6, align 2, !tbaa !8
  %152 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %146, i32 noundef 1)
  %153 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %152)
  %154 = trunc i32 %153 to i16
  %155 = mul i64 %.0177206.us, %2
  %156 = lshr exact i64 %155, 3
  %gep.us.7 = getelementptr inbounds i8, ptr %invariant.gep.us, i64 %156
  store i16 %154, ptr %gep.us.7, align 2, !tbaa !8
  %157 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %152, i32 noundef 1)
  %158 = add i64 %.0177206.us, 8
  %159 = icmp ult i64 %158, %3
  br i1 %159, label %76, label %._crit_edge.us, !llvm.loop !10

._crit_edge.us:                                   ; preds = %76
  %160 = add i64 %.0181207.us, 16
  %.not.us = icmp ugt i64 %160, %7
  br i1 %.not.us, label %.split.us, label %.preheader202.us, !llvm.loop !12

161:                                              ; preds = %4
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i32 noundef 49, ptr noundef nonnull @__PRETTY_FUNCTION__.sse_trans) #4
  unreachable

.split.us:                                        ; preds = %._crit_edge.us, %.preheader202.preheader
  %.us-phi = phi i64 [ %11, %.preheader202.preheader ], [ %160, %._crit_edge.us ]
  %162 = icmp eq i64 %.us-phi, %2
  br i1 %162, label %530, label %163

163:                                              ; preds = %.split.us
  %164 = and i64 %5, 8
  %or.cond194 = icmp eq i64 %164, 0
  %165 = add i64 %3, -16
  br i1 %or.cond194, label %.preheader196, label %.preheader200

.preheader200:                                    ; preds = %163
  %166 = lshr exact i64 %.us-phi, 3
  %invariant.gep210 = getelementptr inbounds i8, ptr %0, i64 %166
  %167 = mul i64 %.us-phi, %3
  %168 = lshr exact i64 %167, 3
  %169 = add nuw nsw i64 %.us-phi, 1
  %170 = mul i64 %169, %3
  %171 = lshr exact i64 %170, 3
  %172 = add nuw nsw i64 %.us-phi, 2
  %173 = mul i64 %172, %3
  %174 = lshr exact i64 %173, 3
  %175 = add nuw nsw i64 %.us-phi, 3
  %176 = mul i64 %175, %3
  %177 = lshr exact i64 %176, 3
  %178 = add nuw nsw i64 %.us-phi, 4
  %179 = mul i64 %178, %3
  %180 = lshr exact i64 %179, 3
  %181 = add nuw nsw i64 %.us-phi, 5
  %182 = mul i64 %181, %3
  %183 = lshr exact i64 %182, 3
  %184 = add nuw nsw i64 %.us-phi, 6
  %185 = mul i64 %184, %3
  %186 = lshr exact i64 %185, 3
  %187 = add nuw nsw i64 %.us-phi, 7
  %188 = mul i64 %187, %3
  %189 = lshr exact i64 %188, 3
  br label %.preheader199

.preheader196:                                    ; preds = %163
  %190 = add nuw nsw i64 %.us-phi, 7
  %191 = mul i64 %190, %3
  %192 = lshr exact i64 %191, 3
  %193 = getelementptr inbounds i8, ptr %1, i64 %192
  %194 = add nuw nsw i64 %.us-phi, 6
  %195 = mul i64 %194, %3
  %196 = lshr exact i64 %195, 3
  %197 = getelementptr inbounds i8, ptr %1, i64 %196
  %198 = add nuw nsw i64 %.us-phi, 5
  %199 = mul i64 %198, %3
  %200 = lshr exact i64 %199, 3
  %201 = getelementptr inbounds i8, ptr %1, i64 %200
  %202 = add nuw nsw i64 %.us-phi, 4
  %203 = mul i64 %202, %3
  %204 = lshr exact i64 %203, 3
  %205 = getelementptr inbounds i8, ptr %1, i64 %204
  %206 = add nuw nsw i64 %.us-phi, 3
  %207 = mul i64 %206, %3
  %208 = lshr exact i64 %207, 3
  %209 = getelementptr inbounds i8, ptr %1, i64 %208
  %210 = add nuw nsw i64 %.us-phi, 2
  %211 = mul i64 %210, %3
  %212 = lshr exact i64 %211, 3
  %213 = getelementptr inbounds i8, ptr %1, i64 %212
  %214 = add nuw nsw i64 %.us-phi, 1
  %215 = mul i64 %214, %3
  %216 = lshr exact i64 %215, 3
  %217 = getelementptr inbounds i8, ptr %1, i64 %216
  %218 = mul i64 %.us-phi, %3
  %219 = lshr exact i64 %218, 3
  %220 = getelementptr inbounds i8, ptr %1, i64 %219
  %221 = lshr exact i64 %.us-phi, 3
  %invariant.gep217 = getelementptr inbounds i8, ptr %0, i64 %221
  br label %340

.preheader199:                                    ; preds = %.preheader200, %.preheader199
  %.1178214 = phi i64 [ 0, %.preheader200 ], [ %339, %.preheader199 ]
  %222 = lshr exact i64 %.1178214, 3
  %invariant.gep = getelementptr inbounds i8, ptr %1, i64 %222
  %gep = getelementptr inbounds i8, ptr %invariant.gep, i64 %168
  %223 = load i16, ptr %gep, align 2, !tbaa !8
  %gep.1 = getelementptr inbounds i8, ptr %invariant.gep, i64 %171
  %224 = load i16, ptr %gep.1, align 2, !tbaa !8
  %gep.2 = getelementptr inbounds i8, ptr %invariant.gep, i64 %174
  %225 = load i16, ptr %gep.2, align 2, !tbaa !8
  %gep.3 = getelementptr inbounds i8, ptr %invariant.gep, i64 %177
  %226 = load i16, ptr %gep.3, align 2, !tbaa !8
  %gep.4 = getelementptr inbounds i8, ptr %invariant.gep, i64 %180
  %227 = load i16, ptr %gep.4, align 2, !tbaa !8
  %gep.5 = getelementptr inbounds i8, ptr %invariant.gep, i64 %183
  %228 = load i16, ptr %gep.5, align 2, !tbaa !8
  %gep.6 = getelementptr inbounds i8, ptr %invariant.gep, i64 %186
  %229 = load i16, ptr %gep.6, align 2, !tbaa !8
  %gep.7 = getelementptr inbounds i8, ptr %invariant.gep, i64 %189
  %230 = load i16, ptr %gep.7, align 2, !tbaa !8
  %231 = insertelement <8 x i16> poison, i16 %223, i64 0
  %232 = insertelement <8 x i16> %231, i16 %224, i64 1
  %233 = insertelement <8 x i16> %232, i16 %225, i64 2
  %234 = insertelement <8 x i16> %233, i16 %226, i64 3
  %235 = insertelement <8 x i16> %234, i16 %227, i64 4
  %236 = insertelement <8 x i16> %235, i16 %228, i64 5
  %237 = insertelement <8 x i16> %236, i16 %229, i64 6
  %238 = insertelement <8 x i16> %237, i16 %230, i64 7
  %239 = lshr <8 x i16> %238, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
  %240 = insertelement <16 x i16> poison, i16 %223, i64 0
  %241 = insertelement <16 x i16> %240, i16 %224, i64 1
  %242 = insertelement <16 x i16> %241, i16 %225, i64 2
  %243 = insertelement <16 x i16> %242, i16 %226, i64 3
  %244 = insertelement <16 x i16> %243, i16 %227, i64 4
  %245 = insertelement <16 x i16> %244, i16 %228, i64 5
  %246 = insertelement <16 x i16> %245, i16 %229, i64 6
  %247 = insertelement <16 x i16> %246, i16 %230, i64 7
  %248 = shufflevector <8 x i16> %239, <8 x i16> poison, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
  %249 = shufflevector <16 x i16> %247, <16 x i16> %248, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>
  %250 = trunc <16 x i16> %249 to <16 x i8>
  %251 = bitcast <16 x i8> %250 to <2 x i64>
  %252 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %251)
  %253 = trunc i32 %252 to i8
  %254 = or disjoint i64 %.1178214, 7
  %255 = mul i64 %254, %2
  %256 = lshr exact i64 %255, 3
  %gep211 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %256
  store i8 %253, ptr %gep211, align 1, !tbaa !5
  %257 = lshr i32 %252, 8
  %258 = trunc i32 %257 to i8
  %259 = or disjoint i64 %.1178214, 15
  %260 = mul i64 %259, %2
  %261 = lshr exact i64 %260, 3
  %gep213 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %261
  store i8 %258, ptr %gep213, align 1, !tbaa !5
  %262 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %251, i32 noundef 1)
  %263 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %262)
  %264 = trunc i32 %263 to i8
  %265 = or disjoint i64 %.1178214, 6
  %266 = mul i64 %265, %2
  %267 = lshr exact i64 %266, 3
  %gep211.1 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %267
  store i8 %264, ptr %gep211.1, align 1, !tbaa !5
  %268 = lshr i32 %263, 8
  %269 = trunc i32 %268 to i8
  %270 = or disjoint i64 %.1178214, 14
  %271 = mul i64 %270, %2
  %272 = lshr exact i64 %271, 3
  %gep213.1 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %272
  store i8 %269, ptr %gep213.1, align 1, !tbaa !5
  %273 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %262, i32 noundef 1)
  %274 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %273)
  %275 = trunc i32 %274 to i8
  %276 = or disjoint i64 %.1178214, 5
  %277 = mul i64 %276, %2
  %278 = lshr exact i64 %277, 3
  %gep211.2 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %278
  store i8 %275, ptr %gep211.2, align 1, !tbaa !5
  %279 = lshr i32 %274, 8
  %280 = trunc i32 %279 to i8
  %281 = or disjoint i64 %.1178214, 13
  %282 = mul i64 %281, %2
  %283 = lshr exact i64 %282, 3
  %gep213.2 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %283
  store i8 %280, ptr %gep213.2, align 1, !tbaa !5
  %284 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %273, i32 noundef 1)
  %285 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %284)
  %286 = trunc i32 %285 to i8
  %287 = or disjoint i64 %.1178214, 4
  %288 = mul i64 %287, %2
  %289 = lshr exact i64 %288, 3
  %gep211.3 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %289
  store i8 %286, ptr %gep211.3, align 1, !tbaa !5
  %290 = lshr i32 %285, 8
  %291 = trunc i32 %290 to i8
  %292 = or disjoint i64 %.1178214, 12
  %293 = mul i64 %292, %2
  %294 = lshr exact i64 %293, 3
  %gep213.3 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %294
  store i8 %291, ptr %gep213.3, align 1, !tbaa !5
  %295 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %284, i32 noundef 1)
  %296 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %295)
  %297 = trunc i32 %296 to i8
  %298 = or disjoint i64 %.1178214, 3
  %299 = mul i64 %298, %2
  %300 = lshr exact i64 %299, 3
  %gep211.4 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %300
  store i8 %297, ptr %gep211.4, align 1, !tbaa !5
  %301 = lshr i32 %296, 8
  %302 = trunc i32 %301 to i8
  %303 = or disjoint i64 %.1178214, 11
  %304 = mul i64 %303, %2
  %305 = lshr exact i64 %304, 3
  %gep213.4 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %305
  store i8 %302, ptr %gep213.4, align 1, !tbaa !5
  %306 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %295, i32 noundef 1)
  %307 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %306)
  %308 = trunc i32 %307 to i8
  %309 = or disjoint i64 %.1178214, 2
  %310 = mul i64 %309, %2
  %311 = lshr exact i64 %310, 3
  %gep211.5 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %311
  store i8 %308, ptr %gep211.5, align 1, !tbaa !5
  %312 = lshr i32 %307, 8
  %313 = trunc i32 %312 to i8
  %314 = or disjoint i64 %.1178214, 10
  %315 = mul i64 %314, %2
  %316 = lshr exact i64 %315, 3
  %gep213.5 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %316
  store i8 %313, ptr %gep213.5, align 1, !tbaa !5
  %317 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %306, i32 noundef 1)
  %318 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %317)
  %319 = trunc i32 %318 to i8
  %320 = or disjoint i64 %.1178214, 1
  %321 = mul i64 %320, %2
  %322 = lshr exact i64 %321, 3
  %gep211.6 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %322
  store i8 %319, ptr %gep211.6, align 1, !tbaa !5
  %323 = lshr i32 %318, 8
  %324 = trunc i32 %323 to i8
  %325 = or disjoint i64 %.1178214, 9
  %326 = mul i64 %325, %2
  %327 = lshr exact i64 %326, 3
  %gep213.6 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %327
  store i8 %324, ptr %gep213.6, align 1, !tbaa !5
  %328 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %317, i32 noundef 1)
  %329 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %328)
  %330 = trunc i32 %329 to i8
  %331 = mul i64 %.1178214, %2
  %332 = lshr exact i64 %331, 3
  %gep211.7 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %332
  store i8 %330, ptr %gep211.7, align 1, !tbaa !5
  %333 = lshr i32 %329, 8
  %334 = trunc i32 %333 to i8
  %335 = or disjoint i64 %.1178214, 8
  %336 = mul i64 %335, %2
  %337 = lshr exact i64 %336, 3
  %gep213.7 = getelementptr inbounds i8, ptr %invariant.gep210, i64 %337
  store i8 %334, ptr %gep213.7, align 1, !tbaa !5
  %338 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %328, i32 noundef 1)
  %339 = add i64 %.1178214, 16
  %.not192 = icmp ugt i64 %339, %165
  br i1 %.not192, label %.loopexit197.loopexit272, label %.preheader199, !llvm.loop !13

340:                                              ; preds = %.preheader196, %340
  %.2179221 = phi i64 [ 0, %.preheader196 ], [ %446, %340 ]
  %341 = lshr exact i64 %.2179221, 3
  %342 = getelementptr inbounds i8, ptr %193, i64 %341
  %343 = load i16, ptr %342, align 2, !tbaa !8
  %344 = getelementptr inbounds i8, ptr %197, i64 %341
  %345 = load i16, ptr %344, align 2, !tbaa !8
  %346 = getelementptr inbounds i8, ptr %201, i64 %341
  %347 = load i16, ptr %346, align 2, !tbaa !8
  %348 = getelementptr inbounds i8, ptr %205, i64 %341
  %349 = load i16, ptr %348, align 2, !tbaa !8
  %350 = getelementptr inbounds i8, ptr %209, i64 %341
  %351 = load i16, ptr %350, align 2, !tbaa !8
  %352 = getelementptr inbounds i8, ptr %213, i64 %341
  %353 = load i16, ptr %352, align 2, !tbaa !8
  %354 = getelementptr inbounds i8, ptr %217, i64 %341
  %355 = load i16, ptr %354, align 2, !tbaa !8
  %356 = getelementptr inbounds i8, ptr %220, i64 %341
  %357 = load i16, ptr %356, align 2, !tbaa !8
  %358 = tail call <2 x i64> @_mm_set_epi16(i16 noundef signext %343, i16 noundef signext %345, i16 noundef signext %347, i16 noundef signext %349, i16 noundef signext %351, i16 noundef signext %353, i16 noundef signext %355, i16 noundef signext %357)
  %359 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %358)
  %360 = trunc i32 %359 to i8
  %361 = or disjoint i64 %.2179221, 7
  %362 = mul i64 %361, %2
  %363 = lshr exact i64 %362, 3
  %gep218 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %363
  store i8 %360, ptr %gep218, align 1, !tbaa !5
  %364 = lshr i32 %359, 8
  %365 = trunc i32 %364 to i8
  %366 = or disjoint i64 %.2179221, 15
  %367 = mul i64 %366, %2
  %368 = lshr exact i64 %367, 3
  %gep220 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %368
  store i8 %365, ptr %gep220, align 1, !tbaa !5
  %369 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %358, i32 noundef 1)
  %370 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %369)
  %371 = trunc i32 %370 to i8
  %372 = or disjoint i64 %.2179221, 6
  %373 = mul i64 %372, %2
  %374 = lshr exact i64 %373, 3
  %gep218.1 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %374
  store i8 %371, ptr %gep218.1, align 1, !tbaa !5
  %375 = lshr i32 %370, 8
  %376 = trunc i32 %375 to i8
  %377 = or disjoint i64 %.2179221, 14
  %378 = mul i64 %377, %2
  %379 = lshr exact i64 %378, 3
  %gep220.1 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %379
  store i8 %376, ptr %gep220.1, align 1, !tbaa !5
  %380 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %369, i32 noundef 1)
  %381 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %380)
  %382 = trunc i32 %381 to i8
  %383 = or disjoint i64 %.2179221, 5
  %384 = mul i64 %383, %2
  %385 = lshr exact i64 %384, 3
  %gep218.2 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %385
  store i8 %382, ptr %gep218.2, align 1, !tbaa !5
  %386 = lshr i32 %381, 8
  %387 = trunc i32 %386 to i8
  %388 = or disjoint i64 %.2179221, 13
  %389 = mul i64 %388, %2
  %390 = lshr exact i64 %389, 3
  %gep220.2 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %390
  store i8 %387, ptr %gep220.2, align 1, !tbaa !5
  %391 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %380, i32 noundef 1)
  %392 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %391)
  %393 = trunc i32 %392 to i8
  %394 = or disjoint i64 %.2179221, 4
  %395 = mul i64 %394, %2
  %396 = lshr exact i64 %395, 3
  %gep218.3 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %396
  store i8 %393, ptr %gep218.3, align 1, !tbaa !5
  %397 = lshr i32 %392, 8
  %398 = trunc i32 %397 to i8
  %399 = or disjoint i64 %.2179221, 12
  %400 = mul i64 %399, %2
  %401 = lshr exact i64 %400, 3
  %gep220.3 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %401
  store i8 %398, ptr %gep220.3, align 1, !tbaa !5
  %402 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %391, i32 noundef 1)
  %403 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %402)
  %404 = trunc i32 %403 to i8
  %405 = or disjoint i64 %.2179221, 3
  %406 = mul i64 %405, %2
  %407 = lshr exact i64 %406, 3
  %gep218.4 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %407
  store i8 %404, ptr %gep218.4, align 1, !tbaa !5
  %408 = lshr i32 %403, 8
  %409 = trunc i32 %408 to i8
  %410 = or disjoint i64 %.2179221, 11
  %411 = mul i64 %410, %2
  %412 = lshr exact i64 %411, 3
  %gep220.4 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %412
  store i8 %409, ptr %gep220.4, align 1, !tbaa !5
  %413 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %402, i32 noundef 1)
  %414 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %413)
  %415 = trunc i32 %414 to i8
  %416 = or disjoint i64 %.2179221, 2
  %417 = mul i64 %416, %2
  %418 = lshr exact i64 %417, 3
  %gep218.5 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %418
  store i8 %415, ptr %gep218.5, align 1, !tbaa !5
  %419 = lshr i32 %414, 8
  %420 = trunc i32 %419 to i8
  %421 = or disjoint i64 %.2179221, 10
  %422 = mul i64 %421, %2
  %423 = lshr exact i64 %422, 3
  %gep220.5 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %423
  store i8 %420, ptr %gep220.5, align 1, !tbaa !5
  %424 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %413, i32 noundef 1)
  %425 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %424)
  %426 = trunc i32 %425 to i8
  %427 = or disjoint i64 %.2179221, 1
  %428 = mul i64 %427, %2
  %429 = lshr exact i64 %428, 3
  %gep218.6 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %429
  store i8 %426, ptr %gep218.6, align 1, !tbaa !5
  %430 = lshr i32 %425, 8
  %431 = trunc i32 %430 to i8
  %432 = or disjoint i64 %.2179221, 9
  %433 = mul i64 %432, %2
  %434 = lshr exact i64 %433, 3
  %gep220.6 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %434
  store i8 %431, ptr %gep220.6, align 1, !tbaa !5
  %435 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %424, i32 noundef 1)
  %436 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %435)
  %437 = trunc i32 %436 to i8
  %438 = mul i64 %.2179221, %2
  %439 = lshr exact i64 %438, 3
  %gep218.7 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %439
  store i8 %437, ptr %gep218.7, align 1, !tbaa !5
  %440 = lshr i32 %436, 8
  %441 = trunc i32 %440 to i8
  %442 = or disjoint i64 %.2179221, 8
  %443 = mul i64 %442, %2
  %444 = lshr exact i64 %443, 3
  %gep220.7 = getelementptr inbounds i8, ptr %invariant.gep217, i64 %444
  store i8 %441, ptr %gep220.7, align 1, !tbaa !5
  %445 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %435, i32 noundef 1)
  %446 = add i64 %.2179221, 16
  %.not191 = icmp ugt i64 %446, %165
  br i1 %.not191, label %.loopexit197, label %340, !llvm.loop !14

.loopexit197.loopexit272:                         ; preds = %.preheader199
  %447 = bitcast <2 x i64> %338 to <16 x i8>
  br label %.loopexit197

.loopexit197:                                     ; preds = %340, %.loopexit197.loopexit272
  %.sroa.0.1 = phi <16 x i8> [ %447, %.loopexit197.loopexit272 ], [ undef, %340 ]
  %.3180 = phi i64 [ %339, %.loopexit197.loopexit272 ], [ %446, %340 ]
  %448 = icmp eq i64 %.3180, %3
  br i1 %448, label %530, label %.preheader195

.preheader195:                                    ; preds = %.loopexit197
  %449 = lshr exact i64 %.3180, 3
  %invariant.gep222 = getelementptr inbounds i8, ptr %1, i64 %449
  %450 = mul i64 %.us-phi, %3
  %451 = lshr exact i64 %450, 3
  %gep223 = getelementptr inbounds i8, ptr %invariant.gep222, i64 %451
  %452 = load i8, ptr %gep223, align 1, !tbaa !5
  %.sroa.0.0.vec.insert249 = insertelement <16 x i8> %.sroa.0.1, i8 %452, i64 0
  %453 = add nuw nsw i64 %.us-phi, 1
  %454 = mul i64 %453, %3
  %455 = lshr exact i64 %454, 3
  %gep223.1 = getelementptr inbounds i8, ptr %invariant.gep222, i64 %455
  %456 = load i8, ptr %gep223.1, align 1, !tbaa !5
  %.sroa.0.1.vec.insert251 = insertelement <16 x i8> %.sroa.0.0.vec.insert249, i8 %456, i64 1
  %457 = add nuw nsw i64 %.us-phi, 2
  %458 = mul i64 %457, %3
  %459 = lshr exact i64 %458, 3
  %gep223.2 = getelementptr inbounds i8, ptr %invariant.gep222, i64 %459
  %460 = load i8, ptr %gep223.2, align 1, !tbaa !5
  %.sroa.0.2.vec.insert253 = insertelement <16 x i8> %.sroa.0.1.vec.insert251, i8 %460, i64 2
  %461 = add nuw nsw i64 %.us-phi, 3
  %462 = mul i64 %461, %3
  %463 = lshr exact i64 %462, 3
  %gep223.3 = getelementptr inbounds i8, ptr %invariant.gep222, i64 %463
  %464 = load i8, ptr %gep223.3, align 1, !tbaa !5
  %.sroa.0.3.vec.insert255 = insertelement <16 x i8> %.sroa.0.2.vec.insert253, i8 %464, i64 3
  %465 = add nuw nsw i64 %.us-phi, 4
  %466 = mul i64 %465, %3
  %467 = lshr exact i64 %466, 3
  %gep223.4 = getelementptr inbounds i8, ptr %invariant.gep222, i64 %467
  %468 = load i8, ptr %gep223.4, align 1, !tbaa !5
  %.sroa.0.4.vec.insert257 = insertelement <16 x i8> %.sroa.0.3.vec.insert255, i8 %468, i64 4
  %469 = add nuw nsw i64 %.us-phi, 5
  %470 = mul i64 %469, %3
  %471 = lshr exact i64 %470, 3
  %gep223.5 = getelementptr inbounds i8, ptr %invariant.gep222, i64 %471
  %472 = load i8, ptr %gep223.5, align 1, !tbaa !5
  %.sroa.0.5.vec.insert259 = insertelement <16 x i8> %.sroa.0.4.vec.insert257, i8 %472, i64 5
  %473 = add nuw nsw i64 %.us-phi, 6
  %474 = mul i64 %473, %3
  %475 = lshr exact i64 %474, 3
  %gep223.6 = getelementptr inbounds i8, ptr %invariant.gep222, i64 %475
  %476 = load i8, ptr %gep223.6, align 1, !tbaa !5
  %.sroa.0.6.vec.insert261 = insertelement <16 x i8> %.sroa.0.5.vec.insert259, i8 %476, i64 6
  %477 = add nuw nsw i64 %.us-phi, 7
  %478 = mul i64 %477, %3
  %479 = lshr exact i64 %478, 3
  %gep223.7 = getelementptr inbounds i8, ptr %invariant.gep222, i64 %479
  %480 = load i8, ptr %gep223.7, align 1, !tbaa !5
  %.sroa.0.7.vec.insert263 = insertelement <16 x i8> %.sroa.0.6.vec.insert261, i8 %480, i64 7
  %481 = bitcast <16 x i8> %.sroa.0.7.vec.insert263 to <2 x i64>
  %482 = lshr exact i64 %.us-phi, 3
  %invariant.gep228 = getelementptr inbounds i8, ptr %0, i64 %482
  %483 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %481)
  %484 = trunc i32 %483 to i8
  %485 = add nuw nsw i64 %.3180, 7
  %486 = mul i64 %485, %2
  %487 = lshr exact i64 %486, 3
  %gep229 = getelementptr inbounds i8, ptr %invariant.gep228, i64 %487
  store i8 %484, ptr %gep229, align 1, !tbaa !5
  %488 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %481, i32 noundef 1)
  %489 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %488)
  %490 = trunc i32 %489 to i8
  %491 = add nuw nsw i64 %.3180, 6
  %492 = mul i64 %491, %2
  %493 = lshr exact i64 %492, 3
  %gep229.1 = getelementptr inbounds i8, ptr %invariant.gep228, i64 %493
  store i8 %490, ptr %gep229.1, align 1, !tbaa !5
  %494 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %488, i32 noundef 1)
  %495 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %494)
  %496 = trunc i32 %495 to i8
  %497 = add nuw nsw i64 %.3180, 5
  %498 = mul i64 %497, %2
  %499 = lshr exact i64 %498, 3
  %gep229.2 = getelementptr inbounds i8, ptr %invariant.gep228, i64 %499
  store i8 %496, ptr %gep229.2, align 1, !tbaa !5
  %500 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %494, i32 noundef 1)
  %501 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %500)
  %502 = trunc i32 %501 to i8
  %503 = add nuw nsw i64 %.3180, 4
  %504 = mul i64 %503, %2
  %505 = lshr exact i64 %504, 3
  %gep229.3 = getelementptr inbounds i8, ptr %invariant.gep228, i64 %505
  store i8 %502, ptr %gep229.3, align 1, !tbaa !5
  %506 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %500, i32 noundef 1)
  %507 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %506)
  %508 = trunc i32 %507 to i8
  %509 = add nuw nsw i64 %.3180, 3
  %510 = mul i64 %509, %2
  %511 = lshr exact i64 %510, 3
  %gep229.4 = getelementptr inbounds i8, ptr %invariant.gep228, i64 %511
  store i8 %508, ptr %gep229.4, align 1, !tbaa !5
  %512 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %506, i32 noundef 1)
  %513 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %512)
  %514 = trunc i32 %513 to i8
  %515 = add nuw nsw i64 %.3180, 2
  %516 = mul i64 %515, %2
  %517 = lshr exact i64 %516, 3
  %gep229.5 = getelementptr inbounds i8, ptr %invariant.gep228, i64 %517
  store i8 %514, ptr %gep229.5, align 1, !tbaa !5
  %518 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %512, i32 noundef 1)
  %519 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %518)
  %520 = trunc i32 %519 to i8
  %521 = add nuw nsw i64 %.3180, 1
  %522 = mul i64 %521, %2
  %523 = lshr exact i64 %522, 3
  %gep229.6 = getelementptr inbounds i8, ptr %invariant.gep228, i64 %523
  store i8 %520, ptr %gep229.6, align 1, !tbaa !5
  %524 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %518, i32 noundef 1)
  %525 = tail call i32 @_mm_movemask_epi8(<2 x i64> noundef %524)
  %526 = trunc i32 %525 to i8
  %527 = mul i64 %.3180, %2
  %528 = lshr exact i64 %527, 3
  %gep229.7 = getelementptr inbounds i8, ptr %invariant.gep228, i64 %528
  store i8 %526, ptr %gep229.7, align 1, !tbaa !5
  %529 = tail call <2 x i64> @_mm_slli_epi64(<2 x i64> noundef %524, i32 noundef 1)
  br label %530

530:                                              ; preds = %.preheader195, %.loopexit197, %.split.us
  ret void
}

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #3

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 = { noreturn nounwind "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 #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { noreturn 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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C/C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"short", !6, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = distinct !{!12, !11}
!13 = distinct !{!13, !11}
!14 = distinct !{!14, !11}


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass