; LLVM IR from fhanau/Efficient-Compression-Tool :: src/zopfli (squeeze)

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

%struct.SymbolStats = type { [288 x i64], [32 x i64], [288 x float], [32 x float] }
%struct.ZopfliOptions = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }

@st = external hidden thread_local global %struct.SymbolStats, align 8

; Function Attrs: nounwind uwtable
declare dso_local void @GetStatistics(ptr noundef, ptr noundef) #0

; Function Attrs: nounwind uwtable
define dso_local void @ZopfliLZ77Optimal2(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef %4, i8 noundef zeroext %5, ptr noundef %6, i32 noundef %7) #0 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i8, align 1
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %struct.SymbolStats, align 8
  %18 = alloca i32, align 4
  %19 = alloca %struct.SymbolStats, align 8
  %20 = alloca i32, align 4
  %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 %struct.SymbolStats, align 8
  %28 = alloca ptr, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store i64 %2, ptr %11, align 8, !tbaa !9
  store i64 %3, ptr %12, align 8, !tbaa !9
  store ptr %4, ptr %13, align 8, !tbaa !5
  store i8 %5, ptr %14, align 1, !tbaa !11
  store ptr %6, ptr %15, align 8, !tbaa !5
  store i32 %7, ptr %16, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 3840, ptr %17) #8
  %29 = load ptr, ptr %9, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct.ZopfliOptions, ptr %29, i32 0, i32 0
  %31 = load i32, ptr %30, align 4, !tbaa !14
  %32 = icmp ne i32 %31, 1
  br i1 %32, label %33, label %42

33:                                               ; preds = %8
  %34 = load ptr, ptr %9, align 8, !tbaa !5
  %35 = load ptr, ptr %10, align 8, !tbaa !5
  %36 = load i64, ptr %11, align 8, !tbaa !9
  %37 = load i64, ptr %12, align 8, !tbaa !9
  %38 = load ptr, ptr %13, align 8, !tbaa !5
  %39 = load i8, ptr %14, align 1, !tbaa !11
  %40 = load ptr, ptr %15, align 8, !tbaa !5
  %41 = load i32, ptr %16, align 4, !tbaa !12
  call void @ZopfliLZ77Optimal(ptr noundef %34, ptr noundef %35, i64 noundef %36, i64 noundef %37, ptr noundef %38, i8 noundef zeroext %39, ptr noundef %40, i32 noundef %41)
  store i32 1, ptr %18, align 4
  br label %322

42:                                               ; preds = %8
  %43 = load i8, ptr %14, align 1, !tbaa !11
  %44 = zext i8 %43 to i32
  %45 = icmp ne i32 %44, 0
  br i1 %45, label %51, label %46

46:                                               ; preds = %42
  %47 = load ptr, ptr %9, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.ZopfliOptions, ptr %47, i32 0, i32 8
  %49 = load i32, ptr %48, align 4, !tbaa !16
  %50 = icmp ne i32 %49, 0
  br i1 %50, label %282, label %51

51:                                               ; preds = %46, %42
  call void @llvm.lifetime.start.p0(i64 3840, ptr %19) #8
  %52 = load ptr, ptr %15, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %19, ptr align 8 %52, i64 3840, i1 false), !tbaa.struct !17
  call void @CopyStats(ptr noundef %19, ptr noundef %17)
  %53 = load ptr, ptr %9, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.ZopfliOptions, ptr %53, i32 0, i32 11
  %55 = load i32, ptr %54, align 4, !tbaa !18
  %56 = icmp ne i32 %55, 0
  br i1 %56, label %57, label %271

57:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  store i32 0, ptr %20, align 4, !tbaa !12
  br label %58

58:                                               ; preds = %71, %57
  %59 = load i32, ptr %20, align 4, !tbaa !12
  %60 = icmp ult i32 %59, 256
  br i1 %60, label %62, label %61

61:                                               ; preds = %58
  store i32 2, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %74

62:                                               ; preds = %58
  %63 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %64 = load i32, ptr %20, align 4, !tbaa !12
  %65 = zext i32 %64 to i64
  %66 = getelementptr inbounds [288 x float], ptr %63, i64 0, i64 %65
  %67 = load float, ptr %66, align 4, !tbaa !19
  %68 = fpext float %67 to double
  %69 = fsub double %68, 2.000000e-01
  %70 = fptrunc double %69 to float
  store float %70, ptr %66, align 4, !tbaa !19
  br label %71

71:                                               ; preds = %62
  %72 = load i32, ptr %20, align 4, !tbaa !12
  %73 = add i32 %72, 1
  store i32 %73, ptr %20, align 4, !tbaa !12
  br label %58, !llvm.loop !21

74:                                               ; preds = %61
  %75 = load i64, ptr %12, align 8, !tbaa !9
  %76 = load i64, ptr %11, align 8, !tbaa !9
  %77 = sub i64 %75, %76
  %78 = icmp ult i64 %77, 1000
  br i1 %78, label %79, label %97

79:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 0, ptr %21, align 4, !tbaa !12
  br label %80

80:                                               ; preds = %93, %79
  %81 = load i32, ptr %21, align 4, !tbaa !12
  %82 = icmp ult i32 %81, 256
  br i1 %82, label %84, label %83

83:                                               ; preds = %80
  store i32 5, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %96

84:                                               ; preds = %80
  %85 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %86 = load i32, ptr %21, align 4, !tbaa !12
  %87 = zext i32 %86 to i64
  %88 = getelementptr inbounds [288 x float], ptr %85, i64 0, i64 %87
  %89 = load float, ptr %88, align 4, !tbaa !19
  %90 = fpext float %89 to double
  %91 = fsub double %90, 2.000000e-01
  %92 = fptrunc double %91 to float
  store float %92, ptr %88, align 4, !tbaa !19
  br label %93

93:                                               ; preds = %84
  %94 = load i32, ptr %21, align 4, !tbaa !12
  %95 = add i32 %94, 1
  store i32 %95, ptr %21, align 4, !tbaa !12
  br label %80, !llvm.loop !23

96:                                               ; preds = %83
  br label %97

97:                                               ; preds = %96, %74
  %98 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %99 = getelementptr inbounds [288 x float], ptr %98, i64 0, i64 0
  %100 = load float, ptr %99, align 8, !tbaa !19
  %101 = fpext float %100 to double
  %102 = fsub double %101, 1.200000e+00
  %103 = fptrunc double %102 to float
  store float %103, ptr %99, align 8, !tbaa !19
  %104 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %105 = getelementptr inbounds [288 x float], ptr %104, i64 0, i64 1
  %106 = load float, ptr %105, align 4, !tbaa !19
  %107 = fpext float %106 to double
  %108 = fsub double %107, 4.000000e-01
  %109 = fptrunc double %108 to float
  store float %109, ptr %105, align 4, !tbaa !19
  %110 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 3
  %111 = getelementptr inbounds [32 x float], ptr %110, i64 0, i64 0
  %112 = load float, ptr %111, align 8, !tbaa !19
  %113 = fpext float %112 to double
  %114 = fsub double %113, 1.500000e+00
  %115 = fptrunc double %114 to float
  store float %115, ptr %111, align 8, !tbaa !19
  %116 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 3
  %117 = getelementptr inbounds [32 x float], ptr %116, i64 0, i64 3
  %118 = load float, ptr %117, align 4, !tbaa !19
  %119 = fpext float %118 to double
  %120 = fsub double %119, 1.400000e+00
  %121 = fptrunc double %120 to float
  store float %121, ptr %117, align 4, !tbaa !19
  %122 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %123 = getelementptr inbounds [288 x float], ptr %122, i64 0, i64 255
  %124 = load float, ptr %123, align 4, !tbaa !19
  %125 = fpext float %124 to double
  %126 = fsub double %125, 5.000000e-01
  %127 = fptrunc double %126 to float
  store float %127, ptr %123, align 4, !tbaa !19
  %128 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %129 = getelementptr inbounds [288 x float], ptr %128, i64 0, i64 257
  %130 = load float, ptr %129, align 4, !tbaa !19
  %131 = fpext float %130 to double
  %132 = fsub double %131, 8.000000e-01
  %133 = fptrunc double %132 to float
  store float %133, ptr %129, align 4, !tbaa !19
  %134 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %135 = getelementptr inbounds [288 x float], ptr %134, i64 0, i64 258
  %136 = load float, ptr %135, align 8, !tbaa !19
  %137 = fpext float %136 to double
  %138 = fadd double %137, 3.000000e-01
  %139 = fptrunc double %138 to float
  store float %139, ptr %135, align 8, !tbaa !19
  %140 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %141 = getelementptr inbounds [288 x float], ptr %140, i64 0, i64 272
  %142 = load float, ptr %141, align 8, !tbaa !19
  %143 = fpext float %142 to double
  %144 = fadd double %143, 1.200000e+00
  %145 = fptrunc double %144 to float
  store float %145, ptr %141, align 8, !tbaa !19
  %146 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %147 = getelementptr inbounds [288 x float], ptr %146, i64 0, i64 282
  %148 = load float, ptr %147, align 8, !tbaa !19
  %149 = fpext float %148 to double
  %150 = fadd double %149, 2.000000e-01
  %151 = fptrunc double %150 to float
  store float %151, ptr %147, align 8, !tbaa !19
  %152 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %153 = getelementptr inbounds [288 x float], ptr %152, i64 0, i64 283
  %154 = load float, ptr %153, align 4, !tbaa !19
  %155 = fpext float %154 to double
  %156 = fadd double %155, 2.000000e-01
  %157 = fptrunc double %156 to float
  store float %157, ptr %153, align 4, !tbaa !19
  %158 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %159 = getelementptr inbounds [288 x float], ptr %158, i64 0, i64 284
  %160 = load float, ptr %159, align 8, !tbaa !19
  %161 = fpext float %160 to double
  %162 = fadd double %161, 4.000000e-01
  %163 = fptrunc double %162 to float
  store float %163, ptr %159, align 8, !tbaa !19
  %164 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %165 = getelementptr inbounds [288 x float], ptr %164, i64 0, i64 285
  %166 = load float, ptr %165, align 4, !tbaa !19
  %167 = fpext float %166 to double
  %168 = fadd double %167, 3.000000e-01
  %169 = fptrunc double %168 to float
  store float %169, ptr %165, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 270, ptr %22, align 4, !tbaa !12
  br label %170

170:                                              ; preds = %183, %97
  %171 = load i32, ptr %22, align 4, !tbaa !12
  %172 = icmp ult i32 %171, 286
  br i1 %172, label %174, label %173

173:                                              ; preds = %170
  store i32 8, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %186

174:                                              ; preds = %170
  %175 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %176 = load i32, ptr %22, align 4, !tbaa !12
  %177 = zext i32 %176 to i64
  %178 = getelementptr inbounds [288 x float], ptr %175, i64 0, i64 %177
  %179 = load float, ptr %178, align 4, !tbaa !19
  %180 = fpext float %179 to double
  %181 = fadd double %180, 3.500000e-01
  %182 = fptrunc double %181 to float
  store float %182, ptr %178, align 4, !tbaa !19
  br label %183

183:                                              ; preds = %174
  %184 = load i32, ptr %22, align 4, !tbaa !12
  %185 = add i32 %184, 1
  store i32 %185, ptr %22, align 4, !tbaa !12
  br label %170, !llvm.loop !24

186:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  store i32 0, ptr %23, align 4, !tbaa !12
  br label %187

187:                                              ; preds = %204, %186
  %188 = load i32, ptr %23, align 4, !tbaa !12
  %189 = icmp ult i32 %188, 286
  br i1 %189, label %191, label %190

190:                                              ; preds = %187
  store i32 11, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %207

191:                                              ; preds = %187
  %192 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %193 = load i32, ptr %23, align 4, !tbaa !12
  %194 = zext i32 %193 to i64
  %195 = getelementptr inbounds [288 x float], ptr %192, i64 0, i64 %194
  %196 = load float, ptr %195, align 4, !tbaa !19
  %197 = fcmp olt float %196, 1.000000e+00
  br i1 %197, label %198, label %203

198:                                              ; preds = %191
  %199 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %200 = load i32, ptr %23, align 4, !tbaa !12
  %201 = zext i32 %200 to i64
  %202 = getelementptr inbounds [288 x float], ptr %199, i64 0, i64 %201
  store float 1.000000e+00, ptr %202, align 4, !tbaa !19
  br label %203

203:                                              ; preds = %198, %191
  br label %204

204:                                              ; preds = %203
  %205 = load i32, ptr %23, align 4, !tbaa !12
  %206 = add i32 %205, 1
  store i32 %206, ptr %23, align 4, !tbaa !12
  br label %187, !llvm.loop !25

207:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  store i32 0, ptr %24, align 4, !tbaa !12
  br label %208

208:                                              ; preds = %225, %207
  %209 = load i32, ptr %24, align 4, !tbaa !12
  %210 = icmp ult i32 %209, 30
  br i1 %210, label %212, label %211

211:                                              ; preds = %208
  store i32 14, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %228

212:                                              ; preds = %208
  %213 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 3
  %214 = load i32, ptr %24, align 4, !tbaa !12
  %215 = zext i32 %214 to i64
  %216 = getelementptr inbounds [32 x float], ptr %213, i64 0, i64 %215
  %217 = load float, ptr %216, align 4, !tbaa !19
  %218 = fcmp olt float %217, 1.000000e+00
  br i1 %218, label %219, label %224

219:                                              ; preds = %212
  %220 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 3
  %221 = load i32, ptr %24, align 4, !tbaa !12
  %222 = zext i32 %221 to i64
  %223 = getelementptr inbounds [32 x float], ptr %220, i64 0, i64 %222
  store float 1.000000e+00, ptr %223, align 4, !tbaa !19
  br label %224

224:                                              ; preds = %219, %212
  br label %225

225:                                              ; preds = %224
  %226 = load i32, ptr %24, align 4, !tbaa !12
  %227 = add i32 %226, 1
  store i32 %227, ptr %24, align 4, !tbaa !12
  br label %208, !llvm.loop !26

228:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  store i32 0, ptr %25, align 4, !tbaa !12
  br label %229

229:                                              ; preds = %246, %228
  %230 = load i32, ptr %25, align 4, !tbaa !12
  %231 = icmp ult i32 %230, 286
  br i1 %231, label %233, label %232

232:                                              ; preds = %229
  store i32 17, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %249

233:                                              ; preds = %229
  %234 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %235 = load i32, ptr %25, align 4, !tbaa !12
  %236 = zext i32 %235 to i64
  %237 = getelementptr inbounds [288 x float], ptr %234, i64 0, i64 %236
  %238 = load float, ptr %237, align 4, !tbaa !19
  %239 = fcmp ogt float %238, 1.500000e+01
  br i1 %239, label %240, label %245

240:                                              ; preds = %233
  %241 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 2
  %242 = load i32, ptr %25, align 4, !tbaa !12
  %243 = zext i32 %242 to i64
  %244 = getelementptr inbounds [288 x float], ptr %241, i64 0, i64 %243
  store float 1.500000e+01, ptr %244, align 4, !tbaa !19
  br label %245

245:                                              ; preds = %240, %233
  br label %246

246:                                              ; preds = %245
  %247 = load i32, ptr %25, align 4, !tbaa !12
  %248 = add i32 %247, 1
  store i32 %248, ptr %25, align 4, !tbaa !12
  br label %229, !llvm.loop !27

249:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  store i32 0, ptr %26, align 4, !tbaa !12
  br label %250

250:                                              ; preds = %267, %249
  %251 = load i32, ptr %26, align 4, !tbaa !12
  %252 = icmp ult i32 %251, 30
  br i1 %252, label %254, label %253

253:                                              ; preds = %250
  store i32 20, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %270

254:                                              ; preds = %250
  %255 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 3
  %256 = load i32, ptr %26, align 4, !tbaa !12
  %257 = zext i32 %256 to i64
  %258 = getelementptr inbounds [32 x float], ptr %255, i64 0, i64 %257
  %259 = load float, ptr %258, align 4, !tbaa !19
  %260 = fcmp ogt float %259, 1.500000e+01
  br i1 %260, label %261, label %266

261:                                              ; preds = %254
  %262 = getelementptr inbounds %struct.SymbolStats, ptr %17, i32 0, i32 3
  %263 = load i32, ptr %26, align 4, !tbaa !12
  %264 = zext i32 %263 to i64
  %265 = getelementptr inbounds [32 x float], ptr %262, i64 0, i64 %264
  store float 1.500000e+01, ptr %265, align 4, !tbaa !19
  br label %266

266:                                              ; preds = %261, %254
  br label %267

267:                                              ; preds = %266
  %268 = load i32, ptr %26, align 4, !tbaa !12
  %269 = add i32 %268, 1
  store i32 %269, ptr %26, align 4, !tbaa !12
  br label %250, !llvm.loop !28

270:                                              ; preds = %253
  br label %271

271:                                              ; preds = %270, %51
  %272 = load i8, ptr %14, align 1, !tbaa !11
  %273 = icmp ne i8 %272, 0
  br i1 %273, label %281, label %274

274:                                              ; preds = %271
  %275 = load ptr, ptr %9, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.ZopfliOptions, ptr %275, i32 0, i32 10
  %277 = load i32, ptr %276, align 4, !tbaa !29
  %278 = icmp ne i32 %277, 0
  br i1 %278, label %281, label %279

279:                                              ; preds = %274
  %280 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @st)
  call void @MixCostmodels(ptr noundef %280, ptr noundef %17, float noundef 0x3FC99999A0000000)
  br label %281

281:                                              ; preds = %279, %274, %271
  call void @llvm.lifetime.end.p0(i64 3840, ptr %19) #8
  br label %285

282:                                              ; preds = %46
  call void @llvm.lifetime.start.p0(i64 3840, ptr %27) #8
  %283 = load ptr, ptr %15, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %283, i64 3840, i1 false), !tbaa.struct !17
  %284 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @st)
  call void @MixCostmodels(ptr noundef %27, ptr noundef %284, float noundef 0x3FD3333340000000)
  call void @llvm.lifetime.end.p0(i64 3840, ptr %27) #8
  br label %285

285:                                              ; preds = %282, %281
  %286 = load ptr, ptr %13, align 8, !tbaa !5
  call void @ZopfliInitLZ77Store(ptr noundef %286)
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %287 = load i64, ptr %12, align 8, !tbaa !9
  %288 = load i64, ptr %11, align 8, !tbaa !9
  %289 = sub i64 %287, %288
  %290 = add i64 %289, 1
  %291 = mul i64 4, %290
  %292 = call noalias ptr @malloc(i64 noundef %291) #9
  store ptr %292, ptr %28, align 8, !tbaa !5
  %293 = load ptr, ptr %28, align 8, !tbaa !5
  %294 = icmp ne ptr %293, null
  br i1 %294, label %296, label %295

295:                                              ; preds = %285
  call void @exit(i32 noundef 1) #10
  unreachable

296:                                              ; preds = %285
  %297 = load ptr, ptr %9, align 8, !tbaa !5
  %298 = load ptr, ptr %10, align 8, !tbaa !5
  %299 = load i64, ptr %11, align 8, !tbaa !9
  %300 = load i64, ptr %12, align 8, !tbaa !9
  %301 = load ptr, ptr %28, align 8, !tbaa !5
  %302 = load ptr, ptr %9, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.ZopfliOptions, ptr %302, i32 0, i32 8
  %304 = load i32, ptr %303, align 4, !tbaa !16
  %305 = icmp ne i32 %304, 0
  br i1 %305, label %306, label %308

306:                                              ; preds = %296
  %307 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @st)
  br label %309

308:                                              ; preds = %296
  br label %309

309:                                              ; preds = %308, %306
  %310 = phi ptr [ %307, %306 ], [ %17, %308 ]
  %311 = load ptr, ptr %13, align 8, !tbaa !5
  %312 = load i32, ptr %16, align 4, !tbaa !12
  call void @LZ77OptimalRun(ptr noundef %297, ptr noundef %298, i64 noundef %299, i64 noundef %300, ptr noundef %301, ptr noundef %310, ptr noundef %311, i8 noundef zeroext 0, ptr noundef null, i32 noundef %312, i32 noundef 0)
  %313 = load ptr, ptr %28, align 8, !tbaa !5
  call void @free(ptr noundef %313) #8
  %314 = load ptr, ptr %9, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.ZopfliOptions, ptr %314, i32 0, i32 10
  %316 = load i32, ptr %315, align 4, !tbaa !29
  %317 = icmp ne i32 %316, 0
  br i1 %317, label %321, label %318

318:                                              ; preds = %309
  %319 = load ptr, ptr %13, align 8, !tbaa !5
  %320 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @st)
  call void @GetStatistics(ptr noundef %319, ptr noundef %320)
  br label %321

321:                                              ; preds = %318, %309
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  store i32 0, ptr %18, align 4
  br label %322

322:                                              ; preds = %321, %33
  call void @llvm.lifetime.end.p0(i64 3840, ptr %17) #8
  %323 = load i32, ptr %18, align 4
  switch i32 %323, label %325 [
    i32 0, label %324
    i32 1, label %324
  ]

324:                                              ; preds = %322, %322
  ret void

325:                                              ; preds = %322
  unreachable
}

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

; Function Attrs: nounwind uwtable
declare hidden void @ZopfliLZ77Optimal(ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, i8 noundef zeroext, ptr noundef, i32 noundef) #0

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: nounwind uwtable
declare hidden void @CopyStats(ptr noundef, ptr noundef) #0

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

; Function Attrs: nounwind uwtable
declare hidden void @MixCostmodels(ptr noundef, ptr noundef, float noundef) #0

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #3

declare void @ZopfliInitLZ77Store(ptr noundef) #4

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #5

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #6

; Function Attrs: nounwind uwtable
declare hidden void @LZ77OptimalRun(ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, i8 noundef zeroext, ptr noundef, i32 noundef, i32 noundef) #0

; Function Attrs: nounwind
declare void @free(ptr noundef) #7

attributes #0 = { nounwind 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { "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 = { nounwind allocsize(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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { nounwind allocsize(0) }
attributes #10 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !13, i64 0}
!15 = !{!"ZopfliOptions", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32, !13, i64 36, !13, i64 40, !13, i64 44, !13, i64 48, !13, i64 52, !13, i64 56, !13, i64 60, !13, i64 64, !13, i64 68}
!16 = !{!15, !13, i64 32}
!17 = !{i64 0, i64 2304, !11, i64 2304, i64 256, !11, i64 2560, i64 1152, !11, i64 3712, i64 128, !11}
!18 = !{!15, !13, i64 44}
!19 = !{!20, !20, i64 0}
!20 = !{!"float", !7, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = distinct !{!24, !22}
!25 = distinct !{!25, !22}
!26 = distinct !{!26, !22}
!27 = distinct !{!27, !22}
!28 = distinct !{!28, !22}
!29 = !{!15, !13, i64 40}


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

%struct.SymbolStats = type { [288 x i64], [32 x i64], [288 x float], [32 x float] }

@st = external hidden thread_local global %struct.SymbolStats, align 8

; Function Attrs: nounwind uwtable
declare dso_local void @GetStatistics(ptr noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @ZopfliLZ77Optimal2(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef %4, i8 noundef zeroext %5, ptr noundef %6, i32 noundef %7) local_unnamed_addr #0 {
  %9 = alloca %struct.SymbolStats, align 8
  %10 = alloca %struct.SymbolStats, align 8
  %11 = alloca %struct.SymbolStats, align 8
  call void @llvm.lifetime.start.p0(i64 3840, ptr nonnull %9) #8
  %12 = load i32, ptr %0, align 4, !tbaa !5
  %.not = icmp eq i32 %12, 1
  br i1 %.not, label %14, label %13

13:                                               ; preds = %8
  tail call void @ZopfliLZ77Optimal(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef %4, i8 noundef zeroext %5, ptr noundef %6, i32 noundef %7)
  br label %430

14:                                               ; preds = %8
  %.not64 = icmp eq i8 %5, 0
  br i1 %.not64, label %15, label %18

15:                                               ; preds = %14
  %16 = getelementptr inbounds i8, ptr %0, i64 32
  %17 = load i32, ptr %16, align 4, !tbaa !10
  %.not65 = icmp eq i32 %17, 0
  br i1 %.not65, label %18, label %414

18:                                               ; preds = %15, %14
  call void @llvm.lifetime.start.p0(i64 3840, ptr nonnull %10) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(3840) %10, ptr noundef nonnull align 8 dereferenceable(3840) %6, i64 3840, i1 false), !tbaa.struct !11
  call void @CopyStats(ptr noundef nonnull %10, ptr noundef nonnull %9)
  %19 = getelementptr inbounds i8, ptr %0, i64 44
  %20 = load i32, ptr %19, align 4, !tbaa !13
  %.not66 = icmp eq i32 %20, 0
  br i1 %.not66, label %.loopexit, label %.preheader77

.preheader77:                                     ; preds = %18
  %21 = getelementptr inbounds i8, ptr %9, i64 2560
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %.preheader77
  %index = phi i64 [ 0, %.preheader77 ], [ %index.next, %vector.body ]
  %22 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %index
  %23 = getelementptr inbounds i8, ptr %22, i64 16
  %wide.load = load <4 x float>, ptr %22, align 8, !tbaa !14
  %wide.load110 = load <4 x float>, ptr %23, align 8, !tbaa !14
  %24 = fpext <4 x float> %wide.load to <4 x double>
  %25 = fpext <4 x float> %wide.load110 to <4 x double>
  %26 = fadd <4 x double> %24, <double -2.000000e-01, double -2.000000e-01, double -2.000000e-01, double -2.000000e-01>
  %27 = fadd <4 x double> %25, <double -2.000000e-01, double -2.000000e-01, double -2.000000e-01, double -2.000000e-01>
  %28 = fptrunc <4 x double> %26 to <4 x float>
  %29 = fptrunc <4 x double> %27 to <4 x float>
  store <4 x float> %28, ptr %22, align 8, !tbaa !14
  store <4 x float> %29, ptr %23, align 8, !tbaa !14
  %index.next = add nuw i64 %index, 8
  %30 = icmp eq i64 %index.next, 256
  br i1 %30, label %middle.block, label %vector.body, !llvm.loop !16

middle.block:                                     ; preds = %vector.body
  %31 = sub i64 %3, %2
  %32 = icmp ult i64 %31, 1000
  br i1 %32, label %vector.body115, label %.loopexit76

vector.body115:                                   ; preds = %middle.block, %vector.body115
  %index116 = phi i64 [ %index.next119, %vector.body115 ], [ 0, %middle.block ]
  %33 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %index116
  %34 = getelementptr inbounds i8, ptr %33, i64 16
  %wide.load117 = load <4 x float>, ptr %33, align 8, !tbaa !14
  %wide.load118 = load <4 x float>, ptr %34, align 8, !tbaa !14
  %35 = fpext <4 x float> %wide.load117 to <4 x double>
  %36 = fpext <4 x float> %wide.load118 to <4 x double>
  %37 = fadd <4 x double> %35, <double -2.000000e-01, double -2.000000e-01, double -2.000000e-01, double -2.000000e-01>
  %38 = fadd <4 x double> %36, <double -2.000000e-01, double -2.000000e-01, double -2.000000e-01, double -2.000000e-01>
  %39 = fptrunc <4 x double> %37 to <4 x float>
  %40 = fptrunc <4 x double> %38 to <4 x float>
  store <4 x float> %39, ptr %33, align 8, !tbaa !14
  store <4 x float> %40, ptr %34, align 8, !tbaa !14
  %index.next119 = add nuw i64 %index116, 8
  %41 = icmp eq i64 %index.next119, 256
  br i1 %41, label %.loopexit76, label %vector.body115, !llvm.loop !20

.loopexit76:                                      ; preds = %vector.body115, %middle.block
  %42 = load <2 x float>, ptr %21, align 8, !tbaa !14
  %43 = fpext <2 x float> %42 to <2 x double>
  %44 = fadd <2 x double> %43, <double -1.200000e+00, double -4.000000e-01>
  %45 = fptrunc <2 x double> %44 to <2 x float>
  store <2 x float> %45, ptr %21, align 8, !tbaa !14
  %46 = getelementptr inbounds i8, ptr %9, i64 3712
  %47 = load float, ptr %46, align 8, !tbaa !14
  %48 = fadd float %47, -1.500000e+00
  store float %48, ptr %46, align 8, !tbaa !14
  %49 = getelementptr inbounds i8, ptr %9, i64 3724
  %50 = load float, ptr %49, align 4, !tbaa !14
  %51 = fpext float %50 to double
  %52 = fadd double %51, -1.400000e+00
  %53 = fptrunc double %52 to float
  store float %53, ptr %49, align 4, !tbaa !14
  %54 = getelementptr inbounds i8, ptr %9, i64 3580
  %55 = load float, ptr %54, align 4, !tbaa !14
  %56 = fadd float %55, -5.000000e-01
  store float %56, ptr %54, align 4, !tbaa !14
  %57 = getelementptr inbounds i8, ptr %9, i64 3588
  %58 = load <2 x float>, ptr %57, align 4, !tbaa !14
  %59 = fpext <2 x float> %58 to <2 x double>
  %60 = fadd <2 x double> %59, <double -8.000000e-01, double 3.000000e-01>
  %61 = fptrunc <2 x double> %60 to <2 x float>
  store <2 x float> %61, ptr %57, align 4, !tbaa !14
  %62 = getelementptr inbounds i8, ptr %9, i64 3648
  %63 = load float, ptr %62, align 8, !tbaa !14
  %64 = fpext float %63 to double
  %65 = fadd double %64, 1.200000e+00
  %66 = fptrunc double %65 to float
  %67 = getelementptr inbounds i8, ptr %9, i64 3688
  %68 = getelementptr inbounds i8, ptr %9, i64 3640
  %69 = load <4 x float>, ptr %68, align 8
  %70 = getelementptr inbounds i8, ptr %9, i64 3652
  %71 = load float, ptr %70, align 4, !tbaa !14
  %72 = insertelement <4 x float> %69, float %66, i64 2
  %73 = insertelement <4 x float> %72, float %71, i64 3
  %74 = fpext <4 x float> %73 to <4 x double>
  %75 = fadd <4 x double> %74, <double 3.500000e-01, double 3.500000e-01, double 3.500000e-01, double 3.500000e-01>
  %76 = fptrunc <4 x double> %75 to <4 x float>
  store <4 x float> %76, ptr %68, align 8, !tbaa !14
  %77 = getelementptr inbounds i8, ptr %9, i64 3656
  %78 = load <4 x float>, ptr %77, align 8, !tbaa !14
  %79 = fpext <4 x float> %78 to <4 x double>
  %80 = fadd <4 x double> %79, <double 3.500000e-01, double 3.500000e-01, double 3.500000e-01, double 3.500000e-01>
  %81 = fptrunc <4 x double> %80 to <4 x float>
  store <4 x float> %81, ptr %77, align 8, !tbaa !14
  %82 = getelementptr inbounds i8, ptr %9, i64 3672
  %83 = load <4 x float>, ptr %82, align 8, !tbaa !14
  %84 = fpext <4 x float> %83 to <4 x double>
  %85 = fadd <4 x double> %84, <double 3.500000e-01, double 3.500000e-01, double 3.500000e-01, double 3.500000e-01>
  %86 = fptrunc <4 x double> %85 to <4 x float>
  store <4 x float> %86, ptr %82, align 8, !tbaa !14
  %87 = getelementptr inbounds i8, ptr %9, i64 3688
  %88 = load <4 x float>, ptr %67, align 8, !tbaa !14
  %89 = fpext <4 x float> %88 to <4 x double>
  %90 = fadd <4 x double> %89, <double 2.000000e-01, double 2.000000e-01, double 4.000000e-01, double 3.000000e-01>
  %91 = fptrunc <4 x double> %90 to <4 x float>
  %92 = fpext <4 x float> %91 to <4 x double>
  %93 = fadd <4 x double> %92, <double 3.500000e-01, double 3.500000e-01, double 3.500000e-01, double 3.500000e-01>
  %94 = fptrunc <4 x double> %93 to <4 x float>
  store <4 x float> %94, ptr %87, align 8, !tbaa !14
  br label %vector.body124

vector.body124:                                   ; preds = %pred.store.continue141, %.loopexit76
  %index125 = phi i64 [ 0, %.loopexit76 ], [ %index.next142, %pred.store.continue141 ]
  %95 = or disjoint i64 %index125, 4
  %96 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %index125
  %97 = getelementptr inbounds i8, ptr %96, i64 16
  %wide.load126 = load <4 x float>, ptr %96, align 8, !tbaa !14
  %wide.load127 = load <4 x float>, ptr %97, align 8, !tbaa !14
  %98 = fcmp olt <4 x float> %wide.load126, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
  %99 = fcmp olt <4 x float> %wide.load127, <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>
  %100 = extractelement <4 x i1> %98, i64 0
  br i1 %100, label %pred.store.if, label %pred.store.continue

pred.store.if:                                    ; preds = %vector.body124
  %101 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %index125
  store float 1.000000e+00, ptr %101, align 8, !tbaa !14
  br label %pred.store.continue

pred.store.continue:                              ; preds = %pred.store.if, %vector.body124
  %102 = extractelement <4 x i1> %98, i64 1
  br i1 %102, label %pred.store.if128, label %pred.store.continue129

pred.store.if128:                                 ; preds = %pred.store.continue
  %103 = or disjoint i64 %index125, 1
  %104 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %103
  store float 1.000000e+00, ptr %104, align 4, !tbaa !14
  br label %pred.store.continue129

pred.store.continue129:                           ; preds = %pred.store.if128, %pred.store.continue
  %105 = extractelement <4 x i1> %98, i64 2
  br i1 %105, label %pred.store.if130, label %pred.store.continue131

pred.store.if130:                                 ; preds = %pred.store.continue129
  %106 = or disjoint i64 %index125, 2
  %107 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %106
  store float 1.000000e+00, ptr %107, align 8, !tbaa !14
  br label %pred.store.continue131

pred.store.continue131:                           ; preds = %pred.store.if130, %pred.store.continue129
  %108 = extractelement <4 x i1> %98, i64 3
  br i1 %108, label %pred.store.if132, label %pred.store.continue133

pred.store.if132:                                 ; preds = %pred.store.continue131
  %109 = or disjoint i64 %index125, 3
  %110 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %109
  store float 1.000000e+00, ptr %110, align 4, !tbaa !14
  br label %pred.store.continue133

pred.store.continue133:                           ; preds = %pred.store.if132, %pred.store.continue131
  %111 = extractelement <4 x i1> %99, i64 0
  br i1 %111, label %pred.store.if134, label %pred.store.continue135

pred.store.if134:                                 ; preds = %pred.store.continue133
  %112 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %95
  store float 1.000000e+00, ptr %112, align 8, !tbaa !14
  br label %pred.store.continue135

pred.store.continue135:                           ; preds = %pred.store.if134, %pred.store.continue133
  %113 = extractelement <4 x i1> %99, i64 1
  br i1 %113, label %pred.store.if136, label %pred.store.continue137

pred.store.if136:                                 ; preds = %pred.store.continue135
  %114 = or disjoint i64 %index125, 5
  %115 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %114
  store float 1.000000e+00, ptr %115, align 4, !tbaa !14
  br label %pred.store.continue137

pred.store.continue137:                           ; preds = %pred.store.if136, %pred.store.continue135
  %116 = extractelement <4 x i1> %99, i64 2
  br i1 %116, label %pred.store.if138, label %pred.store.continue139

pred.store.if138:                                 ; preds = %pred.store.continue137
  %117 = or disjoint i64 %index125, 6
  %118 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %117
  store float 1.000000e+00, ptr %118, align 8, !tbaa !14
  br label %pred.store.continue139

pred.store.continue139:                           ; preds = %pred.store.if138, %pred.store.continue137
  %119 = extractelement <4 x i1> %99, i64 3
  br i1 %119, label %pred.store.if140, label %pred.store.continue141

pred.store.if140:                                 ; preds = %pred.store.continue139
  %120 = or disjoint i64 %index125, 7
  %121 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %120
  store float 1.000000e+00, ptr %121, align 4, !tbaa !14
  br label %pred.store.continue141

pred.store.continue141:                           ; preds = %pred.store.if140, %pred.store.continue139
  %index.next142 = add nuw i64 %index125, 8
  %122 = icmp eq i64 %index.next142, 280
  br i1 %122, label %.preheader74, label %vector.body124, !llvm.loop !21

.preheader74:                                     ; preds = %pred.store.continue141
  %123 = getelementptr inbounds i8, ptr %9, i64 3680
  %124 = load float, ptr %123, align 8, !tbaa !14
  %125 = fcmp olt float %124, 1.000000e+00
  br i1 %125, label %126, label %.preheader74.1

126:                                              ; preds = %.preheader74
  store float 1.000000e+00, ptr %123, align 8, !tbaa !14
  br label %.preheader74.1

.preheader74.1:                                   ; preds = %.preheader74, %126
  %127 = getelementptr inbounds i8, ptr %9, i64 3684
  %128 = load float, ptr %127, align 4, !tbaa !14
  %129 = fcmp olt float %128, 1.000000e+00
  br i1 %129, label %130, label %.preheader74.2

130:                                              ; preds = %.preheader74.1
  store float 1.000000e+00, ptr %127, align 4, !tbaa !14
  br label %.preheader74.2

.preheader74.2:                                   ; preds = %130, %.preheader74.1
  %131 = getelementptr inbounds i8, ptr %9, i64 3688
  %132 = load float, ptr %131, align 8, !tbaa !14
  %133 = fcmp olt float %132, 1.000000e+00
  br i1 %133, label %134, label %.preheader74.3

134:                                              ; preds = %.preheader74.2
  store float 1.000000e+00, ptr %131, align 8, !tbaa !14
  br label %.preheader74.3

.preheader74.3:                                   ; preds = %134, %.preheader74.2
  %135 = getelementptr inbounds i8, ptr %9, i64 3692
  %136 = load float, ptr %135, align 4, !tbaa !14
  %137 = fcmp olt float %136, 1.000000e+00
  br i1 %137, label %138, label %.preheader74.4

138:                                              ; preds = %.preheader74.3
  store float 1.000000e+00, ptr %135, align 4, !tbaa !14
  br label %.preheader74.4

.preheader74.4:                                   ; preds = %138, %.preheader74.3
  %139 = getelementptr inbounds i8, ptr %9, i64 3696
  %140 = load float, ptr %139, align 8, !tbaa !14
  %141 = fcmp olt float %140, 1.000000e+00
  br i1 %141, label %142, label %.preheader74.5

142:                                              ; preds = %.preheader74.4
  store float 1.000000e+00, ptr %139, align 8, !tbaa !14
  br label %.preheader74.5

.preheader74.5:                                   ; preds = %142, %.preheader74.4
  %143 = getelementptr inbounds i8, ptr %9, i64 3700
  %144 = load float, ptr %143, align 4, !tbaa !14
  %145 = fcmp olt float %144, 1.000000e+00
  br i1 %145, label %146, label %.preheader73.preheader

146:                                              ; preds = %.preheader74.5
  store float 1.000000e+00, ptr %143, align 4, !tbaa !14
  br label %.preheader73.preheader

.preheader73.preheader:                           ; preds = %146, %.preheader74.5
  %147 = load float, ptr %46, align 8, !tbaa !14
  %148 = fcmp olt float %147, 1.000000e+00
  br i1 %148, label %149, label %.preheader73.1

149:                                              ; preds = %.preheader73.preheader
  store float 1.000000e+00, ptr %46, align 8, !tbaa !14
  br label %.preheader73.1

.preheader73.1:                                   ; preds = %.preheader73.preheader, %149
  %150 = getelementptr inbounds i8, ptr %9, i64 3716
  %151 = load float, ptr %150, align 4, !tbaa !14
  %152 = fcmp olt float %151, 1.000000e+00
  br i1 %152, label %153, label %.preheader73.2

153:                                              ; preds = %.preheader73.1
  store float 1.000000e+00, ptr %150, align 4, !tbaa !14
  br label %.preheader73.2

.preheader73.2:                                   ; preds = %153, %.preheader73.1
  %154 = getelementptr inbounds i8, ptr %9, i64 3720
  %155 = load float, ptr %154, align 8, !tbaa !14
  %156 = fcmp olt float %155, 1.000000e+00
  br i1 %156, label %157, label %.preheader73.3

157:                                              ; preds = %.preheader73.2
  store float 1.000000e+00, ptr %154, align 8, !tbaa !14
  br label %.preheader73.3

.preheader73.3:                                   ; preds = %157, %.preheader73.2
  %158 = getelementptr inbounds i8, ptr %9, i64 3724
  %159 = load float, ptr %158, align 4, !tbaa !14
  %160 = fcmp olt float %159, 1.000000e+00
  br i1 %160, label %161, label %.preheader73.4

161:                                              ; preds = %.preheader73.3
  store float 1.000000e+00, ptr %158, align 4, !tbaa !14
  br label %.preheader73.4

.preheader73.4:                                   ; preds = %161, %.preheader73.3
  %162 = getelementptr inbounds i8, ptr %9, i64 3728
  %163 = load float, ptr %162, align 8, !tbaa !14
  %164 = fcmp olt float %163, 1.000000e+00
  br i1 %164, label %165, label %.preheader73.5

165:                                              ; preds = %.preheader73.4
  store float 1.000000e+00, ptr %162, align 8, !tbaa !14
  br label %.preheader73.5

.preheader73.5:                                   ; preds = %165, %.preheader73.4
  %166 = getelementptr inbounds i8, ptr %9, i64 3732
  %167 = load float, ptr %166, align 4, !tbaa !14
  %168 = fcmp olt float %167, 1.000000e+00
  br i1 %168, label %169, label %.preheader73.6

169:                                              ; preds = %.preheader73.5
  store float 1.000000e+00, ptr %166, align 4, !tbaa !14
  br label %.preheader73.6

.preheader73.6:                                   ; preds = %169, %.preheader73.5
  %170 = getelementptr inbounds i8, ptr %9, i64 3736
  %171 = load float, ptr %170, align 8, !tbaa !14
  %172 = fcmp olt float %171, 1.000000e+00
  br i1 %172, label %173, label %.preheader73.7

173:                                              ; preds = %.preheader73.6
  store float 1.000000e+00, ptr %170, align 8, !tbaa !14
  br label %.preheader73.7

.preheader73.7:                                   ; preds = %173, %.preheader73.6
  %174 = getelementptr inbounds i8, ptr %9, i64 3740
  %175 = load float, ptr %174, align 4, !tbaa !14
  %176 = fcmp olt float %175, 1.000000e+00
  br i1 %176, label %177, label %.preheader73.8

177:                                              ; preds = %.preheader73.7
  store float 1.000000e+00, ptr %174, align 4, !tbaa !14
  br label %.preheader73.8

.preheader73.8:                                   ; preds = %177, %.preheader73.7
  %178 = getelementptr inbounds i8, ptr %9, i64 3744
  %179 = load float, ptr %178, align 8, !tbaa !14
  %180 = fcmp olt float %179, 1.000000e+00
  br i1 %180, label %181, label %.preheader73.9

181:                                              ; preds = %.preheader73.8
  store float 1.000000e+00, ptr %178, align 8, !tbaa !14
  br label %.preheader73.9

.preheader73.9:                                   ; preds = %181, %.preheader73.8
  %182 = getelementptr inbounds i8, ptr %9, i64 3748
  %183 = load float, ptr %182, align 4, !tbaa !14
  %184 = fcmp olt float %183, 1.000000e+00
  br i1 %184, label %185, label %.preheader73.10

185:                                              ; preds = %.preheader73.9
  store float 1.000000e+00, ptr %182, align 4, !tbaa !14
  br label %.preheader73.10

.preheader73.10:                                  ; preds = %185, %.preheader73.9
  %186 = getelementptr inbounds i8, ptr %9, i64 3752
  %187 = load float, ptr %186, align 8, !tbaa !14
  %188 = fcmp olt float %187, 1.000000e+00
  br i1 %188, label %189, label %.preheader73.11

189:                                              ; preds = %.preheader73.10
  store float 1.000000e+00, ptr %186, align 8, !tbaa !14
  br label %.preheader73.11

.preheader73.11:                                  ; preds = %189, %.preheader73.10
  %190 = getelementptr inbounds i8, ptr %9, i64 3756
  %191 = load float, ptr %190, align 4, !tbaa !14
  %192 = fcmp olt float %191, 1.000000e+00
  br i1 %192, label %193, label %.preheader73.12

193:                                              ; preds = %.preheader73.11
  store float 1.000000e+00, ptr %190, align 4, !tbaa !14
  br label %.preheader73.12

.preheader73.12:                                  ; preds = %193, %.preheader73.11
  %194 = getelementptr inbounds i8, ptr %9, i64 3760
  %195 = load float, ptr %194, align 8, !tbaa !14
  %196 = fcmp olt float %195, 1.000000e+00
  br i1 %196, label %197, label %.preheader73.13

197:                                              ; preds = %.preheader73.12
  store float 1.000000e+00, ptr %194, align 8, !tbaa !14
  br label %.preheader73.13

.preheader73.13:                                  ; preds = %197, %.preheader73.12
  %198 = getelementptr inbounds i8, ptr %9, i64 3764
  %199 = load float, ptr %198, align 4, !tbaa !14
  %200 = fcmp olt float %199, 1.000000e+00
  br i1 %200, label %201, label %.preheader73.14

201:                                              ; preds = %.preheader73.13
  store float 1.000000e+00, ptr %198, align 4, !tbaa !14
  br label %.preheader73.14

.preheader73.14:                                  ; preds = %201, %.preheader73.13
  %202 = getelementptr inbounds i8, ptr %9, i64 3768
  %203 = load float, ptr %202, align 8, !tbaa !14
  %204 = fcmp olt float %203, 1.000000e+00
  br i1 %204, label %205, label %.preheader73.15

205:                                              ; preds = %.preheader73.14
  store float 1.000000e+00, ptr %202, align 8, !tbaa !14
  br label %.preheader73.15

.preheader73.15:                                  ; preds = %205, %.preheader73.14
  %206 = getelementptr inbounds i8, ptr %9, i64 3772
  %207 = load float, ptr %206, align 4, !tbaa !14
  %208 = fcmp olt float %207, 1.000000e+00
  br i1 %208, label %209, label %.preheader73.16

209:                                              ; preds = %.preheader73.15
  store float 1.000000e+00, ptr %206, align 4, !tbaa !14
  br label %.preheader73.16

.preheader73.16:                                  ; preds = %209, %.preheader73.15
  %210 = getelementptr inbounds i8, ptr %9, i64 3776
  %211 = load float, ptr %210, align 8, !tbaa !14
  %212 = fcmp olt float %211, 1.000000e+00
  br i1 %212, label %213, label %.preheader73.17

213:                                              ; preds = %.preheader73.16
  store float 1.000000e+00, ptr %210, align 8, !tbaa !14
  br label %.preheader73.17

.preheader73.17:                                  ; preds = %213, %.preheader73.16
  %214 = getelementptr inbounds i8, ptr %9, i64 3780
  %215 = load float, ptr %214, align 4, !tbaa !14
  %216 = fcmp olt float %215, 1.000000e+00
  br i1 %216, label %217, label %.preheader73.18

217:                                              ; preds = %.preheader73.17
  store float 1.000000e+00, ptr %214, align 4, !tbaa !14
  br label %.preheader73.18

.preheader73.18:                                  ; preds = %217, %.preheader73.17
  %218 = getelementptr inbounds i8, ptr %9, i64 3784
  %219 = load float, ptr %218, align 8, !tbaa !14
  %220 = fcmp olt float %219, 1.000000e+00
  br i1 %220, label %221, label %.preheader73.19

221:                                              ; preds = %.preheader73.18
  store float 1.000000e+00, ptr %218, align 8, !tbaa !14
  br label %.preheader73.19

.preheader73.19:                                  ; preds = %221, %.preheader73.18
  %222 = getelementptr inbounds i8, ptr %9, i64 3788
  %223 = load float, ptr %222, align 4, !tbaa !14
  %224 = fcmp olt float %223, 1.000000e+00
  br i1 %224, label %225, label %.preheader73.20

225:                                              ; preds = %.preheader73.19
  store float 1.000000e+00, ptr %222, align 4, !tbaa !14
  br label %.preheader73.20

.preheader73.20:                                  ; preds = %225, %.preheader73.19
  %226 = getelementptr inbounds i8, ptr %9, i64 3792
  %227 = load float, ptr %226, align 8, !tbaa !14
  %228 = fcmp olt float %227, 1.000000e+00
  br i1 %228, label %229, label %.preheader73.21

229:                                              ; preds = %.preheader73.20
  store float 1.000000e+00, ptr %226, align 8, !tbaa !14
  br label %.preheader73.21

.preheader73.21:                                  ; preds = %229, %.preheader73.20
  %230 = getelementptr inbounds i8, ptr %9, i64 3796
  %231 = load float, ptr %230, align 4, !tbaa !14
  %232 = fcmp olt float %231, 1.000000e+00
  br i1 %232, label %233, label %.preheader73.22

233:                                              ; preds = %.preheader73.21
  store float 1.000000e+00, ptr %230, align 4, !tbaa !14
  br label %.preheader73.22

.preheader73.22:                                  ; preds = %233, %.preheader73.21
  %234 = getelementptr inbounds i8, ptr %9, i64 3800
  %235 = load float, ptr %234, align 8, !tbaa !14
  %236 = fcmp olt float %235, 1.000000e+00
  br i1 %236, label %237, label %.preheader73.23

237:                                              ; preds = %.preheader73.22
  store float 1.000000e+00, ptr %234, align 8, !tbaa !14
  br label %.preheader73.23

.preheader73.23:                                  ; preds = %237, %.preheader73.22
  %238 = getelementptr inbounds i8, ptr %9, i64 3804
  %239 = load float, ptr %238, align 4, !tbaa !14
  %240 = fcmp olt float %239, 1.000000e+00
  br i1 %240, label %241, label %.preheader73.24

241:                                              ; preds = %.preheader73.23
  store float 1.000000e+00, ptr %238, align 4, !tbaa !14
  br label %.preheader73.24

.preheader73.24:                                  ; preds = %241, %.preheader73.23
  %242 = getelementptr inbounds i8, ptr %9, i64 3808
  %243 = load float, ptr %242, align 8, !tbaa !14
  %244 = fcmp olt float %243, 1.000000e+00
  br i1 %244, label %245, label %.preheader73.25

245:                                              ; preds = %.preheader73.24
  store float 1.000000e+00, ptr %242, align 8, !tbaa !14
  br label %.preheader73.25

.preheader73.25:                                  ; preds = %245, %.preheader73.24
  %246 = getelementptr inbounds i8, ptr %9, i64 3812
  %247 = load float, ptr %246, align 4, !tbaa !14
  %248 = fcmp olt float %247, 1.000000e+00
  br i1 %248, label %249, label %.preheader73.26

249:                                              ; preds = %.preheader73.25
  store float 1.000000e+00, ptr %246, align 4, !tbaa !14
  br label %.preheader73.26

.preheader73.26:                                  ; preds = %249, %.preheader73.25
  %250 = getelementptr inbounds i8, ptr %9, i64 3816
  %251 = load float, ptr %250, align 8, !tbaa !14
  %252 = fcmp olt float %251, 1.000000e+00
  br i1 %252, label %253, label %.preheader73.27

253:                                              ; preds = %.preheader73.26
  store float 1.000000e+00, ptr %250, align 8, !tbaa !14
  br label %.preheader73.27

.preheader73.27:                                  ; preds = %253, %.preheader73.26
  %254 = getelementptr inbounds i8, ptr %9, i64 3820
  %255 = load float, ptr %254, align 4, !tbaa !14
  %256 = fcmp olt float %255, 1.000000e+00
  br i1 %256, label %257, label %.preheader73.28

257:                                              ; preds = %.preheader73.27
  store float 1.000000e+00, ptr %254, align 4, !tbaa !14
  br label %.preheader73.28

.preheader73.28:                                  ; preds = %257, %.preheader73.27
  %258 = getelementptr inbounds i8, ptr %9, i64 3824
  %259 = load float, ptr %258, align 8, !tbaa !14
  %260 = fcmp olt float %259, 1.000000e+00
  br i1 %260, label %261, label %.preheader73.29

261:                                              ; preds = %.preheader73.28
  store float 1.000000e+00, ptr %258, align 8, !tbaa !14
  br label %.preheader73.29

.preheader73.29:                                  ; preds = %261, %.preheader73.28
  %262 = getelementptr inbounds i8, ptr %9, i64 3828
  %263 = load float, ptr %262, align 4, !tbaa !14
  %264 = fcmp olt float %263, 1.000000e+00
  br i1 %264, label %265, label %vector.body147.preheader

265:                                              ; preds = %.preheader73.29
  store float 1.000000e+00, ptr %262, align 4, !tbaa !14
  br label %vector.body147.preheader

vector.body147.preheader:                         ; preds = %.preheader73.29, %265
  br label %vector.body147

vector.body147:                                   ; preds = %vector.body147.preheader, %pred.store.continue166
  %index148 = phi i64 [ %index.next167, %pred.store.continue166 ], [ 0, %vector.body147.preheader ]
  %266 = or disjoint i64 %index148, 4
  %267 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %index148
  %268 = getelementptr inbounds i8, ptr %267, i64 16
  %wide.load149 = load <4 x float>, ptr %267, align 8, !tbaa !14
  %wide.load150 = load <4 x float>, ptr %268, align 8, !tbaa !14
  %269 = fcmp ogt <4 x float> %wide.load149, <float 1.500000e+01, float 1.500000e+01, float 1.500000e+01, float 1.500000e+01>
  %270 = fcmp ogt <4 x float> %wide.load150, <float 1.500000e+01, float 1.500000e+01, float 1.500000e+01, float 1.500000e+01>
  %271 = extractelement <4 x i1> %269, i64 0
  br i1 %271, label %pred.store.if151, label %pred.store.continue152

pred.store.if151:                                 ; preds = %vector.body147
  %272 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %index148
  store float 1.500000e+01, ptr %272, align 8, !tbaa !14
  br label %pred.store.continue152

pred.store.continue152:                           ; preds = %pred.store.if151, %vector.body147
  %273 = extractelement <4 x i1> %269, i64 1
  br i1 %273, label %pred.store.if153, label %pred.store.continue154

pred.store.if153:                                 ; preds = %pred.store.continue152
  %274 = or disjoint i64 %index148, 1
  %275 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %274
  store float 1.500000e+01, ptr %275, align 4, !tbaa !14
  br label %pred.store.continue154

pred.store.continue154:                           ; preds = %pred.store.if153, %pred.store.continue152
  %276 = extractelement <4 x i1> %269, i64 2
  br i1 %276, label %pred.store.if155, label %pred.store.continue156

pred.store.if155:                                 ; preds = %pred.store.continue154
  %277 = or disjoint i64 %index148, 2
  %278 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %277
  store float 1.500000e+01, ptr %278, align 8, !tbaa !14
  br label %pred.store.continue156

pred.store.continue156:                           ; preds = %pred.store.if155, %pred.store.continue154
  %279 = extractelement <4 x i1> %269, i64 3
  br i1 %279, label %pred.store.if157, label %pred.store.continue158

pred.store.if157:                                 ; preds = %pred.store.continue156
  %280 = or disjoint i64 %index148, 3
  %281 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %280
  store float 1.500000e+01, ptr %281, align 4, !tbaa !14
  br label %pred.store.continue158

pred.store.continue158:                           ; preds = %pred.store.if157, %pred.store.continue156
  %282 = extractelement <4 x i1> %270, i64 0
  br i1 %282, label %pred.store.if159, label %pred.store.continue160

pred.store.if159:                                 ; preds = %pred.store.continue158
  %283 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %266
  store float 1.500000e+01, ptr %283, align 8, !tbaa !14
  br label %pred.store.continue160

pred.store.continue160:                           ; preds = %pred.store.if159, %pred.store.continue158
  %284 = extractelement <4 x i1> %270, i64 1
  br i1 %284, label %pred.store.if161, label %pred.store.continue162

pred.store.if161:                                 ; preds = %pred.store.continue160
  %285 = or disjoint i64 %index148, 5
  %286 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %285
  store float 1.500000e+01, ptr %286, align 4, !tbaa !14
  br label %pred.store.continue162

pred.store.continue162:                           ; preds = %pred.store.if161, %pred.store.continue160
  %287 = extractelement <4 x i1> %270, i64 2
  br i1 %287, label %pred.store.if163, label %pred.store.continue164

pred.store.if163:                                 ; preds = %pred.store.continue162
  %288 = or disjoint i64 %index148, 6
  %289 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %288
  store float 1.500000e+01, ptr %289, align 8, !tbaa !14
  br label %pred.store.continue164

pred.store.continue164:                           ; preds = %pred.store.if163, %pred.store.continue162
  %290 = extractelement <4 x i1> %270, i64 3
  br i1 %290, label %pred.store.if165, label %pred.store.continue166

pred.store.if165:                                 ; preds = %pred.store.continue164
  %291 = or disjoint i64 %index148, 7
  %292 = getelementptr inbounds [288 x float], ptr %21, i64 0, i64 %291
  store float 1.500000e+01, ptr %292, align 4, !tbaa !14
  br label %pred.store.continue166

pred.store.continue166:                           ; preds = %pred.store.if165, %pred.store.continue164
  %index.next167 = add nuw i64 %index148, 8
  %293 = icmp eq i64 %index.next167, 280
  br i1 %293, label %.preheader72, label %vector.body147, !llvm.loop !22

.preheader72:                                     ; preds = %pred.store.continue166
  %294 = getelementptr inbounds i8, ptr %9, i64 3680
  %295 = load float, ptr %294, align 8, !tbaa !14
  %296 = fcmp ogt float %295, 1.500000e+01
  br i1 %296, label %297, label %.preheader72.1

297:                                              ; preds = %.preheader72
  store float 1.500000e+01, ptr %294, align 8, !tbaa !14
  br label %.preheader72.1

.preheader72.1:                                   ; preds = %.preheader72, %297
  %298 = getelementptr inbounds i8, ptr %9, i64 3684
  %299 = load float, ptr %298, align 4, !tbaa !14
  %300 = fcmp ogt float %299, 1.500000e+01
  br i1 %300, label %301, label %.preheader72.2

301:                                              ; preds = %.preheader72.1
  store float 1.500000e+01, ptr %298, align 4, !tbaa !14
  br label %.preheader72.2

.preheader72.2:                                   ; preds = %301, %.preheader72.1
  %302 = getelementptr inbounds i8, ptr %9, i64 3688
  %303 = load float, ptr %302, align 8, !tbaa !14
  %304 = fcmp ogt float %303, 1.500000e+01
  br i1 %304, label %305, label %.preheader72.3

305:                                              ; preds = %.preheader72.2
  store float 1.500000e+01, ptr %302, align 8, !tbaa !14
  br label %.preheader72.3

.preheader72.3:                                   ; preds = %305, %.preheader72.2
  %306 = getelementptr inbounds i8, ptr %9, i64 3692
  %307 = load float, ptr %306, align 4, !tbaa !14
  %308 = fcmp ogt float %307, 1.500000e+01
  br i1 %308, label %309, label %.preheader72.4

309:                                              ; preds = %.preheader72.3
  store float 1.500000e+01, ptr %306, align 4, !tbaa !14
  br label %.preheader72.4

.preheader72.4:                                   ; preds = %309, %.preheader72.3
  %310 = getelementptr inbounds i8, ptr %9, i64 3696
  %311 = load float, ptr %310, align 8, !tbaa !14
  %312 = fcmp ogt float %311, 1.500000e+01
  br i1 %312, label %313, label %.preheader72.5

313:                                              ; preds = %.preheader72.4
  store float 1.500000e+01, ptr %310, align 8, !tbaa !14
  br label %.preheader72.5

.preheader72.5:                                   ; preds = %313, %.preheader72.4
  %314 = getelementptr inbounds i8, ptr %9, i64 3700
  %315 = load float, ptr %314, align 4, !tbaa !14
  %316 = fcmp ogt float %315, 1.500000e+01
  br i1 %316, label %317, label %.preheader.preheader

317:                                              ; preds = %.preheader72.5
  store float 1.500000e+01, ptr %314, align 4, !tbaa !14
  br label %.preheader.preheader

.preheader.preheader:                             ; preds = %317, %.preheader72.5
  %318 = load float, ptr %46, align 8, !tbaa !14
  %319 = fcmp ogt float %318, 1.500000e+01
  br i1 %319, label %320, label %.preheader.1

320:                                              ; preds = %.preheader.preheader
  store float 1.500000e+01, ptr %46, align 8, !tbaa !14
  br label %.preheader.1

.preheader.1:                                     ; preds = %.preheader.preheader, %320
  %321 = load float, ptr %150, align 4, !tbaa !14
  %322 = fcmp ogt float %321, 1.500000e+01
  br i1 %322, label %323, label %.preheader.2

323:                                              ; preds = %.preheader.1
  store float 1.500000e+01, ptr %150, align 4, !tbaa !14
  br label %.preheader.2

.preheader.2:                                     ; preds = %323, %.preheader.1
  %324 = load float, ptr %154, align 8, !tbaa !14
  %325 = fcmp ogt float %324, 1.500000e+01
  br i1 %325, label %326, label %.preheader.3

326:                                              ; preds = %.preheader.2
  store float 1.500000e+01, ptr %154, align 8, !tbaa !14
  br label %.preheader.3

.preheader.3:                                     ; preds = %326, %.preheader.2
  %327 = load float, ptr %158, align 4, !tbaa !14
  %328 = fcmp ogt float %327, 1.500000e+01
  br i1 %328, label %329, label %.preheader.4

329:                                              ; preds = %.preheader.3
  store float 1.500000e+01, ptr %158, align 4, !tbaa !14
  br label %.preheader.4

.preheader.4:                                     ; preds = %329, %.preheader.3
  %330 = load float, ptr %162, align 8, !tbaa !14
  %331 = fcmp ogt float %330, 1.500000e+01
  br i1 %331, label %332, label %.preheader.5

332:                                              ; preds = %.preheader.4
  store float 1.500000e+01, ptr %162, align 8, !tbaa !14
  br label %.preheader.5

.preheader.5:                                     ; preds = %332, %.preheader.4
  %333 = load float, ptr %166, align 4, !tbaa !14
  %334 = fcmp ogt float %333, 1.500000e+01
  br i1 %334, label %335, label %.preheader.6

335:                                              ; preds = %.preheader.5
  store float 1.500000e+01, ptr %166, align 4, !tbaa !14
  br label %.preheader.6

.preheader.6:                                     ; preds = %335, %.preheader.5
  %336 = load float, ptr %170, align 8, !tbaa !14
  %337 = fcmp ogt float %336, 1.500000e+01
  br i1 %337, label %338, label %.preheader.7

338:                                              ; preds = %.preheader.6
  store float 1.500000e+01, ptr %170, align 8, !tbaa !14
  br label %.preheader.7

.preheader.7:                                     ; preds = %338, %.preheader.6
  %339 = load float, ptr %174, align 4, !tbaa !14
  %340 = fcmp ogt float %339, 1.500000e+01
  br i1 %340, label %341, label %.preheader.8

341:                                              ; preds = %.preheader.7
  store float 1.500000e+01, ptr %174, align 4, !tbaa !14
  br label %.preheader.8

.preheader.8:                                     ; preds = %341, %.preheader.7
  %342 = load float, ptr %178, align 8, !tbaa !14
  %343 = fcmp ogt float %342, 1.500000e+01
  br i1 %343, label %344, label %.preheader.9

344:                                              ; preds = %.preheader.8
  store float 1.500000e+01, ptr %178, align 8, !tbaa !14
  br label %.preheader.9

.preheader.9:                                     ; preds = %344, %.preheader.8
  %345 = load float, ptr %182, align 4, !tbaa !14
  %346 = fcmp ogt float %345, 1.500000e+01
  br i1 %346, label %347, label %.preheader.10

347:                                              ; preds = %.preheader.9
  store float 1.500000e+01, ptr %182, align 4, !tbaa !14
  br label %.preheader.10

.preheader.10:                                    ; preds = %347, %.preheader.9
  %348 = load float, ptr %186, align 8, !tbaa !14
  %349 = fcmp ogt float %348, 1.500000e+01
  br i1 %349, label %350, label %.preheader.11

350:                                              ; preds = %.preheader.10
  store float 1.500000e+01, ptr %186, align 8, !tbaa !14
  br label %.preheader.11

.preheader.11:                                    ; preds = %350, %.preheader.10
  %351 = load float, ptr %190, align 4, !tbaa !14
  %352 = fcmp ogt float %351, 1.500000e+01
  br i1 %352, label %353, label %.preheader.12

353:                                              ; preds = %.preheader.11
  store float 1.500000e+01, ptr %190, align 4, !tbaa !14
  br label %.preheader.12

.preheader.12:                                    ; preds = %353, %.preheader.11
  %354 = load float, ptr %194, align 8, !tbaa !14
  %355 = fcmp ogt float %354, 1.500000e+01
  br i1 %355, label %356, label %.preheader.13

356:                                              ; preds = %.preheader.12
  store float 1.500000e+01, ptr %194, align 8, !tbaa !14
  br label %.preheader.13

.preheader.13:                                    ; preds = %356, %.preheader.12
  %357 = load float, ptr %198, align 4, !tbaa !14
  %358 = fcmp ogt float %357, 1.500000e+01
  br i1 %358, label %359, label %.preheader.14

359:                                              ; preds = %.preheader.13
  store float 1.500000e+01, ptr %198, align 4, !tbaa !14
  br label %.preheader.14

.preheader.14:                                    ; preds = %359, %.preheader.13
  %360 = load float, ptr %202, align 8, !tbaa !14
  %361 = fcmp ogt float %360, 1.500000e+01
  br i1 %361, label %362, label %.preheader.15

362:                                              ; preds = %.preheader.14
  store float 1.500000e+01, ptr %202, align 8, !tbaa !14
  br label %.preheader.15

.preheader.15:                                    ; preds = %362, %.preheader.14
  %363 = load float, ptr %206, align 4, !tbaa !14
  %364 = fcmp ogt float %363, 1.500000e+01
  br i1 %364, label %365, label %.preheader.16

365:                                              ; preds = %.preheader.15
  store float 1.500000e+01, ptr %206, align 4, !tbaa !14
  br label %.preheader.16

.preheader.16:                                    ; preds = %365, %.preheader.15
  %366 = load float, ptr %210, align 8, !tbaa !14
  %367 = fcmp ogt float %366, 1.500000e+01
  br i1 %367, label %368, label %.preheader.17

368:                                              ; preds = %.preheader.16
  store float 1.500000e+01, ptr %210, align 8, !tbaa !14
  br label %.preheader.17

.preheader.17:                                    ; preds = %368, %.preheader.16
  %369 = load float, ptr %214, align 4, !tbaa !14
  %370 = fcmp ogt float %369, 1.500000e+01
  br i1 %370, label %371, label %.preheader.18

371:                                              ; preds = %.preheader.17
  store float 1.500000e+01, ptr %214, align 4, !tbaa !14
  br label %.preheader.18

.preheader.18:                                    ; preds = %371, %.preheader.17
  %372 = load float, ptr %218, align 8, !tbaa !14
  %373 = fcmp ogt float %372, 1.500000e+01
  br i1 %373, label %374, label %.preheader.19

374:                                              ; preds = %.preheader.18
  store float 1.500000e+01, ptr %218, align 8, !tbaa !14
  br label %.preheader.19

.preheader.19:                                    ; preds = %374, %.preheader.18
  %375 = load float, ptr %222, align 4, !tbaa !14
  %376 = fcmp ogt float %375, 1.500000e+01
  br i1 %376, label %377, label %.preheader.20

377:                                              ; preds = %.preheader.19
  store float 1.500000e+01, ptr %222, align 4, !tbaa !14
  br label %.preheader.20

.preheader.20:                                    ; preds = %377, %.preheader.19
  %378 = load float, ptr %226, align 8, !tbaa !14
  %379 = fcmp ogt float %378, 1.500000e+01
  br i1 %379, label %380, label %.preheader.21

380:                                              ; preds = %.preheader.20
  store float 1.500000e+01, ptr %226, align 8, !tbaa !14
  br label %.preheader.21

.preheader.21:                                    ; preds = %380, %.preheader.20
  %381 = load float, ptr %230, align 4, !tbaa !14
  %382 = fcmp ogt float %381, 1.500000e+01
  br i1 %382, label %383, label %.preheader.22

383:                                              ; preds = %.preheader.21
  store float 1.500000e+01, ptr %230, align 4, !tbaa !14
  br label %.preheader.22

.preheader.22:                                    ; preds = %383, %.preheader.21
  %384 = load float, ptr %234, align 8, !tbaa !14
  %385 = fcmp ogt float %384, 1.500000e+01
  br i1 %385, label %386, label %.preheader.23

386:                                              ; preds = %.preheader.22
  store float 1.500000e+01, ptr %234, align 8, !tbaa !14
  br label %.preheader.23

.preheader.23:                                    ; preds = %386, %.preheader.22
  %387 = load float, ptr %238, align 4, !tbaa !14
  %388 = fcmp ogt float %387, 1.500000e+01
  br i1 %388, label %389, label %.preheader.24

389:                                              ; preds = %.preheader.23
  store float 1.500000e+01, ptr %238, align 4, !tbaa !14
  br label %.preheader.24

.preheader.24:                                    ; preds = %389, %.preheader.23
  %390 = load float, ptr %242, align 8, !tbaa !14
  %391 = fcmp ogt float %390, 1.500000e+01
  br i1 %391, label %392, label %.preheader.25

392:                                              ; preds = %.preheader.24
  store float 1.500000e+01, ptr %242, align 8, !tbaa !14
  br label %.preheader.25

.preheader.25:                                    ; preds = %392, %.preheader.24
  %393 = load float, ptr %246, align 4, !tbaa !14
  %394 = fcmp ogt float %393, 1.500000e+01
  br i1 %394, label %395, label %.preheader.26

395:                                              ; preds = %.preheader.25
  store float 1.500000e+01, ptr %246, align 4, !tbaa !14
  br label %.preheader.26

.preheader.26:                                    ; preds = %395, %.preheader.25
  %396 = load float, ptr %250, align 8, !tbaa !14
  %397 = fcmp ogt float %396, 1.500000e+01
  br i1 %397, label %398, label %.preheader.27

398:                                              ; preds = %.preheader.26
  store float 1.500000e+01, ptr %250, align 8, !tbaa !14
  br label %.preheader.27

.preheader.27:                                    ; preds = %398, %.preheader.26
  %399 = load float, ptr %254, align 4, !tbaa !14
  %400 = fcmp ogt float %399, 1.500000e+01
  br i1 %400, label %401, label %.preheader.28

401:                                              ; preds = %.preheader.27
  store float 1.500000e+01, ptr %254, align 4, !tbaa !14
  br label %.preheader.28

.preheader.28:                                    ; preds = %401, %.preheader.27
  %402 = load float, ptr %258, align 8, !tbaa !14
  %403 = fcmp ogt float %402, 1.500000e+01
  br i1 %403, label %404, label %.preheader.29

404:                                              ; preds = %.preheader.28
  store float 1.500000e+01, ptr %258, align 8, !tbaa !14
  br label %.preheader.29

.preheader.29:                                    ; preds = %404, %.preheader.28
  %405 = load float, ptr %262, align 4, !tbaa !14
  %406 = fcmp ogt float %405, 1.500000e+01
  br i1 %406, label %407, label %.loopexit

407:                                              ; preds = %.preheader.29
  store float 1.500000e+01, ptr %262, align 4, !tbaa !14
  br label %.loopexit

.loopexit:                                        ; preds = %.preheader.29, %407, %18
  br i1 %.not64, label %408, label %413

408:                                              ; preds = %.loopexit
  %409 = getelementptr inbounds i8, ptr %0, i64 40
  %410 = load i32, ptr %409, align 4, !tbaa !23
  %.not68 = icmp eq i32 %410, 0
  br i1 %.not68, label %411, label %413

411:                                              ; preds = %408
  %412 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @st)
  call void @MixCostmodels(ptr noundef nonnull %412, ptr noundef nonnull %9, float noundef 0x3FC99999A0000000)
  br label %413

413:                                              ; preds = %411, %408, %.loopexit
  call void @llvm.lifetime.end.p0(i64 3840, ptr nonnull %10) #8
  br label %416

414:                                              ; preds = %15
  call void @llvm.lifetime.start.p0(i64 3840, ptr nonnull %11) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(3840) %11, ptr noundef nonnull align 8 dereferenceable(3840) %6, i64 3840, i1 false), !tbaa.struct !11
  %415 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @st)
  call void @MixCostmodels(ptr noundef nonnull %11, ptr noundef nonnull %415, float noundef 0x3FD3333340000000)
  call void @llvm.lifetime.end.p0(i64 3840, ptr nonnull %11) #8
  br label %416

416:                                              ; preds = %414, %413
  call void @ZopfliInitLZ77Store(ptr noundef %4) #8
  %417 = sub i64 %3, %2
  %418 = shl i64 %417, 2
  %419 = add i64 %418, 4
  %420 = call noalias ptr @malloc(i64 noundef %419) #9
  %.not69 = icmp eq ptr %420, null
  br i1 %.not69, label %421, label %422

421:                                              ; preds = %416
  call void @exit(i32 noundef 1) #10
  unreachable

422:                                              ; preds = %416
  %423 = getelementptr inbounds i8, ptr %0, i64 32
  %424 = load i32, ptr %423, align 4, !tbaa !10
  %.not70 = icmp eq i32 %424, 0
  %425 = call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @st)
  %426 = select i1 %.not70, ptr %9, ptr %425
  call void @LZ77OptimalRun(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef nonnull %420, ptr noundef nonnull %426, ptr noundef %4, i8 noundef zeroext 0, ptr noundef null, i32 noundef %7, i32 noundef 0)
  call void @free(ptr noundef nonnull %420) #8
  %427 = getelementptr inbounds i8, ptr %0, i64 40
  %428 = load i32, ptr %427, align 4, !tbaa !23
  %.not71 = icmp eq i32 %428, 0
  br i1 %.not71, label %429, label %430

429:                                              ; preds = %422
  call void @GetStatistics(ptr noundef %4, ptr noundef nonnull %425)
  br label %430

430:                                              ; preds = %422, %429, %13
  call void @llvm.lifetime.end.p0(i64 3840, ptr nonnull %9) #8
  ret void
}

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

; Function Attrs: nounwind uwtable
declare hidden void @ZopfliLZ77Optimal(ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, i8 noundef zeroext, ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

; Function Attrs: nounwind uwtable
declare hidden void @CopyStats(ptr noundef, ptr noundef) local_unnamed_addr #0

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

; Function Attrs: nounwind uwtable
declare hidden void @MixCostmodels(ptr noundef, ptr noundef, float noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull) #3

declare void @ZopfliInitLZ77Store(ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #5

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #6

; Function Attrs: nounwind uwtable
declare hidden void @LZ77OptimalRun(ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef, ptr noundef, ptr noundef, i8 noundef zeroext, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #7

attributes #0 = { nounwind 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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { "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 = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "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 #8 = { nounwind }
attributes #9 = { nounwind allocsize(0) }
attributes #10 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"ZopfliOptions", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!6, !7, i64 32}
!11 = !{i64 0, i64 2304, !12, i64 2304, i64 256, !12, i64 2560, i64 1152, !12, i64 3712, i64 128, !12}
!12 = !{!8, !8, i64 0}
!13 = !{!6, !7, i64 44}
!14 = !{!15, !15, i64 0}
!15 = !{!"float", !8, i64 0}
!16 = distinct !{!16, !17, !18, !19}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !17, !18, !19}
!21 = distinct !{!21, !17, !18, !19}
!22 = distinct !{!22, !17, !18, !19}
!23 = !{!6, !7, i64 40}


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