; LLVM IR from ox-vgg/vise :: src/search_engine/relja_retrival/external/KMCode_relja/descriptor/EdgeDetector._ad932fe6 (ff)

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

%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ImageContent = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_Z5bilinP12ImageContentff(ptr noundef, float noundef, float noundef) #0

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80)) #3 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #4

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #5

; Function Attrs: nounwind
declare void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80), i32 noundef, i32 noundef, float noundef) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4sqrtf(float noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14cannyEdgesGradP12ImageContentS0_S0_ff(ptr noundef %0, ptr noundef %1, ptr noundef %2, float noundef %3, float noundef %4) #0 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::vector.18", align 8
  %19 = alloca i32, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca float, align 4
  %25 = alloca float, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store float %3, ptr %9, align 4, !tbaa !9
  store float %4, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %40 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %41 = load ptr, ptr %7, align 8, !tbaa !5
  %42 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %41)
          to label %43 unwind label %62

43:                                               ; preds = %5
  %44 = load ptr, ptr %7, align 8, !tbaa !5
  %45 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %44)
          to label %46 unwind label %62

46:                                               ; preds = %43
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %40, i32 noundef %42, i32 noundef %45, float noundef 0.000000e+00)
          to label %47 unwind label %62

47:                                               ; preds = %46
  store ptr %40, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %48 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %49 = load ptr, ptr %7, align 8, !tbaa !5
  %50 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %49)
          to label %51 unwind label %66

51:                                               ; preds = %47
  %52 = load ptr, ptr %7, align 8, !tbaa !5
  %53 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %52)
          to label %54 unwind label %66

54:                                               ; preds = %51
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %48, i32 noundef %50, i32 noundef %53, float noundef 0.000000e+00)
          to label %55 unwind label %66

55:                                               ; preds = %54
  store ptr %48, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %56

56:                                               ; preds = %183, %55
  %57 = load i32, ptr %15, align 4, !tbaa !11
  %58 = load ptr, ptr %11, align 8, !tbaa !5
  %59 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %58)
  %60 = icmp ult i32 %57, %59
  br i1 %60, label %70, label %61

61:                                               ; preds = %56
  store i32 2, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %186

62:                                               ; preds = %46, %43, %5
  %63 = landingpad { ptr, i32 }
          cleanup
  %64 = extractvalue { ptr, i32 } %63, 0
  store ptr %64, ptr %12, align 8
  %65 = extractvalue { ptr, i32 } %63, 1
  store i32 %65, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %40, i64 noundef 80) #10
  br label %952

66:                                               ; preds = %54, %51, %47
  %67 = landingpad { ptr, i32 }
          cleanup
  %68 = extractvalue { ptr, i32 } %67, 0
  store ptr %68, ptr %12, align 8
  %69 = extractvalue { ptr, i32 } %67, 1
  store i32 %69, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %48, i64 noundef 80) #10
  br label %951

70:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  store i32 0, ptr %17, align 4, !tbaa !11
  br label %71

71:                                               ; preds = %179, %70
  %72 = load i32, ptr %17, align 4, !tbaa !11
  %73 = load ptr, ptr %11, align 8, !tbaa !5
  %74 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %73)
  %75 = icmp ult i32 %72, %74
  br i1 %75, label %77, label %76

76:                                               ; preds = %71
  store i32 5, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %182

77:                                               ; preds = %71
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = getelementptr inbounds %class.ImageContent, ptr %78, i32 0, i32 4
  %80 = load ptr, ptr %79, align 8, !tbaa !13
  %81 = load i32, ptr %15, align 4, !tbaa !11
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds ptr, ptr %80, i64 %82
  %84 = load ptr, ptr %83, align 8, !tbaa !5
  %85 = load i32, ptr %17, align 4, !tbaa !11
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds float, ptr %84, i64 %86
  %88 = load float, ptr %87, align 4, !tbaa !9
  %89 = load ptr, ptr %7, align 8, !tbaa !5
  %90 = getelementptr inbounds %class.ImageContent, ptr %89, i32 0, i32 4
  %91 = load ptr, ptr %90, align 8, !tbaa !13
  %92 = load i32, ptr %15, align 4, !tbaa !11
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds ptr, ptr %91, i64 %93
  %95 = load ptr, ptr %94, align 8, !tbaa !5
  %96 = load i32, ptr %17, align 4, !tbaa !11
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds float, ptr %95, i64 %97
  %99 = load float, ptr %98, align 4, !tbaa !9
  %100 = load ptr, ptr %6, align 8, !tbaa !5
  %101 = getelementptr inbounds %class.ImageContent, ptr %100, i32 0, i32 4
  %102 = load ptr, ptr %101, align 8, !tbaa !13
  %103 = load i32, ptr %15, align 4, !tbaa !11
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds ptr, ptr %102, i64 %104
  %106 = load ptr, ptr %105, align 8, !tbaa !5
  %107 = load i32, ptr %17, align 4, !tbaa !11
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds float, ptr %106, i64 %108
  %110 = load float, ptr %109, align 4, !tbaa !9
  %111 = load ptr, ptr %6, align 8, !tbaa !5
  %112 = getelementptr inbounds %class.ImageContent, ptr %111, i32 0, i32 4
  %113 = load ptr, ptr %112, align 8, !tbaa !13
  %114 = load i32, ptr %15, align 4, !tbaa !11
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds ptr, ptr %113, i64 %115
  %117 = load ptr, ptr %116, align 8, !tbaa !5
  %118 = load i32, ptr %17, align 4, !tbaa !11
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds float, ptr %117, i64 %119
  %121 = load float, ptr %120, align 4, !tbaa !9
  %122 = fmul float %110, %121
  %123 = call float @llvm.fmuladd.f32(float %88, float %99, float %122)
  %124 = call noundef float @_ZSt4sqrtf(float noundef %123)
  %125 = load ptr, ptr %11, align 8, !tbaa !5
  %126 = getelementptr inbounds %class.ImageContent, ptr %125, i32 0, i32 4
  %127 = load ptr, ptr %126, align 8, !tbaa !13
  %128 = load i32, ptr %15, align 4, !tbaa !11
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds ptr, ptr %127, i64 %129
  %131 = load ptr, ptr %130, align 8, !tbaa !5
  %132 = load i32, ptr %17, align 4, !tbaa !11
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds float, ptr %131, i64 %133
  store float %124, ptr %134, align 4, !tbaa !9
  %135 = load ptr, ptr %11, align 8, !tbaa !5
  %136 = getelementptr inbounds %class.ImageContent, ptr %135, i32 0, i32 4
  %137 = load ptr, ptr %136, align 8, !tbaa !13
  %138 = load i32, ptr %15, align 4, !tbaa !11
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds ptr, ptr %137, i64 %139
  %141 = load ptr, ptr %140, align 8, !tbaa !5
  %142 = load i32, ptr %17, align 4, !tbaa !11
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds float, ptr %141, i64 %143
  %145 = load float, ptr %144, align 4, !tbaa !9
  %146 = fcmp olt float %145, 1.000000e+00
  br i1 %146, label %147, label %178

147:                                              ; preds = %77
  %148 = load ptr, ptr %11, align 8, !tbaa !5
  %149 = getelementptr inbounds %class.ImageContent, ptr %148, i32 0, i32 4
  %150 = load ptr, ptr %149, align 8, !tbaa !13
  %151 = load i32, ptr %15, align 4, !tbaa !11
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds ptr, ptr %150, i64 %152
  %154 = load ptr, ptr %153, align 8, !tbaa !5
  %155 = load i32, ptr %17, align 4, !tbaa !11
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds float, ptr %154, i64 %156
  store float 1.000000e+00, ptr %157, align 4, !tbaa !9
  %158 = load ptr, ptr %7, align 8, !tbaa !5
  %159 = getelementptr inbounds %class.ImageContent, ptr %158, i32 0, i32 4
  %160 = load ptr, ptr %159, align 8, !tbaa !13
  %161 = load i32, ptr %15, align 4, !tbaa !11
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds ptr, ptr %160, i64 %162
  %164 = load ptr, ptr %163, align 8, !tbaa !5
  %165 = load i32, ptr %17, align 4, !tbaa !11
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds float, ptr %164, i64 %166
  store float 0.000000e+00, ptr %167, align 4, !tbaa !9
  %168 = load ptr, ptr %6, align 8, !tbaa !5
  %169 = getelementptr inbounds %class.ImageContent, ptr %168, i32 0, i32 4
  %170 = load ptr, ptr %169, align 8, !tbaa !13
  %171 = load i32, ptr %15, align 4, !tbaa !11
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds ptr, ptr %170, i64 %172
  %174 = load ptr, ptr %173, align 8, !tbaa !5
  %175 = load i32, ptr %17, align 4, !tbaa !11
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds float, ptr %174, i64 %176
  store float 0.000000e+00, ptr %177, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %147, %77
  br label %179

179:                                              ; preds = %178
  %180 = load i32, ptr %17, align 4, !tbaa !11
  %181 = add nsw i32 %180, 1
  store i32 %181, ptr %17, align 4, !tbaa !11
  br label %71, !llvm.loop !15

182:                                              ; preds = %76
  br label %183

183:                                              ; preds = %182
  %184 = load i32, ptr %15, align 4, !tbaa !11
  %185 = add nsw i32 %184, 1
  store i32 %185, ptr %15, align 4, !tbaa !11
  br label %56, !llvm.loop !17

186:                                              ; preds = %61
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  store i32 0, ptr %19, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %187 unwind label %196

187:                                              ; preds = %186
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  store float 2.550000e+02, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  store float 1.000000e+00, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  store i32 1, ptr %31, align 4, !tbaa !11
  br label %188

188:                                              ; preds = %617, %187
  %189 = load i32, ptr %31, align 4, !tbaa !11
  %190 = load ptr, ptr %11, align 8, !tbaa !5
  %191 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %190)
          to label %192 unwind label %200

192:                                              ; preds = %188
  %193 = sub i32 %191, 2
  %194 = icmp ult i32 %189, %193
  br i1 %194, label %204, label %195

195:                                              ; preds = %192
  store i32 8, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %621

196:                                              ; preds = %186
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %12, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %950

200:                                              ; preds = %188
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %12, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %13, align 4
  br label %620

204:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  store i32 1, ptr %32, align 4, !tbaa !11
  br label %205

205:                                              ; preds = %612, %204
  %206 = load i32, ptr %32, align 4, !tbaa !11
  %207 = load ptr, ptr %11, align 8, !tbaa !5
  %208 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %207)
          to label %209 unwind label %213

209:                                              ; preds = %205
  %210 = sub i32 %208, 2
  %211 = icmp ult i32 %206, %210
  br i1 %211, label %217, label %212

212:                                              ; preds = %209
  store i32 11, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  br label %616

213:                                              ; preds = %279, %217, %205
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %12, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %13, align 4
  br label %615

217:                                              ; preds = %209
  %218 = load ptr, ptr %7, align 8, !tbaa !5
  %219 = getelementptr inbounds %class.ImageContent, ptr %218, i32 0, i32 4
  %220 = load ptr, ptr %219, align 8, !tbaa !13
  %221 = load i32, ptr %31, align 4, !tbaa !11
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds ptr, ptr %220, i64 %222
  %224 = load ptr, ptr %223, align 8, !tbaa !5
  %225 = load i32, ptr %32, align 4, !tbaa !11
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds float, ptr %224, i64 %226
  %228 = load float, ptr %227, align 4, !tbaa !9
  store float %228, ptr %25, align 4, !tbaa !9
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = getelementptr inbounds %class.ImageContent, ptr %229, i32 0, i32 4
  %231 = load ptr, ptr %230, align 8, !tbaa !13
  %232 = load i32, ptr %31, align 4, !tbaa !11
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds ptr, ptr %231, i64 %233
  %235 = load ptr, ptr %234, align 8, !tbaa !5
  %236 = load i32, ptr %32, align 4, !tbaa !11
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds float, ptr %235, i64 %237
  %239 = load float, ptr %238, align 4, !tbaa !9
  store float %239, ptr %26, align 4, !tbaa !9
  %240 = load ptr, ptr %11, align 8, !tbaa !5
  %241 = getelementptr inbounds %class.ImageContent, ptr %240, i32 0, i32 4
  %242 = load ptr, ptr %241, align 8, !tbaa !13
  %243 = load i32, ptr %31, align 4, !tbaa !11
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds ptr, ptr %242, i64 %244
  %246 = load ptr, ptr %245, align 8, !tbaa !5
  %247 = load i32, ptr %32, align 4, !tbaa !11
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds float, ptr %246, i64 %248
  %250 = load float, ptr %249, align 4, !tbaa !9
  store float %250, ptr %27, align 4, !tbaa !9
  %251 = load i32, ptr %32, align 4, !tbaa !11
  %252 = sitofp i32 %251 to float
  %253 = load float, ptr %25, align 4, !tbaa !9
  %254 = load float, ptr %27, align 4, !tbaa !9
  %255 = fdiv float %253, %254
  %256 = fadd float %252, %255
  store float %256, ptr %21, align 4, !tbaa !9
  %257 = load i32, ptr %31, align 4, !tbaa !11
  %258 = sitofp i32 %257 to float
  %259 = load float, ptr %26, align 4, !tbaa !9
  %260 = load float, ptr %27, align 4, !tbaa !9
  %261 = fdiv float %259, %260
  %262 = fadd float %258, %261
  store float %262, ptr %22, align 4, !tbaa !9
  %263 = load i32, ptr %32, align 4, !tbaa !11
  %264 = sitofp i32 %263 to float
  %265 = load float, ptr %25, align 4, !tbaa !9
  %266 = load float, ptr %27, align 4, !tbaa !9
  %267 = fdiv float %265, %266
  %268 = fsub float %264, %267
  store float %268, ptr %23, align 4, !tbaa !9
  %269 = load i32, ptr %31, align 4, !tbaa !11
  %270 = sitofp i32 %269 to float
  %271 = load float, ptr %26, align 4, !tbaa !9
  %272 = load float, ptr %27, align 4, !tbaa !9
  %273 = fdiv float %271, %272
  %274 = fsub float %270, %273
  store float %274, ptr %24, align 4, !tbaa !9
  %275 = load ptr, ptr %11, align 8, !tbaa !5
  %276 = load float, ptr %21, align 4, !tbaa !9
  %277 = load float, ptr %22, align 4, !tbaa !9
  %278 = invoke noundef float @_Z5bilinP12ImageContentff(ptr noundef %275, float noundef %276, float noundef %277)
          to label %279 unwind label %213

279:                                              ; preds = %217
  store float %278, ptr %28, align 4, !tbaa !9
  %280 = load ptr, ptr %11, align 8, !tbaa !5
  %281 = load float, ptr %23, align 4, !tbaa !9
  %282 = load float, ptr %24, align 4, !tbaa !9
  %283 = invoke noundef float @_Z5bilinP12ImageContentff(ptr noundef %280, float noundef %281, float noundef %282)
          to label %284 unwind label %213

284:                                              ; preds = %279
  store float %283, ptr %29, align 4, !tbaa !9
  %285 = load float, ptr %27, align 4, !tbaa !9
  %286 = load float, ptr %28, align 4, !tbaa !9
  %287 = fcmp olt float %285, %286
  br i1 %287, label %296, label %288

288:                                              ; preds = %284
  %289 = load float, ptr %27, align 4, !tbaa !9
  %290 = load float, ptr %29, align 4, !tbaa !9
  %291 = fcmp ole float %289, %290
  br i1 %291, label %296, label %292

292:                                              ; preds = %288
  %293 = load float, ptr %27, align 4, !tbaa !9
  %294 = load float, ptr %9, align 4, !tbaa !9
  %295 = fcmp olt float %293, %294
  br i1 %295, label %296, label %297

296:                                              ; preds = %292, %288, %284
  br label %612

297:                                              ; preds = %292
  %298 = load float, ptr %27, align 4, !tbaa !9
  %299 = load float, ptr %10, align 4, !tbaa !9
  %300 = fcmp ogt float %298, %299
  br i1 %300, label %301, label %313

301:                                              ; preds = %297
  %302 = load float, ptr %20, align 4, !tbaa !9
  %303 = load ptr, ptr %8, align 8, !tbaa !5
  %304 = getelementptr inbounds %class.ImageContent, ptr %303, i32 0, i32 4
  %305 = load ptr, ptr %304, align 8, !tbaa !13
  %306 = load i32, ptr %31, align 4, !tbaa !11
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds ptr, ptr %305, i64 %307
  %309 = load ptr, ptr %308, align 8, !tbaa !5
  %310 = load i32, ptr %32, align 4, !tbaa !11
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds float, ptr %309, i64 %311
  store float %302, ptr %312, align 4, !tbaa !9
  br label %610

313:                                              ; preds = %297
  %314 = load float, ptr %27, align 4, !tbaa !9
  %315 = load float, ptr %9, align 4, !tbaa !9
  %316 = fcmp ogt float %314, %315
  br i1 %316, label %317, label %391

317:                                              ; preds = %313
  %318 = load ptr, ptr %8, align 8, !tbaa !5
  %319 = getelementptr inbounds %class.ImageContent, ptr %318, i32 0, i32 4
  %320 = load ptr, ptr %319, align 8, !tbaa !13
  %321 = load i32, ptr %31, align 4, !tbaa !11
  %322 = sub nsw i32 %321, 1
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds ptr, ptr %320, i64 %323
  %325 = load ptr, ptr %324, align 8, !tbaa !5
  %326 = load i32, ptr %32, align 4, !tbaa !11
  %327 = sub nsw i32 %326, 1
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds float, ptr %325, i64 %328
  %330 = load float, ptr %329, align 4, !tbaa !9
  %331 = load float, ptr %20, align 4, !tbaa !9
  %332 = fcmp oeq float %330, %331
  br i1 %332, label %379, label %333

333:                                              ; preds = %317
  %334 = load ptr, ptr %8, align 8, !tbaa !5
  %335 = getelementptr inbounds %class.ImageContent, ptr %334, i32 0, i32 4
  %336 = load ptr, ptr %335, align 8, !tbaa !13
  %337 = load i32, ptr %31, align 4, !tbaa !11
  %338 = sub nsw i32 %337, 1
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds ptr, ptr %336, i64 %339
  %341 = load ptr, ptr %340, align 8, !tbaa !5
  %342 = load i32, ptr %32, align 4, !tbaa !11
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds float, ptr %341, i64 %343
  %345 = load float, ptr %344, align 4, !tbaa !9
  %346 = load float, ptr %20, align 4, !tbaa !9
  %347 = fcmp oeq float %345, %346
  br i1 %347, label %379, label %348

348:                                              ; preds = %333
  %349 = load ptr, ptr %8, align 8, !tbaa !5
  %350 = getelementptr inbounds %class.ImageContent, ptr %349, i32 0, i32 4
  %351 = load ptr, ptr %350, align 8, !tbaa !13
  %352 = load i32, ptr %31, align 4, !tbaa !11
  %353 = sub nsw i32 %352, 1
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds ptr, ptr %351, i64 %354
  %356 = load ptr, ptr %355, align 8, !tbaa !5
  %357 = load i32, ptr %32, align 4, !tbaa !11
  %358 = add nsw i32 %357, 1
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds float, ptr %356, i64 %359
  %361 = load float, ptr %360, align 4, !tbaa !9
  %362 = load float, ptr %20, align 4, !tbaa !9
  %363 = fcmp oeq float %361, %362
  br i1 %363, label %379, label %364

364:                                              ; preds = %348
  %365 = load ptr, ptr %8, align 8, !tbaa !5
  %366 = getelementptr inbounds %class.ImageContent, ptr %365, i32 0, i32 4
  %367 = load ptr, ptr %366, align 8, !tbaa !13
  %368 = load i32, ptr %31, align 4, !tbaa !11
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds ptr, ptr %367, i64 %369
  %371 = load ptr, ptr %370, align 8, !tbaa !5
  %372 = load i32, ptr %32, align 4, !tbaa !11
  %373 = sub nsw i32 %372, 1
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds float, ptr %371, i64 %374
  %376 = load float, ptr %375, align 4, !tbaa !9
  %377 = load float, ptr %20, align 4, !tbaa !9
  %378 = fcmp oeq float %376, %377
  br i1 %378, label %379, label %391

379:                                              ; preds = %364, %348, %333, %317
  %380 = load float, ptr %20, align 4, !tbaa !9
  %381 = load ptr, ptr %8, align 8, !tbaa !5
  %382 = getelementptr inbounds %class.ImageContent, ptr %381, i32 0, i32 4
  %383 = load ptr, ptr %382, align 8, !tbaa !13
  %384 = load i32, ptr %31, align 4, !tbaa !11
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds ptr, ptr %383, i64 %385
  %387 = load ptr, ptr %386, align 8, !tbaa !5
  %388 = load i32, ptr %32, align 4, !tbaa !11
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds float, ptr %387, i64 %389
  store float %380, ptr %390, align 4, !tbaa !9
  br label %609

391:                                              ; preds = %364, %313
  %392 = load float, ptr %27, align 4, !tbaa !9
  %393 = load float, ptr %9, align 4, !tbaa !9
  %394 = fcmp ogt float %392, %393
  br i1 %394, label %395, label %608

395:                                              ; preds = %391
  %396 = load ptr, ptr %14, align 8, !tbaa !5
  %397 = getelementptr inbounds %class.ImageContent, ptr %396, i32 0, i32 4
  %398 = load ptr, ptr %397, align 8, !tbaa !13
  %399 = load i32, ptr %31, align 4, !tbaa !11
  %400 = sub nsw i32 %399, 1
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds ptr, ptr %398, i64 %401
  %403 = load ptr, ptr %402, align 8, !tbaa !5
  %404 = load i32, ptr %32, align 4, !tbaa !11
  %405 = sub nsw i32 %404, 1
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds float, ptr %403, i64 %406
  %408 = load float, ptr %407, align 4, !tbaa !9
  %409 = fcmp ogt float %408, 0.000000e+00
  br i1 %409, label %410, label %434

410:                                              ; preds = %395
  %411 = load ptr, ptr %14, align 8, !tbaa !5
  %412 = getelementptr inbounds %class.ImageContent, ptr %411, i32 0, i32 4
  %413 = load ptr, ptr %412, align 8, !tbaa !13
  %414 = load i32, ptr %31, align 4, !tbaa !11
  %415 = sub nsw i32 %414, 1
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds ptr, ptr %413, i64 %416
  %418 = load ptr, ptr %417, align 8, !tbaa !5
  %419 = load i32, ptr %32, align 4, !tbaa !11
  %420 = sub nsw i32 %419, 1
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds float, ptr %418, i64 %421
  %423 = load float, ptr %422, align 4, !tbaa !9
  %424 = load ptr, ptr %14, align 8, !tbaa !5
  %425 = getelementptr inbounds %class.ImageContent, ptr %424, i32 0, i32 4
  %426 = load ptr, ptr %425, align 8, !tbaa !13
  %427 = load i32, ptr %31, align 4, !tbaa !11
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds ptr, ptr %426, i64 %428
  %430 = load ptr, ptr %429, align 8, !tbaa !5
  %431 = load i32, ptr %32, align 4, !tbaa !11
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds float, ptr %430, i64 %432
  store float %423, ptr %433, align 4, !tbaa !9
  br label %607

434:                                              ; preds = %395
  %435 = load ptr, ptr %14, align 8, !tbaa !5
  %436 = getelementptr inbounds %class.ImageContent, ptr %435, i32 0, i32 4
  %437 = load ptr, ptr %436, align 8, !tbaa !13
  %438 = load i32, ptr %31, align 4, !tbaa !11
  %439 = sub nsw i32 %438, 1
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds ptr, ptr %437, i64 %440
  %442 = load ptr, ptr %441, align 8, !tbaa !5
  %443 = load i32, ptr %32, align 4, !tbaa !11
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds float, ptr %442, i64 %444
  %446 = load float, ptr %445, align 4, !tbaa !9
  %447 = fcmp ogt float %446, 0.000000e+00
  br i1 %447, label %448, label %471

448:                                              ; preds = %434
  %449 = load ptr, ptr %14, align 8, !tbaa !5
  %450 = getelementptr inbounds %class.ImageContent, ptr %449, i32 0, i32 4
  %451 = load ptr, ptr %450, align 8, !tbaa !13
  %452 = load i32, ptr %31, align 4, !tbaa !11
  %453 = sub nsw i32 %452, 1
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds ptr, ptr %451, i64 %454
  %456 = load ptr, ptr %455, align 8, !tbaa !5
  %457 = load i32, ptr %32, align 4, !tbaa !11
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds float, ptr %456, i64 %458
  %460 = load float, ptr %459, align 4, !tbaa !9
  %461 = load ptr, ptr %14, align 8, !tbaa !5
  %462 = getelementptr inbounds %class.ImageContent, ptr %461, i32 0, i32 4
  %463 = load ptr, ptr %462, align 8, !tbaa !13
  %464 = load i32, ptr %31, align 4, !tbaa !11
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds ptr, ptr %463, i64 %465
  %467 = load ptr, ptr %466, align 8, !tbaa !5
  %468 = load i32, ptr %32, align 4, !tbaa !11
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds float, ptr %467, i64 %469
  store float %460, ptr %470, align 4, !tbaa !9
  br label %606

471:                                              ; preds = %434
  %472 = load ptr, ptr %14, align 8, !tbaa !5
  %473 = getelementptr inbounds %class.ImageContent, ptr %472, i32 0, i32 4
  %474 = load ptr, ptr %473, align 8, !tbaa !13
  %475 = load i32, ptr %31, align 4, !tbaa !11
  %476 = sub nsw i32 %475, 1
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds ptr, ptr %474, i64 %477
  %479 = load ptr, ptr %478, align 8, !tbaa !5
  %480 = load i32, ptr %32, align 4, !tbaa !11
  %481 = add nsw i32 %480, 1
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds float, ptr %479, i64 %482
  %484 = load float, ptr %483, align 4, !tbaa !9
  %485 = fcmp ogt float %484, 0.000000e+00
  br i1 %485, label %486, label %510

486:                                              ; preds = %471
  %487 = load ptr, ptr %14, align 8, !tbaa !5
  %488 = getelementptr inbounds %class.ImageContent, ptr %487, i32 0, i32 4
  %489 = load ptr, ptr %488, align 8, !tbaa !13
  %490 = load i32, ptr %31, align 4, !tbaa !11
  %491 = sub nsw i32 %490, 1
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds ptr, ptr %489, i64 %492
  %494 = load ptr, ptr %493, align 8, !tbaa !5
  %495 = load i32, ptr %32, align 4, !tbaa !11
  %496 = add nsw i32 %495, 1
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds float, ptr %494, i64 %497
  %499 = load float, ptr %498, align 4, !tbaa !9
  %500 = load ptr, ptr %14, align 8, !tbaa !5
  %501 = getelementptr inbounds %class.ImageContent, ptr %500, i32 0, i32 4
  %502 = load ptr, ptr %501, align 8, !tbaa !13
  %503 = load i32, ptr %31, align 4, !tbaa !11
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds ptr, ptr %502, i64 %504
  %506 = load ptr, ptr %505, align 8, !tbaa !5
  %507 = load i32, ptr %32, align 4, !tbaa !11
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds float, ptr %506, i64 %508
  store float %499, ptr %509, align 4, !tbaa !9
  br label %605

510:                                              ; preds = %471
  %511 = load ptr, ptr %14, align 8, !tbaa !5
  %512 = getelementptr inbounds %class.ImageContent, ptr %511, i32 0, i32 4
  %513 = load ptr, ptr %512, align 8, !tbaa !13
  %514 = load i32, ptr %31, align 4, !tbaa !11
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds ptr, ptr %513, i64 %515
  %517 = load ptr, ptr %516, align 8, !tbaa !5
  %518 = load i32, ptr %32, align 4, !tbaa !11
  %519 = sub nsw i32 %518, 1
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds float, ptr %517, i64 %520
  %522 = load float, ptr %521, align 4, !tbaa !9
  %523 = fcmp ogt float %522, 0.000000e+00
  br i1 %523, label %524, label %547

524:                                              ; preds = %510
  %525 = load ptr, ptr %14, align 8, !tbaa !5
  %526 = getelementptr inbounds %class.ImageContent, ptr %525, i32 0, i32 4
  %527 = load ptr, ptr %526, align 8, !tbaa !13
  %528 = load i32, ptr %31, align 4, !tbaa !11
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds ptr, ptr %527, i64 %529
  %531 = load ptr, ptr %530, align 8, !tbaa !5
  %532 = load i32, ptr %32, align 4, !tbaa !11
  %533 = sub nsw i32 %532, 1
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds float, ptr %531, i64 %534
  %536 = load float, ptr %535, align 4, !tbaa !9
  %537 = load ptr, ptr %14, align 8, !tbaa !5
  %538 = getelementptr inbounds %class.ImageContent, ptr %537, i32 0, i32 4
  %539 = load ptr, ptr %538, align 8, !tbaa !13
  %540 = load i32, ptr %31, align 4, !tbaa !11
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds ptr, ptr %539, i64 %541
  %543 = load ptr, ptr %542, align 8, !tbaa !5
  %544 = load i32, ptr %32, align 4, !tbaa !11
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds float, ptr %543, i64 %545
  store float %536, ptr %546, align 4, !tbaa !9
  br label %604

547:                                              ; preds = %510
  %548 = load ptr, ptr %14, align 8, !tbaa !5
  %549 = getelementptr inbounds %class.ImageContent, ptr %548, i32 0, i32 4
  %550 = load ptr, ptr %549, align 8, !tbaa !13
  %551 = load i32, ptr %31, align 4, !tbaa !11
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds ptr, ptr %550, i64 %552
  %554 = load ptr, ptr %553, align 8, !tbaa !5
  %555 = load i32, ptr %32, align 4, !tbaa !11
  %556 = add nsw i32 %555, 1
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds float, ptr %554, i64 %557
  %559 = load float, ptr %558, align 4, !tbaa !9
  %560 = fcmp ogt float %559, 0.000000e+00
  br i1 %560, label %561, label %584

561:                                              ; preds = %547
  %562 = load ptr, ptr %14, align 8, !tbaa !5
  %563 = getelementptr inbounds %class.ImageContent, ptr %562, i32 0, i32 4
  %564 = load ptr, ptr %563, align 8, !tbaa !13
  %565 = load i32, ptr %31, align 4, !tbaa !11
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds ptr, ptr %564, i64 %566
  %568 = load ptr, ptr %567, align 8, !tbaa !5
  %569 = load i32, ptr %32, align 4, !tbaa !11
  %570 = add nsw i32 %569, 1
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds float, ptr %568, i64 %571
  %573 = load float, ptr %572, align 4, !tbaa !9
  %574 = load ptr, ptr %14, align 8, !tbaa !5
  %575 = getelementptr inbounds %class.ImageContent, ptr %574, i32 0, i32 4
  %576 = load ptr, ptr %575, align 8, !tbaa !13
  %577 = load i32, ptr %31, align 4, !tbaa !11
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds ptr, ptr %576, i64 %578
  %580 = load ptr, ptr %579, align 8, !tbaa !5
  %581 = load i32, ptr %32, align 4, !tbaa !11
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds float, ptr %580, i64 %582
  store float %573, ptr %583, align 4, !tbaa !9
  br label %603

584:                                              ; preds = %547
  %585 = load float, ptr %30, align 4, !tbaa !9
  %586 = load ptr, ptr %14, align 8, !tbaa !5
  %587 = getelementptr inbounds %class.ImageContent, ptr %586, i32 0, i32 4
  %588 = load ptr, ptr %587, align 8, !tbaa !13
  %589 = load i32, ptr %31, align 4, !tbaa !11
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds ptr, ptr %588, i64 %590
  %592 = load ptr, ptr %591, align 8, !tbaa !5
  %593 = load i32, ptr %32, align 4, !tbaa !11
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds float, ptr %592, i64 %594
  store float %585, ptr %595, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  store i32 0, ptr %33, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 4 dereferenceable(4) %33)
          to label %596 unwind label %599

596:                                              ; preds = %584
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  %597 = load float, ptr %30, align 4, !tbaa !9
  %598 = fadd float %597, 1.000000e+00
  store float %598, ptr %30, align 4, !tbaa !9
  br label %603

599:                                              ; preds = %584
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %12, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %615

603:                                              ; preds = %596, %561
  br label %604

604:                                              ; preds = %603, %524
  br label %605

605:                                              ; preds = %604, %486
  br label %606

606:                                              ; preds = %605, %448
  br label %607

607:                                              ; preds = %606, %410
  br label %608

608:                                              ; preds = %607, %391
  br label %609

609:                                              ; preds = %608, %379
  br label %610

610:                                              ; preds = %609, %301
  br label %611

611:                                              ; preds = %610
  br label %612

612:                                              ; preds = %611, %296
  %613 = load i32, ptr %32, align 4, !tbaa !11
  %614 = add nsw i32 %613, 1
  store i32 %614, ptr %32, align 4, !tbaa !11
  br label %205, !llvm.loop !18

615:                                              ; preds = %599, %213
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  br label %620

616:                                              ; preds = %212
  br label %617

617:                                              ; preds = %616
  %618 = load i32, ptr %31, align 4, !tbaa !11
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %31, align 4, !tbaa !11
  br label %188, !llvm.loop !19

620:                                              ; preds = %615, %200
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %949

621:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  %622 = load ptr, ptr %8, align 8, !tbaa !5
  %623 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %622)
          to label %624 unwind label %630

624:                                              ; preds = %621
  %625 = sub i32 %623, 2
  store i32 %625, ptr %34, align 4, !tbaa !11
  br label %626

626:                                              ; preds = %791, %624
  %627 = load i32, ptr %34, align 4, !tbaa !11
  %628 = icmp sgt i32 %627, 0
  br i1 %628, label %634, label %629

629:                                              ; preds = %626
  store i32 14, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %795

630:                                              ; preds = %621
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %12, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %13, align 4
  br label %794

634:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  %635 = load ptr, ptr %8, align 8, !tbaa !5
  %636 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %635)
          to label %637 unwind label %643

637:                                              ; preds = %634
  %638 = sub i32 %636, 2
  store i32 %638, ptr %35, align 4, !tbaa !11
  br label %639

639:                                              ; preds = %787, %637
  %640 = load i32, ptr %35, align 4, !tbaa !11
  %641 = icmp sgt i32 %640, 0
  br i1 %641, label %647, label %642

642:                                              ; preds = %639
  store i32 17, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %790

643:                                              ; preds = %634
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %12, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %794

647:                                              ; preds = %639
  %648 = load ptr, ptr %8, align 8, !tbaa !5
  %649 = getelementptr inbounds %class.ImageContent, ptr %648, i32 0, i32 4
  %650 = load ptr, ptr %649, align 8, !tbaa !13
  %651 = load i32, ptr %34, align 4, !tbaa !11
  %652 = sub nsw i32 %651, 1
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds ptr, ptr %650, i64 %653
  %655 = load ptr, ptr %654, align 8, !tbaa !5
  %656 = load i32, ptr %35, align 4, !tbaa !11
  %657 = sub nsw i32 %656, 1
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds float, ptr %655, i64 %658
  %660 = load float, ptr %659, align 4, !tbaa !9
  %661 = load float, ptr %20, align 4, !tbaa !9
  %662 = fcmp oeq float %660, %661
  br i1 %662, label %771, label %663

663:                                              ; preds = %647
  %664 = load ptr, ptr %8, align 8, !tbaa !5
  %665 = getelementptr inbounds %class.ImageContent, ptr %664, i32 0, i32 4
  %666 = load ptr, ptr %665, align 8, !tbaa !13
  %667 = load i32, ptr %34, align 4, !tbaa !11
  %668 = sub nsw i32 %667, 1
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds ptr, ptr %666, i64 %669
  %671 = load ptr, ptr %670, align 8, !tbaa !5
  %672 = load i32, ptr %35, align 4, !tbaa !11
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds float, ptr %671, i64 %673
  %675 = load float, ptr %674, align 4, !tbaa !9
  %676 = load float, ptr %20, align 4, !tbaa !9
  %677 = fcmp oeq float %675, %676
  br i1 %677, label %771, label %678

678:                                              ; preds = %663
  %679 = load ptr, ptr %8, align 8, !tbaa !5
  %680 = getelementptr inbounds %class.ImageContent, ptr %679, i32 0, i32 4
  %681 = load ptr, ptr %680, align 8, !tbaa !13
  %682 = load i32, ptr %34, align 4, !tbaa !11
  %683 = sub nsw i32 %682, 1
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds ptr, ptr %681, i64 %684
  %686 = load ptr, ptr %685, align 8, !tbaa !5
  %687 = load i32, ptr %35, align 4, !tbaa !11
  %688 = add nsw i32 %687, 1
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds float, ptr %686, i64 %689
  %691 = load float, ptr %690, align 4, !tbaa !9
  %692 = load float, ptr %20, align 4, !tbaa !9
  %693 = fcmp oeq float %691, %692
  br i1 %693, label %771, label %694

694:                                              ; preds = %678
  %695 = load ptr, ptr %8, align 8, !tbaa !5
  %696 = getelementptr inbounds %class.ImageContent, ptr %695, i32 0, i32 4
  %697 = load ptr, ptr %696, align 8, !tbaa !13
  %698 = load i32, ptr %34, align 4, !tbaa !11
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds ptr, ptr %697, i64 %699
  %701 = load ptr, ptr %700, align 8, !tbaa !5
  %702 = load i32, ptr %35, align 4, !tbaa !11
  %703 = sub nsw i32 %702, 1
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds float, ptr %701, i64 %704
  %706 = load float, ptr %705, align 4, !tbaa !9
  %707 = load float, ptr %20, align 4, !tbaa !9
  %708 = fcmp oeq float %706, %707
  br i1 %708, label %771, label %709

709:                                              ; preds = %694
  %710 = load ptr, ptr %8, align 8, !tbaa !5
  %711 = getelementptr inbounds %class.ImageContent, ptr %710, i32 0, i32 4
  %712 = load ptr, ptr %711, align 8, !tbaa !13
  %713 = load i32, ptr %34, align 4, !tbaa !11
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds ptr, ptr %712, i64 %714
  %716 = load ptr, ptr %715, align 8, !tbaa !5
  %717 = load i32, ptr %35, align 4, !tbaa !11
  %718 = add nsw i32 %717, 1
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds float, ptr %716, i64 %719
  %721 = load float, ptr %720, align 4, !tbaa !9
  %722 = load float, ptr %20, align 4, !tbaa !9
  %723 = fcmp oeq float %721, %722
  br i1 %723, label %771, label %724

724:                                              ; preds = %709
  %725 = load ptr, ptr %8, align 8, !tbaa !5
  %726 = getelementptr inbounds %class.ImageContent, ptr %725, i32 0, i32 4
  %727 = load ptr, ptr %726, align 8, !tbaa !13
  %728 = load i32, ptr %34, align 4, !tbaa !11
  %729 = add nsw i32 %728, 1
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds ptr, ptr %727, i64 %730
  %732 = load ptr, ptr %731, align 8, !tbaa !5
  %733 = load i32, ptr %35, align 4, !tbaa !11
  %734 = sub nsw i32 %733, 1
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds float, ptr %732, i64 %735
  %737 = load float, ptr %736, align 4, !tbaa !9
  %738 = load float, ptr %20, align 4, !tbaa !9
  %739 = fcmp oeq float %737, %738
  br i1 %739, label %771, label %740

740:                                              ; preds = %724
  %741 = load ptr, ptr %8, align 8, !tbaa !5
  %742 = getelementptr inbounds %class.ImageContent, ptr %741, i32 0, i32 4
  %743 = load ptr, ptr %742, align 8, !tbaa !13
  %744 = load i32, ptr %34, align 4, !tbaa !11
  %745 = add nsw i32 %744, 1
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds ptr, ptr %743, i64 %746
  %748 = load ptr, ptr %747, align 8, !tbaa !5
  %749 = load i32, ptr %35, align 4, !tbaa !11
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds float, ptr %748, i64 %750
  %752 = load float, ptr %751, align 4, !tbaa !9
  %753 = load float, ptr %20, align 4, !tbaa !9
  %754 = fcmp oeq float %752, %753
  br i1 %754, label %771, label %755

755:                                              ; preds = %740
  %756 = load ptr, ptr %8, align 8, !tbaa !5
  %757 = getelementptr inbounds %class.ImageContent, ptr %756, i32 0, i32 4
  %758 = load ptr, ptr %757, align 8, !tbaa !13
  %759 = load i32, ptr %34, align 4, !tbaa !11
  %760 = add nsw i32 %759, 1
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds ptr, ptr %758, i64 %761
  %763 = load ptr, ptr %762, align 8, !tbaa !5
  %764 = load i32, ptr %35, align 4, !tbaa !11
  %765 = add nsw i32 %764, 1
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds float, ptr %763, i64 %766
  %768 = load float, ptr %767, align 4, !tbaa !9
  %769 = load float, ptr %20, align 4, !tbaa !9
  %770 = fcmp oeq float %768, %769
  br i1 %770, label %771, label %786

771:                                              ; preds = %755, %740, %724, %709, %694, %678, %663, %647
  %772 = load ptr, ptr %14, align 8, !tbaa !5
  %773 = getelementptr inbounds %class.ImageContent, ptr %772, i32 0, i32 4
  %774 = load ptr, ptr %773, align 8, !tbaa !13
  %775 = load i32, ptr %34, align 4, !tbaa !11
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds ptr, ptr %774, i64 %776
  %778 = load ptr, ptr %777, align 8, !tbaa !5
  %779 = load i32, ptr %35, align 4, !tbaa !11
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds float, ptr %778, i64 %780
  %782 = load float, ptr %781, align 4, !tbaa !9
  %783 = fptosi float %782 to i32
  %784 = sext i32 %783 to i64
  %785 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %784) #8
  store i32 1, ptr %785, align 4, !tbaa !11
  br label %786

786:                                              ; preds = %771, %755
  br label %787

787:                                              ; preds = %786
  %788 = load i32, ptr %35, align 4, !tbaa !11
  %789 = add nsw i32 %788, -1
  store i32 %789, ptr %35, align 4, !tbaa !11
  br label %639, !llvm.loop !20

790:                                              ; preds = %642
  br label %791

791:                                              ; preds = %790
  %792 = load i32, ptr %34, align 4, !tbaa !11
  %793 = add nsw i32 %792, -1
  store i32 %793, ptr %34, align 4, !tbaa !11
  br label %626, !llvm.loop !21

794:                                              ; preds = %643, %630
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %949

795:                                              ; preds = %629
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  %796 = load ptr, ptr %8, align 8, !tbaa !5
  %797 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %796)
          to label %798 unwind label %804

798:                                              ; preds = %795
  %799 = sub i32 %797, 2
  store i32 %799, ptr %36, align 4, !tbaa !11
  br label %800

800:                                              ; preds = %868, %798
  %801 = load i32, ptr %36, align 4, !tbaa !11
  %802 = icmp sgt i32 %801, 0
  br i1 %802, label %808, label %803

803:                                              ; preds = %800
  store i32 20, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %872

804:                                              ; preds = %795
  %805 = landingpad { ptr, i32 }
          cleanup
  %806 = extractvalue { ptr, i32 } %805, 0
  store ptr %806, ptr %12, align 8
  %807 = extractvalue { ptr, i32 } %805, 1
  store i32 %807, ptr %13, align 4
  br label %871

808:                                              ; preds = %800
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  %809 = load ptr, ptr %8, align 8, !tbaa !5
  %810 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %809)
          to label %811 unwind label %817

811:                                              ; preds = %808
  %812 = sub i32 %810, 2
  store i32 %812, ptr %37, align 4, !tbaa !11
  br label %813

813:                                              ; preds = %864, %811
  %814 = load i32, ptr %37, align 4, !tbaa !11
  %815 = icmp sgt i32 %814, 0
  br i1 %815, label %821, label %816

816:                                              ; preds = %813
  store i32 23, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %867

817:                                              ; preds = %808
  %818 = landingpad { ptr, i32 }
          cleanup
  %819 = extractvalue { ptr, i32 } %818, 0
  store ptr %819, ptr %12, align 8
  %820 = extractvalue { ptr, i32 } %818, 1
  store i32 %820, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  br label %871

821:                                              ; preds = %813
  %822 = load ptr, ptr %14, align 8, !tbaa !5
  %823 = getelementptr inbounds %class.ImageContent, ptr %822, i32 0, i32 4
  %824 = load ptr, ptr %823, align 8, !tbaa !13
  %825 = load i32, ptr %36, align 4, !tbaa !11
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds ptr, ptr %824, i64 %826
  %828 = load ptr, ptr %827, align 8, !tbaa !5
  %829 = load i32, ptr %37, align 4, !tbaa !11
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds float, ptr %828, i64 %830
  %832 = load float, ptr %831, align 4, !tbaa !9
  %833 = fcmp ogt float %832, 0.000000e+00
  br i1 %833, label %834, label %863

834:                                              ; preds = %821
  %835 = load ptr, ptr %14, align 8, !tbaa !5
  %836 = getelementptr inbounds %class.ImageContent, ptr %835, i32 0, i32 4
  %837 = load ptr, ptr %836, align 8, !tbaa !13
  %838 = load i32, ptr %36, align 4, !tbaa !11
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds ptr, ptr %837, i64 %839
  %841 = load ptr, ptr %840, align 8, !tbaa !5
  %842 = load i32, ptr %37, align 4, !tbaa !11
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds float, ptr %841, i64 %843
  %845 = load float, ptr %844, align 4, !tbaa !9
  %846 = fptosi float %845 to i32
  %847 = sext i32 %846 to i64
  %848 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %847) #8
  %849 = load i32, ptr %848, align 4, !tbaa !11
  %850 = icmp eq i32 %849, 1
  br i1 %850, label %851, label %863

851:                                              ; preds = %834
  %852 = load float, ptr %20, align 4, !tbaa !9
  %853 = load ptr, ptr %8, align 8, !tbaa !5
  %854 = getelementptr inbounds %class.ImageContent, ptr %853, i32 0, i32 4
  %855 = load ptr, ptr %854, align 8, !tbaa !13
  %856 = load i32, ptr %36, align 4, !tbaa !11
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds ptr, ptr %855, i64 %857
  %859 = load ptr, ptr %858, align 8, !tbaa !5
  %860 = load i32, ptr %37, align 4, !tbaa !11
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds float, ptr %859, i64 %861
  store float %852, ptr %862, align 4, !tbaa !9
  br label %863

863:                                              ; preds = %851, %834, %821
  br label %864

864:                                              ; preds = %863
  %865 = load i32, ptr %37, align 4, !tbaa !11
  %866 = add nsw i32 %865, -1
  store i32 %866, ptr %37, align 4, !tbaa !11
  br label %813, !llvm.loop !22

867:                                              ; preds = %816
  br label %868

868:                                              ; preds = %867
  %869 = load i32, ptr %36, align 4, !tbaa !11
  %870 = add nsw i32 %869, -1
  store i32 %870, ptr %36, align 4, !tbaa !11
  br label %800, !llvm.loop !23

871:                                              ; preds = %817, %804
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %949

872:                                              ; preds = %803
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #8
  store i32 0, ptr %38, align 4, !tbaa !11
  br label %873

873:                                              ; preds = %936, %872
  %874 = load i32, ptr %38, align 4, !tbaa !11
  %875 = load ptr, ptr %11, align 8, !tbaa !5
  %876 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %875)
          to label %877 unwind label %880

877:                                              ; preds = %873
  %878 = icmp ult i32 %874, %876
  br i1 %878, label %884, label %879

879:                                              ; preds = %877
  store i32 26, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  br label %940

880:                                              ; preds = %873
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %12, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %13, align 4
  br label %939

884:                                              ; preds = %877
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #8
  store i32 0, ptr %39, align 4, !tbaa !11
  br label %885

885:                                              ; preds = %932, %884
  %886 = load i32, ptr %39, align 4, !tbaa !11
  %887 = load ptr, ptr %11, align 8, !tbaa !5
  %888 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %887)
          to label %889 unwind label %892

889:                                              ; preds = %885
  %890 = icmp ult i32 %886, %888
  br i1 %890, label %896, label %891

891:                                              ; preds = %889
  store i32 29, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  br label %935

892:                                              ; preds = %885
  %893 = landingpad { ptr, i32 }
          cleanup
  %894 = extractvalue { ptr, i32 } %893, 0
  store ptr %894, ptr %12, align 8
  %895 = extractvalue { ptr, i32 } %893, 1
  store i32 %895, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  br label %939

896:                                              ; preds = %889
  %897 = load ptr, ptr %8, align 8, !tbaa !5
  %898 = getelementptr inbounds %class.ImageContent, ptr %897, i32 0, i32 4
  %899 = load ptr, ptr %898, align 8, !tbaa !13
  %900 = load i32, ptr %38, align 4, !tbaa !11
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds ptr, ptr %899, i64 %901
  %903 = load ptr, ptr %902, align 8, !tbaa !5
  %904 = load i32, ptr %39, align 4, !tbaa !11
  %905 = sext i32 %904 to i64
  %906 = getelementptr inbounds float, ptr %903, i64 %905
  %907 = load float, ptr %906, align 4, !tbaa !9
  %908 = fcmp ogt float %907, 0.000000e+00
  br i1 %908, label %909, label %931

909:                                              ; preds = %896
  %910 = load ptr, ptr %11, align 8, !tbaa !5
  %911 = getelementptr inbounds %class.ImageContent, ptr %910, i32 0, i32 4
  %912 = load ptr, ptr %911, align 8, !tbaa !13
  %913 = load i32, ptr %38, align 4, !tbaa !11
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds ptr, ptr %912, i64 %914
  %916 = load ptr, ptr %915, align 8, !tbaa !5
  %917 = load i32, ptr %39, align 4, !tbaa !11
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds float, ptr %916, i64 %918
  %920 = load float, ptr %919, align 4, !tbaa !9
  %921 = load ptr, ptr %8, align 8, !tbaa !5
  %922 = getelementptr inbounds %class.ImageContent, ptr %921, i32 0, i32 4
  %923 = load ptr, ptr %922, align 8, !tbaa !13
  %924 = load i32, ptr %38, align 4, !tbaa !11
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds ptr, ptr %923, i64 %925
  %927 = load ptr, ptr %926, align 8, !tbaa !5
  %928 = load i32, ptr %39, align 4, !tbaa !11
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds float, ptr %927, i64 %929
  store float %920, ptr %930, align 4, !tbaa !9
  br label %931

931:                                              ; preds = %909, %896
  br label %932

932:                                              ; preds = %931
  %933 = load i32, ptr %39, align 4, !tbaa !11
  %934 = add nsw i32 %933, 1
  store i32 %934, ptr %39, align 4, !tbaa !11
  br label %885, !llvm.loop !24

935:                                              ; preds = %891
  br label %936

936:                                              ; preds = %935
  %937 = load i32, ptr %38, align 4, !tbaa !11
  %938 = add nsw i32 %937, 1
  store i32 %938, ptr %38, align 4, !tbaa !11
  br label %873, !llvm.loop !25

939:                                              ; preds = %892, %880
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  br label %949

940:                                              ; preds = %879
  %941 = load ptr, ptr %11, align 8, !tbaa !5
  %942 = icmp eq ptr %941, null
  br i1 %942, label %944, label %943

943:                                              ; preds = %940
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %941) #8
  call void @_ZdlPvm(ptr noundef %941, i64 noundef 80) #10
  br label %944

944:                                              ; preds = %943, %940
  %945 = load ptr, ptr %14, align 8, !tbaa !5
  %946 = icmp eq ptr %945, null
  br i1 %946, label %948, label %947

947:                                              ; preds = %944
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %945) #8
  call void @_ZdlPvm(ptr noundef %945, i64 noundef 80) #10
  br label %948

948:                                              ; preds = %947, %944
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  ret void

949:                                              ; preds = %939, %871, %794, %620
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %950

950:                                              ; preds = %949, %196
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #8
  br label %951

951:                                              ; preds = %950, %66
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %952

952:                                              ; preds = %951, %62
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %953

953:                                              ; preds = %952
  %954 = load ptr, ptr %12, align 8
  %955 = load i32, ptr %13, align 4
  %956 = insertvalue { ptr, i32 } poison, ptr %954, 0
  %957 = insertvalue { ptr, i32 } %956, i32 %955, 1
  resume { ptr, i32 } %957
}

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { inlinehint 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 #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nounwind 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 #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin 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 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !6, i64 16}
!14 = !{!"_ZTS12ImageContent", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}


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

%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_Z5bilinP12ImageContentff(ptr noundef, float noundef, float noundef) local_unnamed_addr #0

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #3 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #4

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80)) unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80), i32 noundef, i32 noundef, float noundef) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4sqrtf(float noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14cannyEdgesGradP12ImageContentS0_S0_ff(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noundef %2, float noundef %3, float noundef %4) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.std::vector.18", align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #8
  %10 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %11 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %9, i32 noundef %10, i32 noundef %11, float noundef 0.000000e+00)
          to label %12 unwind label %21

12:                                               ; preds = %5
  %13 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #8
  %14 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %15 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %13, i32 noundef %14, i32 noundef %15, float noundef 0.000000e+00)
          to label %.preheader266 unwind label %23

.preheader266:                                    ; preds = %12
  %16 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %.not = icmp eq i32 %16, 0
  br i1 %.not, label %._crit_edge271, label %.preheader265.lr.ph

.preheader265.lr.ph:                              ; preds = %.preheader266
  %17 = getelementptr inbounds i8, ptr %1, i64 16
  %18 = getelementptr inbounds i8, ptr %0, i64 16
  %19 = getelementptr inbounds i8, ptr %9, i64 16
  br label %.preheader265

.preheader265:                                    ; preds = %.preheader265.lr.ph, %._crit_edge
  %indvars.iv305 = phi i64 [ 0, %.preheader265.lr.ph ], [ %indvars.iv.next306, %._crit_edge ]
  %20 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %.not299 = icmp eq i32 %20, 0
  br i1 %.not299, label %._crit_edge, label %.lr.ph

._crit_edge271:                                   ; preds = %._crit_edge, %.preheader266
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #9
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #9
  store i32 0, ptr %7, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %59 unwind label %77

21:                                               ; preds = %5
  %22 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %9, i64 noundef 80) #10
  br label %310

23:                                               ; preds = %12
  %24 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %13, i64 noundef 80) #10
  br label %310

._crit_edge:                                      ; preds = %55, %.preheader265
  %indvars.iv.next306 = add nuw nsw i64 %indvars.iv305, 1
  %25 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %26 = zext i32 %25 to i64
  %27 = icmp ult i64 %indvars.iv.next306, %26
  br i1 %27, label %.preheader265, label %._crit_edge271, !llvm.loop !9

.lr.ph:                                           ; preds = %.preheader265, %55
  %indvars.iv = phi i64 [ %indvars.iv.next, %55 ], [ 0, %.preheader265 ]
  %28 = load ptr, ptr %17, align 8, !tbaa !11
  %29 = getelementptr inbounds ptr, ptr %28, i64 %indvars.iv305
  %30 = load ptr, ptr %29, align 8, !tbaa !14
  %31 = getelementptr inbounds float, ptr %30, i64 %indvars.iv
  %32 = load float, ptr %31, align 4, !tbaa !15
  %33 = load ptr, ptr %18, align 8, !tbaa !11
  %34 = getelementptr inbounds ptr, ptr %33, i64 %indvars.iv305
  %35 = load ptr, ptr %34, align 8, !tbaa !14
  %36 = getelementptr inbounds float, ptr %35, i64 %indvars.iv
  %37 = load float, ptr %36, align 4, !tbaa !15
  %38 = fmul float %37, %37
  %39 = tail call float @llvm.fmuladd.f32(float %32, float %32, float %38)
  %40 = tail call noundef float @_ZSt4sqrtf(float noundef %39)
  %41 = load ptr, ptr %19, align 8, !tbaa !11
  %42 = getelementptr inbounds ptr, ptr %41, i64 %indvars.iv305
  %43 = load ptr, ptr %42, align 8, !tbaa !14
  %44 = getelementptr inbounds float, ptr %43, i64 %indvars.iv
  store float %40, ptr %44, align 4, !tbaa !15
  %45 = fcmp olt float %40, 1.000000e+00
  br i1 %45, label %46, label %55

46:                                               ; preds = %.lr.ph
  store float 1.000000e+00, ptr %44, align 4, !tbaa !15
  %47 = load ptr, ptr %17, align 8, !tbaa !11
  %48 = getelementptr inbounds ptr, ptr %47, i64 %indvars.iv305
  %49 = load ptr, ptr %48, align 8, !tbaa !14
  %50 = getelementptr inbounds float, ptr %49, i64 %indvars.iv
  store float 0.000000e+00, ptr %50, align 4, !tbaa !15
  %51 = load ptr, ptr %18, align 8, !tbaa !11
  %52 = getelementptr inbounds ptr, ptr %51, i64 %indvars.iv305
  %53 = load ptr, ptr %52, align 8, !tbaa !14
  %54 = getelementptr inbounds float, ptr %53, i64 %indvars.iv
  store float 0.000000e+00, ptr %54, align 4, !tbaa !15
  br label %55

55:                                               ; preds = %.lr.ph, %46
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %56 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %57 = zext i32 %56 to i64
  %58 = icmp ult i64 %indvars.iv.next, %57
  br i1 %58, label %.lr.ph, label %._crit_edge, !llvm.loop !17

59:                                               ; preds = %._crit_edge271
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9
  %60 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %61 = and i32 %60, -2
  %.not300 = icmp eq i32 %61, 2
  br i1 %.not300, label %._crit_edge278, label %.preheader264.lr.ph

.preheader264.lr.ph:                              ; preds = %59
  %62 = getelementptr inbounds i8, ptr %1, i64 16
  %63 = getelementptr inbounds i8, ptr %0, i64 16
  %64 = getelementptr inbounds i8, ptr %9, i64 16
  %65 = getelementptr inbounds i8, ptr %2, i64 16
  %66 = getelementptr inbounds i8, ptr %13, i64 16
  br label %.preheader264

.preheader264:                                    ; preds = %.preheader264.lr.ph, %._crit_edge275
  %indvars.iv311 = phi i64 [ 1, %.preheader264.lr.ph ], [ %indvars.iv.next312, %._crit_edge275 ]
  %.0238276 = phi float [ 1.000000e+00, %.preheader264.lr.ph ], [ %.1.lcssa, %._crit_edge275 ]
  %67 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %68 = and i32 %67, -2
  %.not301 = icmp eq i32 %68, 2
  br i1 %.not301, label %._crit_edge275, label %.lr.ph274

.lr.ph274:                                        ; preds = %.preheader264
  %69 = trunc nuw nsw i64 %indvars.iv311 to i32
  %70 = uitofp nneg i32 %69 to float
  br label %85

._crit_edge278:                                   ; preds = %._crit_edge275, %59
  %71 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %2)
  %72 = add i32 %71, -2
  %73 = icmp sgt i32 %72, 0
  br i1 %73, label %.lr.ph285, label %._crit_edge286

.lr.ph285:                                        ; preds = %._crit_edge278
  %74 = getelementptr inbounds i8, ptr %2, i64 16
  %75 = getelementptr inbounds i8, ptr %13, i64 16
  %76 = zext nneg i32 %72 to i64
  br label %203

77:                                               ; preds = %._crit_edge271
  %78 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9
  br label %309

._crit_edge275:                                   ; preds = %.critedge, %.preheader264
  %.1.lcssa = phi float [ %.0238276, %.preheader264 ], [ %.2, %.critedge ]
  %indvars.iv.next312 = add nuw nsw i64 %indvars.iv311, 1
  %79 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %80 = add i32 %79, -2
  %81 = zext i32 %80 to i64
  %82 = icmp ult i64 %indvars.iv.next312, %81
  br i1 %82, label %.preheader264, label %._crit_edge278, !llvm.loop !18

83:                                               ; preds = %108, %85
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %309

85:                                               ; preds = %.lr.ph274, %.critedge
  %indvars.iv308 = phi i64 [ 1, %.lr.ph274 ], [ %indvars.iv.next309, %.critedge ]
  %.1272 = phi float [ %.0238276, %.lr.ph274 ], [ %.2, %.critedge ]
  %86 = load ptr, ptr %62, align 8, !tbaa !11
  %87 = getelementptr inbounds ptr, ptr %86, i64 %indvars.iv311
  %88 = load ptr, ptr %87, align 8, !tbaa !14
  %89 = getelementptr inbounds float, ptr %88, i64 %indvars.iv308
  %90 = load float, ptr %89, align 4, !tbaa !15
  %91 = load ptr, ptr %63, align 8, !tbaa !11
  %92 = getelementptr inbounds ptr, ptr %91, i64 %indvars.iv311
  %93 = load ptr, ptr %92, align 8, !tbaa !14
  %94 = getelementptr inbounds float, ptr %93, i64 %indvars.iv308
  %95 = load float, ptr %94, align 4, !tbaa !15
  %96 = load ptr, ptr %64, align 8, !tbaa !11
  %97 = getelementptr inbounds ptr, ptr %96, i64 %indvars.iv311
  %98 = load ptr, ptr %97, align 8, !tbaa !14
  %99 = getelementptr inbounds float, ptr %98, i64 %indvars.iv308
  %100 = load float, ptr %99, align 4, !tbaa !15
  %101 = trunc nuw nsw i64 %indvars.iv308 to i32
  %102 = uitofp nneg i32 %101 to float
  %103 = fdiv float %90, %100
  %104 = fadd float %103, %102
  %105 = fdiv float %95, %100
  %106 = fadd float %105, %70
  %107 = invoke noundef float @_Z5bilinP12ImageContentff(ptr noundef nonnull %9, float noundef %104, float noundef %106)
          to label %108 unwind label %83

108:                                              ; preds = %85
  %109 = fsub float %70, %105
  %110 = fsub float %102, %103
  %111 = invoke noundef float @_Z5bilinP12ImageContentff(ptr noundef nonnull %9, float noundef %110, float noundef %109)
          to label %112 unwind label %83

112:                                              ; preds = %108
  %113 = fcmp olt float %100, %107
  %114 = fcmp ole float %100, %111
  %or.cond.not262 = or i1 %113, %114
  %115 = fcmp olt float %100, %3
  %or.cond260 = or i1 %115, %or.cond.not262
  br i1 %or.cond260, label %.critedge, label %116

116:                                              ; preds = %112
  %117 = fcmp ogt float %100, %4
  br i1 %117, label %118, label %123

118:                                              ; preds = %116
  %119 = load ptr, ptr %65, align 8, !tbaa !11
  %120 = getelementptr inbounds ptr, ptr %119, i64 %indvars.iv311
  %121 = load ptr, ptr %120, align 8, !tbaa !14
  %122 = getelementptr inbounds float, ptr %121, i64 %indvars.iv308
  store float 2.550000e+02, ptr %122, align 4, !tbaa !15
  br label %.critedge

123:                                              ; preds = %116
  %124 = fcmp ogt float %100, %3
  br i1 %124, label %125, label %.critedge

125:                                              ; preds = %123
  %126 = load ptr, ptr %65, align 8, !tbaa !11
  %127 = getelementptr ptr, ptr %126, i64 %indvars.iv311
  %128 = getelementptr i8, ptr %127, i64 -8
  %129 = load ptr, ptr %128, align 8, !tbaa !14
  %130 = add nsw i64 %indvars.iv308, -1
  %131 = getelementptr inbounds float, ptr %129, i64 %130
  %132 = load float, ptr %131, align 4, !tbaa !15
  %133 = fcmp oeq float %132, 2.550000e+02
  br i1 %133, label %147, label %134

134:                                              ; preds = %125
  %135 = getelementptr inbounds float, ptr %129, i64 %indvars.iv308
  %136 = load float, ptr %135, align 4, !tbaa !15
  %137 = fcmp oeq float %136, 2.550000e+02
  br i1 %137, label %147, label %138

138:                                              ; preds = %134
  %139 = getelementptr inbounds i8, ptr %135, i64 4
  %140 = load float, ptr %139, align 4, !tbaa !15
  %141 = fcmp oeq float %140, 2.550000e+02
  br i1 %141, label %147, label %142

142:                                              ; preds = %138
  %143 = load ptr, ptr %127, align 8, !tbaa !14
  %144 = getelementptr inbounds float, ptr %143, i64 %130
  %145 = load float, ptr %144, align 4, !tbaa !15
  %146 = fcmp oeq float %145, 2.550000e+02
  br i1 %146, label %147, label %150

147:                                              ; preds = %142, %138, %134, %125
  %148 = load ptr, ptr %127, align 8, !tbaa !14
  %149 = getelementptr inbounds float, ptr %148, i64 %indvars.iv308
  store float 2.550000e+02, ptr %149, align 4, !tbaa !15
  br label %.critedge

150:                                              ; preds = %142
  %151 = load ptr, ptr %66, align 8, !tbaa !11
  %152 = getelementptr ptr, ptr %151, i64 %indvars.iv311
  %153 = getelementptr i8, ptr %152, i64 -8
  %154 = load ptr, ptr %153, align 8, !tbaa !14
  %155 = getelementptr inbounds float, ptr %154, i64 %130
  %156 = load float, ptr %155, align 4, !tbaa !15
  %157 = fcmp ogt float %156, 0.000000e+00
  br i1 %157, label %158, label %161

158:                                              ; preds = %150
  %159 = load ptr, ptr %152, align 8, !tbaa !14
  %160 = getelementptr inbounds float, ptr %159, i64 %indvars.iv308
  store float %156, ptr %160, align 4, !tbaa !15
  br label %.critedge

161:                                              ; preds = %150
  %162 = getelementptr inbounds float, ptr %154, i64 %indvars.iv308
  %163 = load float, ptr %162, align 4, !tbaa !15
  %164 = fcmp ogt float %163, 0.000000e+00
  br i1 %164, label %165, label %168

165:                                              ; preds = %161
  %166 = load ptr, ptr %152, align 8, !tbaa !14
  %167 = getelementptr inbounds float, ptr %166, i64 %indvars.iv308
  store float %163, ptr %167, align 4, !tbaa !15
  br label %.critedge

168:                                              ; preds = %161
  %169 = add nuw nsw i64 %indvars.iv308, 1
  %170 = getelementptr inbounds float, ptr %154, i64 %169
  %171 = load float, ptr %170, align 4, !tbaa !15
  %172 = fcmp ogt float %171, 0.000000e+00
  %173 = load ptr, ptr %152, align 8, !tbaa !14
  br i1 %172, label %174, label %176

174:                                              ; preds = %168
  %175 = getelementptr inbounds float, ptr %173, i64 %indvars.iv308
  store float %171, ptr %175, align 4, !tbaa !15
  br label %.critedge

176:                                              ; preds = %168
  %177 = getelementptr inbounds float, ptr %173, i64 %130
  %178 = load float, ptr %177, align 4, !tbaa !15
  %179 = fcmp ogt float %178, 0.000000e+00
  br i1 %179, label %180, label %182

180:                                              ; preds = %176
  %181 = getelementptr inbounds float, ptr %173, i64 %indvars.iv308
  store float %178, ptr %181, align 4, !tbaa !15
  br label %.critedge

182:                                              ; preds = %176
  %183 = getelementptr inbounds float, ptr %173, i64 %169
  %184 = load float, ptr %183, align 4, !tbaa !15
  %185 = fcmp ogt float %184, 0.000000e+00
  %186 = getelementptr inbounds float, ptr %173, i64 %indvars.iv308
  br i1 %185, label %187, label %188

187:                                              ; preds = %182
  store float %184, ptr %186, align 4, !tbaa !15
  br label %.critedge

188:                                              ; preds = %182
  store float %.1272, ptr %186, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #9
  store i32 0, ptr %8, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %189 unwind label %191

189:                                              ; preds = %188
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9
  %190 = fadd float %.1272, 1.000000e+00
  br label %.critedge

191:                                              ; preds = %188
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #9
  br label %309

.critedge:                                        ; preds = %123, %147, %158, %174, %187, %189, %180, %165, %118, %112
  %.2 = phi float [ %.1272, %112 ], [ %.1272, %118 ], [ %.1272, %147 ], [ %.1272, %158 ], [ %.1272, %165 ], [ %.1272, %174 ], [ %.1272, %180 ], [ %.1272, %187 ], [ %190, %189 ], [ %.1272, %123 ]
  %indvars.iv.next309 = add nuw nsw i64 %indvars.iv308, 1
  %193 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %194 = add i32 %193, -2
  %195 = trunc nsw i64 %indvars.iv.next309 to i32
  %196 = icmp ugt i32 %194, %195
  br i1 %196, label %85, label %._crit_edge275, !llvm.loop !19

._crit_edge286:                                   ; preds = %._crit_edge282, %._crit_edge278
  %197 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %2)
  %198 = add i32 %197, -2
  %199 = icmp sgt i32 %198, 0
  br i1 %199, label %.lr.ph293, label %.preheader263

.lr.ph293:                                        ; preds = %._crit_edge286
  %200 = getelementptr inbounds i8, ptr %13, i64 16
  %201 = getelementptr inbounds i8, ptr %2, i64 16
  %202 = zext nneg i32 %198 to i64
  br label %263

203:                                              ; preds = %.lr.ph285, %._crit_edge282
  %indvars.iv317 = phi i64 [ %76, %.lr.ph285 ], [ %indvars.iv.next318, %._crit_edge282 ]
  %204 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %2)
  %205 = add i32 %204, -2
  %206 = icmp sgt i32 %205, 0
  br i1 %206, label %.lr.ph281, label %._crit_edge282

.lr.ph281:                                        ; preds = %203
  %207 = zext nneg i32 %205 to i64
  br label %209

._crit_edge282:                                   ; preds = %258, %203
  %indvars.iv.next318 = add nsw i64 %indvars.iv317, -1
  %208 = icmp sgt i64 %indvars.iv317, 1
  br i1 %208, label %203, label %._crit_edge286, !llvm.loop !20

209:                                              ; preds = %.lr.ph281, %258
  %indvars.iv314 = phi i64 [ %207, %.lr.ph281 ], [ %indvars.iv.next315, %258 ]
  %210 = load ptr, ptr %74, align 8, !tbaa !11
  %211 = getelementptr ptr, ptr %210, i64 %indvars.iv317
  %212 = getelementptr i8, ptr %211, i64 -8
  %213 = load ptr, ptr %212, align 8, !tbaa !14
  %indvars.iv.next315 = add nsw i64 %indvars.iv314, -1
  %214 = getelementptr inbounds float, ptr %213, i64 %indvars.iv.next315
  %215 = load float, ptr %214, align 4, !tbaa !15
  %216 = fcmp oeq float %215, 2.550000e+02
  br i1 %216, label %249, label %217

217:                                              ; preds = %209
  %218 = getelementptr inbounds float, ptr %213, i64 %indvars.iv314
  %219 = load float, ptr %218, align 4, !tbaa !15
  %220 = fcmp oeq float %219, 2.550000e+02
  br i1 %220, label %249, label %221

221:                                              ; preds = %217
  %222 = add nuw nsw i64 %indvars.iv314, 1
  %223 = getelementptr inbounds float, ptr %213, i64 %222
  %224 = load float, ptr %223, align 4, !tbaa !15
  %225 = fcmp oeq float %224, 2.550000e+02
  br i1 %225, label %249, label %226

226:                                              ; preds = %221
  %227 = load ptr, ptr %211, align 8, !tbaa !14
  %228 = getelementptr inbounds float, ptr %227, i64 %indvars.iv.next315
  %229 = load float, ptr %228, align 4, !tbaa !15
  %230 = fcmp oeq float %229, 2.550000e+02
  br i1 %230, label %249, label %231

231:                                              ; preds = %226
  %232 = getelementptr inbounds float, ptr %227, i64 %222
  %233 = load float, ptr %232, align 4, !tbaa !15
  %234 = fcmp oeq float %233, 2.550000e+02
  br i1 %234, label %249, label %235

235:                                              ; preds = %231
  %236 = getelementptr inbounds i8, ptr %211, i64 8
  %237 = load ptr, ptr %236, align 8, !tbaa !14
  %238 = getelementptr inbounds float, ptr %237, i64 %indvars.iv.next315
  %239 = load float, ptr %238, align 4, !tbaa !15
  %240 = fcmp oeq float %239, 2.550000e+02
  br i1 %240, label %249, label %241

241:                                              ; preds = %235
  %242 = getelementptr inbounds float, ptr %237, i64 %indvars.iv314
  %243 = load float, ptr %242, align 4, !tbaa !15
  %244 = fcmp oeq float %243, 2.550000e+02
  br i1 %244, label %249, label %245

245:                                              ; preds = %241
  %246 = getelementptr inbounds float, ptr %237, i64 %222
  %247 = load float, ptr %246, align 4, !tbaa !15
  %248 = fcmp oeq float %247, 2.550000e+02
  br i1 %248, label %249, label %258

249:                                              ; preds = %245, %241, %235, %231, %226, %221, %217, %209
  %250 = load ptr, ptr %75, align 8, !tbaa !11
  %251 = getelementptr inbounds ptr, ptr %250, i64 %indvars.iv317
  %252 = load ptr, ptr %251, align 8, !tbaa !14
  %253 = getelementptr inbounds float, ptr %252, i64 %indvars.iv314
  %254 = load float, ptr %253, align 4, !tbaa !15
  %255 = fptosi float %254 to i32
  %256 = sext i32 %255 to i64
  %257 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %256) #9
  store i32 1, ptr %257, align 4, !tbaa !5
  br label %258

258:                                              ; preds = %245, %249
  %259 = icmp ugt i64 %indvars.iv314, 1
  br i1 %259, label %209, label %._crit_edge282, !llvm.loop !21

.preheader263:                                    ; preds = %._crit_edge290, %._crit_edge286
  %260 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %.not302 = icmp eq i32 %260, 0
  br i1 %.not302, label %._crit_edge298, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %.preheader263
  %261 = getelementptr inbounds i8, ptr %2, i64 16
  %262 = getelementptr inbounds i8, ptr %9, i64 16
  br label %.preheader

263:                                              ; preds = %.lr.ph293, %._crit_edge290
  %indvars.iv323 = phi i64 [ %202, %.lr.ph293 ], [ %indvars.iv.next324, %._crit_edge290 ]
  %264 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %2)
  %265 = add i32 %264, -2
  %266 = icmp sgt i32 %265, 0
  br i1 %266, label %.lr.ph289, label %._crit_edge290

.lr.ph289:                                        ; preds = %263
  %267 = zext nneg i32 %265 to i64
  br label %269

._crit_edge290:                                   ; preds = %287, %263
  %indvars.iv.next324 = add nsw i64 %indvars.iv323, -1
  %268 = icmp sgt i64 %indvars.iv323, 1
  br i1 %268, label %263, label %.preheader263, !llvm.loop !22

269:                                              ; preds = %.lr.ph289, %287
  %indvars.iv320 = phi i64 [ %267, %.lr.ph289 ], [ %indvars.iv.next321, %287 ]
  %270 = load ptr, ptr %200, align 8, !tbaa !11
  %271 = getelementptr inbounds ptr, ptr %270, i64 %indvars.iv323
  %272 = load ptr, ptr %271, align 8, !tbaa !14
  %273 = getelementptr inbounds float, ptr %272, i64 %indvars.iv320
  %274 = load float, ptr %273, align 4, !tbaa !15
  %275 = fcmp ogt float %274, 0.000000e+00
  br i1 %275, label %276, label %287

276:                                              ; preds = %269
  %277 = fptosi float %274 to i32
  %278 = sext i32 %277 to i64
  %279 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %278) #9
  %280 = load i32, ptr %279, align 4, !tbaa !5
  %281 = icmp eq i32 %280, 1
  br i1 %281, label %282, label %287

282:                                              ; preds = %276
  %283 = load ptr, ptr %201, align 8, !tbaa !11
  %284 = getelementptr inbounds ptr, ptr %283, i64 %indvars.iv323
  %285 = load ptr, ptr %284, align 8, !tbaa !14
  %286 = getelementptr inbounds float, ptr %285, i64 %indvars.iv320
  store float 2.550000e+02, ptr %286, align 4, !tbaa !15
  br label %287

287:                                              ; preds = %269, %276, %282
  %indvars.iv.next321 = add nsw i64 %indvars.iv320, -1
  %288 = icmp sgt i64 %indvars.iv320, 1
  br i1 %288, label %269, label %._crit_edge290, !llvm.loop !23

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge296
  %indvars.iv329 = phi i64 [ 0, %.preheader.lr.ph ], [ %indvars.iv.next330, %._crit_edge296 ]
  %289 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %.not303 = icmp eq i32 %289, 0
  br i1 %.not303, label %._crit_edge296, label %.lr.ph295

._crit_edge296:                                   ; preds = %305, %.preheader
  %indvars.iv.next330 = add nuw nsw i64 %indvars.iv329, 1
  %290 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %291 = zext i32 %290 to i64
  %292 = icmp ult i64 %indvars.iv.next330, %291
  br i1 %292, label %.preheader, label %._crit_edge298, !llvm.loop !24

.lr.ph295:                                        ; preds = %.preheader, %305
  %indvars.iv326 = phi i64 [ %indvars.iv.next327, %305 ], [ 0, %.preheader ]
  %293 = load ptr, ptr %261, align 8, !tbaa !11
  %294 = getelementptr inbounds ptr, ptr %293, i64 %indvars.iv329
  %295 = load ptr, ptr %294, align 8, !tbaa !14
  %296 = getelementptr inbounds float, ptr %295, i64 %indvars.iv326
  %297 = load float, ptr %296, align 4, !tbaa !15
  %298 = fcmp ogt float %297, 0.000000e+00
  br i1 %298, label %299, label %305

299:                                              ; preds = %.lr.ph295
  %300 = load ptr, ptr %262, align 8, !tbaa !11
  %301 = getelementptr inbounds ptr, ptr %300, i64 %indvars.iv329
  %302 = load ptr, ptr %301, align 8, !tbaa !14
  %303 = getelementptr inbounds float, ptr %302, i64 %indvars.iv326
  %304 = load float, ptr %303, align 4, !tbaa !15
  store float %304, ptr %296, align 4, !tbaa !15
  br label %305

305:                                              ; preds = %.lr.ph295, %299
  %indvars.iv.next327 = add nuw nsw i64 %indvars.iv326, 1
  %306 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %9)
  %307 = zext i32 %306 to i64
  %308 = icmp ult i64 %indvars.iv.next327, %307
  br i1 %308, label %.lr.ph295, label %._crit_edge296, !llvm.loop !25

._crit_edge298:                                   ; preds = %._crit_edge296, %.preheader263
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %9) #9
  call void @_ZdlPvm(ptr noundef nonnull %9, i64 noundef 80) #10
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %13) #9
  call void @_ZdlPvm(ptr noundef nonnull %13, i64 noundef 80) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  ret void

309:                                              ; preds = %83, %191, %77
  %.pn.pn = phi { ptr, i32 } [ %78, %77 ], [ %192, %191 ], [ %84, %83 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #9
  br label %310

310:                                              ; preds = %23, %309, %21
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %22, %21 ], [ %.pn.pn, %309 ], [ %24, %23 ]
  resume { ptr, i32 } %.pn.pn.pn.pn
}

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { inlinehint 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 #4 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nounwind 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 #8 = { builtin allocsize(0) }
attributes #9 = { nounwind }
attributes #10 = { builtin 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}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !13, i64 16}
!12 = !{!"_ZTS12ImageContent", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}


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