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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<ImageContent *, std::allocator<ImageContent *>>::_Vector_impl" }
%"struct.std::_Vector_base<ImageContent *, std::allocator<ImageContent *>>::_Vector_impl" = type { %"struct.std::_Vector_base<ImageContent *, std::allocator<ImageContent *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ImageContent *, std::allocator<ImageContent *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ImageContent = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1

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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIP12ImageContentSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z3dogP12ImageContentRSt6vectorIP16CornerDescriptorSaIS3_EE(ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(24) %1) #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca float, align 4
  %6 = alloca %"class.std::vector.0", align 8
  %7 = alloca %"class.std::vector.0", align 8
  %8 = alloca %"class.std::vector.0", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::vector.0", align 8
  %24 = alloca %"class.std::vector.0", align 8
  %25 = alloca %"class.std::vector.0", align 8
  %26 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #8
  store float 0x3FF69FBE80000000, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %7) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %27 = load ptr, ptr %3, align 8, !tbaa !5
  %28 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %27)
          to label %29 unwind label %53

29:                                               ; preds = %2
  %30 = load ptr, ptr %3, align 8, !tbaa !5
  %31 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %30)
          to label %32 unwind label %53

32:                                               ; preds = %29
  %33 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %28, i32 noundef %31)
          to label %34 unwind label %53

34:                                               ; preds = %32
  %35 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.5)
          to label %36 unwind label %53

36:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %37 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
          to label %38 unwind label %57

38:                                               ; preds = %36
  %39 = load ptr, ptr %3, align 8, !tbaa !5
  %40 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %39)
          to label %41 unwind label %61

41:                                               ; preds = %38
  %42 = load ptr, ptr %3, align 8, !tbaa !5
  %43 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %42)
          to label %44 unwind label %61

44:                                               ; preds = %41
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %37, i32 noundef %40, i32 noundef %43)
          to label %45 unwind label %61

45:                                               ; preds = %44
  store ptr %37, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 0, ptr %12, align 4, !tbaa !11
  br label %46

46:                                               ; preds = %110, %45
  %47 = load i32, ptr %12, align 4, !tbaa !11
  %48 = load ptr, ptr %3, align 8, !tbaa !5
  %49 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %48)
          to label %50 unwind label %65

50:                                               ; preds = %46
  %51 = icmp ult i32 %47, %49
  br i1 %51, label %69, label %52

52:                                               ; preds = %50
  store i32 2, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %114

53:                                               ; preds = %34, %32, %29, %2
  %54 = landingpad { ptr, i32 }
          cleanup
  %55 = extractvalue { ptr, i32 } %54, 0
  store ptr %55, ptr %9, align 8
  %56 = extractvalue { ptr, i32 } %54, 1
  store i32 %56, ptr %10, align 4
  br label %343

57:                                               ; preds = %36
  %58 = landingpad { ptr, i32 }
          cleanup
  %59 = extractvalue { ptr, i32 } %58, 0
  store ptr %59, ptr %9, align 8
  %60 = extractvalue { ptr, i32 } %58, 1
  store i32 %60, ptr %10, align 4
  br label %342

61:                                               ; preds = %44, %41, %38
  %62 = landingpad { ptr, i32 }
          cleanup
  %63 = extractvalue { ptr, i32 } %62, 0
  store ptr %63, ptr %9, align 8
  %64 = extractvalue { ptr, i32 } %62, 1
  store i32 %64, ptr %10, align 4
  call void @_ZdlPvm(ptr noundef %37, i64 noundef 80) #10
  br label %342

65:                                               ; preds = %46
  %66 = landingpad { ptr, i32 }
          cleanup
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %9, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %10, align 4
  br label %113

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

70:                                               ; preds = %106, %69
  %71 = load i32, ptr %14, align 4, !tbaa !11
  %72 = load ptr, ptr %3, align 8, !tbaa !5
  %73 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %72)
          to label %74 unwind label %77

74:                                               ; preds = %70
  %75 = icmp ult i32 %71, %73
  br i1 %75, label %81, label %76

76:                                               ; preds = %74
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %109

77:                                               ; preds = %70
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %9, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %113

81:                                               ; preds = %74
  %82 = load ptr, ptr %3, align 8, !tbaa !5
  %83 = getelementptr inbounds %class.ImageContent, ptr %82, i32 0, i32 4
  %84 = load ptr, ptr %83, align 8, !tbaa !13
  %85 = load i32, ptr %12, align 4, !tbaa !11
  %86 = zext i32 %85 to i64
  %87 = getelementptr inbounds ptr, ptr %84, i64 %86
  %88 = load ptr, ptr %87, align 8, !tbaa !5
  %89 = load i32, ptr %14, align 4, !tbaa !11
  %90 = zext i32 %89 to i64
  %91 = getelementptr inbounds float, ptr %88, i64 %90
  %92 = load float, ptr %91, align 4, !tbaa !9
  %93 = fpext float %92 to double
  %94 = fdiv double %93, 2.550000e+02
  %95 = fptrunc double %94 to float
  %96 = load ptr, ptr %11, align 8, !tbaa !5
  %97 = getelementptr inbounds %class.ImageContent, ptr %96, i32 0, i32 4
  %98 = load ptr, ptr %97, align 8, !tbaa !13
  %99 = load i32, ptr %12, align 4, !tbaa !11
  %100 = zext i32 %99 to i64
  %101 = getelementptr inbounds ptr, ptr %98, i64 %100
  %102 = load ptr, ptr %101, align 8, !tbaa !5
  %103 = load i32, ptr %14, align 4, !tbaa !11
  %104 = zext i32 %103 to i64
  %105 = getelementptr inbounds float, ptr %102, i64 %104
  store float %95, ptr %105, align 4, !tbaa !9
  br label %106

106:                                              ; preds = %81
  %107 = load i32, ptr %14, align 4, !tbaa !11
  %108 = add i32 %107, 1
  store i32 %108, ptr %14, align 4, !tbaa !11
  br label %70, !llvm.loop !15

109:                                              ; preds = %76
  br label %110

110:                                              ; preds = %109
  %111 = load i32, ptr %12, align 4, !tbaa !11
  %112 = add i32 %111, 1
  store i32 %112, ptr %12, align 4, !tbaa !11
  br label %46, !llvm.loop !17

113:                                              ; preds = %77, %65
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %342

114:                                              ; preds = %52
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %115 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
          to label %116 unwind label %170

116:                                              ; preds = %114
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %117)
          to label %119 unwind label %174

119:                                              ; preds = %116
  %120 = load ptr, ptr %11, align 8, !tbaa !5
  %121 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %120)
          to label %122 unwind label %174

122:                                              ; preds = %119
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %115, i32 noundef %118, i32 noundef %121)
          to label %123 unwind label %174

123:                                              ; preds = %122
  store ptr %115, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %124 = load ptr, ptr %11, align 8, !tbaa !5
  %125 = load ptr, ptr %15, align 8, !tbaa !5
  invoke void @_Z13_HorConvSqrt2P12ImageContentS0_(ptr noundef %124, ptr noundef %125)
          to label %126 unwind label %178

126:                                              ; preds = %123
  %127 = load ptr, ptr %15, align 8, !tbaa !5
  %128 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_Z13_VerConvSqrt2P12ImageContentS0_(ptr noundef %127, ptr noundef %128)
          to label %129 unwind label %178

129:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 0, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  store i32 10, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  store i32 1, ptr %20, align 4, !tbaa !11
  br label %130

130:                                              ; preds = %278, %129
  %131 = load ptr, ptr %11, align 8, !tbaa !5
  %132 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %131)
          to label %133 unwind label %182

133:                                              ; preds = %130
  %134 = load i32, ptr %19, align 4, !tbaa !11
  %135 = icmp ugt i32 %132, %134
  br i1 %135, label %136, label %145

136:                                              ; preds = %133
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  %138 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %137)
          to label %139 unwind label %182

139:                                              ; preds = %136
  %140 = load i32, ptr %19, align 4, !tbaa !11
  %141 = icmp ugt i32 %138, %140
  br i1 %141, label %142, label %145

142:                                              ; preds = %139
  %143 = load i32, ptr %18, align 4, !tbaa !11
  %144 = icmp ult i32 %143, 20
  br label %145

145:                                              ; preds = %142, %139, %133
  %146 = phi i1 [ false, %139 ], [ false, %133 ], [ %144, %142 ]
  br i1 %146, label %147, label %286

147:                                              ; preds = %145
  %148 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
          to label %149 unwind label %182

149:                                              ; preds = %147
  %150 = load ptr, ptr %11, align 8, !tbaa !5
  %151 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %150)
          to label %152 unwind label %186

152:                                              ; preds = %149
  %153 = load ptr, ptr %11, align 8, !tbaa !5
  %154 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %153)
          to label %155 unwind label %186

155:                                              ; preds = %152
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %148, i32 noundef %151, i32 noundef %154)
          to label %156 unwind label %186

156:                                              ; preds = %155
  store ptr %148, ptr %16, align 8, !tbaa !5
  %157 = load ptr, ptr %11, align 8, !tbaa !5
  %158 = load ptr, ptr %15, align 8, !tbaa !5
  invoke void @_Z13_HorConvSqrt2P12ImageContentS0_(ptr noundef %157, ptr noundef %158)
          to label %159 unwind label %182

159:                                              ; preds = %156
  %160 = load ptr, ptr %15, align 8, !tbaa !5
  %161 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_Z13_VerConvSqrt2P12ImageContentS0_(ptr noundef %160, ptr noundef %161)
          to label %162 unwind label %182

162:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 0, ptr %21, align 4, !tbaa !11
  br label %163

163:                                              ; preds = %247, %162
  %164 = load i32, ptr %21, align 4, !tbaa !11
  %165 = load ptr, ptr %11, align 8, !tbaa !5
  %166 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %165)
          to label %167 unwind label %190

167:                                              ; preds = %163
  %168 = icmp ult i32 %164, %166
  br i1 %168, label %194, label %169

169:                                              ; preds = %167
  store i32 10, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %251

170:                                              ; preds = %114
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %9, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %10, align 4
  br label %341

174:                                              ; preds = %122, %119, %116
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %9, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %10, align 4
  call void @_ZdlPvm(ptr noundef %115, i64 noundef 80) #10
  br label %341

178:                                              ; preds = %126, %123
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %9, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %10, align 4
  br label %340

182:                                              ; preds = %286, %269, %259, %255, %254, %252, %251, %159, %156, %147, %136, %130
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %9, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %10, align 4
  br label %339

186:                                              ; preds = %155, %152, %149
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %9, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %10, align 4
  call void @_ZdlPvm(ptr noundef %148, i64 noundef 80) #10
  br label %339

190:                                              ; preds = %163
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %9, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %10, align 4
  br label %250

194:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 0, ptr %22, align 4, !tbaa !11
  br label %195

195:                                              ; preds = %243, %194
  %196 = load i32, ptr %22, align 4, !tbaa !11
  %197 = load ptr, ptr %11, align 8, !tbaa !5
  %198 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %197)
          to label %199 unwind label %202

199:                                              ; preds = %195
  %200 = icmp ult i32 %196, %198
  br i1 %200, label %206, label %201

201:                                              ; preds = %199
  store i32 13, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %246

202:                                              ; preds = %195
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %9, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %250

206:                                              ; preds = %199
  %207 = load ptr, ptr %11, align 8, !tbaa !5
  %208 = getelementptr inbounds %class.ImageContent, ptr %207, i32 0, i32 4
  %209 = load ptr, ptr %208, align 8, !tbaa !13
  %210 = load i32, ptr %21, align 4, !tbaa !11
  %211 = zext i32 %210 to i64
  %212 = getelementptr inbounds ptr, ptr %209, i64 %211
  %213 = load ptr, ptr %212, align 8, !tbaa !5
  %214 = load i32, ptr %22, align 4, !tbaa !11
  %215 = zext i32 %214 to i64
  %216 = getelementptr inbounds float, ptr %213, i64 %215
  %217 = load float, ptr %216, align 4, !tbaa !9
  %218 = load ptr, ptr %16, align 8, !tbaa !5
  %219 = getelementptr inbounds %class.ImageContent, ptr %218, i32 0, i32 4
  %220 = load ptr, ptr %219, align 8, !tbaa !13
  %221 = load i32, ptr %21, align 4, !tbaa !11
  %222 = zext i32 %221 to i64
  %223 = getelementptr inbounds ptr, ptr %220, i64 %222
  %224 = load ptr, ptr %223, align 8, !tbaa !5
  %225 = load i32, ptr %22, align 4, !tbaa !11
  %226 = zext i32 %225 to i64
  %227 = getelementptr inbounds float, ptr %224, i64 %226
  %228 = load float, ptr %227, align 4, !tbaa !9
  %229 = fsub float %217, %228
  %230 = fpext float %229 to double
  %231 = fmul double 1.000000e+01, %230
  %232 = fptrunc double %231 to float
  %233 = load ptr, ptr %15, align 8, !tbaa !5
  %234 = getelementptr inbounds %class.ImageContent, ptr %233, i32 0, i32 4
  %235 = load ptr, ptr %234, align 8, !tbaa !13
  %236 = load i32, ptr %21, align 4, !tbaa !11
  %237 = zext i32 %236 to i64
  %238 = getelementptr inbounds ptr, ptr %235, i64 %237
  %239 = load ptr, ptr %238, align 8, !tbaa !5
  %240 = load i32, ptr %22, align 4, !tbaa !11
  %241 = zext i32 %240 to i64
  %242 = getelementptr inbounds float, ptr %239, i64 %241
  store float %232, ptr %242, align 4, !tbaa !9
  br label %243

243:                                              ; preds = %206
  %244 = load i32, ptr %22, align 4, !tbaa !11
  %245 = add i32 %244, 1
  store i32 %245, ptr %22, align 4, !tbaa !11
  br label %195, !llvm.loop !18

246:                                              ; preds = %201
  br label %247

247:                                              ; preds = %246
  %248 = load i32, ptr %21, align 4, !tbaa !11
  %249 = add i32 %248, 1
  store i32 %249, ptr %21, align 4, !tbaa !11
  br label %163, !llvm.loop !19

250:                                              ; preds = %202, %190
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %339

251:                                              ; preds = %169
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %252 unwind label %182

252:                                              ; preds = %251
  %253 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_Z10ReduceSizeP12ImageContentRS0_(ptr noundef %253, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %254 unwind label %182

254:                                              ; preds = %252
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %255 unwind label %182

255:                                              ; preds = %254
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %256 unwind label %182

256:                                              ; preds = %255
  %257 = load i32, ptr %20, align 4, !tbaa !11
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %269, label %259

259:                                              ; preds = %256
  %260 = load i32, ptr %18, align 4, !tbaa !11
  %261 = zext i32 %260 to i64
  %262 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ImageContentSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %261) #8
  %263 = load ptr, ptr %262, align 8, !tbaa !5
  %264 = load i32, ptr %18, align 4, !tbaa !11
  %265 = zext i32 %264 to i64
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ImageContentSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %265) #8
  %267 = load ptr, ptr %266, align 8, !tbaa !5
  invoke void @_Z13GradOriImagesP12ImageContentS0_(ptr noundef %263, ptr noundef %267)
          to label %268 unwind label %182

268:                                              ; preds = %259
  br label %269

269:                                              ; preds = %268, %256
  store i32 0, ptr %20, align 4, !tbaa !11
  %270 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
          to label %271 unwind label %182

271:                                              ; preds = %269
  %272 = load ptr, ptr %17, align 8, !tbaa !5
  %273 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %272)
          to label %274 unwind label %282

274:                                              ; preds = %271
  %275 = load ptr, ptr %17, align 8, !tbaa !5
  %276 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %275)
          to label %277 unwind label %282

277:                                              ; preds = %274
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %270, i32 noundef %273, i32 noundef %276)
          to label %278 unwind label %282

278:                                              ; preds = %277
  store ptr %270, ptr %15, align 8, !tbaa !5
  %279 = load i32, ptr %18, align 4, !tbaa !11
  %280 = add i32 %279, 1
  store i32 %280, ptr %18, align 4, !tbaa !11
  %281 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %281, ptr %11, align 8, !tbaa !5
  br label %130, !llvm.loop !20

282:                                              ; preds = %277, %274, %271
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %9, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %10, align 4
  call void @_ZdlPvm(ptr noundef %270, i64 noundef 80) #10
  br label %339

286:                                              ; preds = %145
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %7)
          to label %287 unwind label %182

287:                                              ; preds = %286
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %288 unwind label %299

288:                                              ; preds = %287
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %289 unwind label %303

289:                                              ; preds = %288
  %290 = load float, ptr %5, align 4, !tbaa !9
  %291 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_Z10FindMaxMinSt6vectorIP12ImageContentSaIS1_EES3_S3_fRS_IP16CornerDescriptorSaIS5_EEf(ptr noundef %23, ptr noundef %24, ptr noundef %25, float noundef %290, ptr noundef nonnull align 8 dereferenceable(24) %291, float noundef 0x3FD3333340000000)
          to label %292 unwind label %307

292:                                              ; preds = %289
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %293

293:                                              ; preds = %335, %292
  %294 = load i32, ptr %26, align 4, !tbaa !11
  %295 = zext i32 %294 to i64
  %296 = call noundef i64 @_ZNKSt6vectorIP12ImageContentSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  %297 = icmp ult i64 %295, %296
  br i1 %297, label %313, label %298

298:                                              ; preds = %293
  store i32 16, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %338

299:                                              ; preds = %287
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %9, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %10, align 4
  br label %312

303:                                              ; preds = %288
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %9, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %10, align 4
  br label %311

307:                                              ; preds = %289
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %9, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %10, align 4
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  br label %311

311:                                              ; preds = %307, %303
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #8
  br label %312

312:                                              ; preds = %311, %299
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  br label %339

313:                                              ; preds = %293
  %314 = load i32, ptr %26, align 4, !tbaa !11
  %315 = zext i32 %314 to i64
  %316 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ImageContentSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %315) #8
  %317 = load ptr, ptr %316, align 8, !tbaa !5
  %318 = icmp eq ptr %317, null
  br i1 %318, label %320, label %319

319:                                              ; preds = %313
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %317) #8
  call void @_ZdlPvm(ptr noundef %317, i64 noundef 80) #10
  br label %320

320:                                              ; preds = %319, %313
  %321 = load i32, ptr %26, align 4, !tbaa !11
  %322 = zext i32 %321 to i64
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ImageContentSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %322) #8
  %324 = load ptr, ptr %323, align 8, !tbaa !5
  %325 = icmp eq ptr %324, null
  br i1 %325, label %327, label %326

326:                                              ; preds = %320
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %324) #8
  call void @_ZdlPvm(ptr noundef %324, i64 noundef 80) #10
  br label %327

327:                                              ; preds = %326, %320
  %328 = load i32, ptr %26, align 4, !tbaa !11
  %329 = zext i32 %328 to i64
  %330 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ImageContentSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %329) #8
  %331 = load ptr, ptr %330, align 8, !tbaa !5
  %332 = icmp eq ptr %331, null
  br i1 %332, label %334, label %333

333:                                              ; preds = %327
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %331) #8
  call void @_ZdlPvm(ptr noundef %331, i64 noundef 80) #10
  br label %334

334:                                              ; preds = %333, %327
  br label %335

335:                                              ; preds = %334
  %336 = load i32, ptr %26, align 4, !tbaa !11
  %337 = add i32 %336, 1
  store i32 %337, ptr %26, align 4, !tbaa !11
  br label %293, !llvm.loop !21

338:                                              ; preds = %298
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  ret void

339:                                              ; preds = %312, %282, %250, %186, %182
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %340

340:                                              ; preds = %339, %178
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %341

341:                                              ; preds = %340, %174, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %342

342:                                              ; preds = %341, %113, %61, %57
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %343

343:                                              ; preds = %342, %53
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  br label %344

344:                                              ; preds = %343
  %345 = load ptr, ptr %9, align 8
  %346 = load i32, ptr %10, align 4
  %347 = insertvalue { ptr, i32 } poison, ptr %345, 0
  %348 = insertvalue { ptr, i32 } %347, i32 %346, 1
  resume { ptr, i32 } %348
}

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

declare i32 @printf(ptr noundef, ...) #6

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

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

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

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

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !6, i64 16}
!14 = !{!"_ZTS12ImageContent", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<ImageContent *, std::allocator<ImageContent *>>::_Vector_impl" }
%"struct.std::_Vector_base<ImageContent *, std::allocator<ImageContent *>>::_Vector_impl" = type { %"struct.std::_Vector_base<ImageContent *, std::allocator<ImageContent *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ImageContent *, std::allocator<ImageContent *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1

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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIP12ImageContentSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z3dogP12ImageContentRSt6vectorIP16CornerDescriptorSaIS3_EE(ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(24) %1) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.0", align 8
  %4 = alloca %"class.std::vector.0", align 8
  %5 = alloca %"class.std::vector.0", align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::vector.0", align 8
  %11 = alloca %"class.std::vector.0", align 8
  %12 = alloca %"class.std::vector.0", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  %13 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %14 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %15 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %13, i32 noundef %14)
  %16 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %17 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
          to label %18 unwind label %26

18:                                               ; preds = %2
  %19 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %20 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %17, i32 noundef %19, i32 noundef %20)
          to label %21 unwind label %28

21:                                               ; preds = %18
  store ptr %17, ptr %6, align 8, !tbaa !5
  %22 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %.not = icmp eq i32 %22, 0
  br i1 %.not, label %._crit_edge72, label %.preheader67.lr.ph

.preheader67.lr.ph:                               ; preds = %21
  %23 = getelementptr inbounds i8, ptr %0, i64 16
  br label %.preheader67

.preheader67:                                     ; preds = %.preheader67.lr.ph, %._crit_edge
  %indvars.iv93 = phi i64 [ 0, %.preheader67.lr.ph ], [ %indvars.iv.next94, %._crit_edge ]
  %24 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %.not86 = icmp eq i32 %24, 0
  br i1 %.not86, label %._crit_edge, label %.lr.ph

._crit_edge72:                                    ; preds = %._crit_edge, %21
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  %25 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
          to label %48 unwind label %82

26:                                               ; preds = %2
  %27 = landingpad { ptr, i32 }
          cleanup
  br label %177

28:                                               ; preds = %18
  %29 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %17, i64 noundef 80) #10
  br label %177

._crit_edge:                                      ; preds = %.lr.ph, %.preheader67
  %indvars.iv.next94 = add nuw nsw i64 %indvars.iv93, 1
  %30 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %31 = zext i32 %30 to i64
  %32 = icmp ult i64 %indvars.iv.next94, %31
  br i1 %32, label %.preheader67, label %._crit_edge72, !llvm.loop !9

.lr.ph:                                           ; preds = %.preheader67, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader67 ]
  %33 = load ptr, ptr %23, align 8, !tbaa !11
  %34 = getelementptr inbounds ptr, ptr %33, i64 %indvars.iv93
  %35 = load ptr, ptr %34, align 8, !tbaa !5
  %36 = getelementptr inbounds float, ptr %35, i64 %indvars.iv
  %37 = load float, ptr %36, align 4, !tbaa !14
  %38 = fdiv float %37, 2.550000e+02
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = getelementptr inbounds i8, ptr %39, i64 16
  %41 = load ptr, ptr %40, align 8, !tbaa !11
  %42 = getelementptr inbounds ptr, ptr %41, i64 %indvars.iv93
  %43 = load ptr, ptr %42, align 8, !tbaa !5
  %44 = getelementptr inbounds float, ptr %43, i64 %indvars.iv
  store float %38, ptr %44, align 4, !tbaa !14
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %45 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %0)
  %46 = zext i32 %45 to i64
  %47 = icmp ult i64 %indvars.iv.next, %46
  br i1 %47, label %.lr.ph, label %._crit_edge, !llvm.loop !16

48:                                               ; preds = %._crit_edge72
  %49 = load ptr, ptr %6, align 8, !tbaa !5
  %50 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %49)
  %51 = load ptr, ptr %6, align 8, !tbaa !5
  %52 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %51)
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %25, i32 noundef %50, i32 noundef %52)
          to label %53 unwind label %84

53:                                               ; preds = %48
  store ptr %25, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z13_HorConvSqrt2P12ImageContentS0_(ptr noundef %54, ptr noundef nonnull %25)
          to label %55 unwind label %86

55:                                               ; preds = %53
  %56 = load ptr, ptr %7, align 8, !tbaa !5
  %57 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z13_VerConvSqrt2P12ImageContentS0_(ptr noundef %56, ptr noundef %57)
          to label %.preheader66 unwind label %86

.preheader66:                                     ; preds = %55
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  %59 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %58)
  %60 = icmp ugt i32 %59, 10
  br i1 %60, label %.lr.ph80, label %.critedge

.lr.ph80:                                         ; preds = %.preheader66, %136
  %indvars.iv102 = phi i64 [ %indvars.iv.next103, %136 ], [ 0, %.preheader66 ]
  %.not79 = phi i1 [ true, %136 ], [ false, %.preheader66 ]
  %61 = load ptr, ptr %6, align 8, !tbaa !5
  %62 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %61)
  %63 = icmp ugt i32 %62, 10
  %64 = icmp ult i64 %indvars.iv102, 20
  %or.cond = select i1 %63, i1 %64, i1 false
  br i1 %or.cond, label %65, label %.critedge

65:                                               ; preds = %.lr.ph80
  %66 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
          to label %67 unwind label %.loopexit

67:                                               ; preds = %65
  %68 = load ptr, ptr %6, align 8, !tbaa !5
  %69 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %68)
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %70)
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %66, i32 noundef %69, i32 noundef %71)
          to label %72 unwind label %88

72:                                               ; preds = %67
  store ptr %66, ptr %8, align 8, !tbaa !5
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_Z13_HorConvSqrt2P12ImageContentS0_(ptr noundef %73, ptr noundef %74)
          to label %75 unwind label %.loopexit

75:                                               ; preds = %72
  %76 = load ptr, ptr %7, align 8, !tbaa !5
  %77 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z13_VerConvSqrt2P12ImageContentS0_(ptr noundef %76, ptr noundef %77)
          to label %.preheader65 unwind label %.loopexit

.preheader65:                                     ; preds = %75
  %78 = load ptr, ptr %6, align 8, !tbaa !5
  %79 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %78)
  %.not87 = icmp eq i32 %79, 0
  br i1 %.not87, label %._crit_edge77, label %.preheader

.preheader:                                       ; preds = %.preheader65, %._crit_edge75
  %indvars.iv99 = phi i64 [ %indvars.iv.next100, %._crit_edge75 ], [ 0, %.preheader65 ]
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %80)
  %.not88 = icmp eq i32 %81, 0
  br i1 %.not88, label %._crit_edge75, label %.lr.ph74

._crit_edge77:                                    ; preds = %._crit_edge75, %.preheader65
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %119 unwind label %.loopexit

82:                                               ; preds = %._crit_edge72
  %83 = landingpad { ptr, i32 }
          cleanup
  br label %176

84:                                               ; preds = %48
  %85 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %25, i64 noundef 80) #10
  br label %176

86:                                               ; preds = %55, %53
  %87 = landingpad { ptr, i32 }
          cleanup
  br label %175

.loopexit:                                        ; preds = %65, %72, %75, %._crit_edge77, %119, %121, %122, %124, %129
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %175

.loopexit.split-lp:                               ; preds = %.critedge
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %175

88:                                               ; preds = %67
  %89 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %66, i64 noundef 80) #10
  br label %175

._crit_edge75:                                    ; preds = %.lr.ph74, %.preheader
  %indvars.iv.next100 = add nuw nsw i64 %indvars.iv99, 1
  %90 = load ptr, ptr %6, align 8, !tbaa !5
  %91 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %90)
  %92 = zext i32 %91 to i64
  %93 = icmp ult i64 %indvars.iv.next100, %92
  br i1 %93, label %.preheader, label %._crit_edge77, !llvm.loop !17

.lr.ph74:                                         ; preds = %.preheader, %.lr.ph74
  %indvars.iv96 = phi i64 [ %indvars.iv.next97, %.lr.ph74 ], [ 0, %.preheader ]
  %94 = load ptr, ptr %6, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %94, i64 16
  %96 = load ptr, ptr %95, align 8, !tbaa !11
  %97 = getelementptr inbounds ptr, ptr %96, i64 %indvars.iv99
  %98 = load ptr, ptr %97, align 8, !tbaa !5
  %99 = getelementptr inbounds float, ptr %98, i64 %indvars.iv96
  %100 = load float, ptr %99, align 4, !tbaa !14
  %101 = load ptr, ptr %8, align 8, !tbaa !5
  %102 = getelementptr inbounds i8, ptr %101, i64 16
  %103 = load ptr, ptr %102, align 8, !tbaa !11
  %104 = getelementptr inbounds ptr, ptr %103, i64 %indvars.iv99
  %105 = load ptr, ptr %104, align 8, !tbaa !5
  %106 = getelementptr inbounds float, ptr %105, i64 %indvars.iv96
  %107 = load float, ptr %106, align 4, !tbaa !14
  %108 = fsub float %100, %107
  %109 = fmul float %108, 1.000000e+01
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = getelementptr inbounds i8, ptr %110, i64 16
  %112 = load ptr, ptr %111, align 8, !tbaa !11
  %113 = getelementptr inbounds ptr, ptr %112, i64 %indvars.iv99
  %114 = load ptr, ptr %113, align 8, !tbaa !5
  %115 = getelementptr inbounds float, ptr %114, i64 %indvars.iv96
  store float %109, ptr %115, align 4, !tbaa !14
  %indvars.iv.next97 = add nuw nsw i64 %indvars.iv96, 1
  %116 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %94)
  %117 = zext i32 %116 to i64
  %118 = icmp ult i64 %indvars.iv.next97, %117
  br i1 %118, label %.lr.ph74, label %._crit_edge75, !llvm.loop !18

119:                                              ; preds = %._crit_edge77
  %120 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z10ReduceSizeP12ImageContentRS0_(ptr noundef %120, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %121 unwind label %.loopexit

121:                                              ; preds = %119
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %122 unwind label %.loopexit

122:                                              ; preds = %121
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %123 unwind label %.loopexit

123:                                              ; preds = %122
  br i1 %.not79, label %124, label %129

124:                                              ; preds = %123
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ImageContentSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv102) #8
  %126 = load ptr, ptr %125, align 8, !tbaa !5
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ImageContentSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv102) #8
  %128 = load ptr, ptr %127, align 8, !tbaa !5
  invoke void @_Z13GradOriImagesP12ImageContentS0_(ptr noundef %126, ptr noundef %128)
          to label %129 unwind label %.loopexit

129:                                              ; preds = %124, %123
  %130 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
          to label %131 unwind label %.loopexit

131:                                              ; preds = %129
  %132 = load ptr, ptr %9, align 8, !tbaa !5
  %133 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %132)
  %134 = load ptr, ptr %9, align 8, !tbaa !5
  %135 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %134)
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %130, i32 noundef %133, i32 noundef %135)
          to label %136 unwind label %140

136:                                              ; preds = %131
  store ptr %130, ptr %7, align 8, !tbaa !5
  %indvars.iv.next103 = add nuw nsw i64 %indvars.iv102, 1
  %137 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %137, ptr %6, align 8, !tbaa !5
  %138 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %137)
  %139 = icmp ugt i32 %138, 10
  br i1 %139, label %.lr.ph80, label %.critedge, !llvm.loop !19

140:                                              ; preds = %131
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %130, i64 noundef 80) #10
  br label %175

.critedge:                                        ; preds = %136, %.lr.ph80, %.preheader66
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %142 unwind label %.loopexit.split-lp

142:                                              ; preds = %.critedge
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %143 unwind label %147

143:                                              ; preds = %142
  invoke void @_ZNSt6vectorIP12ImageContentSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %5)
          to label %144 unwind label %149

144:                                              ; preds = %143
  invoke void @_Z10FindMaxMinSt6vectorIP12ImageContentSaIS1_EES3_S3_fRS_IP16CornerDescriptorSaIS5_EEf(ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, float noundef 0x3FF69FBE80000000, ptr noundef nonnull align 8 dereferenceable(24) %1, float noundef 0x3FD3333340000000)
          to label %145 unwind label %151

145:                                              ; preds = %144
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  %146 = call noundef i64 @_ZNKSt6vectorIP12ImageContentSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  %.not89 = icmp eq i64 %146, 0
  br i1 %.not89, label %._crit_edge85, label %.lr.ph84

._crit_edge85:                                    ; preds = %170, %145
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #8
  ret void

147:                                              ; preds = %142
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %154

149:                                              ; preds = %143
  %150 = landingpad { ptr, i32 }
          cleanup
  br label %153

151:                                              ; preds = %144
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #8
  br label %153

153:                                              ; preds = %151, %149
  %.pn = phi { ptr, i32 } [ %152, %151 ], [ %150, %149 ]
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #8
  br label %154

154:                                              ; preds = %153, %147
  %.pn.pn = phi { ptr, i32 } [ %.pn, %153 ], [ %148, %147 ]
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #8
  br label %175

.lr.ph84:                                         ; preds = %145, %170
  %155 = phi i64 [ %172, %170 ], [ 0, %145 ]
  %.082 = phi i32 [ %171, %170 ], [ 0, %145 ]
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ImageContentSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %155) #8
  %157 = load ptr, ptr %156, align 8, !tbaa !5
  %158 = icmp eq ptr %157, null
  br i1 %158, label %160, label %159

159:                                              ; preds = %.lr.ph84
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %157) #8
  call void @_ZdlPvm(ptr noundef nonnull %157, i64 noundef 80) #10
  br label %160

160:                                              ; preds = %159, %.lr.ph84
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ImageContentSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %155) #8
  %162 = load ptr, ptr %161, align 8, !tbaa !5
  %163 = icmp eq ptr %162, null
  br i1 %163, label %165, label %164

164:                                              ; preds = %160
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %162) #8
  call void @_ZdlPvm(ptr noundef nonnull %162, i64 noundef 80) #10
  br label %165

165:                                              ; preds = %164, %160
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP12ImageContentSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %155) #8
  %167 = load ptr, ptr %166, align 8, !tbaa !5
  %168 = icmp eq ptr %167, null
  br i1 %168, label %170, label %169

169:                                              ; preds = %165
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %167) #8
  call void @_ZdlPvm(ptr noundef nonnull %167, i64 noundef 80) #10
  br label %170

170:                                              ; preds = %165, %169
  %171 = add i32 %.082, 1
  %172 = zext i32 %171 to i64
  %173 = call noundef i64 @_ZNKSt6vectorIP12ImageContentSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  %174 = icmp ugt i64 %173, %172
  br i1 %174, label %.lr.ph84, label %._crit_edge85, !llvm.loop !20

175:                                              ; preds = %.loopexit, %.loopexit.split-lp, %88, %140, %154, %86
  %.pn60.pn = phi { ptr, i32 } [ %87, %86 ], [ %141, %140 ], [ %89, %88 ], [ %.pn.pn, %154 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %176

176:                                              ; preds = %175, %84, %82
  %.pn60.pn.pn = phi { ptr, i32 } [ %.pn60.pn, %175 ], [ %85, %84 ], [ %83, %82 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br label %177

177:                                              ; preds = %176, %28, %26
  %.pn60.pn.pn.pn = phi { ptr, i32 } [ %.pn60.pn.pn, %176 ], [ %29, %28 ], [ %27, %26 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorIP12ImageContentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn60.pn.pn.pn
}

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

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #6

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

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

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

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

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !6, i64 16}
!12 = !{!"_ZTS12ImageContent", !13, i64 0, !13, i64 4, !13, i64 8, !13, 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}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"float", !7, i64 0}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}


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