; LLVM IR from seq-lang/seq :: runtime/sw (ksw2_gg2_sse)

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

; Function Attrs: mustprogress uwtable
define dso_local i32 @ksw_gg2_sse(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4, i8 noundef signext %5, ptr noundef %6, i8 noundef signext %7, i8 noundef signext %8, i32 noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12) #0 {
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca i8, align 1
  %20 = alloca ptr, align 8
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca <2 x i64>, align 16
  %47 = alloca <2 x i64>, align 16
  %48 = alloca <2 x i64>, align 16
  %49 = alloca <2 x i64>, align 16
  %50 = alloca <2 x i64>, align 16
  %51 = alloca <2 x i64>, align 16
  %52 = alloca <2 x i64>, align 16
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i8, align 1
  %60 = alloca i8, align 1
  %61 = alloca <2 x i64>, align 16
  %62 = alloca <2 x i64>, align 16
  %63 = alloca ptr, align 8
  %64 = alloca <2 x i64>, align 16
  %65 = alloca <2 x i64>, align 16
  %66 = alloca <2 x i64>, align 16
  %67 = alloca <2 x i64>, align 16
  %68 = alloca <2 x i64>, align 16
  %69 = alloca <2 x i64>, align 16
  %70 = alloca <2 x i64>, align 16
  %71 = alloca <2 x i64>, align 16
  store ptr %0, ptr %14, align 8, !tbaa !5
  store i32 %1, ptr %15, align 4, !tbaa !9
  store ptr %2, ptr %16, align 8, !tbaa !5
  store i32 %3, ptr %17, align 4, !tbaa !9
  store ptr %4, ptr %18, align 8, !tbaa !5
  store i8 %5, ptr %19, align 1, !tbaa !11
  store ptr %6, ptr %20, align 8, !tbaa !5
  store i8 %7, ptr %21, align 1, !tbaa !11
  store i8 %8, ptr %22, align 1, !tbaa !11
  store i32 %9, ptr %23, align 4, !tbaa !9
  store ptr %10, ptr %24, align 8, !tbaa !5
  store ptr %11, ptr %25, align 8, !tbaa !5
  store ptr %12, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  store i32 0, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  store i32 0, ptr %36, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #6
  %72 = call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext 0)
  store <2 x i64> %72, ptr %48, align 16, !tbaa !11
  %73 = load i8, ptr %21, align 1, !tbaa !11
  %74 = call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext %73)
  store <2 x i64> %74, ptr %46, align 16, !tbaa !11
  %75 = load i8, ptr %21, align 1, !tbaa !11
  %76 = sext i8 %75 to i32
  %77 = load i8, ptr %22, align 1, !tbaa !11
  %78 = sext i8 %77 to i32
  %79 = add nsw i32 %76, %78
  %80 = mul nsw i32 %79, 2
  %81 = trunc i32 %80 to i8
  %82 = call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext %81)
  store <2 x i64> %82, ptr %47, align 16, !tbaa !11
  %83 = call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext 1)
  store <2 x i64> %83, ptr %49, align 16, !tbaa !11
  %84 = call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext 2)
  store <2 x i64> %84, ptr %50, align 16, !tbaa !11
  %85 = call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext 8)
  store <2 x i64> %85, ptr %51, align 16, !tbaa !11
  %86 = call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext 16)
  store <2 x i64> %86, ptr %52, align 16, !tbaa !11
  %87 = load i32, ptr %23, align 4, !tbaa !9
  %88 = icmp slt i32 %87, 0
  br i1 %88, label %89, label %99

89:                                               ; preds = %13
  %90 = load i32, ptr %17, align 4, !tbaa !9
  %91 = load i32, ptr %15, align 4, !tbaa !9
  %92 = icmp sgt i32 %90, %91
  br i1 %92, label %93, label %95

93:                                               ; preds = %89
  %94 = load i32, ptr %17, align 4, !tbaa !9
  br label %97

95:                                               ; preds = %89
  %96 = load i32, ptr %15, align 4, !tbaa !9
  br label %97

97:                                               ; preds = %95, %93
  %98 = phi i32 [ %94, %93 ], [ %96, %95 ]
  store i32 %98, ptr %23, align 4, !tbaa !9
  br label %99

99:                                               ; preds = %97, %13
  %100 = load i32, ptr %23, align 4, !tbaa !9
  %101 = add nsw i32 %100, 1
  %102 = load i32, ptr %17, align 4, !tbaa !9
  %103 = icmp slt i32 %101, %102
  br i1 %103, label %104, label %107

104:                                              ; preds = %99
  %105 = load i32, ptr %23, align 4, !tbaa !9
  %106 = add nsw i32 %105, 1
  br label %109

107:                                              ; preds = %99
  %108 = load i32, ptr %17, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %107, %104
  %110 = phi i32 [ %106, %104 ], [ %108, %107 ]
  store i32 %110, ptr %29, align 4, !tbaa !9
  %111 = load i32, ptr %17, align 4, !tbaa !9
  %112 = add nsw i32 %111, 15
  %113 = sdiv i32 %112, 16
  store i32 %113, ptr %32, align 4, !tbaa !9
  %114 = load i32, ptr %29, align 4, !tbaa !9
  %115 = add nsw i32 %114, 15
  %116 = sdiv i32 %115, 16
  %117 = add nsw i32 %116, 1
  store i32 %117, ptr %30, align 4, !tbaa !9
  %118 = load i32, ptr %30, align 4, !tbaa !9
  %119 = mul nsw i32 %118, 16
  store i32 %119, ptr %29, align 4, !tbaa !9
  %120 = load i32, ptr %32, align 4, !tbaa !9
  %121 = mul nsw i32 %120, 5
  %122 = add nsw i32 %121, 1
  %123 = sext i32 %122 to i64
  %124 = call ptr @seq_calloc_atomic(i64 noundef %123, i64 noundef 16)
  store ptr %124, ptr %38, align 8, !tbaa !5
  %125 = load ptr, ptr %38, align 8, !tbaa !5
  %126 = ptrtoint ptr %125 to i64
  %127 = add i64 %126, 15
  %128 = lshr i64 %127, 4
  %129 = shl i64 %128, 4
  %130 = inttoptr i64 %129 to ptr
  store ptr %130, ptr %40, align 8, !tbaa !5
  %131 = load ptr, ptr %40, align 8, !tbaa !5
  %132 = load i32, ptr %32, align 4, !tbaa !9
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds <2 x i64>, ptr %131, i64 %133
  store ptr %134, ptr %41, align 8, !tbaa !5
  %135 = load ptr, ptr %41, align 8, !tbaa !5
  %136 = load i32, ptr %32, align 4, !tbaa !9
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds <2 x i64>, ptr %135, i64 %137
  store ptr %138, ptr %42, align 8, !tbaa !5
  %139 = load ptr, ptr %42, align 8, !tbaa !5
  %140 = load i32, ptr %32, align 4, !tbaa !9
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds <2 x i64>, ptr %139, i64 %141
  store ptr %142, ptr %43, align 8, !tbaa !5
  %143 = load ptr, ptr %43, align 8, !tbaa !5
  %144 = load i32, ptr %32, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds <2 x i64>, ptr %143, i64 %145
  store ptr %146, ptr %44, align 8, !tbaa !5
  %147 = load i32, ptr %15, align 4, !tbaa !9
  %148 = sext i32 %147 to i64
  %149 = call ptr @seq_calloc_atomic(i64 noundef %148, i64 noundef 1)
  store ptr %149, ptr %37, align 8, !tbaa !5
  %150 = load i32, ptr %15, align 4, !tbaa !9
  %151 = load i32, ptr %17, align 4, !tbaa !9
  %152 = add nsw i32 %150, %151
  %153 = sub nsw i32 %152, 1
  %154 = load i32, ptr %30, align 4, !tbaa !9
  %155 = mul nsw i32 %153, %154
  %156 = add nsw i32 %155, 1
  %157 = mul nsw i32 %156, 16
  %158 = sext i32 %157 to i64
  %159 = call ptr @seq_alloc_atomic(i64 noundef %158)
  store ptr %159, ptr %39, align 8, !tbaa !5
  %160 = load ptr, ptr %39, align 8, !tbaa !5
  %161 = ptrtoint ptr %160 to i64
  %162 = add i64 %161, 15
  %163 = lshr i64 %162, 4
  %164 = shl i64 %163, 4
  %165 = inttoptr i64 %164 to ptr
  store ptr %165, ptr %45, align 8, !tbaa !5
  %166 = load i32, ptr %15, align 4, !tbaa !9
  %167 = load i32, ptr %17, align 4, !tbaa !9
  %168 = add nsw i32 %166, %167
  %169 = sub nsw i32 %168, 1
  %170 = sext i32 %169 to i64
  %171 = mul i64 %170, 4
  %172 = call ptr @seq_alloc_atomic(i64 noundef %171)
  store ptr %172, ptr %31, align 8, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %173

173:                                              ; preds = %190, %109
  %174 = load i32, ptr %28, align 4, !tbaa !9
  %175 = load i32, ptr %15, align 4, !tbaa !9
  %176 = icmp slt i32 %174, %175
  br i1 %176, label %177, label %193

177:                                              ; preds = %173
  %178 = load ptr, ptr %16, align 8, !tbaa !5
  %179 = load i32, ptr %15, align 4, !tbaa !9
  %180 = sub nsw i32 %179, 1
  %181 = load i32, ptr %28, align 4, !tbaa !9
  %182 = sub nsw i32 %180, %181
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds i8, ptr %178, i64 %183
  %185 = load i8, ptr %184, align 1, !tbaa !11
  %186 = load ptr, ptr %37, align 8, !tbaa !5
  %187 = load i32, ptr %28, align 4, !tbaa !9
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds i8, ptr %186, i64 %188
  store i8 %185, ptr %189, align 1, !tbaa !11
  br label %190

190:                                              ; preds = %177
  %191 = load i32, ptr %28, align 4, !tbaa !9
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr %28, align 4, !tbaa !9
  br label %173, !llvm.loop !12

193:                                              ; preds = %173
  store i32 0, ptr %27, align 4, !tbaa !9
  store i32 -1, ptr %34, align 4, !tbaa !9
  store i32 -1, ptr %33, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %588, %193
  %195 = load i32, ptr %27, align 4, !tbaa !9
  %196 = load i32, ptr %15, align 4, !tbaa !9
  %197 = load i32, ptr %17, align 4, !tbaa !9
  %198 = add nsw i32 %196, %197
  %199 = sub nsw i32 %198, 1
  %200 = icmp slt i32 %195, %199
  br i1 %200, label %201, label %591

201:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  store i32 0, ptr %53, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  %202 = load i32, ptr %17, align 4, !tbaa !9
  %203 = sub nsw i32 %202, 1
  store i32 %203, ptr %54, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #6
  %204 = load i32, ptr %53, align 4, !tbaa !9
  %205 = load i32, ptr %27, align 4, !tbaa !9
  %206 = load i32, ptr %15, align 4, !tbaa !9
  %207 = sub nsw i32 %205, %206
  %208 = add nsw i32 %207, 1
  %209 = icmp slt i32 %204, %208
  br i1 %209, label %210, label %215

210:                                              ; preds = %201
  %211 = load i32, ptr %27, align 4, !tbaa !9
  %212 = load i32, ptr %15, align 4, !tbaa !9
  %213 = sub nsw i32 %211, %212
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %53, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %210, %201
  %216 = load i32, ptr %54, align 4, !tbaa !9
  %217 = load i32, ptr %27, align 4, !tbaa !9
  %218 = icmp sgt i32 %216, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %215
  %220 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %220, ptr %54, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %219, %215
  %222 = load i32, ptr %53, align 4, !tbaa !9
  %223 = load i32, ptr %27, align 4, !tbaa !9
  %224 = load i32, ptr %23, align 4, !tbaa !9
  %225 = sub nsw i32 %223, %224
  %226 = add nsw i32 %225, 1
  %227 = ashr i32 %226, 1
  %228 = icmp slt i32 %222, %227
  br i1 %228, label %229, label %235

229:                                              ; preds = %221
  %230 = load i32, ptr %27, align 4, !tbaa !9
  %231 = load i32, ptr %23, align 4, !tbaa !9
  %232 = sub nsw i32 %230, %231
  %233 = add nsw i32 %232, 1
  %234 = ashr i32 %233, 1
  store i32 %234, ptr %53, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %229, %221
  %236 = load i32, ptr %54, align 4, !tbaa !9
  %237 = load i32, ptr %27, align 4, !tbaa !9
  %238 = load i32, ptr %23, align 4, !tbaa !9
  %239 = add nsw i32 %237, %238
  %240 = ashr i32 %239, 1
  %241 = icmp sgt i32 %236, %240
  br i1 %241, label %242, label %247

242:                                              ; preds = %235
  %243 = load i32, ptr %27, align 4, !tbaa !9
  %244 = load i32, ptr %23, align 4, !tbaa !9
  %245 = add nsw i32 %243, %244
  %246 = ashr i32 %245, 1
  store i32 %246, ptr %54, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %242, %235
  %248 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %248, ptr %55, align 4, !tbaa !9
  %249 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %249, ptr %56, align 4, !tbaa !9
  %250 = load i32, ptr %53, align 4, !tbaa !9
  %251 = sdiv i32 %250, 16
  %252 = mul nsw i32 %251, 16
  store i32 %252, ptr %53, align 4, !tbaa !9
  %253 = load i32, ptr %54, align 4, !tbaa !9
  %254 = add nsw i32 %253, 16
  %255 = sdiv i32 %254, 16
  %256 = mul nsw i32 %255, 16
  %257 = sub nsw i32 %256, 1
  store i32 %257, ptr %54, align 4, !tbaa !9
  %258 = load i32, ptr %53, align 4, !tbaa !9
  %259 = load ptr, ptr %31, align 8, !tbaa !5
  %260 = load i32, ptr %27, align 4, !tbaa !9
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds i32, ptr %259, i64 %261
  store i32 %258, ptr %262, align 4, !tbaa !9
  %263 = load i32, ptr %53, align 4, !tbaa !9
  %264 = icmp sgt i32 %263, 0
  br i1 %264, label %265, label %290

265:                                              ; preds = %247
  %266 = load i32, ptr %53, align 4, !tbaa !9
  %267 = sub nsw i32 %266, 1
  %268 = load i32, ptr %33, align 4, !tbaa !9
  %269 = icmp sge i32 %267, %268
  br i1 %269, label %270, label %288

270:                                              ; preds = %265
  %271 = load i32, ptr %53, align 4, !tbaa !9
  %272 = sub nsw i32 %271, 1
  %273 = load i32, ptr %34, align 4, !tbaa !9
  %274 = icmp sle i32 %272, %273
  br i1 %274, label %275, label %288

275:                                              ; preds = %270
  %276 = load ptr, ptr %42, align 8, !tbaa !5
  %277 = load i32, ptr %53, align 4, !tbaa !9
  %278 = sub nsw i32 %277, 1
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds i8, ptr %276, i64 %279
  %281 = load i8, ptr %280, align 1, !tbaa !11
  store i8 %281, ptr %59, align 1, !tbaa !11
  %282 = load ptr, ptr %41, align 8, !tbaa !5
  %283 = load i32, ptr %53, align 4, !tbaa !9
  %284 = sub nsw i32 %283, 1
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds i8, ptr %282, i64 %285
  %287 = load i8, ptr %286, align 1, !tbaa !11
  store i8 %287, ptr %60, align 1, !tbaa !11
  br label %289

288:                                              ; preds = %270, %265
  store i8 0, ptr %60, align 1, !tbaa !11
  store i8 0, ptr %59, align 1, !tbaa !11
  br label %289

289:                                              ; preds = %288, %275
  br label %300

290:                                              ; preds = %247
  store i8 0, ptr %59, align 1, !tbaa !11
  %291 = load i32, ptr %27, align 4, !tbaa !9
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %296

293:                                              ; preds = %290
  %294 = load i8, ptr %21, align 1, !tbaa !11
  %295 = sext i8 %294 to i32
  br label %297

296:                                              ; preds = %290
  br label %297

297:                                              ; preds = %296, %293
  %298 = phi i32 [ %295, %293 ], [ 0, %296 ]
  %299 = trunc i32 %298 to i8
  store i8 %299, ptr %60, align 1, !tbaa !11
  br label %300

300:                                              ; preds = %297, %289
  %301 = load i32, ptr %54, align 4, !tbaa !9
  %302 = load i32, ptr %27, align 4, !tbaa !9
  %303 = icmp sge i32 %301, %302
  br i1 %303, label %304, label %322

304:                                              ; preds = %300
  %305 = load ptr, ptr %43, align 8, !tbaa !5
  %306 = load i32, ptr %27, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds i8, ptr %305, i64 %307
  store i8 0, ptr %308, align 1, !tbaa !11
  %309 = load i32, ptr %27, align 4, !tbaa !9
  %310 = icmp ne i32 %309, 0
  br i1 %310, label %311, label %314

311:                                              ; preds = %304
  %312 = load i8, ptr %21, align 1, !tbaa !11
  %313 = sext i8 %312 to i32
  br label %315

314:                                              ; preds = %304
  br label %315

315:                                              ; preds = %314, %311
  %316 = phi i32 [ %313, %311 ], [ 0, %314 ]
  %317 = trunc i32 %316 to i8
  %318 = load ptr, ptr %40, align 8, !tbaa !5
  %319 = load i32, ptr %27, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i8, ptr %318, i64 %320
  store i8 %317, ptr %321, align 1, !tbaa !11
  br label %322

322:                                              ; preds = %315, %300
  %323 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %323, ptr %28, align 4, !tbaa !9
  br label %324

324:                                              ; preds = %358, %322
  %325 = load i32, ptr %28, align 4, !tbaa !9
  %326 = load i32, ptr %56, align 4, !tbaa !9
  %327 = icmp sle i32 %325, %326
  br i1 %327, label %328, label %361

328:                                              ; preds = %324
  %329 = load ptr, ptr %20, align 8, !tbaa !5
  %330 = load ptr, ptr %18, align 8, !tbaa !5
  %331 = load i32, ptr %28, align 4, !tbaa !9
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds i8, ptr %330, i64 %332
  %334 = load i8, ptr %333, align 1, !tbaa !11
  %335 = zext i8 %334 to i32
  %336 = load i8, ptr %19, align 1, !tbaa !11
  %337 = sext i8 %336 to i32
  %338 = mul nsw i32 %335, %337
  %339 = load ptr, ptr %37, align 8, !tbaa !5
  %340 = load i32, ptr %28, align 4, !tbaa !9
  %341 = load i32, ptr %15, align 4, !tbaa !9
  %342 = add nsw i32 %340, %341
  %343 = sub nsw i32 %342, 1
  %344 = load i32, ptr %27, align 4, !tbaa !9
  %345 = sub nsw i32 %343, %344
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds i8, ptr %339, i64 %346
  %348 = load i8, ptr %347, align 1, !tbaa !11
  %349 = zext i8 %348 to i32
  %350 = add nsw i32 %338, %349
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds i8, ptr %329, i64 %351
  %353 = load i8, ptr %352, align 1, !tbaa !11
  %354 = load ptr, ptr %44, align 8, !tbaa !5
  %355 = load i32, ptr %28, align 4, !tbaa !9
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds i8, ptr %354, i64 %356
  store i8 %353, ptr %357, align 1, !tbaa !11
  br label %358

358:                                              ; preds = %328
  %359 = load i32, ptr %28, align 4, !tbaa !9
  %360 = add nsw i32 %359, 1
  store i32 %360, ptr %28, align 4, !tbaa !9
  br label %324, !llvm.loop !14

361:                                              ; preds = %324
  %362 = load i8, ptr %59, align 1, !tbaa !11
  %363 = sext i8 %362 to i32
  %364 = call noundef <2 x i64> @_ZL17_mm_cvtsi32_si128i(i32 noundef %363)
  store <2 x i64> %364, ptr %61, align 16, !tbaa !11
  %365 = load i8, ptr %60, align 1, !tbaa !11
  %366 = sext i8 %365 to i32
  %367 = call noundef <2 x i64> @_ZL17_mm_cvtsi32_si128i(i32 noundef %366)
  store <2 x i64> %367, ptr %62, align 16, !tbaa !11
  %368 = load i32, ptr %53, align 4, !tbaa !9
  %369 = ashr i32 %368, 4
  store i32 %369, ptr %57, align 4, !tbaa !9
  %370 = load i32, ptr %54, align 4, !tbaa !9
  %371 = ashr i32 %370, 4
  store i32 %371, ptr %58, align 4, !tbaa !9
  %372 = load ptr, ptr %45, align 8, !tbaa !5
  %373 = load i32, ptr %27, align 4, !tbaa !9
  %374 = load i32, ptr %30, align 4, !tbaa !9
  %375 = mul nsw i32 %373, %374
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds <2 x i64>, ptr %372, i64 %376
  %378 = load i32, ptr %57, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = sub i64 0, %379
  %381 = getelementptr inbounds <2 x i64>, ptr %377, i64 %380
  store ptr %381, ptr %63, align 8, !tbaa !5
  %382 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %382, ptr %28, align 4, !tbaa !9
  br label %383

383:                                              ; preds = %526, %361
  %384 = load i32, ptr %28, align 4, !tbaa !9
  %385 = load i32, ptr %58, align 4, !tbaa !9
  %386 = icmp sle i32 %384, %385
  br i1 %386, label %387, label %529

387:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #6
  %388 = load ptr, ptr %44, align 8, !tbaa !5
  %389 = load i32, ptr %28, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds <2 x i64>, ptr %388, i64 %390
  %392 = call noundef <2 x i64> @_ZL14_mm_load_si128PKDv2_x(ptr noundef %391)
  %393 = load <2 x i64>, ptr %47, align 16, !tbaa !11
  %394 = call noundef <2 x i64> @_ZL12_mm_add_epi8Dv2_xS_(<2 x i64> noundef %392, <2 x i64> noundef %393)
  store <2 x i64> %394, ptr %65, align 16, !tbaa !11
  %395 = load ptr, ptr %42, align 8, !tbaa !5
  %396 = load i32, ptr %28, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds <2 x i64>, ptr %395, i64 %397
  %399 = call noundef <2 x i64> @_ZL14_mm_load_si128PKDv2_x(ptr noundef %398)
  store <2 x i64> %399, ptr %68, align 16, !tbaa !11
  %400 = load <2 x i64>, ptr %68, align 16, !tbaa !11
  %401 = bitcast <2 x i64> %400 to <16 x i8>
  %402 = shufflevector <16 x i8> %401, <16 x i8> zeroinitializer, <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
  %403 = bitcast <16 x i8> %402 to <2 x i64>
  store <2 x i64> %403, ptr %71, align 16, !tbaa !11
  %404 = load <2 x i64>, ptr %68, align 16, !tbaa !11
  %405 = bitcast <2 x i64> %404 to <16 x i8>
  %406 = shufflevector <16 x i8> zeroinitializer, <16 x i8> %405, <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
  %407 = bitcast <16 x i8> %406 to <2 x i64>
  %408 = load <2 x i64>, ptr %61, align 16, !tbaa !11
  %409 = call noundef <2 x i64> @_ZL12_mm_or_si128Dv2_xS_(<2 x i64> noundef %407, <2 x i64> noundef %408)
  store <2 x i64> %409, ptr %68, align 16, !tbaa !11
  %410 = load <2 x i64>, ptr %71, align 16, !tbaa !11
  store <2 x i64> %410, ptr %61, align 16, !tbaa !11
  %411 = load ptr, ptr %41, align 8, !tbaa !5
  %412 = load i32, ptr %28, align 4, !tbaa !9
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds <2 x i64>, ptr %411, i64 %413
  %415 = call noundef <2 x i64> @_ZL14_mm_load_si128PKDv2_x(ptr noundef %414)
  store <2 x i64> %415, ptr %69, align 16, !tbaa !11
  %416 = load <2 x i64>, ptr %69, align 16, !tbaa !11
  %417 = bitcast <2 x i64> %416 to <16 x i8>
  %418 = shufflevector <16 x i8> %417, <16 x i8> zeroinitializer, <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
  %419 = bitcast <16 x i8> %418 to <2 x i64>
  store <2 x i64> %419, ptr %71, align 16, !tbaa !11
  %420 = load <2 x i64>, ptr %69, align 16, !tbaa !11
  %421 = bitcast <2 x i64> %420 to <16 x i8>
  %422 = shufflevector <16 x i8> zeroinitializer, <16 x i8> %421, <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
  %423 = bitcast <16 x i8> %422 to <2 x i64>
  %424 = load <2 x i64>, ptr %62, align 16, !tbaa !11
  %425 = call noundef <2 x i64> @_ZL12_mm_or_si128Dv2_xS_(<2 x i64> noundef %423, <2 x i64> noundef %424)
  store <2 x i64> %425, ptr %69, align 16, !tbaa !11
  %426 = load <2 x i64>, ptr %71, align 16, !tbaa !11
  store <2 x i64> %426, ptr %62, align 16, !tbaa !11
  %427 = load <2 x i64>, ptr %68, align 16, !tbaa !11
  %428 = load <2 x i64>, ptr %69, align 16, !tbaa !11
  %429 = call noundef <2 x i64> @_ZL12_mm_add_epi8Dv2_xS_(<2 x i64> noundef %427, <2 x i64> noundef %428)
  store <2 x i64> %429, ptr %66, align 16, !tbaa !11
  %430 = load ptr, ptr %40, align 8, !tbaa !5
  %431 = load i32, ptr %28, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds <2 x i64>, ptr %430, i64 %432
  %434 = call noundef <2 x i64> @_ZL14_mm_load_si128PKDv2_x(ptr noundef %433)
  store <2 x i64> %434, ptr %70, align 16, !tbaa !11
  %435 = load ptr, ptr %43, align 8, !tbaa !5
  %436 = load i32, ptr %28, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds <2 x i64>, ptr %435, i64 %437
  %439 = call noundef <2 x i64> @_ZL14_mm_load_si128PKDv2_x(ptr noundef %438)
  %440 = load <2 x i64>, ptr %70, align 16, !tbaa !11
  %441 = call noundef <2 x i64> @_ZL12_mm_add_epi8Dv2_xS_(<2 x i64> noundef %439, <2 x i64> noundef %440)
  store <2 x i64> %441, ptr %67, align 16, !tbaa !11
  %442 = load <2 x i64>, ptr %66, align 16, !tbaa !11
  %443 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %444 = call noundef <2 x i64> @_ZL14_mm_cmpgt_epi8Dv2_xS_(<2 x i64> noundef %442, <2 x i64> noundef %443)
  %445 = load <2 x i64>, ptr %49, align 16, !tbaa !11
  %446 = call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %444, <2 x i64> noundef %445)
  store <2 x i64> %446, ptr %64, align 16, !tbaa !11
  %447 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %448 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %449 = load <2 x i64>, ptr %48, align 16, !tbaa !11
  %450 = call noundef <2 x i64> @_ZL14_mm_cmpgt_epi8Dv2_xS_(<2 x i64> noundef %448, <2 x i64> noundef %449)
  %451 = call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %447, <2 x i64> noundef %450)
  store <2 x i64> %451, ptr %65, align 16, !tbaa !11
  %452 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %453 = load <2 x i64>, ptr %66, align 16, !tbaa !11
  %454 = call noundef <2 x i64> @_ZL12_mm_max_epu8Dv2_xS_(<2 x i64> noundef %452, <2 x i64> noundef %453)
  store <2 x i64> %454, ptr %65, align 16, !tbaa !11
  %455 = load <2 x i64>, ptr %67, align 16, !tbaa !11
  %456 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %457 = call noundef <2 x i64> @_ZL14_mm_cmpgt_epi8Dv2_xS_(<2 x i64> noundef %455, <2 x i64> noundef %456)
  store <2 x i64> %457, ptr %71, align 16, !tbaa !11
  %458 = load <2 x i64>, ptr %71, align 16, !tbaa !11
  %459 = load <2 x i64>, ptr %64, align 16, !tbaa !11
  %460 = call noundef <2 x i64> @_ZL16_mm_andnot_si128Dv2_xS_(<2 x i64> noundef %458, <2 x i64> noundef %459)
  %461 = load <2 x i64>, ptr %71, align 16, !tbaa !11
  %462 = load <2 x i64>, ptr %50, align 16, !tbaa !11
  %463 = call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %461, <2 x i64> noundef %462)
  %464 = call noundef <2 x i64> @_ZL12_mm_or_si128Dv2_xS_(<2 x i64> noundef %460, <2 x i64> noundef %463)
  store <2 x i64> %464, ptr %64, align 16, !tbaa !11
  %465 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %466 = load <2 x i64>, ptr %67, align 16, !tbaa !11
  %467 = call noundef <2 x i64> @_ZL12_mm_max_epu8Dv2_xS_(<2 x i64> noundef %465, <2 x i64> noundef %466)
  store <2 x i64> %467, ptr %65, align 16, !tbaa !11
  %468 = load ptr, ptr %40, align 8, !tbaa !5
  %469 = load i32, ptr %28, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds <2 x i64>, ptr %468, i64 %470
  %472 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %473 = load <2 x i64>, ptr %69, align 16, !tbaa !11
  %474 = call noundef <2 x i64> @_ZL12_mm_sub_epi8Dv2_xS_(<2 x i64> noundef %472, <2 x i64> noundef %473)
  call void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef %471, <2 x i64> noundef %474)
  %475 = load ptr, ptr %41, align 8, !tbaa !5
  %476 = load i32, ptr %28, align 4, !tbaa !9
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds <2 x i64>, ptr %475, i64 %477
  %479 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %480 = load <2 x i64>, ptr %70, align 16, !tbaa !11
  %481 = call noundef <2 x i64> @_ZL12_mm_sub_epi8Dv2_xS_(<2 x i64> noundef %479, <2 x i64> noundef %480)
  call void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef %478, <2 x i64> noundef %481)
  %482 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %483 = load <2 x i64>, ptr %46, align 16, !tbaa !11
  %484 = call noundef <2 x i64> @_ZL12_mm_sub_epi8Dv2_xS_(<2 x i64> noundef %482, <2 x i64> noundef %483)
  store <2 x i64> %484, ptr %65, align 16, !tbaa !11
  %485 = load <2 x i64>, ptr %66, align 16, !tbaa !11
  %486 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %487 = call noundef <2 x i64> @_ZL12_mm_sub_epi8Dv2_xS_(<2 x i64> noundef %485, <2 x i64> noundef %486)
  store <2 x i64> %487, ptr %66, align 16, !tbaa !11
  %488 = load <2 x i64>, ptr %67, align 16, !tbaa !11
  %489 = load <2 x i64>, ptr %65, align 16, !tbaa !11
  %490 = call noundef <2 x i64> @_ZL12_mm_sub_epi8Dv2_xS_(<2 x i64> noundef %488, <2 x i64> noundef %489)
  store <2 x i64> %490, ptr %67, align 16, !tbaa !11
  %491 = load <2 x i64>, ptr %66, align 16, !tbaa !11
  %492 = load <2 x i64>, ptr %48, align 16, !tbaa !11
  %493 = call noundef <2 x i64> @_ZL14_mm_cmpgt_epi8Dv2_xS_(<2 x i64> noundef %491, <2 x i64> noundef %492)
  store <2 x i64> %493, ptr %71, align 16, !tbaa !11
  %494 = load <2 x i64>, ptr %64, align 16, !tbaa !11
  %495 = load <2 x i64>, ptr %51, align 16, !tbaa !11
  %496 = load <2 x i64>, ptr %71, align 16, !tbaa !11
  %497 = call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %495, <2 x i64> noundef %496)
  %498 = call noundef <2 x i64> @_ZL12_mm_or_si128Dv2_xS_(<2 x i64> noundef %494, <2 x i64> noundef %497)
  store <2 x i64> %498, ptr %64, align 16, !tbaa !11
  %499 = load ptr, ptr %42, align 8, !tbaa !5
  %500 = load i32, ptr %28, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds <2 x i64>, ptr %499, i64 %501
  %503 = load <2 x i64>, ptr %66, align 16, !tbaa !11
  %504 = load <2 x i64>, ptr %71, align 16, !tbaa !11
  %505 = call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %503, <2 x i64> noundef %504)
  call void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef %502, <2 x i64> noundef %505)
  %506 = load <2 x i64>, ptr %67, align 16, !tbaa !11
  %507 = load <2 x i64>, ptr %48, align 16, !tbaa !11
  %508 = call noundef <2 x i64> @_ZL14_mm_cmpgt_epi8Dv2_xS_(<2 x i64> noundef %506, <2 x i64> noundef %507)
  store <2 x i64> %508, ptr %71, align 16, !tbaa !11
  %509 = load <2 x i64>, ptr %64, align 16, !tbaa !11
  %510 = load <2 x i64>, ptr %52, align 16, !tbaa !11
  %511 = load <2 x i64>, ptr %71, align 16, !tbaa !11
  %512 = call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %510, <2 x i64> noundef %511)
  %513 = call noundef <2 x i64> @_ZL12_mm_or_si128Dv2_xS_(<2 x i64> noundef %509, <2 x i64> noundef %512)
  store <2 x i64> %513, ptr %64, align 16, !tbaa !11
  %514 = load ptr, ptr %43, align 8, !tbaa !5
  %515 = load i32, ptr %28, align 4, !tbaa !9
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds <2 x i64>, ptr %514, i64 %516
  %518 = load <2 x i64>, ptr %67, align 16, !tbaa !11
  %519 = load <2 x i64>, ptr %71, align 16, !tbaa !11
  %520 = call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %518, <2 x i64> noundef %519)
  call void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef %517, <2 x i64> noundef %520)
  %521 = load ptr, ptr %63, align 8, !tbaa !5
  %522 = load i32, ptr %28, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds <2 x i64>, ptr %521, i64 %523
  %525 = load <2 x i64>, ptr %64, align 16, !tbaa !11
  call void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef %524, <2 x i64> noundef %525)
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #6
  br label %526

526:                                              ; preds = %387
  %527 = load i32, ptr %28, align 4, !tbaa !9
  %528 = add nsw i32 %527, 1
  store i32 %528, ptr %28, align 4, !tbaa !9
  br label %383, !llvm.loop !15

529:                                              ; preds = %383
  %530 = load i32, ptr %27, align 4, !tbaa !9
  %531 = icmp sgt i32 %530, 0
  br i1 %531, label %532, label %573

532:                                              ; preds = %529
  %533 = load i32, ptr %36, align 4, !tbaa !9
  %534 = load i32, ptr %55, align 4, !tbaa !9
  %535 = icmp sge i32 %533, %534
  br i1 %535, label %536, label %555

536:                                              ; preds = %532
  %537 = load i32, ptr %36, align 4, !tbaa !9
  %538 = load i32, ptr %56, align 4, !tbaa !9
  %539 = icmp sle i32 %537, %538
  br i1 %539, label %540, label %555

540:                                              ; preds = %536
  %541 = load ptr, ptr %41, align 8, !tbaa !5
  %542 = load i32, ptr %36, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds i8, ptr %541, i64 %543
  %545 = load i8, ptr %544, align 1, !tbaa !11
  %546 = zext i8 %545 to i32
  %547 = load i8, ptr %21, align 1, !tbaa !11
  %548 = sext i8 %547 to i32
  %549 = load i8, ptr %22, align 1, !tbaa !11
  %550 = sext i8 %549 to i32
  %551 = add nsw i32 %548, %550
  %552 = sub nsw i32 %546, %551
  %553 = load i32, ptr %35, align 4, !tbaa !9
  %554 = add nsw i32 %553, %552
  store i32 %554, ptr %35, align 4, !tbaa !9
  br label %572

555:                                              ; preds = %536, %532
  %556 = load i32, ptr %36, align 4, !tbaa !9
  %557 = add nsw i32 %556, 1
  store i32 %557, ptr %36, align 4, !tbaa !9
  %558 = load ptr, ptr %40, align 8, !tbaa !5
  %559 = load i32, ptr %36, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds i8, ptr %558, i64 %560
  %562 = load i8, ptr %561, align 1, !tbaa !11
  %563 = zext i8 %562 to i32
  %564 = load i8, ptr %21, align 1, !tbaa !11
  %565 = sext i8 %564 to i32
  %566 = load i8, ptr %22, align 1, !tbaa !11
  %567 = sext i8 %566 to i32
  %568 = add nsw i32 %565, %567
  %569 = sub nsw i32 %563, %568
  %570 = load i32, ptr %35, align 4, !tbaa !9
  %571 = add nsw i32 %570, %569
  store i32 %571, ptr %35, align 4, !tbaa !9
  br label %572

572:                                              ; preds = %555, %540
  br label %585

573:                                              ; preds = %529
  %574 = load ptr, ptr %41, align 8, !tbaa !5
  %575 = getelementptr inbounds i8, ptr %574, i64 0
  %576 = load i8, ptr %575, align 1, !tbaa !11
  %577 = zext i8 %576 to i32
  %578 = load i8, ptr %21, align 1, !tbaa !11
  %579 = sext i8 %578 to i32
  %580 = load i8, ptr %22, align 1, !tbaa !11
  %581 = sext i8 %580 to i32
  %582 = add nsw i32 %579, %581
  %583 = mul nsw i32 2, %582
  %584 = sub nsw i32 %577, %583
  store i32 %584, ptr %35, align 4, !tbaa !9
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %585

585:                                              ; preds = %573, %572
  %586 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %586, ptr %33, align 4, !tbaa !9
  %587 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %587, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  br label %588

588:                                              ; preds = %585
  %589 = load i32, ptr %27, align 4, !tbaa !9
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr %27, align 4, !tbaa !9
  br label %194, !llvm.loop !16

591:                                              ; preds = %194
  %592 = load ptr, ptr %38, align 8, !tbaa !5
  call void @seq_free(ptr noundef %592)
  %593 = load ptr, ptr %37, align 8, !tbaa !5
  call void @seq_free(ptr noundef %593)
  %594 = load ptr, ptr %14, align 8, !tbaa !5
  %595 = load ptr, ptr %45, align 8, !tbaa !5
  %596 = load ptr, ptr %31, align 8, !tbaa !5
  %597 = load i32, ptr %29, align 4, !tbaa !9
  %598 = load i32, ptr %17, align 4, !tbaa !9
  %599 = sub nsw i32 %598, 1
  %600 = load i32, ptr %15, align 4, !tbaa !9
  %601 = sub nsw i32 %600, 1
  %602 = load ptr, ptr %24, align 8, !tbaa !5
  %603 = load ptr, ptr %25, align 8, !tbaa !5
  %604 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZL13ksw_backtrackPviiiPKhPKiS3_iiiPiS4_PPj(ptr noundef %594, i32 noundef 1, i32 noundef 0, i32 noundef 0, ptr noundef %595, ptr noundef %596, ptr noundef null, i32 noundef %597, i32 noundef %599, i32 noundef %601, ptr noundef %602, ptr noundef %603, ptr noundef %604)
  %605 = load ptr, ptr %39, align 8, !tbaa !5
  call void @seq_free(ptr noundef %605)
  %606 = load ptr, ptr %31, align 8, !tbaa !5
  call void @seq_free(ptr noundef %606)
  %607 = load i32, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  ret i32 %607
}

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

; Function Attrs: alwaysinline mustprogress uwtable
declare hidden noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext) #2

declare ptr @seq_calloc_atomic(i64 noundef, i64 noundef) #3

declare ptr @seq_alloc_atomic(i64 noundef) #3

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

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare hidden void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef, <2 x i64> noundef) #4

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

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

declare void @seq_free(ptr noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZL13ksw_backtrackPviiiPKhPKiS3_iiiPiS4_PPj(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #5

attributes #0 = { mustprogress 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 mustprogress 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 = { "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 = { alwaysinline mustprogress 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 #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "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 #6 = { 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !13}


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

; Function Attrs: mustprogress uwtable
define dso_local i32 @ksw_gg2_sse(ptr noundef %0, i32 noundef %1, ptr nocapture noundef readonly %2, i32 noundef %3, ptr nocapture noundef readonly %4, i8 noundef signext %5, ptr nocapture noundef readonly %6, i8 noundef signext %7, i8 noundef signext %8, i32 noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12) local_unnamed_addr #0 {
  %14 = tail call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext 0)
  %15 = tail call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext %7)
  %16 = sext i8 %7 to i32
  %17 = sext i8 %8 to i32
  %18 = add nsw i32 %17, %16
  %19 = shl nsw i32 %18, 1
  %20 = trunc i32 %19 to i8
  %21 = tail call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext %20)
  %22 = tail call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext 1)
  %23 = tail call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext 2)
  %24 = tail call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext 8)
  %25 = tail call noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext 16)
  %26 = icmp slt i32 %9, 0
  %27 = tail call i32 @llvm.smax.i32(i32 %3, i32 %1)
  %.0 = select i1 %26, i32 %27, i32 %9
  %28 = add nsw i32 %.0, 1
  %29 = tail call i32 @llvm.smin.i32(i32 %28, i32 %3)
  %30 = add nsw i32 %3, 15
  %31 = sdiv i32 %30, 16
  %32 = add nsw i32 %29, 15
  %33 = sdiv i32 %32, 16
  %34 = add nsw i32 %33, 1
  %35 = mul nsw i32 %31, 5
  %36 = add nsw i32 %35, 1
  %37 = sext i32 %36 to i64
  %38 = tail call ptr @seq_calloc_atomic(i64 noundef %37, i64 noundef 16)
  %39 = ptrtoint ptr %38 to i64
  %40 = add i64 %39, 15
  %41 = and i64 %40, -16
  %42 = inttoptr i64 %41 to ptr
  %43 = sext i32 %31 to i64
  %44 = getelementptr inbounds <2 x i64>, ptr %42, i64 %43
  %45 = getelementptr inbounds <2 x i64>, ptr %44, i64 %43
  %46 = getelementptr inbounds <2 x i64>, ptr %45, i64 %43
  %47 = getelementptr inbounds <2 x i64>, ptr %46, i64 %43
  %48 = sext i32 %1 to i64
  %49 = tail call ptr @seq_calloc_atomic(i64 noundef %48, i64 noundef 1)
  %50 = add i32 %3, -1
  %51 = add i32 %50, %1
  %52 = shl i32 %51, 4
  %53 = mul i32 %52, %34
  %54 = add i32 %53, 16
  %55 = sext i32 %54 to i64
  %56 = tail call ptr @seq_alloc_atomic(i64 noundef %55)
  %57 = ptrtoint ptr %56 to i64
  %58 = add i64 %57, 15
  %59 = and i64 %58, -16
  %60 = inttoptr i64 %59 to ptr
  %61 = sext i32 %51 to i64
  %62 = shl nsw i64 %61, 2
  %63 = tail call ptr @seq_alloc_atomic(i64 noundef %62)
  %64 = icmp sgt i32 %1, 0
  br i1 %64, label %iter.check, label %.preheader

iter.check:                                       ; preds = %13
  %wide.trip.count = zext nneg i32 %1 to i64
  %invariant.gep = getelementptr i8, ptr %2, i64 %48
  %min.iters.check = icmp ult i32 %1, 8
  br i1 %min.iters.check, label %.lr.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %iter.check
  %scevgep = getelementptr i8, ptr %49, i64 %wide.trip.count
  %65 = sub nsw i64 %48, %wide.trip.count
  %scevgep288 = getelementptr i8, ptr %2, i64 %65
  %bound0 = icmp ult ptr %49, %invariant.gep
  %bound1 = icmp ult ptr %scevgep288, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph.preheader, label %vector.main.loop.iter.check

vector.main.loop.iter.check:                      ; preds = %vector.memcheck
  %min.iters.check289 = icmp ult i32 %1, 32
  br i1 %min.iters.check289, label %vec.epilog.ph, label %vector.ph

vector.ph:                                        ; preds = %vector.main.loop.iter.check
  %n.vec = and i64 %wide.trip.count, 2147483616
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %66 = xor i64 %index, -1
  %67 = getelementptr i8, ptr %invariant.gep, i64 %66
  %68 = getelementptr i8, ptr %67, i64 -15
  %69 = getelementptr i8, ptr %67, i64 -31
  %wide.load = load <16 x i8>, ptr %68, align 1, !tbaa !5, !alias.scope !8
  %reverse = shufflevector <16 x i8> %wide.load, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %wide.load290 = load <16 x i8>, ptr %69, align 1, !tbaa !5, !alias.scope !8
  %reverse291 = shufflevector <16 x i8> %wide.load290, <16 x i8> poison, <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %70 = getelementptr inbounds i8, ptr %49, i64 %index
  %71 = getelementptr inbounds i8, ptr %70, i64 16
  store <16 x i8> %reverse, ptr %70, align 1, !tbaa !5, !alias.scope !11, !noalias !8
  store <16 x i8> %reverse291, ptr %71, align 1, !tbaa !5, !alias.scope !11, !noalias !8
  %index.next = add nuw i64 %index, 32
  %72 = icmp eq i64 %index.next, %n.vec
  br i1 %72, label %middle.block, label %vector.body, !llvm.loop !13

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %.preheader, label %vec.epilog.iter.check

vec.epilog.iter.check:                            ; preds = %middle.block
  %n.vec.remaining = and i64 %wide.trip.count, 24
  %min.epilog.iters.check = icmp eq i64 %n.vec.remaining, 0
  br i1 %min.epilog.iters.check, label %.lr.ph.preheader, label %vec.epilog.ph

.lr.ph.preheader:                                 ; preds = %vec.epilog.middle.block, %vector.memcheck, %iter.check, %vec.epilog.iter.check
  %indvars.iv.ph = phi i64 [ 0, %iter.check ], [ 0, %vector.memcheck ], [ %n.vec, %vec.epilog.iter.check ], [ %n.vec293, %vec.epilog.middle.block ]
  %xtraiter = and i64 %wide.trip.count, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader, %.lr.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.prol ], [ %indvars.iv.ph, %.lr.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader ]
  %73 = xor i64 %indvars.iv.prol, -1
  %gep.prol = getelementptr i8, ptr %invariant.gep, i64 %73
  %74 = load i8, ptr %gep.prol, align 1, !tbaa !5
  %75 = getelementptr inbounds i8, ptr %49, i64 %indvars.iv.prol
  store i8 %74, ptr %75, align 1, !tbaa !5
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol, !llvm.loop !17

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %76 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %77 = icmp ugt i64 %76, -4
  br i1 %77, label %.preheader, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.prol.loopexit
  %invariant.gep301 = getelementptr i8, ptr %49, i64 1
  %invariant.gep303 = getelementptr i8, ptr %49, i64 2
  %invariant.gep305 = getelementptr i8, ptr %49, i64 3
  br label %.lr.ph

vec.epilog.ph:                                    ; preds = %vector.main.loop.iter.check, %vec.epilog.iter.check
  %vec.epilog.resume.val = phi i64 [ %n.vec, %vec.epilog.iter.check ], [ 0, %vector.main.loop.iter.check ]
  %n.vec293 = and i64 %wide.trip.count, 2147483640
  %invariant.gep299 = getelementptr i8, ptr %invariant.gep, i64 -7
  br label %vec.epilog.vector.body

vec.epilog.vector.body:                           ; preds = %vec.epilog.vector.body, %vec.epilog.ph
  %index294 = phi i64 [ %vec.epilog.resume.val, %vec.epilog.ph ], [ %index.next297, %vec.epilog.vector.body ]
  %78 = xor i64 %index294, -1
  %gep300 = getelementptr i8, ptr %invariant.gep299, i64 %78
  %wide.load295 = load <8 x i8>, ptr %gep300, align 1, !tbaa !5, !alias.scope !19
  %reverse296 = shufflevector <8 x i8> %wide.load295, <8 x i8> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
  %79 = getelementptr inbounds i8, ptr %49, i64 %index294
  store <8 x i8> %reverse296, ptr %79, align 1, !tbaa !5, !alias.scope !22, !noalias !19
  %index.next297 = add nuw i64 %index294, 8
  %80 = icmp eq i64 %index.next297, %n.vec293
  br i1 %80, label %vec.epilog.middle.block, label %vec.epilog.vector.body, !llvm.loop !24

vec.epilog.middle.block:                          ; preds = %vec.epilog.vector.body
  %cmp.n298 = icmp eq i64 %n.vec293, %wide.trip.count
  br i1 %cmp.n298, label %.preheader, label %.lr.ph.preheader

.preheader:                                       ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block, %vec.epilog.middle.block, %13
  %81 = icmp sgt i32 %51, 0
  br i1 %81, label %.lr.ph273, label %._crit_edge274

.lr.ph273:                                        ; preds = %.preheader
  %82 = sext i8 %5 to i64
  %83 = sext i32 %34 to i64
  %wide.trip.count286 = zext nneg i32 %51 to i64
  br label %93

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ %indvars.iv.unr, %.lr.ph.preheader.new ], [ %indvars.iv.next.3, %.lr.ph ]
  %84 = xor i64 %indvars.iv, -1
  %gep = getelementptr i8, ptr %invariant.gep, i64 %84
  %85 = load i8, ptr %gep, align 1, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %49, i64 %indvars.iv
  store i8 %85, ptr %86, align 1, !tbaa !5
  %87 = sub i64 -2, %indvars.iv
  %gep.1 = getelementptr i8, ptr %invariant.gep, i64 %87
  %88 = load i8, ptr %gep.1, align 1, !tbaa !5
  %gep302 = getelementptr i8, ptr %invariant.gep301, i64 %indvars.iv
  store i8 %88, ptr %gep302, align 1, !tbaa !5
  %89 = sub i64 -3, %indvars.iv
  %gep.2 = getelementptr i8, ptr %invariant.gep, i64 %89
  %90 = load i8, ptr %gep.2, align 1, !tbaa !5
  %gep304 = getelementptr i8, ptr %invariant.gep303, i64 %indvars.iv
  store i8 %90, ptr %gep304, align 1, !tbaa !5
  %91 = sub i64 -4, %indvars.iv
  %gep.3 = getelementptr i8, ptr %invariant.gep, i64 %91
  %92 = load i8, ptr %gep.3, align 1, !tbaa !5
  %gep306 = getelementptr i8, ptr %invariant.gep305, i64 %indvars.iv
  store i8 %92, ptr %gep306, align 1, !tbaa !5
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %.preheader, label %.lr.ph, !llvm.loop !25

93:                                               ; preds = %.lr.ph273, %232
  %indvars.iv283 = phi i64 [ 0, %.lr.ph273 ], [ %indvars.iv.next284, %232 ]
  %.0224271 = phi i32 [ -1, %.lr.ph273 ], [ %103, %232 ]
  %.0225270 = phi i32 [ -1, %.lr.ph273 ], [ %107, %232 ]
  %.0226269 = phi i32 [ 0, %.lr.ph273 ], [ %.1227, %232 ]
  %.0228268 = phi i32 [ 0, %.lr.ph273 ], [ %.1229, %232 ]
  %94 = sub nsw i64 %indvars.iv283, %48
  %.inv = icmp slt i64 %94, 0
  %95 = trunc i64 %94 to i32
  %96 = add i32 %95, 1
  %spec.select = select i1 %.inv, i32 0, i32 %96
  %97 = trunc nuw nsw i64 %indvars.iv283 to i32
  %.0236 = tail call i32 @llvm.smin.i32(i32 %50, i32 %97)
  %reass.sub = sub i32 %97, %.0
  %98 = add i32 %reass.sub, 1
  %99 = ashr i32 %98, 1
  %.1231 = tail call i32 @llvm.smax.i32(i32 %spec.select, i32 %99)
  %100 = trunc i64 %indvars.iv283 to i32
  %101 = add i32 %.0, %100
  %102 = ashr i32 %101, 1
  %.1237 = tail call i32 @llvm.smin.i32(i32 %.0236, i32 %102)
  %103 = and i32 %.1231, -16
  %104 = add nsw i32 %.1237, 16
  %105 = sdiv i32 %104, 16
  %106 = shl nsw i32 %105, 4
  %107 = add nsw i32 %106, -1
  %108 = getelementptr inbounds i32, ptr %63, i64 %indvars.iv283
  store i32 %103, ptr %108, align 4, !tbaa !26
  %109 = icmp sgt i32 %103, 0
  br i1 %109, label %110, label %118

110:                                              ; preds = %93
  %111 = add nsw i32 %103, -1
  %.not247.not = icmp sle i32 %103, %.0224271
  %.not248 = icmp sgt i32 %111, %.0225270
  %or.cond = select i1 %.not247.not, i1 true, i1 %.not248
  br i1 %or.cond, label %120, label %112

112:                                              ; preds = %110
  %113 = zext nneg i32 %111 to i64
  %114 = getelementptr inbounds i8, ptr %45, i64 %113
  %115 = load i8, ptr %114, align 1, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %44, i64 %113
  %117 = load i8, ptr %116, align 1, !tbaa !5
  br label %120

118:                                              ; preds = %93
  %.not = icmp eq i64 %indvars.iv283, 0
  %119 = select i1 %.not, i8 0, i8 %7
  br label %120

120:                                              ; preds = %110, %112, %118
  %.0235 = phi i8 [ %115, %112 ], [ 0, %118 ], [ 0, %110 ]
  %.0234 = phi i8 [ %117, %112 ], [ %119, %118 ], [ 0, %110 ]
  %121 = sext i32 %106 to i64
  %.not249.not = icmp slt i64 %indvars.iv283, %121
  br i1 %.not249.not, label %122, label %126

122:                                              ; preds = %120
  %123 = getelementptr inbounds i8, ptr %46, i64 %indvars.iv283
  store i8 0, ptr %123, align 1, !tbaa !5
  %.not250 = icmp eq i64 %indvars.iv283, 0
  %124 = select i1 %.not250, i8 0, i8 %7
  %125 = getelementptr inbounds i8, ptr %42, i64 %indvars.iv283
  store i8 %124, ptr %125, align 1, !tbaa !5
  br label %126

126:                                              ; preds = %122, %120
  %.not251258 = icmp sgt i32 %.1231, %.1237
  br i1 %.not251258, label %._crit_edge, label %.lr.ph260

.lr.ph260:                                        ; preds = %126
  %127 = trunc i64 %indvars.iv283 to i32
  %128 = xor i32 %127, -1
  %129 = add i32 %128, %1
  %130 = tail call i32 @llvm.smax.i32(i32 %spec.select, i32 %99)
  %smax = sext i32 %130 to i64
  %131 = sext i32 %.1237 to i64
  br label %132

132:                                              ; preds = %.lr.ph260, %132
  %indvars.iv276 = phi i64 [ %smax, %.lr.ph260 ], [ %indvars.iv.next277, %132 ]
  %133 = getelementptr inbounds i8, ptr %4, i64 %indvars.iv276
  %134 = load i8, ptr %133, align 1, !tbaa !5
  %135 = zext i8 %134 to i64
  %136 = mul nsw i64 %135, %82
  %137 = trunc nsw i64 %indvars.iv276 to i32
  %138 = add i32 %129, %137
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds i8, ptr %49, i64 %139
  %141 = load i8, ptr %140, align 1, !tbaa !5
  %142 = zext i8 %141 to i64
  %143 = getelementptr i8, ptr %6, i64 %136
  %144 = getelementptr i8, ptr %143, i64 %142
  %145 = load i8, ptr %144, align 1, !tbaa !5
  %146 = getelementptr inbounds i8, ptr %47, i64 %indvars.iv276
  store i8 %145, ptr %146, align 1, !tbaa !5
  %indvars.iv.next277 = add nuw nsw i64 %indvars.iv276, 1
  %.not251.not = icmp slt i64 %indvars.iv276, %131
  br i1 %.not251.not, label %132, label %._crit_edge, !llvm.loop !28

._crit_edge:                                      ; preds = %132, %126
  %147 = sext i8 %.0235 to i32
  %148 = tail call noundef <2 x i64> @_ZL17_mm_cvtsi32_si128i(i32 noundef %147)
  %149 = sext i8 %.0234 to i32
  %150 = tail call noundef <2 x i64> @_ZL17_mm_cvtsi32_si128i(i32 noundef %149)
  %151 = lshr i32 %.1231, 4
  %152 = ashr i32 %107, 4
  %153 = mul nsw i64 %indvars.iv283, %83
  %154 = getelementptr inbounds <2 x i64>, ptr %60, i64 %153
  %155 = zext nneg i32 %151 to i64
  %156 = sub nsw i64 0, %155
  %157 = getelementptr inbounds <2 x i64>, ptr %154, i64 %156
  %.not252261 = icmp sgt i32 %151, %152
  br i1 %.not252261, label %._crit_edge267, label %.lr.ph266.preheader

.lr.ph266.preheader:                              ; preds = %._crit_edge
  %158 = lshr i32 %.1231, 4
  %159 = zext nneg i32 %158 to i64
  %160 = add nuw nsw i32 %152, 1
  %161 = add nuw nsw i32 %160, %158
  %162 = sub nsw i32 %161, %151
  %wide.trip.count281 = zext i32 %162 to i64
  br label %.lr.ph266

.lr.ph266:                                        ; preds = %.lr.ph266.preheader, %.lr.ph266
  %indvars.iv278 = phi i64 [ %159, %.lr.ph266.preheader ], [ %indvars.iv.next279, %.lr.ph266 ]
  %.0232263 = phi <2 x i64> [ %150, %.lr.ph266.preheader ], [ %178, %.lr.ph266 ]
  %.0233262 = phi <2 x i64> [ %148, %.lr.ph266.preheader ], [ %170, %.lr.ph266 ]
  %163 = getelementptr inbounds <2 x i64>, ptr %47, i64 %indvars.iv278
  %164 = tail call noundef <2 x i64> @_ZL14_mm_load_si128PKDv2_x(ptr noundef %163)
  %165 = tail call noundef <2 x i64> @_ZL12_mm_add_epi8Dv2_xS_(<2 x i64> noundef %164, <2 x i64> noundef %21)
  %166 = getelementptr inbounds <2 x i64>, ptr %45, i64 %indvars.iv278
  %167 = tail call noundef <2 x i64> @_ZL14_mm_load_si128PKDv2_x(ptr noundef %166)
  %168 = bitcast <2 x i64> %167 to <16 x i8>
  %169 = shufflevector <16 x i8> %168, <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 poison>, <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
  %170 = bitcast <16 x i8> %169 to <2 x i64>
  %171 = shufflevector <16 x i8> <i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 0>, <16 x i8> %168, <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
  %172 = bitcast <16 x i8> %171 to <2 x i64>
  %173 = tail call noundef <2 x i64> @_ZL12_mm_or_si128Dv2_xS_(<2 x i64> noundef %172, <2 x i64> noundef %.0233262)
  %174 = getelementptr inbounds <2 x i64>, ptr %44, i64 %indvars.iv278
  %175 = tail call noundef <2 x i64> @_ZL14_mm_load_si128PKDv2_x(ptr noundef %174)
  %176 = bitcast <2 x i64> %175 to <16 x i8>
  %177 = shufflevector <16 x i8> %176, <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 poison>, <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
  %178 = bitcast <16 x i8> %177 to <2 x i64>
  %179 = shufflevector <16 x i8> <i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 poison, i8 0>, <16 x i8> %176, <16 x i32> <i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30>
  %180 = bitcast <16 x i8> %179 to <2 x i64>
  %181 = tail call noundef <2 x i64> @_ZL12_mm_or_si128Dv2_xS_(<2 x i64> noundef %180, <2 x i64> noundef %.0232263)
  %182 = tail call noundef <2 x i64> @_ZL12_mm_add_epi8Dv2_xS_(<2 x i64> noundef %173, <2 x i64> noundef %181)
  %183 = getelementptr inbounds <2 x i64>, ptr %42, i64 %indvars.iv278
  %184 = tail call noundef <2 x i64> @_ZL14_mm_load_si128PKDv2_x(ptr noundef %183)
  %185 = getelementptr inbounds <2 x i64>, ptr %46, i64 %indvars.iv278
  %186 = tail call noundef <2 x i64> @_ZL14_mm_load_si128PKDv2_x(ptr noundef %185)
  %187 = tail call noundef <2 x i64> @_ZL12_mm_add_epi8Dv2_xS_(<2 x i64> noundef %186, <2 x i64> noundef %184)
  %188 = tail call noundef <2 x i64> @_ZL14_mm_cmpgt_epi8Dv2_xS_(<2 x i64> noundef %182, <2 x i64> noundef %165)
  %189 = tail call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %188, <2 x i64> noundef %22)
  %190 = tail call noundef <2 x i64> @_ZL14_mm_cmpgt_epi8Dv2_xS_(<2 x i64> noundef %165, <2 x i64> noundef %14)
  %191 = tail call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %165, <2 x i64> noundef %190)
  %192 = tail call noundef <2 x i64> @_ZL12_mm_max_epu8Dv2_xS_(<2 x i64> noundef %191, <2 x i64> noundef %182)
  %193 = tail call noundef <2 x i64> @_ZL14_mm_cmpgt_epi8Dv2_xS_(<2 x i64> noundef %187, <2 x i64> noundef %192)
  %194 = tail call noundef <2 x i64> @_ZL16_mm_andnot_si128Dv2_xS_(<2 x i64> noundef %193, <2 x i64> noundef %189)
  %195 = tail call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %193, <2 x i64> noundef %23)
  %196 = tail call noundef <2 x i64> @_ZL12_mm_or_si128Dv2_xS_(<2 x i64> noundef %194, <2 x i64> noundef %195)
  %197 = tail call noundef <2 x i64> @_ZL12_mm_max_epu8Dv2_xS_(<2 x i64> noundef %192, <2 x i64> noundef %187)
  %198 = tail call noundef <2 x i64> @_ZL12_mm_sub_epi8Dv2_xS_(<2 x i64> noundef %197, <2 x i64> noundef %181)
  tail call void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef %183, <2 x i64> noundef %198)
  %199 = tail call noundef <2 x i64> @_ZL12_mm_sub_epi8Dv2_xS_(<2 x i64> noundef %197, <2 x i64> noundef %184)
  tail call void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef %174, <2 x i64> noundef %199)
  %200 = tail call noundef <2 x i64> @_ZL12_mm_sub_epi8Dv2_xS_(<2 x i64> noundef %197, <2 x i64> noundef %15)
  %201 = tail call noundef <2 x i64> @_ZL12_mm_sub_epi8Dv2_xS_(<2 x i64> noundef %182, <2 x i64> noundef %200)
  %202 = tail call noundef <2 x i64> @_ZL12_mm_sub_epi8Dv2_xS_(<2 x i64> noundef %187, <2 x i64> noundef %200)
  %203 = tail call noundef <2 x i64> @_ZL14_mm_cmpgt_epi8Dv2_xS_(<2 x i64> noundef %201, <2 x i64> noundef %14)
  %204 = tail call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %24, <2 x i64> noundef %203)
  %205 = tail call noundef <2 x i64> @_ZL12_mm_or_si128Dv2_xS_(<2 x i64> noundef %196, <2 x i64> noundef %204)
  %206 = tail call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %201, <2 x i64> noundef %203)
  tail call void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef %166, <2 x i64> noundef %206)
  %207 = tail call noundef <2 x i64> @_ZL14_mm_cmpgt_epi8Dv2_xS_(<2 x i64> noundef %202, <2 x i64> noundef %14)
  %208 = tail call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %25, <2 x i64> noundef %207)
  %209 = tail call noundef <2 x i64> @_ZL12_mm_or_si128Dv2_xS_(<2 x i64> noundef %205, <2 x i64> noundef %208)
  %210 = tail call noundef <2 x i64> @_ZL13_mm_and_si128Dv2_xS_(<2 x i64> noundef %202, <2 x i64> noundef %207)
  tail call void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef %185, <2 x i64> noundef %210)
  %211 = getelementptr inbounds <2 x i64>, ptr %157, i64 %indvars.iv278
  tail call void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef %211, <2 x i64> noundef %209)
  %indvars.iv.next279 = add nuw nsw i64 %indvars.iv278, 1
  %exitcond282.not = icmp eq i64 %indvars.iv.next279, %wide.trip.count281
  br i1 %exitcond282.not, label %._crit_edge267, label %.lr.ph266, !llvm.loop !29

._crit_edge267:                                   ; preds = %.lr.ph266, %._crit_edge
  %.not253 = icmp eq i64 %indvars.iv283, 0
  br i1 %.not253, label %228, label %212

212:                                              ; preds = %._crit_edge267
  %.not254 = icmp slt i32 %.0228268, %.1231
  %.not255 = icmp sgt i32 %.0228268, %.1237
  %or.cond256 = or i1 %.not254, %.not255
  br i1 %or.cond256, label %220, label %213

213:                                              ; preds = %212
  %214 = zext nneg i32 %.0228268 to i64
  %215 = getelementptr inbounds i8, ptr %44, i64 %214
  %216 = load i8, ptr %215, align 1, !tbaa !5
  %217 = zext i8 %216 to i32
  %218 = sub i32 %.0226269, %18
  %219 = add i32 %218, %217
  br label %232

220:                                              ; preds = %212
  %221 = add nsw i32 %.0228268, 1
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds i8, ptr %42, i64 %222
  %224 = load i8, ptr %223, align 1, !tbaa !5
  %225 = zext i8 %224 to i32
  %226 = sub i32 %.0226269, %18
  %227 = add i32 %226, %225
  br label %232

228:                                              ; preds = %._crit_edge267
  %229 = load i8, ptr %44, align 16, !tbaa !5
  %230 = zext i8 %229 to i32
  %231 = sub nsw i32 %230, %19
  br label %232

232:                                              ; preds = %213, %220, %228
  %.1229 = phi i32 [ %.0228268, %213 ], [ %221, %220 ], [ 0, %228 ]
  %.1227 = phi i32 [ %219, %213 ], [ %227, %220 ], [ %231, %228 ]
  %indvars.iv.next284 = add nuw nsw i64 %indvars.iv283, 1
  %exitcond287.not = icmp eq i64 %indvars.iv.next284, %wide.trip.count286
  br i1 %exitcond287.not, label %._crit_edge274, label %93, !llvm.loop !30

._crit_edge274:                                   ; preds = %232, %.preheader
  %.0226.lcssa = phi i32 [ 0, %.preheader ], [ %.1227, %232 ]
  %233 = shl nsw i32 %34, 4
  tail call void @seq_free(ptr noundef %38)
  tail call void @seq_free(ptr noundef %49)
  %234 = add nsw i32 %1, -1
  tail call void @_ZL13ksw_backtrackPviiiPKhPKiS3_iiiPiS4_PPj(ptr noundef %0, i32 noundef 1, i32 noundef 0, i32 noundef 0, ptr noundef %60, ptr noundef %63, ptr noundef null, i32 noundef %233, i32 noundef %50, i32 noundef %234, ptr noundef %10, ptr noundef %11, ptr noundef %12)
  tail call void @seq_free(ptr noundef %56)
  tail call void @seq_free(ptr noundef %63)
  ret i32 %.0226.lcssa
}

; Function Attrs: alwaysinline mustprogress uwtable
declare hidden noundef <2 x i64> @_ZL13_mm_set1_epi8c(i8 noundef signext) local_unnamed_addr #1

declare ptr @seq_calloc_atomic(i64 noundef, i64 noundef) local_unnamed_addr #2

declare ptr @seq_alloc_atomic(i64 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare hidden void @_ZL15_mm_store_si128PDv2_xS_(ptr noundef, <2 x i64> noundef) local_unnamed_addr #3

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

declare void @seq_free(ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZL13ksw_backtrackPviiiPKhPKiS3_iiiPiS4_PPj(ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #5

attributes #0 = { mustprogress 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 mustprogress 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 #2 = { "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 mustprogress 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }

!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++ TBAA"}
!8 = !{!9}
!9 = distinct !{!9, !10}
!10 = distinct !{!10, !"LVerDomain"}
!11 = !{!12}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !14, !15, !16}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!"llvm.loop.isvectorized", i32 1}
!16 = !{!"llvm.loop.unroll.runtime.disable"}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.unroll.disable"}
!19 = !{!20}
!20 = distinct !{!20, !21}
!21 = distinct !{!21, !"LVerDomain"}
!22 = !{!23}
!23 = distinct !{!23, !21}
!24 = distinct !{!24, !14, !15, !16}
!25 = distinct !{!25, !14, !15}
!26 = !{!27, !27, i64 0}
!27 = !{!"int", !6, i64 0}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass