; LLVM IR from DeanoC/gfx_imagecompress :: src/amd_hdr_encode.ll (ZN10HDR_Encode13ep_shaker_2_dEPA4_fiPiS1_PA4_iiiiiS1_)

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

@_ZN10HDR_Encode6npv_ndE = external dso_local global [2 x [8 x i32]], align 16

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #1

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.floor.f32(float) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN10HDR_Encode12totalError_dEPA4_fS1_ii(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10HDR_Encode10all_same_dEPA4_fii(ptr noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10HDR_Encode16cluster_mean_d_dEPA4_fS1_PiS2_S2_ii(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10HDR_Encode8mean_d_dEPA4_fPfii(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10HDR_Encode21index_collapse_kernelEPii(ptr noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10HDR_Encode5max_iEPii(ptr noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN10HDR_Encode20quant_single_point_dEPA4_fiPiS1_PA4_iiS2_ii(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10HDR_Encode13ep_find_floorEfiii(float noundef, i32 noundef, i32 noundef, i32 noundef) #2

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef float @_ZN10HDR_Encode13ep_shaker_2_dEPA4_fiPiS1_PA4_iiiiiS1_(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, ptr noundef %9) #2 {
  %11 = alloca float, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca [4 x i32], align 16
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca [4 x float], align 16
  %31 = alloca [64 x i32], align 16
  %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 float, align 4
  %38 = alloca [2 x [4 x i32]], align 16
  %39 = alloca [64 x [4 x float]], align 16
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca float, align 4
  %46 = alloca float, align 4
  %47 = alloca [64 x i32], align 16
  %48 = alloca [2 x [4 x float]], align 16
  %49 = alloca [2 x [2 x float]], align 16
  %50 = alloca [2 x [4 x float]], align 16
  %51 = alloca [16 x [4 x float]], align 16
  %52 = alloca [16 x i32], align 16
  %53 = alloca [16 x i32], align 16
  %54 = alloca i32, align 4
  %55 = alloca float, align 4
  %56 = alloca float, align 4
  %57 = alloca [2 x [4 x i32]], align 16
  %58 = alloca [2 x [2 x [4 x float]]], align 16
  %59 = alloca [2 x [2 x [2 x [4 x i32]]]], align 16
  %60 = alloca [2 x i32], align 4
  %61 = alloca i32, align 4
  %62 = alloca [2 x [2 x i32]], align 16
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca float, align 4
  %67 = alloca ptr, align 8
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca float, align 4
  %76 = alloca [64 x i32], align 16
  %77 = alloca float, align 4
  %78 = alloca i32, align 4
  %79 = alloca float, align 4
  %80 = alloca i32, align 4
  %81 = alloca [4 x float], align 16
  %82 = alloca float, align 4
  store ptr %0, ptr %12, align 8, !tbaa !5
  store i32 %1, ptr %13, align 4, !tbaa !9
  store ptr %2, ptr %14, align 8, !tbaa !5
  store ptr %3, ptr %15, align 8, !tbaa !5
  store ptr %4, ptr %16, align 8, !tbaa !5
  store i32 %5, ptr %17, align 4, !tbaa !9
  store i32 %6, ptr %18, align 4, !tbaa !9
  store i32 %7, ptr %19, align 4, !tbaa !9
  store i32 %8, ptr %20, align 4, !tbaa !9
  store ptr %9, ptr %21, align 8, !tbaa !5
  %83 = load i32, ptr %20, align 4, !tbaa !9
  %84 = icmp slt i32 %83, 3
  br i1 %84, label %85, label %86

85:                                               ; preds = %10
  store float 0x47EFFFFFE0000000, ptr %11, align 4
  br label %1499

86:                                               ; preds = %10
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %87 = load i32, ptr %19, align 4, !tbaa !9
  %88 = load i32, ptr %20, align 4, !tbaa !9
  %89 = mul nsw i32 2, %88
  %90 = srem i32 %87, %89
  store i32 %90, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %91 = load i32, ptr %26, align 4, !tbaa !9
  %92 = icmp ne i32 %91, 0
  %93 = zext i1 %92 to i32
  store i32 %93, ptr %27, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %94

94:                                               ; preds = %110, %86
  %95 = load i32, ptr %23, align 4, !tbaa !9
  %96 = load i32, ptr %20, align 4, !tbaa !9
  %97 = icmp slt i32 %95, %96
  br i1 %97, label %98, label %113

98:                                               ; preds = %94
  %99 = load i32, ptr %19, align 4, !tbaa !9
  %100 = load i32, ptr %20, align 4, !tbaa !9
  %101 = mul nsw i32 2, %100
  %102 = add nsw i32 %99, %101
  %103 = sub nsw i32 %102, 1
  %104 = load i32, ptr %20, align 4, !tbaa !9
  %105 = mul nsw i32 2, %104
  %106 = sdiv i32 %103, %105
  %107 = load i32, ptr %23, align 4, !tbaa !9
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %108
  store i32 %106, ptr %109, align 4, !tbaa !9
  br label %110

110:                                              ; preds = %98
  %111 = load i32, ptr %23, align 4, !tbaa !9
  %112 = add nsw i32 %111, 1
  store i32 %112, ptr %23, align 4, !tbaa !9
  br label %94, !llvm.loop !11

113:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  store i32 0, ptr %28, align 4, !tbaa !9
  %114 = load i32, ptr %18, align 4, !tbaa !9
  %115 = add nsw i32 %114, 1
  store i32 %115, ptr %22, align 4, !tbaa !9
  br label %116

116:                                              ; preds = %120, %113
  %117 = load i32, ptr %22, align 4, !tbaa !9
  %118 = ashr i32 %117, 1
  store i32 %118, ptr %22, align 4, !tbaa !9
  %119 = icmp ne i32 %118, 0
  br i1 %119, label %120, label %123

120:                                              ; preds = %116
  %121 = load i32, ptr %28, align 4, !tbaa !9
  %122 = add nsw i32 %121, 1
  store i32 %122, ptr %28, align 4, !tbaa !9
  br label %116, !llvm.loop !13

123:                                              ; preds = %116
  %124 = load i32, ptr %28, align 4, !tbaa !9
  %125 = sub nsw i32 %124, 2
  %126 = icmp sgt i32 %125, 3
  br i1 %126, label %127, label %128

127:                                              ; preds = %123
  store float 0x47EFFFFFE0000000, ptr %11, align 4
  store i32 1, ptr %29, align 4
  br label %1498

128:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 256, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  store i32 8, ptr %33, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %129

129:                                              ; preds = %142, %128
  %130 = load i32, ptr %24, align 4, !tbaa !9
  %131 = load i32, ptr %13, align 4, !tbaa !9
  %132 = icmp slt i32 %130, %131
  br i1 %132, label %133, label %145

133:                                              ; preds = %129
  %134 = load ptr, ptr %14, align 8, !tbaa !5
  %135 = load i32, ptr %24, align 4, !tbaa !9
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds i32, ptr %134, i64 %136
  %138 = load i32, ptr %137, align 4, !tbaa !9
  %139 = load i32, ptr %24, align 4, !tbaa !9
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds [64 x i32], ptr %31, i64 0, i64 %140
  store i32 %138, ptr %141, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %133
  %143 = load i32, ptr %24, align 4, !tbaa !9
  %144 = add nsw i32 %143, 1
  store i32 %144, ptr %24, align 4, !tbaa !9
  br label %129, !llvm.loop !14

145:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  store float 0x47EFFFFFE0000000, ptr %37, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 1024, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  %146 = load ptr, ptr %12, align 8, !tbaa !5
  %147 = load i32, ptr %13, align 4, !tbaa !9
  %148 = load i32, ptr %20, align 4, !tbaa !9
  %149 = call noundef i32 @_ZN10HDR_Encode10all_same_dEPA4_fii(ptr noundef %146, i32 noundef %147, i32 noundef %148)
  store i32 %149, ptr %40, align 4, !tbaa !9
  %150 = load ptr, ptr %12, align 8, !tbaa !5
  %151 = getelementptr inbounds [4 x float], ptr %30, i64 0, i64 0
  %152 = load i32, ptr %13, align 4, !tbaa !9
  %153 = load i32, ptr %20, align 4, !tbaa !9
  call void @_ZN10HDR_Encode8mean_d_dEPA4_fPfii(ptr noundef %150, ptr noundef %151, i32 noundef %152, i32 noundef %153)
  br label %154

154:                                              ; preds = %1431, %145
  %155 = getelementptr inbounds [64 x i32], ptr %31, i64 0, i64 0
  %156 = load i32, ptr %13, align 4, !tbaa !9
  call void @_ZN10HDR_Encode21index_collapse_kernelEPii(ptr noundef %155, i32 noundef %156)
  %157 = getelementptr inbounds [64 x i32], ptr %31, i64 0, i64 0
  %158 = load i32, ptr %13, align 4, !tbaa !9
  %159 = call noundef i32 @_ZN10HDR_Encode5max_iEPii(ptr noundef %157, i32 noundef %158)
  store i32 %159, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  store i32 -1, ptr %43, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  store i32 -1, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  store float 0x47EFFFFFE0000000, ptr %45, align 4, !tbaa !15
  %160 = load i32, ptr %32, align 4, !tbaa !9
  %161 = icmp eq i32 %160, 0
  br i1 %161, label %162, label %321

162:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  %163 = load i32, ptr %40, align 4, !tbaa !9
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %165, label %176

165:                                              ; preds = %162
  %166 = load ptr, ptr %12, align 8, !tbaa !5
  %167 = load i32, ptr %13, align 4, !tbaa !9
  %168 = getelementptr inbounds [64 x i32], ptr %31, i64 0, i64 0
  %169 = getelementptr inbounds [64 x [4 x float]], ptr %39, i64 0, i64 0
  %170 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %171 = load i32, ptr %18, align 4, !tbaa !9
  %172 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 0
  %173 = load i32, ptr %26, align 4, !tbaa !9
  %174 = load i32, ptr %20, align 4, !tbaa !9
  %175 = call noundef float @_ZN10HDR_Encode20quant_single_point_dEPA4_fiPiS1_PA4_iiS2_ii(ptr noundef %166, i32 noundef %167, ptr noundef %168, ptr noundef %169, ptr noundef %170, i32 noundef %171, ptr noundef %172, i32 noundef %173, i32 noundef %174)
  store float %175, ptr %46, align 4, !tbaa !15
  br label %191

176:                                              ; preds = %162
  %177 = load i32, ptr %13, align 4, !tbaa !9
  %178 = getelementptr inbounds [64 x i32], ptr %31, i64 0, i64 0
  %179 = getelementptr inbounds [64 x [4 x float]], ptr %39, i64 0, i64 0
  %180 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %181 = load i32, ptr %18, align 4, !tbaa !9
  %182 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 0
  %183 = load i32, ptr %26, align 4, !tbaa !9
  %184 = load i32, ptr %20, align 4, !tbaa !9
  %185 = call noundef float @_ZN10HDR_Encode20quant_single_point_dEPA4_fiPiS1_PA4_iiS2_ii(ptr noundef %30, i32 noundef %177, ptr noundef %178, ptr noundef %179, ptr noundef %180, i32 noundef %181, ptr noundef %182, i32 noundef %183, i32 noundef %184)
  %186 = load ptr, ptr %12, align 8, !tbaa !5
  %187 = getelementptr inbounds [64 x [4 x float]], ptr %39, i64 0, i64 0
  %188 = load i32, ptr %13, align 4, !tbaa !9
  %189 = load i32, ptr %20, align 4, !tbaa !9
  %190 = call noundef float @_ZN10HDR_Encode12totalError_dEPA4_fS1_ii(ptr noundef %186, ptr noundef %187, i32 noundef %188, i32 noundef %189)
  store float %190, ptr %46, align 4, !tbaa !15
  br label %191

191:                                              ; preds = %176, %165
  %192 = load float, ptr %46, align 4, !tbaa !15
  %193 = load float, ptr %37, align 4, !tbaa !15
  %194 = fcmp olt float %192, %193
  br i1 %194, label %195, label %257

195:                                              ; preds = %191
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %196

196:                                              ; preds = %252, %195
  %197 = load i32, ptr %24, align 4, !tbaa !9
  %198 = load i32, ptr %13, align 4, !tbaa !9
  %199 = icmp slt i32 %197, %198
  br i1 %199, label %200, label %255

200:                                              ; preds = %196
  %201 = load i32, ptr %24, align 4, !tbaa !9
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds [64 x i32], ptr %31, i64 0, i64 %202
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = load ptr, ptr %14, align 8, !tbaa !5
  %206 = load i32, ptr %24, align 4, !tbaa !9
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds i32, ptr %205, i64 %207
  store i32 %204, ptr %208, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %248, %200
  %210 = load i32, ptr %23, align 4, !tbaa !9
  %211 = load i32, ptr %20, align 4, !tbaa !9
  %212 = icmp slt i32 %210, %211
  br i1 %212, label %213, label %251

213:                                              ; preds = %209
  %214 = load i32, ptr %24, align 4, !tbaa !9
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds [64 x [4 x float]], ptr %39, i64 0, i64 %215
  %217 = load i32, ptr %23, align 4, !tbaa !9
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds [4 x float], ptr %216, i64 0, i64 %218
  %220 = load float, ptr %219, align 4, !tbaa !15
  %221 = load ptr, ptr %15, align 8, !tbaa !5
  %222 = load i32, ptr %24, align 4, !tbaa !9
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds [4 x float], ptr %221, i64 %223
  %225 = load i32, ptr %23, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds [4 x float], ptr %224, i64 0, i64 %226
  store float %220, ptr %227, align 4, !tbaa !15
  %228 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %229 = load i32, ptr %23, align 4, !tbaa !9
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds [4 x i32], ptr %228, i64 0, i64 %230
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = load ptr, ptr %16, align 8, !tbaa !5
  %234 = getelementptr inbounds [4 x i32], ptr %233, i64 0
  %235 = load i32, ptr %23, align 4, !tbaa !9
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds [4 x i32], ptr %234, i64 0, i64 %236
  store i32 %232, ptr %237, align 4, !tbaa !9
  %238 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 1
  %239 = load i32, ptr %23, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds [4 x i32], ptr %238, i64 0, i64 %240
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = load ptr, ptr %16, align 8, !tbaa !5
  %244 = getelementptr inbounds [4 x i32], ptr %243, i64 1
  %245 = load i32, ptr %23, align 4, !tbaa !9
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds [4 x i32], ptr %244, i64 0, i64 %246
  store i32 %242, ptr %247, align 4, !tbaa !9
  br label %248

248:                                              ; preds = %213
  %249 = load i32, ptr %23, align 4, !tbaa !9
  %250 = add nsw i32 %249, 1
  store i32 %250, ptr %23, align 4, !tbaa !9
  br label %209, !llvm.loop !17

251:                                              ; preds = %209
  br label %252

252:                                              ; preds = %251
  %253 = load i32, ptr %24, align 4, !tbaa !9
  %254 = add nsw i32 %253, 1
  store i32 %254, ptr %24, align 4, !tbaa !9
  br label %196, !llvm.loop !18

255:                                              ; preds = %196
  %256 = load float, ptr %46, align 4, !tbaa !15
  store float %256, ptr %37, align 4, !tbaa !15
  br label %257

257:                                              ; preds = %255, %191
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %316, %257
  %259 = load i32, ptr %23, align 4, !tbaa !9
  %260 = load i32, ptr %20, align 4, !tbaa !9
  %261 = icmp slt i32 %259, %260
  br i1 %261, label %262, label %319

262:                                              ; preds = %258
  %263 = load i32, ptr %28, align 4, !tbaa !9
  %264 = sub nsw i32 %263, 2
  %265 = load i32, ptr %23, align 4, !tbaa !9
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %266
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = sub nsw i32 %268, 5
  %270 = load ptr, ptr %16, align 8, !tbaa !5
  %271 = getelementptr inbounds [4 x i32], ptr %270, i64 0
  %272 = load i32, ptr %23, align 4, !tbaa !9
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds [4 x i32], ptr %271, i64 0, i64 %273
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = load ptr, ptr %16, align 8, !tbaa !5
  %277 = getelementptr inbounds [4 x i32], ptr %276, i64 1
  %278 = load i32, ptr %23, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds [4 x i32], ptr %277, i64 0, i64 %279
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %264, i32 noundef %269, i32 noundef %275, i32 noundef %281, i32 noundef 0)
  %283 = load ptr, ptr %21, align 8, !tbaa !5
  %284 = getelementptr inbounds [4 x float], ptr %283, i64 0
  %285 = load i32, ptr %23, align 4, !tbaa !9
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds [4 x float], ptr %284, i64 0, i64 %286
  store float %282, ptr %287, align 4, !tbaa !15
  %288 = load i32, ptr %28, align 4, !tbaa !9
  %289 = sub nsw i32 %288, 2
  %290 = load i32, ptr %23, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %291
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = sub nsw i32 %293, 5
  %295 = load ptr, ptr %16, align 8, !tbaa !5
  %296 = getelementptr inbounds [4 x i32], ptr %295, i64 0
  %297 = load i32, ptr %23, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds [4 x i32], ptr %296, i64 0, i64 %298
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = load ptr, ptr %16, align 8, !tbaa !5
  %302 = getelementptr inbounds [4 x i32], ptr %301, i64 1
  %303 = load i32, ptr %23, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds [4 x i32], ptr %302, i64 0, i64 %304
  %306 = load i32, ptr %305, align 4, !tbaa !9
  %307 = load i32, ptr %28, align 4, !tbaa !9
  %308 = shl i32 1, %307
  %309 = sub nsw i32 %308, 1
  %310 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %289, i32 noundef %294, i32 noundef %300, i32 noundef %306, i32 noundef %309)
  %311 = load ptr, ptr %21, align 8, !tbaa !5
  %312 = getelementptr inbounds [4 x float], ptr %311, i64 1
  %313 = load i32, ptr %23, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds [4 x float], ptr %312, i64 0, i64 %314
  store float %310, ptr %315, align 4, !tbaa !15
  br label %316

316:                                              ; preds = %262
  %317 = load i32, ptr %23, align 4, !tbaa !9
  %318 = add nsw i32 %317, 1
  store i32 %318, ptr %23, align 4, !tbaa !9
  br label %258, !llvm.loop !19

319:                                              ; preds = %258
  %320 = load float, ptr %37, align 4, !tbaa !15
  store float %320, ptr %11, align 4
  store i32 1, ptr %29, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  br label %1422

321:                                              ; preds = %154
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %322

322:                                              ; preds = %1092, %321
  %323 = load i32, ptr %32, align 4, !tbaa !9
  %324 = icmp ne i32 %323, 0
  br i1 %324, label %325, label %331

325:                                              ; preds = %322
  %326 = load i32, ptr %42, align 4, !tbaa !9
  %327 = load i32, ptr %32, align 4, !tbaa !9
  %328 = mul nsw i32 %326, %327
  %329 = load i32, ptr %18, align 4, !tbaa !9
  %330 = icmp sle i32 %328, %329
  br label %331

331:                                              ; preds = %325, %322
  %332 = phi i1 [ false, %322 ], [ %330, %325 ]
  br i1 %332, label %333, label %1095

333:                                              ; preds = %331
  store i32 0, ptr %41, align 4, !tbaa !9
  br label %334

334:                                              ; preds = %1088, %333
  %335 = load i32, ptr %41, align 4, !tbaa !9
  %336 = load i32, ptr %18, align 4, !tbaa !9
  %337 = load i32, ptr %42, align 4, !tbaa !9
  %338 = load i32, ptr %32, align 4, !tbaa !9
  %339 = mul nsw i32 %337, %338
  %340 = sub nsw i32 %336, %339
  %341 = icmp sle i32 %335, %340
  br i1 %341, label %342, label %1091

342:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 256, ptr %47) #4
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %359, %342
  %344 = load i32, ptr %24, align 4, !tbaa !9
  %345 = load i32, ptr %13, align 4, !tbaa !9
  %346 = icmp slt i32 %344, %345
  br i1 %346, label %347, label %362

347:                                              ; preds = %343
  %348 = load i32, ptr %24, align 4, !tbaa !9
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds [64 x i32], ptr %31, i64 0, i64 %349
  %351 = load i32, ptr %350, align 4, !tbaa !9
  %352 = load i32, ptr %42, align 4, !tbaa !9
  %353 = mul nsw i32 %351, %352
  %354 = load i32, ptr %41, align 4, !tbaa !9
  %355 = add nsw i32 %353, %354
  %356 = load i32, ptr %24, align 4, !tbaa !9
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %357
  store i32 %355, ptr %358, align 4, !tbaa !9
  br label %359

359:                                              ; preds = %347
  %360 = load i32, ptr %24, align 4, !tbaa !9
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr %24, align 4, !tbaa !9
  br label %343, !llvm.loop !20

362:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #4
  call void @llvm.memset.p0.i64(ptr align 16 %49, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 256, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #4
  %363 = load ptr, ptr %12, align 8, !tbaa !5
  %364 = getelementptr inbounds [16 x [4 x float]], ptr %51, i64 0, i64 0
  %365 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 0
  %366 = getelementptr inbounds [16 x i32], ptr %53, i64 0, i64 0
  %367 = getelementptr inbounds [16 x i32], ptr %52, i64 0, i64 0
  %368 = load i32, ptr %13, align 4, !tbaa !9
  %369 = load i32, ptr %20, align 4, !tbaa !9
  %370 = call noundef i32 @_ZN10HDR_Encode16cluster_mean_d_dEPA4_fS1_PiS2_S2_ii(ptr noundef %363, ptr noundef %364, ptr noundef %365, ptr noundef %366, ptr noundef %367, i32 noundef %368, i32 noundef %369)
  store i32 %370, ptr %54, align 4, !tbaa !9
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %371

371:                                              ; preds = %406, %362
  %372 = load i32, ptr %22, align 4, !tbaa !9
  %373 = load i32, ptr %54, align 4, !tbaa !9
  %374 = icmp slt i32 %372, %373
  br i1 %374, label %375, label %409

375:                                              ; preds = %371
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %376

376:                                              ; preds = %402, %375
  %377 = load i32, ptr %23, align 4, !tbaa !9
  %378 = load i32, ptr %20, align 4, !tbaa !9
  %379 = icmp slt i32 %377, %378
  br i1 %379, label %380, label %405

380:                                              ; preds = %376
  %381 = load i32, ptr %22, align 4, !tbaa !9
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds [16 x i32], ptr %53, i64 0, i64 %382
  %384 = load i32, ptr %383, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [16 x [4 x float]], ptr %51, i64 0, i64 %385
  %387 = load i32, ptr %23, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds [4 x float], ptr %386, i64 0, i64 %388
  %390 = load float, ptr %389, align 4, !tbaa !15
  %391 = fadd float %390, 5.000000e-01
  %392 = call float @llvm.floor.f32(float %391)
  %393 = load i32, ptr %22, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds [16 x i32], ptr %53, i64 0, i64 %394
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds [16 x [4 x float]], ptr %51, i64 0, i64 %397
  %399 = load i32, ptr %23, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds [4 x float], ptr %398, i64 0, i64 %400
  store float %392, ptr %401, align 4, !tbaa !15
  br label %402

402:                                              ; preds = %380
  %403 = load i32, ptr %23, align 4, !tbaa !9
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %23, align 4, !tbaa !9
  br label %376, !llvm.loop !21

405:                                              ; preds = %376
  br label %406

406:                                              ; preds = %405
  %407 = load i32, ptr %22, align 4, !tbaa !9
  %408 = add nsw i32 %407, 1
  store i32 %408, ptr %22, align 4, !tbaa !9
  br label %371, !llvm.loop !22

409:                                              ; preds = %371
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %410

410:                                              ; preds = %423, %409
  %411 = load i32, ptr %23, align 4, !tbaa !9
  %412 = load i32, ptr %20, align 4, !tbaa !9
  %413 = icmp slt i32 %411, %412
  br i1 %413, label %414, label %426

414:                                              ; preds = %410
  %415 = getelementptr inbounds [2 x [4 x float]], ptr %50, i64 0, i64 1
  %416 = load i32, ptr %23, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds [4 x float], ptr %415, i64 0, i64 %417
  store float 0.000000e+00, ptr %418, align 4, !tbaa !15
  %419 = getelementptr inbounds [2 x [4 x float]], ptr %50, i64 0, i64 0
  %420 = load i32, ptr %23, align 4, !tbaa !9
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds [4 x float], ptr %419, i64 0, i64 %421
  store float 0.000000e+00, ptr %422, align 4, !tbaa !15
  br label %423

423:                                              ; preds = %414
  %424 = load i32, ptr %23, align 4, !tbaa !9
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %23, align 4, !tbaa !9
  br label %410, !llvm.loop !23

426:                                              ; preds = %410
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %427

427:                                              ; preds = %533, %426
  %428 = load i32, ptr %24, align 4, !tbaa !9
  %429 = load i32, ptr %13, align 4, !tbaa !9
  %430 = icmp slt i32 %428, %429
  br i1 %430, label %431, label %536

431:                                              ; preds = %427
  %432 = load i32, ptr %18, align 4, !tbaa !9
  %433 = load i32, ptr %24, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %434
  %436 = load i32, ptr %435, align 4, !tbaa !9
  %437 = sub nsw i32 %432, %436
  %438 = load i32, ptr %18, align 4, !tbaa !9
  %439 = load i32, ptr %24, align 4, !tbaa !9
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %440
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = sub nsw i32 %438, %442
  %444 = mul nsw i32 %437, %443
  %445 = sitofp i32 %444 to float
  %446 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %447 = getelementptr inbounds [2 x float], ptr %446, i64 0, i64 0
  %448 = load float, ptr %447, align 16, !tbaa !15
  %449 = fadd float %448, %445
  store float %449, ptr %447, align 16, !tbaa !15
  %450 = load i32, ptr %24, align 4, !tbaa !9
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %451
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = load i32, ptr %18, align 4, !tbaa !9
  %455 = load i32, ptr %24, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %456
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = sub nsw i32 %454, %458
  %460 = mul nsw i32 %453, %459
  %461 = sitofp i32 %460 to float
  %462 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %463 = getelementptr inbounds [2 x float], ptr %462, i64 0, i64 1
  %464 = load float, ptr %463, align 4, !tbaa !15
  %465 = fadd float %464, %461
  store float %465, ptr %463, align 4, !tbaa !15
  %466 = load i32, ptr %24, align 4, !tbaa !9
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %467
  %469 = load i32, ptr %468, align 4, !tbaa !9
  %470 = load i32, ptr %24, align 4, !tbaa !9
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %471
  %473 = load i32, ptr %472, align 4, !tbaa !9
  %474 = mul nsw i32 %469, %473
  %475 = sitofp i32 %474 to float
  %476 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 1
  %477 = getelementptr inbounds [2 x float], ptr %476, i64 0, i64 1
  %478 = load float, ptr %477, align 4, !tbaa !15
  %479 = fadd float %478, %475
  store float %479, ptr %477, align 4, !tbaa !15
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %480

480:                                              ; preds = %529, %431
  %481 = load i32, ptr %23, align 4, !tbaa !9
  %482 = load i32, ptr %20, align 4, !tbaa !9
  %483 = icmp slt i32 %481, %482
  br i1 %483, label %484, label %532

484:                                              ; preds = %480
  %485 = load i32, ptr %18, align 4, !tbaa !9
  %486 = load i32, ptr %24, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %487
  %489 = load i32, ptr %488, align 4, !tbaa !9
  %490 = sub nsw i32 %485, %489
  %491 = sitofp i32 %490 to float
  %492 = load i32, ptr %24, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %493
  %495 = load i32, ptr %494, align 4, !tbaa !9
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds [16 x [4 x float]], ptr %51, i64 0, i64 %496
  %498 = load i32, ptr %23, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds [4 x float], ptr %497, i64 0, i64 %499
  %501 = load float, ptr %500, align 4, !tbaa !15
  %502 = getelementptr inbounds [2 x [4 x float]], ptr %50, i64 0, i64 0
  %503 = load i32, ptr %23, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds [4 x float], ptr %502, i64 0, i64 %504
  %506 = load float, ptr %505, align 4, !tbaa !15
  %507 = call float @llvm.fmuladd.f32(float %491, float %501, float %506)
  store float %507, ptr %505, align 4, !tbaa !15
  %508 = load i32, ptr %24, align 4, !tbaa !9
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %509
  %511 = load i32, ptr %510, align 4, !tbaa !9
  %512 = sitofp i32 %511 to float
  %513 = load i32, ptr %24, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 %514
  %516 = load i32, ptr %515, align 4, !tbaa !9
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds [16 x [4 x float]], ptr %51, i64 0, i64 %517
  %519 = load i32, ptr %23, align 4, !tbaa !9
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds [4 x float], ptr %518, i64 0, i64 %520
  %522 = load float, ptr %521, align 4, !tbaa !15
  %523 = getelementptr inbounds [2 x [4 x float]], ptr %50, i64 0, i64 1
  %524 = load i32, ptr %23, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds [4 x float], ptr %523, i64 0, i64 %525
  %527 = load float, ptr %526, align 4, !tbaa !15
  %528 = call float @llvm.fmuladd.f32(float %512, float %522, float %527)
  store float %528, ptr %526, align 4, !tbaa !15
  br label %529

529:                                              ; preds = %484
  %530 = load i32, ptr %23, align 4, !tbaa !9
  %531 = add nsw i32 %530, 1
  store i32 %531, ptr %23, align 4, !tbaa !9
  br label %480, !llvm.loop !24

532:                                              ; preds = %480
  br label %533

533:                                              ; preds = %532
  %534 = load i32, ptr %24, align 4, !tbaa !9
  %535 = add nsw i32 %534, 1
  store i32 %535, ptr %24, align 4, !tbaa !9
  br label %427, !llvm.loop !25

536:                                              ; preds = %427
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #4
  %537 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %538 = getelementptr inbounds [2 x float], ptr %537, i64 0, i64 0
  %539 = load float, ptr %538, align 16, !tbaa !15
  %540 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 1
  %541 = getelementptr inbounds [2 x float], ptr %540, i64 0, i64 1
  %542 = load float, ptr %541, align 4, !tbaa !15
  %543 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %544 = getelementptr inbounds [2 x float], ptr %543, i64 0, i64 1
  %545 = load float, ptr %544, align 4, !tbaa !15
  %546 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %547 = getelementptr inbounds [2 x float], ptr %546, i64 0, i64 1
  %548 = load float, ptr %547, align 4, !tbaa !15
  %549 = fmul float %545, %548
  %550 = fneg float %549
  %551 = call float @llvm.fmuladd.f32(float %539, float %542, float %550)
  store float %551, ptr %55, align 4, !tbaa !15
  %552 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %553 = getelementptr inbounds [2 x float], ptr %552, i64 0, i64 0
  %554 = load float, ptr %553, align 16, !tbaa !15
  %555 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 1
  %556 = getelementptr inbounds [2 x float], ptr %555, i64 0, i64 0
  store float %554, ptr %556, align 8, !tbaa !15
  %557 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 1
  %558 = getelementptr inbounds [2 x float], ptr %557, i64 0, i64 1
  %559 = load float, ptr %558, align 4, !tbaa !15
  %560 = load float, ptr %55, align 4, !tbaa !15
  %561 = fdiv float %559, %560
  %562 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %563 = getelementptr inbounds [2 x float], ptr %562, i64 0, i64 0
  store float %561, ptr %563, align 16, !tbaa !15
  %564 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 1
  %565 = getelementptr inbounds [2 x float], ptr %564, i64 0, i64 0
  %566 = load float, ptr %565, align 8, !tbaa !15
  %567 = load float, ptr %55, align 4, !tbaa !15
  %568 = fdiv float %566, %567
  %569 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 1
  %570 = getelementptr inbounds [2 x float], ptr %569, i64 0, i64 1
  store float %568, ptr %570, align 4, !tbaa !15
  %571 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %572 = getelementptr inbounds [2 x float], ptr %571, i64 0, i64 1
  %573 = load float, ptr %572, align 4, !tbaa !15
  %574 = fneg float %573
  %575 = load float, ptr %55, align 4, !tbaa !15
  %576 = fdiv float %574, %575
  %577 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %578 = getelementptr inbounds [2 x float], ptr %577, i64 0, i64 1
  store float %576, ptr %578, align 4, !tbaa !15
  %579 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 1
  %580 = getelementptr inbounds [2 x float], ptr %579, i64 0, i64 0
  store float %576, ptr %580, align 8, !tbaa !15
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %581

581:                                              ; preds = %636, %536
  %582 = load i32, ptr %23, align 4, !tbaa !9
  %583 = load i32, ptr %20, align 4, !tbaa !9
  %584 = icmp slt i32 %582, %583
  br i1 %584, label %585, label %639

585:                                              ; preds = %581
  %586 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %587 = getelementptr inbounds [2 x float], ptr %586, i64 0, i64 0
  %588 = load float, ptr %587, align 16, !tbaa !15
  %589 = getelementptr inbounds [2 x [4 x float]], ptr %50, i64 0, i64 0
  %590 = load i32, ptr %23, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds [4 x float], ptr %589, i64 0, i64 %591
  %593 = load float, ptr %592, align 4, !tbaa !15
  %594 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 0
  %595 = getelementptr inbounds [2 x float], ptr %594, i64 0, i64 1
  %596 = load float, ptr %595, align 4, !tbaa !15
  %597 = getelementptr inbounds [2 x [4 x float]], ptr %50, i64 0, i64 1
  %598 = load i32, ptr %23, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds [4 x float], ptr %597, i64 0, i64 %599
  %601 = load float, ptr %600, align 4, !tbaa !15
  %602 = fmul float %596, %601
  %603 = call float @llvm.fmuladd.f32(float %588, float %593, float %602)
  %604 = load i32, ptr %18, align 4, !tbaa !9
  %605 = sitofp i32 %604 to float
  %606 = fmul float %603, %605
  %607 = getelementptr inbounds [2 x [4 x float]], ptr %48, i64 0, i64 0
  %608 = load i32, ptr %23, align 4, !tbaa !9
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds [4 x float], ptr %607, i64 0, i64 %609
  store float %606, ptr %610, align 4, !tbaa !15
  %611 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 1
  %612 = getelementptr inbounds [2 x float], ptr %611, i64 0, i64 0
  %613 = load float, ptr %612, align 8, !tbaa !15
  %614 = getelementptr inbounds [2 x [4 x float]], ptr %50, i64 0, i64 0
  %615 = load i32, ptr %23, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds [4 x float], ptr %614, i64 0, i64 %616
  %618 = load float, ptr %617, align 4, !tbaa !15
  %619 = getelementptr inbounds [2 x [2 x float]], ptr %49, i64 0, i64 1
  %620 = getelementptr inbounds [2 x float], ptr %619, i64 0, i64 1
  %621 = load float, ptr %620, align 4, !tbaa !15
  %622 = getelementptr inbounds [2 x [4 x float]], ptr %50, i64 0, i64 1
  %623 = load i32, ptr %23, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds [4 x float], ptr %622, i64 0, i64 %624
  %626 = load float, ptr %625, align 4, !tbaa !15
  %627 = fmul float %621, %626
  %628 = call float @llvm.fmuladd.f32(float %613, float %618, float %627)
  %629 = load i32, ptr %18, align 4, !tbaa !9
  %630 = sitofp i32 %629 to float
  %631 = fmul float %628, %630
  %632 = getelementptr inbounds [2 x [4 x float]], ptr %48, i64 0, i64 1
  %633 = load i32, ptr %23, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds [4 x float], ptr %632, i64 0, i64 %634
  store float %631, ptr %635, align 4, !tbaa !15
  br label %636

636:                                              ; preds = %585
  %637 = load i32, ptr %23, align 4, !tbaa !9
  %638 = add nsw i32 %637, 1
  store i32 %638, ptr %23, align 4, !tbaa !9
  br label %581, !llvm.loop !26

639:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #4
  store float 0x47EFFFFFE0000000, ptr %56, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 32, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 128, ptr %59) #4
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %640

640:                                              ; preds = %939, %639
  %641 = load i32, ptr %23, align 4, !tbaa !9
  %642 = load i32, ptr %20, align 4, !tbaa !9
  %643 = icmp slt i32 %641, %642
  br i1 %643, label %644, label %942

644:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  call void @llvm.memset.p0.i64(ptr align 4 %60, i8 0, i64 8, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #4
  %645 = load i32, ptr %27, align 4, !tbaa !9
  %646 = icmp ne i32 %645, 0
  %647 = zext i1 %646 to i64
  %648 = select i1 %646, i32 2, i32 1
  store i32 %648, ptr %61, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #4
  %649 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 0
  store i32 0, ptr %649, align 4, !tbaa !9
  br label %650

650:                                              ; preds = %934, %644
  %651 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 0
  %652 = load i32, ptr %651, align 4, !tbaa !9
  %653 = load i32, ptr %61, align 4, !tbaa !9
  %654 = icmp slt i32 %652, %653
  br i1 %654, label %655, label %938

655:                                              ; preds = %650
  %656 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 1
  store i32 0, ptr %656, align 4, !tbaa !9
  br label %657

657:                                              ; preds = %929, %655
  %658 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 1
  %659 = load i32, ptr %658, align 4, !tbaa !9
  %660 = load i32, ptr %61, align 4, !tbaa !9
  %661 = icmp slt i32 %659, %660
  br i1 %661, label %662, label %933

662:                                              ; preds = %657
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %663

663:                                              ; preds = %764, %662
  %664 = load i32, ptr %22, align 4, !tbaa !9
  %665 = icmp slt i32 %664, 2
  br i1 %665, label %666, label %767

666:                                              ; preds = %663
  %667 = load i32, ptr %22, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds [2 x [4 x float]], ptr %48, i64 0, i64 %668
  %670 = load i32, ptr %23, align 4, !tbaa !9
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds [4 x float], ptr %669, i64 0, i64 %671
  %673 = load float, ptr %672, align 4, !tbaa !15
  %674 = load i32, ptr %23, align 4, !tbaa !9
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %675
  %677 = load i32, ptr %676, align 4, !tbaa !9
  %678 = load i32, ptr %27, align 4, !tbaa !9
  %679 = load i32, ptr %22, align 4, !tbaa !9
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 %680
  %682 = load i32, ptr %681, align 4, !tbaa !9
  %683 = call noundef i32 @_ZN10HDR_Encode13ep_find_floorEfiii(float noundef %673, i32 noundef %677, i32 noundef %678, i32 noundef %682)
  %684 = load i32, ptr %22, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 %685
  %687 = getelementptr inbounds [2 x i32], ptr %686, i64 0, i64 1
  store i32 %683, ptr %687, align 4, !tbaa !9
  %688 = load i32, ptr %22, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 %689
  %691 = getelementptr inbounds [2 x i32], ptr %690, i64 0, i64 0
  store i32 %683, ptr %691, align 8, !tbaa !9
  %692 = load i32, ptr %22, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 %693
  %695 = getelementptr inbounds [2 x i32], ptr %694, i64 0, i64 0
  %696 = load i32, ptr %695, align 8, !tbaa !9
  %697 = load i32, ptr %17, align 4, !tbaa !9
  %698 = ashr i32 %697, 1
  %699 = sub nsw i32 %698, 1
  %700 = icmp slt i32 %696, %699
  br i1 %700, label %701, label %707

701:                                              ; preds = %666
  %702 = load i32, ptr %22, align 4, !tbaa !9
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 %703
  %705 = getelementptr inbounds [2 x i32], ptr %704, i64 0, i64 0
  %706 = load i32, ptr %705, align 8, !tbaa !9
  br label %711

707:                                              ; preds = %666
  %708 = load i32, ptr %17, align 4, !tbaa !9
  %709 = ashr i32 %708, 1
  %710 = sub nsw i32 %709, 1
  br label %711

711:                                              ; preds = %707, %701
  %712 = phi i32 [ %706, %701 ], [ %710, %707 ]
  %713 = load i32, ptr %27, align 4, !tbaa !9
  %714 = xor i32 %713, -1
  %715 = and i32 %712, %714
  %716 = load i32, ptr %22, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 %717
  %719 = getelementptr inbounds [2 x i32], ptr %718, i64 0, i64 0
  %720 = load i32, ptr %719, align 8, !tbaa !9
  %721 = sub nsw i32 %720, %715
  store i32 %721, ptr %719, align 8, !tbaa !9
  %722 = load i32, ptr %23, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %723
  %725 = load i32, ptr %724, align 4, !tbaa !9
  %726 = shl i32 1, %725
  %727 = sub nsw i32 %726, 1
  %728 = load i32, ptr %22, align 4, !tbaa !9
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 %729
  %731 = getelementptr inbounds [2 x i32], ptr %730, i64 0, i64 1
  %732 = load i32, ptr %731, align 4, !tbaa !9
  %733 = sub nsw i32 %727, %732
  %734 = load i32, ptr %17, align 4, !tbaa !9
  %735 = ashr i32 %734, 1
  %736 = icmp slt i32 %733, %735
  br i1 %736, label %737, label %750

737:                                              ; preds = %711
  %738 = load i32, ptr %23, align 4, !tbaa !9
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %739
  %741 = load i32, ptr %740, align 4, !tbaa !9
  %742 = shl i32 1, %741
  %743 = sub nsw i32 %742, 1
  %744 = load i32, ptr %22, align 4, !tbaa !9
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 %745
  %747 = getelementptr inbounds [2 x i32], ptr %746, i64 0, i64 1
  %748 = load i32, ptr %747, align 4, !tbaa !9
  %749 = sub nsw i32 %743, %748
  br label %753

750:                                              ; preds = %711
  %751 = load i32, ptr %17, align 4, !tbaa !9
  %752 = ashr i32 %751, 1
  br label %753

753:                                              ; preds = %750, %737
  %754 = phi i32 [ %749, %737 ], [ %752, %750 ]
  %755 = load i32, ptr %27, align 4, !tbaa !9
  %756 = xor i32 %755, -1
  %757 = and i32 %754, %756
  %758 = load i32, ptr %22, align 4, !tbaa !9
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 %759
  %761 = getelementptr inbounds [2 x i32], ptr %760, i64 0, i64 1
  %762 = load i32, ptr %761, align 4, !tbaa !9
  %763 = add nsw i32 %762, %757
  store i32 %763, ptr %761, align 4, !tbaa !9
  br label %764

764:                                              ; preds = %753
  %765 = load i32, ptr %22, align 4, !tbaa !9
  %766 = add nsw i32 %765, 1
  store i32 %766, ptr %22, align 4, !tbaa !9
  br label %663, !llvm.loop !27

767:                                              ; preds = %663
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #4
  %768 = load i32, ptr %27, align 4, !tbaa !9
  %769 = shl i32 1, %768
  store i32 %769, ptr %65, align 4, !tbaa !9
  %770 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 0
  %771 = load i32, ptr %770, align 4, !tbaa !9
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds [2 x [2 x [4 x float]]], ptr %58, i64 0, i64 %772
  %774 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 1
  %775 = load i32, ptr %774, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds [2 x [4 x float]], ptr %773, i64 0, i64 %776
  %778 = load i32, ptr %23, align 4, !tbaa !9
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds [4 x float], ptr %777, i64 0, i64 %779
  store float 0x47EFFFFFE0000000, ptr %780, align 4, !tbaa !15
  %781 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 0
  %782 = getelementptr inbounds [2 x i32], ptr %781, i64 0, i64 0
  %783 = load i32, ptr %782, align 16, !tbaa !9
  store i32 %783, ptr %63, align 4, !tbaa !9
  br label %784

784:                                              ; preds = %924, %767
  %785 = load i32, ptr %63, align 4, !tbaa !9
  %786 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 0
  %787 = getelementptr inbounds [2 x i32], ptr %786, i64 0, i64 1
  %788 = load i32, ptr %787, align 4, !tbaa !9
  %789 = icmp sle i32 %785, %788
  br i1 %789, label %790, label %928

790:                                              ; preds = %784
  %791 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 1
  %792 = getelementptr inbounds [2 x i32], ptr %791, i64 0, i64 0
  %793 = load i32, ptr %792, align 8, !tbaa !9
  store i32 %793, ptr %64, align 4, !tbaa !9
  br label %794

794:                                              ; preds = %919, %790
  %795 = load i32, ptr %64, align 4, !tbaa !9
  %796 = getelementptr inbounds [2 x [2 x i32]], ptr %62, i64 0, i64 1
  %797 = getelementptr inbounds [2 x i32], ptr %796, i64 0, i64 1
  %798 = load i32, ptr %797, align 4, !tbaa !9
  %799 = icmp sle i32 %795, %798
  br i1 %799, label %800, label %923

800:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #4
  store float 0.000000e+00, ptr %66, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #4
  %801 = getelementptr inbounds [64 x i32], ptr %47, i64 0, i64 0
  store ptr %801, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #4
  %802 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %802, ptr %68, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #4
  %803 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %803, ptr %69, align 4, !tbaa !9
  br label %804

804:                                              ; preds = %807, %800
  %805 = load i32, ptr %69, align 4, !tbaa !9
  %806 = icmp sgt i32 %805, 0
  br i1 %806, label %807, label %864

807:                                              ; preds = %804
  %808 = load i32, ptr %28, align 4, !tbaa !9
  %809 = sub nsw i32 %808, 2
  %810 = load i32, ptr %23, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %811
  %813 = load i32, ptr %812, align 4, !tbaa !9
  %814 = sub nsw i32 %813, 5
  %815 = load i32, ptr %63, align 4, !tbaa !9
  %816 = load i32, ptr %64, align 4, !tbaa !9
  %817 = load ptr, ptr %67, align 8, !tbaa !5
  %818 = load i32, ptr %69, align 4, !tbaa !9
  %819 = sub nsw i32 %818, 1
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds i32, ptr %817, i64 %820
  %822 = load i32, ptr %821, align 4, !tbaa !9
  %823 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %809, i32 noundef %814, i32 noundef %815, i32 noundef %816, i32 noundef %822)
  %824 = load ptr, ptr %12, align 8, !tbaa !5
  %825 = load i32, ptr %69, align 4, !tbaa !9
  %826 = sub nsw i32 %825, 1
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds [4 x float], ptr %824, i64 %827
  %829 = load i32, ptr %23, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds [4 x float], ptr %828, i64 0, i64 %830
  %832 = load float, ptr %831, align 4, !tbaa !15
  %833 = fsub float %823, %832
  %834 = load i32, ptr %28, align 4, !tbaa !9
  %835 = sub nsw i32 %834, 2
  %836 = load i32, ptr %23, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %837
  %839 = load i32, ptr %838, align 4, !tbaa !9
  %840 = sub nsw i32 %839, 5
  %841 = load i32, ptr %63, align 4, !tbaa !9
  %842 = load i32, ptr %64, align 4, !tbaa !9
  %843 = load ptr, ptr %67, align 8, !tbaa !5
  %844 = load i32, ptr %69, align 4, !tbaa !9
  %845 = sub nsw i32 %844, 1
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds i32, ptr %843, i64 %846
  %848 = load i32, ptr %847, align 4, !tbaa !9
  %849 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %835, i32 noundef %840, i32 noundef %841, i32 noundef %842, i32 noundef %848)
  %850 = load ptr, ptr %12, align 8, !tbaa !5
  %851 = load i32, ptr %69, align 4, !tbaa !9
  %852 = sub nsw i32 %851, 1
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds [4 x float], ptr %850, i64 %853
  %855 = load i32, ptr %23, align 4, !tbaa !9
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds [4 x float], ptr %854, i64 0, i64 %856
  %858 = load float, ptr %857, align 4, !tbaa !15
  %859 = fsub float %849, %858
  %860 = load float, ptr %66, align 4, !tbaa !15
  %861 = call float @llvm.fmuladd.f32(float %833, float %859, float %860)
  store float %861, ptr %66, align 4, !tbaa !15
  %862 = load i32, ptr %69, align 4, !tbaa !9
  %863 = add nsw i32 %862, -1
  store i32 %863, ptr %69, align 4, !tbaa !9
  br label %804, !llvm.loop !28

864:                                              ; preds = %804
  %865 = load float, ptr %66, align 4, !tbaa !15
  %866 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 0
  %867 = load i32, ptr %866, align 4, !tbaa !9
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds [2 x [2 x [4 x float]]], ptr %58, i64 0, i64 %868
  %870 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 1
  %871 = load i32, ptr %870, align 4, !tbaa !9
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds [2 x [4 x float]], ptr %869, i64 0, i64 %872
  %874 = load i32, ptr %23, align 4, !tbaa !9
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds [4 x float], ptr %873, i64 0, i64 %875
  %877 = load float, ptr %876, align 4, !tbaa !15
  %878 = fcmp olt float %865, %877
  br i1 %878, label %879, label %918

879:                                              ; preds = %864
  %880 = load float, ptr %66, align 4, !tbaa !15
  %881 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 0
  %882 = load i32, ptr %881, align 4, !tbaa !9
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds [2 x [2 x [4 x float]]], ptr %58, i64 0, i64 %883
  %885 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 1
  %886 = load i32, ptr %885, align 4, !tbaa !9
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds [2 x [4 x float]], ptr %884, i64 0, i64 %887
  %889 = load i32, ptr %23, align 4, !tbaa !9
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds [4 x float], ptr %888, i64 0, i64 %890
  store float %880, ptr %891, align 4, !tbaa !15
  %892 = load i32, ptr %63, align 4, !tbaa !9
  %893 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 0
  %894 = load i32, ptr %893, align 4, !tbaa !9
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds [2 x [2 x [2 x [4 x i32]]]], ptr %59, i64 0, i64 %895
  %897 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 1
  %898 = load i32, ptr %897, align 4, !tbaa !9
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds [2 x [2 x [4 x i32]]], ptr %896, i64 0, i64 %899
  %901 = getelementptr inbounds [2 x [4 x i32]], ptr %900, i64 0, i64 0
  %902 = load i32, ptr %23, align 4, !tbaa !9
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds [4 x i32], ptr %901, i64 0, i64 %903
  store i32 %892, ptr %904, align 4, !tbaa !9
  %905 = load i32, ptr %64, align 4, !tbaa !9
  %906 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 0
  %907 = load i32, ptr %906, align 4, !tbaa !9
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds [2 x [2 x [2 x [4 x i32]]]], ptr %59, i64 0, i64 %908
  %910 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 1
  %911 = load i32, ptr %910, align 4, !tbaa !9
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds [2 x [2 x [4 x i32]]], ptr %909, i64 0, i64 %912
  %914 = getelementptr inbounds [2 x [4 x i32]], ptr %913, i64 0, i64 1
  %915 = load i32, ptr %23, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds [4 x i32], ptr %914, i64 0, i64 %916
  store i32 %905, ptr %917, align 4, !tbaa !9
  br label %918

918:                                              ; preds = %879, %864
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  br label %919

919:                                              ; preds = %918
  %920 = load i32, ptr %65, align 4, !tbaa !9
  %921 = load i32, ptr %64, align 4, !tbaa !9
  %922 = add nsw i32 %921, %920
  store i32 %922, ptr %64, align 4, !tbaa !9
  br label %794, !llvm.loop !29

923:                                              ; preds = %794
  br label %924

924:                                              ; preds = %923
  %925 = load i32, ptr %65, align 4, !tbaa !9
  %926 = load i32, ptr %63, align 4, !tbaa !9
  %927 = add nsw i32 %926, %925
  store i32 %927, ptr %63, align 4, !tbaa !9
  br label %784, !llvm.loop !30

928:                                              ; preds = %784
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  br label %929

929:                                              ; preds = %928
  %930 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 1
  %931 = load i32, ptr %930, align 4, !tbaa !9
  %932 = add nsw i32 %931, 1
  store i32 %932, ptr %930, align 4, !tbaa !9
  br label %657, !llvm.loop !31

933:                                              ; preds = %657
  br label %934

934:                                              ; preds = %933
  %935 = getelementptr inbounds [2 x i32], ptr %60, i64 0, i64 0
  %936 = load i32, ptr %935, align 4, !tbaa !9
  %937 = add nsw i32 %936, 1
  store i32 %937, ptr %935, align 4, !tbaa !9
  br label %650, !llvm.loop !32

938:                                              ; preds = %650
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  br label %939

939:                                              ; preds = %938
  %940 = load i32, ptr %23, align 4, !tbaa !9
  %941 = add nsw i32 %940, 1
  store i32 %941, ptr %23, align 4, !tbaa !9
  br label %640, !llvm.loop !33

942:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #4
  store i32 0, ptr %70, align 4, !tbaa !9
  br label %943

943:                                              ; preds = %1049, %942
  %944 = load i32, ptr %70, align 4, !tbaa !9
  %945 = load i32, ptr %20, align 4, !tbaa !9
  %946 = sub nsw i32 %945, 3
  %947 = sext i32 %946 to i64
  %948 = getelementptr inbounds [2 x [8 x i32]], ptr @_ZN10HDR_Encode6npv_ndE, i64 0, i64 %947
  %949 = load i32, ptr %26, align 4, !tbaa !9
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds [8 x i32], ptr %948, i64 0, i64 %950
  %952 = load i32, ptr %951, align 4, !tbaa !9
  %953 = icmp slt i32 %944, %952
  br i1 %953, label %954, label %1052

954:                                              ; preds = %943
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #4
  %955 = load i32, ptr %20, align 4, !tbaa !9
  %956 = sub nsw i32 %955, 3
  store i32 %956, ptr %71, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #4
  %957 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %957, ptr %72, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #4
  %958 = load i32, ptr %70, align 4, !tbaa !9
  store i32 %958, ptr %73, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #4
  store float 0.000000e+00, ptr %75, align 4, !tbaa !15
  store i32 0, ptr %74, align 4, !tbaa !9
  br label %959

959:                                              ; preds = %984, %954
  %960 = load i32, ptr %74, align 4, !tbaa !9
  %961 = load i32, ptr %20, align 4, !tbaa !9
  %962 = icmp slt i32 %960, %961
  br i1 %962, label %963, label %987

963:                                              ; preds = %959
  %964 = load i32, ptr %71, align 4, !tbaa !9
  %965 = load i32, ptr %72, align 4, !tbaa !9
  %966 = load i32, ptr %73, align 4, !tbaa !9
  %967 = load i32, ptr %74, align 4, !tbaa !9
  %968 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %964, i32 noundef %965, i32 noundef %966, i32 noundef 0, i32 noundef %967)
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds [2 x [2 x [4 x float]]], ptr %58, i64 0, i64 %969
  %971 = load i32, ptr %71, align 4, !tbaa !9
  %972 = load i32, ptr %72, align 4, !tbaa !9
  %973 = load i32, ptr %73, align 4, !tbaa !9
  %974 = load i32, ptr %74, align 4, !tbaa !9
  %975 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %971, i32 noundef %972, i32 noundef %973, i32 noundef 1, i32 noundef %974)
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds [2 x [4 x float]], ptr %970, i64 0, i64 %976
  %978 = load i32, ptr %74, align 4, !tbaa !9
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds [4 x float], ptr %977, i64 0, i64 %979
  %981 = load float, ptr %980, align 4, !tbaa !15
  %982 = load float, ptr %75, align 4, !tbaa !15
  %983 = fadd float %982, %981
  store float %983, ptr %75, align 4, !tbaa !15
  br label %984

984:                                              ; preds = %963
  %985 = load i32, ptr %74, align 4, !tbaa !9
  %986 = add nsw i32 %985, 1
  store i32 %986, ptr %74, align 4, !tbaa !9
  br label %959, !llvm.loop !34

987:                                              ; preds = %959
  %988 = load float, ptr %75, align 4, !tbaa !15
  %989 = load float, ptr %56, align 4, !tbaa !15
  %990 = fcmp olt float %988, %989
  br i1 %990, label %991, label %1048

991:                                              ; preds = %987
  %992 = load float, ptr %75, align 4, !tbaa !15
  store float %992, ptr %56, align 4, !tbaa !15
  store i32 0, ptr %74, align 4, !tbaa !9
  br label %993

993:                                              ; preds = %1044, %991
  %994 = load i32, ptr %74, align 4, !tbaa !9
  %995 = load i32, ptr %20, align 4, !tbaa !9
  %996 = icmp slt i32 %994, %995
  br i1 %996, label %997, label %1047

997:                                              ; preds = %993
  %998 = load i32, ptr %71, align 4, !tbaa !9
  %999 = load i32, ptr %72, align 4, !tbaa !9
  %1000 = load i32, ptr %73, align 4, !tbaa !9
  %1001 = load i32, ptr %74, align 4, !tbaa !9
  %1002 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %998, i32 noundef %999, i32 noundef %1000, i32 noundef 0, i32 noundef %1001)
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds [2 x [2 x [2 x [4 x i32]]]], ptr %59, i64 0, i64 %1003
  %1005 = load i32, ptr %71, align 4, !tbaa !9
  %1006 = load i32, ptr %72, align 4, !tbaa !9
  %1007 = load i32, ptr %73, align 4, !tbaa !9
  %1008 = load i32, ptr %74, align 4, !tbaa !9
  %1009 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %1005, i32 noundef %1006, i32 noundef %1007, i32 noundef 1, i32 noundef %1008)
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds [2 x [2 x [4 x i32]]], ptr %1004, i64 0, i64 %1010
  %1012 = getelementptr inbounds [2 x [4 x i32]], ptr %1011, i64 0, i64 0
  %1013 = load i32, ptr %74, align 4, !tbaa !9
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds [4 x i32], ptr %1012, i64 0, i64 %1014
  %1016 = load i32, ptr %1015, align 4, !tbaa !9
  %1017 = getelementptr inbounds [2 x [4 x i32]], ptr %57, i64 0, i64 0
  %1018 = load i32, ptr %74, align 4, !tbaa !9
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds [4 x i32], ptr %1017, i64 0, i64 %1019
  store i32 %1016, ptr %1020, align 4, !tbaa !9
  %1021 = load i32, ptr %71, align 4, !tbaa !9
  %1022 = load i32, ptr %72, align 4, !tbaa !9
  %1023 = load i32, ptr %73, align 4, !tbaa !9
  %1024 = load i32, ptr %74, align 4, !tbaa !9
  %1025 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %1021, i32 noundef %1022, i32 noundef %1023, i32 noundef 0, i32 noundef %1024)
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds [2 x [2 x [2 x [4 x i32]]]], ptr %59, i64 0, i64 %1026
  %1028 = load i32, ptr %71, align 4, !tbaa !9
  %1029 = load i32, ptr %72, align 4, !tbaa !9
  %1030 = load i32, ptr %73, align 4, !tbaa !9
  %1031 = load i32, ptr %74, align 4, !tbaa !9
  %1032 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %1028, i32 noundef %1029, i32 noundef %1030, i32 noundef 1, i32 noundef %1031)
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds [2 x [2 x [4 x i32]]], ptr %1027, i64 0, i64 %1033
  %1035 = getelementptr inbounds [2 x [4 x i32]], ptr %1034, i64 0, i64 1
  %1036 = load i32, ptr %74, align 4, !tbaa !9
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds [4 x i32], ptr %1035, i64 0, i64 %1037
  %1039 = load i32, ptr %1038, align 4, !tbaa !9
  %1040 = getelementptr inbounds [2 x [4 x i32]], ptr %57, i64 0, i64 1
  %1041 = load i32, ptr %74, align 4, !tbaa !9
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds [4 x i32], ptr %1040, i64 0, i64 %1042
  store i32 %1039, ptr %1043, align 4, !tbaa !9
  br label %1044

1044:                                             ; preds = %997
  %1045 = load i32, ptr %74, align 4, !tbaa !9
  %1046 = add nsw i32 %1045, 1
  store i32 %1046, ptr %74, align 4, !tbaa !9
  br label %993, !llvm.loop !35

1047:                                             ; preds = %993
  br label %1048

1048:                                             ; preds = %1047, %987
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  br label %1049

1049:                                             ; preds = %1048
  %1050 = load i32, ptr %70, align 4, !tbaa !9
  %1051 = add nsw i32 %1050, 1
  store i32 %1051, ptr %70, align 4, !tbaa !9
  br label %943, !llvm.loop !36

1052:                                             ; preds = %943
  %1053 = load float, ptr %56, align 4, !tbaa !15
  %1054 = load float, ptr %45, align 4, !tbaa !15
  %1055 = fcmp ole float %1053, %1054
  br i1 %1055, label %1056, label %1087

1056:                                             ; preds = %1052
  %1057 = load float, ptr %56, align 4, !tbaa !15
  store float %1057, ptr %45, align 4, !tbaa !15
  %1058 = load i32, ptr %41, align 4, !tbaa !9
  store i32 %1058, ptr %43, align 4, !tbaa !9
  %1059 = load i32, ptr %42, align 4, !tbaa !9
  store i32 %1059, ptr %44, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %1060

1060:                                             ; preds = %1083, %1056
  %1061 = load i32, ptr %23, align 4, !tbaa !9
  %1062 = load i32, ptr %20, align 4, !tbaa !9
  %1063 = icmp slt i32 %1061, %1062
  br i1 %1063, label %1064, label %1086

1064:                                             ; preds = %1060
  %1065 = getelementptr inbounds [2 x [4 x i32]], ptr %57, i64 0, i64 0
  %1066 = load i32, ptr %23, align 4, !tbaa !9
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds [4 x i32], ptr %1065, i64 0, i64 %1067
  %1069 = load i32, ptr %1068, align 4, !tbaa !9
  %1070 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %1071 = load i32, ptr %23, align 4, !tbaa !9
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds [4 x i32], ptr %1070, i64 0, i64 %1072
  store i32 %1069, ptr %1073, align 4, !tbaa !9
  %1074 = getelementptr inbounds [2 x [4 x i32]], ptr %57, i64 0, i64 1
  %1075 = load i32, ptr %23, align 4, !tbaa !9
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds [4 x i32], ptr %1074, i64 0, i64 %1076
  %1078 = load i32, ptr %1077, align 4, !tbaa !9
  %1079 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 1
  %1080 = load i32, ptr %23, align 4, !tbaa !9
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds [4 x i32], ptr %1079, i64 0, i64 %1081
  store i32 %1078, ptr %1082, align 4, !tbaa !9
  br label %1083

1083:                                             ; preds = %1064
  %1084 = load i32, ptr %23, align 4, !tbaa !9
  %1085 = add nsw i32 %1084, 1
  store i32 %1085, ptr %23, align 4, !tbaa !9
  br label %1060, !llvm.loop !37

1086:                                             ; preds = %1060
  br label %1087

1087:                                             ; preds = %1086, %1052
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 128, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 256, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 256, ptr %47) #4
  br label %1088

1088:                                             ; preds = %1087
  %1089 = load i32, ptr %41, align 4, !tbaa !9
  %1090 = add nsw i32 %1089, 1
  store i32 %1090, ptr %41, align 4, !tbaa !9
  br label %334, !llvm.loop !38

1091:                                             ; preds = %334
  br label %1092

1092:                                             ; preds = %1091
  %1093 = load i32, ptr %42, align 4, !tbaa !9
  %1094 = add nsw i32 %1093, 1
  store i32 %1094, ptr %42, align 4, !tbaa !9
  br label %322, !llvm.loop !39

1095:                                             ; preds = %331
  call void @llvm.lifetime.start.p0(i64 256, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #4
  store float 0.000000e+00, ptr %77, align 4, !tbaa !15
  %1096 = load i32, ptr %28, align 4, !tbaa !9
  %1097 = sub nsw i32 %1096, 2
  %1098 = icmp sgt i32 %1097, 3
  br i1 %1098, label %1099, label %1100

1099:                                             ; preds = %1095
  store float 0x47EFFFFFE0000000, ptr %11, align 4
  store i32 1, ptr %29, align 4
  br label %1421

1100:                                             ; preds = %1095
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #4
  store i32 0, ptr %78, align 4, !tbaa !9
  br label %1101

1101:                                             ; preds = %1145, %1100
  %1102 = load i32, ptr %78, align 4, !tbaa !9
  %1103 = load i32, ptr %20, align 4, !tbaa !9
  %1104 = icmp slt i32 %1102, %1103
  br i1 %1104, label %1106, label %1105

1105:                                             ; preds = %1101
  store i32 80, ptr %29, align 4
  br label %1148

1106:                                             ; preds = %1101
  %1107 = load i32, ptr %78, align 4, !tbaa !9
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %1108
  %1110 = load i32, ptr %1109, align 4, !tbaa !9
  %1111 = sub nsw i32 %1110, 5
  %1112 = icmp sgt i32 %1111, 4
  br i1 %1112, label %1113, label %1114

1113:                                             ; preds = %1106
  store float 0x47EFFFFFE0000000, ptr %11, align 4
  store i32 1, ptr %29, align 4
  br label %1148

1114:                                             ; preds = %1106
  %1115 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %1116 = load i32, ptr %78, align 4, !tbaa !9
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds [4 x i32], ptr %1115, i64 0, i64 %1117
  %1119 = load i32, ptr %1118, align 4, !tbaa !9
  %1120 = icmp sgt i32 %1119, 255
  br i1 %1120, label %1128, label %1121

1121:                                             ; preds = %1114
  %1122 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %1123 = load i32, ptr %78, align 4, !tbaa !9
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds [4 x i32], ptr %1122, i64 0, i64 %1124
  %1126 = load i32, ptr %1125, align 4, !tbaa !9
  %1127 = icmp slt i32 %1126, 0
  br i1 %1127, label %1128, label %1129

1128:                                             ; preds = %1121, %1114
  store float 0x47EFFFFFE0000000, ptr %11, align 4
  store i32 1, ptr %29, align 4
  br label %1148

1129:                                             ; preds = %1121
  %1130 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 1
  %1131 = load i32, ptr %78, align 4, !tbaa !9
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds [4 x i32], ptr %1130, i64 0, i64 %1132
  %1134 = load i32, ptr %1133, align 4, !tbaa !9
  %1135 = icmp sgt i32 %1134, 255
  br i1 %1135, label %1143, label %1136

1136:                                             ; preds = %1129
  %1137 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %1138 = load i32, ptr %78, align 4, !tbaa !9
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds [4 x i32], ptr %1137, i64 0, i64 %1139
  %1141 = load i32, ptr %1140, align 4, !tbaa !9
  %1142 = icmp slt i32 %1141, 0
  br i1 %1142, label %1143, label %1144

1143:                                             ; preds = %1136, %1129
  store float 0x47EFFFFFE0000000, ptr %11, align 4
  store i32 1, ptr %29, align 4
  br label %1148

1144:                                             ; preds = %1136
  br label %1145

1145:                                             ; preds = %1144
  %1146 = load i32, ptr %78, align 4, !tbaa !9
  %1147 = add nsw i32 %1146, 1
  store i32 %1147, ptr %78, align 4, !tbaa !9
  br label %1101, !llvm.loop !40

1148:                                             ; preds = %1143, %1128, %1113, %1105
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  %1149 = load i32, ptr %29, align 4
  switch i32 %1149, label %1421 [
    i32 80, label %1150
  ]

1150:                                             ; preds = %1148
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %1151

1151:                                             ; preds = %1301, %1150
  %1152 = load i32, ptr %22, align 4, !tbaa !9
  %1153 = load i32, ptr %13, align 4, !tbaa !9
  %1154 = icmp slt i32 %1152, %1153
  br i1 %1154, label %1155, label %1304

1155:                                             ; preds = %1151
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #4
  store float 0x47EFFFFFE0000000, ptr %79, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #4
  store i32 0, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #4
  %1156 = load ptr, ptr %12, align 8, !tbaa !5
  %1157 = load i32, ptr %22, align 4, !tbaa !9
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds [4 x float], ptr %1156, i64 %1158
  %1160 = getelementptr inbounds [4 x float], ptr %1159, i64 0, i64 0
  %1161 = load float, ptr %1160, align 4, !tbaa !15
  %1162 = getelementptr inbounds [4 x float], ptr %81, i64 0, i64 0
  store float %1161, ptr %1162, align 16, !tbaa !15
  %1163 = load ptr, ptr %12, align 8, !tbaa !5
  %1164 = load i32, ptr %22, align 4, !tbaa !9
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds [4 x float], ptr %1163, i64 %1165
  %1167 = getelementptr inbounds [4 x float], ptr %1166, i64 0, i64 1
  %1168 = load float, ptr %1167, align 4, !tbaa !15
  %1169 = getelementptr inbounds [4 x float], ptr %81, i64 0, i64 1
  store float %1168, ptr %1169, align 4, !tbaa !15
  %1170 = load ptr, ptr %12, align 8, !tbaa !5
  %1171 = load i32, ptr %22, align 4, !tbaa !9
  %1172 = sext i32 %1171 to i64
  %1173 = getelementptr inbounds [4 x float], ptr %1170, i64 %1172
  %1174 = getelementptr inbounds [4 x float], ptr %1173, i64 0, i64 2
  %1175 = load float, ptr %1174, align 4, !tbaa !15
  %1176 = getelementptr inbounds [4 x float], ptr %81, i64 0, i64 2
  store float %1175, ptr %1176, align 8, !tbaa !15
  %1177 = load ptr, ptr %12, align 8, !tbaa !5
  %1178 = load i32, ptr %22, align 4, !tbaa !9
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds [4 x float], ptr %1177, i64 %1179
  %1181 = getelementptr inbounds [4 x float], ptr %1180, i64 0, i64 3
  %1182 = load float, ptr %1181, align 4, !tbaa !15
  %1183 = getelementptr inbounds [4 x float], ptr %81, i64 0, i64 3
  store float %1182, ptr %1183, align 4, !tbaa !15
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %1184

1184:                                             ; preds = %1256, %1155
  %1185 = load i32, ptr %23, align 4, !tbaa !9
  %1186 = load i32, ptr %28, align 4, !tbaa !9
  %1187 = shl i32 1, %1186
  %1188 = icmp slt i32 %1185, %1187
  br i1 %1188, label %1189, label %1259

1189:                                             ; preds = %1184
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #4
  store float 0.000000e+00, ptr %82, align 4, !tbaa !15
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %1190

1190:                                             ; preds = %1245, %1189
  %1191 = load i32, ptr %24, align 4, !tbaa !9
  %1192 = load i32, ptr %20, align 4, !tbaa !9
  %1193 = icmp slt i32 %1191, %1192
  br i1 %1193, label %1194, label %1248

1194:                                             ; preds = %1190
  %1195 = load i32, ptr %28, align 4, !tbaa !9
  %1196 = sub nsw i32 %1195, 2
  %1197 = load i32, ptr %24, align 4, !tbaa !9
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %1198
  %1200 = load i32, ptr %1199, align 4, !tbaa !9
  %1201 = sub nsw i32 %1200, 5
  %1202 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %1203 = load i32, ptr %24, align 4, !tbaa !9
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds [4 x i32], ptr %1202, i64 0, i64 %1204
  %1206 = load i32, ptr %1205, align 4, !tbaa !9
  %1207 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 1
  %1208 = load i32, ptr %24, align 4, !tbaa !9
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds [4 x i32], ptr %1207, i64 0, i64 %1209
  %1211 = load i32, ptr %1210, align 4, !tbaa !9
  %1212 = load i32, ptr %23, align 4, !tbaa !9
  %1213 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %1196, i32 noundef %1201, i32 noundef %1206, i32 noundef %1211, i32 noundef %1212)
  %1214 = load i32, ptr %24, align 4, !tbaa !9
  %1215 = sext i32 %1214 to i64
  %1216 = getelementptr inbounds [4 x float], ptr %81, i64 0, i64 %1215
  %1217 = load float, ptr %1216, align 4, !tbaa !15
  %1218 = fsub float %1213, %1217
  %1219 = load i32, ptr %28, align 4, !tbaa !9
  %1220 = sub nsw i32 %1219, 2
  %1221 = load i32, ptr %24, align 4, !tbaa !9
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %1222
  %1224 = load i32, ptr %1223, align 4, !tbaa !9
  %1225 = sub nsw i32 %1224, 5
  %1226 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %1227 = load i32, ptr %24, align 4, !tbaa !9
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds [4 x i32], ptr %1226, i64 0, i64 %1228
  %1230 = load i32, ptr %1229, align 4, !tbaa !9
  %1231 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 1
  %1232 = load i32, ptr %24, align 4, !tbaa !9
  %1233 = sext i32 %1232 to i64
  %1234 = getelementptr inbounds [4 x i32], ptr %1231, i64 0, i64 %1233
  %1235 = load i32, ptr %1234, align 4, !tbaa !9
  %1236 = load i32, ptr %23, align 4, !tbaa !9
  %1237 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %1220, i32 noundef %1225, i32 noundef %1230, i32 noundef %1235, i32 noundef %1236)
  %1238 = load i32, ptr %24, align 4, !tbaa !9
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds [4 x float], ptr %81, i64 0, i64 %1239
  %1241 = load float, ptr %1240, align 4, !tbaa !15
  %1242 = fsub float %1237, %1241
  %1243 = load float, ptr %82, align 4, !tbaa !15
  %1244 = call float @llvm.fmuladd.f32(float %1218, float %1242, float %1243)
  store float %1244, ptr %82, align 4, !tbaa !15
  br label %1245

1245:                                             ; preds = %1194
  %1246 = load i32, ptr %24, align 4, !tbaa !9
  %1247 = add nsw i32 %1246, 1
  store i32 %1247, ptr %24, align 4, !tbaa !9
  br label %1190, !llvm.loop !41

1248:                                             ; preds = %1190
  %1249 = load float, ptr %82, align 4, !tbaa !15
  %1250 = load float, ptr %79, align 4, !tbaa !15
  %1251 = fcmp olt float %1249, %1250
  br i1 %1251, label %1252, label %1255

1252:                                             ; preds = %1248
  %1253 = load float, ptr %82, align 4, !tbaa !15
  store float %1253, ptr %79, align 4, !tbaa !15
  %1254 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %1254, ptr %80, align 4, !tbaa !9
  br label %1255

1255:                                             ; preds = %1252, %1248
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  br label %1256

1256:                                             ; preds = %1255
  %1257 = load i32, ptr %23, align 4, !tbaa !9
  %1258 = add nsw i32 %1257, 1
  store i32 %1258, ptr %23, align 4, !tbaa !9
  br label %1184, !llvm.loop !42

1259:                                             ; preds = %1184
  %1260 = load i32, ptr %80, align 4, !tbaa !9
  %1261 = load i32, ptr %22, align 4, !tbaa !9
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds [64 x i32], ptr %76, i64 0, i64 %1262
  store i32 %1260, ptr %1263, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %1264

1264:                                             ; preds = %1294, %1259
  %1265 = load i32, ptr %24, align 4, !tbaa !9
  %1266 = load i32, ptr %20, align 4, !tbaa !9
  %1267 = icmp slt i32 %1265, %1266
  br i1 %1267, label %1268, label %1297

1268:                                             ; preds = %1264
  %1269 = load i32, ptr %28, align 4, !tbaa !9
  %1270 = sub nsw i32 %1269, 2
  %1271 = load i32, ptr %24, align 4, !tbaa !9
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %1272
  %1274 = load i32, ptr %1273, align 4, !tbaa !9
  %1275 = sub nsw i32 %1274, 5
  %1276 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %1277 = load i32, ptr %24, align 4, !tbaa !9
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds [4 x i32], ptr %1276, i64 0, i64 %1278
  %1280 = load i32, ptr %1279, align 4, !tbaa !9
  %1281 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 1
  %1282 = load i32, ptr %24, align 4, !tbaa !9
  %1283 = sext i32 %1282 to i64
  %1284 = getelementptr inbounds [4 x i32], ptr %1281, i64 0, i64 %1283
  %1285 = load i32, ptr %1284, align 4, !tbaa !9
  %1286 = load i32, ptr %80, align 4, !tbaa !9
  %1287 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %1270, i32 noundef %1275, i32 noundef %1280, i32 noundef %1285, i32 noundef %1286)
  %1288 = load i32, ptr %22, align 4, !tbaa !9
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds [64 x [4 x float]], ptr %39, i64 0, i64 %1289
  %1291 = load i32, ptr %24, align 4, !tbaa !9
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds [4 x float], ptr %1290, i64 0, i64 %1292
  store float %1287, ptr %1293, align 4, !tbaa !15
  br label %1294

1294:                                             ; preds = %1268
  %1295 = load i32, ptr %24, align 4, !tbaa !9
  %1296 = add nsw i32 %1295, 1
  store i32 %1296, ptr %24, align 4, !tbaa !9
  br label %1264, !llvm.loop !43

1297:                                             ; preds = %1264
  %1298 = load float, ptr %79, align 4, !tbaa !15
  %1299 = load float, ptr %77, align 4, !tbaa !15
  %1300 = fadd float %1299, %1298
  store float %1300, ptr %77, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  br label %1301

1301:                                             ; preds = %1297
  %1302 = load i32, ptr %22, align 4, !tbaa !9
  %1303 = add nsw i32 %1302, 1
  store i32 %1303, ptr %22, align 4, !tbaa !9
  br label %1151, !llvm.loop !44

1304:                                             ; preds = %1151
  store i32 0, ptr %35, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %1305

1305:                                             ; preds = %1329, %1304
  %1306 = load i32, ptr %24, align 4, !tbaa !9
  %1307 = load i32, ptr %13, align 4, !tbaa !9
  %1308 = icmp slt i32 %1306, %1307
  br i1 %1308, label %1309, label %1332

1309:                                             ; preds = %1305
  %1310 = load i32, ptr %35, align 4, !tbaa !9
  %1311 = icmp ne i32 %1310, 0
  br i1 %1311, label %1326, label %1312

1312:                                             ; preds = %1309
  %1313 = load i32, ptr %24, align 4, !tbaa !9
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds [64 x i32], ptr %31, i64 0, i64 %1314
  %1316 = load i32, ptr %1315, align 4, !tbaa !9
  %1317 = load i32, ptr %44, align 4, !tbaa !9
  %1318 = mul nsw i32 %1316, %1317
  %1319 = load i32, ptr %43, align 4, !tbaa !9
  %1320 = add nsw i32 %1318, %1319
  %1321 = load i32, ptr %24, align 4, !tbaa !9
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds [64 x i32], ptr %76, i64 0, i64 %1322
  %1324 = load i32, ptr %1323, align 4, !tbaa !9
  %1325 = icmp ne i32 %1320, %1324
  br label %1326

1326:                                             ; preds = %1312, %1309
  %1327 = phi i1 [ true, %1309 ], [ %1325, %1312 ]
  %1328 = zext i1 %1327 to i32
  store i32 %1328, ptr %35, align 4, !tbaa !9
  br label %1329

1329:                                             ; preds = %1326
  %1330 = load i32, ptr %24, align 4, !tbaa !9
  %1331 = add nsw i32 %1330, 1
  store i32 %1331, ptr %24, align 4, !tbaa !9
  br label %1305, !llvm.loop !45

1332:                                             ; preds = %1305
  %1333 = load float, ptr %77, align 4, !tbaa !15
  %1334 = load float, ptr %37, align 4, !tbaa !15
  %1335 = fcmp olt float %1333, %1334
  %1336 = zext i1 %1335 to i32
  store i32 %1336, ptr %36, align 4, !tbaa !9
  %1337 = load i32, ptr %36, align 4, !tbaa !9
  %1338 = icmp ne i32 %1337, 0
  br i1 %1338, label %1339, label %1404

1339:                                             ; preds = %1332
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %1340

1340:                                             ; preds = %1399, %1339
  %1341 = load i32, ptr %24, align 4, !tbaa !9
  %1342 = load i32, ptr %13, align 4, !tbaa !9
  %1343 = icmp slt i32 %1341, %1342
  br i1 %1343, label %1344, label %1402

1344:                                             ; preds = %1340
  %1345 = load i32, ptr %24, align 4, !tbaa !9
  %1346 = sext i32 %1345 to i64
  %1347 = getelementptr inbounds [64 x i32], ptr %76, i64 0, i64 %1346
  %1348 = load i32, ptr %1347, align 4, !tbaa !9
  %1349 = load i32, ptr %24, align 4, !tbaa !9
  %1350 = sext i32 %1349 to i64
  %1351 = getelementptr inbounds [64 x i32], ptr %31, i64 0, i64 %1350
  store i32 %1348, ptr %1351, align 4, !tbaa !9
  %1352 = load ptr, ptr %14, align 8, !tbaa !5
  %1353 = load i32, ptr %24, align 4, !tbaa !9
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds i32, ptr %1352, i64 %1354
  store i32 %1348, ptr %1355, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %1356

1356:                                             ; preds = %1395, %1344
  %1357 = load i32, ptr %23, align 4, !tbaa !9
  %1358 = load i32, ptr %20, align 4, !tbaa !9
  %1359 = icmp slt i32 %1357, %1358
  br i1 %1359, label %1360, label %1398

1360:                                             ; preds = %1356
  %1361 = load i32, ptr %24, align 4, !tbaa !9
  %1362 = sext i32 %1361 to i64
  %1363 = getelementptr inbounds [64 x [4 x float]], ptr %39, i64 0, i64 %1362
  %1364 = load i32, ptr %23, align 4, !tbaa !9
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds [4 x float], ptr %1363, i64 0, i64 %1365
  %1367 = load float, ptr %1366, align 4, !tbaa !15
  %1368 = load ptr, ptr %15, align 8, !tbaa !5
  %1369 = load i32, ptr %24, align 4, !tbaa !9
  %1370 = sext i32 %1369 to i64
  %1371 = getelementptr inbounds [4 x float], ptr %1368, i64 %1370
  %1372 = load i32, ptr %23, align 4, !tbaa !9
  %1373 = sext i32 %1372 to i64
  %1374 = getelementptr inbounds [4 x float], ptr %1371, i64 0, i64 %1373
  store float %1367, ptr %1374, align 4, !tbaa !15
  %1375 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 0
  %1376 = load i32, ptr %23, align 4, !tbaa !9
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds [4 x i32], ptr %1375, i64 0, i64 %1377
  %1379 = load i32, ptr %1378, align 4, !tbaa !9
  %1380 = load ptr, ptr %16, align 8, !tbaa !5
  %1381 = getelementptr inbounds [4 x i32], ptr %1380, i64 0
  %1382 = load i32, ptr %23, align 4, !tbaa !9
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds [4 x i32], ptr %1381, i64 0, i64 %1383
  store i32 %1379, ptr %1384, align 4, !tbaa !9
  %1385 = getelementptr inbounds [2 x [4 x i32]], ptr %38, i64 0, i64 1
  %1386 = load i32, ptr %23, align 4, !tbaa !9
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds [4 x i32], ptr %1385, i64 0, i64 %1387
  %1389 = load i32, ptr %1388, align 4, !tbaa !9
  %1390 = load ptr, ptr %16, align 8, !tbaa !5
  %1391 = getelementptr inbounds [4 x i32], ptr %1390, i64 1
  %1392 = load i32, ptr %23, align 4, !tbaa !9
  %1393 = sext i32 %1392 to i64
  %1394 = getelementptr inbounds [4 x i32], ptr %1391, i64 0, i64 %1393
  store i32 %1389, ptr %1394, align 4, !tbaa !9
  br label %1395

1395:                                             ; preds = %1360
  %1396 = load i32, ptr %23, align 4, !tbaa !9
  %1397 = add nsw i32 %1396, 1
  store i32 %1397, ptr %23, align 4, !tbaa !9
  br label %1356, !llvm.loop !46

1398:                                             ; preds = %1356
  br label %1399

1399:                                             ; preds = %1398
  %1400 = load i32, ptr %24, align 4, !tbaa !9
  %1401 = add nsw i32 %1400, 1
  store i32 %1401, ptr %24, align 4, !tbaa !9
  br label %1340, !llvm.loop !47

1402:                                             ; preds = %1340
  %1403 = load float, ptr %77, align 4, !tbaa !15
  store float %1403, ptr %37, align 4, !tbaa !15
  br label %1404

1404:                                             ; preds = %1402, %1332
  %1405 = load i32, ptr %35, align 4, !tbaa !9
  %1406 = icmp ne i32 %1405, 0
  br i1 %1406, label %1407, label %1410

1407:                                             ; preds = %1404
  %1408 = load i32, ptr %36, align 4, !tbaa !9
  %1409 = icmp ne i32 %1408, 0
  br label %1410

1410:                                             ; preds = %1407, %1404
  %1411 = phi i1 [ false, %1404 ], [ %1409, %1407 ]
  %1412 = xor i1 %1411, true
  %1413 = zext i1 %1412 to i32
  store i32 %1413, ptr %34, align 4, !tbaa !9
  %1414 = load i32, ptr %33, align 4, !tbaa !9
  %1415 = icmp sgt i32 %1414, 0
  br i1 %1415, label %1416, label %1419

1416:                                             ; preds = %1410
  %1417 = load i32, ptr %33, align 4, !tbaa !9
  %1418 = add nsw i32 %1417, -1
  store i32 %1418, ptr %33, align 4, !tbaa !9
  br label %1420

1419:                                             ; preds = %1410
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %1420

1420:                                             ; preds = %1419, %1416
  store i32 0, ptr %29, align 4
  br label %1421

1421:                                             ; preds = %1420, %1148, %1099
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 256, ptr %76) #4
  br label %1422

1422:                                             ; preds = %1421, %319
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  %1423 = load i32, ptr %29, align 4
  switch i32 %1423, label %1497 [
    i32 0, label %1424
  ]

1424:                                             ; preds = %1422
  br label %1425

1425:                                             ; preds = %1424
  %1426 = load i32, ptr %34, align 4, !tbaa !9
  %1427 = icmp ne i32 %1426, 0
  br i1 %1427, label %1431, label %1428

1428:                                             ; preds = %1425
  %1429 = load i32, ptr %33, align 4, !tbaa !9
  %1430 = icmp ne i32 %1429, 0
  br label %1431

1431:                                             ; preds = %1428, %1425
  %1432 = phi i1 [ false, %1425 ], [ %1430, %1428 ]
  br i1 %1432, label %154, label %1433, !llvm.loop !48

1433:                                             ; preds = %1431
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %1434

1434:                                             ; preds = %1492, %1433
  %1435 = load i32, ptr %23, align 4, !tbaa !9
  %1436 = load i32, ptr %20, align 4, !tbaa !9
  %1437 = icmp slt i32 %1435, %1436
  br i1 %1437, label %1438, label %1495

1438:                                             ; preds = %1434
  %1439 = load i32, ptr %28, align 4, !tbaa !9
  %1440 = sub nsw i32 %1439, 2
  %1441 = load i32, ptr %23, align 4, !tbaa !9
  %1442 = sext i32 %1441 to i64
  %1443 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %1442
  %1444 = load i32, ptr %1443, align 4, !tbaa !9
  %1445 = sub nsw i32 %1444, 5
  %1446 = load ptr, ptr %16, align 8, !tbaa !5
  %1447 = getelementptr inbounds [4 x i32], ptr %1446, i64 0
  %1448 = load i32, ptr %23, align 4, !tbaa !9
  %1449 = sext i32 %1448 to i64
  %1450 = getelementptr inbounds [4 x i32], ptr %1447, i64 0, i64 %1449
  %1451 = load i32, ptr %1450, align 4, !tbaa !9
  %1452 = load ptr, ptr %16, align 8, !tbaa !5
  %1453 = getelementptr inbounds [4 x i32], ptr %1452, i64 1
  %1454 = load i32, ptr %23, align 4, !tbaa !9
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds [4 x i32], ptr %1453, i64 0, i64 %1455
  %1457 = load i32, ptr %1456, align 4, !tbaa !9
  %1458 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %1440, i32 noundef %1445, i32 noundef %1451, i32 noundef %1457, i32 noundef 0)
  %1459 = load ptr, ptr %21, align 8, !tbaa !5
  %1460 = getelementptr inbounds [4 x float], ptr %1459, i64 0
  %1461 = load i32, ptr %23, align 4, !tbaa !9
  %1462 = sext i32 %1461 to i64
  %1463 = getelementptr inbounds [4 x float], ptr %1460, i64 0, i64 %1462
  store float %1458, ptr %1463, align 4, !tbaa !15
  %1464 = load i32, ptr %28, align 4, !tbaa !9
  %1465 = sub nsw i32 %1464, 2
  %1466 = load i32, ptr %23, align 4, !tbaa !9
  %1467 = sext i32 %1466 to i64
  %1468 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %1467
  %1469 = load i32, ptr %1468, align 4, !tbaa !9
  %1470 = sub nsw i32 %1469, 5
  %1471 = load ptr, ptr %16, align 8, !tbaa !5
  %1472 = getelementptr inbounds [4 x i32], ptr %1471, i64 0
  %1473 = load i32, ptr %23, align 4, !tbaa !9
  %1474 = sext i32 %1473 to i64
  %1475 = getelementptr inbounds [4 x i32], ptr %1472, i64 0, i64 %1474
  %1476 = load i32, ptr %1475, align 4, !tbaa !9
  %1477 = load ptr, ptr %16, align 8, !tbaa !5
  %1478 = getelementptr inbounds [4 x i32], ptr %1477, i64 1
  %1479 = load i32, ptr %23, align 4, !tbaa !9
  %1480 = sext i32 %1479 to i64
  %1481 = getelementptr inbounds [4 x i32], ptr %1478, i64 0, i64 %1480
  %1482 = load i32, ptr %1481, align 4, !tbaa !9
  %1483 = load i32, ptr %28, align 4, !tbaa !9
  %1484 = shl i32 1, %1483
  %1485 = sub nsw i32 %1484, 1
  %1486 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %1465, i32 noundef %1470, i32 noundef %1476, i32 noundef %1482, i32 noundef %1485)
  %1487 = load ptr, ptr %21, align 8, !tbaa !5
  %1488 = getelementptr inbounds [4 x float], ptr %1487, i64 1
  %1489 = load i32, ptr %23, align 4, !tbaa !9
  %1490 = sext i32 %1489 to i64
  %1491 = getelementptr inbounds [4 x float], ptr %1488, i64 0, i64 %1490
  store float %1486, ptr %1491, align 4, !tbaa !15
  br label %1492

1492:                                             ; preds = %1438
  %1493 = load i32, ptr %23, align 4, !tbaa !9
  %1494 = add nsw i32 %1493, 1
  store i32 %1494, ptr %23, align 4, !tbaa !9
  br label %1434, !llvm.loop !49

1495:                                             ; preds = %1434
  %1496 = load float, ptr %37, align 4, !tbaa !15
  store float %1496, ptr %11, align 4
  store i32 1, ptr %29, align 4
  br label %1497

1497:                                             ; preds = %1495, %1422
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 1024, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 256, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #4
  br label %1498

1498:                                             ; preds = %1497, %127
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  br label %1499

1499:                                             ; preds = %1498, %85
  %1500 = load float, ptr %11, align 4
  ret float %1500
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { mustprogress 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 #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 = !{!"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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = !{!16, !16, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
!43 = distinct !{!43, !12}
!44 = distinct !{!44, !12}
!45 = distinct !{!45, !12}
!46 = distinct !{!46, !12}
!47 = distinct !{!47, !12}
!48 = distinct !{!48, !12}
!49 = distinct !{!49, !12}


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

@_ZN10HDR_Encode6npv_ndE = external dso_local local_unnamed_addr global [2 x [8 x i32]], align 16

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #1

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.floor.f32(float) #1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN10HDR_Encode12totalError_dEPA4_fS1_ii(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10HDR_Encode10all_same_dEPA4_fii(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10HDR_Encode16cluster_mean_d_dEPA4_fS1_PiS2_S2_ii(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10HDR_Encode8mean_d_dEPA4_fPfii(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10HDR_Encode21index_collapse_kernelEPii(ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10HDR_Encode5max_iEPii(ptr noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN10HDR_Encode20quant_single_point_dEPA4_fiPiS1_PA4_iiS2_ii(ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10HDR_Encode13ep_find_floorEfiii(float noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef float @_ZN10HDR_Encode13ep_shaker_2_dEPA4_fiPiS1_PA4_iiiiiS1_(ptr noundef %0, i32 noundef %1, ptr nocapture noundef %2, ptr nocapture noundef writeonly %3, ptr nocapture noundef %4, i32 noundef %5, i32 noundef %6, i32 noundef %7, i32 noundef %8, ptr nocapture noundef writeonly %9) local_unnamed_addr #2 {
  %11 = alloca [4 x i32], align 16
  %12 = alloca [4 x float], align 16
  %13 = alloca [64 x i32], align 16
  %14 = alloca [2 x [4 x i32]], align 16
  %15 = alloca [64 x [4 x float]], align 16
  %16 = alloca [64 x i32], align 16
  %17 = alloca [2 x [4 x float]], align 16
  %18 = alloca [2 x [4 x float]], align 16
  %19 = alloca [16 x [4 x float]], align 16
  %20 = alloca [16 x i32], align 16
  %21 = alloca [16 x i32], align 16
  %22 = alloca [2 x [4 x i32]], align 16
  %23 = alloca [2 x [2 x [4 x float]]], align 16
  %24 = alloca [2 x [2 x [2 x [4 x i32]]]], align 16
  %25 = alloca [64 x i32], align 16
  %26 = alloca [4 x float], align 16
  %27 = icmp slt i32 %8, 3
  br i1 %27, label %416, label %28

28:                                               ; preds = %10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #5
  %29 = shl nuw nsw i32 %8, 1
  %30 = srem i32 %7, %29
  %31 = icmp ne i32 %30, 0
  %32 = add i32 %7, -1
  %33 = add i32 %32, %29
  %34 = sdiv i32 %33, %29
  %wide.trip.count = zext nneg i32 %8 to i64
  %min.iters.check = icmp ult i32 %8, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %28
  %n.vec = and i64 %wide.trip.count, 2147483640
  %broadcast.splatinsert = insertelement <4 x i32> poison, i32 %34, i64 0
  %broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %35 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %index
  %36 = getelementptr inbounds i8, ptr %35, i64 16
  store <4 x i32> %broadcast.splat, ptr %35, align 16, !tbaa !5
  store <4 x i32> %broadcast.splat, ptr %36, align 16, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %37 = icmp eq i64 %index.next, %n.vec
  br i1 %37, label %middle.block, label %vector.body, !llvm.loop !9

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

scalar.ph.preheader:                              ; preds = %middle.block, %28
  %indvars.iv.ph = phi i64 [ 0, %28 ], [ %n.vec, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %38 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %indvars.iv
  store i32 %34, ptr %38, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit, label %scalar.ph, !llvm.loop !13

.loopexit:                                        ; preds = %scalar.ph, %middle.block
  %39 = zext i1 %31 to i32
  %40 = add i32 %6, 1
  %.not553 = icmp ult i32 %40, 2
  br i1 %.not553, label %._crit_edge.thread, label %.lr.ph

.lr.ph:                                           ; preds = %.loopexit, %.lr.ph
  %.0427555 = phi i32 [ %41, %.lr.ph ], [ %40, %.loopexit ]
  %.0448554 = phi i32 [ %42, %.lr.ph ], [ 0, %.loopexit ]
  %41 = ashr i32 %.0427555, 1
  %42 = add nuw nsw i32 %.0448554, 1
  %.not = icmp ult i32 %41, 2
  br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph
  %43 = add nsw i32 %.0448554, -1
  %44 = icmp ugt i32 %.0448554, 4
  br i1 %44, label %415, label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.loopexit, %._crit_edge
  %45 = phi i32 [ %43, %._crit_edge ], [ -2, %.loopexit ]
  %.0448.lcssa863 = phi i32 [ %42, %._crit_edge ], [ 0, %.loopexit ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %13) #5
  %46 = icmp sgt i32 %1, 0
  %47 = zext i32 %1 to i64
  %48 = shl nuw nsw i64 %47, 2
  br i1 %46, label %.lr.ph558.preheader, label %._crit_edge559

.lr.ph558.preheader:                              ; preds = %._crit_edge.thread
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %13, ptr align 4 %2, i64 %48, i1 false), !tbaa !5
  br label %._crit_edge559

._crit_edge559:                                   ; preds = %._crit_edge.thread, %.lr.ph558.preheader
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %15) #5
  %49 = tail call noundef i32 @_ZN10HDR_Encode10all_same_dEPA4_fii(ptr noundef %0, i32 noundef %1, i32 noundef %8)
  call void @_ZN10HDR_Encode8mean_d_dEPA4_fPfii(ptr noundef %0, ptr noundef nonnull %12, i32 noundef %1, i32 noundef %8)
  %50 = getelementptr inbounds i8, ptr %18, i64 16
  %51 = sitofp i32 %6 to float
  %52 = getelementptr inbounds i8, ptr %17, i64 16
  %wide.trip.count779 = select i1 %31, i64 2, i64 1
  %53 = ashr i32 %5, 1
  %54 = add nsw i32 %53, -1
  %55 = xor i32 %39, -1
  %56 = shl nuw nsw i32 1, %39
  %57 = add nsw i32 %8, -3
  %58 = zext nneg i32 %57 to i64
  %59 = sext i32 %30 to i64
  %60 = getelementptr inbounds [2 x [8 x i32]], ptr @_ZN10HDR_Encode6npv_ndE, i64 0, i64 %58, i64 %59
  %61 = getelementptr inbounds i8, ptr %22, i64 16
  %62 = getelementptr inbounds i8, ptr %14, i64 16
  %63 = getelementptr i8, ptr %4, i64 16
  %smax = call i32 @llvm.smax.i32(i32 %8, i32 1)
  %wide.trip.count738 = zext nneg i32 %smax to i64
  %wide.trip.count748 = zext nneg i32 %smax to i64
  %wide.trip.count753 = zext nneg i32 %smax to i64
  %wide.trip.count763 = zext nneg i32 %smax to i64
  %wide.trip.count784 = zext nneg i32 %smax to i64
  %wide.trip.count789 = zext nneg i32 %smax to i64
  %wide.trip.count794 = zext nneg i32 %smax to i64
  %wide.trip.count799 = zext nneg i32 %smax to i64
  %wide.trip.count807 = zext nneg i32 %smax to i64
  %wide.trip.count812 = zext nneg i32 %smax to i64
  %wide.trip.count817 = zext nneg i32 %smax to i64
  %wide.trip.count831 = zext nneg i32 %smax to i64
  %min.iters.check996 = icmp ult i32 %1, 8
  %n.vec999 = and i64 %47, 2147483640
  %cmp.n1010 = icmp eq i64 %n.vec999, %47
  %min.iters.check984 = icmp eq i32 %8, 3
  %n.vec987 = and i64 %wide.trip.count738, 2147483644
  %cmp.n993 = icmp eq i64 %n.vec987, %wide.trip.count738
  %min.iters.check973 = icmp slt i32 %8, 8
  %n.vec976 = and i64 %wide.trip.count738, 2147483640
  %cmp.n981 = icmp eq i64 %n.vec976, %wide.trip.count738
  %min.iters.check955 = icmp eq i32 %8, 3
  %n.vec958 = and i64 %wide.trip.count738, 2147483644
  %cmp.n970 = icmp eq i64 %n.vec958, %wide.trip.count738
  %min.iters.check934 = icmp eq i32 %8, 3
  %n.vec937 = and i64 %wide.trip.count738, 2147483644
  %broadcast.splatinsert947 = insertelement <4 x float> poison, float %51, i64 0
  %broadcast.splat948 = shufflevector <4 x float> %broadcast.splatinsert947, <4 x float> poison, <4 x i32> zeroinitializer
  %cmp.n952 = icmp eq i64 %n.vec937, %wide.trip.count738
  %min.iters.check921 = icmp eq i32 %8, 3
  %n.vec924 = and i64 %wide.trip.count738, 2147483644
  %cmp.n931 = icmp eq i64 %n.vec924, %wide.trip.count738
  %xtraiter = and i64 %47, 1
  %64 = icmp eq i32 %1, 1
  %unroll_iter = and i64 %47, 2147483646
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %min.iters.check908 = icmp eq i32 %8, 3
  %n.vec911 = and i64 %wide.trip.count738, 2147483644
  %cmp.n918 = icmp eq i64 %n.vec911, %wide.trip.count738
  br label %65

65:                                               ; preds = %.loopexit546, %._crit_edge559
  %.0477 = phi float [ 0x47EFFFFFE0000000, %._crit_edge559 ], [ %.2479, %.loopexit546 ]
  %.0455 = phi i32 [ 8, %._crit_edge559 ], [ %.1456, %.loopexit546 ]
  call void @_ZN10HDR_Encode21index_collapse_kernelEPii(ptr noundef nonnull %13, i32 noundef %1)
  %66 = call noundef i32 @_ZN10HDR_Encode5max_iEPii(ptr noundef nonnull %13, i32 noundef %1)
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %68, label %.preheader549

.preheader549:                                    ; preds = %65
  %.not495639 = icmp sgt i32 %66, %6
  br i1 %.not495639, label %.lr.ph656.preheader, label %.preheader544

68:                                               ; preds = %65
  %.not501 = icmp eq i32 %49, 0
  br i1 %.not501, label %71, label %69

69:                                               ; preds = %68
  %70 = call noundef float @_ZN10HDR_Encode20quant_single_point_dEPA4_fiPiS1_PA4_iiS2_ii(ptr noundef %0, i32 noundef %1, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %14, i32 noundef %6, ptr noundef nonnull %11, i32 noundef %30, i32 noundef %8)
  br label %74

71:                                               ; preds = %68
  %72 = call noundef float @_ZN10HDR_Encode20quant_single_point_dEPA4_fiPiS1_PA4_iiS2_ii(ptr noundef nonnull %12, i32 noundef %1, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef nonnull %14, i32 noundef %6, ptr noundef nonnull %11, i32 noundef %30, i32 noundef %8)
  %73 = call noundef float @_ZN10HDR_Encode12totalError_dEPA4_fS1_ii(ptr noundef %0, ptr noundef nonnull %15, i32 noundef %1, i32 noundef %8)
  br label %74

74:                                               ; preds = %71, %69
  %.0465 = phi float [ %70, %69 ], [ %73, %71 ]
  %75 = fcmp olt float %.0465, %.0477
  %brmerge.not = and i1 %75, %46
  %.0477.lcssa.mux = select i1 %75, float %.0465, float %.0477
  br i1 %brmerge.not, label %.lr.ph691.us.preheader, label %.lr.ph697

.lr.ph691.us.preheader:                           ; preds = %74
  %wide.trip.count846 = zext nneg i32 %smax to i64
  %min.iters.check1013 = icmp eq i32 %8, 3
  %n.vec1016 = and i64 %wide.trip.count738, 2147483644
  %cmp.n1024 = icmp eq i64 %n.vec1016, %wide.trip.count738
  br label %.lr.ph691.us

.lr.ph691.us:                                     ; preds = %.lr.ph691.us.preheader, %._crit_edge692.us
  %indvars.iv848 = phi i64 [ 0, %.lr.ph691.us.preheader ], [ %indvars.iv.next849, %._crit_edge692.us ]
  %76 = getelementptr inbounds [64 x i32], ptr %13, i64 0, i64 %indvars.iv848
  %77 = load i32, ptr %76, align 4, !tbaa !5
  %78 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv848
  store i32 %77, ptr %78, align 4, !tbaa !5
  br i1 %min.iters.check1013, label %scalar.ph1012.preheader, label %vector.body1018

vector.body1018:                                  ; preds = %.lr.ph691.us, %vector.body1018
  %index1019 = phi i64 [ %index.next1023, %vector.body1018 ], [ 0, %.lr.ph691.us ]
  %79 = getelementptr inbounds [64 x [4 x float]], ptr %15, i64 0, i64 %indvars.iv848, i64 %index1019
  %wide.load1020 = load <4 x float>, ptr %79, align 16, !tbaa !15
  %80 = getelementptr inbounds [4 x float], ptr %3, i64 %indvars.iv848, i64 %index1019
  store <4 x float> %wide.load1020, ptr %80, align 4, !tbaa !15
  %81 = getelementptr inbounds [4 x i32], ptr %14, i64 0, i64 %index1019
  %wide.load1021 = load <4 x i32>, ptr %81, align 16, !tbaa !5
  %82 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %index1019
  store <4 x i32> %wide.load1021, ptr %82, align 4, !tbaa !5
  %83 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 %index1019
  %wide.load1022 = load <4 x i32>, ptr %83, align 16, !tbaa !5
  %84 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %index1019
  store <4 x i32> %wide.load1022, ptr %84, align 4, !tbaa !5
  %index.next1023 = add nuw i64 %index1019, 4
  %85 = icmp eq i64 %index.next1023, %n.vec1016
  br i1 %85, label %middle.block1011, label %vector.body1018, !llvm.loop !17

middle.block1011:                                 ; preds = %vector.body1018
  br i1 %cmp.n1024, label %._crit_edge692.us, label %scalar.ph1012.preheader

scalar.ph1012.preheader:                          ; preds = %middle.block1011, %.lr.ph691.us
  %indvars.iv843.ph = phi i64 [ 0, %.lr.ph691.us ], [ %n.vec1016, %middle.block1011 ]
  br label %scalar.ph1012

scalar.ph1012:                                    ; preds = %scalar.ph1012.preheader, %scalar.ph1012
  %indvars.iv843 = phi i64 [ %indvars.iv.next844, %scalar.ph1012 ], [ %indvars.iv843.ph, %scalar.ph1012.preheader ]
  %86 = getelementptr inbounds [64 x [4 x float]], ptr %15, i64 0, i64 %indvars.iv848, i64 %indvars.iv843
  %87 = load float, ptr %86, align 4, !tbaa !15
  %88 = getelementptr inbounds [4 x float], ptr %3, i64 %indvars.iv848, i64 %indvars.iv843
  store float %87, ptr %88, align 4, !tbaa !15
  %89 = getelementptr inbounds [4 x i32], ptr %14, i64 0, i64 %indvars.iv843
  %90 = load i32, ptr %89, align 4, !tbaa !5
  %91 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %indvars.iv843
  store i32 %90, ptr %91, align 4, !tbaa !5
  %92 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 %indvars.iv843
  %93 = load i32, ptr %92, align 4, !tbaa !5
  %94 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %indvars.iv843
  store i32 %93, ptr %94, align 4, !tbaa !5
  %indvars.iv.next844 = add nuw nsw i64 %indvars.iv843, 1
  %exitcond847.not = icmp eq i64 %indvars.iv.next844, %wide.trip.count846
  br i1 %exitcond847.not, label %._crit_edge692.us, label %scalar.ph1012, !llvm.loop !18

._crit_edge692.us:                                ; preds = %scalar.ph1012, %middle.block1011
  %indvars.iv.next849 = add nuw nsw i64 %indvars.iv848, 1
  %exitcond852.not = icmp eq i64 %indvars.iv.next849, %47
  br i1 %exitcond852.not, label %.lr.ph697, label %.lr.ph691.us, !llvm.loop !19

.lr.ph697:                                        ; preds = %._crit_edge692.us, %74
  %.1478 = phi float [ %.0477.lcssa.mux, %74 ], [ %.0465, %._crit_edge692.us ]
  %notmask504 = shl nsw i32 -1, %.0448.lcssa863
  %95 = xor i32 %notmask504, -1
  %96 = getelementptr inbounds i8, ptr %9, i64 16
  %wide.trip.count856 = zext nneg i32 %smax to i64
  br label %97

97:                                               ; preds = %.lr.ph697, %97
  %indvars.iv853 = phi i64 [ 0, %.lr.ph697 ], [ %indvars.iv.next854, %97 ]
  %98 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %indvars.iv853
  %99 = load i32, ptr %98, align 4, !tbaa !5
  %100 = add nsw i32 %99, -5
  %101 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %indvars.iv853
  %102 = load i32, ptr %101, align 4, !tbaa !5
  %103 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %indvars.iv853
  %104 = load i32, ptr %103, align 4, !tbaa !5
  %105 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %45, i32 noundef %100, i32 noundef %102, i32 noundef %104, i32 noundef 0)
  %106 = getelementptr inbounds [4 x float], ptr %9, i64 0, i64 %indvars.iv853
  store float %105, ptr %106, align 4, !tbaa !15
  %107 = load i32, ptr %98, align 4, !tbaa !5
  %108 = add nsw i32 %107, -5
  %109 = load i32, ptr %101, align 4, !tbaa !5
  %110 = load i32, ptr %103, align 4, !tbaa !5
  %111 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %45, i32 noundef %108, i32 noundef %109, i32 noundef %110, i32 noundef %95)
  %112 = getelementptr inbounds [4 x float], ptr %96, i64 0, i64 %indvars.iv853
  store float %111, ptr %112, align 4, !tbaa !15
  %indvars.iv.next854 = add nuw nsw i64 %indvars.iv853, 1
  %exitcond857.not = icmp eq i64 %indvars.iv.next854, %wide.trip.count856
  br i1 %exitcond857.not, label %.thread508, label %97, !llvm.loop !20

.preheader544:                                    ; preds = %.preheader549, %._crit_edge631
  %.pn = phi i32 [ %indvars.iv801, %._crit_edge631 ], [ %40, %.preheader549 ]
  %.0466643 = phi float [ %.1467.lcssa, %._crit_edge631 ], [ 0x47EFFFFFE0000000, %.preheader549 ]
  %.0469642 = phi i32 [ %.1470.lcssa, %._crit_edge631 ], [ -1, %.preheader549 ]
  %.0472641 = phi i32 [ %.1473.lcssa, %._crit_edge631 ], [ -1, %.preheader549 ]
  %.0475640 = phi i32 [ %304, %._crit_edge631 ], [ 1, %.preheader549 ]
  %indvars.iv801 = sub i32 %.pn, %66
  %113 = mul nsw i32 %.0475640, %66
  %.not497625 = icmp sgt i32 %113, %6
  br i1 %.not497625, label %._crit_edge631, label %.lr.ph630.preheader

.lr.ph630.preheader:                              ; preds = %.preheader544
  %broadcast.splatinsert1005 = insertelement <4 x i32> poison, i32 %.0475640, i64 0
  %broadcast.splat1006 = shufflevector <4 x i32> %broadcast.splatinsert1005, <4 x i32> poison, <4 x i32> zeroinitializer
  br label %.lr.ph630

.lr.ph630:                                        ; preds = %.lr.ph630.preheader, %.loopexit540
  %.1467629 = phi float [ %.2468, %.loopexit540 ], [ %.0466643, %.lr.ph630.preheader ]
  %.1470628 = phi i32 [ %.2471, %.loopexit540 ], [ %.0469642, %.lr.ph630.preheader ]
  %.1473627 = phi i32 [ %.2474, %.loopexit540 ], [ %.0472641, %.lr.ph630.preheader ]
  %.0476626 = phi i32 [ %303, %.loopexit540 ], [ 0, %.lr.ph630.preheader ]
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %16) #5
  br i1 %46, label %.lr.ph562.preheader, label %._crit_edge563

.lr.ph562.preheader:                              ; preds = %.lr.ph630
  br i1 %min.iters.check996, label %.lr.ph562.preheader1029, label %vector.ph997

vector.ph997:                                     ; preds = %.lr.ph562.preheader
  %broadcast.splatinsert1007 = insertelement <4 x i32> poison, i32 %.0476626, i64 0
  %broadcast.splat1008 = shufflevector <4 x i32> %broadcast.splatinsert1007, <4 x i32> poison, <4 x i32> zeroinitializer
  br label %vector.body1001

vector.body1001:                                  ; preds = %vector.body1001, %vector.ph997
  %index1002 = phi i64 [ 0, %vector.ph997 ], [ %index.next1009, %vector.body1001 ]
  %114 = getelementptr inbounds [64 x i32], ptr %13, i64 0, i64 %index1002
  %115 = getelementptr inbounds i8, ptr %114, i64 16
  %wide.load1003 = load <4 x i32>, ptr %114, align 16, !tbaa !5
  %wide.load1004 = load <4 x i32>, ptr %115, align 16, !tbaa !5
  %116 = mul nsw <4 x i32> %wide.load1003, %broadcast.splat1006
  %117 = mul nsw <4 x i32> %wide.load1004, %broadcast.splat1006
  %118 = add nsw <4 x i32> %116, %broadcast.splat1008
  %119 = add nsw <4 x i32> %117, %broadcast.splat1008
  %120 = getelementptr inbounds [64 x i32], ptr %16, i64 0, i64 %index1002
  %121 = getelementptr inbounds i8, ptr %120, i64 16
  store <4 x i32> %118, ptr %120, align 16, !tbaa !5
  store <4 x i32> %119, ptr %121, align 16, !tbaa !5
  %index.next1009 = add nuw i64 %index1002, 8
  %122 = icmp eq i64 %index.next1009, %n.vec999
  br i1 %122, label %middle.block994, label %vector.body1001, !llvm.loop !21

middle.block994:                                  ; preds = %vector.body1001
  br i1 %cmp.n1010, label %._crit_edge563, label %.lr.ph562.preheader1029

.lr.ph562.preheader1029:                          ; preds = %middle.block994, %.lr.ph562.preheader
  %indvars.iv730.ph = phi i64 [ 0, %.lr.ph562.preheader ], [ %n.vec999, %middle.block994 ]
  br label %.lr.ph562

.lr.ph562:                                        ; preds = %.lr.ph562.preheader1029, %.lr.ph562
  %indvars.iv730 = phi i64 [ %indvars.iv.next731, %.lr.ph562 ], [ %indvars.iv730.ph, %.lr.ph562.preheader1029 ]
  %123 = getelementptr inbounds [64 x i32], ptr %13, i64 0, i64 %indvars.iv730
  %124 = load i32, ptr %123, align 4, !tbaa !5
  %125 = mul nsw i32 %124, %.0475640
  %126 = add nsw i32 %125, %.0476626
  %127 = getelementptr inbounds [64 x i32], ptr %16, i64 0, i64 %indvars.iv730
  store i32 %126, ptr %127, align 4, !tbaa !5
  %indvars.iv.next731 = add nuw nsw i64 %indvars.iv730, 1
  %exitcond734.not = icmp eq i64 %indvars.iv.next731, %47
  br i1 %exitcond734.not, label %._crit_edge563, label %.lr.ph562, !llvm.loop !22

._crit_edge563:                                   ; preds = %.lr.ph562, %middle.block994, %.lr.ph630
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #5
  %128 = call noundef i32 @_ZN10HDR_Encode16cluster_mean_d_dEPA4_fS1_PiS2_S2_ii(ptr noundef %0, ptr noundef nonnull %19, ptr noundef nonnull %16, ptr noundef nonnull %21, ptr noundef nonnull %20, i32 noundef %1, i32 noundef %8)
  %129 = icmp sgt i32 %128, 0
  br i1 %129, label %.preheader537.us.preheader, label %.lr.ph569.preheader

.preheader537.us.preheader:                       ; preds = %._crit_edge563
  %wide.trip.count743 = zext nneg i32 %128 to i64
  br label %.preheader537.us

.preheader537.us:                                 ; preds = %.preheader537.us.preheader, %._crit_edge566.us
  %indvars.iv740 = phi i64 [ 0, %.preheader537.us.preheader ], [ %indvars.iv.next741, %._crit_edge566.us ]
  %130 = getelementptr inbounds [16 x i32], ptr %21, i64 0, i64 %indvars.iv740
  %131 = load i32, ptr %130, align 4, !tbaa !5
  %132 = sext i32 %131 to i64
  br i1 %min.iters.check984, label %scalar.ph983.preheader, label %vector.body989

vector.body989:                                   ; preds = %.preheader537.us, %vector.body989
  %index990 = phi i64 [ %index.next992, %vector.body989 ], [ 0, %.preheader537.us ]
  %133 = getelementptr inbounds [16 x [4 x float]], ptr %19, i64 0, i64 %132, i64 %index990
  %wide.load991 = load <4 x float>, ptr %133, align 16, !tbaa !15
  %134 = fadd <4 x float> %wide.load991, <float 5.000000e-01, float 5.000000e-01, float 5.000000e-01, float 5.000000e-01>
  %135 = call <4 x float> @llvm.floor.v4f32(<4 x float> %134)
  store <4 x float> %135, ptr %133, align 16, !tbaa !15
  %index.next992 = add nuw i64 %index990, 4
  %136 = icmp eq i64 %index.next992, %n.vec987
  br i1 %136, label %middle.block982, label %vector.body989, !llvm.loop !23

middle.block982:                                  ; preds = %vector.body989
  br i1 %cmp.n993, label %._crit_edge566.us, label %scalar.ph983.preheader

scalar.ph983.preheader:                           ; preds = %middle.block982, %.preheader537.us
  %indvars.iv735.ph = phi i64 [ 0, %.preheader537.us ], [ %n.vec987, %middle.block982 ]
  br label %scalar.ph983

scalar.ph983:                                     ; preds = %scalar.ph983.preheader, %scalar.ph983
  %indvars.iv735 = phi i64 [ %indvars.iv.next736, %scalar.ph983 ], [ %indvars.iv735.ph, %scalar.ph983.preheader ]
  %137 = getelementptr inbounds [16 x [4 x float]], ptr %19, i64 0, i64 %132, i64 %indvars.iv735
  %138 = load float, ptr %137, align 4, !tbaa !15
  %139 = fadd float %138, 5.000000e-01
  %140 = call float @llvm.floor.f32(float %139)
  store float %140, ptr %137, align 4, !tbaa !15
  %indvars.iv.next736 = add nuw nsw i64 %indvars.iv735, 1
  %exitcond739.not = icmp eq i64 %indvars.iv.next736, %wide.trip.count738
  br i1 %exitcond739.not, label %._crit_edge566.us, label %scalar.ph983, !llvm.loop !24

._crit_edge566.us:                                ; preds = %scalar.ph983, %middle.block982
  %indvars.iv.next741 = add nuw nsw i64 %indvars.iv740, 1
  %exitcond744.not = icmp eq i64 %indvars.iv.next741, %wide.trip.count743
  br i1 %exitcond744.not, label %.lr.ph569.preheader, label %.preheader537.us, !llvm.loop !25

.lr.ph569.preheader:                              ; preds = %._crit_edge566.us, %._crit_edge563
  br i1 %min.iters.check973, label %.lr.ph569.preheader1028, label %vector.body978

.lr.ph569.preheader1028:                          ; preds = %middle.block971, %.lr.ph569.preheader
  %indvars.iv745.ph = phi i64 [ 0, %.lr.ph569.preheader ], [ %n.vec976, %middle.block971 ]
  br label %.lr.ph569

vector.body978:                                   ; preds = %.lr.ph569.preheader, %vector.body978
  %index979 = phi i64 [ %index.next980, %vector.body978 ], [ 0, %.lr.ph569.preheader ]
  %141 = getelementptr inbounds [4 x float], ptr %50, i64 0, i64 %index979
  %142 = getelementptr inbounds i8, ptr %141, i64 16
  store <4 x float> zeroinitializer, ptr %141, align 16, !tbaa !15
  store <4 x float> zeroinitializer, ptr %142, align 16, !tbaa !15
  %143 = getelementptr inbounds [4 x float], ptr %18, i64 0, i64 %index979
  %144 = getelementptr inbounds i8, ptr %143, i64 16
  store <4 x float> zeroinitializer, ptr %143, align 16, !tbaa !15
  store <4 x float> zeroinitializer, ptr %144, align 16, !tbaa !15
  %index.next980 = add nuw i64 %index979, 8
  %145 = icmp eq i64 %index.next980, %n.vec976
  br i1 %145, label %middle.block971, label %vector.body978, !llvm.loop !26

middle.block971:                                  ; preds = %vector.body978
  br i1 %cmp.n981, label %.preheader542, label %.lr.ph569.preheader1028

.preheader542:                                    ; preds = %.lr.ph569, %middle.block971
  br i1 %46, label %.lr.ph572, label %.lr.ph585.preheader

.lr.ph569:                                        ; preds = %.lr.ph569.preheader1028, %.lr.ph569
  %indvars.iv745 = phi i64 [ %indvars.iv.next746, %.lr.ph569 ], [ %indvars.iv745.ph, %.lr.ph569.preheader1028 ]
  %146 = getelementptr inbounds [4 x float], ptr %50, i64 0, i64 %indvars.iv745
  store float 0.000000e+00, ptr %146, align 4, !tbaa !15
  %147 = getelementptr inbounds [4 x float], ptr %18, i64 0, i64 %indvars.iv745
  store float 0.000000e+00, ptr %147, align 4, !tbaa !15
  %indvars.iv.next746 = add nuw nsw i64 %indvars.iv745, 1
  %exitcond749.not = icmp eq i64 %indvars.iv.next746, %wide.trip.count748
  br i1 %exitcond749.not, label %.preheader542, label %.lr.ph569, !llvm.loop !27

.lr.ph572:                                        ; preds = %.preheader542, %._crit_edge573
  %indvars.iv755 = phi i64 [ %indvars.iv.next756, %._crit_edge573 ], [ 0, %.preheader542 ]
  %.sroa.20.3576 = phi float [ %159, %._crit_edge573 ], [ 0.000000e+00, %.preheader542 ]
  %.sroa.9.3575 = phi float [ %156, %._crit_edge573 ], [ 0.000000e+00, %.preheader542 ]
  %.sroa.0.3574 = phi float [ %153, %._crit_edge573 ], [ 0.000000e+00, %.preheader542 ]
  %148 = getelementptr inbounds [64 x i32], ptr %16, i64 0, i64 %indvars.iv755
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = sub nsw i32 %6, %149
  %151 = mul nsw i32 %150, %150
  %152 = uitofp nneg i32 %151 to float
  %153 = fadd float %.sroa.0.3574, %152
  %154 = mul nsw i32 %150, %149
  %155 = sitofp i32 %154 to float
  %156 = fadd float %.sroa.9.3575, %155
  %157 = mul nsw i32 %149, %149
  %158 = uitofp nneg i32 %157 to float
  %159 = fadd float %.sroa.20.3576, %158
  %160 = sitofp i32 %150 to float
  %161 = sext i32 %149 to i64
  %162 = sitofp i32 %149 to float
  br i1 %min.iters.check955, label %scalar.ph954.preheader, label %vector.ph956

vector.ph956:                                     ; preds = %.lr.ph572
  %broadcast.splatinsert964 = insertelement <4 x float> poison, float %160, i64 0
  %broadcast.splat965 = shufflevector <4 x float> %broadcast.splatinsert964, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert967 = insertelement <4 x float> poison, float %162, i64 0
  %broadcast.splat968 = shufflevector <4 x float> %broadcast.splatinsert967, <4 x float> poison, <4 x i32> zeroinitializer
  %load_initial = load <4 x float>, ptr %18, align 16
  br label %vector.body960

vector.body960:                                   ; preds = %vector.body960, %vector.ph956
  %store_forwarded = phi <4 x float> [ %load_initial, %vector.ph956 ], [ %167, %vector.body960 ]
  %index961 = phi i64 [ 0, %vector.ph956 ], [ %index.next969, %vector.body960 ]
  %163 = getelementptr inbounds [16 x [4 x float]], ptr %19, i64 0, i64 %161, i64 %index961
  %wide.load962 = load <4 x float>, ptr %163, align 16, !tbaa !15
  %164 = getelementptr inbounds [4 x float], ptr %18, i64 0, i64 %index961
  %165 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat965, <4 x float> %wide.load962, <4 x float> %store_forwarded)
  store <4 x float> %165, ptr %164, align 16, !tbaa !15
  %166 = getelementptr inbounds [4 x float], ptr %50, i64 0, i64 %index961
  %wide.load966 = load <4 x float>, ptr %166, align 16, !tbaa !15
  %167 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat968, <4 x float> %wide.load962, <4 x float> %wide.load966)
  store <4 x float> %167, ptr %166, align 16, !tbaa !15
  %index.next969 = add nuw i64 %index961, 4
  %168 = icmp eq i64 %index.next969, %n.vec958
  br i1 %168, label %middle.block953, label %vector.body960, !llvm.loop !28

middle.block953:                                  ; preds = %vector.body960
  br i1 %cmp.n970, label %._crit_edge573, label %scalar.ph954.preheader

scalar.ph954.preheader:                           ; preds = %middle.block953, %.lr.ph572
  %indvars.iv750.ph = phi i64 [ 0, %.lr.ph572 ], [ %n.vec958, %middle.block953 ]
  br label %scalar.ph954

scalar.ph954:                                     ; preds = %scalar.ph954.preheader, %scalar.ph954
  %indvars.iv750 = phi i64 [ %indvars.iv.next751, %scalar.ph954 ], [ %indvars.iv750.ph, %scalar.ph954.preheader ]
  %169 = getelementptr inbounds [16 x [4 x float]], ptr %19, i64 0, i64 %161, i64 %indvars.iv750
  %170 = load float, ptr %169, align 4, !tbaa !15
  %171 = getelementptr inbounds [4 x float], ptr %18, i64 0, i64 %indvars.iv750
  %172 = load float, ptr %171, align 4, !tbaa !15
  %173 = call float @llvm.fmuladd.f32(float %160, float %170, float %172)
  store float %173, ptr %171, align 4, !tbaa !15
  %174 = getelementptr inbounds [4 x float], ptr %50, i64 0, i64 %indvars.iv750
  %175 = load float, ptr %174, align 4, !tbaa !15
  %176 = call float @llvm.fmuladd.f32(float %162, float %170, float %175)
  store float %176, ptr %174, align 4, !tbaa !15
  %indvars.iv.next751 = add nuw nsw i64 %indvars.iv750, 1
  %exitcond754.not = icmp eq i64 %indvars.iv.next751, %wide.trip.count753
  br i1 %exitcond754.not, label %._crit_edge573, label %scalar.ph954, !llvm.loop !29

._crit_edge573:                                   ; preds = %scalar.ph954, %middle.block953
  %indvars.iv.next756 = add nuw nsw i64 %indvars.iv755, 1
  %exitcond759.not = icmp eq i64 %indvars.iv.next756, %47
  br i1 %exitcond759.not, label %.lr.ph585.preheader, label %.lr.ph572, !llvm.loop !30

.lr.ph585.preheader:                              ; preds = %._crit_edge573, %.preheader542
  %.sroa.0.3.lcssa = phi float [ 0.000000e+00, %.preheader542 ], [ %153, %._crit_edge573 ]
  %.sroa.9.3.lcssa = phi float [ 0.000000e+00, %.preheader542 ], [ %156, %._crit_edge573 ]
  %.sroa.20.3.lcssa = phi float [ 0.000000e+00, %.preheader542 ], [ %159, %._crit_edge573 ]
  %177 = fneg float %.sroa.9.3.lcssa
  %178 = fmul float %.sroa.9.3.lcssa, %177
  %179 = call float @llvm.fmuladd.f32(float %.sroa.0.3.lcssa, float %.sroa.20.3.lcssa, float %178)
  %180 = fdiv float %.sroa.20.3.lcssa, %179
  %181 = fdiv float %.sroa.0.3.lcssa, %179
  %182 = fdiv float %177, %179
  br i1 %min.iters.check934, label %.lr.ph585.preheader1027, label %vector.ph935

vector.ph935:                                     ; preds = %.lr.ph585.preheader
  %broadcast.splatinsert943 = insertelement <4 x float> poison, float %182, i64 0
  %broadcast.splat944 = shufflevector <4 x float> %broadcast.splatinsert943, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert945 = insertelement <4 x float> poison, float %180, i64 0
  %broadcast.splat946 = shufflevector <4 x float> %broadcast.splatinsert945, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert949 = insertelement <4 x float> poison, float %181, i64 0
  %broadcast.splat950 = shufflevector <4 x float> %broadcast.splatinsert949, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body939

vector.body939:                                   ; preds = %vector.body939, %vector.ph935
  %index940 = phi i64 [ 0, %vector.ph935 ], [ %index.next951, %vector.body939 ]
  %183 = getelementptr inbounds [4 x float], ptr %18, i64 0, i64 %index940
  %wide.load941 = load <4 x float>, ptr %183, align 16, !tbaa !15
  %184 = getelementptr inbounds [4 x float], ptr %50, i64 0, i64 %index940
  %wide.load942 = load <4 x float>, ptr %184, align 16, !tbaa !15
  %185 = fmul <4 x float> %broadcast.splat944, %wide.load942
  %186 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat946, <4 x float> %wide.load941, <4 x float> %185)
  %187 = fmul <4 x float> %186, %broadcast.splat948
  %188 = getelementptr inbounds [4 x float], ptr %17, i64 0, i64 %index940
  store <4 x float> %187, ptr %188, align 16, !tbaa !15
  %189 = fmul <4 x float> %broadcast.splat950, %wide.load942
  %190 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat944, <4 x float> %wide.load941, <4 x float> %189)
  %191 = fmul <4 x float> %190, %broadcast.splat948
  %192 = getelementptr inbounds [4 x float], ptr %52, i64 0, i64 %index940
  store <4 x float> %191, ptr %192, align 16, !tbaa !15
  %index.next951 = add nuw i64 %index940, 4
  %193 = icmp eq i64 %index.next951, %n.vec937
  br i1 %193, label %middle.block932, label %vector.body939, !llvm.loop !31

middle.block932:                                  ; preds = %vector.body939
  br i1 %cmp.n952, label %.lr.ph610.preheader, label %.lr.ph585.preheader1027

.lr.ph585.preheader1027:                          ; preds = %middle.block932, %.lr.ph585.preheader
  %indvars.iv760.ph = phi i64 [ 0, %.lr.ph585.preheader ], [ %n.vec937, %middle.block932 ]
  br label %.lr.ph585

.lr.ph585:                                        ; preds = %.lr.ph585.preheader1027, %.lr.ph585
  %indvars.iv760 = phi i64 [ %indvars.iv.next761, %.lr.ph585 ], [ %indvars.iv760.ph, %.lr.ph585.preheader1027 ]
  %194 = getelementptr inbounds [4 x float], ptr %18, i64 0, i64 %indvars.iv760
  %195 = load float, ptr %194, align 4, !tbaa !15
  %196 = getelementptr inbounds [4 x float], ptr %50, i64 0, i64 %indvars.iv760
  %197 = load float, ptr %196, align 4, !tbaa !15
  %198 = fmul float %182, %197
  %199 = call float @llvm.fmuladd.f32(float %180, float %195, float %198)
  %200 = fmul float %199, %51
  %201 = getelementptr inbounds [4 x float], ptr %17, i64 0, i64 %indvars.iv760
  store float %200, ptr %201, align 4, !tbaa !15
  %202 = fmul float %181, %197
  %203 = call float @llvm.fmuladd.f32(float %182, float %195, float %202)
  %204 = fmul float %203, %51
  %205 = getelementptr inbounds [4 x float], ptr %52, i64 0, i64 %indvars.iv760
  store float %204, ptr %205, align 4, !tbaa !15
  %indvars.iv.next761 = add nuw nsw i64 %indvars.iv760, 1
  %exitcond764.not = icmp eq i64 %indvars.iv.next761, %wide.trip.count763
  br i1 %exitcond764.not, label %.lr.ph610.preheader, label %.lr.ph585, !llvm.loop !32

.lr.ph610.preheader:                              ; preds = %.lr.ph585, %middle.block932
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %24) #5
  br label %.lr.ph610

.preheader541:                                    ; preds = %262
  %206 = load i32, ptr %60, align 4, !tbaa !5
  %207 = icmp sgt i32 %206, 0
  br i1 %207, label %.lr.ph613.preheader, label %._crit_edge621

.lr.ph610:                                        ; preds = %.lr.ph610.preheader, %262
  %indvars.iv781 = phi i64 [ 0, %.lr.ph610.preheader ], [ %indvars.iv.next782, %262 ]
  %208 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %indvars.iv781
  %invariant.gep = getelementptr inbounds [4 x i32], ptr %24, i64 0, i64 %indvars.iv781
  %.phi.trans.insert.phi.trans.insert = getelementptr inbounds [2 x [4 x float]], ptr %17, i64 0, i64 0, i64 %indvars.iv781
  %.pre.pre = load float, ptr %.phi.trans.insert.phi.trans.insert, align 4, !tbaa !15
  %.pre859.pre = load i32, ptr %208, align 4, !tbaa !5
  %notmask = shl nsw i32 -1, %.pre859.pre
  %209 = xor i32 %notmask, -1
  %210 = getelementptr inbounds [2 x [4 x float]], ptr %17, i64 0, i64 1, i64 %indvars.iv781
  %211 = add nsw i32 %.pre859.pre, -5
  %212 = add nsw i32 %.pre859.pre, -5
  br label %213

213:                                              ; preds = %.lr.ph610, %260
  %.sroa.0858.0 = phi i32 [ 0, %.lr.ph610 ], [ %261, %260 ]
  %indvars.iv776 = phi i64 [ 0, %.lr.ph610 ], [ %indvars.iv.next777, %260 ]
  br label %.preheader533

.preheader533:                                    ; preds = %213, %._crit_edge601
  %.sroa.6.0 = phi i32 [ 0, %213 ], [ %259, %._crit_edge601 ]
  %indvars.iv771 = phi i64 [ 0, %213 ], [ %indvars.iv.next772, %._crit_edge601 ]
  %214 = call noundef i32 @_ZN10HDR_Encode13ep_find_floorEfiii(float noundef %.pre.pre, i32 noundef %.pre859.pre, i32 noundef %39, i32 noundef %.sroa.0858.0)
  %. = call i32 @llvm.smin.i32(i32 %214, i32 %54)
  %215 = and i32 %., %55
  %216 = sub nsw i32 %214, %215
  %217 = sub nsw i32 %209, %214
  %218 = call i32 @llvm.smin.i32(i32 %217, i32 %53)
  %219 = and i32 %218, %55
  %220 = add nsw i32 %219, %214
  %221 = load float, ptr %210, align 4, !tbaa !15
  %222 = call noundef i32 @_ZN10HDR_Encode13ep_find_floorEfiii(float noundef %221, i32 noundef %.pre859.pre, i32 noundef %39, i32 noundef %.sroa.6.0)
  %..1 = call i32 @llvm.smin.i32(i32 %222, i32 %54)
  %223 = and i32 %..1, %55
  %224 = sub nsw i32 %222, %223
  %225 = sub nsw i32 %209, %222
  %226 = call i32 @llvm.smin.i32(i32 %225, i32 %53)
  %227 = and i32 %226, %55
  %228 = add nsw i32 %227, %222
  %229 = getelementptr inbounds [2 x [2 x [4 x float]]], ptr %23, i64 0, i64 %indvars.iv776, i64 %indvars.iv771, i64 %indvars.iv781
  store float 0x47EFFFFFE0000000, ptr %229, align 4, !tbaa !15
  %.not499596 = icmp sgt i32 %216, %220
  br i1 %.not499596, label %._crit_edge601, label %.lr.ph600

.lr.ph600:                                        ; preds = %.preheader533
  %.not500593 = icmp sgt i32 %224, %228
  %gep = getelementptr inbounds [2 x [2 x [2 x [4 x i32]]]], ptr %invariant.gep, i64 0, i64 %indvars.iv776, i64 %indvars.iv771
  %230 = getelementptr inbounds [2 x [2 x [2 x [4 x i32]]]], ptr %24, i64 0, i64 %indvars.iv776, i64 %indvars.iv771, i64 1, i64 %indvars.iv781
  br i1 %.not500593, label %._crit_edge601, label %.lr.ph600.split

.lr.ph600.split:                                  ; preds = %.lr.ph600
  br i1 %46, label %.preheader532.lr.ph.us, label %.preheader532.lr.ph

.preheader532.lr.ph.us:                           ; preds = %.lr.ph600.split, %._crit_edge595.split.us.us
  %231 = phi float [ %235, %._crit_edge595.split.us.us ], [ 0x47EFFFFFE0000000, %.lr.ph600.split ]
  %.0454597.us602 = phi i32 [ %251, %._crit_edge595.split.us.us ], [ %216, %.lr.ph600.split ]
  br label %.preheader532.us.us

.preheader532.us.us:                              ; preds = %234, %.preheader532.lr.ph.us
  %232 = phi float [ %231, %.preheader532.lr.ph.us ], [ %235, %234 ]
  %.0453594.us.us = phi i32 [ %224, %.preheader532.lr.ph.us ], [ %236, %234 ]
  br label %237

233:                                              ; preds = %._crit_edge591.us.us
  store float %248, ptr %229, align 4, !tbaa !15
  store i32 %.0454597.us602, ptr %gep, align 4, !tbaa !5
  store i32 %.0453594.us.us, ptr %230, align 4, !tbaa !5
  br label %234

234:                                              ; preds = %._crit_edge591.us.us, %233
  %235 = phi float [ %232, %._crit_edge591.us.us ], [ %248, %233 ]
  %236 = add nsw i32 %.0453594.us.us, %56
  %.not500.us.us = icmp sgt i32 %236, %228
  br i1 %.not500.us.us, label %._crit_edge595.split.us.us, label %.preheader532.us.us, !llvm.loop !33

237:                                              ; preds = %237, %.preheader532.us.us
  %indvars.iv768 = phi i64 [ %indvars.iv.next769, %237 ], [ %47, %.preheader532.us.us ]
  %.0449588.us.us = phi float [ %248, %237 ], [ 0.000000e+00, %.preheader532.us.us ]
  %indvars.iv.next769 = add nsw i64 %indvars.iv768, -1
  %238 = getelementptr inbounds i32, ptr %16, i64 %indvars.iv.next769
  %239 = load i32, ptr %238, align 4, !tbaa !5
  %240 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %45, i32 noundef %211, i32 noundef %.0454597.us602, i32 noundef %.0453594.us.us, i32 noundef %239)
  %241 = getelementptr inbounds [4 x float], ptr %0, i64 %indvars.iv.next769, i64 %indvars.iv781
  %242 = load float, ptr %241, align 4, !tbaa !15
  %243 = fsub float %240, %242
  %244 = load i32, ptr %238, align 4, !tbaa !5
  %245 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %45, i32 noundef %212, i32 noundef %.0454597.us602, i32 noundef %.0453594.us.us, i32 noundef %244)
  %246 = load float, ptr %241, align 4, !tbaa !15
  %247 = fsub float %245, %246
  %248 = call float @llvm.fmuladd.f32(float %243, float %247, float %.0449588.us.us)
  %249 = icmp sgt i64 %indvars.iv768, 1
  br i1 %249, label %237, label %._crit_edge591.us.us, !llvm.loop !34

._crit_edge591.us.us:                             ; preds = %237
  %250 = fcmp olt float %248, %232
  br i1 %250, label %233, label %234

._crit_edge595.split.us.us:                       ; preds = %234
  %251 = add nsw i32 %.0454597.us602, %56
  %.not499.us603 = icmp sgt i32 %251, %220
  br i1 %.not499.us603, label %._crit_edge601, label %.preheader532.lr.ph.us, !llvm.loop !35

.preheader532.lr.ph:                              ; preds = %.lr.ph600.split, %._crit_edge595.split
  %.lcssa605 = phi float [ %256, %._crit_edge595.split ], [ 0x47EFFFFFE0000000, %.lr.ph600.split ]
  %.0454597 = phi i32 [ %258, %._crit_edge595.split ], [ %216, %.lr.ph600.split ]
  br label %.preheader532

.preheader532:                                    ; preds = %.preheader532.lr.ph, %255
  %252 = phi float [ %.lcssa605, %.preheader532.lr.ph ], [ %256, %255 ]
  %.0453594 = phi i32 [ %224, %.preheader532.lr.ph ], [ %257, %255 ]
  %253 = fcmp ogt float %252, 0.000000e+00
  br i1 %253, label %254, label %255

254:                                              ; preds = %.preheader532
  store i32 %.0454597, ptr %gep, align 4, !tbaa !5
  store i32 %.0453594, ptr %230, align 4, !tbaa !5
  br label %255

255:                                              ; preds = %254, %.preheader532
  %256 = phi float [ 0.000000e+00, %254 ], [ %252, %.preheader532 ]
  %257 = add nsw i32 %.0453594, %56
  %.not500 = icmp sgt i32 %257, %228
  br i1 %.not500, label %._crit_edge595.split, label %.preheader532, !llvm.loop !33

._crit_edge595.split:                             ; preds = %255
  %258 = add nsw i32 %.0454597, %56
  %.not499 = icmp sgt i32 %258, %220
  br i1 %.not499, label %._crit_edge601.split.split, label %.preheader532.lr.ph, !llvm.loop !35

._crit_edge601.split.split:                       ; preds = %._crit_edge595.split
  store float %256, ptr %229, align 4, !tbaa !15
  br label %._crit_edge601

._crit_edge601:                                   ; preds = %._crit_edge595.split.us.us, %.lr.ph600, %._crit_edge601.split.split, %.preheader533
  %indvars.iv.next772 = add nuw nsw i64 %indvars.iv771, 1
  %259 = trunc nuw nsw i64 %indvars.iv.next772 to i32
  %exitcond775.not = icmp eq i64 %indvars.iv.next772, %wide.trip.count779
  br i1 %exitcond775.not, label %260, label %.preheader533, !llvm.loop !36

260:                                              ; preds = %._crit_edge601
  %indvars.iv.next777 = add nuw nsw i64 %indvars.iv776, 1
  %261 = trunc nuw nsw i64 %indvars.iv.next777 to i32
  %exitcond780.not = icmp eq i64 %indvars.iv.next777, %wide.trip.count779
  br i1 %exitcond780.not, label %262, label %213, !llvm.loop !37

262:                                              ; preds = %260
  %indvars.iv.next782 = add nuw nsw i64 %indvars.iv781, 1
  %exitcond785.not = icmp eq i64 %indvars.iv.next782, %wide.trip.count784
  br i1 %exitcond785.not, label %.preheader541, label %.lr.ph610, !llvm.loop !38

.lr.ph613.preheader:                              ; preds = %.preheader541, %.loopexit535
  %.0438619 = phi i32 [ %288, %.loopexit535 ], [ 0, %.preheader541 ]
  %.0459618 = phi float [ %.1460, %.loopexit535 ], [ 0x47EFFFFFE0000000, %.preheader541 ]
  br label %.lr.ph613

.lr.ph613:                                        ; preds = %.lr.ph613.preheader, %.lr.ph613
  %indvars.iv786 = phi i64 [ 0, %.lr.ph613.preheader ], [ %indvars.iv.next787, %.lr.ph613 ]
  %.0422612 = phi float [ 0.000000e+00, %.lr.ph613.preheader ], [ %270, %.lr.ph613 ]
  %263 = trunc nuw nsw i64 %indvars.iv786 to i32
  %264 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %57, i32 noundef %30, i32 noundef %.0438619, i32 noundef 0, i32 noundef %263)
  %265 = sext i32 %264 to i64
  %266 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %57, i32 noundef %30, i32 noundef %.0438619, i32 noundef 1, i32 noundef %263)
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds [2 x [2 x [4 x float]]], ptr %23, i64 0, i64 %265, i64 %267, i64 %indvars.iv786
  %269 = load float, ptr %268, align 4, !tbaa !15
  %270 = fadd float %.0422612, %269
  %indvars.iv.next787 = add nuw nsw i64 %indvars.iv786, 1
  %exitcond790.not = icmp eq i64 %indvars.iv.next787, %wide.trip.count789
  br i1 %exitcond790.not, label %._crit_edge614, label %.lr.ph613, !llvm.loop !39

._crit_edge614:                                   ; preds = %.lr.ph613
  %271 = fcmp uge float %270, %.0459618
  br i1 %271, label %.loopexit535, label %.lr.ph617

.lr.ph617:                                        ; preds = %._crit_edge614, %.lr.ph617
  %indvars.iv791 = phi i64 [ %indvars.iv.next792, %.lr.ph617 ], [ 0, %._crit_edge614 ]
  %272 = trunc nuw nsw i64 %indvars.iv791 to i32
  %273 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %57, i32 noundef %30, i32 noundef %.0438619, i32 noundef 0, i32 noundef %272)
  %274 = sext i32 %273 to i64
  %275 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %57, i32 noundef %30, i32 noundef %.0438619, i32 noundef 1, i32 noundef %272)
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds [2 x [2 x [2 x [4 x i32]]]], ptr %24, i64 0, i64 %274, i64 %276
  %278 = getelementptr inbounds [4 x i32], ptr %277, i64 0, i64 %indvars.iv791
  %279 = load i32, ptr %278, align 4, !tbaa !5
  %280 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 %indvars.iv791
  store i32 %279, ptr %280, align 4, !tbaa !5
  %281 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %57, i32 noundef %30, i32 noundef %.0438619, i32 noundef 0, i32 noundef %272)
  %282 = sext i32 %281 to i64
  %283 = call noundef i32 @_ZN10HDR_Encode14get_par_vectorEiiiii(i32 noundef %57, i32 noundef %30, i32 noundef %.0438619, i32 noundef 1, i32 noundef %272)
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds [2 x [2 x [2 x [4 x i32]]]], ptr %24, i64 0, i64 %282, i64 %284, i64 1, i64 %indvars.iv791
  %286 = load i32, ptr %285, align 4, !tbaa !5
  %287 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 %indvars.iv791
  store i32 %286, ptr %287, align 4, !tbaa !5
  %indvars.iv.next792 = add nuw nsw i64 %indvars.iv791, 1
  %exitcond795.not = icmp eq i64 %indvars.iv.next792, %wide.trip.count794
  br i1 %exitcond795.not, label %.loopexit535, label %.lr.ph617, !llvm.loop !40

.loopexit535:                                     ; preds = %.lr.ph617, %._crit_edge614
  %.1460 = phi float [ %.0459618, %._crit_edge614 ], [ %270, %.lr.ph617 ]
  %288 = add nuw nsw i32 %.0438619, 1
  %289 = load i32, ptr %60, align 4, !tbaa !5
  %290 = icmp slt i32 %288, %289
  br i1 %290, label %.lr.ph613.preheader, label %._crit_edge621, !llvm.loop !41

._crit_edge621:                                   ; preds = %.loopexit535, %.preheader541
  %.0459.lcssa = phi float [ 0x47EFFFFFE0000000, %.preheader541 ], [ %.1460, %.loopexit535 ]
  %291 = fcmp ugt float %.0459.lcssa, %.1467629
  br i1 %291, label %.loopexit540, label %.lr.ph624.preheader

.lr.ph624.preheader:                              ; preds = %._crit_edge621
  br i1 %min.iters.check921, label %.lr.ph624.preheader1026, label %vector.body926

vector.body926:                                   ; preds = %.lr.ph624.preheader, %vector.body926
  %index927 = phi i64 [ %index.next930, %vector.body926 ], [ 0, %.lr.ph624.preheader ]
  %292 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 %index927
  %wide.load928 = load <4 x i32>, ptr %292, align 16, !tbaa !5
  %293 = getelementptr inbounds [4 x i32], ptr %14, i64 0, i64 %index927
  store <4 x i32> %wide.load928, ptr %293, align 16, !tbaa !5
  %294 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 %index927
  %wide.load929 = load <4 x i32>, ptr %294, align 16, !tbaa !5
  %295 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 %index927
  store <4 x i32> %wide.load929, ptr %295, align 16, !tbaa !5
  %index.next930 = add nuw i64 %index927, 4
  %296 = icmp eq i64 %index.next930, %n.vec924
  br i1 %296, label %middle.block919, label %vector.body926, !llvm.loop !42

middle.block919:                                  ; preds = %vector.body926
  br i1 %cmp.n931, label %.loopexit540, label %.lr.ph624.preheader1026

.lr.ph624.preheader1026:                          ; preds = %middle.block919, %.lr.ph624.preheader
  %indvars.iv796.ph = phi i64 [ 0, %.lr.ph624.preheader ], [ %n.vec924, %middle.block919 ]
  br label %.lr.ph624

.lr.ph624:                                        ; preds = %.lr.ph624.preheader1026, %.lr.ph624
  %indvars.iv796 = phi i64 [ %indvars.iv.next797, %.lr.ph624 ], [ %indvars.iv796.ph, %.lr.ph624.preheader1026 ]
  %297 = getelementptr inbounds [4 x i32], ptr %22, i64 0, i64 %indvars.iv796
  %298 = load i32, ptr %297, align 4, !tbaa !5
  %299 = getelementptr inbounds [4 x i32], ptr %14, i64 0, i64 %indvars.iv796
  store i32 %298, ptr %299, align 4, !tbaa !5
  %300 = getelementptr inbounds [4 x i32], ptr %61, i64 0, i64 %indvars.iv796
  %301 = load i32, ptr %300, align 4, !tbaa !5
  %302 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 %indvars.iv796
  store i32 %301, ptr %302, align 4, !tbaa !5
  %indvars.iv.next797 = add nuw nsw i64 %indvars.iv796, 1
  %exitcond800.not = icmp eq i64 %indvars.iv.next797, %wide.trip.count799
  br i1 %exitcond800.not, label %.loopexit540, label %.lr.ph624, !llvm.loop !43

.loopexit540:                                     ; preds = %.lr.ph624, %middle.block919, %._crit_edge621
  %.2474 = phi i32 [ %.1473627, %._crit_edge621 ], [ %.0476626, %middle.block919 ], [ %.0476626, %.lr.ph624 ]
  %.2471 = phi i32 [ %.1470628, %._crit_edge621 ], [ %.0475640, %middle.block919 ], [ %.0475640, %.lr.ph624 ]
  %.2468 = phi float [ %.1467629, %._crit_edge621 ], [ %.0459.lcssa, %middle.block919 ], [ %.0459.lcssa, %.lr.ph624 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %16) #5
  %303 = add nuw i32 %.0476626, 1
  %exitcond803.not = icmp eq i32 %303, %indvars.iv801
  br i1 %exitcond803.not, label %._crit_edge631, label %.lr.ph630, !llvm.loop !44

._crit_edge631:                                   ; preds = %.loopexit540, %.preheader544
  %.1473.lcssa = phi i32 [ %.0472641, %.preheader544 ], [ %.2474, %.loopexit540 ]
  %.1470.lcssa = phi i32 [ %.0469642, %.preheader544 ], [ %.2471, %.loopexit540 ]
  %.1467.lcssa = phi float [ %.0466643, %.preheader544 ], [ %.2468, %.loopexit540 ]
  %304 = add nuw nsw i32 %.0475640, 1
  %305 = mul nsw i32 %304, %66
  %.not495 = icmp sgt i32 %305, %6
  br i1 %.not495, label %.lr.ph656.preheader, label %.preheader544, !llvm.loop !45

.lr.ph656.preheader:                              ; preds = %._crit_edge631, %.preheader549
  %.0472.lcssa = phi i32 [ -1, %.preheader549 ], [ %.1473.lcssa, %._crit_edge631 ]
  %.0469.lcssa = phi i32 [ -1, %.preheader549 ], [ %.1470.lcssa, %._crit_edge631 ]
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %25) #5
  br label %.lr.ph656

306:                                              ; preds = %313
  %indvars.iv.next805 = add nuw nsw i64 %indvars.iv804, 1
  %exitcond808.not = icmp eq i64 %indvars.iv.next805, %wide.trip.count807
  br i1 %exitcond808.not, label %.preheader548, label %.lr.ph656, !llvm.loop !46

.preheader548:                                    ; preds = %306
  br i1 %46, label %.preheader538.us.preheader, label %.loopexit546.thread

.lr.ph656:                                        ; preds = %.lr.ph656.preheader, %306
  %indvars.iv804 = phi i64 [ 0, %.lr.ph656.preheader ], [ %indvars.iv.next805, %306 ]
  %307 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %indvars.iv804
  %308 = load i32, ptr %307, align 4, !tbaa !5
  %309 = icmp sgt i32 %308, 9
  br i1 %309, label %393, label %310

310:                                              ; preds = %.lr.ph656
  %311 = getelementptr inbounds [4 x i32], ptr %14, i64 0, i64 %indvars.iv804
  %312 = load i32, ptr %311, align 4, !tbaa !5
  %or.cond = icmp ugt i32 %312, 255
  br i1 %or.cond, label %393, label %313

313:                                              ; preds = %310
  %314 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 %indvars.iv804
  %315 = load i32, ptr %314, align 4, !tbaa !5
  %316 = icmp sgt i32 %315, 255
  br i1 %316, label %393, label %306

.preheader547:                                    ; preds = %._crit_edge671
  br i1 %46, label %.lr.ph678.preheader, label %.loopexit546.thread

.lr.ph678.preheader:                              ; preds = %.preheader547
  br i1 %64, label %._crit_edge679.unr-lcssa, label %.lr.ph678

.preheader538.us.preheader:                       ; preds = %.preheader548, %._crit_edge671
  %indvars.iv819 = phi i64 [ %indvars.iv.next820, %._crit_edge671 ], [ 0, %.preheader548 ]
  %.0421673 = phi float [ %347, %._crit_edge671 ], [ 0.000000e+00, %.preheader548 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #5
  %317 = getelementptr inbounds [4 x float], ptr %0, i64 %indvars.iv819
  %318 = load <4 x float>, ptr %317, align 4, !tbaa !15
  store <4 x float> %318, ptr %26, align 16, !tbaa !15
  br label %.preheader538.us

.preheader538.us:                                 ; preds = %.preheader538.us.preheader, %._crit_edge660.us
  %.0417664.us = phi i32 [ %.1.us, %._crit_edge660.us ], [ 0, %.preheader538.us.preheader ]
  %.0418663.us = phi float [ %.1419.us, %._crit_edge660.us ], [ 0x47EFFFFFE0000000, %.preheader538.us.preheader ]
  %.9662.us = phi i32 [ %335, %._crit_edge660.us ], [ 0, %.preheader538.us.preheader ]
  br label %319

319:                                              ; preds = %.preheader538.us, %319
  %indvars.iv809 = phi i64 [ 0, %.preheader538.us ], [ %indvars.iv.next810, %319 ]
  %.0658.us = phi float [ 0.000000e+00, %.preheader538.us ], [ %333, %319 ]
  %320 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %indvars.iv809
  %321 = load i32, ptr %320, align 4, !tbaa !5
  %322 = add nsw i32 %321, -5
  %323 = getelementptr inbounds [4 x i32], ptr %14, i64 0, i64 %indvars.iv809
  %324 = load i32, ptr %323, align 4, !tbaa !5
  %325 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 %indvars.iv809
  %326 = load i32, ptr %325, align 4, !tbaa !5
  %327 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %45, i32 noundef %322, i32 noundef %324, i32 noundef %326, i32 noundef %.9662.us)
  %328 = getelementptr inbounds [4 x float], ptr %26, i64 0, i64 %indvars.iv809
  %329 = load float, ptr %328, align 4, !tbaa !15
  %330 = fsub float %327, %329
  %331 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %45, i32 noundef %322, i32 noundef %324, i32 noundef %326, i32 noundef %.9662.us)
  %332 = fsub float %331, %329
  %333 = call float @llvm.fmuladd.f32(float %330, float %332, float %.0658.us)
  %indvars.iv.next810 = add nuw nsw i64 %indvars.iv809, 1
  %exitcond813.not = icmp eq i64 %indvars.iv.next810, %wide.trip.count812
  br i1 %exitcond813.not, label %._crit_edge660.us, label %319, !llvm.loop !47

._crit_edge660.us:                                ; preds = %319
  %334 = fcmp olt float %333, %.0418663.us
  %.1419.us = select i1 %334, float %333, float %.0418663.us
  %.1.us = select i1 %334, i32 %.9662.us, i32 %.0417664.us
  %335 = add nuw nsw i32 %.9662.us, 1
  %.9.highbits.us = lshr i32 %335, %.0448.lcssa863
  %336 = icmp eq i32 %.9.highbits.us, 0
  br i1 %336, label %.preheader538.us, label %.lr.ph670.preheader, !llvm.loop !48

.lr.ph670.preheader:                              ; preds = %._crit_edge660.us
  %337 = getelementptr inbounds [64 x i32], ptr %25, i64 0, i64 %indvars.iv819
  store i32 %.1.us, ptr %337, align 4, !tbaa !5
  br label %.lr.ph670

.lr.ph670:                                        ; preds = %.lr.ph670.preheader, %.lr.ph670
  %indvars.iv814 = phi i64 [ 0, %.lr.ph670.preheader ], [ %indvars.iv.next815, %.lr.ph670 ]
  %338 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %indvars.iv814
  %339 = load i32, ptr %338, align 4, !tbaa !5
  %340 = add nsw i32 %339, -5
  %341 = getelementptr inbounds [4 x i32], ptr %14, i64 0, i64 %indvars.iv814
  %342 = load i32, ptr %341, align 4, !tbaa !5
  %343 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 %indvars.iv814
  %344 = load i32, ptr %343, align 4, !tbaa !5
  %345 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %45, i32 noundef %340, i32 noundef %342, i32 noundef %344, i32 noundef %.1.us)
  %346 = getelementptr inbounds [64 x [4 x float]], ptr %15, i64 0, i64 %indvars.iv819, i64 %indvars.iv814
  store float %345, ptr %346, align 4, !tbaa !15
  %indvars.iv.next815 = add nuw nsw i64 %indvars.iv814, 1
  %exitcond818.not = icmp eq i64 %indvars.iv.next815, %wide.trip.count817
  br i1 %exitcond818.not, label %._crit_edge671, label %.lr.ph670, !llvm.loop !49

._crit_edge671:                                   ; preds = %.lr.ph670
  %347 = fadd float %.0421673, %.1419.us
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #5
  %indvars.iv.next820 = add nuw nsw i64 %indvars.iv819, 1
  %exitcond823.not = icmp eq i64 %indvars.iv.next820, %47
  br i1 %exitcond823.not, label %.preheader547, label %.preheader538.us.preheader, !llvm.loop !50

.lr.ph678:                                        ; preds = %.lr.ph678.preheader, %.critedge
  %indvars.iv824 = phi i64 [ %indvars.iv.next825.1, %.critedge ], [ 0, %.lr.ph678.preheader ]
  %.0464676 = phi i1 [ %363, %.critedge ], [ false, %.lr.ph678.preheader ]
  %niter = phi i64 [ %niter.next.1, %.critedge ], [ 0, %.lr.ph678.preheader ]
  br i1 %.0464676, label %.critedge, label %.lr.ph678.1

.lr.ph678.1:                                      ; preds = %.lr.ph678
  %348 = getelementptr inbounds [64 x i32], ptr %13, i64 0, i64 %indvars.iv824
  %349 = load i32, ptr %348, align 8, !tbaa !5
  %350 = mul nsw i32 %349, %.0469.lcssa
  %351 = add nsw i32 %350, %.0472.lcssa
  %352 = getelementptr inbounds [64 x i32], ptr %25, i64 0, i64 %indvars.iv824
  %353 = load i32, ptr %352, align 8, !tbaa !5
  %354 = icmp ne i32 %351, %353
  br i1 %354, label %.critedge, label %355

355:                                              ; preds = %.lr.ph678.1
  %indvars.iv.next825 = or disjoint i64 %indvars.iv824, 1
  %356 = getelementptr inbounds [64 x i32], ptr %13, i64 0, i64 %indvars.iv.next825
  %357 = load i32, ptr %356, align 4, !tbaa !5
  %358 = mul nsw i32 %357, %.0469.lcssa
  %359 = add nsw i32 %358, %.0472.lcssa
  %360 = getelementptr inbounds [64 x i32], ptr %25, i64 0, i64 %indvars.iv.next825
  %361 = load i32, ptr %360, align 4, !tbaa !5
  %362 = icmp ne i32 %359, %361
  br label %.critedge

.critedge:                                        ; preds = %.lr.ph678, %355, %.lr.ph678.1
  %363 = phi i1 [ true, %.lr.ph678.1 ], [ %362, %355 ], [ true, %.lr.ph678 ]
  %indvars.iv.next825.1 = add nuw nsw i64 %indvars.iv824, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge679.unr-lcssa, label %.lr.ph678, !llvm.loop !51

.loopexit546.thread:                              ; preds = %.preheader548, %.preheader547
  %.0421.lcssa865.ph = phi float [ %347, %.preheader547 ], [ 0.000000e+00, %.preheader548 ]
  %364 = fcmp olt float %.0421.lcssa865.ph, %.0477
  %.0477.mux869 = select i1 %364, float %.0421.lcssa865.ph, float %.0477
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %25) #5
  br label %.lr.ph688

._crit_edge679.unr-lcssa:                         ; preds = %.critedge, %.lr.ph678.preheader
  %.lcssa1038.ph = phi i1 [ poison, %.lr.ph678.preheader ], [ %363, %.critedge ]
  %indvars.iv824.unr = phi i64 [ 0, %.lr.ph678.preheader ], [ %indvars.iv.next825.1, %.critedge ]
  %.0464676.unr = phi i1 [ false, %.lr.ph678.preheader ], [ %363, %.critedge ]
  %brmerge = select i1 %lcmp.mod.not, i1 true, i1 %.0464676.unr
  %.lcssa1038.ph.mux = select i1 %lcmp.mod.not, i1 %.lcssa1038.ph, i1 true
  br i1 %brmerge, label %._crit_edge679, label %365

365:                                              ; preds = %._crit_edge679.unr-lcssa
  %366 = getelementptr inbounds [64 x i32], ptr %13, i64 0, i64 %indvars.iv824.unr
  %367 = load i32, ptr %366, align 4, !tbaa !5
  %368 = mul nsw i32 %367, %.0469.lcssa
  %369 = add nsw i32 %368, %.0472.lcssa
  %370 = getelementptr inbounds [64 x i32], ptr %25, i64 0, i64 %indvars.iv824.unr
  %371 = load i32, ptr %370, align 4, !tbaa !5
  %372 = icmp ne i32 %369, %371
  br label %._crit_edge679

._crit_edge679:                                   ; preds = %._crit_edge679.unr-lcssa, %365
  %.lcssa1038 = phi i1 [ %.lcssa1038.ph.mux, %._crit_edge679.unr-lcssa ], [ %372, %365 ]
  %373 = fcmp olt float %347, %.0477
  %brmerge704.not = and i1 %46, %373
  %.0477.mux = select i1 %373, float %347, float %.0477
  br i1 %brmerge704.not, label %.lr.ph683.us.preheader, label %.loopexit546

.lr.ph683.us.preheader:                           ; preds = %._crit_edge679
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %13, ptr nonnull align 16 %25, i64 %48, i1 false), !tbaa !5
  br label %.lr.ph683.us

.lr.ph683.us:                                     ; preds = %.lr.ph683.us.preheader, %._crit_edge684.us
  %indvars.iv833 = phi i64 [ 0, %.lr.ph683.us.preheader ], [ %indvars.iv.next834, %._crit_edge684.us ]
  %374 = getelementptr inbounds [64 x i32], ptr %25, i64 0, i64 %indvars.iv833
  %375 = load i32, ptr %374, align 4, !tbaa !5
  %376 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv833
  store i32 %375, ptr %376, align 4, !tbaa !5
  br i1 %min.iters.check908, label %scalar.ph907.preheader, label %vector.body913

vector.body913:                                   ; preds = %.lr.ph683.us, %vector.body913
  %index914 = phi i64 [ %index.next917, %vector.body913 ], [ 0, %.lr.ph683.us ]
  %377 = getelementptr inbounds [64 x [4 x float]], ptr %15, i64 0, i64 %indvars.iv833, i64 %index914
  %wide.load = load <4 x float>, ptr %377, align 16, !tbaa !15
  %378 = getelementptr inbounds [4 x float], ptr %3, i64 %indvars.iv833, i64 %index914
  store <4 x float> %wide.load, ptr %378, align 4, !tbaa !15
  %379 = getelementptr inbounds [4 x i32], ptr %14, i64 0, i64 %index914
  %wide.load915 = load <4 x i32>, ptr %379, align 16, !tbaa !5
  %380 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %index914
  store <4 x i32> %wide.load915, ptr %380, align 4, !tbaa !5
  %381 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 %index914
  %wide.load916 = load <4 x i32>, ptr %381, align 16, !tbaa !5
  %382 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %index914
  store <4 x i32> %wide.load916, ptr %382, align 4, !tbaa !5
  %index.next917 = add nuw i64 %index914, 4
  %383 = icmp eq i64 %index.next917, %n.vec911
  br i1 %383, label %middle.block906, label %vector.body913, !llvm.loop !52

middle.block906:                                  ; preds = %vector.body913
  br i1 %cmp.n918, label %._crit_edge684.us, label %scalar.ph907.preheader

scalar.ph907.preheader:                           ; preds = %middle.block906, %.lr.ph683.us
  %indvars.iv828.ph = phi i64 [ 0, %.lr.ph683.us ], [ %n.vec911, %middle.block906 ]
  br label %scalar.ph907

scalar.ph907:                                     ; preds = %scalar.ph907.preheader, %scalar.ph907
  %indvars.iv828 = phi i64 [ %indvars.iv.next829, %scalar.ph907 ], [ %indvars.iv828.ph, %scalar.ph907.preheader ]
  %384 = getelementptr inbounds [64 x [4 x float]], ptr %15, i64 0, i64 %indvars.iv833, i64 %indvars.iv828
  %385 = load float, ptr %384, align 4, !tbaa !15
  %386 = getelementptr inbounds [4 x float], ptr %3, i64 %indvars.iv833, i64 %indvars.iv828
  store float %385, ptr %386, align 4, !tbaa !15
  %387 = getelementptr inbounds [4 x i32], ptr %14, i64 0, i64 %indvars.iv828
  %388 = load i32, ptr %387, align 4, !tbaa !5
  %389 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %indvars.iv828
  store i32 %388, ptr %389, align 4, !tbaa !5
  %390 = getelementptr inbounds [4 x i32], ptr %62, i64 0, i64 %indvars.iv828
  %391 = load i32, ptr %390, align 4, !tbaa !5
  %392 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %indvars.iv828
  store i32 %391, ptr %392, align 4, !tbaa !5
  %indvars.iv.next829 = add nuw nsw i64 %indvars.iv828, 1
  %exitcond832.not = icmp eq i64 %indvars.iv.next829, %wide.trip.count831
  br i1 %exitcond832.not, label %._crit_edge684.us, label %scalar.ph907, !llvm.loop !53

._crit_edge684.us:                                ; preds = %scalar.ph907, %middle.block906
  %indvars.iv.next834 = add nuw nsw i64 %indvars.iv833, 1
  %exitcond837.not = icmp eq i64 %indvars.iv.next834, %47
  br i1 %exitcond837.not, label %.loopexit546, label %.lr.ph683.us, !llvm.loop !54

393:                                              ; preds = %313, %310, %.lr.ph656
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %25) #5
  br label %.thread508

.loopexit546:                                     ; preds = %._crit_edge684.us, %._crit_edge679
  %.2479 = phi float [ %.0477.mux, %._crit_edge679 ], [ %347, %._crit_edge684.us ]
  %394 = and i1 %373, %.lcssa1038
  %395 = icmp sgt i32 %.0455, 0
  %396 = add nsw i32 %.0455, -1
  %.1456 = select i1 %395, i32 %396, i32 0
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %25) #5
  %397 = icmp ne i32 %.1456, 0
  %398 = select i1 %394, i1 %397, i1 false
  br i1 %398, label %65, label %.lr.ph688, !llvm.loop !55

.lr.ph688:                                        ; preds = %.loopexit546, %.loopexit546.thread
  %.2479874 = phi float [ %.0477.mux869, %.loopexit546.thread ], [ %.2479, %.loopexit546 ]
  %notmask503 = shl nsw i32 -1, %.0448.lcssa863
  %399 = xor i32 %notmask503, -1
  %400 = getelementptr inbounds i8, ptr %9, i64 16
  %wide.trip.count841 = zext nneg i32 %smax to i64
  br label %401

401:                                              ; preds = %.lr.ph688, %401
  %indvars.iv838 = phi i64 [ 0, %.lr.ph688 ], [ %indvars.iv.next839, %401 ]
  %402 = getelementptr inbounds [4 x i32], ptr %11, i64 0, i64 %indvars.iv838
  %403 = load i32, ptr %402, align 4, !tbaa !5
  %404 = add nsw i32 %403, -5
  %405 = getelementptr inbounds [4 x i32], ptr %4, i64 0, i64 %indvars.iv838
  %406 = load i32, ptr %405, align 4, !tbaa !5
  %407 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %indvars.iv838
  %408 = load i32, ptr %407, align 4, !tbaa !5
  %409 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %45, i32 noundef %404, i32 noundef %406, i32 noundef %408, i32 noundef 0)
  %410 = getelementptr inbounds [4 x float], ptr %9, i64 0, i64 %indvars.iv838
  store float %409, ptr %410, align 4, !tbaa !15
  %411 = load i32, ptr %405, align 4, !tbaa !5
  %412 = load i32, ptr %407, align 4, !tbaa !5
  %413 = call noundef float @_ZN10HDR_Encode5rampfEiiiii(i32 noundef %45, i32 noundef %404, i32 noundef %411, i32 noundef %412, i32 noundef %399)
  %414 = getelementptr inbounds [4 x float], ptr %400, i64 0, i64 %indvars.iv838
  store float %413, ptr %414, align 4, !tbaa !15
  %indvars.iv.next839 = add nuw nsw i64 %indvars.iv838, 1
  %exitcond842.not = icmp eq i64 %indvars.iv.next839, %wide.trip.count841
  br i1 %exitcond842.not, label %.thread508, label %401, !llvm.loop !56

.thread508:                                       ; preds = %401, %97, %393
  %.4 = phi float [ 0x47EFFFFFE0000000, %393 ], [ %.1478, %97 ], [ %.2479874, %401 ]
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #5
  br label %415

415:                                              ; preds = %._crit_edge, %.thread508
  %.5 = phi float [ %.4, %.thread508 ], [ 0x47EFFFFFE0000000, %._crit_edge ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #5
  br label %416

416:                                              ; preds = %10, %415
  %.6 = phi float [ %.5, %415 ], [ 0x47EFFFFFE0000000, %10 ]
  ret float %.6
}

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

; 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) #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.floor.v4f32(<4 x float>) #3

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { mustprogress 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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !12, !11}
!14 = distinct !{!14, !10}
!15 = !{!16, !16, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = distinct !{!17, !10, !11, !12}
!18 = distinct !{!18, !10, !12, !11}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10, !11, !12}
!22 = distinct !{!22, !10, !12, !11}
!23 = distinct !{!23, !10, !11, !12}
!24 = distinct !{!24, !10, !12, !11}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10, !11, !12}
!27 = distinct !{!27, !10, !12, !11}
!28 = distinct !{!28, !10, !11, !12}
!29 = distinct !{!29, !10, !12, !11}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10, !11, !12}
!32 = distinct !{!32, !10, !12, !11}
!33 = distinct !{!33, !10}
!34 = distinct !{!34, !10}
!35 = distinct !{!35, !10}
!36 = distinct !{!36, !10}
!37 = distinct !{!37, !10}
!38 = distinct !{!38, !10}
!39 = distinct !{!39, !10}
!40 = distinct !{!40, !10}
!41 = distinct !{!41, !10}
!42 = distinct !{!42, !10, !11, !12}
!43 = distinct !{!43, !10, !12, !11}
!44 = distinct !{!44, !10}
!45 = distinct !{!45, !10}
!46 = distinct !{!46, !10}
!47 = distinct !{!47, !10}
!48 = distinct !{!48, !10}
!49 = distinct !{!49, !10}
!50 = distinct !{!50, !10}
!51 = distinct !{!51, !10}
!52 = distinct !{!52, !10, !11, !12}
!53 = distinct !{!53, !10, !12, !11}
!54 = distinct !{!54, !10}
!55 = distinct !{!55, !10}
!56 = distinct !{!56, !10}


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