; LLVM IR from ox-vgg/vise :: src/search_engine/relja_retrival/external/KMCode_relja/descriptor/AffineRegion._7c0e33a0 (fffi)

; 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.ImageContent = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.Matrix = type { ptr, ptr, i32, i32 }

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare void @_Z2dXP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) #7

declare void @_Z2dYP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) #7

declare noundef float @_Z7smoothfiiP12ImageContentf(i32 noundef, i32 noundef, ptr noundef, float noundef) #7

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_Z9harris_miP12ImageContentP6MatrixRiS3_fffi(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %3, float noundef %4, float noundef %5, float noundef %6, i32 noundef %7) #6 personality ptr @__gxx_personality_v0 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca i32, align 4
  %18 = alloca float, align 4
  %19 = alloca float, 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 i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca float, align 4
  %39 = alloca i32, align 4
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca float, align 4
  %46 = alloca float, align 4
  %47 = alloca float, align 4
  %48 = alloca float, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store float %4, ptr %14, align 4, !tbaa !9
  store float %5, ptr %15, align 4, !tbaa !9
  store float %6, ptr %16, align 4, !tbaa !9
  store i32 %7, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  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
  %53 = load ptr, ptr %10, align 8, !tbaa !5
  %54 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %53)
  store i32 %54, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  %55 = load ptr, ptr %10, align 8, !tbaa !5
  %56 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %55)
  store i32 %56, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  %57 = load i32, ptr %25, align 4, !tbaa !11
  %58 = ashr i32 %57, 1
  store i32 %58, ptr %28, align 4, !tbaa !11
  store i32 %58, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %59 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %60 = load i32, ptr %25, align 4, !tbaa !11
  %61 = load i32, ptr %26, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %59, i32 noundef %60, i32 noundef %61)
          to label %62 unwind label %160

62:                                               ; preds = %8
  store ptr %59, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %63 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %64 = load i32, ptr %25, align 4, !tbaa !11
  %65 = load i32, ptr %26, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %63, i32 noundef %64, i32 noundef %65)
          to label %66 unwind label %164

66:                                               ; preds = %62
  store ptr %63, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %67 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %68 = load i32, ptr %25, align 4, !tbaa !11
  %69 = load i32, ptr %26, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %67, i32 noundef %68, i32 noundef %69)
          to label %70 unwind label %168

70:                                               ; preds = %66
  store ptr %67, ptr %33, align 8, !tbaa !5
  %71 = load ptr, ptr %10, align 8, !tbaa !5
  %72 = load ptr, ptr %32, align 8, !tbaa !5
  %73 = load float, ptr %14, align 4, !tbaa !9
  call void @_Z2dXP12ImageContentS0_f(ptr noundef %71, ptr noundef %72, float noundef %73)
  %74 = load ptr, ptr %10, align 8, !tbaa !5
  %75 = load ptr, ptr %33, align 8, !tbaa !5
  %76 = load float, ptr %14, align 4, !tbaa !9
  call void @_Z2dYP12ImageContentS0_f(ptr noundef %74, ptr noundef %75, float noundef %76)
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %77 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %78 = load i32, ptr %25, align 4, !tbaa !11
  %79 = load i32, ptr %26, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %77, i32 noundef %78, i32 noundef %79)
          to label %80 unwind label %172

80:                                               ; preds = %70
  store ptr %77, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #8
  store i32 0, ptr %37, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #8
  %81 = load float, ptr %14, align 4, !tbaa !9
  store float %81, ptr %38, align 4, !tbaa !9
  store i32 0, ptr %35, align 4, !tbaa !11
  br label %82

82:                                               ; preds = %177, %80
  %83 = load i32, ptr %35, align 4, !tbaa !11
  %84 = load i32, ptr %25, align 4, !tbaa !11
  %85 = icmp slt i32 %83, %84
  br i1 %85, label %86, label %180

86:                                               ; preds = %82
  store i32 0, ptr %36, align 4, !tbaa !11
  br label %87

87:                                               ; preds = %157, %86
  %88 = load i32, ptr %36, align 4, !tbaa !11
  %89 = load i32, ptr %26, align 4, !tbaa !11
  %90 = icmp slt i32 %88, %89
  br i1 %90, label %91, label %176

91:                                               ; preds = %87
  %92 = load float, ptr %38, align 4, !tbaa !9
  %93 = load ptr, ptr %32, align 8, !tbaa !5
  %94 = getelementptr inbounds %class.ImageContent, ptr %93, i32 0, i32 4
  %95 = load ptr, ptr %94, align 8, !tbaa !13
  %96 = load i32, ptr %35, align 4, !tbaa !11
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds ptr, ptr %95, i64 %97
  %99 = load ptr, ptr %98, align 8, !tbaa !5
  %100 = load i32, ptr %36, align 4, !tbaa !11
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds float, ptr %99, i64 %101
  %103 = load float, ptr %102, align 4, !tbaa !9
  %104 = fmul float %92, %103
  store float %104, ptr %18, align 4, !tbaa !9
  %105 = load float, ptr %38, align 4, !tbaa !9
  %106 = load ptr, ptr %33, align 8, !tbaa !5
  %107 = getelementptr inbounds %class.ImageContent, ptr %106, i32 0, i32 4
  %108 = load ptr, ptr %107, align 8, !tbaa !13
  %109 = load i32, ptr %35, align 4, !tbaa !11
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds ptr, ptr %108, i64 %110
  %112 = load ptr, ptr %111, align 8, !tbaa !5
  %113 = load i32, ptr %36, align 4, !tbaa !11
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds float, ptr %112, i64 %114
  %116 = load float, ptr %115, align 4, !tbaa !9
  %117 = fmul float %105, %116
  store float %117, ptr %19, align 4, !tbaa !9
  %118 = load float, ptr %18, align 4, !tbaa !9
  %119 = load float, ptr %18, align 4, !tbaa !9
  %120 = fmul float %118, %119
  %121 = load ptr, ptr %32, align 8, !tbaa !5
  %122 = getelementptr inbounds %class.ImageContent, ptr %121, i32 0, i32 4
  %123 = load ptr, ptr %122, align 8, !tbaa !13
  %124 = load i32, ptr %35, align 4, !tbaa !11
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds ptr, ptr %123, i64 %125
  %127 = load ptr, ptr %126, align 8, !tbaa !5
  %128 = load i32, ptr %36, align 4, !tbaa !11
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds float, ptr %127, i64 %129
  store float %120, ptr %130, align 4, !tbaa !9
  %131 = load float, ptr %19, align 4, !tbaa !9
  %132 = load float, ptr %19, align 4, !tbaa !9
  %133 = fmul float %131, %132
  %134 = load ptr, ptr %33, align 8, !tbaa !5
  %135 = getelementptr inbounds %class.ImageContent, ptr %134, i32 0, i32 4
  %136 = load ptr, ptr %135, align 8, !tbaa !13
  %137 = load i32, ptr %35, align 4, !tbaa !11
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds ptr, ptr %136, i64 %138
  %140 = load ptr, ptr %139, align 8, !tbaa !5
  %141 = load i32, ptr %36, align 4, !tbaa !11
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds float, ptr %140, i64 %142
  store float %133, ptr %143, align 4, !tbaa !9
  %144 = load float, ptr %18, align 4, !tbaa !9
  %145 = load float, ptr %19, align 4, !tbaa !9
  %146 = fmul float %144, %145
  %147 = load ptr, ptr %34, align 8, !tbaa !5
  %148 = getelementptr inbounds %class.ImageContent, ptr %147, i32 0, i32 4
  %149 = load ptr, ptr %148, align 8, !tbaa !13
  %150 = load i32, ptr %35, align 4, !tbaa !11
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds ptr, ptr %149, i64 %151
  %153 = load ptr, ptr %152, align 8, !tbaa !5
  %154 = load i32, ptr %36, align 4, !tbaa !11
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds float, ptr %153, i64 %155
  store float %146, ptr %156, align 4, !tbaa !9
  br label %157

157:                                              ; preds = %91
  %158 = load i32, ptr %36, align 4, !tbaa !11
  %159 = add nsw i32 %158, 1
  store i32 %159, ptr %36, align 4, !tbaa !11
  br label %87, !llvm.loop !15

160:                                              ; preds = %8
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %30, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %31, align 4
  call void @_ZdlPvm(ptr noundef %59, i64 noundef 80) #10
  br label %669

164:                                              ; preds = %62
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %30, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %31, align 4
  call void @_ZdlPvm(ptr noundef %63, i64 noundef 80) #10
  br label %668

168:                                              ; preds = %66
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %30, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %31, align 4
  call void @_ZdlPvm(ptr noundef %67, i64 noundef 80) #10
  br label %667

172:                                              ; preds = %70
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %30, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %31, align 4
  call void @_ZdlPvm(ptr noundef %77, i64 noundef 80) #10
  br label %666

176:                                              ; preds = %87
  br label %177

177:                                              ; preds = %176
  %178 = load i32, ptr %35, align 4, !tbaa !11
  %179 = add nsw i32 %178, 1
  store i32 %179, ptr %35, align 4, !tbaa !11
  br label %82, !llvm.loop !17

180:                                              ; preds = %82
  %181 = load i32, ptr %17, align 4, !tbaa !11
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %183, label %242

183:                                              ; preds = %180
  %184 = load i32, ptr %27, align 4, !tbaa !11
  %185 = load i32, ptr %28, align 4, !tbaa !11
  %186 = load ptr, ptr %32, align 8, !tbaa !5
  %187 = load float, ptr %15, align 4, !tbaa !9
  %188 = call noundef float @_Z7smoothfiiP12ImageContentf(i32 noundef %184, i32 noundef %185, ptr noundef %186, float noundef %187)
  %189 = fpext float %188 to double
  %190 = load ptr, ptr %11, align 8, !tbaa !5
  %191 = getelementptr inbounds %class.Matrix, ptr %190, i32 0, i32 1
  %192 = load ptr, ptr %191, align 8, !tbaa !18
  %193 = getelementptr inbounds ptr, ptr %192, i64 1
  %194 = load ptr, ptr %193, align 8, !tbaa !5
  %195 = getelementptr inbounds double, ptr %194, i64 1
  store double %189, ptr %195, align 8, !tbaa !20
  %196 = load i32, ptr %27, align 4, !tbaa !11
  %197 = load i32, ptr %28, align 4, !tbaa !11
  %198 = load ptr, ptr %33, align 8, !tbaa !5
  %199 = load float, ptr %15, align 4, !tbaa !9
  %200 = call noundef float @_Z7smoothfiiP12ImageContentf(i32 noundef %196, i32 noundef %197, ptr noundef %198, float noundef %199)
  %201 = fpext float %200 to double
  %202 = load ptr, ptr %11, align 8, !tbaa !5
  %203 = getelementptr inbounds %class.Matrix, ptr %202, i32 0, i32 1
  %204 = load ptr, ptr %203, align 8, !tbaa !18
  %205 = getelementptr inbounds ptr, ptr %204, i64 2
  %206 = load ptr, ptr %205, align 8, !tbaa !5
  %207 = getelementptr inbounds double, ptr %206, i64 2
  store double %201, ptr %207, align 8, !tbaa !20
  %208 = load i32, ptr %27, align 4, !tbaa !11
  %209 = load i32, ptr %28, align 4, !tbaa !11
  %210 = load ptr, ptr %34, align 8, !tbaa !5
  %211 = load float, ptr %15, align 4, !tbaa !9
  %212 = call noundef float @_Z7smoothfiiP12ImageContentf(i32 noundef %208, i32 noundef %209, ptr noundef %210, float noundef %211)
  %213 = fpext float %212 to double
  %214 = load ptr, ptr %11, align 8, !tbaa !5
  %215 = getelementptr inbounds %class.Matrix, ptr %214, i32 0, i32 1
  %216 = load ptr, ptr %215, align 8, !tbaa !18
  %217 = getelementptr inbounds ptr, ptr %216, i64 1
  %218 = load ptr, ptr %217, align 8, !tbaa !5
  %219 = getelementptr inbounds double, ptr %218, i64 2
  store double %213, ptr %219, align 8, !tbaa !20
  %220 = load ptr, ptr %11, align 8, !tbaa !5
  %221 = getelementptr inbounds %class.Matrix, ptr %220, i32 0, i32 1
  %222 = load ptr, ptr %221, align 8, !tbaa !18
  %223 = getelementptr inbounds ptr, ptr %222, i64 2
  %224 = load ptr, ptr %223, align 8, !tbaa !5
  %225 = getelementptr inbounds double, ptr %224, i64 1
  store double %213, ptr %225, align 8, !tbaa !20
  %226 = load ptr, ptr %32, align 8, !tbaa !5
  %227 = icmp eq ptr %226, null
  br i1 %227, label %229, label %228

228:                                              ; preds = %183
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %226) #8
  call void @_ZdlPvm(ptr noundef %226, i64 noundef 80) #10
  br label %229

229:                                              ; preds = %228, %183
  %230 = load ptr, ptr %33, align 8, !tbaa !5
  %231 = icmp eq ptr %230, null
  br i1 %231, label %233, label %232

232:                                              ; preds = %229
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %230) #8
  call void @_ZdlPvm(ptr noundef %230, i64 noundef 80) #10
  br label %233

233:                                              ; preds = %232, %229
  %234 = load ptr, ptr %34, align 8, !tbaa !5
  %235 = icmp eq ptr %234, null
  br i1 %235, label %237, label %236

236:                                              ; preds = %233
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %234) #8
  call void @_ZdlPvm(ptr noundef %234, i64 noundef 80) #10
  br label %237

237:                                              ; preds = %236, %233
  %238 = load ptr, ptr %29, align 8, !tbaa !5
  %239 = icmp eq ptr %238, null
  br i1 %239, label %241, label %240

240:                                              ; preds = %237
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %238) #8
  call void @_ZdlPvm(ptr noundef %238, i64 noundef 80) #10
  br label %241

241:                                              ; preds = %240, %237
  store i32 1, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %664

242:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %243 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %244 = load i32, ptr %25, align 4, !tbaa !11
  %245 = load i32, ptr %26, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %243, i32 noundef %244, i32 noundef %245)
          to label %246 unwind label %286

246:                                              ; preds = %242
  store ptr %243, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %247 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %248 = load i32, ptr %25, align 4, !tbaa !11
  %249 = load i32, ptr %26, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %247, i32 noundef %248, i32 noundef %249)
          to label %250 unwind label %290

250:                                              ; preds = %246
  store ptr %247, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %251 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %252 = load i32, ptr %25, align 4, !tbaa !11
  %253 = load i32, ptr %26, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %251, i32 noundef %252, i32 noundef %253)
          to label %254 unwind label %294

254:                                              ; preds = %250
  store ptr %251, ptr %42, align 8, !tbaa !5
  %255 = load ptr, ptr %32, align 8, !tbaa !5
  %256 = load ptr, ptr %40, align 8, !tbaa !5
  %257 = load float, ptr %15, align 4, !tbaa !9
  call void @_Z6smoothP12ImageContentS0_f(ptr noundef %255, ptr noundef %256, float noundef %257)
  %258 = load ptr, ptr %32, align 8, !tbaa !5
  %259 = icmp eq ptr %258, null
  br i1 %259, label %261, label %260

260:                                              ; preds = %254
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %258) #8
  call void @_ZdlPvm(ptr noundef %258, i64 noundef 80) #10
  br label %261

261:                                              ; preds = %260, %254
  %262 = load ptr, ptr %33, align 8, !tbaa !5
  %263 = load ptr, ptr %41, align 8, !tbaa !5
  %264 = load float, ptr %15, align 4, !tbaa !9
  call void @_Z6smoothP12ImageContentS0_f(ptr noundef %262, ptr noundef %263, float noundef %264)
  %265 = load ptr, ptr %33, align 8, !tbaa !5
  %266 = icmp eq ptr %265, null
  br i1 %266, label %268, label %267

267:                                              ; preds = %261
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %265) #8
  call void @_ZdlPvm(ptr noundef %265, i64 noundef 80) #10
  br label %268

268:                                              ; preds = %267, %261
  %269 = load ptr, ptr %34, align 8, !tbaa !5
  %270 = load ptr, ptr %42, align 8, !tbaa !5
  %271 = load float, ptr %15, align 4, !tbaa !9
  call void @_Z6smoothP12ImageContentS0_f(ptr noundef %269, ptr noundef %270, float noundef %271)
  %272 = load ptr, ptr %34, align 8, !tbaa !5
  %273 = icmp eq ptr %272, null
  br i1 %273, label %275, label %274

274:                                              ; preds = %268
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %272) #8
  call void @_ZdlPvm(ptr noundef %272, i64 noundef 80) #10
  br label %275

275:                                              ; preds = %274, %268
  store i32 0, ptr %35, align 4, !tbaa !11
  br label %276

276:                                              ; preds = %363, %275
  %277 = load i32, ptr %35, align 4, !tbaa !11
  %278 = load i32, ptr %25, align 4, !tbaa !11
  %279 = icmp slt i32 %277, %278
  br i1 %279, label %280, label %366

280:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  store i32 0, ptr %43, align 4, !tbaa !11
  br label %281

281:                                              ; preds = %359, %280
  %282 = load i32, ptr %43, align 4, !tbaa !11
  %283 = load i32, ptr %26, align 4, !tbaa !11
  %284 = icmp slt i32 %282, %283
  br i1 %284, label %298, label %285

285:                                              ; preds = %281
  store i32 11, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  br label %362

286:                                              ; preds = %242
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %30, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %31, align 4
  call void @_ZdlPvm(ptr noundef %243, i64 noundef 80) #10
  br label %663

290:                                              ; preds = %246
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %30, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %31, align 4
  call void @_ZdlPvm(ptr noundef %247, i64 noundef 80) #10
  br label %662

294:                                              ; preds = %250
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %30, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %31, align 4
  call void @_ZdlPvm(ptr noundef %251, i64 noundef 80) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %662

298:                                              ; preds = %281
  %299 = load ptr, ptr %40, align 8, !tbaa !5
  %300 = getelementptr inbounds %class.ImageContent, ptr %299, i32 0, i32 4
  %301 = load ptr, ptr %300, align 8, !tbaa !13
  %302 = load i32, ptr %35, align 4, !tbaa !11
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds ptr, ptr %301, i64 %303
  %305 = load ptr, ptr %304, align 8, !tbaa !5
  %306 = load i32, ptr %43, align 4, !tbaa !11
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds float, ptr %305, i64 %307
  %309 = load float, ptr %308, align 4, !tbaa !9
  store float %309, ptr %20, align 4, !tbaa !9
  %310 = load ptr, ptr %41, align 8, !tbaa !5
  %311 = getelementptr inbounds %class.ImageContent, ptr %310, i32 0, i32 4
  %312 = load ptr, ptr %311, align 8, !tbaa !13
  %313 = load i32, ptr %35, align 4, !tbaa !11
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds ptr, ptr %312, i64 %314
  %316 = load ptr, ptr %315, align 8, !tbaa !5
  %317 = load i32, ptr %43, align 4, !tbaa !11
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds float, ptr %316, i64 %318
  %320 = load float, ptr %319, align 4, !tbaa !9
  store float %320, ptr %21, align 4, !tbaa !9
  %321 = load ptr, ptr %42, align 8, !tbaa !5
  %322 = getelementptr inbounds %class.ImageContent, ptr %321, i32 0, i32 4
  %323 = load ptr, ptr %322, align 8, !tbaa !13
  %324 = load i32, ptr %35, align 4, !tbaa !11
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds ptr, ptr %323, i64 %325
  %327 = load ptr, ptr %326, align 8, !tbaa !5
  %328 = load i32, ptr %43, align 4, !tbaa !11
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds float, ptr %327, i64 %329
  %331 = load float, ptr %330, align 4, !tbaa !9
  store float %331, ptr %22, align 4, !tbaa !9
  %332 = load float, ptr %20, align 4, !tbaa !9
  %333 = load float, ptr %21, align 4, !tbaa !9
  %334 = load float, ptr %22, align 4, !tbaa !9
  %335 = load float, ptr %22, align 4, !tbaa !9
  %336 = fmul float %334, %335
  %337 = fneg float %336
  %338 = call float @llvm.fmuladd.f32(float %332, float %333, float %337)
  store float %338, ptr %23, align 4, !tbaa !9
  %339 = load float, ptr %20, align 4, !tbaa !9
  %340 = load float, ptr %21, align 4, !tbaa !9
  %341 = fadd float %339, %340
  store float %341, ptr %24, align 4, !tbaa !9
  %342 = load float, ptr %23, align 4, !tbaa !9
  %343 = load float, ptr %16, align 4, !tbaa !9
  %344 = load float, ptr %24, align 4, !tbaa !9
  %345 = load float, ptr %24, align 4, !tbaa !9
  %346 = fmul float %344, %345
  %347 = fneg float %343
  %348 = call float @llvm.fmuladd.f32(float %347, float %346, float %342)
  %349 = load ptr, ptr %29, 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 %35, align 4, !tbaa !11
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds ptr, ptr %351, i64 %353
  %355 = load ptr, ptr %354, align 8, !tbaa !5
  %356 = load i32, ptr %43, align 4, !tbaa !11
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds float, ptr %355, i64 %357
  store float %348, ptr %358, align 4, !tbaa !9
  br label %359

359:                                              ; preds = %298
  %360 = load i32, ptr %43, align 4, !tbaa !11
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr %43, align 4, !tbaa !11
  br label %281, !llvm.loop !22

362:                                              ; preds = %285
  br label %363

363:                                              ; preds = %362
  %364 = load i32, ptr %35, align 4, !tbaa !11
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %35, align 4, !tbaa !11
  br label %276, !llvm.loop !23

366:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  store i32 3, ptr %44, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #8
  %367 = load ptr, ptr %29, align 8, !tbaa !5
  %368 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %367)
  %369 = uitofp i32 %368 to double
  %370 = fdiv double %369, 2.000000e+00
  %371 = fptrunc double %370 to float
  store float %371, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  %372 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %372, align 4, !tbaa !11
  %373 = load ptr, ptr %13, align 8, !tbaa !5
  store i32 0, ptr %373, align 4, !tbaa !11
  %374 = load float, ptr %48, align 4, !tbaa !9
  %375 = load float, ptr %48, align 4, !tbaa !9
  %376 = fmul float %375, %374
  store float %376, ptr %48, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  %377 = load i32, ptr %44, align 4, !tbaa !11
  store i32 %377, ptr %51, align 4, !tbaa !11
  br label %378

378:                                              ; preds = %563, %366
  %379 = load i32, ptr %51, align 4, !tbaa !11
  %380 = load i32, ptr %44, align 4, !tbaa !11
  %381 = add nsw i32 %379, %380
  %382 = load i32, ptr %25, align 4, !tbaa !11
  %383 = icmp slt i32 %381, %382
  br i1 %383, label %385, label %384

384:                                              ; preds = %378
  store i32 14, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  br label %566

385:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #8
  %386 = load i32, ptr %44, align 4, !tbaa !11
  store i32 %386, ptr %52, align 4, !tbaa !11
  br label %387

387:                                              ; preds = %559, %385
  %388 = load i32, ptr %52, align 4, !tbaa !11
  %389 = load i32, ptr %44, align 4, !tbaa !11
  %390 = add nsw i32 %388, %389
  %391 = load i32, ptr %26, align 4, !tbaa !11
  %392 = icmp slt i32 %390, %391
  br i1 %392, label %394, label %393

393:                                              ; preds = %387
  store i32 17, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #8
  br label %562

394:                                              ; preds = %387
  %395 = load ptr, ptr %29, align 8, !tbaa !5
  %396 = getelementptr inbounds %class.ImageContent, ptr %395, i32 0, i32 4
  %397 = load ptr, ptr %396, align 8, !tbaa !13
  %398 = load i32, ptr %51, align 4, !tbaa !11
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds ptr, ptr %397, i64 %399
  %401 = load ptr, ptr %400, align 8, !tbaa !5
  %402 = load i32, ptr %52, align 4, !tbaa !11
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds float, ptr %401, i64 %403
  %405 = load float, ptr %404, align 4, !tbaa !9
  store float %405, ptr %46, align 4, !tbaa !9
  %406 = load float, ptr %46, align 4, !tbaa !9
  %407 = load ptr, ptr %29, align 8, !tbaa !5
  %408 = getelementptr inbounds %class.ImageContent, ptr %407, i32 0, i32 4
  %409 = load ptr, ptr %408, align 8, !tbaa !13
  %410 = load i32, ptr %51, align 4, !tbaa !11
  %411 = sub nsw i32 %410, 1
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds ptr, ptr %409, i64 %412
  %414 = load ptr, ptr %413, align 8, !tbaa !5
  %415 = load i32, ptr %52, align 4, !tbaa !11
  %416 = sub nsw i32 %415, 1
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds float, ptr %414, i64 %417
  %419 = load float, ptr %418, align 4, !tbaa !9
  %420 = fcmp ogt float %406, %419
  br i1 %420, label %421, label %558

421:                                              ; preds = %394
  %422 = load float, ptr %46, align 4, !tbaa !9
  %423 = load ptr, ptr %29, align 8, !tbaa !5
  %424 = getelementptr inbounds %class.ImageContent, ptr %423, i32 0, i32 4
  %425 = load ptr, ptr %424, align 8, !tbaa !13
  %426 = load i32, ptr %51, align 4, !tbaa !11
  %427 = sub nsw i32 %426, 1
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds ptr, ptr %425, i64 %428
  %430 = load ptr, ptr %429, align 8, !tbaa !5
  %431 = load i32, ptr %52, align 4, !tbaa !11
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds float, ptr %430, i64 %432
  %434 = load float, ptr %433, align 4, !tbaa !9
  %435 = fcmp ogt float %422, %434
  br i1 %435, label %436, label %558

436:                                              ; preds = %421
  %437 = load float, ptr %46, align 4, !tbaa !9
  %438 = load ptr, ptr %29, align 8, !tbaa !5
  %439 = getelementptr inbounds %class.ImageContent, ptr %438, i32 0, i32 4
  %440 = load ptr, ptr %439, align 8, !tbaa !13
  %441 = load i32, ptr %51, align 4, !tbaa !11
  %442 = sub nsw i32 %441, 1
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds ptr, ptr %440, i64 %443
  %445 = load ptr, ptr %444, align 8, !tbaa !5
  %446 = load i32, ptr %52, align 4, !tbaa !11
  %447 = add nsw i32 %446, 1
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds float, ptr %445, i64 %448
  %450 = load float, ptr %449, align 4, !tbaa !9
  %451 = fcmp ogt float %437, %450
  br i1 %451, label %452, label %558

452:                                              ; preds = %436
  %453 = load float, ptr %46, align 4, !tbaa !9
  %454 = load ptr, ptr %29, align 8, !tbaa !5
  %455 = getelementptr inbounds %class.ImageContent, ptr %454, i32 0, i32 4
  %456 = load ptr, ptr %455, align 8, !tbaa !13
  %457 = load i32, ptr %51, align 4, !tbaa !11
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds ptr, ptr %456, i64 %458
  %460 = load ptr, ptr %459, align 8, !tbaa !5
  %461 = load i32, ptr %52, align 4, !tbaa !11
  %462 = sub nsw i32 %461, 1
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds float, ptr %460, i64 %463
  %465 = load float, ptr %464, align 4, !tbaa !9
  %466 = fcmp ogt float %453, %465
  br i1 %466, label %467, label %558

467:                                              ; preds = %452
  %468 = load float, ptr %46, align 4, !tbaa !9
  %469 = load ptr, ptr %29, align 8, !tbaa !5
  %470 = getelementptr inbounds %class.ImageContent, ptr %469, i32 0, i32 4
  %471 = load ptr, ptr %470, align 8, !tbaa !13
  %472 = load i32, ptr %51, align 4, !tbaa !11
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds ptr, ptr %471, i64 %473
  %475 = load ptr, ptr %474, align 8, !tbaa !5
  %476 = load i32, ptr %52, align 4, !tbaa !11
  %477 = add nsw i32 %476, 1
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds float, ptr %475, i64 %478
  %480 = load float, ptr %479, align 4, !tbaa !9
  %481 = fcmp ogt float %468, %480
  br i1 %481, label %482, label %558

482:                                              ; preds = %467
  %483 = load float, ptr %46, align 4, !tbaa !9
  %484 = load ptr, ptr %29, align 8, !tbaa !5
  %485 = getelementptr inbounds %class.ImageContent, ptr %484, i32 0, i32 4
  %486 = load ptr, ptr %485, align 8, !tbaa !13
  %487 = load i32, ptr %51, align 4, !tbaa !11
  %488 = add nsw i32 %487, 1
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds ptr, ptr %486, i64 %489
  %491 = load ptr, ptr %490, align 8, !tbaa !5
  %492 = load i32, ptr %52, align 4, !tbaa !11
  %493 = sub nsw i32 %492, 1
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds float, ptr %491, i64 %494
  %496 = load float, ptr %495, align 4, !tbaa !9
  %497 = fcmp ogt float %483, %496
  br i1 %497, label %498, label %558

498:                                              ; preds = %482
  %499 = load float, ptr %46, align 4, !tbaa !9
  %500 = load ptr, ptr %29, 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 %51, align 4, !tbaa !11
  %504 = add nsw i32 %503, 1
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds ptr, ptr %502, i64 %505
  %507 = load ptr, ptr %506, align 8, !tbaa !5
  %508 = load i32, ptr %52, align 4, !tbaa !11
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds float, ptr %507, i64 %509
  %511 = load float, ptr %510, align 4, !tbaa !9
  %512 = fcmp ogt float %499, %511
  br i1 %512, label %513, label %558

513:                                              ; preds = %498
  %514 = load float, ptr %46, align 4, !tbaa !9
  %515 = load ptr, ptr %29, align 8, !tbaa !5
  %516 = getelementptr inbounds %class.ImageContent, ptr %515, i32 0, i32 4
  %517 = load ptr, ptr %516, align 8, !tbaa !13
  %518 = load i32, ptr %51, align 4, !tbaa !11
  %519 = add nsw i32 %518, 1
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds ptr, ptr %517, i64 %520
  %522 = load ptr, ptr %521, align 8, !tbaa !5
  %523 = load i32, ptr %52, align 4, !tbaa !11
  %524 = add nsw i32 %523, 1
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds float, ptr %522, i64 %525
  %527 = load float, ptr %526, align 4, !tbaa !9
  %528 = fcmp ogt float %514, %527
  br i1 %528, label %529, label %558

529:                                              ; preds = %513
  %530 = load float, ptr %46, align 4, !tbaa !9
  %531 = fcmp ogt float %530, 2.000000e+02
  br i1 %531, label %532, label %558

532:                                              ; preds = %529
  %533 = load i32, ptr %52, align 4, !tbaa !11
  %534 = load i32, ptr %27, align 4, !tbaa !11
  %535 = sub nsw i32 %533, %534
  store i32 %535, ptr %49, align 4, !tbaa !11
  %536 = load i32, ptr %51, align 4, !tbaa !11
  %537 = load i32, ptr %28, align 4, !tbaa !11
  %538 = sub nsw i32 %536, %537
  store i32 %538, ptr %50, align 4, !tbaa !11
  %539 = load i32, ptr %49, align 4, !tbaa !11
  %540 = load i32, ptr %49, align 4, !tbaa !11
  %541 = mul nsw i32 %539, %540
  %542 = load i32, ptr %50, align 4, !tbaa !11
  %543 = load i32, ptr %50, align 4, !tbaa !11
  %544 = mul nsw i32 %542, %543
  %545 = add nsw i32 %541, %544
  %546 = sitofp i32 %545 to float
  store float %546, ptr %45, align 4, !tbaa !9
  %547 = load float, ptr %45, align 4, !tbaa !9
  %548 = load float, ptr %48, align 4, !tbaa !9
  %549 = fcmp olt float %547, %548
  br i1 %549, label %550, label %557

550:                                              ; preds = %532
  %551 = load i32, ptr %49, align 4, !tbaa !11
  %552 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 %551, ptr %552, align 4, !tbaa !11
  %553 = load i32, ptr %50, align 4, !tbaa !11
  %554 = load ptr, ptr %13, align 8, !tbaa !5
  store i32 %553, ptr %554, align 4, !tbaa !11
  %555 = load float, ptr %45, align 4, !tbaa !9
  store float %555, ptr %48, align 4, !tbaa !9
  %556 = load float, ptr %46, align 4, !tbaa !9
  store float %556, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %37, align 4, !tbaa !11
  br label %557

557:                                              ; preds = %550, %532
  br label %558

558:                                              ; preds = %557, %529, %513, %498, %482, %467, %452, %436, %421, %394
  br label %559

559:                                              ; preds = %558
  %560 = load i32, ptr %52, align 4, !tbaa !11
  %561 = add nsw i32 %560, 1
  store i32 %561, ptr %52, align 4, !tbaa !11
  br label %387, !llvm.loop !24

562:                                              ; preds = %393
  br label %563

563:                                              ; preds = %562
  %564 = load i32, ptr %51, align 4, !tbaa !11
  %565 = add nsw i32 %564, 1
  store i32 %565, ptr %51, align 4, !tbaa !11
  br label %378, !llvm.loop !25

566:                                              ; preds = %384
  %567 = load ptr, ptr %40, align 8, !tbaa !5
  %568 = getelementptr inbounds %class.ImageContent, ptr %567, i32 0, i32 4
  %569 = load ptr, ptr %568, align 8, !tbaa !13
  %570 = load i32, ptr %28, align 4, !tbaa !11
  %571 = load ptr, ptr %13, align 8, !tbaa !5
  %572 = load i32, ptr %571, align 4, !tbaa !11
  %573 = add nsw i32 %570, %572
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds ptr, ptr %569, i64 %574
  %576 = load ptr, ptr %575, align 8, !tbaa !5
  %577 = load i32, ptr %27, align 4, !tbaa !11
  %578 = load ptr, ptr %12, align 8, !tbaa !5
  %579 = load i32, ptr %578, align 4, !tbaa !11
  %580 = add nsw i32 %577, %579
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds float, ptr %576, i64 %581
  %583 = load float, ptr %582, align 4, !tbaa !9
  %584 = fpext float %583 to double
  %585 = load ptr, ptr %11, align 8, !tbaa !5
  %586 = getelementptr inbounds %class.Matrix, ptr %585, i32 0, i32 1
  %587 = load ptr, ptr %586, align 8, !tbaa !18
  %588 = getelementptr inbounds ptr, ptr %587, i64 1
  %589 = load ptr, ptr %588, align 8, !tbaa !5
  %590 = getelementptr inbounds double, ptr %589, i64 1
  store double %584, ptr %590, align 8, !tbaa !20
  %591 = load ptr, ptr %41, align 8, !tbaa !5
  %592 = getelementptr inbounds %class.ImageContent, ptr %591, i32 0, i32 4
  %593 = load ptr, ptr %592, align 8, !tbaa !13
  %594 = load i32, ptr %28, align 4, !tbaa !11
  %595 = load ptr, ptr %13, align 8, !tbaa !5
  %596 = load i32, ptr %595, align 4, !tbaa !11
  %597 = add nsw i32 %594, %596
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds ptr, ptr %593, i64 %598
  %600 = load ptr, ptr %599, align 8, !tbaa !5
  %601 = load i32, ptr %27, align 4, !tbaa !11
  %602 = load ptr, ptr %12, align 8, !tbaa !5
  %603 = load i32, ptr %602, align 4, !tbaa !11
  %604 = add nsw i32 %601, %603
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds float, ptr %600, i64 %605
  %607 = load float, ptr %606, align 4, !tbaa !9
  %608 = fpext float %607 to double
  %609 = load ptr, ptr %11, align 8, !tbaa !5
  %610 = getelementptr inbounds %class.Matrix, ptr %609, i32 0, i32 1
  %611 = load ptr, ptr %610, align 8, !tbaa !18
  %612 = getelementptr inbounds ptr, ptr %611, i64 2
  %613 = load ptr, ptr %612, align 8, !tbaa !5
  %614 = getelementptr inbounds double, ptr %613, i64 2
  store double %608, ptr %614, align 8, !tbaa !20
  %615 = load ptr, ptr %42, align 8, !tbaa !5
  %616 = getelementptr inbounds %class.ImageContent, ptr %615, i32 0, i32 4
  %617 = load ptr, ptr %616, align 8, !tbaa !13
  %618 = load i32, ptr %28, align 4, !tbaa !11
  %619 = load ptr, ptr %13, align 8, !tbaa !5
  %620 = load i32, ptr %619, align 4, !tbaa !11
  %621 = add nsw i32 %618, %620
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds ptr, ptr %617, i64 %622
  %624 = load ptr, ptr %623, align 8, !tbaa !5
  %625 = load i32, ptr %27, align 4, !tbaa !11
  %626 = load ptr, ptr %12, align 8, !tbaa !5
  %627 = load i32, ptr %626, align 4, !tbaa !11
  %628 = add nsw i32 %625, %627
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds float, ptr %624, i64 %629
  %631 = load float, ptr %630, align 4, !tbaa !9
  %632 = fpext float %631 to double
  %633 = load ptr, ptr %11, align 8, !tbaa !5
  %634 = getelementptr inbounds %class.Matrix, ptr %633, i32 0, i32 1
  %635 = load ptr, ptr %634, align 8, !tbaa !18
  %636 = getelementptr inbounds ptr, ptr %635, i64 2
  %637 = load ptr, ptr %636, align 8, !tbaa !5
  %638 = getelementptr inbounds double, ptr %637, i64 1
  store double %632, ptr %638, align 8, !tbaa !20
  %639 = load ptr, ptr %11, align 8, !tbaa !5
  %640 = getelementptr inbounds %class.Matrix, ptr %639, i32 0, i32 1
  %641 = load ptr, ptr %640, align 8, !tbaa !18
  %642 = getelementptr inbounds ptr, ptr %641, i64 1
  %643 = load ptr, ptr %642, align 8, !tbaa !5
  %644 = getelementptr inbounds double, ptr %643, i64 2
  store double %632, ptr %644, align 8, !tbaa !20
  %645 = load ptr, ptr %40, align 8, !tbaa !5
  %646 = icmp eq ptr %645, null
  br i1 %646, label %648, label %647

647:                                              ; preds = %566
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %645) #8
  call void @_ZdlPvm(ptr noundef %645, i64 noundef 80) #10
  br label %648

648:                                              ; preds = %647, %566
  %649 = load ptr, ptr %41, align 8, !tbaa !5
  %650 = icmp eq ptr %649, null
  br i1 %650, label %652, label %651

651:                                              ; preds = %648
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %649) #8
  call void @_ZdlPvm(ptr noundef %649, i64 noundef 80) #10
  br label %652

652:                                              ; preds = %651, %648
  %653 = load ptr, ptr %42, align 8, !tbaa !5
  %654 = icmp eq ptr %653, null
  br i1 %654, label %656, label %655

655:                                              ; preds = %652
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %653) #8
  call void @_ZdlPvm(ptr noundef %653, i64 noundef 80) #10
  br label %656

656:                                              ; preds = %655, %652
  %657 = load ptr, ptr %29, align 8, !tbaa !5
  %658 = icmp eq ptr %657, null
  br i1 %658, label %660, label %659

659:                                              ; preds = %656
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %657) #8
  call void @_ZdlPvm(ptr noundef %657, i64 noundef 80) #10
  br label %660

660:                                              ; preds = %659, %656
  %661 = load i32, ptr %37, align 4, !tbaa !11
  store i32 %661, ptr %9, align 4
  store i32 1, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %664

662:                                              ; preds = %294, %290
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %663

663:                                              ; preds = %662, %286
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %666

664:                                              ; preds = %660, %241
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, 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 @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  %665 = load i32, ptr %9, align 4
  ret i32 %665

666:                                              ; preds = %663, %172
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %667

667:                                              ; preds = %666, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %668

668:                                              ; preds = %667, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %669

669:                                              ; preds = %668, %160
  call void @llvm.lifetime.end.p0(i64 8, 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 @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %670

670:                                              ; preds = %669
  %671 = load ptr, ptr %30, align 8
  %672 = load i32, ptr %31, align 4
  %673 = insertvalue { ptr, i32 } poison, ptr %671, 0
  %674 = insertvalue { ptr, i32 } %673, i32 %672, 1
  resume { ptr, i32 } %674
}

declare void @_Z6smoothP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) #7

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { 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 #4 = { 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 #5 = { 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 = { 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 #7 = { "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 = !{!19, !6, i64 8}
!19 = !{!"_ZTS6Matrix", !6, i64 8, !12, i64 16, !12, i64 20}
!20 = !{!21, !21, i64 0}
!21 = !{!"double", !7, i64 0}
!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"

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare void @_Z2dXP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) local_unnamed_addr #6

declare void @_Z2dYP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) local_unnamed_addr #6

declare noundef float @_Z7smoothfiiP12ImageContentf(i32 noundef, i32 noundef, ptr noundef, float noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 2) i32 @_Z9harris_miP12ImageContentP6MatrixRiS3_fffi(ptr noundef nonnull %0, ptr nocapture noundef readonly %1, ptr nocapture noundef nonnull align 4 dereferenceable(4) %2, ptr nocapture noundef nonnull writeonly align 4 dereferenceable(4) %3, float noundef %4, float noundef %5, float noundef %6, i32 noundef %7) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %9 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %10 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %11 = ashr i32 %9, 1
  %12 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #8
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %12, i32 noundef %9, i32 noundef %10)
          to label %13 unwind label %53

13:                                               ; preds = %8
  %14 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #8
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %14, i32 noundef %9, i32 noundef %10)
          to label %15 unwind label %55

15:                                               ; preds = %13
  %16 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #8
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %16, i32 noundef %9, i32 noundef %10)
          to label %17 unwind label %57

17:                                               ; preds = %15
  tail call void @_Z2dXP12ImageContentS0_f(ptr noundef nonnull %0, ptr noundef nonnull %14, float noundef %4)
  tail call void @_Z2dYP12ImageContentS0_f(ptr noundef nonnull %0, ptr noundef nonnull %16, float noundef %4)
  %18 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #8
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %18, i32 noundef %9, i32 noundef %10)
          to label %.preheader238 unwind label %59

.preheader238:                                    ; preds = %17
  %19 = icmp sgt i32 %9, 0
  %20 = icmp sgt i32 %10, 0
  %or.cond = and i1 %19, %20
  br i1 %or.cond, label %.preheader237.lr.ph.split.us, label %._crit_edge241

.preheader237.lr.ph.split.us:                     ; preds = %.preheader238
  %21 = getelementptr inbounds i8, ptr %18, i64 16
  %22 = getelementptr inbounds i8, ptr %16, i64 16
  %23 = getelementptr inbounds i8, ptr %14, i64 16
  %24 = load ptr, ptr %23, align 8, !tbaa !5
  %25 = load ptr, ptr %22, align 8, !tbaa !5
  %26 = load ptr, ptr %21, align 8, !tbaa !5
  %wide.trip.count263 = zext nneg i32 %9 to i64
  %wide.trip.count = zext nneg i32 %10 to i64
  %27 = shl nuw nsw i64 %wide.trip.count, 2
  %min.iters.check = icmp ult i32 %10, 4
  %n.vec = and i64 %wide.trip.count, 2147483644
  %broadcast.splatinsert = insertelement <4 x float> poison, float %4, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br label %.preheader237.us

.preheader237.us:                                 ; preds = %._crit_edge.us, %.preheader237.lr.ph.split.us
  %indvars.iv260 = phi i64 [ %indvars.iv.next261, %._crit_edge.us ], [ 0, %.preheader237.lr.ph.split.us ]
  %28 = getelementptr inbounds ptr, ptr %24, i64 %indvars.iv260
  %29 = load ptr, ptr %28, align 8, !tbaa !11
  %30 = getelementptr inbounds ptr, ptr %25, i64 %indvars.iv260
  %31 = load ptr, ptr %30, align 8, !tbaa !11
  %32 = getelementptr inbounds ptr, ptr %26, i64 %indvars.iv260
  %33 = load ptr, ptr %32, align 8, !tbaa !11
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.preheader237.us
  %scevgep = getelementptr i8, ptr %29, i64 %27
  %scevgep292 = getelementptr i8, ptr %31, i64 %27
  %scevgep293 = getelementptr i8, ptr %33, i64 %27
  %bound0 = icmp ult ptr %29, %scevgep292
  %bound1 = icmp ult ptr %31, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0294 = icmp ult ptr %29, %scevgep293
  %bound1295 = icmp ult ptr %33, %scevgep
  %found.conflict296 = and i1 %bound0294, %bound1295
  %conflict.rdx = or i1 %found.conflict, %found.conflict296
  %bound0297 = icmp ult ptr %31, %scevgep293
  %bound1298 = icmp ult ptr %33, %scevgep292
  %found.conflict299 = and i1 %bound0297, %bound1298
  %conflict.rdx300 = or i1 %conflict.rdx, %found.conflict299
  br i1 %conflict.rdx300, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.memcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.memcheck ]
  %34 = getelementptr inbounds float, ptr %29, i64 %index
  %wide.load = load <4 x float>, ptr %34, align 4, !tbaa !12, !alias.scope !14, !noalias !17
  %35 = fmul <4 x float> %wide.load, %broadcast.splat
  %36 = getelementptr inbounds float, ptr %31, i64 %index
  %wide.load301 = load <4 x float>, ptr %36, align 4, !tbaa !12, !alias.scope !20, !noalias !21
  %37 = fmul <4 x float> %wide.load301, %broadcast.splat
  %38 = fmul <4 x float> %35, %35
  store <4 x float> %38, ptr %34, align 4, !tbaa !12, !alias.scope !14, !noalias !17
  %39 = fmul <4 x float> %37, %37
  store <4 x float> %39, ptr %36, align 4, !tbaa !12, !alias.scope !20, !noalias !21
  %40 = fmul <4 x float> %35, %37
  %41 = getelementptr inbounds float, ptr %33, i64 %index
  store <4 x float> %40, ptr %41, align 4, !tbaa !12, !alias.scope !21
  %index.next = add nuw i64 %index, 4
  %42 = icmp eq i64 %index.next, %n.vec
  br i1 %42, label %middle.block, label %vector.body, !llvm.loop !22

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge.us, label %scalar.ph.preheader

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %43 = getelementptr inbounds float, ptr %29, i64 %indvars.iv
  %44 = load float, ptr %43, align 4, !tbaa !12
  %45 = fmul float %44, %4
  %46 = getelementptr inbounds float, ptr %31, i64 %indvars.iv
  %47 = load float, ptr %46, align 4, !tbaa !12
  %48 = fmul float %47, %4
  %49 = fmul float %45, %45
  store float %49, ptr %43, align 4, !tbaa !12
  %50 = fmul float %48, %48
  store float %50, ptr %46, align 4, !tbaa !12
  %51 = fmul float %45, %48
  %52 = getelementptr inbounds float, ptr %33, i64 %indvars.iv
  store float %51, ptr %52, align 4, !tbaa !12
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.us, label %scalar.ph, !llvm.loop !26

._crit_edge.us:                                   ; preds = %scalar.ph, %middle.block
  %indvars.iv.next261 = add nuw nsw i64 %indvars.iv260, 1
  %exitcond264.not = icmp eq i64 %indvars.iv.next261, %wide.trip.count263
  br i1 %exitcond264.not, label %._crit_edge241, label %.preheader237.us, !llvm.loop !27

53:                                               ; preds = %8
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %254

55:                                               ; preds = %13
  %56 = landingpad { ptr, i32 }
          cleanup
  br label %254

57:                                               ; preds = %15
  %58 = landingpad { ptr, i32 }
          cleanup
  br label %254

59:                                               ; preds = %17
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %254

._crit_edge241:                                   ; preds = %._crit_edge.us, %.preheader238
  %.not = icmp eq i32 %7, 0
  br i1 %.not, label %84, label %61

61:                                               ; preds = %._crit_edge241
  %62 = tail call noundef float @_Z7smoothfiiP12ImageContentf(i32 noundef %11, i32 noundef %11, ptr noundef nonnull %14, float noundef %5)
  %63 = fpext float %62 to double
  %64 = getelementptr inbounds i8, ptr %1, i64 8
  %65 = load ptr, ptr %64, align 8, !tbaa !28
  %66 = getelementptr inbounds i8, ptr %65, i64 8
  %67 = load ptr, ptr %66, align 8, !tbaa !11
  %68 = getelementptr inbounds i8, ptr %67, i64 8
  store double %63, ptr %68, align 8, !tbaa !30
  %69 = tail call noundef float @_Z7smoothfiiP12ImageContentf(i32 noundef %11, i32 noundef %11, ptr noundef nonnull %16, float noundef %5)
  %70 = fpext float %69 to double
  %71 = load ptr, ptr %64, align 8, !tbaa !28
  %72 = getelementptr inbounds i8, ptr %71, i64 16
  %73 = load ptr, ptr %72, align 8, !tbaa !11
  %74 = getelementptr inbounds i8, ptr %73, i64 16
  store double %70, ptr %74, align 8, !tbaa !30
  %75 = tail call noundef float @_Z7smoothfiiP12ImageContentf(i32 noundef %11, i32 noundef %11, ptr noundef nonnull %18, float noundef %5)
  %76 = fpext float %75 to double
  %77 = load ptr, ptr %64, align 8, !tbaa !28
  %78 = getelementptr inbounds i8, ptr %77, i64 8
  %79 = load ptr, ptr %78, align 8, !tbaa !11
  %80 = getelementptr inbounds i8, ptr %79, i64 16
  store double %76, ptr %80, align 8, !tbaa !30
  %81 = getelementptr inbounds i8, ptr %77, i64 16
  %82 = load ptr, ptr %81, align 8, !tbaa !11
  %83 = getelementptr inbounds i8, ptr %82, i64 8
  store double %76, ptr %83, align 8, !tbaa !30
  br label %253

84:                                               ; preds = %._crit_edge241
  %85 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #8
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %85, i32 noundef %9, i32 noundef %10)
          to label %86 unwind label %140

86:                                               ; preds = %84
  %87 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #8
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %87, i32 noundef %9, i32 noundef %10)
          to label %88 unwind label %142

88:                                               ; preds = %86
  %89 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #8
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %89, i32 noundef %9, i32 noundef %10)
          to label %90 unwind label %144

90:                                               ; preds = %88
  tail call void @_Z6smoothP12ImageContentS0_f(ptr noundef nonnull %14, ptr noundef nonnull %85, float noundef %5)
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %14) #9
  tail call void @_ZdlPvm(ptr noundef nonnull %14, i64 noundef 80) #10
  tail call void @_Z6smoothP12ImageContentS0_f(ptr noundef nonnull %16, ptr noundef nonnull %87, float noundef %5)
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %16) #9
  tail call void @_ZdlPvm(ptr noundef nonnull %16, i64 noundef 80) #10
  tail call void @_Z6smoothP12ImageContentS0_f(ptr noundef nonnull %18, ptr noundef nonnull %89, float noundef %5)
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %18) #9
  tail call void @_ZdlPvm(ptr noundef nonnull %18, i64 noundef 80) #10
  br i1 %19, label %.preheader236.lr.ph, label %._crit_edge244

.preheader236.lr.ph:                              ; preds = %90
  %91 = icmp sgt i32 %10, 0
  %92 = fneg float %6
  br i1 %91, label %.preheader236.lr.ph.split.us, label %._crit_edge244

.preheader236.lr.ph.split.us:                     ; preds = %.preheader236.lr.ph
  %93 = getelementptr inbounds i8, ptr %12, i64 16
  %94 = getelementptr inbounds i8, ptr %89, i64 16
  %95 = getelementptr inbounds i8, ptr %87, i64 16
  %96 = getelementptr inbounds i8, ptr %85, i64 16
  %97 = load ptr, ptr %96, align 8, !tbaa !5
  %98 = load ptr, ptr %95, align 8, !tbaa !5
  %99 = load ptr, ptr %94, align 8, !tbaa !5
  %100 = load ptr, ptr %93, align 8, !tbaa !5
  %wide.trip.count273 = zext nneg i32 %9 to i64
  %wide.trip.count268 = zext nneg i32 %10 to i64
  %min.iters.check309 = icmp ult i32 %10, 4
  %n.vec312 = and i64 %wide.trip.count268, 2147483644
  %broadcast.splatinsert319 = insertelement <4 x float> poison, float %92, i64 0
  %broadcast.splat320 = shufflevector <4 x float> %broadcast.splatinsert319, <4 x float> poison, <4 x i32> zeroinitializer
  %cmp.n322 = icmp eq i64 %n.vec312, %wide.trip.count268
  br label %.preheader236.us

.preheader236.us:                                 ; preds = %._crit_edge.us245, %.preheader236.lr.ph.split.us
  %indvars.iv270 = phi i64 [ %indvars.iv.next271, %._crit_edge.us245 ], [ 0, %.preheader236.lr.ph.split.us ]
  %101 = getelementptr inbounds ptr, ptr %97, i64 %indvars.iv270
  %102 = load ptr, ptr %101, align 8, !tbaa !11
  %103 = getelementptr inbounds ptr, ptr %98, i64 %indvars.iv270
  %104 = load ptr, ptr %103, align 8, !tbaa !11
  %105 = getelementptr inbounds ptr, ptr %99, i64 %indvars.iv270
  %106 = load ptr, ptr %105, align 8, !tbaa !11
  %107 = getelementptr inbounds ptr, ptr %100, i64 %indvars.iv270
  %108 = load ptr, ptr %107, align 8, !tbaa !11
  br i1 %min.iters.check309, label %scalar.ph308.preheader, label %vector.memcheck302

vector.memcheck302:                               ; preds = %.preheader236.us
  %109 = ptrtoint ptr %108 to i64
  %110 = ptrtoint ptr %106 to i64
  %111 = ptrtoint ptr %104 to i64
  %112 = ptrtoint ptr %102 to i64
  %113 = sub i64 %109, %112
  %diff.check = icmp ult i64 %113, 16
  %114 = sub i64 %109, %111
  %diff.check303 = icmp ult i64 %114, 16
  %conflict.rdx304 = or i1 %diff.check, %diff.check303
  %115 = sub i64 %109, %110
  %diff.check305 = icmp ult i64 %115, 16
  %conflict.rdx306 = or i1 %conflict.rdx304, %diff.check305
  br i1 %conflict.rdx306, label %scalar.ph308.preheader, label %vector.body314

vector.body314:                                   ; preds = %vector.memcheck302, %vector.body314
  %index315 = phi i64 [ %index.next321, %vector.body314 ], [ 0, %vector.memcheck302 ]
  %116 = getelementptr inbounds float, ptr %102, i64 %index315
  %wide.load316 = load <4 x float>, ptr %116, align 4, !tbaa !12
  %117 = getelementptr inbounds float, ptr %104, i64 %index315
  %wide.load317 = load <4 x float>, ptr %117, align 4, !tbaa !12
  %118 = getelementptr inbounds float, ptr %106, i64 %index315
  %wide.load318 = load <4 x float>, ptr %118, align 4, !tbaa !12
  %119 = fneg <4 x float> %wide.load318
  %120 = fmul <4 x float> %wide.load318, %119
  %121 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %wide.load316, <4 x float> %wide.load317, <4 x float> %120)
  %122 = fadd <4 x float> %wide.load316, %wide.load317
  %123 = fmul <4 x float> %122, %122
  %124 = tail call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %broadcast.splat320, <4 x float> %123, <4 x float> %121)
  %125 = getelementptr inbounds float, ptr %108, i64 %index315
  store <4 x float> %124, ptr %125, align 4, !tbaa !12
  %index.next321 = add nuw i64 %index315, 4
  %126 = icmp eq i64 %index.next321, %n.vec312
  br i1 %126, label %middle.block307, label %vector.body314, !llvm.loop !32

middle.block307:                                  ; preds = %vector.body314
  br i1 %cmp.n322, label %._crit_edge.us245, label %scalar.ph308.preheader

scalar.ph308.preheader:                           ; preds = %middle.block307, %vector.memcheck302, %.preheader236.us
  %indvars.iv265.ph = phi i64 [ 0, %vector.memcheck302 ], [ 0, %.preheader236.us ], [ %n.vec312, %middle.block307 ]
  br label %scalar.ph308

scalar.ph308:                                     ; preds = %scalar.ph308.preheader, %scalar.ph308
  %indvars.iv265 = phi i64 [ %indvars.iv.next266, %scalar.ph308 ], [ %indvars.iv265.ph, %scalar.ph308.preheader ]
  %127 = getelementptr inbounds float, ptr %102, i64 %indvars.iv265
  %128 = load float, ptr %127, align 4, !tbaa !12
  %129 = getelementptr inbounds float, ptr %104, i64 %indvars.iv265
  %130 = load float, ptr %129, align 4, !tbaa !12
  %131 = getelementptr inbounds float, ptr %106, i64 %indvars.iv265
  %132 = load float, ptr %131, align 4, !tbaa !12
  %133 = fneg float %132
  %134 = fmul float %132, %133
  %135 = tail call float @llvm.fmuladd.f32(float %128, float %130, float %134)
  %136 = fadd float %128, %130
  %137 = fmul float %136, %136
  %138 = tail call float @llvm.fmuladd.f32(float %92, float %137, float %135)
  %139 = getelementptr inbounds float, ptr %108, i64 %indvars.iv265
  store float %138, ptr %139, align 4, !tbaa !12
  %indvars.iv.next266 = add nuw nsw i64 %indvars.iv265, 1
  %exitcond269.not = icmp eq i64 %indvars.iv.next266, %wide.trip.count268
  br i1 %exitcond269.not, label %._crit_edge.us245, label %scalar.ph308, !llvm.loop !33

._crit_edge.us245:                                ; preds = %scalar.ph308, %middle.block307
  %indvars.iv.next271 = add nuw nsw i64 %indvars.iv270, 1
  %exitcond274.not = icmp eq i64 %indvars.iv.next271, %wide.trip.count273
  br i1 %exitcond274.not, label %._crit_edge244, label %.preheader236.us, !llvm.loop !34

140:                                              ; preds = %84
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %254

142:                                              ; preds = %86
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %254

144:                                              ; preds = %88
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %254

._crit_edge244:                                   ; preds = %._crit_edge.us245, %.preheader236.lr.ph, %90
  %146 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %12)
  store i32 0, ptr %2, align 4, !tbaa !35
  store i32 0, ptr %3, align 4, !tbaa !35
  %147 = icmp sgt i32 %9, 6
  %148 = icmp sgt i32 %10, 6
  %or.cond285 = and i1 %147, %148
  br i1 %or.cond285, label %.preheader.lr.ph.split.us, label %._crit_edge253

.preheader.lr.ph.split.us:                        ; preds = %._crit_edge244
  %149 = uitofp i32 %146 to double
  %150 = fmul double %149, 5.000000e-01
  %151 = fptrunc double %150 to float
  %152 = fmul float %151, %151
  %153 = getelementptr inbounds i8, ptr %12, i64 16
  %154 = load ptr, ptr %153, align 8, !tbaa !5
  %155 = add nsw i32 %10, -3
  %156 = add nsw i32 %9, -3
  %wide.trip.count283 = zext nneg i32 %156 to i64
  %wide.trip.count278 = zext i32 %155 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %._crit_edge.us255, %.preheader.lr.ph.split.us
  %157 = phi i32 [ %214, %._crit_edge.us255 ], [ 0, %.preheader.lr.ph.split.us ]
  %indvars.iv280 = phi i64 [ %indvars.iv.next281, %._crit_edge.us255 ], [ 3, %.preheader.lr.ph.split.us ]
  %.0211251.us = phi float [ %.2213.us, %._crit_edge.us255 ], [ %152, %.preheader.lr.ph.split.us ]
  %.0223250.us = phi i32 [ %.2225.us, %._crit_edge.us255 ], [ 0, %.preheader.lr.ph.split.us ]
  %158 = getelementptr inbounds ptr, ptr %154, i64 %indvars.iv280
  %159 = load ptr, ptr %158, align 8, !tbaa !11
  %160 = getelementptr i8, ptr %158, i64 -8
  %161 = load ptr, ptr %160, align 8, !tbaa !11
  %162 = getelementptr inbounds i8, ptr %158, i64 8
  %163 = trunc i64 %indvars.iv280 to i32
  %164 = sub i32 %163, %11
  %165 = mul nsw i32 %164, %164
  br label %166

166:                                              ; preds = %.preheader.us, %213
  %167 = phi i32 [ %157, %.preheader.us ], [ %214, %213 ]
  %indvars.iv275 = phi i64 [ 3, %.preheader.us ], [ %indvars.iv.next276, %213 ]
  %.1212247.us = phi float [ %.0211251.us, %.preheader.us ], [ %.2213.us, %213 ]
  %.1224246.us = phi i32 [ %.0223250.us, %.preheader.us ], [ %.2225.us, %213 ]
  %168 = getelementptr inbounds float, ptr %159, i64 %indvars.iv275
  %169 = load float, ptr %168, align 4, !tbaa !12
  %170 = add nsw i64 %indvars.iv275, -1
  %171 = getelementptr inbounds float, ptr %161, i64 %170
  %172 = load float, ptr %171, align 4, !tbaa !12
  %173 = fcmp ogt float %169, %172
  br i1 %173, label %174, label %213

174:                                              ; preds = %166
  %175 = getelementptr inbounds float, ptr %161, i64 %indvars.iv275
  %176 = load float, ptr %175, align 4, !tbaa !12
  %177 = fcmp ogt float %169, %176
  br i1 %177, label %178, label %213

178:                                              ; preds = %174
  %179 = add nuw nsw i64 %indvars.iv275, 1
  %180 = getelementptr inbounds float, ptr %161, i64 %179
  %181 = load float, ptr %180, align 4, !tbaa !12
  %182 = fcmp ogt float %169, %181
  br i1 %182, label %183, label %213

183:                                              ; preds = %178
  %184 = getelementptr inbounds float, ptr %159, i64 %170
  %185 = load float, ptr %184, align 4, !tbaa !12
  %186 = fcmp ogt float %169, %185
  br i1 %186, label %187, label %213

187:                                              ; preds = %183
  %188 = getelementptr inbounds float, ptr %159, i64 %179
  %189 = load float, ptr %188, align 4, !tbaa !12
  %190 = fcmp ogt float %169, %189
  br i1 %190, label %191, label %213

191:                                              ; preds = %187
  %192 = load ptr, ptr %162, align 8, !tbaa !11
  %193 = getelementptr inbounds float, ptr %192, i64 %170
  %194 = load float, ptr %193, align 4, !tbaa !12
  %195 = fcmp ogt float %169, %194
  br i1 %195, label %196, label %213

196:                                              ; preds = %191
  %197 = getelementptr inbounds float, ptr %192, i64 %indvars.iv275
  %198 = load float, ptr %197, align 4, !tbaa !12
  %199 = fcmp ogt float %169, %198
  br i1 %199, label %200, label %213

200:                                              ; preds = %196
  %201 = getelementptr inbounds float, ptr %192, i64 %179
  %202 = load float, ptr %201, align 4, !tbaa !12
  %203 = fcmp ogt float %169, %202
  %204 = fcmp ogt float %169, 2.000000e+02
  %or.cond.us = and i1 %204, %203
  br i1 %or.cond.us, label %205, label %213

205:                                              ; preds = %200
  %206 = trunc i64 %indvars.iv275 to i32
  %207 = sub i32 %206, %11
  %208 = mul nsw i32 %207, %207
  %209 = add nuw nsw i32 %208, %165
  %210 = uitofp nneg i32 %209 to float
  %211 = fcmp ogt float %.1212247.us, %210
  br i1 %211, label %212, label %213

212:                                              ; preds = %205
  store i32 %207, ptr %2, align 4, !tbaa !35
  store i32 %164, ptr %3, align 4, !tbaa !35
  br label %213

213:                                              ; preds = %212, %205, %200, %196, %191, %187, %183, %178, %174, %166
  %214 = phi i32 [ %164, %212 ], [ %167, %205 ], [ %167, %200 ], [ %167, %196 ], [ %167, %191 ], [ %167, %187 ], [ %167, %183 ], [ %167, %178 ], [ %167, %174 ], [ %167, %166 ]
  %.2225.us = phi i32 [ 1, %212 ], [ %.1224246.us, %205 ], [ %.1224246.us, %200 ], [ %.1224246.us, %196 ], [ %.1224246.us, %191 ], [ %.1224246.us, %187 ], [ %.1224246.us, %183 ], [ %.1224246.us, %178 ], [ %.1224246.us, %174 ], [ %.1224246.us, %166 ]
  %.2213.us = phi float [ %210, %212 ], [ %.1212247.us, %205 ], [ %.1212247.us, %200 ], [ %.1212247.us, %196 ], [ %.1212247.us, %191 ], [ %.1212247.us, %187 ], [ %.1212247.us, %183 ], [ %.1212247.us, %178 ], [ %.1212247.us, %174 ], [ %.1212247.us, %166 ]
  %indvars.iv.next276 = add nuw nsw i64 %indvars.iv275, 1
  %exitcond279.not = icmp eq i64 %indvars.iv.next276, %wide.trip.count278
  br i1 %exitcond279.not, label %._crit_edge.us255, label %166, !llvm.loop !36

._crit_edge.us255:                                ; preds = %213
  %indvars.iv.next281 = add nuw nsw i64 %indvars.iv280, 1
  %exitcond284.not = icmp eq i64 %indvars.iv.next281, %wide.trip.count283
  br i1 %exitcond284.not, label %._crit_edge253, label %.preheader.us, !llvm.loop !37

._crit_edge253:                                   ; preds = %._crit_edge.us255, %._crit_edge244
  %215 = phi i32 [ 0, %._crit_edge244 ], [ %214, %._crit_edge.us255 ]
  %.0223.lcssa = phi i32 [ 0, %._crit_edge244 ], [ %.2225.us, %._crit_edge.us255 ]
  %216 = getelementptr inbounds i8, ptr %85, i64 16
  %217 = load ptr, ptr %216, align 8, !tbaa !5
  %218 = add nsw i32 %215, %11
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds ptr, ptr %217, i64 %219
  %221 = load ptr, ptr %220, align 8, !tbaa !11
  %222 = load i32, ptr %2, align 4, !tbaa !35
  %223 = add nsw i32 %222, %11
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds float, ptr %221, i64 %224
  %226 = load float, ptr %225, align 4, !tbaa !12
  %227 = fpext float %226 to double
  %228 = getelementptr inbounds i8, ptr %1, i64 8
  %229 = load ptr, ptr %228, align 8, !tbaa !28
  %230 = getelementptr inbounds i8, ptr %229, i64 8
  %231 = load ptr, ptr %230, align 8, !tbaa !11
  %232 = getelementptr inbounds i8, ptr %231, i64 8
  store double %227, ptr %232, align 8, !tbaa !30
  %233 = getelementptr inbounds i8, ptr %87, i64 16
  %234 = load ptr, ptr %233, align 8, !tbaa !5
  %235 = getelementptr inbounds ptr, ptr %234, i64 %219
  %236 = load ptr, ptr %235, align 8, !tbaa !11
  %237 = getelementptr inbounds float, ptr %236, i64 %224
  %238 = load float, ptr %237, align 4, !tbaa !12
  %239 = getelementptr inbounds i8, ptr %229, i64 16
  %240 = load ptr, ptr %239, align 8, !tbaa !11
  %241 = getelementptr inbounds i8, ptr %89, i64 16
  %242 = load ptr, ptr %241, align 8, !tbaa !5
  %243 = getelementptr inbounds ptr, ptr %242, i64 %219
  %244 = load ptr, ptr %243, align 8, !tbaa !11
  %245 = getelementptr inbounds float, ptr %244, i64 %224
  %246 = load float, ptr %245, align 4, !tbaa !12
  %247 = getelementptr inbounds i8, ptr %240, i64 8
  %248 = insertelement <2 x float> poison, float %246, i64 0
  %249 = insertelement <2 x float> %248, float %238, i64 1
  %250 = fpext <2 x float> %249 to <2 x double>
  store <2 x double> %250, ptr %247, align 8, !tbaa !30
  %251 = getelementptr inbounds i8, ptr %231, i64 16
  %252 = extractelement <2 x double> %250, i64 0
  store double %252, ptr %251, align 8, !tbaa !30
  br label %253

253:                                              ; preds = %._crit_edge253, %61
  %.sink290 = phi ptr [ %85, %._crit_edge253 ], [ %14, %61 ]
  %.sink288 = phi ptr [ %87, %._crit_edge253 ], [ %16, %61 ]
  %.sink286 = phi ptr [ %89, %._crit_edge253 ], [ %18, %61 ]
  %.0209 = phi i32 [ %.0223.lcssa, %._crit_edge253 ], [ 1, %61 ]
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %.sink290) #9
  tail call void @_ZdlPvm(ptr noundef nonnull %.sink290, i64 noundef 80) #10
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %.sink288) #9
  tail call void @_ZdlPvm(ptr noundef nonnull %.sink288, i64 noundef 80) #10
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %.sink286) #9
  tail call void @_ZdlPvm(ptr noundef nonnull %.sink286, i64 noundef 80) #10
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %12) #9
  tail call void @_ZdlPvm(ptr noundef nonnull %12, i64 noundef 80) #10
  ret i32 %.0209

254:                                              ; preds = %55, %59, %142, %144, %140, %57, %53
  %.sink291 = phi ptr [ %14, %55 ], [ %18, %59 ], [ %87, %142 ], [ %89, %144 ], [ %85, %140 ], [ %16, %57 ], [ %12, %53 ]
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %56, %55 ], [ %60, %59 ], [ %143, %142 ], [ %145, %144 ], [ %141, %140 ], [ %58, %57 ], [ %54, %53 ]
  tail call void @_ZdlPvm(ptr noundef nonnull %.sink291, i64 noundef 80) #10
  resume { ptr, i32 } %.pn.pn.pn.pn.pn.pn
}

declare void @_Z6smoothP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) local_unnamed_addr #6

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { 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 #3 = { 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 #4 = { 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 #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !10, i64 16}
!6 = !{!"_ZTS12ImageContent", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!10, !10, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !8, i64 0}
!14 = !{!15}
!15 = distinct !{!15, !16}
!16 = distinct !{!16, !"LVerDomain"}
!17 = !{!18, !19}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = !{!18}
!21 = !{!19}
!22 = distinct !{!22, !23, !24, !25}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!"llvm.loop.isvectorized", i32 1}
!25 = !{!"llvm.loop.unroll.runtime.disable"}
!26 = distinct !{!26, !23, !24}
!27 = distinct !{!27, !23}
!28 = !{!29, !10, i64 8}
!29 = !{!"_ZTS6Matrix", !10, i64 8, !7, i64 16, !7, i64 20}
!30 = !{!31, !31, i64 0}
!31 = !{!"double", !8, i64 0}
!32 = distinct !{!32, !23, !24, !25}
!33 = distinct !{!33, !23, !24}
!34 = distinct !{!34, !23}
!35 = !{!7, !7, i64 0}
!36 = distinct !{!36, !23}
!37 = distinct !{!37, !23}


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