; LLVM IR from IlyaGrebnov/libbsc :: libbsc/coder/qlfc/qlfc.ll (Z18bsc_qlfc_transformPKhPhiS1_)

; 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 noundef ptr @_Z18bsc_qlfc_transformPKhPhiS1_(ptr noalias noundef %0, ptr noalias noundef %1, i32 noundef %2, ptr noalias noundef %3) #0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca [256 x i8], align 64
  %10 = alloca [256 x i8], align 64
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i32, align 4
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i8, align 1
  %30 = alloca i8, align 1
  %31 = alloca i32, align 4
  %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 i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 256, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 256, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #3
  store i64 0, ptr %11, align 8, !tbaa !11
  br label %41

41:                                               ; preds = %51, %4
  %42 = load i64, ptr %11, align 8, !tbaa !11
  %43 = icmp slt i64 %42, 256
  br i1 %43, label %45, label %44

44:                                               ; preds = %41
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #3
  br label %54

45:                                               ; preds = %41
  %46 = load i64, ptr %11, align 8, !tbaa !11
  %47 = sub nsw i64 %46, 128
  %48 = trunc i64 %47 to i8
  %49 = load i64, ptr %11, align 8, !tbaa !11
  %50 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %49
  store i8 %48, ptr %50, align 1, !tbaa !13
  br label %51

51:                                               ; preds = %45
  %52 = load i64, ptr %11, align 8, !tbaa !11
  %53 = add nsw i64 %52, 1
  store i64 %53, ptr %11, align 8, !tbaa !11
  br label %41, !llvm.loop !14

54:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #3
  store i64 0, ptr %12, align 8, !tbaa !11
  br label %55

55:                                               ; preds = %62, %54
  %56 = load i64, ptr %12, align 8, !tbaa !11
  %57 = icmp slt i64 %56, 256
  br i1 %57, label %59, label %58

58:                                               ; preds = %55
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  br label %65

59:                                               ; preds = %55
  %60 = load i64, ptr %12, align 8, !tbaa !11
  %61 = getelementptr inbounds [256 x i8], ptr %10, i64 0, i64 %60
  store i8 0, ptr %61, align 1, !tbaa !13
  br label %62

62:                                               ; preds = %59
  %63 = load i64, ptr %12, align 8, !tbaa !11
  %64 = add nsw i64 %63, 1
  store i64 %64, ptr %12, align 8, !tbaa !11
  br label %55, !llvm.loop !16

65:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  %66 = load i32, ptr %7, align 4, !tbaa !9
  %67 = sext i32 %66 to i64
  %68 = sub nsw i64 %67, 1
  store i64 %68, ptr %13, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  %69 = load i32, ptr %7, align 4, !tbaa !9
  %70 = sext i32 %69 to i64
  store i64 %70, ptr %14, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #3
  store i8 0, ptr %15, align 1, !tbaa !13
  br label %71

71:                                               ; preds = %481, %65
  %72 = load i64, ptr %13, align 8, !tbaa !11
  %73 = icmp sge i64 %72, 0
  br i1 %73, label %74, label %482

74:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #3
  %75 = load ptr, ptr %5, align 8, !tbaa !5
  %76 = load i64, ptr %13, align 8, !tbaa !11
  %77 = getelementptr inbounds i8, ptr %75, i64 %76
  %78 = load i8, ptr %77, align 1, !tbaa !13
  store i8 %78, ptr %16, align 1, !tbaa !13
  %79 = load ptr, ptr %5, align 8, !tbaa !5
  %80 = load i64, ptr %13, align 8, !tbaa !11
  %81 = load i8, ptr %16, align 1, !tbaa !13
  %82 = call noundef i64 @_Z23bsc_qlfc_transform_scanPKhlh(ptr noundef %79, i64 noundef %80, i8 noundef zeroext %81)
  store i64 %82, ptr %13, align 8, !tbaa !11
  %83 = load i64, ptr %13, align 8, !tbaa !11
  %84 = icmp slt i64 %83, 0
  br i1 %84, label %85, label %86

85:                                               ; preds = %74
  store i64 0, ptr %13, align 8, !tbaa !11
  store i32 8, ptr %17, align 4
  br label %479

86:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #3
  %87 = load ptr, ptr %5, align 8, !tbaa !5
  %88 = load i64, ptr %13, align 8, !tbaa !11
  %89 = getelementptr inbounds i8, ptr %87, i64 %88
  %90 = load i8, ptr %89, align 1, !tbaa !13
  store i8 %90, ptr %18, align 1, !tbaa !13
  %91 = load ptr, ptr %5, align 8, !tbaa !5
  %92 = load i64, ptr %13, align 8, !tbaa !11
  %93 = load i8, ptr %18, align 1, !tbaa !13
  %94 = call noundef i64 @_Z23bsc_qlfc_transform_scanPKhlh(ptr noundef %91, i64 noundef %92, i8 noundef zeroext %93)
  store i64 %94, ptr %13, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #3
  %95 = load i8, ptr %16, align 1, !tbaa !13
  %96 = zext i8 %95 to i64
  %97 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %96
  %98 = load i8, ptr %97, align 1, !tbaa !13
  store i8 %98, ptr %19, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #3
  %99 = load i8, ptr %18, align 1, !tbaa !13
  %100 = zext i8 %99 to i64
  %101 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %100
  %102 = load i8, ptr %101, align 1, !tbaa !13
  store i8 %102, ptr %20, align 1, !tbaa !13
  %103 = load i8, ptr %19, align 1, !tbaa !13
  %104 = sext i8 %103 to i32
  %105 = load i8, ptr %20, align 1, !tbaa !13
  %106 = sext i8 %105 to i32
  %107 = icmp sgt i32 %104, %106
  %108 = zext i1 %107 to i32
  %109 = load i8, ptr %20, align 1, !tbaa !13
  %110 = sext i8 %109 to i32
  %111 = add nsw i32 %110, %108
  %112 = trunc i32 %111 to i8
  store i8 %112, ptr %20, align 1, !tbaa !13
  %113 = load i8, ptr %19, align 1, !tbaa !13
  %114 = sext i8 %113 to i32
  %115 = add nsw i32 %114, 128
  %116 = trunc i32 %115 to i8
  %117 = load ptr, ptr %6, align 8, !tbaa !5
  %118 = load i64, ptr %14, align 8, !tbaa !11
  %119 = add nsw i64 %118, -1
  store i64 %119, ptr %14, align 8, !tbaa !11
  %120 = getelementptr inbounds i8, ptr %117, i64 %119
  store i8 %116, ptr %120, align 1, !tbaa !13
  %121 = load i8, ptr %16, align 1, !tbaa !13
  %122 = zext i8 %121 to i64
  %123 = getelementptr inbounds [256 x i8], ptr %10, i64 0, i64 %122
  %124 = load i8, ptr %123, align 1, !tbaa !13
  %125 = sext i8 %124 to i32
  %126 = icmp eq i32 %125, 0
  br i1 %126, label %127, label %136

127:                                              ; preds = %86
  %128 = load i8, ptr %16, align 1, !tbaa !13
  %129 = zext i8 %128 to i64
  %130 = getelementptr inbounds [256 x i8], ptr %10, i64 0, i64 %129
  store i8 1, ptr %130, align 1, !tbaa !13
  %131 = load i8, ptr %15, align 1, !tbaa !13
  %132 = add i8 %131, 1
  store i8 %132, ptr %15, align 1, !tbaa !13
  %133 = load ptr, ptr %6, align 8, !tbaa !5
  %134 = load i64, ptr %14, align 8, !tbaa !11
  %135 = getelementptr inbounds i8, ptr %133, i64 %134
  store i8 %131, ptr %135, align 1, !tbaa !13
  br label %136

136:                                              ; preds = %127, %86
  %137 = load i8, ptr %20, align 1, !tbaa !13
  %138 = sext i8 %137 to i32
  %139 = add nsw i32 %138, 128
  %140 = trunc i32 %139 to i8
  %141 = load ptr, ptr %6, align 8, !tbaa !5
  %142 = load i64, ptr %14, align 8, !tbaa !11
  %143 = add nsw i64 %142, -1
  store i64 %143, ptr %14, align 8, !tbaa !11
  %144 = getelementptr inbounds i8, ptr %141, i64 %143
  store i8 %140, ptr %144, align 1, !tbaa !13
  %145 = load i8, ptr %18, align 1, !tbaa !13
  %146 = zext i8 %145 to i64
  %147 = getelementptr inbounds [256 x i8], ptr %10, i64 0, i64 %146
  %148 = load i8, ptr %147, align 1, !tbaa !13
  %149 = sext i8 %148 to i32
  %150 = icmp eq i32 %149, 0
  br i1 %150, label %151, label %160

151:                                              ; preds = %136
  %152 = load i8, ptr %18, align 1, !tbaa !13
  %153 = zext i8 %152 to i64
  %154 = getelementptr inbounds [256 x i8], ptr %10, i64 0, i64 %153
  store i8 1, ptr %154, align 1, !tbaa !13
  %155 = load i8, ptr %15, align 1, !tbaa !13
  %156 = add i8 %155, 1
  store i8 %156, ptr %15, align 1, !tbaa !13
  %157 = load ptr, ptr %6, align 8, !tbaa !5
  %158 = load i64, ptr %14, align 8, !tbaa !11
  %159 = getelementptr inbounds i8, ptr %157, i64 %158
  store i8 %155, ptr %159, align 1, !tbaa !13
  br label %160

160:                                              ; preds = %151, %136
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %196, %160
  %162 = load i32, ptr %21, align 4, !tbaa !9
  %163 = icmp slt i32 %162, 32
  br i1 %163, label %165, label %164

164:                                              ; preds = %161
  store i32 10, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  br label %199

165:                                              ; preds = %161
  %166 = load i8, ptr %19, align 1, !tbaa !13
  %167 = sext i8 %166 to i32
  %168 = load i32, ptr %21, align 4, !tbaa !9
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %169
  %171 = load i8, ptr %170, align 1, !tbaa !13
  %172 = sext i8 %171 to i32
  %173 = icmp sgt i32 %167, %172
  %174 = zext i1 %173 to i64
  %175 = select i1 %173, i8 -1, i8 0
  %176 = sext i8 %175 to i32
  %177 = load i8, ptr %20, align 1, !tbaa !13
  %178 = sext i8 %177 to i32
  %179 = load i32, ptr %21, align 4, !tbaa !9
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %180
  %182 = load i8, ptr %181, align 1, !tbaa !13
  %183 = sext i8 %182 to i32
  %184 = icmp sgt i32 %178, %183
  %185 = zext i1 %184 to i64
  %186 = select i1 %184, i8 -1, i8 0
  %187 = sext i8 %186 to i32
  %188 = add nsw i32 %176, %187
  %189 = load i32, ptr %21, align 4, !tbaa !9
  %190 = sext i32 %189 to i64
  %191 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %190
  %192 = load i8, ptr %191, align 1, !tbaa !13
  %193 = sext i8 %192 to i32
  %194 = sub nsw i32 %193, %188
  %195 = trunc i32 %194 to i8
  store i8 %195, ptr %191, align 1, !tbaa !13
  br label %196

196:                                              ; preds = %165
  %197 = load i32, ptr %21, align 4, !tbaa !9
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr %21, align 4, !tbaa !9
  br label %161, !llvm.loop !17

199:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  store i32 32, ptr %22, align 4, !tbaa !9
  br label %200

200:                                              ; preds = %235, %199
  %201 = load i32, ptr %22, align 4, !tbaa !9
  %202 = icmp slt i32 %201, 64
  br i1 %202, label %204, label %203

203:                                              ; preds = %200
  store i32 13, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  br label %238

204:                                              ; preds = %200
  %205 = load i8, ptr %19, align 1, !tbaa !13
  %206 = sext i8 %205 to i32
  %207 = load i32, ptr %22, align 4, !tbaa !9
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %208
  %210 = load i8, ptr %209, align 1, !tbaa !13
  %211 = sext i8 %210 to i32
  %212 = icmp sgt i32 %206, %211
  %213 = zext i1 %212 to i64
  %214 = select i1 %212, i8 -1, i8 0
  %215 = sext i8 %214 to i32
  %216 = load i8, ptr %20, align 1, !tbaa !13
  %217 = sext i8 %216 to i32
  %218 = load i32, ptr %22, align 4, !tbaa !9
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %219
  %221 = load i8, ptr %220, align 1, !tbaa !13
  %222 = sext i8 %221 to i32
  %223 = icmp sgt i32 %217, %222
  %224 = zext i1 %223 to i64
  %225 = select i1 %223, i8 -1, i8 0
  %226 = sext i8 %225 to i32
  %227 = add nsw i32 %215, %226
  %228 = load i32, ptr %22, align 4, !tbaa !9
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %229
  %231 = load i8, ptr %230, align 1, !tbaa !13
  %232 = sext i8 %231 to i32
  %233 = sub nsw i32 %232, %227
  %234 = trunc i32 %233 to i8
  store i8 %234, ptr %230, align 1, !tbaa !13
  br label %235

235:                                              ; preds = %204
  %236 = load i32, ptr %22, align 4, !tbaa !9
  %237 = add nsw i32 %236, 1
  store i32 %237, ptr %22, align 4, !tbaa !9
  br label %200, !llvm.loop !18

238:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  store i32 64, ptr %23, align 4, !tbaa !9
  br label %239

239:                                              ; preds = %274, %238
  %240 = load i32, ptr %23, align 4, !tbaa !9
  %241 = icmp slt i32 %240, 96
  br i1 %241, label %243, label %242

242:                                              ; preds = %239
  store i32 16, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  br label %277

243:                                              ; preds = %239
  %244 = load i8, ptr %19, align 1, !tbaa !13
  %245 = sext i8 %244 to i32
  %246 = load i32, ptr %23, align 4, !tbaa !9
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %247
  %249 = load i8, ptr %248, align 1, !tbaa !13
  %250 = sext i8 %249 to i32
  %251 = icmp sgt i32 %245, %250
  %252 = zext i1 %251 to i64
  %253 = select i1 %251, i8 -1, i8 0
  %254 = sext i8 %253 to i32
  %255 = load i8, ptr %20, align 1, !tbaa !13
  %256 = sext i8 %255 to i32
  %257 = load i32, ptr %23, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %258
  %260 = load i8, ptr %259, align 1, !tbaa !13
  %261 = sext i8 %260 to i32
  %262 = icmp sgt i32 %256, %261
  %263 = zext i1 %262 to i64
  %264 = select i1 %262, i8 -1, i8 0
  %265 = sext i8 %264 to i32
  %266 = add nsw i32 %254, %265
  %267 = load i32, ptr %23, align 4, !tbaa !9
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %268
  %270 = load i8, ptr %269, align 1, !tbaa !13
  %271 = sext i8 %270 to i32
  %272 = sub nsw i32 %271, %266
  %273 = trunc i32 %272 to i8
  store i8 %273, ptr %269, align 1, !tbaa !13
  br label %274

274:                                              ; preds = %243
  %275 = load i32, ptr %23, align 4, !tbaa !9
  %276 = add nsw i32 %275, 1
  store i32 %276, ptr %23, align 4, !tbaa !9
  br label %239, !llvm.loop !19

277:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  store i32 96, ptr %24, align 4, !tbaa !9
  br label %278

278:                                              ; preds = %313, %277
  %279 = load i32, ptr %24, align 4, !tbaa !9
  %280 = icmp slt i32 %279, 128
  br i1 %280, label %282, label %281

281:                                              ; preds = %278
  store i32 19, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  br label %316

282:                                              ; preds = %278
  %283 = load i8, ptr %19, align 1, !tbaa !13
  %284 = sext i8 %283 to i32
  %285 = load i32, ptr %24, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %286
  %288 = load i8, ptr %287, align 1, !tbaa !13
  %289 = sext i8 %288 to i32
  %290 = icmp sgt i32 %284, %289
  %291 = zext i1 %290 to i64
  %292 = select i1 %290, i8 -1, i8 0
  %293 = sext i8 %292 to i32
  %294 = load i8, ptr %20, align 1, !tbaa !13
  %295 = sext i8 %294 to i32
  %296 = load i32, ptr %24, align 4, !tbaa !9
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %297
  %299 = load i8, ptr %298, align 1, !tbaa !13
  %300 = sext i8 %299 to i32
  %301 = icmp sgt i32 %295, %300
  %302 = zext i1 %301 to i64
  %303 = select i1 %301, i8 -1, i8 0
  %304 = sext i8 %303 to i32
  %305 = add nsw i32 %293, %304
  %306 = load i32, ptr %24, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %307
  %309 = load i8, ptr %308, align 1, !tbaa !13
  %310 = sext i8 %309 to i32
  %311 = sub nsw i32 %310, %305
  %312 = trunc i32 %311 to i8
  store i8 %312, ptr %308, align 1, !tbaa !13
  br label %313

313:                                              ; preds = %282
  %314 = load i32, ptr %24, align 4, !tbaa !9
  %315 = add nsw i32 %314, 1
  store i32 %315, ptr %24, align 4, !tbaa !9
  br label %278, !llvm.loop !20

316:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  store i32 128, ptr %25, align 4, !tbaa !9
  br label %317

317:                                              ; preds = %352, %316
  %318 = load i32, ptr %25, align 4, !tbaa !9
  %319 = icmp slt i32 %318, 160
  br i1 %319, label %321, label %320

320:                                              ; preds = %317
  store i32 22, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  br label %355

321:                                              ; preds = %317
  %322 = load i8, ptr %19, align 1, !tbaa !13
  %323 = sext i8 %322 to i32
  %324 = load i32, ptr %25, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %325
  %327 = load i8, ptr %326, align 1, !tbaa !13
  %328 = sext i8 %327 to i32
  %329 = icmp sgt i32 %323, %328
  %330 = zext i1 %329 to i64
  %331 = select i1 %329, i8 -1, i8 0
  %332 = sext i8 %331 to i32
  %333 = load i8, ptr %20, align 1, !tbaa !13
  %334 = sext i8 %333 to i32
  %335 = load i32, ptr %25, align 4, !tbaa !9
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %336
  %338 = load i8, ptr %337, align 1, !tbaa !13
  %339 = sext i8 %338 to i32
  %340 = icmp sgt i32 %334, %339
  %341 = zext i1 %340 to i64
  %342 = select i1 %340, i8 -1, i8 0
  %343 = sext i8 %342 to i32
  %344 = add nsw i32 %332, %343
  %345 = load i32, ptr %25, align 4, !tbaa !9
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %346
  %348 = load i8, ptr %347, align 1, !tbaa !13
  %349 = sext i8 %348 to i32
  %350 = sub nsw i32 %349, %344
  %351 = trunc i32 %350 to i8
  store i8 %351, ptr %347, align 1, !tbaa !13
  br label %352

352:                                              ; preds = %321
  %353 = load i32, ptr %25, align 4, !tbaa !9
  %354 = add nsw i32 %353, 1
  store i32 %354, ptr %25, align 4, !tbaa !9
  br label %317, !llvm.loop !21

355:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  store i32 160, ptr %26, align 4, !tbaa !9
  br label %356

356:                                              ; preds = %391, %355
  %357 = load i32, ptr %26, align 4, !tbaa !9
  %358 = icmp slt i32 %357, 192
  br i1 %358, label %360, label %359

359:                                              ; preds = %356
  store i32 25, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  br label %394

360:                                              ; preds = %356
  %361 = load i8, ptr %19, align 1, !tbaa !13
  %362 = sext i8 %361 to i32
  %363 = load i32, ptr %26, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %364
  %366 = load i8, ptr %365, align 1, !tbaa !13
  %367 = sext i8 %366 to i32
  %368 = icmp sgt i32 %362, %367
  %369 = zext i1 %368 to i64
  %370 = select i1 %368, i8 -1, i8 0
  %371 = sext i8 %370 to i32
  %372 = load i8, ptr %20, align 1, !tbaa !13
  %373 = sext i8 %372 to i32
  %374 = load i32, ptr %26, align 4, !tbaa !9
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %375
  %377 = load i8, ptr %376, align 1, !tbaa !13
  %378 = sext i8 %377 to i32
  %379 = icmp sgt i32 %373, %378
  %380 = zext i1 %379 to i64
  %381 = select i1 %379, i8 -1, i8 0
  %382 = sext i8 %381 to i32
  %383 = add nsw i32 %371, %382
  %384 = load i32, ptr %26, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %385
  %387 = load i8, ptr %386, align 1, !tbaa !13
  %388 = sext i8 %387 to i32
  %389 = sub nsw i32 %388, %383
  %390 = trunc i32 %389 to i8
  store i8 %390, ptr %386, align 1, !tbaa !13
  br label %391

391:                                              ; preds = %360
  %392 = load i32, ptr %26, align 4, !tbaa !9
  %393 = add nsw i32 %392, 1
  store i32 %393, ptr %26, align 4, !tbaa !9
  br label %356, !llvm.loop !22

394:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  store i32 192, ptr %27, align 4, !tbaa !9
  br label %395

395:                                              ; preds = %430, %394
  %396 = load i32, ptr %27, align 4, !tbaa !9
  %397 = icmp slt i32 %396, 224
  br i1 %397, label %399, label %398

398:                                              ; preds = %395
  store i32 28, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  br label %433

399:                                              ; preds = %395
  %400 = load i8, ptr %19, align 1, !tbaa !13
  %401 = sext i8 %400 to i32
  %402 = load i32, ptr %27, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %403
  %405 = load i8, ptr %404, align 1, !tbaa !13
  %406 = sext i8 %405 to i32
  %407 = icmp sgt i32 %401, %406
  %408 = zext i1 %407 to i64
  %409 = select i1 %407, i8 -1, i8 0
  %410 = sext i8 %409 to i32
  %411 = load i8, ptr %20, align 1, !tbaa !13
  %412 = sext i8 %411 to i32
  %413 = load i32, ptr %27, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %414
  %416 = load i8, ptr %415, align 1, !tbaa !13
  %417 = sext i8 %416 to i32
  %418 = icmp sgt i32 %412, %417
  %419 = zext i1 %418 to i64
  %420 = select i1 %418, i8 -1, i8 0
  %421 = sext i8 %420 to i32
  %422 = add nsw i32 %410, %421
  %423 = load i32, ptr %27, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %424
  %426 = load i8, ptr %425, align 1, !tbaa !13
  %427 = sext i8 %426 to i32
  %428 = sub nsw i32 %427, %422
  %429 = trunc i32 %428 to i8
  store i8 %429, ptr %425, align 1, !tbaa !13
  br label %430

430:                                              ; preds = %399
  %431 = load i32, ptr %27, align 4, !tbaa !9
  %432 = add nsw i32 %431, 1
  store i32 %432, ptr %27, align 4, !tbaa !9
  br label %395, !llvm.loop !23

433:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  store i32 224, ptr %28, align 4, !tbaa !9
  br label %434

434:                                              ; preds = %469, %433
  %435 = load i32, ptr %28, align 4, !tbaa !9
  %436 = icmp slt i32 %435, 256
  br i1 %436, label %438, label %437

437:                                              ; preds = %434
  store i32 31, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  br label %472

438:                                              ; preds = %434
  %439 = load i8, ptr %19, align 1, !tbaa !13
  %440 = sext i8 %439 to i32
  %441 = load i32, ptr %28, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %442
  %444 = load i8, ptr %443, align 1, !tbaa !13
  %445 = sext i8 %444 to i32
  %446 = icmp sgt i32 %440, %445
  %447 = zext i1 %446 to i64
  %448 = select i1 %446, i8 -1, i8 0
  %449 = sext i8 %448 to i32
  %450 = load i8, ptr %20, align 1, !tbaa !13
  %451 = sext i8 %450 to i32
  %452 = load i32, ptr %28, align 4, !tbaa !9
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %453
  %455 = load i8, ptr %454, align 1, !tbaa !13
  %456 = sext i8 %455 to i32
  %457 = icmp sgt i32 %451, %456
  %458 = zext i1 %457 to i64
  %459 = select i1 %457, i8 -1, i8 0
  %460 = sext i8 %459 to i32
  %461 = add nsw i32 %449, %460
  %462 = load i32, ptr %28, align 4, !tbaa !9
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %463
  %465 = load i8, ptr %464, align 1, !tbaa !13
  %466 = sext i8 %465 to i32
  %467 = sub nsw i32 %466, %461
  %468 = trunc i32 %467 to i8
  store i8 %468, ptr %464, align 1, !tbaa !13
  br label %469

469:                                              ; preds = %438
  %470 = load i32, ptr %28, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr %28, align 4, !tbaa !9
  br label %434, !llvm.loop !24

472:                                              ; preds = %437
  %473 = load i8, ptr %16, align 1, !tbaa !13
  %474 = zext i8 %473 to i64
  %475 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %474
  store i8 -127, ptr %475, align 1, !tbaa !13
  %476 = load i8, ptr %18, align 1, !tbaa !13
  %477 = zext i8 %476 to i64
  %478 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %477
  store i8 -128, ptr %478, align 1, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #3
  store i32 0, ptr %17, align 4
  br label %479

479:                                              ; preds = %472, %85
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #3
  %480 = load i32, ptr %17, align 4
  switch i32 %480, label %785 [
    i32 0, label %481
    i32 8, label %482
  ]

481:                                              ; preds = %479
  br label %71, !llvm.loop !25

482:                                              ; preds = %479, %71
  %483 = load i64, ptr %13, align 8, !tbaa !11
  %484 = icmp sge i64 %483, 0
  br i1 %484, label %485, label %728

485:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #3
  %486 = load ptr, ptr %5, align 8, !tbaa !5
  %487 = getelementptr inbounds i8, ptr %486, i64 0
  %488 = load i8, ptr %487, align 1, !tbaa !13
  store i8 %488, ptr %29, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #3
  %489 = load i8, ptr %29, align 1, !tbaa !13
  %490 = zext i8 %489 to i64
  %491 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %490
  %492 = load i8, ptr %491, align 1, !tbaa !13
  store i8 %492, ptr %30, align 1, !tbaa !13
  %493 = load i8, ptr %30, align 1, !tbaa !13
  %494 = sext i8 %493 to i32
  %495 = add nsw i32 %494, 128
  %496 = trunc i32 %495 to i8
  %497 = load ptr, ptr %6, align 8, !tbaa !5
  %498 = load i64, ptr %14, align 8, !tbaa !11
  %499 = add nsw i64 %498, -1
  store i64 %499, ptr %14, align 8, !tbaa !11
  %500 = getelementptr inbounds i8, ptr %497, i64 %499
  store i8 %496, ptr %500, align 1, !tbaa !13
  %501 = load i8, ptr %29, align 1, !tbaa !13
  %502 = zext i8 %501 to i64
  %503 = getelementptr inbounds [256 x i8], ptr %10, i64 0, i64 %502
  %504 = load i8, ptr %503, align 1, !tbaa !13
  %505 = sext i8 %504 to i32
  %506 = icmp eq i32 %505, 0
  br i1 %506, label %507, label %516

507:                                              ; preds = %485
  %508 = load i8, ptr %29, align 1, !tbaa !13
  %509 = zext i8 %508 to i64
  %510 = getelementptr inbounds [256 x i8], ptr %10, i64 0, i64 %509
  store i8 1, ptr %510, align 1, !tbaa !13
  %511 = load i8, ptr %15, align 1, !tbaa !13
  %512 = add i8 %511, 1
  store i8 %512, ptr %15, align 1, !tbaa !13
  %513 = load ptr, ptr %6, align 8, !tbaa !5
  %514 = load i64, ptr %14, align 8, !tbaa !11
  %515 = getelementptr inbounds i8, ptr %513, i64 %514
  store i8 %511, ptr %515, align 1, !tbaa !13
  br label %516

516:                                              ; preds = %507, %485
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %517

517:                                              ; preds = %539, %516
  %518 = load i32, ptr %31, align 4, !tbaa !9
  %519 = icmp slt i32 %518, 32
  br i1 %519, label %521, label %520

520:                                              ; preds = %517
  store i32 34, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  br label %542

521:                                              ; preds = %517
  %522 = load i32, ptr %31, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %523
  %525 = load i8, ptr %524, align 1, !tbaa !13
  %526 = sext i8 %525 to i32
  %527 = load i8, ptr %30, align 1, !tbaa !13
  %528 = sext i8 %527 to i32
  %529 = icmp slt i32 %526, %528
  %530 = zext i1 %529 to i64
  %531 = select i1 %529, i32 -1, i32 0
  %532 = load i32, ptr %31, align 4, !tbaa !9
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %533
  %535 = load i8, ptr %534, align 1, !tbaa !13
  %536 = sext i8 %535 to i32
  %537 = sub nsw i32 %536, %531
  %538 = trunc i32 %537 to i8
  store i8 %538, ptr %534, align 1, !tbaa !13
  br label %539

539:                                              ; preds = %521
  %540 = load i32, ptr %31, align 4, !tbaa !9
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %31, align 4, !tbaa !9
  br label %517, !llvm.loop !26

542:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  store i32 32, ptr %32, align 4, !tbaa !9
  br label %543

543:                                              ; preds = %565, %542
  %544 = load i32, ptr %32, align 4, !tbaa !9
  %545 = icmp slt i32 %544, 64
  br i1 %545, label %547, label %546

546:                                              ; preds = %543
  store i32 37, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  br label %568

547:                                              ; preds = %543
  %548 = load i32, ptr %32, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %549
  %551 = load i8, ptr %550, align 1, !tbaa !13
  %552 = sext i8 %551 to i32
  %553 = load i8, ptr %30, align 1, !tbaa !13
  %554 = sext i8 %553 to i32
  %555 = icmp slt i32 %552, %554
  %556 = zext i1 %555 to i64
  %557 = select i1 %555, i32 -1, i32 0
  %558 = load i32, ptr %32, align 4, !tbaa !9
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %559
  %561 = load i8, ptr %560, align 1, !tbaa !13
  %562 = sext i8 %561 to i32
  %563 = sub nsw i32 %562, %557
  %564 = trunc i32 %563 to i8
  store i8 %564, ptr %560, align 1, !tbaa !13
  br label %565

565:                                              ; preds = %547
  %566 = load i32, ptr %32, align 4, !tbaa !9
  %567 = add nsw i32 %566, 1
  store i32 %567, ptr %32, align 4, !tbaa !9
  br label %543, !llvm.loop !27

568:                                              ; preds = %546
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  store i32 64, ptr %33, align 4, !tbaa !9
  br label %569

569:                                              ; preds = %591, %568
  %570 = load i32, ptr %33, align 4, !tbaa !9
  %571 = icmp slt i32 %570, 96
  br i1 %571, label %573, label %572

572:                                              ; preds = %569
  store i32 40, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  br label %594

573:                                              ; preds = %569
  %574 = load i32, ptr %33, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %575
  %577 = load i8, ptr %576, align 1, !tbaa !13
  %578 = sext i8 %577 to i32
  %579 = load i8, ptr %30, align 1, !tbaa !13
  %580 = sext i8 %579 to i32
  %581 = icmp slt i32 %578, %580
  %582 = zext i1 %581 to i64
  %583 = select i1 %581, i32 -1, i32 0
  %584 = load i32, ptr %33, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %585
  %587 = load i8, ptr %586, align 1, !tbaa !13
  %588 = sext i8 %587 to i32
  %589 = sub nsw i32 %588, %583
  %590 = trunc i32 %589 to i8
  store i8 %590, ptr %586, align 1, !tbaa !13
  br label %591

591:                                              ; preds = %573
  %592 = load i32, ptr %33, align 4, !tbaa !9
  %593 = add nsw i32 %592, 1
  store i32 %593, ptr %33, align 4, !tbaa !9
  br label %569, !llvm.loop !28

594:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  store i32 96, ptr %34, align 4, !tbaa !9
  br label %595

595:                                              ; preds = %617, %594
  %596 = load i32, ptr %34, align 4, !tbaa !9
  %597 = icmp slt i32 %596, 128
  br i1 %597, label %599, label %598

598:                                              ; preds = %595
  store i32 43, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  br label %620

599:                                              ; preds = %595
  %600 = load i32, ptr %34, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %601
  %603 = load i8, ptr %602, align 1, !tbaa !13
  %604 = sext i8 %603 to i32
  %605 = load i8, ptr %30, align 1, !tbaa !13
  %606 = sext i8 %605 to i32
  %607 = icmp slt i32 %604, %606
  %608 = zext i1 %607 to i64
  %609 = select i1 %607, i32 -1, i32 0
  %610 = load i32, ptr %34, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %611
  %613 = load i8, ptr %612, align 1, !tbaa !13
  %614 = sext i8 %613 to i32
  %615 = sub nsw i32 %614, %609
  %616 = trunc i32 %615 to i8
  store i8 %616, ptr %612, align 1, !tbaa !13
  br label %617

617:                                              ; preds = %599
  %618 = load i32, ptr %34, align 4, !tbaa !9
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %34, align 4, !tbaa !9
  br label %595, !llvm.loop !29

620:                                              ; preds = %598
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  store i32 128, ptr %35, align 4, !tbaa !9
  br label %621

621:                                              ; preds = %643, %620
  %622 = load i32, ptr %35, align 4, !tbaa !9
  %623 = icmp slt i32 %622, 160
  br i1 %623, label %625, label %624

624:                                              ; preds = %621
  store i32 46, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  br label %646

625:                                              ; preds = %621
  %626 = load i32, ptr %35, align 4, !tbaa !9
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %627
  %629 = load i8, ptr %628, align 1, !tbaa !13
  %630 = sext i8 %629 to i32
  %631 = load i8, ptr %30, align 1, !tbaa !13
  %632 = sext i8 %631 to i32
  %633 = icmp slt i32 %630, %632
  %634 = zext i1 %633 to i64
  %635 = select i1 %633, i32 -1, i32 0
  %636 = load i32, ptr %35, align 4, !tbaa !9
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %637
  %639 = load i8, ptr %638, align 1, !tbaa !13
  %640 = sext i8 %639 to i32
  %641 = sub nsw i32 %640, %635
  %642 = trunc i32 %641 to i8
  store i8 %642, ptr %638, align 1, !tbaa !13
  br label %643

643:                                              ; preds = %625
  %644 = load i32, ptr %35, align 4, !tbaa !9
  %645 = add nsw i32 %644, 1
  store i32 %645, ptr %35, align 4, !tbaa !9
  br label %621, !llvm.loop !30

646:                                              ; preds = %624
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  store i32 160, ptr %36, align 4, !tbaa !9
  br label %647

647:                                              ; preds = %669, %646
  %648 = load i32, ptr %36, align 4, !tbaa !9
  %649 = icmp slt i32 %648, 192
  br i1 %649, label %651, label %650

650:                                              ; preds = %647
  store i32 49, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  br label %672

651:                                              ; preds = %647
  %652 = load i32, ptr %36, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %653
  %655 = load i8, ptr %654, align 1, !tbaa !13
  %656 = sext i8 %655 to i32
  %657 = load i8, ptr %30, align 1, !tbaa !13
  %658 = sext i8 %657 to i32
  %659 = icmp slt i32 %656, %658
  %660 = zext i1 %659 to i64
  %661 = select i1 %659, i32 -1, i32 0
  %662 = load i32, ptr %36, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %663
  %665 = load i8, ptr %664, align 1, !tbaa !13
  %666 = sext i8 %665 to i32
  %667 = sub nsw i32 %666, %661
  %668 = trunc i32 %667 to i8
  store i8 %668, ptr %664, align 1, !tbaa !13
  br label %669

669:                                              ; preds = %651
  %670 = load i32, ptr %36, align 4, !tbaa !9
  %671 = add nsw i32 %670, 1
  store i32 %671, ptr %36, align 4, !tbaa !9
  br label %647, !llvm.loop !31

672:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  store i32 192, ptr %37, align 4, !tbaa !9
  br label %673

673:                                              ; preds = %695, %672
  %674 = load i32, ptr %37, align 4, !tbaa !9
  %675 = icmp slt i32 %674, 224
  br i1 %675, label %677, label %676

676:                                              ; preds = %673
  store i32 52, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  br label %698

677:                                              ; preds = %673
  %678 = load i32, ptr %37, align 4, !tbaa !9
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %679
  %681 = load i8, ptr %680, align 1, !tbaa !13
  %682 = sext i8 %681 to i32
  %683 = load i8, ptr %30, align 1, !tbaa !13
  %684 = sext i8 %683 to i32
  %685 = icmp slt i32 %682, %684
  %686 = zext i1 %685 to i64
  %687 = select i1 %685, i32 -1, i32 0
  %688 = load i32, ptr %37, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %689
  %691 = load i8, ptr %690, align 1, !tbaa !13
  %692 = sext i8 %691 to i32
  %693 = sub nsw i32 %692, %687
  %694 = trunc i32 %693 to i8
  store i8 %694, ptr %690, align 1, !tbaa !13
  br label %695

695:                                              ; preds = %677
  %696 = load i32, ptr %37, align 4, !tbaa !9
  %697 = add nsw i32 %696, 1
  store i32 %697, ptr %37, align 4, !tbaa !9
  br label %673, !llvm.loop !32

698:                                              ; preds = %676
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  store i32 224, ptr %38, align 4, !tbaa !9
  br label %699

699:                                              ; preds = %721, %698
  %700 = load i32, ptr %38, align 4, !tbaa !9
  %701 = icmp slt i32 %700, 256
  br i1 %701, label %703, label %702

702:                                              ; preds = %699
  store i32 55, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  br label %724

703:                                              ; preds = %699
  %704 = load i32, ptr %38, align 4, !tbaa !9
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %705
  %707 = load i8, ptr %706, align 1, !tbaa !13
  %708 = sext i8 %707 to i32
  %709 = load i8, ptr %30, align 1, !tbaa !13
  %710 = sext i8 %709 to i32
  %711 = icmp slt i32 %708, %710
  %712 = zext i1 %711 to i64
  %713 = select i1 %711, i32 -1, i32 0
  %714 = load i32, ptr %38, align 4, !tbaa !9
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %715
  %717 = load i8, ptr %716, align 1, !tbaa !13
  %718 = sext i8 %717 to i32
  %719 = sub nsw i32 %718, %713
  %720 = trunc i32 %719 to i8
  store i8 %720, ptr %716, align 1, !tbaa !13
  br label %721

721:                                              ; preds = %703
  %722 = load i32, ptr %38, align 4, !tbaa !9
  %723 = add nsw i32 %722, 1
  store i32 %723, ptr %38, align 4, !tbaa !9
  br label %699, !llvm.loop !33

724:                                              ; preds = %702
  %725 = load i8, ptr %29, align 1, !tbaa !13
  %726 = zext i8 %725 to i64
  %727 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %726
  store i8 -128, ptr %727, align 1, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #3
  br label %728

728:                                              ; preds = %724, %482
  %729 = load ptr, ptr %6, align 8, !tbaa !5
  %730 = load i32, ptr %7, align 4, !tbaa !9
  %731 = sub nsw i32 %730, 1
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds i8, ptr %729, i64 %732
  store i8 1, ptr %733, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  store i64 0, ptr %39, align 8, !tbaa !11
  br label %734

734:                                              ; preds = %749, %728
  %735 = load i64, ptr %39, align 8, !tbaa !11
  %736 = icmp slt i64 %735, 256
  br i1 %736, label %738, label %737

737:                                              ; preds = %734
  store i32 58, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  br label %752

738:                                              ; preds = %734
  %739 = load i64, ptr %39, align 8, !tbaa !11
  %740 = trunc i64 %739 to i8
  %741 = load ptr, ptr %8, align 8, !tbaa !5
  %742 = load i64, ptr %39, align 8, !tbaa !11
  %743 = getelementptr inbounds [256 x i8], ptr %9, i64 0, i64 %742
  %744 = load i8, ptr %743, align 1, !tbaa !13
  %745 = sext i8 %744 to i32
  %746 = add nsw i32 %745, 128
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds i8, ptr %741, i64 %747
  store i8 %740, ptr %748, align 1, !tbaa !13
  br label %749

749:                                              ; preds = %738
  %750 = load i64, ptr %39, align 8, !tbaa !11
  %751 = add nsw i64 %750, 1
  store i64 %751, ptr %39, align 8, !tbaa !11
  br label %734, !llvm.loop !34

752:                                              ; preds = %737
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  store i64 1, ptr %40, align 8, !tbaa !11
  br label %753

753:                                              ; preds = %777, %752
  %754 = load i64, ptr %40, align 8, !tbaa !11
  %755 = icmp slt i64 %754, 256
  br i1 %755, label %757, label %756

756:                                              ; preds = %753
  store i32 61, ptr %17, align 4
  br label %780

757:                                              ; preds = %753
  %758 = load ptr, ptr %8, align 8, !tbaa !5
  %759 = load i64, ptr %40, align 8, !tbaa !11
  %760 = getelementptr inbounds i8, ptr %758, i64 %759
  %761 = load i8, ptr %760, align 1, !tbaa !13
  %762 = zext i8 %761 to i64
  %763 = getelementptr inbounds [256 x i8], ptr %10, i64 0, i64 %762
  %764 = load i8, ptr %763, align 1, !tbaa !13
  %765 = sext i8 %764 to i32
  %766 = icmp eq i32 %765, 0
  br i1 %766, label %767, label %776

767:                                              ; preds = %757
  %768 = load ptr, ptr %8, align 8, !tbaa !5
  %769 = load i64, ptr %40, align 8, !tbaa !11
  %770 = sub nsw i64 %769, 1
  %771 = getelementptr inbounds i8, ptr %768, i64 %770
  %772 = load i8, ptr %771, align 1, !tbaa !13
  %773 = load ptr, ptr %8, align 8, !tbaa !5
  %774 = load i64, ptr %40, align 8, !tbaa !11
  %775 = getelementptr inbounds i8, ptr %773, i64 %774
  store i8 %772, ptr %775, align 1, !tbaa !13
  store i32 61, ptr %17, align 4
  br label %780

776:                                              ; preds = %757
  br label %777

777:                                              ; preds = %776
  %778 = load i64, ptr %40, align 8, !tbaa !11
  %779 = add nsw i64 %778, 1
  store i64 %779, ptr %40, align 8, !tbaa !11
  br label %753, !llvm.loop !35

780:                                              ; preds = %767, %756
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  br label %781

781:                                              ; preds = %780
  %782 = load ptr, ptr %6, align 8, !tbaa !5
  %783 = load i64, ptr %14, align 8, !tbaa !11
  %784 = getelementptr inbounds i8, ptr %782, i64 %783
  store i32 1, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 256, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 256, ptr %9) #3
  ret ptr %784

785:                                              ; preds = %479
  unreachable
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_Z23bsc_qlfc_transform_scanPKhlh(ptr noalias noundef, i64 noundef, i8 noundef zeroext) #2

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint 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 = { 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 = !{!12, !12, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = distinct !{!35, !15}


; 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 noundef ptr @_Z18bsc_qlfc_transformPKhPhiS1_(ptr noalias noundef %0, ptr noalias noundef writeonly %1, i32 noundef %2, ptr noalias nocapture noundef %3) local_unnamed_addr #0 {
vector.ph:
  %4 = alloca [256 x i8], align 64
  %5 = alloca [256 x i8], align 64
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %4) #4
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %5) #4
  store <16 x i8> <i8 -128, i8 -127, i8 -126, i8 -125, i8 -124, i8 -123, i8 -122, i8 -121, i8 -120, i8 -119, i8 -118, i8 -117, i8 -116, i8 -115, i8 -114, i8 -113>, ptr %4, align 64, !tbaa !5
  %6 = getelementptr inbounds i8, ptr %4, i64 16
  store <16 x i8> <i8 -112, i8 -111, i8 -110, i8 -109, i8 -108, i8 -107, i8 -106, i8 -105, i8 -104, i8 -103, i8 -102, i8 -101, i8 -100, i8 -99, i8 -98, i8 -97>, ptr %6, align 16, !tbaa !5
  %7 = getelementptr inbounds i8, ptr %4, i64 32
  store <16 x i8> <i8 -96, i8 -95, i8 -94, i8 -93, i8 -92, i8 -91, i8 -90, i8 -89, i8 -88, i8 -87, i8 -86, i8 -85, i8 -84, i8 -83, i8 -82, i8 -81>, ptr %7, align 32, !tbaa !5
  %8 = getelementptr inbounds i8, ptr %4, i64 48
  store <16 x i8> <i8 -80, i8 -79, i8 -78, i8 -77, i8 -76, i8 -75, i8 -74, i8 -73, i8 -72, i8 -71, i8 -70, i8 -69, i8 -68, i8 -67, i8 -66, i8 -65>, ptr %8, align 16, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %4, i64 64
  store <16 x i8> <i8 -64, i8 -63, i8 -62, i8 -61, i8 -60, i8 -59, i8 -58, i8 -57, i8 -56, i8 -55, i8 -54, i8 -53, i8 -52, i8 -51, i8 -50, i8 -49>, ptr %9, align 64, !tbaa !5
  %10 = getelementptr inbounds i8, ptr %4, i64 80
  store <16 x i8> <i8 -48, i8 -47, i8 -46, i8 -45, i8 -44, i8 -43, i8 -42, i8 -41, i8 -40, i8 -39, i8 -38, i8 -37, i8 -36, i8 -35, i8 -34, i8 -33>, ptr %10, align 16, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %4, i64 96
  store <16 x i8> <i8 -32, i8 -31, i8 -30, i8 -29, i8 -28, i8 -27, i8 -26, i8 -25, i8 -24, i8 -23, i8 -22, i8 -21, i8 -20, i8 -19, i8 -18, i8 -17>, ptr %11, align 32, !tbaa !5
  %12 = getelementptr inbounds i8, ptr %4, i64 112
  store <16 x i8> <i8 -16, i8 -15, i8 -14, i8 -13, i8 -12, i8 -11, i8 -10, i8 -9, i8 -8, i8 -7, i8 -6, i8 -5, i8 -4, i8 -3, i8 -2, i8 -1>, ptr %12, align 16, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %4, i64 128
  store <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, ptr %13, align 64, !tbaa !5
  %14 = getelementptr inbounds i8, ptr %4, i64 144
  store <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, ptr %14, align 16, !tbaa !5
  %15 = getelementptr inbounds i8, ptr %4, i64 160
  store <16 x i8> <i8 32, i8 33, i8 34, i8 35, i8 36, i8 37, i8 38, i8 39, i8 40, i8 41, i8 42, i8 43, i8 44, i8 45, i8 46, i8 47>, ptr %15, align 32, !tbaa !5
  %16 = getelementptr inbounds i8, ptr %4, i64 176
  store <16 x i8> <i8 48, i8 49, i8 50, i8 51, i8 52, i8 53, i8 54, i8 55, i8 56, i8 57, i8 58, i8 59, i8 60, i8 61, i8 62, i8 63>, ptr %16, align 16, !tbaa !5
  %17 = getelementptr inbounds i8, ptr %4, i64 192
  store <16 x i8> <i8 64, i8 65, i8 66, i8 67, i8 68, i8 69, i8 70, i8 71, i8 72, i8 73, i8 74, i8 75, i8 76, i8 77, i8 78, i8 79>, ptr %17, align 64, !tbaa !5
  %18 = getelementptr inbounds i8, ptr %4, i64 208
  store <16 x i8> <i8 80, i8 81, i8 82, i8 83, i8 84, i8 85, i8 86, i8 87, i8 88, i8 89, i8 90, i8 91, i8 92, i8 93, i8 94, i8 95>, ptr %18, align 16, !tbaa !5
  %19 = getelementptr inbounds i8, ptr %4, i64 224
  store <16 x i8> <i8 96, i8 97, i8 98, i8 99, i8 100, i8 101, i8 102, i8 103, i8 104, i8 105, i8 106, i8 107, i8 108, i8 109, i8 110, i8 111>, ptr %19, align 32, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %4, i64 240
  store <16 x i8> <i8 112, i8 113, i8 114, i8 115, i8 116, i8 117, i8 118, i8 119, i8 120, i8 121, i8 122, i8 123, i8 124, i8 125, i8 126, i8 127>, ptr %20, align 16, !tbaa !5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 64 dereferenceable(256) %5, i8 0, i64 256, i1 false), !tbaa !5
  %21 = sext i32 %2 to i64
  %invariant.gep = getelementptr i8, ptr %1, i64 -1
  %22 = icmp sgt i32 %2, 0
  br i1 %22, label %.lr.ph.preheader, label %.loopexit250

.lr.ph.preheader:                                 ; preds = %vector.ph
  %23 = add nsw i64 %21, -1
  %24 = getelementptr inbounds i8, ptr %4, i64 16
  %25 = getelementptr inbounds i8, ptr %4, i64 32
  %26 = getelementptr inbounds i8, ptr %4, i64 48
  %27 = getelementptr inbounds i8, ptr %4, i64 64
  %28 = getelementptr inbounds i8, ptr %4, i64 80
  %29 = getelementptr inbounds i8, ptr %4, i64 96
  %30 = getelementptr inbounds i8, ptr %4, i64 112
  %31 = getelementptr inbounds i8, ptr %4, i64 128
  %32 = getelementptr inbounds i8, ptr %4, i64 144
  %33 = getelementptr inbounds i8, ptr %4, i64 160
  %34 = getelementptr inbounds i8, ptr %4, i64 176
  %35 = getelementptr inbounds i8, ptr %4, i64 192
  %36 = getelementptr inbounds i8, ptr %4, i64 208
  %37 = getelementptr inbounds i8, ptr %4, i64 224
  %38 = getelementptr inbounds i8, ptr %4, i64 240
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %vector.ph449
  %.0188266 = phi i64 [ %46, %vector.ph449 ], [ %23, %.lr.ph.preheader ]
  %.0189265 = phi i64 [ %64, %vector.ph449 ], [ %21, %.lr.ph.preheader ]
  %.0193264 = phi i8 [ %.2195, %vector.ph449 ], [ 0, %.lr.ph.preheader ]
  %39 = getelementptr inbounds i8, ptr %0, i64 %.0188266
  %40 = load i8, ptr %39, align 1, !tbaa !5
  %41 = tail call noundef i64 @_Z23bsc_qlfc_transform_scanPKhlh(ptr noundef %0, i64 noundef %.0188266, i8 noundef zeroext %40)
  %42 = icmp slt i64 %41, 0
  br i1 %42, label %168, label %43

43:                                               ; preds = %.lr.ph
  %44 = getelementptr inbounds i8, ptr %0, i64 %41
  %45 = load i8, ptr %44, align 1, !tbaa !5
  %46 = tail call noundef i64 @_Z23bsc_qlfc_transform_scanPKhlh(ptr noundef nonnull %0, i64 noundef %41, i8 noundef zeroext %45)
  %47 = zext i8 %40 to i64
  %48 = getelementptr inbounds [256 x i8], ptr %4, i64 0, i64 %47
  %49 = load i8, ptr %48, align 1, !tbaa !5
  %50 = zext i8 %45 to i64
  %51 = getelementptr inbounds [256 x i8], ptr %4, i64 0, i64 %50
  %52 = load i8, ptr %51, align 1, !tbaa !5
  %53 = icmp sgt i8 %49, %52
  %54 = zext i1 %53 to i8
  %55 = add i8 %52, %54
  %56 = xor i8 %49, -128
  %gep = getelementptr i8, ptr %invariant.gep, i64 %.0189265
  store i8 %56, ptr %gep, align 1, !tbaa !5
  %57 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %47
  %58 = load i8, ptr %57, align 1, !tbaa !5
  %59 = icmp eq i8 %58, 0
  br i1 %59, label %60, label %62

60:                                               ; preds = %43
  store i8 1, ptr %57, align 1, !tbaa !5
  %61 = add i8 %.0193264, 1
  store i8 %.0193264, ptr %gep, align 1, !tbaa !5
  br label %62

62:                                               ; preds = %60, %43
  %.1194 = phi i8 [ %61, %60 ], [ %.0193264, %43 ]
  %63 = xor i8 %55, -128
  %64 = add nsw i64 %.0189265, -2
  %65 = getelementptr inbounds i8, ptr %1, i64 %64
  store i8 %63, ptr %65, align 1, !tbaa !5
  %66 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %50
  %67 = load i8, ptr %66, align 1, !tbaa !5
  %68 = icmp eq i8 %67, 0
  br i1 %68, label %69, label %vector.ph449

69:                                               ; preds = %62
  store i8 1, ptr %66, align 1, !tbaa !5
  %70 = add i8 %.1194, 1
  store i8 %.1194, ptr %65, align 1, !tbaa !5
  br label %vector.ph449

vector.ph449:                                     ; preds = %62, %69
  %.2195 = phi i8 [ %70, %69 ], [ %.1194, %62 ]
  %broadcast.splatinsert455 = insertelement <16 x i8> poison, i8 %49, i64 0
  %broadcast.splat456 = shufflevector <16 x i8> %broadcast.splatinsert455, <16 x i8> poison, <16 x i32> zeroinitializer
  %broadcast.splatinsert457 = insertelement <16 x i8> poison, i8 %55, i64 0
  %broadcast.splat458 = shufflevector <16 x i8> %broadcast.splatinsert457, <16 x i8> poison, <16 x i32> zeroinitializer
  %wide.load453 = load <16 x i8>, ptr %4, align 64, !tbaa !5
  %wide.load454 = load <16 x i8>, ptr %24, align 16, !tbaa !5
  %71 = icmp sgt <16 x i8> %broadcast.splat456, %wide.load453
  %72 = icmp sgt <16 x i8> %broadcast.splat456, %wide.load454
  %73 = zext <16 x i1> %71 to <16 x i8>
  %74 = zext <16 x i1> %72 to <16 x i8>
  %75 = icmp sgt <16 x i8> %broadcast.splat458, %wide.load453
  %76 = icmp sgt <16 x i8> %broadcast.splat458, %wide.load454
  %77 = zext <16 x i1> %75 to <16 x i8>
  %78 = zext <16 x i1> %76 to <16 x i8>
  %79 = add <16 x i8> %wide.load453, %77
  %80 = add <16 x i8> %wide.load454, %78
  %81 = add <16 x i8> %79, %73
  %82 = add <16 x i8> %80, %74
  store <16 x i8> %81, ptr %4, align 64, !tbaa !5
  store <16 x i8> %82, ptr %24, align 16, !tbaa !5
  %broadcast.splatinsert442 = insertelement <16 x i8> poison, i8 %49, i64 0
  %broadcast.splat443 = shufflevector <16 x i8> %broadcast.splatinsert442, <16 x i8> poison, <16 x i32> zeroinitializer
  %broadcast.splatinsert444 = insertelement <16 x i8> poison, i8 %55, i64 0
  %broadcast.splat445 = shufflevector <16 x i8> %broadcast.splatinsert444, <16 x i8> poison, <16 x i32> zeroinitializer
  %wide.load440 = load <16 x i8>, ptr %25, align 32, !tbaa !5
  %wide.load441 = load <16 x i8>, ptr %26, align 16, !tbaa !5
  %83 = icmp sgt <16 x i8> %broadcast.splat443, %wide.load440
  %84 = icmp sgt <16 x i8> %broadcast.splat443, %wide.load441
  %85 = zext <16 x i1> %83 to <16 x i8>
  %86 = zext <16 x i1> %84 to <16 x i8>
  %87 = icmp sgt <16 x i8> %broadcast.splat445, %wide.load440
  %88 = icmp sgt <16 x i8> %broadcast.splat445, %wide.load441
  %89 = zext <16 x i1> %87 to <16 x i8>
  %90 = zext <16 x i1> %88 to <16 x i8>
  %91 = add <16 x i8> %wide.load440, %89
  %92 = add <16 x i8> %wide.load441, %90
  %93 = add <16 x i8> %91, %85
  %94 = add <16 x i8> %92, %86
  store <16 x i8> %93, ptr %25, align 32, !tbaa !5
  store <16 x i8> %94, ptr %26, align 16, !tbaa !5
  %broadcast.splatinsert428 = insertelement <16 x i8> poison, i8 %49, i64 0
  %broadcast.splat429 = shufflevector <16 x i8> %broadcast.splatinsert428, <16 x i8> poison, <16 x i32> zeroinitializer
  %broadcast.splatinsert430 = insertelement <16 x i8> poison, i8 %55, i64 0
  %broadcast.splat431 = shufflevector <16 x i8> %broadcast.splatinsert430, <16 x i8> poison, <16 x i32> zeroinitializer
  %wide.load426 = load <16 x i8>, ptr %27, align 64, !tbaa !5
  %wide.load427 = load <16 x i8>, ptr %28, align 16, !tbaa !5
  %95 = icmp sgt <16 x i8> %broadcast.splat429, %wide.load426
  %96 = icmp sgt <16 x i8> %broadcast.splat429, %wide.load427
  %97 = zext <16 x i1> %95 to <16 x i8>
  %98 = zext <16 x i1> %96 to <16 x i8>
  %99 = icmp sgt <16 x i8> %broadcast.splat431, %wide.load426
  %100 = icmp sgt <16 x i8> %broadcast.splat431, %wide.load427
  %101 = zext <16 x i1> %99 to <16 x i8>
  %102 = zext <16 x i1> %100 to <16 x i8>
  %103 = add <16 x i8> %wide.load426, %101
  %104 = add <16 x i8> %wide.load427, %102
  %105 = add <16 x i8> %103, %97
  %106 = add <16 x i8> %104, %98
  store <16 x i8> %105, ptr %27, align 64, !tbaa !5
  store <16 x i8> %106, ptr %28, align 16, !tbaa !5
  %broadcast.splatinsert414 = insertelement <16 x i8> poison, i8 %49, i64 0
  %broadcast.splat415 = shufflevector <16 x i8> %broadcast.splatinsert414, <16 x i8> poison, <16 x i32> zeroinitializer
  %broadcast.splatinsert416 = insertelement <16 x i8> poison, i8 %55, i64 0
  %broadcast.splat417 = shufflevector <16 x i8> %broadcast.splatinsert416, <16 x i8> poison, <16 x i32> zeroinitializer
  %wide.load412 = load <16 x i8>, ptr %29, align 32, !tbaa !5
  %wide.load413 = load <16 x i8>, ptr %30, align 16, !tbaa !5
  %107 = icmp sgt <16 x i8> %broadcast.splat415, %wide.load412
  %108 = icmp sgt <16 x i8> %broadcast.splat415, %wide.load413
  %109 = zext <16 x i1> %107 to <16 x i8>
  %110 = zext <16 x i1> %108 to <16 x i8>
  %111 = icmp sgt <16 x i8> %broadcast.splat417, %wide.load412
  %112 = icmp sgt <16 x i8> %broadcast.splat417, %wide.load413
  %113 = zext <16 x i1> %111 to <16 x i8>
  %114 = zext <16 x i1> %112 to <16 x i8>
  %115 = add <16 x i8> %wide.load412, %113
  %116 = add <16 x i8> %wide.load413, %114
  %117 = add <16 x i8> %115, %109
  %118 = add <16 x i8> %116, %110
  store <16 x i8> %117, ptr %29, align 32, !tbaa !5
  store <16 x i8> %118, ptr %30, align 16, !tbaa !5
  %broadcast.splatinsert400 = insertelement <16 x i8> poison, i8 %49, i64 0
  %broadcast.splat401 = shufflevector <16 x i8> %broadcast.splatinsert400, <16 x i8> poison, <16 x i32> zeroinitializer
  %broadcast.splatinsert402 = insertelement <16 x i8> poison, i8 %55, i64 0
  %broadcast.splat403 = shufflevector <16 x i8> %broadcast.splatinsert402, <16 x i8> poison, <16 x i32> zeroinitializer
  %wide.load398 = load <16 x i8>, ptr %31, align 64, !tbaa !5
  %wide.load399 = load <16 x i8>, ptr %32, align 16, !tbaa !5
  %119 = icmp sgt <16 x i8> %broadcast.splat401, %wide.load398
  %120 = icmp sgt <16 x i8> %broadcast.splat401, %wide.load399
  %121 = zext <16 x i1> %119 to <16 x i8>
  %122 = zext <16 x i1> %120 to <16 x i8>
  %123 = icmp sgt <16 x i8> %broadcast.splat403, %wide.load398
  %124 = icmp sgt <16 x i8> %broadcast.splat403, %wide.load399
  %125 = zext <16 x i1> %123 to <16 x i8>
  %126 = zext <16 x i1> %124 to <16 x i8>
  %127 = add <16 x i8> %wide.load398, %125
  %128 = add <16 x i8> %wide.load399, %126
  %129 = add <16 x i8> %127, %121
  %130 = add <16 x i8> %128, %122
  store <16 x i8> %129, ptr %31, align 64, !tbaa !5
  store <16 x i8> %130, ptr %32, align 16, !tbaa !5
  %broadcast.splatinsert386 = insertelement <16 x i8> poison, i8 %49, i64 0
  %broadcast.splat387 = shufflevector <16 x i8> %broadcast.splatinsert386, <16 x i8> poison, <16 x i32> zeroinitializer
  %broadcast.splatinsert388 = insertelement <16 x i8> poison, i8 %55, i64 0
  %broadcast.splat389 = shufflevector <16 x i8> %broadcast.splatinsert388, <16 x i8> poison, <16 x i32> zeroinitializer
  %wide.load384 = load <16 x i8>, ptr %33, align 32, !tbaa !5
  %wide.load385 = load <16 x i8>, ptr %34, align 16, !tbaa !5
  %131 = icmp sgt <16 x i8> %broadcast.splat387, %wide.load384
  %132 = icmp sgt <16 x i8> %broadcast.splat387, %wide.load385
  %133 = zext <16 x i1> %131 to <16 x i8>
  %134 = zext <16 x i1> %132 to <16 x i8>
  %135 = icmp sgt <16 x i8> %broadcast.splat389, %wide.load384
  %136 = icmp sgt <16 x i8> %broadcast.splat389, %wide.load385
  %137 = zext <16 x i1> %135 to <16 x i8>
  %138 = zext <16 x i1> %136 to <16 x i8>
  %139 = add <16 x i8> %wide.load384, %137
  %140 = add <16 x i8> %wide.load385, %138
  %141 = add <16 x i8> %139, %133
  %142 = add <16 x i8> %140, %134
  store <16 x i8> %141, ptr %33, align 32, !tbaa !5
  store <16 x i8> %142, ptr %34, align 16, !tbaa !5
  %broadcast.splatinsert372 = insertelement <16 x i8> poison, i8 %49, i64 0
  %broadcast.splat373 = shufflevector <16 x i8> %broadcast.splatinsert372, <16 x i8> poison, <16 x i32> zeroinitializer
  %broadcast.splatinsert374 = insertelement <16 x i8> poison, i8 %55, i64 0
  %broadcast.splat375 = shufflevector <16 x i8> %broadcast.splatinsert374, <16 x i8> poison, <16 x i32> zeroinitializer
  %wide.load370 = load <16 x i8>, ptr %35, align 64, !tbaa !5
  %wide.load371 = load <16 x i8>, ptr %36, align 16, !tbaa !5
  %143 = icmp sgt <16 x i8> %broadcast.splat373, %wide.load370
  %144 = icmp sgt <16 x i8> %broadcast.splat373, %wide.load371
  %145 = zext <16 x i1> %143 to <16 x i8>
  %146 = zext <16 x i1> %144 to <16 x i8>
  %147 = icmp sgt <16 x i8> %broadcast.splat375, %wide.load370
  %148 = icmp sgt <16 x i8> %broadcast.splat375, %wide.load371
  %149 = zext <16 x i1> %147 to <16 x i8>
  %150 = zext <16 x i1> %148 to <16 x i8>
  %151 = add <16 x i8> %wide.load370, %149
  %152 = add <16 x i8> %wide.load371, %150
  %153 = add <16 x i8> %151, %145
  %154 = add <16 x i8> %152, %146
  store <16 x i8> %153, ptr %35, align 64, !tbaa !5
  store <16 x i8> %154, ptr %36, align 16, !tbaa !5
  %broadcast.splatinsert = insertelement <16 x i8> poison, i8 %49, i64 0
  %broadcast.splat = shufflevector <16 x i8> %broadcast.splatinsert, <16 x i8> poison, <16 x i32> zeroinitializer
  %broadcast.splatinsert360 = insertelement <16 x i8> poison, i8 %55, i64 0
  %broadcast.splat361 = shufflevector <16 x i8> %broadcast.splatinsert360, <16 x i8> poison, <16 x i32> zeroinitializer
  %wide.load = load <16 x i8>, ptr %37, align 32, !tbaa !5
  %wide.load359 = load <16 x i8>, ptr %38, align 16, !tbaa !5
  %155 = icmp sgt <16 x i8> %broadcast.splat, %wide.load
  %156 = icmp sgt <16 x i8> %broadcast.splat, %wide.load359
  %157 = zext <16 x i1> %155 to <16 x i8>
  %158 = zext <16 x i1> %156 to <16 x i8>
  %159 = icmp sgt <16 x i8> %broadcast.splat361, %wide.load
  %160 = icmp sgt <16 x i8> %broadcast.splat361, %wide.load359
  %161 = zext <16 x i1> %159 to <16 x i8>
  %162 = zext <16 x i1> %160 to <16 x i8>
  %163 = add <16 x i8> %wide.load, %161
  %164 = add <16 x i8> %wide.load359, %162
  %165 = add <16 x i8> %163, %157
  %166 = add <16 x i8> %164, %158
  store <16 x i8> %165, ptr %37, align 32, !tbaa !5
  store <16 x i8> %166, ptr %38, align 16, !tbaa !5
  store i8 -127, ptr %48, align 1, !tbaa !5
  store i8 -128, ptr %51, align 1, !tbaa !5
  %167 = icmp sgt i64 %46, -1
  br i1 %167, label %.lr.ph, label %.loopexit250

168:                                              ; preds = %.lr.ph
  %169 = load i8, ptr %0, align 1, !tbaa !5
  %170 = zext i8 %169 to i64
  %171 = getelementptr inbounds [256 x i8], ptr %4, i64 0, i64 %170
  %172 = load i8, ptr %171, align 1, !tbaa !5
  %173 = xor i8 %172, -128
  %174 = add nsw i64 %.0189265, -1
  %175 = getelementptr inbounds i8, ptr %1, i64 %174
  store i8 %173, ptr %175, align 1, !tbaa !5
  %176 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %170
  %177 = load i8, ptr %176, align 1, !tbaa !5
  %178 = icmp eq i8 %177, 0
  br i1 %178, label %179, label %.preheader242.preheader

179:                                              ; preds = %168
  store i8 1, ptr %176, align 1, !tbaa !5
  store i8 %.0193264, ptr %175, align 1, !tbaa !5
  br label %.preheader242.preheader

.preheader242.preheader:                          ; preds = %179, %168
  %180 = load <16 x i8>, ptr %4, align 64, !tbaa !5
  %181 = insertelement <16 x i8> poison, i8 %172, i64 0
  %182 = shufflevector <16 x i8> %181, <16 x i8> poison, <16 x i32> zeroinitializer
  %183 = icmp slt <16 x i8> %180, %182
  %184 = zext <16 x i1> %183 to <16 x i8>
  %185 = add <16 x i8> %180, %184
  store <16 x i8> %185, ptr %4, align 64, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %4, i64 16
  %187 = load <16 x i8>, ptr %186, align 16, !tbaa !5
  %188 = icmp slt <16 x i8> %187, %182
  %189 = zext <16 x i1> %188 to <16 x i8>
  %190 = add <16 x i8> %187, %189
  store <16 x i8> %190, ptr %186, align 16, !tbaa !5
  %191 = getelementptr inbounds i8, ptr %4, i64 32
  %192 = load <16 x i8>, ptr %191, align 32, !tbaa !5
  %193 = icmp slt <16 x i8> %192, %182
  %194 = zext <16 x i1> %193 to <16 x i8>
  %195 = add <16 x i8> %192, %194
  store <16 x i8> %195, ptr %191, align 32, !tbaa !5
  %196 = getelementptr inbounds i8, ptr %4, i64 48
  %197 = load <16 x i8>, ptr %196, align 16, !tbaa !5
  %198 = icmp slt <16 x i8> %197, %182
  %199 = zext <16 x i1> %198 to <16 x i8>
  %200 = add <16 x i8> %197, %199
  store <16 x i8> %200, ptr %196, align 16, !tbaa !5
  %201 = getelementptr inbounds i8, ptr %4, i64 64
  %202 = load <16 x i8>, ptr %201, align 64, !tbaa !5
  %203 = icmp slt <16 x i8> %202, %182
  %204 = zext <16 x i1> %203 to <16 x i8>
  %205 = add <16 x i8> %202, %204
  store <16 x i8> %205, ptr %201, align 64, !tbaa !5
  %206 = getelementptr inbounds i8, ptr %4, i64 80
  %207 = load <16 x i8>, ptr %206, align 16, !tbaa !5
  %208 = icmp slt <16 x i8> %207, %182
  %209 = zext <16 x i1> %208 to <16 x i8>
  %210 = add <16 x i8> %207, %209
  store <16 x i8> %210, ptr %206, align 16, !tbaa !5
  %211 = getelementptr inbounds i8, ptr %4, i64 96
  %212 = load <16 x i8>, ptr %211, align 32, !tbaa !5
  %213 = icmp slt <16 x i8> %212, %182
  %214 = zext <16 x i1> %213 to <16 x i8>
  %215 = add <16 x i8> %212, %214
  store <16 x i8> %215, ptr %211, align 32, !tbaa !5
  %216 = getelementptr inbounds i8, ptr %4, i64 112
  %217 = load <16 x i8>, ptr %216, align 16, !tbaa !5
  %218 = icmp slt <16 x i8> %217, %182
  %219 = zext <16 x i1> %218 to <16 x i8>
  %220 = add <16 x i8> %217, %219
  store <16 x i8> %220, ptr %216, align 16, !tbaa !5
  %221 = getelementptr inbounds i8, ptr %4, i64 128
  %222 = load <16 x i8>, ptr %221, align 64, !tbaa !5
  %223 = icmp slt <16 x i8> %222, %182
  %224 = zext <16 x i1> %223 to <16 x i8>
  %225 = add <16 x i8> %222, %224
  store <16 x i8> %225, ptr %221, align 64, !tbaa !5
  %226 = getelementptr inbounds i8, ptr %4, i64 144
  %227 = load <16 x i8>, ptr %226, align 16, !tbaa !5
  %228 = icmp slt <16 x i8> %227, %182
  %229 = zext <16 x i1> %228 to <16 x i8>
  %230 = add <16 x i8> %227, %229
  store <16 x i8> %230, ptr %226, align 16, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %4, i64 160
  %232 = load <16 x i8>, ptr %231, align 32, !tbaa !5
  %233 = icmp slt <16 x i8> %232, %182
  %234 = zext <16 x i1> %233 to <16 x i8>
  %235 = add <16 x i8> %232, %234
  store <16 x i8> %235, ptr %231, align 32, !tbaa !5
  %236 = getelementptr inbounds i8, ptr %4, i64 176
  %237 = load <16 x i8>, ptr %236, align 16, !tbaa !5
  %238 = icmp slt <16 x i8> %237, %182
  %239 = zext <16 x i1> %238 to <16 x i8>
  %240 = add <16 x i8> %237, %239
  store <16 x i8> %240, ptr %236, align 16, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %4, i64 192
  %242 = load <16 x i8>, ptr %241, align 64, !tbaa !5
  %243 = icmp slt <16 x i8> %242, %182
  %244 = zext <16 x i1> %243 to <16 x i8>
  %245 = add <16 x i8> %242, %244
  store <16 x i8> %245, ptr %241, align 64, !tbaa !5
  %246 = getelementptr inbounds i8, ptr %4, i64 208
  %247 = load <16 x i8>, ptr %246, align 16, !tbaa !5
  %248 = icmp slt <16 x i8> %247, %182
  %249 = zext <16 x i1> %248 to <16 x i8>
  %250 = add <16 x i8> %247, %249
  store <16 x i8> %250, ptr %246, align 16, !tbaa !5
  %251 = getelementptr inbounds i8, ptr %4, i64 224
  %252 = load <16 x i8>, ptr %251, align 32, !tbaa !5
  %253 = icmp slt <16 x i8> %252, %182
  %254 = zext <16 x i1> %253 to <16 x i8>
  %255 = add <16 x i8> %252, %254
  store <16 x i8> %255, ptr %251, align 32, !tbaa !5
  %256 = getelementptr inbounds i8, ptr %4, i64 240
  %257 = load <16 x i8>, ptr %256, align 16, !tbaa !5
  %258 = icmp slt <16 x i8> %257, %182
  %259 = zext <16 x i1> %258 to <16 x i8>
  %260 = add <16 x i8> %257, %259
  store <16 x i8> %260, ptr %256, align 16, !tbaa !5
  store i8 -128, ptr %171, align 1, !tbaa !5
  br label %.loopexit250

.loopexit250:                                     ; preds = %vector.ph449, %vector.ph, %.preheader242.preheader
  %.3 = phi i64 [ %174, %.preheader242.preheader ], [ %21, %vector.ph ], [ %64, %vector.ph449 ]
  %261 = getelementptr i8, ptr %1, i64 %21
  %262 = getelementptr i8, ptr %261, i64 -1
  store i8 1, ptr %262, align 1, !tbaa !5
  %invariant.gep275 = getelementptr i8, ptr %3, i64 128
  br label %263

263:                                              ; preds = %263, %.loopexit250
  %.0169277 = phi i64 [ 0, %.loopexit250 ], [ %283, %263 ]
  %264 = trunc nuw i64 %.0169277 to i8
  %265 = getelementptr inbounds [256 x i8], ptr %4, i64 0, i64 %.0169277
  %266 = load i8, ptr %265, align 4, !tbaa !5
  %267 = sext i8 %266 to i64
  %gep276 = getelementptr i8, ptr %invariant.gep275, i64 %267
  store i8 %264, ptr %gep276, align 1, !tbaa !5
  %268 = or disjoint i64 %.0169277, 1
  %269 = trunc nuw i64 %268 to i8
  %270 = getelementptr inbounds [256 x i8], ptr %4, i64 0, i64 %268
  %271 = load i8, ptr %270, align 1, !tbaa !5
  %272 = sext i8 %271 to i64
  %gep276.1 = getelementptr i8, ptr %invariant.gep275, i64 %272
  store i8 %269, ptr %gep276.1, align 1, !tbaa !5
  %273 = or disjoint i64 %.0169277, 2
  %274 = trunc nuw i64 %273 to i8
  %275 = getelementptr inbounds [256 x i8], ptr %4, i64 0, i64 %273
  %276 = load i8, ptr %275, align 2, !tbaa !5
  %277 = sext i8 %276 to i64
  %gep276.2 = getelementptr i8, ptr %invariant.gep275, i64 %277
  store i8 %274, ptr %gep276.2, align 1, !tbaa !5
  %278 = or disjoint i64 %.0169277, 3
  %279 = trunc nuw i64 %278 to i8
  %280 = getelementptr inbounds [256 x i8], ptr %4, i64 0, i64 %278
  %281 = load i8, ptr %280, align 1, !tbaa !5
  %282 = sext i8 %281 to i64
  %gep276.3 = getelementptr i8, ptr %invariant.gep275, i64 %282
  store i8 %279, ptr %gep276.3, align 1, !tbaa !5
  %283 = add nuw nsw i64 %.0169277, 4
  %exitcond344.not.3 = icmp eq i64 %283, 256
  br i1 %exitcond344.not.3, label %.preheader, label %263, !llvm.loop !8

.preheader:                                       ; preds = %263, %322
  %.0278 = phi i64 [ %323, %322 ], [ 1, %263 ]
  %284 = getelementptr inbounds i8, ptr %3, i64 %.0278
  %285 = load i8, ptr %284, align 1, !tbaa !5
  %286 = zext i8 %285 to i64
  %287 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %286
  %288 = load i8, ptr %287, align 1, !tbaa !5
  %289 = icmp eq i8 %288, 0
  br i1 %289, label %290, label %.preheader.1

290:                                              ; preds = %.preheader.4, %.preheader.3, %.preheader.2, %.preheader.1, %.preheader
  %.0278.lcssa = phi i64 [ %.0278, %.preheader ], [ %294, %.preheader.1 ], [ %301, %.preheader.2 ], [ %308, %.preheader.3 ], [ %315, %.preheader.4 ]
  %291 = getelementptr inbounds i8, ptr %3, i64 %.0278.lcssa
  %292 = getelementptr i8, ptr %291, i64 -1
  %293 = load i8, ptr %292, align 1, !tbaa !5
  store i8 %293, ptr %291, align 1, !tbaa !5
  br label %.loopexit

.preheader.1:                                     ; preds = %.preheader
  %294 = add nuw nsw i64 %.0278, 1
  %295 = getelementptr inbounds i8, ptr %3, i64 %294
  %296 = load i8, ptr %295, align 1, !tbaa !5
  %297 = zext i8 %296 to i64
  %298 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %297
  %299 = load i8, ptr %298, align 1, !tbaa !5
  %300 = icmp eq i8 %299, 0
  br i1 %300, label %290, label %.preheader.2

.preheader.2:                                     ; preds = %.preheader.1
  %301 = add nuw nsw i64 %.0278, 2
  %302 = getelementptr inbounds i8, ptr %3, i64 %301
  %303 = load i8, ptr %302, align 1, !tbaa !5
  %304 = zext i8 %303 to i64
  %305 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %304
  %306 = load i8, ptr %305, align 1, !tbaa !5
  %307 = icmp eq i8 %306, 0
  br i1 %307, label %290, label %.preheader.3

.preheader.3:                                     ; preds = %.preheader.2
  %308 = add nuw nsw i64 %.0278, 3
  %309 = getelementptr inbounds i8, ptr %3, i64 %308
  %310 = load i8, ptr %309, align 1, !tbaa !5
  %311 = zext i8 %310 to i64
  %312 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %311
  %313 = load i8, ptr %312, align 1, !tbaa !5
  %314 = icmp eq i8 %313, 0
  br i1 %314, label %290, label %.preheader.4

.preheader.4:                                     ; preds = %.preheader.3
  %315 = add nuw nsw i64 %.0278, 4
  %316 = getelementptr inbounds i8, ptr %3, i64 %315
  %317 = load i8, ptr %316, align 1, !tbaa !5
  %318 = zext i8 %317 to i64
  %319 = getelementptr inbounds [256 x i8], ptr %5, i64 0, i64 %318
  %320 = load i8, ptr %319, align 1, !tbaa !5
  %321 = icmp eq i8 %320, 0
  br i1 %321, label %290, label %322

322:                                              ; preds = %.preheader.4
  %323 = add nuw nsw i64 %.0278, 5
  %exitcond345.not.4 = icmp eq i64 %323, 256
  br i1 %exitcond345.not.4, label %.loopexit, label %.preheader, !llvm.loop !10

.loopexit:                                        ; preds = %322, %290
  %324 = getelementptr inbounds i8, ptr %1, i64 %.3
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %4) #4
  ret ptr %324
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_Z23bsc_qlfc_transform_scanPKhlh(ptr noalias noundef, i64 noundef, i8 noundef zeroext) local_unnamed_addr #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint 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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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++ TBAA"}
!8 = distinct !{!8, !9}
!9 = !{!"llvm.loop.mustprogress"}
!10 = distinct !{!10, !9}


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