; LLVM IR from ox-vgg/vise :: src/search_engine/relja_retrival/external/KMCode_relja/descriptor/AffineRegion._f8de7b8f (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.ImageContent = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

; 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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z5getMiP12ImageContentP6Matrixiiff(ptr noundef, ptr noundef, i32 noundef, i32 noundef, float noundef, float noundef) #5

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

54:                                               ; preds = %6
  store ptr %51, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %55 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #8
  %56 = load i32, ptr %14, align 4, !tbaa !11
  %57 = load i32, ptr %13, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %55, i32 noundef %56, i32 noundef %57)
          to label %58 unwind label %161

58:                                               ; preds = %54
  store ptr %55, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %59 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #8
  %60 = load i32, ptr %14, align 4, !tbaa !11
  %61 = load i32, ptr %13, 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 %165

62:                                               ; preds = %58
  store ptr %59, ptr %26, align 8, !tbaa !5
  %63 = load ptr, ptr %7, align 8, !tbaa !5
  %64 = load ptr, ptr %22, align 8, !tbaa !5
  %65 = load float, ptr %11, align 4, !tbaa !9
  call void @_Z3dXXP12ImageContentS0_f(ptr noundef %63, ptr noundef %64, float noundef %65)
  %66 = load ptr, ptr %7, align 8, !tbaa !5
  %67 = load ptr, ptr %25, align 8, !tbaa !5
  %68 = load float, ptr %11, align 4, !tbaa !9
  call void @_Z3dYYP12ImageContentS0_f(ptr noundef %66, ptr noundef %67, float noundef %68)
  %69 = load ptr, ptr %7, align 8, !tbaa !5
  %70 = load ptr, ptr %26, align 8, !tbaa !5
  %71 = load float, ptr %11, align 4, !tbaa !9
  call void @_Z3dXYP12ImageContentS0_f(ptr noundef %69, ptr noundef %70, float noundef %71)
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  store i32 0, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 0, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  store i32 0, ptr %29, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  %72 = load float, ptr %11, align 4, !tbaa !9
  %73 = load float, ptr %11, align 4, !tbaa !9
  %74 = fmul float %72, %73
  store float %74, ptr %30, align 4, !tbaa !9
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %75

75:                                               ; preds = %170, %62
  %76 = load i32, ptr %27, align 4, !tbaa !11
  %77 = load i32, ptr %14, align 4, !tbaa !11
  %78 = icmp slt i32 %76, %77
  br i1 %78, label %79, label %173

79:                                               ; preds = %75
  store i32 0, ptr %28, align 4, !tbaa !11
  br label %80

80:                                               ; preds = %154, %79
  %81 = load i32, ptr %28, align 4, !tbaa !11
  %82 = load i32, ptr %13, align 4, !tbaa !11
  %83 = icmp slt i32 %81, %82
  br i1 %83, label %84, label %169

84:                                               ; preds = %80
  %85 = load float, ptr %30, align 4, !tbaa !9
  %86 = load ptr, ptr %22, align 8, !tbaa !5
  %87 = getelementptr inbounds %class.ImageContent, ptr %86, i32 0, i32 4
  %88 = load ptr, ptr %87, align 8, !tbaa !13
  %89 = load i32, ptr %27, align 4, !tbaa !11
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds ptr, ptr %88, i64 %90
  %92 = load ptr, ptr %91, align 8, !tbaa !5
  %93 = load i32, ptr %28, align 4, !tbaa !11
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds float, ptr %92, i64 %94
  %96 = load float, ptr %95, align 4, !tbaa !9
  %97 = fmul float %85, %96
  %98 = load ptr, ptr %22, align 8, !tbaa !5
  %99 = getelementptr inbounds %class.ImageContent, ptr %98, i32 0, i32 4
  %100 = load ptr, ptr %99, align 8, !tbaa !13
  %101 = load i32, ptr %27, align 4, !tbaa !11
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds ptr, ptr %100, i64 %102
  %104 = load ptr, ptr %103, align 8, !tbaa !5
  %105 = load i32, ptr %28, align 4, !tbaa !11
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds float, ptr %104, i64 %106
  store float %97, ptr %107, align 4, !tbaa !9
  %108 = load float, ptr %30, align 4, !tbaa !9
  %109 = load ptr, ptr %25, align 8, !tbaa !5
  %110 = getelementptr inbounds %class.ImageContent, ptr %109, i32 0, i32 4
  %111 = load ptr, ptr %110, align 8, !tbaa !13
  %112 = load i32, ptr %27, align 4, !tbaa !11
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds ptr, ptr %111, i64 %113
  %115 = load ptr, ptr %114, align 8, !tbaa !5
  %116 = load i32, ptr %28, align 4, !tbaa !11
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds float, ptr %115, i64 %117
  %119 = load float, ptr %118, align 4, !tbaa !9
  %120 = fmul float %108, %119
  %121 = load ptr, ptr %25, 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 %27, 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 %28, 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 %30, align 4, !tbaa !9
  %132 = load ptr, ptr %26, align 8, !tbaa !5
  %133 = getelementptr inbounds %class.ImageContent, ptr %132, i32 0, i32 4
  %134 = load ptr, ptr %133, align 8, !tbaa !13
  %135 = load i32, ptr %27, align 4, !tbaa !11
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds ptr, ptr %134, i64 %136
  %138 = load ptr, ptr %137, align 8, !tbaa !5
  %139 = load i32, ptr %28, align 4, !tbaa !11
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds float, ptr %138, i64 %140
  %142 = load float, ptr %141, align 4, !tbaa !9
  %143 = fmul float %131, %142
  %144 = load ptr, ptr %26, align 8, !tbaa !5
  %145 = getelementptr inbounds %class.ImageContent, ptr %144, i32 0, i32 4
  %146 = load ptr, ptr %145, align 8, !tbaa !13
  %147 = load i32, ptr %27, align 4, !tbaa !11
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds ptr, ptr %146, i64 %148
  %150 = load ptr, ptr %149, align 8, !tbaa !5
  %151 = load i32, ptr %28, align 4, !tbaa !11
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds float, ptr %150, i64 %152
  store float %143, ptr %153, align 4, !tbaa !9
  br label %154

154:                                              ; preds = %84
  %155 = load i32, ptr %28, align 4, !tbaa !11
  %156 = add nsw i32 %155, 1
  store i32 %156, ptr %28, align 4, !tbaa !11
  br label %80, !llvm.loop !15

157:                                              ; preds = %6
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %23, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %24, align 4
  call void @_ZdlPvm(ptr noundef %51, i64 noundef 80) #9
  br label %490

161:                                              ; preds = %54
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %23, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %24, align 4
  call void @_ZdlPvm(ptr noundef %55, i64 noundef 80) #9
  br label %489

165:                                              ; preds = %58
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %23, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %24, align 4
  call void @_ZdlPvm(ptr noundef %59, i64 noundef 80) #9
  br label %488

169:                                              ; preds = %80
  br label %170

170:                                              ; preds = %169
  %171 = load i32, ptr %27, align 4, !tbaa !11
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %27, align 4, !tbaa !11
  br label %75, !llvm.loop !17

173:                                              ; preds = %75
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %174 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #8
  %175 = load i32, ptr %14, align 4, !tbaa !11
  %176 = load i32, ptr %13, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %174, i32 noundef %175, i32 noundef %176)
          to label %177 unwind label %188

177:                                              ; preds = %173
  store ptr %174, ptr %33, align 8, !tbaa !5
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %178

178:                                              ; preds = %251, %177
  %179 = load i32, ptr %27, align 4, !tbaa !11
  %180 = load i32, ptr %14, align 4, !tbaa !11
  %181 = icmp slt i32 %179, %180
  br i1 %181, label %182, label %254

182:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store i32 0, ptr %34, align 4, !tbaa !11
  br label %183

183:                                              ; preds = %247, %182
  %184 = load i32, ptr %34, align 4, !tbaa !11
  %185 = load i32, ptr %13, align 4, !tbaa !11
  %186 = icmp slt i32 %184, %185
  br i1 %186, label %192, label %187

187:                                              ; preds = %183
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %250

188:                                              ; preds = %173
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %23, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %24, align 4
  call void @_ZdlPvm(ptr noundef %174, i64 noundef 80) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %488

192:                                              ; preds = %183
  %193 = load ptr, ptr %22, align 8, !tbaa !5
  %194 = getelementptr inbounds %class.ImageContent, ptr %193, i32 0, i32 4
  %195 = load ptr, ptr %194, align 8, !tbaa !13
  %196 = load i32, ptr %27, align 4, !tbaa !11
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds ptr, ptr %195, i64 %197
  %199 = load ptr, ptr %198, align 8, !tbaa !5
  %200 = load i32, ptr %34, align 4, !tbaa !11
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds float, ptr %199, i64 %201
  %203 = load float, ptr %202, align 4, !tbaa !9
  store float %203, ptr %15, align 4, !tbaa !9
  %204 = load ptr, ptr %25, align 8, !tbaa !5
  %205 = getelementptr inbounds %class.ImageContent, ptr %204, i32 0, i32 4
  %206 = load ptr, ptr %205, align 8, !tbaa !13
  %207 = load i32, ptr %27, align 4, !tbaa !11
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds ptr, ptr %206, i64 %208
  %210 = load ptr, ptr %209, align 8, !tbaa !5
  %211 = load i32, ptr %34, align 4, !tbaa !11
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds float, ptr %210, i64 %212
  %214 = load float, ptr %213, align 4, !tbaa !9
  store float %214, ptr %16, align 4, !tbaa !9
  %215 = load ptr, ptr %26, align 8, !tbaa !5
  %216 = getelementptr inbounds %class.ImageContent, ptr %215, i32 0, i32 4
  %217 = load ptr, ptr %216, align 8, !tbaa !13
  %218 = load i32, ptr %27, align 4, !tbaa !11
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds ptr, ptr %217, i64 %219
  %221 = load ptr, ptr %220, align 8, !tbaa !5
  %222 = load i32, ptr %34, align 4, !tbaa !11
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds float, ptr %221, i64 %223
  %225 = load float, ptr %224, align 4, !tbaa !9
  store float %225, ptr %17, align 4, !tbaa !9
  %226 = load float, ptr %17, align 4, !tbaa !9
  %227 = load float, ptr %17, align 4, !tbaa !9
  %228 = fmul float %226, %227
  store float %228, ptr %31, align 4, !tbaa !9
  %229 = load float, ptr %15, align 4, !tbaa !9
  %230 = load float, ptr %16, align 4, !tbaa !9
  %231 = fmul float %229, %230
  store float %231, ptr %32, align 4, !tbaa !9
  %232 = load float, ptr %32, align 4, !tbaa !9
  %233 = load float, ptr %31, align 4, !tbaa !9
  %234 = fsub float %232, %233
  store float %234, ptr %18, align 4, !tbaa !9
  %235 = load float, ptr %18, align 4, !tbaa !9
  %236 = call noundef float @_ZSt4fabsf(float noundef %235)
  %237 = load ptr, ptr %33, align 8, !tbaa !5
  %238 = getelementptr inbounds %class.ImageContent, ptr %237, i32 0, i32 4
  %239 = load ptr, ptr %238, align 8, !tbaa !13
  %240 = load i32, ptr %27, align 4, !tbaa !11
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds ptr, ptr %239, i64 %241
  %243 = load ptr, ptr %242, align 8, !tbaa !5
  %244 = load i32, ptr %34, align 4, !tbaa !11
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds float, ptr %243, i64 %245
  store float %236, ptr %246, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %192
  %248 = load i32, ptr %34, align 4, !tbaa !11
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %34, align 4, !tbaa !11
  br label %183, !llvm.loop !18

250:                                              ; preds = %187
  br label %251

251:                                              ; preds = %250
  %252 = load i32, ptr %27, align 4, !tbaa !11
  %253 = add nsw i32 %252, 1
  store i32 %253, ptr %27, align 4, !tbaa !11
  br label %178, !llvm.loop !19

254:                                              ; preds = %178
  %255 = load ptr, ptr %22, align 8, !tbaa !5
  %256 = icmp eq ptr %255, null
  br i1 %256, label %258, label %257

257:                                              ; preds = %254
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %255) #7
  call void @_ZdlPvm(ptr noundef %255, i64 noundef 80) #9
  br label %258

258:                                              ; preds = %257, %254
  %259 = load ptr, ptr %25, align 8, !tbaa !5
  %260 = icmp eq ptr %259, null
  br i1 %260, label %262, label %261

261:                                              ; preds = %258
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %259) #7
  call void @_ZdlPvm(ptr noundef %259, i64 noundef 80) #9
  br label %262

262:                                              ; preds = %261, %258
  %263 = load ptr, ptr %26, align 8, !tbaa !5
  %264 = icmp eq ptr %263, null
  br i1 %264, label %266, label %265

265:                                              ; preds = %262
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %263) #7
  call void @_ZdlPvm(ptr noundef %263, i64 noundef 80) #9
  br label %266

266:                                              ; preds = %265, %262
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  store i32 5, ptr %35, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  %267 = load ptr, ptr %33, align 8, !tbaa !5
  %268 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %267)
  %269 = uitofp i32 %268 to double
  %270 = fdiv double %269, 2.000000e+00
  %271 = fptrunc double %270 to float
  store float %271, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  store i32 0, ptr %40, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  store i32 0, ptr %41, align 4, !tbaa !11
  %272 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 0, ptr %272, align 4, !tbaa !11
  %273 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 0, ptr %273, align 4, !tbaa !11
  %274 = load float, ptr %39, align 4, !tbaa !9
  %275 = load float, ptr %39, align 4, !tbaa !9
  %276 = fmul float %275, %274
  store float %276, ptr %39, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  %277 = load i32, ptr %35, align 4, !tbaa !11
  store i32 %277, ptr %42, align 4, !tbaa !11
  br label %278

278:                                              ; preds = %463, %266
  %279 = load i32, ptr %42, align 4, !tbaa !11
  %280 = load i32, ptr %35, align 4, !tbaa !11
  %281 = add nsw i32 %279, %280
  %282 = load i32, ptr %14, align 4, !tbaa !11
  %283 = icmp slt i32 %281, %282
  br i1 %283, label %285, label %284

284:                                              ; preds = %278
  store i32 14, ptr %43, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %466

285:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  %286 = load i32, ptr %35, align 4, !tbaa !11
  store i32 %286, ptr %44, align 4, !tbaa !11
  br label %287

287:                                              ; preds = %459, %285
  %288 = load i32, ptr %44, align 4, !tbaa !11
  %289 = load i32, ptr %35, align 4, !tbaa !11
  %290 = add nsw i32 %288, %289
  %291 = load i32, ptr %13, align 4, !tbaa !11
  %292 = icmp slt i32 %290, %291
  br i1 %292, label %294, label %293

293:                                              ; preds = %287
  store i32 17, ptr %43, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %462

294:                                              ; preds = %287
  %295 = load ptr, ptr %33, align 8, !tbaa !5
  %296 = getelementptr inbounds %class.ImageContent, ptr %295, i32 0, i32 4
  %297 = load ptr, ptr %296, align 8, !tbaa !13
  %298 = load i32, ptr %42, align 4, !tbaa !11
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds ptr, ptr %297, i64 %299
  %301 = load ptr, ptr %300, align 8, !tbaa !5
  %302 = load i32, ptr %44, align 4, !tbaa !11
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds float, ptr %301, i64 %303
  %305 = load float, ptr %304, align 4, !tbaa !9
  store float %305, ptr %37, align 4, !tbaa !9
  %306 = load float, ptr %37, align 4, !tbaa !9
  %307 = load ptr, ptr %33, align 8, !tbaa !5
  %308 = getelementptr inbounds %class.ImageContent, ptr %307, i32 0, i32 4
  %309 = load ptr, ptr %308, align 8, !tbaa !13
  %310 = load i32, ptr %42, align 4, !tbaa !11
  %311 = sub nsw i32 %310, 1
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds ptr, ptr %309, i64 %312
  %314 = load ptr, ptr %313, align 8, !tbaa !5
  %315 = load i32, ptr %44, align 4, !tbaa !11
  %316 = sub nsw i32 %315, 1
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds float, ptr %314, i64 %317
  %319 = load float, ptr %318, align 4, !tbaa !9
  %320 = fcmp ogt float %306, %319
  br i1 %320, label %321, label %458

321:                                              ; preds = %294
  %322 = load float, ptr %37, align 4, !tbaa !9
  %323 = load ptr, ptr %33, align 8, !tbaa !5
  %324 = getelementptr inbounds %class.ImageContent, ptr %323, i32 0, i32 4
  %325 = load ptr, ptr %324, align 8, !tbaa !13
  %326 = load i32, ptr %42, align 4, !tbaa !11
  %327 = sub nsw i32 %326, 1
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds ptr, ptr %325, i64 %328
  %330 = load ptr, ptr %329, align 8, !tbaa !5
  %331 = load i32, ptr %44, align 4, !tbaa !11
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds float, ptr %330, i64 %332
  %334 = load float, ptr %333, align 4, !tbaa !9
  %335 = fcmp ogt float %322, %334
  br i1 %335, label %336, label %458

336:                                              ; preds = %321
  %337 = load float, ptr %37, align 4, !tbaa !9
  %338 = load ptr, ptr %33, align 8, !tbaa !5
  %339 = getelementptr inbounds %class.ImageContent, ptr %338, i32 0, i32 4
  %340 = load ptr, ptr %339, align 8, !tbaa !13
  %341 = load i32, ptr %42, align 4, !tbaa !11
  %342 = sub nsw i32 %341, 1
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds ptr, ptr %340, i64 %343
  %345 = load ptr, ptr %344, align 8, !tbaa !5
  %346 = load i32, ptr %44, align 4, !tbaa !11
  %347 = add nsw i32 %346, 1
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds float, ptr %345, i64 %348
  %350 = load float, ptr %349, align 4, !tbaa !9
  %351 = fcmp ogt float %337, %350
  br i1 %351, label %352, label %458

352:                                              ; preds = %336
  %353 = load float, ptr %37, align 4, !tbaa !9
  %354 = load ptr, ptr %33, align 8, !tbaa !5
  %355 = getelementptr inbounds %class.ImageContent, ptr %354, i32 0, i32 4
  %356 = load ptr, ptr %355, align 8, !tbaa !13
  %357 = load i32, ptr %42, align 4, !tbaa !11
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds ptr, ptr %356, i64 %358
  %360 = load ptr, ptr %359, align 8, !tbaa !5
  %361 = load i32, ptr %44, align 4, !tbaa !11
  %362 = sub nsw i32 %361, 1
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds float, ptr %360, i64 %363
  %365 = load float, ptr %364, align 4, !tbaa !9
  %366 = fcmp ogt float %353, %365
  br i1 %366, label %367, label %458

367:                                              ; preds = %352
  %368 = load float, ptr %37, align 4, !tbaa !9
  %369 = load ptr, ptr %33, align 8, !tbaa !5
  %370 = getelementptr inbounds %class.ImageContent, ptr %369, i32 0, i32 4
  %371 = load ptr, ptr %370, align 8, !tbaa !13
  %372 = load i32, ptr %42, align 4, !tbaa !11
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds ptr, ptr %371, i64 %373
  %375 = load ptr, ptr %374, align 8, !tbaa !5
  %376 = load i32, ptr %44, align 4, !tbaa !11
  %377 = add nsw i32 %376, 1
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds float, ptr %375, i64 %378
  %380 = load float, ptr %379, align 4, !tbaa !9
  %381 = fcmp ogt float %368, %380
  br i1 %381, label %382, label %458

382:                                              ; preds = %367
  %383 = load float, ptr %37, align 4, !tbaa !9
  %384 = load ptr, ptr %33, align 8, !tbaa !5
  %385 = getelementptr inbounds %class.ImageContent, ptr %384, i32 0, i32 4
  %386 = load ptr, ptr %385, align 8, !tbaa !13
  %387 = load i32, ptr %42, align 4, !tbaa !11
  %388 = add nsw i32 %387, 1
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds ptr, ptr %386, i64 %389
  %391 = load ptr, ptr %390, align 8, !tbaa !5
  %392 = load i32, ptr %44, align 4, !tbaa !11
  %393 = sub nsw i32 %392, 1
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds float, ptr %391, i64 %394
  %396 = load float, ptr %395, align 4, !tbaa !9
  %397 = fcmp ogt float %383, %396
  br i1 %397, label %398, label %458

398:                                              ; preds = %382
  %399 = load float, ptr %37, align 4, !tbaa !9
  %400 = load ptr, ptr %33, align 8, !tbaa !5
  %401 = getelementptr inbounds %class.ImageContent, ptr %400, i32 0, i32 4
  %402 = load ptr, ptr %401, align 8, !tbaa !13
  %403 = load i32, ptr %42, align 4, !tbaa !11
  %404 = add nsw i32 %403, 1
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds ptr, ptr %402, i64 %405
  %407 = load ptr, ptr %406, align 8, !tbaa !5
  %408 = load i32, ptr %44, align 4, !tbaa !11
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds float, ptr %407, i64 %409
  %411 = load float, ptr %410, align 4, !tbaa !9
  %412 = fcmp ogt float %399, %411
  br i1 %412, label %413, label %458

413:                                              ; preds = %398
  %414 = load float, ptr %37, align 4, !tbaa !9
  %415 = load ptr, ptr %33, align 8, !tbaa !5
  %416 = getelementptr inbounds %class.ImageContent, ptr %415, i32 0, i32 4
  %417 = load ptr, ptr %416, align 8, !tbaa !13
  %418 = load i32, ptr %42, align 4, !tbaa !11
  %419 = add nsw i32 %418, 1
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds ptr, ptr %417, i64 %420
  %422 = load ptr, ptr %421, align 8, !tbaa !5
  %423 = load i32, ptr %44, align 4, !tbaa !11
  %424 = add nsw i32 %423, 1
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds float, ptr %422, i64 %425
  %427 = load float, ptr %426, align 4, !tbaa !9
  %428 = fcmp ogt float %414, %427
  br i1 %428, label %429, label %458

429:                                              ; preds = %413
  %430 = load float, ptr %37, align 4, !tbaa !9
  %431 = fcmp ogt float %430, 2.000000e+02
  br i1 %431, label %432, label %458

432:                                              ; preds = %429
  %433 = load i32, ptr %44, align 4, !tbaa !11
  %434 = load i32, ptr %20, align 4, !tbaa !11
  %435 = sub nsw i32 %433, %434
  store i32 %435, ptr %40, align 4, !tbaa !11
  %436 = load i32, ptr %42, align 4, !tbaa !11
  %437 = load i32, ptr %21, align 4, !tbaa !11
  %438 = sub nsw i32 %436, %437
  store i32 %438, ptr %41, align 4, !tbaa !11
  %439 = load i32, ptr %40, align 4, !tbaa !11
  %440 = load i32, ptr %40, align 4, !tbaa !11
  %441 = mul nsw i32 %439, %440
  %442 = load i32, ptr %41, align 4, !tbaa !11
  %443 = load i32, ptr %41, align 4, !tbaa !11
  %444 = mul nsw i32 %442, %443
  %445 = add nsw i32 %441, %444
  %446 = sitofp i32 %445 to float
  store float %446, ptr %36, align 4, !tbaa !9
  %447 = load float, ptr %36, align 4, !tbaa !9
  %448 = load float, ptr %39, align 4, !tbaa !9
  %449 = fcmp olt float %447, %448
  br i1 %449, label %450, label %457

450:                                              ; preds = %432
  %451 = load i32, ptr %40, align 4, !tbaa !11
  %452 = load ptr, ptr %9, align 8, !tbaa !5
  store i32 %451, ptr %452, align 4, !tbaa !11
  %453 = load i32, ptr %41, align 4, !tbaa !11
  %454 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 %453, ptr %454, align 4, !tbaa !11
  %455 = load float, ptr %36, align 4, !tbaa !9
  store float %455, ptr %39, align 4, !tbaa !9
  %456 = load float, ptr %37, align 4, !tbaa !9
  store float %456, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !11
  br label %457

457:                                              ; preds = %450, %432
  br label %458

458:                                              ; preds = %457, %429, %413, %398, %382, %367, %352, %336, %321, %294
  br label %459

459:                                              ; preds = %458
  %460 = load i32, ptr %44, align 4, !tbaa !11
  %461 = add nsw i32 %460, 1
  store i32 %461, ptr %44, align 4, !tbaa !11
  br label %287, !llvm.loop !20

462:                                              ; preds = %293
  br label %463

463:                                              ; preds = %462
  %464 = load i32, ptr %42, align 4, !tbaa !11
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr %42, align 4, !tbaa !11
  br label %278, !llvm.loop !21

466:                                              ; preds = %284
  %467 = load i32, ptr %29, align 4, !tbaa !11
  %468 = icmp ne i32 %467, 0
  br i1 %468, label %469, label %482

469:                                              ; preds = %466
  %470 = load ptr, ptr %7, align 8, !tbaa !5
  %471 = load ptr, ptr %8, align 8, !tbaa !5
  %472 = load i32, ptr %20, align 4, !tbaa !11
  %473 = load ptr, ptr %9, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !11
  %475 = add nsw i32 %472, %474
  %476 = load i32, ptr %21, align 4, !tbaa !11
  %477 = load ptr, ptr %10, align 8, !tbaa !5
  %478 = load i32, ptr %477, align 4, !tbaa !11
  %479 = add nsw i32 %476, %478
  %480 = load float, ptr %12, align 4, !tbaa !9
  %481 = load float, ptr %11, align 4, !tbaa !9
  call void @_Z5getMiP12ImageContentP6Matrixiiff(ptr noundef %470, ptr noundef %471, i32 noundef %475, i32 noundef %479, float noundef %480, float noundef %481)
  br label %482

482:                                              ; preds = %469, %466
  %483 = load ptr, ptr %33, align 8, !tbaa !5
  %484 = icmp eq ptr %483, null
  br i1 %484, label %486, label %485

485:                                              ; preds = %482
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %483) #7
  call void @_ZdlPvm(ptr noundef %483, i64 noundef 80) #9
  br label %486

486:                                              ; preds = %485, %482
  %487 = load i32, ptr %29, align 4, !tbaa !11
  store i32 1, ptr %43, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  ret i32 %487

488:                                              ; preds = %188, %165
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %489

489:                                              ; preds = %488, %161
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %490

490:                                              ; preds = %489, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %491

491:                                              ; preds = %490
  %492 = load ptr, ptr %23, align 8
  %493 = load i32, ptr %24, align 4
  %494 = insertvalue { ptr, i32 } poison, ptr %492, 0
  %495 = insertvalue { ptr, i32 } %494, i32 %493, 1
  resume { ptr, i32 } %495
}

declare void @_Z3dXXP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) #6

declare void @_Z3dYYP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) #6

declare void @_Z3dXYP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) #6

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 = { 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 = { nounwind }
attributes #8 = { builtin allocsize(0) }
attributes #9 = { 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}


; 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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z5getMiP12ImageContentP6Matrixiiff(ptr noundef, ptr noundef, i32 noundef, i32 noundef, float noundef, float noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
define dso_local noundef range(i32 0, 2) i32 @_Z5brownP12ImageContentP6MatrixRiS3_ff(ptr noundef nonnull %0, ptr noundef %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) local_unnamed_addr #4 personality ptr @__gxx_personality_v0 {
  %7 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %8 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %9 = ashr i32 %7, 1
  %10 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #6
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %10, i32 noundef %7, i32 noundef %8)
          to label %11 unwind label %68

11:                                               ; preds = %6
  %12 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #6
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %12, i32 noundef %7, i32 noundef %8)
          to label %13 unwind label %70

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

15:                                               ; preds = %13
  tail call void @_Z3dXXP12ImageContentS0_f(ptr noundef nonnull %0, ptr noundef nonnull %10, float noundef %4)
  tail call void @_Z3dYYP12ImageContentS0_f(ptr noundef nonnull %0, ptr noundef nonnull %12, float noundef %4)
  tail call void @_Z3dXYP12ImageContentS0_f(ptr noundef nonnull %0, ptr noundef nonnull %14, float noundef %4)
  %16 = fmul float %4, %4
  %17 = icmp sgt i32 %7, 0
  %18 = icmp sgt i32 %8, 0
  %or.cond = and i1 %17, %18
  br i1 %or.cond, label %.preheader180.lr.ph.split.us, label %._crit_edge183

.preheader180.lr.ph.split.us:                     ; preds = %15
  %19 = getelementptr inbounds i8, ptr %14, i64 16
  %20 = getelementptr inbounds i8, ptr %12, i64 16
  %21 = getelementptr inbounds i8, ptr %10, i64 16
  %22 = load ptr, ptr %21, align 8, !tbaa !5
  %23 = load ptr, ptr %20, align 8, !tbaa !5
  %24 = load ptr, ptr %19, align 8, !tbaa !5
  %wide.trip.count205 = zext nneg i32 %7 to i64
  %wide.trip.count = zext nneg i32 %8 to i64
  %25 = shl nuw nsw i64 %wide.trip.count, 2
  %min.iters.check = icmp ult i32 %8, 4
  %n.vec = and i64 %wide.trip.count, 2147483644
  %broadcast.splatinsert = insertelement <4 x float> poison, float %16, 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
  %xtraiter = and i64 %wide.trip.count, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %26 = add nsw i64 %wide.trip.count, -1
  br label %.preheader180.us

.preheader180.us:                                 ; preds = %._crit_edge.us, %.preheader180.lr.ph.split.us
  %indvars.iv202 = phi i64 [ %indvars.iv.next203, %._crit_edge.us ], [ 0, %.preheader180.lr.ph.split.us ]
  %27 = getelementptr inbounds ptr, ptr %22, i64 %indvars.iv202
  %28 = load ptr, ptr %27, align 8, !tbaa !11
  %29 = getelementptr inbounds ptr, ptr %23, i64 %indvars.iv202
  %30 = load ptr, ptr %29, align 8, !tbaa !11
  %31 = getelementptr inbounds ptr, ptr %24, i64 %indvars.iv202
  %32 = load ptr, ptr %31, align 8, !tbaa !11
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.preheader180.us
  %scevgep = getelementptr i8, ptr %28, i64 %25
  %scevgep231 = getelementptr i8, ptr %30, i64 %25
  %scevgep232 = getelementptr i8, ptr %32, i64 %25
  %bound0 = icmp ult ptr %28, %scevgep231
  %bound1 = icmp ult ptr %30, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0233 = icmp ult ptr %28, %scevgep232
  %bound1234 = icmp ult ptr %32, %scevgep
  %found.conflict235 = and i1 %bound0233, %bound1234
  %conflict.rdx = or i1 %found.conflict, %found.conflict235
  %bound0236 = icmp ult ptr %30, %scevgep232
  %bound1237 = icmp ult ptr %32, %scevgep231
  %found.conflict238 = and i1 %bound0236, %bound1237
  %conflict.rdx239 = or i1 %conflict.rdx, %found.conflict238
  br i1 %conflict.rdx239, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.memcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.memcheck ]
  %33 = getelementptr inbounds float, ptr %28, i64 %index
  %wide.load = load <4 x float>, ptr %33, align 4, !tbaa !12, !alias.scope !14, !noalias !17
  %34 = fmul <4 x float> %broadcast.splat, %wide.load
  store <4 x float> %34, ptr %33, align 4, !tbaa !12, !alias.scope !14, !noalias !17
  %35 = getelementptr inbounds float, ptr %30, i64 %index
  %wide.load240 = load <4 x float>, ptr %35, align 4, !tbaa !12, !alias.scope !20, !noalias !21
  %36 = fmul <4 x float> %broadcast.splat, %wide.load240
  store <4 x float> %36, ptr %35, align 4, !tbaa !12, !alias.scope !20, !noalias !21
  %37 = getelementptr inbounds float, ptr %32, i64 %index
  %wide.load241 = load <4 x float>, ptr %37, align 4, !tbaa !12, !alias.scope !21
  %38 = fmul <4 x float> %broadcast.splat, %wide.load241
  store <4 x float> %38, ptr %37, align 4, !tbaa !12, !alias.scope !21
  %index.next = add nuw i64 %index, 4
  %39 = icmp eq i64 %index.next, %n.vec
  br i1 %39, 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, %.preheader180.us
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.preheader180.us ], [ %n.vec, %middle.block ]
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %40 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.ph
  %41 = load float, ptr %40, align 4, !tbaa !12
  %42 = fmul float %16, %41
  store float %42, ptr %40, align 4, !tbaa !12
  %43 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.ph
  %44 = load float, ptr %43, align 4, !tbaa !12
  %45 = fmul float %16, %44
  store float %45, ptr %43, align 4, !tbaa !12
  %46 = getelementptr inbounds float, ptr %32, i64 %indvars.iv.ph
  %47 = load float, ptr %46, align 4, !tbaa !12
  %48 = fmul float %16, %47
  store float %48, ptr %46, align 4, !tbaa !12
  %indvars.iv.next.prol = or disjoint i64 %indvars.iv.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph.preheader ], [ %indvars.iv.next.prol, %scalar.ph.prol ]
  %49 = icmp eq i64 %indvars.iv.ph, %26
  br i1 %49, label %._crit_edge.us, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %50 = getelementptr inbounds float, ptr %28, i64 %indvars.iv
  %51 = load float, ptr %50, align 4, !tbaa !12
  %52 = fmul float %16, %51
  store float %52, ptr %50, align 4, !tbaa !12
  %53 = getelementptr inbounds float, ptr %30, i64 %indvars.iv
  %54 = load float, ptr %53, align 4, !tbaa !12
  %55 = fmul float %16, %54
  store float %55, ptr %53, align 4, !tbaa !12
  %56 = getelementptr inbounds float, ptr %32, i64 %indvars.iv
  %57 = load float, ptr %56, align 4, !tbaa !12
  %58 = fmul float %16, %57
  store float %58, ptr %56, align 4, !tbaa !12
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %59 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.next
  %60 = load float, ptr %59, align 4, !tbaa !12
  %61 = fmul float %16, %60
  store float %61, ptr %59, align 4, !tbaa !12
  %62 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.next
  %63 = load float, ptr %62, align 4, !tbaa !12
  %64 = fmul float %16, %63
  store float %64, ptr %62, align 4, !tbaa !12
  %65 = getelementptr inbounds float, ptr %32, i64 %indvars.iv.next
  %66 = load float, ptr %65, align 4, !tbaa !12
  %67 = fmul float %16, %66
  store float %67, ptr %65, align 4, !tbaa !12
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %._crit_edge.us, label %scalar.ph, !llvm.loop !26

._crit_edge.us:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next203 = add nuw nsw i64 %indvars.iv202, 1
  %exitcond206.not = icmp eq i64 %indvars.iv.next203, %wide.trip.count205
  br i1 %exitcond206.not, label %._crit_edge183, label %.preheader180.us, !llvm.loop !27

68:                                               ; preds = %6
  %69 = landingpad { ptr, i32 }
          cleanup
  br label %179

70:                                               ; preds = %11
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %179

72:                                               ; preds = %13
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %179

._crit_edge183:                                   ; preds = %._crit_edge.us, %15
  %74 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #6
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %74, i32 noundef %7, i32 noundef %8)
          to label %.preheader179 unwind label %104

.preheader179:                                    ; preds = %._crit_edge183
  br i1 %17, label %.preheader178.lr.ph, label %._crit_edge186

.preheader178.lr.ph:                              ; preds = %.preheader179
  %75 = icmp sgt i32 %8, 0
  %76 = getelementptr inbounds i8, ptr %10, i64 16
  %77 = getelementptr inbounds i8, ptr %12, i64 16
  %78 = getelementptr inbounds i8, ptr %14, i64 16
  %79 = getelementptr inbounds i8, ptr %74, i64 16
  br i1 %75, label %.preheader178.us.preheader, label %._crit_edge186

.preheader178.us.preheader:                       ; preds = %.preheader178.lr.ph
  %wide.trip.count215 = zext nneg i32 %7 to i64
  %wide.trip.count210 = zext nneg i32 %8 to i64
  br label %.preheader178.us

.preheader178.us:                                 ; preds = %.preheader178.us.preheader, %._crit_edge.us187
  %indvars.iv212 = phi i64 [ 0, %.preheader178.us.preheader ], [ %indvars.iv.next213, %._crit_edge.us187 ]
  br label %80

80:                                               ; preds = %.preheader178.us, %80
  %indvars.iv207 = phi i64 [ 0, %.preheader178.us ], [ %indvars.iv.next208, %80 ]
  %81 = load ptr, ptr %76, align 8, !tbaa !5
  %82 = getelementptr inbounds ptr, ptr %81, i64 %indvars.iv212
  %83 = load ptr, ptr %82, align 8, !tbaa !11
  %84 = getelementptr inbounds float, ptr %83, i64 %indvars.iv207
  %85 = load float, ptr %84, align 4, !tbaa !12
  %86 = load ptr, ptr %77, align 8, !tbaa !5
  %87 = getelementptr inbounds ptr, ptr %86, i64 %indvars.iv212
  %88 = load ptr, ptr %87, align 8, !tbaa !11
  %89 = getelementptr inbounds float, ptr %88, i64 %indvars.iv207
  %90 = load float, ptr %89, align 4, !tbaa !12
  %91 = load ptr, ptr %78, align 8, !tbaa !5
  %92 = getelementptr inbounds ptr, ptr %91, i64 %indvars.iv212
  %93 = load ptr, ptr %92, align 8, !tbaa !11
  %94 = getelementptr inbounds float, ptr %93, i64 %indvars.iv207
  %95 = load float, ptr %94, align 4, !tbaa !12
  %96 = fmul float %95, %95
  %97 = fmul float %85, %90
  %98 = fsub float %97, %96
  %99 = tail call noundef float @_ZSt4fabsf(float noundef %98)
  %100 = load ptr, ptr %79, align 8, !tbaa !5
  %101 = getelementptr inbounds ptr, ptr %100, i64 %indvars.iv212
  %102 = load ptr, ptr %101, align 8, !tbaa !11
  %103 = getelementptr inbounds float, ptr %102, i64 %indvars.iv207
  store float %99, ptr %103, align 4, !tbaa !12
  %indvars.iv.next208 = add nuw nsw i64 %indvars.iv207, 1
  %exitcond211.not = icmp eq i64 %indvars.iv.next208, %wide.trip.count210
  br i1 %exitcond211.not, label %._crit_edge.us187, label %80, !llvm.loop !28

._crit_edge.us187:                                ; preds = %80
  %indvars.iv.next213 = add nuw nsw i64 %indvars.iv212, 1
  %exitcond216.not = icmp eq i64 %indvars.iv.next213, %wide.trip.count215
  br i1 %exitcond216.not, label %._crit_edge186, label %.preheader178.us, !llvm.loop !29

104:                                              ; preds = %._crit_edge183
  %105 = landingpad { ptr, i32 }
          cleanup
  br label %179

._crit_edge186:                                   ; preds = %._crit_edge.us187, %.preheader178.lr.ph, %.preheader179
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %10) #7
  tail call void @_ZdlPvm(ptr noundef nonnull %10, i64 noundef 80) #8
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %12) #7
  tail call void @_ZdlPvm(ptr noundef nonnull %12, i64 noundef 80) #8
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %14) #7
  tail call void @_ZdlPvm(ptr noundef nonnull %14, i64 noundef 80) #8
  %106 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %74)
  store i32 0, ptr %2, align 4, !tbaa !30
  store i32 0, ptr %3, align 4, !tbaa !30
  %107 = icmp sgt i32 %7, 10
  %108 = icmp sgt i32 %8, 10
  %or.cond230 = and i1 %107, %108
  br i1 %or.cond230, label %.preheader.lr.ph.split.us, label %._crit_edge195.thread

.preheader.lr.ph.split.us:                        ; preds = %._crit_edge186
  %109 = uitofp i32 %106 to double
  %110 = fmul double %109, 5.000000e-01
  %111 = fptrunc double %110 to float
  %112 = fmul float %111, %111
  %113 = getelementptr inbounds i8, ptr %74, i64 16
  %114 = load ptr, ptr %113, align 8, !tbaa !5
  %115 = add nsw i32 %8, -5
  %116 = add nsw i32 %7, -5
  %wide.trip.count225 = zext nneg i32 %116 to i64
  %wide.trip.count220 = zext i32 %115 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %._crit_edge.us197, %.preheader.lr.ph.split.us
  %117 = phi i32 [ %174, %._crit_edge.us197 ], [ 0, %.preheader.lr.ph.split.us ]
  %indvars.iv222 = phi i64 [ %indvars.iv.next223, %._crit_edge.us197 ], [ 5, %.preheader.lr.ph.split.us ]
  %.0158193.us = phi float [ %.2.us, %._crit_edge.us197 ], [ %112, %.preheader.lr.ph.split.us ]
  %.0169192.us = phi i32 [ %.2171.us, %._crit_edge.us197 ], [ 0, %.preheader.lr.ph.split.us ]
  %118 = getelementptr inbounds ptr, ptr %114, i64 %indvars.iv222
  %119 = load ptr, ptr %118, align 8, !tbaa !11
  %120 = getelementptr i8, ptr %118, i64 -8
  %121 = load ptr, ptr %120, align 8, !tbaa !11
  %122 = getelementptr inbounds i8, ptr %118, i64 8
  %123 = trunc i64 %indvars.iv222 to i32
  %124 = sub i32 %123, %9
  %125 = mul nsw i32 %124, %124
  br label %126

126:                                              ; preds = %.preheader.us, %173
  %127 = phi i32 [ %117, %.preheader.us ], [ %174, %173 ]
  %indvars.iv217 = phi i64 [ 5, %.preheader.us ], [ %indvars.iv.next218, %173 ]
  %.1189.us = phi float [ %.0158193.us, %.preheader.us ], [ %.2.us, %173 ]
  %.1170188.us = phi i32 [ %.0169192.us, %.preheader.us ], [ %.2171.us, %173 ]
  %128 = getelementptr inbounds float, ptr %119, i64 %indvars.iv217
  %129 = load float, ptr %128, align 4, !tbaa !12
  %130 = add nsw i64 %indvars.iv217, -1
  %131 = getelementptr inbounds float, ptr %121, i64 %130
  %132 = load float, ptr %131, align 4, !tbaa !12
  %133 = fcmp ogt float %129, %132
  br i1 %133, label %134, label %173

134:                                              ; preds = %126
  %135 = getelementptr inbounds float, ptr %121, i64 %indvars.iv217
  %136 = load float, ptr %135, align 4, !tbaa !12
  %137 = fcmp ogt float %129, %136
  br i1 %137, label %138, label %173

138:                                              ; preds = %134
  %139 = add nuw nsw i64 %indvars.iv217, 1
  %140 = getelementptr inbounds float, ptr %121, i64 %139
  %141 = load float, ptr %140, align 4, !tbaa !12
  %142 = fcmp ogt float %129, %141
  br i1 %142, label %143, label %173

143:                                              ; preds = %138
  %144 = getelementptr inbounds float, ptr %119, i64 %130
  %145 = load float, ptr %144, align 4, !tbaa !12
  %146 = fcmp ogt float %129, %145
  br i1 %146, label %147, label %173

147:                                              ; preds = %143
  %148 = getelementptr inbounds float, ptr %119, i64 %139
  %149 = load float, ptr %148, align 4, !tbaa !12
  %150 = fcmp ogt float %129, %149
  br i1 %150, label %151, label %173

151:                                              ; preds = %147
  %152 = load ptr, ptr %122, align 8, !tbaa !11
  %153 = getelementptr inbounds float, ptr %152, i64 %130
  %154 = load float, ptr %153, align 4, !tbaa !12
  %155 = fcmp ogt float %129, %154
  br i1 %155, label %156, label %173

156:                                              ; preds = %151
  %157 = getelementptr inbounds float, ptr %152, i64 %indvars.iv217
  %158 = load float, ptr %157, align 4, !tbaa !12
  %159 = fcmp ogt float %129, %158
  br i1 %159, label %160, label %173

160:                                              ; preds = %156
  %161 = getelementptr inbounds float, ptr %152, i64 %139
  %162 = load float, ptr %161, align 4, !tbaa !12
  %163 = fcmp ogt float %129, %162
  %164 = fcmp ogt float %129, 2.000000e+02
  %or.cond.us = and i1 %164, %163
  br i1 %or.cond.us, label %165, label %173

165:                                              ; preds = %160
  %166 = trunc i64 %indvars.iv217 to i32
  %167 = sub i32 %166, %9
  %168 = mul nsw i32 %167, %167
  %169 = add nuw nsw i32 %168, %125
  %170 = uitofp nneg i32 %169 to float
  %171 = fcmp ogt float %.1189.us, %170
  br i1 %171, label %172, label %173

172:                                              ; preds = %165
  store i32 %167, ptr %2, align 4, !tbaa !30
  store i32 %124, ptr %3, align 4, !tbaa !30
  br label %173

173:                                              ; preds = %172, %165, %160, %156, %151, %147, %143, %138, %134, %126
  %174 = phi i32 [ %124, %172 ], [ %127, %165 ], [ %127, %160 ], [ %127, %156 ], [ %127, %151 ], [ %127, %147 ], [ %127, %143 ], [ %127, %138 ], [ %127, %134 ], [ %127, %126 ]
  %.2171.us = phi i32 [ 1, %172 ], [ %.1170188.us, %165 ], [ %.1170188.us, %160 ], [ %.1170188.us, %156 ], [ %.1170188.us, %151 ], [ %.1170188.us, %147 ], [ %.1170188.us, %143 ], [ %.1170188.us, %138 ], [ %.1170188.us, %134 ], [ %.1170188.us, %126 ]
  %.2.us = phi float [ %170, %172 ], [ %.1189.us, %165 ], [ %.1189.us, %160 ], [ %.1189.us, %156 ], [ %.1189.us, %151 ], [ %.1189.us, %147 ], [ %.1189.us, %143 ], [ %.1189.us, %138 ], [ %.1189.us, %134 ], [ %.1189.us, %126 ]
  %indvars.iv.next218 = add nuw nsw i64 %indvars.iv217, 1
  %exitcond221.not = icmp eq i64 %indvars.iv.next218, %wide.trip.count220
  br i1 %exitcond221.not, label %._crit_edge.us197, label %126, !llvm.loop !31

._crit_edge.us197:                                ; preds = %173
  %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1
  %exitcond226.not = icmp eq i64 %indvars.iv.next223, %wide.trip.count225
  br i1 %exitcond226.not, label %._crit_edge195, label %.preheader.us, !llvm.loop !32

._crit_edge195:                                   ; preds = %._crit_edge.us197
  %.not = icmp eq i32 %.2171.us, 0
  br i1 %.not, label %._crit_edge195.thread, label %175

175:                                              ; preds = %._crit_edge195
  %176 = load i32, ptr %2, align 4, !tbaa !30
  %177 = add nsw i32 %176, %9
  %178 = add nsw i32 %174, %9
  tail call void @_Z5getMiP12ImageContentP6Matrixiiff(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %177, i32 noundef %178, float noundef %5, float noundef %4)
  br label %._crit_edge195.thread

._crit_edge195.thread:                            ; preds = %._crit_edge186, %._crit_edge195, %175
  %.0169.lcssa229 = phi i32 [ 0, %._crit_edge195 ], [ %.2171.us, %175 ], [ 0, %._crit_edge186 ]
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %74) #7
  tail call void @_ZdlPvm(ptr noundef nonnull %74, i64 noundef 80) #8
  ret i32 %.0169.lcssa229

179:                                              ; preds = %70, %104, %72, %68
  %.sink = phi ptr [ %12, %70 ], [ %74, %104 ], [ %14, %72 ], [ %10, %68 ]
  %.pn.pn.pn = phi { ptr, i32 } [ %71, %70 ], [ %105, %104 ], [ %73, %72 ], [ %69, %68 ]
  tail call void @_ZdlPvm(ptr noundef nonnull %.sink, i64 noundef 80) #8
  resume { ptr, i32 } %.pn.pn.pn
}

declare void @_Z3dXXP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) local_unnamed_addr #5

declare void @_Z3dYYP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) local_unnamed_addr #5

declare void @_Z3dXYP12ImageContentS0_f(ptr noundef, ptr noundef, float noundef) local_unnamed_addr #5

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 = { 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 #2 = { 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 #3 = { 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 = { 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 #5 = { "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 = { builtin allocsize(0) }
attributes #7 = { nounwind }
attributes #8 = { 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 = distinct !{!28, !23}
!29 = distinct !{!29, !23}
!30 = !{!7, !7, i64 0}
!31 = distinct !{!31, !23}
!32 = distinct !{!32, !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,SROAPass,SimplifyCFGPass,TailCallElimPass