; LLVM IR from ox-vgg/vise :: src/search_engine/relja_retrival/external/KMCode_relja/descriptor/CornerDetecto_ebbd0182 (f)

; 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: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

; 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: mustprogress uwtable
define dso_local void @_Z7hessianP12ImageContentS0_f(ptr noundef %0, ptr noundef %1, float noundef %2) #5 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca float, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  %23 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store float %2, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  %24 = load ptr, ptr %4, align 8, !tbaa !5
  %25 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %24)
  store i32 %25, ptr %8, align 4, !tbaa !11
  %26 = load ptr, ptr %4, align 8, !tbaa !5
  %27 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %26)
  store i32 %27, ptr %7, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  %28 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #8
  %29 = load i32, ptr %8, align 4, !tbaa !11
  %30 = load i32, ptr %7, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %28, i32 noundef %29, i32 noundef %30)
          to label %31 unwind label %134

31:                                               ; preds = %3
  store ptr %28, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %32 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #8
  %33 = load i32, ptr %8, align 4, !tbaa !11
  %34 = load i32, ptr %7, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %32, i32 noundef %33, i32 noundef %34)
          to label %35 unwind label %138

35:                                               ; preds = %31
  store ptr %32, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %36 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #8
  %37 = load i32, ptr %8, align 4, !tbaa !11
  %38 = load i32, ptr %7, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %36, i32 noundef %37, i32 noundef %38)
          to label %39 unwind label %142

39:                                               ; preds = %35
  store ptr %36, ptr %17, align 8, !tbaa !5
  %40 = load ptr, ptr %4, align 8, !tbaa !5
  %41 = load ptr, ptr %13, align 8, !tbaa !5
  %42 = load float, ptr %6, align 4, !tbaa !9
  call void @_Z3dXXP12ImageContentS0_f(ptr noundef %40, ptr noundef %41, float noundef %42)
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = load ptr, ptr %16, align 8, !tbaa !5
  %45 = load float, ptr %6, align 4, !tbaa !9
  call void @_Z3dYYP12ImageContentS0_f(ptr noundef %43, ptr noundef %44, float noundef %45)
  %46 = load ptr, ptr %4, align 8, !tbaa !5
  %47 = load ptr, ptr %17, align 8, !tbaa !5
  %48 = load float, ptr %6, align 4, !tbaa !9
  call void @_Z3dXYP12ImageContentS0_f(ptr noundef %46, ptr noundef %47, float noundef %48)
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %49 = load float, ptr %6, align 4, !tbaa !9
  %50 = load float, ptr %6, align 4, !tbaa !9
  %51 = fmul float %49, %50
  store float %51, ptr %20, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %52

52:                                               ; preds = %147, %39
  %53 = load i32, ptr %18, align 4, !tbaa !11
  %54 = load i32, ptr %8, align 4, !tbaa !11
  %55 = icmp slt i32 %53, %54
  br i1 %55, label %56, label %150

56:                                               ; preds = %52
  store i32 0, ptr %19, align 4, !tbaa !11
  br label %57

57:                                               ; preds = %131, %56
  %58 = load i32, ptr %19, align 4, !tbaa !11
  %59 = load i32, ptr %7, align 4, !tbaa !11
  %60 = icmp slt i32 %58, %59
  br i1 %60, label %61, label %146

61:                                               ; preds = %57
  %62 = load float, ptr %20, align 4, !tbaa !9
  %63 = load ptr, ptr %13, align 8, !tbaa !5
  %64 = getelementptr inbounds %class.ImageContent, ptr %63, i32 0, i32 4
  %65 = load ptr, ptr %64, align 8, !tbaa !13
  %66 = load i32, ptr %18, align 4, !tbaa !11
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds ptr, ptr %65, i64 %67
  %69 = load ptr, ptr %68, align 8, !tbaa !5
  %70 = load i32, ptr %19, align 4, !tbaa !11
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds float, ptr %69, i64 %71
  %73 = load float, ptr %72, align 4, !tbaa !9
  %74 = fmul float %62, %73
  %75 = load ptr, ptr %13, align 8, !tbaa !5
  %76 = getelementptr inbounds %class.ImageContent, ptr %75, i32 0, i32 4
  %77 = load ptr, ptr %76, align 8, !tbaa !13
  %78 = load i32, ptr %18, align 4, !tbaa !11
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds ptr, ptr %77, i64 %79
  %81 = load ptr, ptr %80, align 8, !tbaa !5
  %82 = load i32, ptr %19, align 4, !tbaa !11
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds float, ptr %81, i64 %83
  store float %74, ptr %84, align 4, !tbaa !9
  %85 = load float, ptr %20, align 4, !tbaa !9
  %86 = load ptr, ptr %16, 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 %18, 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 %19, 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 %16, 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 %18, 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 %19, 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 %20, align 4, !tbaa !9
  %109 = load ptr, ptr %17, 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 %18, 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 %19, 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 %17, 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 %18, 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 %19, 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
  br label %131

131:                                              ; preds = %61
  %132 = load i32, ptr %19, align 4, !tbaa !11
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr %19, align 4, !tbaa !11
  br label %57, !llvm.loop !15

134:                                              ; preds = %3
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %14, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %15, align 4
  call void @_ZdlPvm(ptr noundef %28, i64 noundef 80) #9
  br label %236

138:                                              ; preds = %31
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %14, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %15, align 4
  call void @_ZdlPvm(ptr noundef %32, i64 noundef 80) #9
  br label %235

142:                                              ; preds = %35
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %14, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %15, align 4
  call void @_ZdlPvm(ptr noundef %36, i64 noundef 80) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %235

146:                                              ; preds = %57
  br label %147

147:                                              ; preds = %146
  %148 = load i32, ptr %18, align 4, !tbaa !11
  %149 = add nsw i32 %148, 1
  store i32 %149, ptr %18, align 4, !tbaa !11
  br label %52, !llvm.loop !17

150:                                              ; preds = %52
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %151

151:                                              ; preds = %219, %150
  %152 = load i32, ptr %18, align 4, !tbaa !11
  %153 = load i32, ptr %8, align 4, !tbaa !11
  %154 = icmp slt i32 %152, %153
  br i1 %154, label %155, label %222

155:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !11
  br label %156

156:                                              ; preds = %215, %155
  %157 = load i32, ptr %23, align 4, !tbaa !11
  %158 = load i32, ptr %7, align 4, !tbaa !11
  %159 = icmp slt i32 %157, %158
  br i1 %159, label %161, label %160

160:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %218

161:                                              ; preds = %156
  %162 = load ptr, ptr %13, align 8, !tbaa !5
  %163 = getelementptr inbounds %class.ImageContent, ptr %162, i32 0, i32 4
  %164 = load ptr, ptr %163, align 8, !tbaa !13
  %165 = load i32, ptr %18, align 4, !tbaa !11
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds ptr, ptr %164, i64 %166
  %168 = load ptr, ptr %167, align 8, !tbaa !5
  %169 = load i32, ptr %23, align 4, !tbaa !11
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds float, ptr %168, i64 %170
  %172 = load float, ptr %171, align 4, !tbaa !9
  store float %172, ptr %9, align 4, !tbaa !9
  %173 = load ptr, ptr %16, align 8, !tbaa !5
  %174 = getelementptr inbounds %class.ImageContent, ptr %173, i32 0, i32 4
  %175 = load ptr, ptr %174, align 8, !tbaa !13
  %176 = load i32, ptr %18, align 4, !tbaa !11
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds ptr, ptr %175, i64 %177
  %179 = load ptr, ptr %178, align 8, !tbaa !5
  %180 = load i32, ptr %23, align 4, !tbaa !11
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds float, ptr %179, i64 %181
  %183 = load float, ptr %182, align 4, !tbaa !9
  store float %183, ptr %10, align 4, !tbaa !9
  %184 = load ptr, ptr %17, align 8, !tbaa !5
  %185 = getelementptr inbounds %class.ImageContent, ptr %184, i32 0, i32 4
  %186 = load ptr, ptr %185, align 8, !tbaa !13
  %187 = load i32, ptr %18, align 4, !tbaa !11
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds ptr, ptr %186, i64 %188
  %190 = load ptr, ptr %189, align 8, !tbaa !5
  %191 = load i32, ptr %23, align 4, !tbaa !11
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds float, ptr %190, i64 %192
  %194 = load float, ptr %193, align 4, !tbaa !9
  store float %194, ptr %11, align 4, !tbaa !9
  %195 = load float, ptr %11, align 4, !tbaa !9
  %196 = load float, ptr %11, align 4, !tbaa !9
  %197 = fmul float %195, %196
  store float %197, ptr %21, align 4, !tbaa !9
  %198 = load float, ptr %9, align 4, !tbaa !9
  %199 = load float, ptr %10, align 4, !tbaa !9
  %200 = fmul float %198, %199
  store float %200, ptr %22, align 4, !tbaa !9
  %201 = load float, ptr %22, align 4, !tbaa !9
  %202 = load float, ptr %21, align 4, !tbaa !9
  %203 = fsub float %201, %202
  store float %203, ptr %12, align 4, !tbaa !9
  %204 = load float, ptr %12, align 4, !tbaa !9
  %205 = load ptr, ptr %5, align 8, !tbaa !5
  %206 = getelementptr inbounds %class.ImageContent, ptr %205, i32 0, i32 4
  %207 = load ptr, ptr %206, align 8, !tbaa !13
  %208 = load i32, ptr %18, align 4, !tbaa !11
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds ptr, ptr %207, i64 %209
  %211 = load ptr, ptr %210, align 8, !tbaa !5
  %212 = load i32, ptr %23, align 4, !tbaa !11
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds float, ptr %211, i64 %213
  store float %204, ptr %214, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %161
  %216 = load i32, ptr %23, align 4, !tbaa !11
  %217 = add nsw i32 %216, 1
  store i32 %217, ptr %23, align 4, !tbaa !11
  br label %156, !llvm.loop !18

218:                                              ; preds = %160
  br label %219

219:                                              ; preds = %218
  %220 = load i32, ptr %18, align 4, !tbaa !11
  %221 = add nsw i32 %220, 1
  store i32 %221, ptr %18, align 4, !tbaa !11
  br label %151, !llvm.loop !19

222:                                              ; preds = %151
  %223 = load ptr, ptr %13, align 8, !tbaa !5
  %224 = icmp eq ptr %223, null
  br i1 %224, label %226, label %225

225:                                              ; preds = %222
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %223) #7
  call void @_ZdlPvm(ptr noundef %223, i64 noundef 80) #9
  br label %226

226:                                              ; preds = %225, %222
  %227 = load ptr, ptr %16, align 8, !tbaa !5
  %228 = icmp eq ptr %227, null
  br i1 %228, label %230, label %229

229:                                              ; preds = %226
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %227) #7
  call void @_ZdlPvm(ptr noundef %227, i64 noundef 80) #9
  br label %230

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

233:                                              ; preds = %230
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %231) #7
  call void @_ZdlPvm(ptr noundef %231, i64 noundef 80) #9
  br label %234

234:                                              ; preds = %233, %230
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  ret void

235:                                              ; preds = %142, %138
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %236

236:                                              ; preds = %235, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %237

237:                                              ; preds = %236
  %238 = load ptr, ptr %14, align 8
  %239 = load i32, ptr %15, align 4
  %240 = insertvalue { ptr, i32 } poison, ptr %238, 0
  %241 = insertvalue { ptr, i32 } %240, i32 %239, 1
  resume { ptr, i32 } %241
}

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 = { 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 = { 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 #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}


; 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: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #0

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

declare i32 @__gxx_personality_v0(...)

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

; 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: mustprogress uwtable
define dso_local void @_Z7hessianP12ImageContentS0_f(ptr noundef nonnull %0, ptr nocapture noundef readonly %1, float noundef %2) local_unnamed_addr #4 personality ptr @__gxx_personality_v0 {
  %4 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %5 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %6 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #6
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %6, i32 noundef %4, i32 noundef %5)
          to label %7 unwind label %134

7:                                                ; preds = %3
  %8 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #6
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %8, i32 noundef %4, i32 noundef %5)
          to label %9 unwind label %136

9:                                                ; preds = %7
  %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 %4, i32 noundef %5)
          to label %11 unwind label %138

11:                                               ; preds = %9
  tail call void @_Z3dXXP12ImageContentS0_f(ptr noundef nonnull %0, ptr noundef nonnull %6, float noundef %2)
  tail call void @_Z3dYYP12ImageContentS0_f(ptr noundef nonnull %0, ptr noundef nonnull %8, float noundef %2)
  tail call void @_Z3dXYP12ImageContentS0_f(ptr noundef nonnull %0, ptr noundef nonnull %10, float noundef %2)
  %12 = fmul float %2, %2
  %13 = icmp sgt i32 %4, 0
  %14 = icmp sgt i32 %5, 0
  %or.cond = and i1 %13, %14
  br i1 %or.cond, label %.preheader85.lr.ph.split.us, label %._crit_edge90

.preheader85.lr.ph.split.us:                      ; preds = %11
  %15 = getelementptr inbounds i8, ptr %10, i64 16
  %16 = getelementptr inbounds i8, ptr %8, i64 16
  %17 = getelementptr inbounds i8, ptr %6, i64 16
  %18 = load ptr, ptr %17, align 8, !tbaa !5
  %19 = load ptr, ptr %16, align 8, !tbaa !5
  %20 = load ptr, ptr %15, align 8, !tbaa !5
  %wide.trip.count98 = zext nneg i32 %4 to i64
  %wide.trip.count = zext nneg i32 %5 to i64
  %21 = shl nuw nsw i64 %wide.trip.count, 2
  %min.iters.check = icmp ult i32 %5, 4
  %n.vec = and i64 %wide.trip.count, 2147483644
  %broadcast.splatinsert = insertelement <4 x float> poison, float %12, 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
  %22 = add nsw i64 %wide.trip.count, -1
  br label %.preheader85.us

.preheader85.us:                                  ; preds = %._crit_edge.us, %.preheader85.lr.ph.split.us
  %indvars.iv95 = phi i64 [ %indvars.iv.next96, %._crit_edge.us ], [ 0, %.preheader85.lr.ph.split.us ]
  %23 = getelementptr inbounds ptr, ptr %18, i64 %indvars.iv95
  %24 = load ptr, ptr %23, align 8, !tbaa !11
  %25 = getelementptr inbounds ptr, ptr %19, i64 %indvars.iv95
  %26 = load ptr, ptr %25, align 8, !tbaa !11
  %27 = getelementptr inbounds ptr, ptr %20, i64 %indvars.iv95
  %28 = load ptr, ptr %27, align 8, !tbaa !11
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.preheader85.us
  %scevgep = getelementptr i8, ptr %24, i64 %21
  %scevgep112 = getelementptr i8, ptr %26, i64 %21
  %scevgep113 = getelementptr i8, ptr %28, i64 %21
  %bound0 = icmp ult ptr %24, %scevgep112
  %bound1 = icmp ult ptr %26, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0114 = icmp ult ptr %24, %scevgep113
  %bound1115 = icmp ult ptr %28, %scevgep
  %found.conflict116 = and i1 %bound0114, %bound1115
  %conflict.rdx = or i1 %found.conflict, %found.conflict116
  %bound0117 = icmp ult ptr %26, %scevgep113
  %bound1118 = icmp ult ptr %28, %scevgep112
  %found.conflict119 = and i1 %bound0117, %bound1118
  %conflict.rdx120 = or i1 %conflict.rdx, %found.conflict119
  br i1 %conflict.rdx120, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.memcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.memcheck ]
  %29 = getelementptr inbounds float, ptr %24, i64 %index
  %wide.load = load <4 x float>, ptr %29, align 4, !tbaa !12, !alias.scope !14, !noalias !17
  %30 = fmul <4 x float> %broadcast.splat, %wide.load
  store <4 x float> %30, ptr %29, align 4, !tbaa !12, !alias.scope !14, !noalias !17
  %31 = getelementptr inbounds float, ptr %26, i64 %index
  %wide.load121 = load <4 x float>, ptr %31, align 4, !tbaa !12, !alias.scope !20, !noalias !21
  %32 = fmul <4 x float> %broadcast.splat, %wide.load121
  store <4 x float> %32, ptr %31, align 4, !tbaa !12, !alias.scope !20, !noalias !21
  %33 = getelementptr inbounds float, ptr %28, i64 %index
  %wide.load122 = load <4 x float>, ptr %33, align 4, !tbaa !12, !alias.scope !21
  %34 = fmul <4 x float> %broadcast.splat, %wide.load122
  store <4 x float> %34, ptr %33, align 4, !tbaa !12, !alias.scope !21
  %index.next = add nuw i64 %index, 4
  %35 = icmp eq i64 %index.next, %n.vec
  br i1 %35, 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, %.preheader85.us
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.preheader85.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
  %36 = getelementptr inbounds float, ptr %24, i64 %indvars.iv.ph
  %37 = load float, ptr %36, align 4, !tbaa !12
  %38 = fmul float %12, %37
  store float %38, ptr %36, align 4, !tbaa !12
  %39 = getelementptr inbounds float, ptr %26, i64 %indvars.iv.ph
  %40 = load float, ptr %39, align 4, !tbaa !12
  %41 = fmul float %12, %40
  store float %41, ptr %39, align 4, !tbaa !12
  %42 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.ph
  %43 = load float, ptr %42, align 4, !tbaa !12
  %44 = fmul float %12, %43
  store float %44, ptr %42, 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 ]
  %45 = icmp eq i64 %indvars.iv.ph, %22
  br i1 %45, 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 ]
  %46 = getelementptr inbounds float, ptr %24, i64 %indvars.iv
  %47 = load float, ptr %46, align 4, !tbaa !12
  %48 = fmul float %12, %47
  store float %48, ptr %46, align 4, !tbaa !12
  %49 = getelementptr inbounds float, ptr %26, i64 %indvars.iv
  %50 = load float, ptr %49, align 4, !tbaa !12
  %51 = fmul float %12, %50
  store float %51, ptr %49, align 4, !tbaa !12
  %52 = getelementptr inbounds float, ptr %28, i64 %indvars.iv
  %53 = load float, ptr %52, align 4, !tbaa !12
  %54 = fmul float %12, %53
  store float %54, ptr %52, align 4, !tbaa !12
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %55 = getelementptr inbounds float, ptr %24, i64 %indvars.iv.next
  %56 = load float, ptr %55, align 4, !tbaa !12
  %57 = fmul float %12, %56
  store float %57, ptr %55, align 4, !tbaa !12
  %58 = getelementptr inbounds float, ptr %26, i64 %indvars.iv.next
  %59 = load float, ptr %58, align 4, !tbaa !12
  %60 = fmul float %12, %59
  store float %60, ptr %58, align 4, !tbaa !12
  %61 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.next
  %62 = load float, ptr %61, align 4, !tbaa !12
  %63 = fmul float %12, %62
  store float %63, ptr %61, 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.next96 = add nuw nsw i64 %indvars.iv95, 1
  %exitcond99.not = icmp eq i64 %indvars.iv.next96, %wide.trip.count98
  br i1 %exitcond99.not, label %.preheader84, label %.preheader85.us, !llvm.loop !27

.preheader84:                                     ; preds = %._crit_edge.us
  br i1 %13, label %.preheader.lr.ph.split.us, label %._crit_edge90

.preheader.lr.ph.split.us:                        ; preds = %.preheader84
  %64 = getelementptr inbounds i8, ptr %1, i64 16
  %65 = getelementptr inbounds i8, ptr %10, i64 16
  %66 = getelementptr inbounds i8, ptr %8, i64 16
  %67 = getelementptr inbounds i8, ptr %6, i64 16
  %68 = load ptr, ptr %67, align 8, !tbaa !5
  %69 = load ptr, ptr %66, align 8, !tbaa !5
  %70 = load ptr, ptr %65, align 8, !tbaa !5
  %71 = load ptr, ptr %64, align 8, !tbaa !5
  %wide.trip.count108 = zext nneg i32 %4 to i64
  %wide.trip.count103 = zext nneg i32 %5 to i64
  %min.iters.check130 = icmp ult i32 %5, 8
  %n.vec133 = and i64 %wide.trip.count, 2147483640
  %cmp.n144 = icmp eq i64 %n.vec133, %wide.trip.count
  %xtraiter145 = and i64 %wide.trip.count, 1
  %lcmp.mod146.not = icmp eq i64 %xtraiter145, 0
  %72 = add nsw i64 %wide.trip.count, -1
  br label %.preheader.us

.preheader.us:                                    ; preds = %._crit_edge.us91, %.preheader.lr.ph.split.us
  %indvars.iv105 = phi i64 [ %indvars.iv.next106, %._crit_edge.us91 ], [ 0, %.preheader.lr.ph.split.us ]
  %73 = getelementptr inbounds ptr, ptr %68, i64 %indvars.iv105
  %74 = load ptr, ptr %73, align 8, !tbaa !11
  %75 = getelementptr inbounds ptr, ptr %69, i64 %indvars.iv105
  %76 = load ptr, ptr %75, align 8, !tbaa !11
  %77 = getelementptr inbounds ptr, ptr %70, i64 %indvars.iv105
  %78 = load ptr, ptr %77, align 8, !tbaa !11
  %79 = getelementptr inbounds ptr, ptr %71, i64 %indvars.iv105
  %80 = load ptr, ptr %79, align 8, !tbaa !11
  br i1 %min.iters.check130, label %scalar.ph129.preheader, label %vector.memcheck123

vector.memcheck123:                               ; preds = %.preheader.us
  %81 = ptrtoint ptr %80 to i64
  %82 = ptrtoint ptr %78 to i64
  %83 = ptrtoint ptr %76 to i64
  %84 = ptrtoint ptr %74 to i64
  %85 = sub i64 %81, %84
  %diff.check = icmp ult i64 %85, 32
  %86 = sub i64 %81, %83
  %diff.check124 = icmp ult i64 %86, 32
  %conflict.rdx125 = or i1 %diff.check, %diff.check124
  %87 = sub i64 %81, %82
  %diff.check126 = icmp ult i64 %87, 32
  %conflict.rdx127 = or i1 %conflict.rdx125, %diff.check126
  br i1 %conflict.rdx127, label %scalar.ph129.preheader, label %vector.body135

vector.body135:                                   ; preds = %vector.memcheck123, %vector.body135
  %index136 = phi i64 [ %index.next143, %vector.body135 ], [ 0, %vector.memcheck123 ]
  %88 = getelementptr inbounds float, ptr %74, i64 %index136
  %89 = getelementptr inbounds i8, ptr %88, i64 16
  %wide.load137 = load <4 x float>, ptr %88, align 4, !tbaa !12
  %wide.load138 = load <4 x float>, ptr %89, align 4, !tbaa !12
  %90 = getelementptr inbounds float, ptr %76, i64 %index136
  %91 = getelementptr inbounds i8, ptr %90, i64 16
  %wide.load139 = load <4 x float>, ptr %90, align 4, !tbaa !12
  %wide.load140 = load <4 x float>, ptr %91, align 4, !tbaa !12
  %92 = getelementptr inbounds float, ptr %78, i64 %index136
  %93 = getelementptr inbounds i8, ptr %92, i64 16
  %wide.load141 = load <4 x float>, ptr %92, align 4, !tbaa !12
  %wide.load142 = load <4 x float>, ptr %93, align 4, !tbaa !12
  %94 = fmul <4 x float> %wide.load141, %wide.load141
  %95 = fmul <4 x float> %wide.load142, %wide.load142
  %96 = fmul <4 x float> %wide.load137, %wide.load139
  %97 = fmul <4 x float> %wide.load138, %wide.load140
  %98 = fsub <4 x float> %96, %94
  %99 = fsub <4 x float> %97, %95
  %100 = getelementptr inbounds float, ptr %80, i64 %index136
  %101 = getelementptr inbounds i8, ptr %100, i64 16
  store <4 x float> %98, ptr %100, align 4, !tbaa !12
  store <4 x float> %99, ptr %101, align 4, !tbaa !12
  %index.next143 = add nuw i64 %index136, 8
  %102 = icmp eq i64 %index.next143, %n.vec133
  br i1 %102, label %middle.block128, label %vector.body135, !llvm.loop !28

middle.block128:                                  ; preds = %vector.body135
  br i1 %cmp.n144, label %._crit_edge.us91, label %scalar.ph129.preheader

scalar.ph129.preheader:                           ; preds = %middle.block128, %vector.memcheck123, %.preheader.us
  %indvars.iv100.ph = phi i64 [ 0, %vector.memcheck123 ], [ 0, %.preheader.us ], [ %n.vec133, %middle.block128 ]
  br i1 %lcmp.mod146.not, label %scalar.ph129.prol.loopexit, label %scalar.ph129.prol

scalar.ph129.prol:                                ; preds = %scalar.ph129.preheader
  %103 = getelementptr inbounds float, ptr %74, i64 %indvars.iv100.ph
  %104 = load float, ptr %103, align 4, !tbaa !12
  %105 = getelementptr inbounds float, ptr %76, i64 %indvars.iv100.ph
  %106 = load float, ptr %105, align 4, !tbaa !12
  %107 = getelementptr inbounds float, ptr %78, i64 %indvars.iv100.ph
  %108 = load float, ptr %107, align 4, !tbaa !12
  %109 = fmul float %108, %108
  %110 = fmul float %104, %106
  %111 = fsub float %110, %109
  %112 = getelementptr inbounds float, ptr %80, i64 %indvars.iv100.ph
  store float %111, ptr %112, align 4, !tbaa !12
  %indvars.iv.next101.prol = or disjoint i64 %indvars.iv100.ph, 1
  br label %scalar.ph129.prol.loopexit

scalar.ph129.prol.loopexit:                       ; preds = %scalar.ph129.prol, %scalar.ph129.preheader
  %indvars.iv100.unr = phi i64 [ %indvars.iv100.ph, %scalar.ph129.preheader ], [ %indvars.iv.next101.prol, %scalar.ph129.prol ]
  %113 = icmp eq i64 %indvars.iv100.ph, %72
  br i1 %113, label %._crit_edge.us91, label %scalar.ph129

scalar.ph129:                                     ; preds = %scalar.ph129.prol.loopexit, %scalar.ph129
  %indvars.iv100 = phi i64 [ %indvars.iv.next101.1, %scalar.ph129 ], [ %indvars.iv100.unr, %scalar.ph129.prol.loopexit ]
  %114 = getelementptr inbounds float, ptr %74, i64 %indvars.iv100
  %115 = load float, ptr %114, align 4, !tbaa !12
  %116 = getelementptr inbounds float, ptr %76, i64 %indvars.iv100
  %117 = load float, ptr %116, align 4, !tbaa !12
  %118 = getelementptr inbounds float, ptr %78, i64 %indvars.iv100
  %119 = load float, ptr %118, align 4, !tbaa !12
  %120 = fmul float %119, %119
  %121 = fmul float %115, %117
  %122 = fsub float %121, %120
  %123 = getelementptr inbounds float, ptr %80, i64 %indvars.iv100
  store float %122, ptr %123, align 4, !tbaa !12
  %indvars.iv.next101 = add nuw nsw i64 %indvars.iv100, 1
  %124 = getelementptr inbounds float, ptr %74, i64 %indvars.iv.next101
  %125 = load float, ptr %124, align 4, !tbaa !12
  %126 = getelementptr inbounds float, ptr %76, i64 %indvars.iv.next101
  %127 = load float, ptr %126, align 4, !tbaa !12
  %128 = getelementptr inbounds float, ptr %78, i64 %indvars.iv.next101
  %129 = load float, ptr %128, align 4, !tbaa !12
  %130 = fmul float %129, %129
  %131 = fmul float %125, %127
  %132 = fsub float %131, %130
  %133 = getelementptr inbounds float, ptr %80, i64 %indvars.iv.next101
  store float %132, ptr %133, align 4, !tbaa !12
  %indvars.iv.next101.1 = add nuw nsw i64 %indvars.iv100, 2
  %exitcond104.not.1 = icmp eq i64 %indvars.iv.next101.1, %wide.trip.count103
  br i1 %exitcond104.not.1, label %._crit_edge.us91, label %scalar.ph129, !llvm.loop !29

._crit_edge.us91:                                 ; preds = %scalar.ph129.prol.loopexit, %scalar.ph129, %middle.block128
  %indvars.iv.next106 = add nuw nsw i64 %indvars.iv105, 1
  %exitcond109.not = icmp eq i64 %indvars.iv.next106, %wide.trip.count108
  br i1 %exitcond109.not, label %._crit_edge90, label %.preheader.us, !llvm.loop !30

134:                                              ; preds = %3
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %140

136:                                              ; preds = %7
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %140

138:                                              ; preds = %9
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %140

._crit_edge90:                                    ; preds = %._crit_edge.us91, %11, %.preheader84
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %6) #7
  tail call void @_ZdlPvm(ptr noundef nonnull %6, i64 noundef 80) #8
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %8) #7
  tail call void @_ZdlPvm(ptr noundef nonnull %8, i64 noundef 80) #8
  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
  ret void

140:                                              ; preds = %136, %138, %134
  %.sink = phi ptr [ %8, %136 ], [ %10, %138 ], [ %6, %134 ]
  %.pn.pn = phi { ptr, i32 } [ %137, %136 ], [ %139, %138 ], [ %135, %134 ]
  tail call void @_ZdlPvm(ptr noundef nonnull %.sink, i64 noundef 80) #8
  resume { ptr, i32 } %.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 = { 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 #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 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, !24, !25}
!29 = distinct !{!29, !23, !24}
!30 = distinct !{!30, !23}


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