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

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

%class.ImageContent = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.CornerDescriptor = type <{ %class.Corner, ptr, i32, float, i64, i32, [4 x i8] }>
%class.Corner = type { i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, i32, i32, float, i32, i32 }

@patch_mask = external global ptr, align 8

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14SpinDescriptor17computeComponentsEP12ImageContent(ptr noundef nonnull align 8 dereferenceable(116) %0, ptr noundef %1) #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca float, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %23 = load ptr, ptr %3, align 8
  %24 = load ptr, ptr %4, align 8, !tbaa !5
  %25 = icmp eq ptr %24, null
  br i1 %25, label %26, label %27

26:                                               ; preds = %2
  br label %282

27:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #8
  %28 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %28, i32 noundef 41, i32 noundef 41)
          to label %29 unwind label %51

29:                                               ; preds = %27
  store ptr %28, ptr %5, align 8, !tbaa !5
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = load ptr, ptr %5, align 8, !tbaa !5
  %32 = call noundef zeroext i1 @_ZN6Corner15normalizeAffineEP12ImageContentS1_(ptr noundef nonnull align 4 dereferenceable(88) %23, ptr noundef %30, ptr noundef %31)
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  %34 = load ptr, ptr %5, align 8, !tbaa !5
  %35 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %34)
  %36 = lshr i32 %35, 1
  %37 = load ptr, ptr %5, align 8, !tbaa !5
  %38 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %37)
  %39 = lshr i32 %38, 1
  %40 = load ptr, ptr %5, align 8, !tbaa !5
  %41 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %40)
  %42 = lshr i32 %41, 1
  %43 = uitofp i32 %42 to float
  call void @_Z9normalizeP12ImageContentiif(ptr noundef %33, i32 noundef %36, i32 noundef %39, float noundef %43)
  call void @_ZN16CornerDescriptor8allocVecEi(ptr noundef nonnull align 8 dereferenceable(116) %23, i32 noundef 50)
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 20, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  %44 = load i32, ptr %14, align 4, !tbaa !9
  %45 = sub nsw i32 0, %44
  store i32 %45, ptr %15, align 4, !tbaa !9
  br label %46

46:                                               ; preds = %211, %29
  %47 = load i32, ptr %15, align 4, !tbaa !9
  %48 = load i32, ptr %14, align 4, !tbaa !9
  %49 = icmp slt i32 %47, %48
  br i1 %49, label %55, label %50

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

51:                                               ; preds = %27
  %52 = landingpad { ptr, i32 }
          cleanup
  %53 = extractvalue { ptr, i32 } %52, 0
  store ptr %53, ptr %6, align 8
  %54 = extractvalue { ptr, i32 } %52, 1
  store i32 %54, ptr %7, align 4
  call void @_ZdlPvm(ptr noundef %28, i64 noundef 80) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  br label %283

55:                                               ; preds = %46
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %56 = load i32, ptr %14, align 4, !tbaa !9
  %57 = sub nsw i32 0, %56
  store i32 %57, ptr %17, align 4, !tbaa !9
  br label %58

58:                                               ; preds = %207, %55
  %59 = load i32, ptr %17, align 4, !tbaa !9
  %60 = load i32, ptr %14, align 4, !tbaa !9
  %61 = icmp slt i32 %59, %60
  br i1 %61, label %63, label %62

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

63:                                               ; preds = %58
  %64 = load ptr, ptr @patch_mask, align 8, !tbaa !5
  %65 = getelementptr inbounds %class.ImageContent, ptr %64, i32 0, i32 4
  %66 = load ptr, ptr %65, align 8, !tbaa !11
  %67 = load i32, ptr %14, align 4, !tbaa !9
  %68 = load i32, ptr %15, align 4, !tbaa !9
  %69 = add nsw i32 %67, %68
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds ptr, ptr %66, i64 %70
  %72 = load ptr, ptr %71, align 8, !tbaa !5
  %73 = load i32, ptr %14, align 4, !tbaa !9
  %74 = load i32, ptr %17, align 4, !tbaa !9
  %75 = add nsw i32 %73, %74
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds float, ptr %72, i64 %76
  %78 = load float, ptr %77, align 4, !tbaa !13
  %79 = fcmp ogt float %78, 0.000000e+00
  br i1 %79, label %80, label %206

80:                                               ; preds = %63
  %81 = load i32, ptr %17, align 4, !tbaa !9
  %82 = load i32, ptr %17, align 4, !tbaa !9
  %83 = mul nsw i32 %81, %82
  %84 = load i32, ptr %15, align 4, !tbaa !9
  %85 = load i32, ptr %15, align 4, !tbaa !9
  %86 = mul nsw i32 %84, %85
  %87 = add nsw i32 %83, %86
  %88 = sitofp i32 %87 to float
  %89 = call noundef float @_ZSt4sqrtf(float noundef %88)
  %90 = fmul float 5.000000e+00, %89
  %91 = load i32, ptr %14, align 4, !tbaa !9
  %92 = sitofp i32 %91 to float
  %93 = fdiv float %90, %92
  store float %93, ptr %8, align 4, !tbaa !13
  %94 = load ptr, ptr %5, align 8, !tbaa !5
  %95 = getelementptr inbounds %class.ImageContent, ptr %94, i32 0, i32 4
  %96 = load ptr, ptr %95, align 8, !tbaa !11
  %97 = load i32, ptr %14, align 4, !tbaa !9
  %98 = load i32, ptr %15, align 4, !tbaa !9
  %99 = add nsw i32 %97, %98
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds ptr, ptr %96, i64 %100
  %102 = load ptr, ptr %101, align 8, !tbaa !5
  %103 = load i32, ptr %14, align 4, !tbaa !9
  %104 = load i32, ptr %17, align 4, !tbaa !9
  %105 = add nsw i32 %103, %104
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds float, ptr %102, i64 %106
  %108 = load float, ptr %107, align 4, !tbaa !13
  %109 = fpext float %108 to double
  %110 = fdiv double %109, 2.560000e+02
  %111 = fmul double 1.000000e+01, %110
  %112 = fptrunc double %111 to float
  store float %112, ptr %9, align 4, !tbaa !13
  %113 = load float, ptr %8, align 4, !tbaa !13
  %114 = fptosi float %113 to i32
  store i32 %114, ptr %13, align 4, !tbaa !9
  %115 = load float, ptr %8, align 4, !tbaa !13
  %116 = load i32, ptr %13, align 4, !tbaa !9
  %117 = sitofp i32 %116 to float
  %118 = fsub float %115, %117
  store float %118, ptr %10, align 4, !tbaa !13
  %119 = load float, ptr %9, align 4, !tbaa !13
  %120 = fptosi float %119 to i32
  store i32 %120, ptr %12, align 4, !tbaa !9
  %121 = load float, ptr %9, align 4, !tbaa !13
  %122 = load i32, ptr %12, align 4, !tbaa !9
  %123 = sitofp i32 %122 to float
  %124 = fsub float %121, %123
  store float %124, ptr %11, align 4, !tbaa !13
  %125 = load i32, ptr %13, align 4, !tbaa !9
  %126 = icmp sge i32 %125, 0
  br i1 %126, label %127, label %205

127:                                              ; preds = %80
  %128 = load i32, ptr %13, align 4, !tbaa !9
  %129 = icmp slt i32 %128, 5
  br i1 %129, label %130, label %205

130:                                              ; preds = %127
  %131 = load i32, ptr %12, align 4, !tbaa !9
  %132 = icmp sge i32 %131, 0
  br i1 %132, label %133, label %205

133:                                              ; preds = %130
  %134 = load i32, ptr %12, align 4, !tbaa !9
  %135 = icmp slt i32 %134, 10
  br i1 %135, label %136, label %205

136:                                              ; preds = %133
  %137 = load float, ptr %10, align 4, !tbaa !13
  %138 = fsub float 1.000000e+00, %137
  %139 = load float, ptr %11, align 4, !tbaa !13
  %140 = fsub float 1.000000e+00, %139
  %141 = getelementptr inbounds %class.CornerDescriptor, ptr %23, i32 0, i32 1
  %142 = load ptr, ptr %141, align 8, !tbaa !15
  %143 = load i32, ptr %13, align 4, !tbaa !9
  %144 = mul nsw i32 10, %143
  %145 = load i32, ptr %12, align 4, !tbaa !9
  %146 = add nsw i32 %144, %145
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds float, ptr %142, i64 %147
  %149 = load float, ptr %148, align 4, !tbaa !13
  %150 = call float @llvm.fmuladd.f32(float %138, float %140, float %149)
  store float %150, ptr %148, align 4, !tbaa !13
  %151 = load i32, ptr %12, align 4, !tbaa !9
  %152 = icmp slt i32 %151, 9
  br i1 %152, label %153, label %168

153:                                              ; preds = %136
  %154 = load float, ptr %10, align 4, !tbaa !13
  %155 = fsub float 1.000000e+00, %154
  %156 = load float, ptr %11, align 4, !tbaa !13
  %157 = getelementptr inbounds %class.CornerDescriptor, ptr %23, i32 0, i32 1
  %158 = load ptr, ptr %157, align 8, !tbaa !15
  %159 = load i32, ptr %13, align 4, !tbaa !9
  %160 = mul nsw i32 10, %159
  %161 = load i32, ptr %12, align 4, !tbaa !9
  %162 = add nsw i32 %160, %161
  %163 = add nsw i32 %162, 1
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds float, ptr %158, i64 %164
  %166 = load float, ptr %165, align 4, !tbaa !13
  %167 = call float @llvm.fmuladd.f32(float %155, float %156, float %166)
  store float %167, ptr %165, align 4, !tbaa !13
  br label %168

168:                                              ; preds = %153, %136
  %169 = load i32, ptr %13, align 4, !tbaa !9
  %170 = icmp slt i32 %169, 4
  br i1 %170, label %171, label %204

171:                                              ; preds = %168
  %172 = load float, ptr %10, align 4, !tbaa !13
  %173 = load float, ptr %11, align 4, !tbaa !13
  %174 = fsub float 1.000000e+00, %173
  %175 = getelementptr inbounds %class.CornerDescriptor, ptr %23, i32 0, i32 1
  %176 = load ptr, ptr %175, align 8, !tbaa !15
  %177 = load i32, ptr %13, align 4, !tbaa !9
  %178 = add nsw i32 %177, 1
  %179 = mul nsw i32 10, %178
  %180 = load i32, ptr %12, align 4, !tbaa !9
  %181 = add nsw i32 %179, %180
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds float, ptr %176, i64 %182
  %184 = load float, ptr %183, align 4, !tbaa !13
  %185 = call float @llvm.fmuladd.f32(float %172, float %174, float %184)
  store float %185, ptr %183, align 4, !tbaa !13
  %186 = load i32, ptr %12, align 4, !tbaa !9
  %187 = icmp slt i32 %186, 9
  br i1 %187, label %188, label %203

188:                                              ; preds = %171
  %189 = load float, ptr %10, align 4, !tbaa !13
  %190 = load float, ptr %11, align 4, !tbaa !13
  %191 = getelementptr inbounds %class.CornerDescriptor, ptr %23, i32 0, i32 1
  %192 = load ptr, ptr %191, align 8, !tbaa !15
  %193 = load i32, ptr %13, align 4, !tbaa !9
  %194 = add nsw i32 %193, 1
  %195 = mul nsw i32 10, %194
  %196 = load i32, ptr %12, align 4, !tbaa !9
  %197 = add nsw i32 %195, %196
  %198 = add nsw i32 %197, 1
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds float, ptr %192, i64 %199
  %201 = load float, ptr %200, align 4, !tbaa !13
  %202 = call float @llvm.fmuladd.f32(float %189, float %190, float %201)
  store float %202, ptr %200, align 4, !tbaa !13
  br label %203

203:                                              ; preds = %188, %171
  br label %204

204:                                              ; preds = %203, %168
  br label %205

205:                                              ; preds = %204, %133, %130, %127, %80
  br label %206

206:                                              ; preds = %205, %63
  br label %207

207:                                              ; preds = %206
  %208 = load i32, ptr %17, align 4, !tbaa !9
  %209 = add nsw i32 %208, 1
  store i32 %209, ptr %17, align 4, !tbaa !9
  br label %58, !llvm.loop !19

210:                                              ; preds = %62
  br label %211

211:                                              ; preds = %210
  %212 = load i32, ptr %15, align 4, !tbaa !9
  %213 = add nsw i32 %212, 1
  store i32 %213, ptr %15, align 4, !tbaa !9
  br label %46, !llvm.loop !21

214:                                              ; preds = %50
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %215

215:                                              ; preds = %273, %214
  %216 = load i32, ptr %19, align 4, !tbaa !9
  %217 = icmp slt i32 %216, 5
  br i1 %217, label %219, label %218

218:                                              ; preds = %215
  store i32 8, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %276

219:                                              ; preds = %215
  store float 0.000000e+00, ptr %18, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  store i32 0, ptr %20, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %236, %219
  %221 = load i32, ptr %20, align 4, !tbaa !9
  %222 = icmp slt i32 %221, 10
  br i1 %222, label %224, label %223

223:                                              ; preds = %220
  store i32 11, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %239

224:                                              ; preds = %220
  %225 = getelementptr inbounds %class.CornerDescriptor, ptr %23, i32 0, i32 1
  %226 = load ptr, ptr %225, align 8, !tbaa !15
  %227 = load i32, ptr %19, align 4, !tbaa !9
  %228 = mul nsw i32 10, %227
  %229 = load i32, ptr %20, align 4, !tbaa !9
  %230 = add nsw i32 %228, %229
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds float, ptr %226, i64 %231
  %233 = load float, ptr %232, align 4, !tbaa !13
  %234 = load float, ptr %18, align 4, !tbaa !13
  %235 = fadd float %234, %233
  store float %235, ptr %18, align 4, !tbaa !13
  br label %236

236:                                              ; preds = %224
  %237 = load i32, ptr %20, align 4, !tbaa !9
  %238 = add nsw i32 %237, 1
  store i32 %238, ptr %20, align 4, !tbaa !9
  br label %220, !llvm.loop !22

239:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %269, %239
  %241 = load i32, ptr %21, align 4, !tbaa !9
  %242 = icmp slt i32 %241, 10
  br i1 %242, label %244, label %243

243:                                              ; preds = %240
  store i32 14, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  br label %272

244:                                              ; preds = %240
  %245 = getelementptr inbounds %class.CornerDescriptor, ptr %23, i32 0, i32 1
  %246 = load ptr, ptr %245, align 8, !tbaa !15
  %247 = load i32, ptr %19, align 4, !tbaa !9
  %248 = mul nsw i32 10, %247
  %249 = load i32, ptr %21, align 4, !tbaa !9
  %250 = add nsw i32 %248, %249
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds float, ptr %246, i64 %251
  %253 = load float, ptr %252, align 4, !tbaa !13
  %254 = fpext float %253 to double
  %255 = fmul double 5.120000e+02, %254
  %256 = load float, ptr %18, align 4, !tbaa !13
  %257 = fpext float %256 to double
  %258 = fdiv double %255, %257
  %259 = fptosi double %258 to i32
  %260 = sitofp i32 %259 to float
  %261 = getelementptr inbounds %class.CornerDescriptor, ptr %23, i32 0, i32 1
  %262 = load ptr, ptr %261, align 8, !tbaa !15
  %263 = load i32, ptr %19, align 4, !tbaa !9
  %264 = mul nsw i32 10, %263
  %265 = load i32, ptr %21, align 4, !tbaa !9
  %266 = add nsw i32 %264, %265
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds float, ptr %262, i64 %267
  store float %260, ptr %268, align 4, !tbaa !13
  br label %269

269:                                              ; preds = %244
  %270 = load i32, ptr %21, align 4, !tbaa !9
  %271 = add nsw i32 %270, 1
  store i32 %271, ptr %21, align 4, !tbaa !9
  br label %240, !llvm.loop !23

272:                                              ; preds = %243
  br label %273

273:                                              ; preds = %272
  %274 = load i32, ptr %19, align 4, !tbaa !9
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %19, align 4, !tbaa !9
  br label %215, !llvm.loop !24

276:                                              ; preds = %218
  %277 = getelementptr inbounds %class.Corner, ptr %23, i32 0, i32 20
  store i32 1, ptr %277, align 8, !tbaa !25
  %278 = load ptr, ptr %5, align 8, !tbaa !5
  %279 = icmp eq ptr %278, null
  br i1 %279, label %281, label %280

280:                                              ; preds = %276
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %278) #8
  call void @_ZdlPvm(ptr noundef %278, i64 noundef 80) #10
  br label %281

281:                                              ; preds = %280, %276
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 50, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #8
  br label %282

282:                                              ; preds = %281, %26
  ret void

283:                                              ; preds = %51
  %284 = load ptr, ptr %6, align 8
  %285 = load i32, ptr %7, align 4
  %286 = insertvalue { ptr, i32 } poison, ptr %284, 0
  %287 = insertvalue { ptr, i32 } %286, i32 %285, 1
  resume { ptr, i32 } %287
}

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

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

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

declare i32 @__gxx_personality_v0(...)

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

declare noundef zeroext i1 @_ZN6Corner15normalizeAffineEP12ImageContentS1_(ptr noundef nonnull align 4 dereferenceable(88), ptr noundef, ptr noundef) #4

declare void @_Z9normalizeP12ImageContentiif(ptr noundef, i32 noundef, i32 noundef, float noundef) #4

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

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

declare void @_ZN16CornerDescriptor8allocVecEi(ptr noundef nonnull align 8 dereferenceable(116), i32 noundef) #4

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

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

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

; 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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { "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 = { 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 16}
!12 = !{!"_ZTS12ImageContent", !10, i64 0, !10, i64 4, !10, i64 8, !10, 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 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = !{!16, !6, i64 88}
!16 = !{!"_ZTS16CornerDescriptor", !17, i64 0, !6, i64 88, !10, i64 96, !14, i64 100, !18, i64 104, !10, i64 112}
!17 = !{!"_ZTS6Corner", !10, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32, !14, i64 36, !14, i64 40, !14, i64 44, !14, i64 48, !14, i64 52, !14, i64 56, !14, i64 60, !14, i64 64, !10, i64 68, !10, i64 72, !14, i64 76, !10, i64 80, !10, i64 84}
!18 = !{!"long", !7, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !20}
!24 = distinct !{!24, !20}
!25 = !{!17, !10, i64 80}


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

@patch_mask = external local_unnamed_addr global ptr, align 8

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14SpinDescriptor17computeComponentsEP12ImageContent(ptr noundef nonnull align 8 dereferenceable(116) %0, ptr noundef %1) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = icmp eq ptr %1, null
  br i1 %3, label %312, label %4

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

6:                                                ; preds = %4
  %7 = tail call noundef zeroext i1 @_ZN6Corner15normalizeAffineEP12ImageContentS1_(ptr noundef nonnull align 4 dereferenceable(88) %0, ptr noundef nonnull %1, ptr noundef nonnull %5)
  %8 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %5)
  %9 = lshr i32 %8, 1
  %10 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %5)
  %11 = lshr i32 %10, 1
  %12 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %5)
  %13 = lshr i32 %12, 1
  %14 = uitofp nneg i32 %13 to float
  tail call void @_Z9normalizeP12ImageContentiif(ptr noundef nonnull %5, i32 noundef %9, i32 noundef %11, float noundef %14)
  tail call void @_ZN16CornerDescriptor8allocVecEi(ptr noundef nonnull align 8 dereferenceable(116) %0, i32 noundef 50)
  %15 = getelementptr inbounds i8, ptr %5, i64 16
  %16 = getelementptr inbounds i8, ptr %0, i64 88
  %.pre114.pre = load ptr, ptr @patch_mask, align 8, !tbaa !5
  br label %.preheader90

.preheader90:                                     ; preds = %6, %21
  %.pre114 = phi ptr [ %.pre114.pre, %6 ], [ %.pre114115, %21 ]
  %indvars.iv98 = phi i64 [ -20, %6 ], [ %indvars.iv.next99, %21 ]
  %17 = add nsw i64 %indvars.iv98, 20
  %18 = mul nsw i64 %indvars.iv98, %indvars.iv98
  br label %22

19:                                               ; preds = %4
  %20 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %5, i64 noundef 80) #8
  resume { ptr, i32 } %20

21:                                               ; preds = %84
  %indvars.iv.next99 = add nsw i64 %indvars.iv98, 1
  %exitcond101.not = icmp eq i64 %indvars.iv.next99, 20
  br i1 %exitcond101.not, label %.preheader88, label %.preheader90, !llvm.loop !9

22:                                               ; preds = %.preheader90, %84
  %.pre114116 = phi ptr [ %.pre114, %.preheader90 ], [ %.pre114115, %84 ]
  %23 = phi ptr [ %.pre114, %.preheader90 ], [ %85, %84 ]
  %indvars.iv = phi i64 [ -20, %.preheader90 ], [ %indvars.iv.next, %84 ]
  %24 = getelementptr inbounds i8, ptr %23, i64 16
  %25 = load ptr, ptr %24, align 8, !tbaa !11
  %26 = getelementptr inbounds ptr, ptr %25, i64 %17
  %27 = load ptr, ptr %26, align 8, !tbaa !5
  %28 = add nsw i64 %indvars.iv, 20
  %29 = getelementptr inbounds float, ptr %27, i64 %28
  %30 = load float, ptr %29, align 4, !tbaa !14
  %31 = fcmp ogt float %30, 0.000000e+00
  br i1 %31, label %32, label %84

32:                                               ; preds = %22
  %33 = mul nsw i64 %indvars.iv, %indvars.iv
  %34 = add nuw nsw i64 %33, %18
  %35 = trunc nsw i64 %34 to i32
  %36 = uitofp nneg i32 %35 to float
  %37 = tail call noundef float @_ZSt4sqrtf(float noundef %36)
  %38 = fmul float %37, 5.000000e+00
  %39 = fdiv float %38, 2.000000e+01
  %40 = load ptr, ptr %15, align 8, !tbaa !11
  %41 = getelementptr inbounds ptr, ptr %40, i64 %17
  %42 = load ptr, ptr %41, align 8, !tbaa !5
  %43 = getelementptr inbounds float, ptr %42, i64 %28
  %44 = load float, ptr %43, align 4, !tbaa !14
  %45 = fpext float %44 to double
  %46 = fmul double %45, 3.906250e-03
  %47 = fmul double %46, 1.000000e+01
  %48 = fptrunc double %47 to float
  %49 = fptosi float %39 to i32
  %50 = sitofp i32 %49 to float
  %51 = fsub float %39, %50
  %52 = fptosi float %48 to i32
  %53 = sitofp i32 %52 to float
  %54 = fsub float %48, %53
  %or.cond = icmp ult i32 %49, 5
  %55 = icmp ult i32 %52, 10
  %or.cond5 = select i1 %or.cond, i1 %55, i1 false
  %.pre = load ptr, ptr @patch_mask, align 8, !tbaa !5
  br i1 %or.cond5, label %56, label %84

56:                                               ; preds = %32
  %57 = fsub float 1.000000e+00, %51
  %58 = fsub float 1.000000e+00, %54
  %59 = load ptr, ptr %16, align 8, !tbaa !16
  %60 = mul nuw nsw i32 %49, 10
  %61 = add nuw nsw i32 %60, %52
  %62 = zext nneg i32 %61 to i64
  %63 = getelementptr inbounds float, ptr %59, i64 %62
  %64 = load float, ptr %63, align 4, !tbaa !14
  %65 = tail call float @llvm.fmuladd.f32(float %57, float %58, float %64)
  store float %65, ptr %63, align 4, !tbaa !14
  %66 = icmp ult i32 %52, 9
  br i1 %66, label %67, label %71

67:                                               ; preds = %56
  %68 = getelementptr inbounds i8, ptr %63, i64 4
  %69 = load float, ptr %68, align 4, !tbaa !14
  %70 = tail call float @llvm.fmuladd.f32(float %57, float %54, float %69)
  store float %70, ptr %68, align 4, !tbaa !14
  br label %71

71:                                               ; preds = %67, %56
  %72 = icmp ult i32 %49, 4
  br i1 %72, label %73, label %84

73:                                               ; preds = %71
  %74 = add nuw nsw i32 %60, 10
  %75 = add nuw nsw i32 %74, %52
  %76 = zext nneg i32 %75 to i64
  %77 = getelementptr inbounds float, ptr %59, i64 %76
  %78 = load float, ptr %77, align 4, !tbaa !14
  %79 = tail call float @llvm.fmuladd.f32(float %51, float %58, float %78)
  store float %79, ptr %77, align 4, !tbaa !14
  br i1 %66, label %80, label %84

80:                                               ; preds = %73
  %81 = getelementptr inbounds i8, ptr %77, i64 4
  %82 = load float, ptr %81, align 4, !tbaa !14
  %83 = tail call float @llvm.fmuladd.f32(float %51, float %54, float %82)
  store float %83, ptr %81, align 4, !tbaa !14
  br label %84

84:                                               ; preds = %22, %71, %80, %73, %32
  %.pre114115 = phi ptr [ %.pre114116, %22 ], [ %.pre, %71 ], [ %.pre, %80 ], [ %.pre, %73 ], [ %.pre, %32 ]
  %85 = phi ptr [ %23, %22 ], [ %.pre, %71 ], [ %.pre, %80 ], [ %.pre, %73 ], [ %.pre, %32 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 20
  br i1 %exitcond.not, label %21, label %22, !llvm.loop !20

.preheader88:                                     ; preds = %21
  %86 = load ptr, ptr %16, align 8, !tbaa !16
  %invariant.gep130 = getelementptr inbounds i8, ptr %86, i64 36
  %invariant.gep128 = getelementptr inbounds i8, ptr %86, i64 32
  %invariant.gep126 = getelementptr inbounds i8, ptr %86, i64 28
  %invariant.gep124 = getelementptr inbounds i8, ptr %86, i64 24
  %invariant.gep122 = getelementptr inbounds i8, ptr %86, i64 20
  %invariant.gep120 = getelementptr inbounds i8, ptr %86, i64 16
  %invariant.gep118 = getelementptr inbounds i8, ptr %86, i64 12
  %invariant.gep = getelementptr inbounds i8, ptr %86, i64 8
  %87 = getelementptr inbounds i8, ptr %86, i64 4
  %88 = load float, ptr %87, align 4, !tbaa !14
  %89 = load float, ptr %invariant.gep, align 4, !tbaa !14
  %90 = load float, ptr %invariant.gep118, align 4, !tbaa !14
  %91 = load float, ptr %invariant.gep120, align 4, !tbaa !14
  %92 = load float, ptr %invariant.gep122, align 4, !tbaa !14
  %93 = load float, ptr %invariant.gep124, align 4, !tbaa !14
  %94 = load float, ptr %invariant.gep126, align 4, !tbaa !14
  %95 = load float, ptr %invariant.gep128, align 4, !tbaa !14
  %96 = load float, ptr %invariant.gep130, align 4, !tbaa !14
  %97 = load <4 x float>, ptr %86, align 4, !tbaa !14
  %98 = extractelement <4 x float> %97, i64 0
  %99 = fadd float %98, 0.000000e+00
  %100 = fadd float %99, %88
  %101 = fadd float %100, %89
  %102 = fadd float %101, %90
  %103 = fadd float %102, %91
  %104 = fadd float %103, %92
  %105 = fadd float %104, %93
  %106 = fadd float %105, %94
  %107 = fadd float %106, %95
  %108 = fadd float %107, %96
  %109 = fpext float %108 to double
  %110 = fpext <4 x float> %97 to <4 x double>
  %111 = fmul <4 x double> %110, <double 5.120000e+02, double 5.120000e+02, double 5.120000e+02, double 5.120000e+02>
  %112 = insertelement <4 x double> poison, double %109, i64 0
  %113 = shufflevector <4 x double> %112, <4 x double> poison, <4 x i32> zeroinitializer
  %114 = fdiv <4 x double> %111, %113
  %115 = fptosi <4 x double> %114 to <4 x i32>
  %116 = sitofp <4 x i32> %115 to <4 x float>
  store <4 x float> %116, ptr %86, align 4, !tbaa !14
  %117 = load <4 x float>, ptr %invariant.gep120, align 4, !tbaa !14
  %118 = fpext <4 x float> %117 to <4 x double>
  %119 = fmul <4 x double> %118, <double 5.120000e+02, double 5.120000e+02, double 5.120000e+02, double 5.120000e+02>
  %120 = fdiv <4 x double> %119, %113
  %121 = fptosi <4 x double> %120 to <4 x i32>
  %122 = sitofp <4 x i32> %121 to <4 x float>
  store <4 x float> %122, ptr %invariant.gep120, align 4, !tbaa !14
  %123 = load <2 x float>, ptr %invariant.gep128, align 4, !tbaa !14
  %124 = fpext <2 x float> %123 to <2 x double>
  %125 = fmul <2 x double> %124, <double 5.120000e+02, double 5.120000e+02>
  %126 = insertelement <2 x double> poison, double %109, i64 0
  %127 = shufflevector <2 x double> %126, <2 x double> poison, <2 x i32> zeroinitializer
  %128 = fdiv <2 x double> %125, %127
  %129 = fptosi <2 x double> %128 to <2 x i32>
  %130 = sitofp <2 x i32> %129 to <2 x float>
  store <2 x float> %130, ptr %invariant.gep128, align 4, !tbaa !14
  %131 = getelementptr inbounds i8, ptr %86, i64 40
  %132 = getelementptr inbounds i8, ptr %86, i64 44
  %133 = load float, ptr %132, align 4, !tbaa !14
  %gep.1 = getelementptr inbounds i8, ptr %86, i64 48
  %134 = load float, ptr %gep.1, align 4, !tbaa !14
  %gep119.1 = getelementptr inbounds i8, ptr %86, i64 52
  %135 = load float, ptr %gep119.1, align 4, !tbaa !14
  %gep121.1 = getelementptr inbounds i8, ptr %86, i64 56
  %136 = load float, ptr %gep121.1, align 4, !tbaa !14
  %gep123.1 = getelementptr inbounds i8, ptr %86, i64 60
  %137 = load float, ptr %gep123.1, align 4, !tbaa !14
  %gep125.1 = getelementptr inbounds i8, ptr %86, i64 64
  %138 = load float, ptr %gep125.1, align 4, !tbaa !14
  %gep127.1 = getelementptr inbounds i8, ptr %86, i64 68
  %139 = load float, ptr %gep127.1, align 4, !tbaa !14
  %gep129.1 = getelementptr inbounds i8, ptr %86, i64 72
  %140 = load float, ptr %gep129.1, align 4, !tbaa !14
  %gep131.1 = getelementptr inbounds i8, ptr %86, i64 76
  %141 = load float, ptr %gep131.1, align 4, !tbaa !14
  %142 = load <4 x float>, ptr %131, align 4, !tbaa !14
  %143 = extractelement <4 x float> %142, i64 0
  %144 = fadd float %143, 0.000000e+00
  %145 = fadd float %144, %133
  %146 = fadd float %145, %134
  %147 = fadd float %146, %135
  %148 = fadd float %147, %136
  %149 = fadd float %148, %137
  %150 = fadd float %149, %138
  %151 = fadd float %150, %139
  %152 = fadd float %151, %140
  %153 = fadd float %152, %141
  %154 = fpext float %153 to double
  %155 = fpext <4 x float> %142 to <4 x double>
  %156 = fmul <4 x double> %155, <double 5.120000e+02, double 5.120000e+02, double 5.120000e+02, double 5.120000e+02>
  %157 = insertelement <4 x double> poison, double %154, i64 0
  %158 = shufflevector <4 x double> %157, <4 x double> poison, <4 x i32> zeroinitializer
  %159 = fdiv <4 x double> %156, %158
  %160 = fptosi <4 x double> %159 to <4 x i32>
  %161 = sitofp <4 x i32> %160 to <4 x float>
  store <4 x float> %161, ptr %131, align 4, !tbaa !14
  %162 = load <4 x float>, ptr %gep121.1, align 4, !tbaa !14
  %163 = fpext <4 x float> %162 to <4 x double>
  %164 = fmul <4 x double> %163, <double 5.120000e+02, double 5.120000e+02, double 5.120000e+02, double 5.120000e+02>
  %165 = fdiv <4 x double> %164, %158
  %166 = fptosi <4 x double> %165 to <4 x i32>
  %167 = sitofp <4 x i32> %166 to <4 x float>
  store <4 x float> %167, ptr %gep121.1, align 4, !tbaa !14
  %168 = load <2 x float>, ptr %gep129.1, align 4, !tbaa !14
  %169 = fpext <2 x float> %168 to <2 x double>
  %170 = fmul <2 x double> %169, <double 5.120000e+02, double 5.120000e+02>
  %171 = insertelement <2 x double> poison, double %154, i64 0
  %172 = shufflevector <2 x double> %171, <2 x double> poison, <2 x i32> zeroinitializer
  %173 = fdiv <2 x double> %170, %172
  %174 = fptosi <2 x double> %173 to <2 x i32>
  %175 = sitofp <2 x i32> %174 to <2 x float>
  store <2 x float> %175, ptr %gep129.1, align 4, !tbaa !14
  %176 = getelementptr inbounds i8, ptr %86, i64 80
  %177 = getelementptr inbounds i8, ptr %86, i64 84
  %178 = load float, ptr %177, align 4, !tbaa !14
  %gep.2 = getelementptr inbounds i8, ptr %86, i64 88
  %179 = load float, ptr %gep.2, align 4, !tbaa !14
  %gep119.2 = getelementptr inbounds i8, ptr %86, i64 92
  %180 = load float, ptr %gep119.2, align 4, !tbaa !14
  %gep121.2 = getelementptr inbounds i8, ptr %86, i64 96
  %181 = load float, ptr %gep121.2, align 4, !tbaa !14
  %gep123.2 = getelementptr inbounds i8, ptr %86, i64 100
  %182 = load float, ptr %gep123.2, align 4, !tbaa !14
  %gep125.2 = getelementptr inbounds i8, ptr %86, i64 104
  %183 = load float, ptr %gep125.2, align 4, !tbaa !14
  %gep127.2 = getelementptr inbounds i8, ptr %86, i64 108
  %184 = load float, ptr %gep127.2, align 4, !tbaa !14
  %gep129.2 = getelementptr inbounds i8, ptr %86, i64 112
  %185 = load float, ptr %gep129.2, align 4, !tbaa !14
  %gep131.2 = getelementptr inbounds i8, ptr %86, i64 116
  %186 = load float, ptr %gep131.2, align 4, !tbaa !14
  %187 = load <4 x float>, ptr %176, align 4, !tbaa !14
  %188 = extractelement <4 x float> %187, i64 0
  %189 = fadd float %188, 0.000000e+00
  %190 = fadd float %189, %178
  %191 = fadd float %190, %179
  %192 = fadd float %191, %180
  %193 = fadd float %192, %181
  %194 = fadd float %193, %182
  %195 = fadd float %194, %183
  %196 = fadd float %195, %184
  %197 = fadd float %196, %185
  %198 = fadd float %197, %186
  %199 = fpext float %198 to double
  %200 = fpext <4 x float> %187 to <4 x double>
  %201 = fmul <4 x double> %200, <double 5.120000e+02, double 5.120000e+02, double 5.120000e+02, double 5.120000e+02>
  %202 = insertelement <4 x double> poison, double %199, i64 0
  %203 = shufflevector <4 x double> %202, <4 x double> poison, <4 x i32> zeroinitializer
  %204 = fdiv <4 x double> %201, %203
  %205 = fptosi <4 x double> %204 to <4 x i32>
  %206 = sitofp <4 x i32> %205 to <4 x float>
  store <4 x float> %206, ptr %176, align 4, !tbaa !14
  %207 = load <4 x float>, ptr %gep121.2, align 4, !tbaa !14
  %208 = fpext <4 x float> %207 to <4 x double>
  %209 = fmul <4 x double> %208, <double 5.120000e+02, double 5.120000e+02, double 5.120000e+02, double 5.120000e+02>
  %210 = fdiv <4 x double> %209, %203
  %211 = fptosi <4 x double> %210 to <4 x i32>
  %212 = sitofp <4 x i32> %211 to <4 x float>
  store <4 x float> %212, ptr %gep121.2, align 4, !tbaa !14
  %213 = load <2 x float>, ptr %gep129.2, align 4, !tbaa !14
  %214 = fpext <2 x float> %213 to <2 x double>
  %215 = fmul <2 x double> %214, <double 5.120000e+02, double 5.120000e+02>
  %216 = insertelement <2 x double> poison, double %199, i64 0
  %217 = shufflevector <2 x double> %216, <2 x double> poison, <2 x i32> zeroinitializer
  %218 = fdiv <2 x double> %215, %217
  %219 = fptosi <2 x double> %218 to <2 x i32>
  %220 = sitofp <2 x i32> %219 to <2 x float>
  store <2 x float> %220, ptr %gep129.2, align 4, !tbaa !14
  %221 = getelementptr inbounds i8, ptr %86, i64 120
  %222 = getelementptr inbounds i8, ptr %86, i64 124
  %223 = load float, ptr %222, align 4, !tbaa !14
  %gep.3 = getelementptr inbounds i8, ptr %86, i64 128
  %224 = load float, ptr %gep.3, align 4, !tbaa !14
  %gep119.3 = getelementptr inbounds i8, ptr %86, i64 132
  %225 = load float, ptr %gep119.3, align 4, !tbaa !14
  %gep121.3 = getelementptr inbounds i8, ptr %86, i64 136
  %226 = load float, ptr %gep121.3, align 4, !tbaa !14
  %gep123.3 = getelementptr inbounds i8, ptr %86, i64 140
  %227 = load float, ptr %gep123.3, align 4, !tbaa !14
  %gep125.3 = getelementptr inbounds i8, ptr %86, i64 144
  %228 = load float, ptr %gep125.3, align 4, !tbaa !14
  %gep127.3 = getelementptr inbounds i8, ptr %86, i64 148
  %229 = load float, ptr %gep127.3, align 4, !tbaa !14
  %gep129.3 = getelementptr inbounds i8, ptr %86, i64 152
  %230 = load float, ptr %gep129.3, align 4, !tbaa !14
  %gep131.3 = getelementptr inbounds i8, ptr %86, i64 156
  %231 = load float, ptr %gep131.3, align 4, !tbaa !14
  %232 = load <4 x float>, ptr %221, align 4, !tbaa !14
  %233 = extractelement <4 x float> %232, i64 0
  %234 = fadd float %233, 0.000000e+00
  %235 = fadd float %234, %223
  %236 = fadd float %235, %224
  %237 = fadd float %236, %225
  %238 = fadd float %237, %226
  %239 = fadd float %238, %227
  %240 = fadd float %239, %228
  %241 = fadd float %240, %229
  %242 = fadd float %241, %230
  %243 = fadd float %242, %231
  %244 = fpext float %243 to double
  %245 = fpext <4 x float> %232 to <4 x double>
  %246 = fmul <4 x double> %245, <double 5.120000e+02, double 5.120000e+02, double 5.120000e+02, double 5.120000e+02>
  %247 = insertelement <4 x double> poison, double %244, i64 0
  %248 = shufflevector <4 x double> %247, <4 x double> poison, <4 x i32> zeroinitializer
  %249 = fdiv <4 x double> %246, %248
  %250 = fptosi <4 x double> %249 to <4 x i32>
  %251 = sitofp <4 x i32> %250 to <4 x float>
  store <4 x float> %251, ptr %221, align 4, !tbaa !14
  %252 = load <4 x float>, ptr %gep121.3, align 4, !tbaa !14
  %253 = fpext <4 x float> %252 to <4 x double>
  %254 = fmul <4 x double> %253, <double 5.120000e+02, double 5.120000e+02, double 5.120000e+02, double 5.120000e+02>
  %255 = fdiv <4 x double> %254, %248
  %256 = fptosi <4 x double> %255 to <4 x i32>
  %257 = sitofp <4 x i32> %256 to <4 x float>
  store <4 x float> %257, ptr %gep121.3, align 4, !tbaa !14
  %258 = load <2 x float>, ptr %gep129.3, align 4, !tbaa !14
  %259 = fpext <2 x float> %258 to <2 x double>
  %260 = fmul <2 x double> %259, <double 5.120000e+02, double 5.120000e+02>
  %261 = insertelement <2 x double> poison, double %244, i64 0
  %262 = shufflevector <2 x double> %261, <2 x double> poison, <2 x i32> zeroinitializer
  %263 = fdiv <2 x double> %260, %262
  %264 = fptosi <2 x double> %263 to <2 x i32>
  %265 = sitofp <2 x i32> %264 to <2 x float>
  store <2 x float> %265, ptr %gep129.3, align 4, !tbaa !14
  %266 = getelementptr inbounds i8, ptr %86, i64 160
  %267 = getelementptr inbounds i8, ptr %86, i64 164
  %268 = load float, ptr %267, align 4, !tbaa !14
  %gep.4 = getelementptr inbounds i8, ptr %86, i64 168
  %269 = load float, ptr %gep.4, align 4, !tbaa !14
  %gep119.4 = getelementptr inbounds i8, ptr %86, i64 172
  %270 = load float, ptr %gep119.4, align 4, !tbaa !14
  %gep121.4 = getelementptr inbounds i8, ptr %86, i64 176
  %271 = load float, ptr %gep121.4, align 4, !tbaa !14
  %gep123.4 = getelementptr inbounds i8, ptr %86, i64 180
  %272 = load float, ptr %gep123.4, align 4, !tbaa !14
  %gep125.4 = getelementptr inbounds i8, ptr %86, i64 184
  %273 = load float, ptr %gep125.4, align 4, !tbaa !14
  %gep127.4 = getelementptr inbounds i8, ptr %86, i64 188
  %274 = load float, ptr %gep127.4, align 4, !tbaa !14
  %gep129.4 = getelementptr inbounds i8, ptr %86, i64 192
  %275 = load float, ptr %gep129.4, align 4, !tbaa !14
  %gep131.4 = getelementptr inbounds i8, ptr %86, i64 196
  %276 = load float, ptr %gep131.4, align 4, !tbaa !14
  %277 = load <4 x float>, ptr %266, align 4, !tbaa !14
  %278 = extractelement <4 x float> %277, i64 0
  %279 = fadd float %278, 0.000000e+00
  %280 = fadd float %279, %268
  %281 = fadd float %280, %269
  %282 = fadd float %281, %270
  %283 = fadd float %282, %271
  %284 = fadd float %283, %272
  %285 = fadd float %284, %273
  %286 = fadd float %285, %274
  %287 = fadd float %286, %275
  %288 = fadd float %287, %276
  %289 = fpext float %288 to double
  %290 = fpext <4 x float> %277 to <4 x double>
  %291 = fmul <4 x double> %290, <double 5.120000e+02, double 5.120000e+02, double 5.120000e+02, double 5.120000e+02>
  %292 = insertelement <4 x double> poison, double %289, i64 0
  %293 = shufflevector <4 x double> %292, <4 x double> poison, <4 x i32> zeroinitializer
  %294 = fdiv <4 x double> %291, %293
  %295 = fptosi <4 x double> %294 to <4 x i32>
  %296 = sitofp <4 x i32> %295 to <4 x float>
  store <4 x float> %296, ptr %266, align 4, !tbaa !14
  %297 = load <4 x float>, ptr %gep121.4, align 4, !tbaa !14
  %298 = fpext <4 x float> %297 to <4 x double>
  %299 = fmul <4 x double> %298, <double 5.120000e+02, double 5.120000e+02, double 5.120000e+02, double 5.120000e+02>
  %300 = fdiv <4 x double> %299, %293
  %301 = fptosi <4 x double> %300 to <4 x i32>
  %302 = sitofp <4 x i32> %301 to <4 x float>
  store <4 x float> %302, ptr %gep121.4, align 4, !tbaa !14
  %303 = load <2 x float>, ptr %gep129.4, align 4, !tbaa !14
  %304 = fpext <2 x float> %303 to <2 x double>
  %305 = fmul <2 x double> %304, <double 5.120000e+02, double 5.120000e+02>
  %306 = insertelement <2 x double> poison, double %289, i64 0
  %307 = shufflevector <2 x double> %306, <2 x double> poison, <2 x i32> zeroinitializer
  %308 = fdiv <2 x double> %305, %307
  %309 = fptosi <2 x double> %308 to <2 x i32>
  %310 = sitofp <2 x i32> %309 to <2 x float>
  store <2 x float> %310, ptr %gep129.4, align 4, !tbaa !14
  %311 = getelementptr inbounds i8, ptr %0, i64 80
  store i32 1, ptr %311, align 8, !tbaa !21
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %5) #9
  tail call void @_ZdlPvm(ptr noundef nonnull %5, i64 noundef 80) #8
  br label %312

312:                                              ; preds = %2, %.preheader88
  ret void
}

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

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

declare i32 @__gxx_personality_v0(...)

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

declare noundef zeroext i1 @_ZN6Corner15normalizeAffineEP12ImageContentS1_(ptr noundef nonnull align 4 dereferenceable(88), ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_Z9normalizeP12ImageContentiif(ptr noundef, i32 noundef, i32 noundef, float noundef) local_unnamed_addr #3

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

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

declare void @_ZN16CornerDescriptor8allocVecEi(ptr noundef nonnull align 8 dereferenceable(116), i32 noundef) local_unnamed_addr #3

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

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

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

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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 = { 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 #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { builtin allocsize(0) }
attributes #8 = { builtin nounwind }
attributes #9 = { 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 = !{!17, !6, i64 88}
!17 = !{!"_ZTS16CornerDescriptor", !18, i64 0, !6, i64 88, !13, i64 96, !15, i64 100, !19, i64 104, !13, i64 112}
!18 = !{!"_ZTS6Corner", !13, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !15, i64 16, !15, i64 20, !15, i64 24, !15, i64 28, !15, i64 32, !15, i64 36, !15, i64 40, !15, i64 44, !15, i64 48, !15, i64 52, !15, i64 56, !15, i64 60, !15, i64 64, !13, i64 68, !13, i64 72, !15, i64 76, !13, i64 80, !13, i64 84}
!19 = !{!"long", !7, i64 0}
!20 = distinct !{!20, !10}
!21 = !{!18, !13, i64 80}


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