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

; 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.Corner = type { i32, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, i32, i32, float, i32, i32 }
%class.CornerDescriptor = type <{ %class.Corner, ptr, i32, float, i64, i32, [4 x i8] }>
%class.JetHist = type { %class.CornerDescriptor.base, ptr, ptr, ptr, ptr, ptr }
%class.CornerDescriptor.base = type <{ %class.Corner, ptr, i32, float, i64, i32 }>
%class.ImageContent = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@_ZL3DIM = external hidden global i32, align 4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7JetHist11samplePointEffdddddf(ptr noundef nonnull align 8 dereferenceable(160), float noundef, float noundef, double noundef, double noundef, double noundef, double noundef, double noundef, float noundef) #0 align 2

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

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

declare i32 @__gxx_personality_v0(...)

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

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

27:                                               ; preds = %2
  br label %390

28:                                               ; preds = %2
  %29 = getelementptr inbounds %class.Corner, ptr %24, i32 0, i32 14
  %30 = load float, ptr %29, align 8, !tbaa !9
  %31 = getelementptr inbounds %class.CornerDescriptor, ptr %24, i32 0, i32 3
  store float %30, ptr %31, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #8
  %32 = getelementptr inbounds %class.CornerDescriptor, ptr %24, i32 0, i32 3
  %33 = load float, ptr %32, align 4, !tbaa !13
  %34 = call float @llvm.fmuladd.f32(float 3.000000e+00, float %33, float 1.000000e+00)
  %35 = fptosi float %34 to i32
  store i32 %35, ptr %5, align 4, !tbaa !16
  %36 = load i32, ptr %5, align 4, !tbaa !16
  %37 = load ptr, ptr %4, align 8, !tbaa !5
  %38 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %37)
  %39 = load i32, ptr %5, align 4, !tbaa !16
  %40 = sub i32 %38, %39
  %41 = load ptr, ptr %4, align 8, !tbaa !5
  %42 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %41)
  %43 = load i32, ptr %5, align 4, !tbaa !16
  %44 = sub i32 %42, %43
  %45 = call noundef i32 @_ZN6Corner4isOKEiii(ptr noundef nonnull align 4 dereferenceable(88) %24, i32 noundef %36, i32 noundef %40, i32 noundef %44)
  %46 = icmp ne i32 %45, 0
  br i1 %46, label %48, label %47

47:                                               ; preds = %28
  store i32 1, ptr %6, align 4
  br label %388

48:                                               ; preds = %28
  call void @_ZN16CornerDescriptor8allocVecEi(ptr noundef nonnull align 8 dereferenceable(116) %24, i32 noundef 15)
  %49 = getelementptr inbounds %class.CornerDescriptor, ptr %24, i32 0, i32 1
  %50 = load ptr, ptr %49, align 8, !tbaa !17
  %51 = icmp eq ptr %50, null
  br i1 %51, label %52, label %53

52:                                               ; preds = %48
  store i32 1, ptr %6, align 4
  br label %388

53:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  %54 = getelementptr inbounds %class.Corner, ptr %24, i32 0, i32 1
  %55 = load float, ptr %54, align 4, !tbaa !18
  %56 = fptosi float %55 to i32
  store i32 %56, ptr %7, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  %57 = getelementptr inbounds %class.Corner, ptr %24, i32 0, i32 2
  %58 = load float, ptr %57, align 8, !tbaa !19
  %59 = fptosi float %58 to i32
  store i32 %59, ptr %8, align 4, !tbaa !16
  %60 = getelementptr inbounds %class.Corner, ptr %24, i32 0, i32 14
  %61 = load float, ptr %60, align 8, !tbaa !9
  %62 = getelementptr inbounds %class.CornerDescriptor, ptr %24, i32 0, i32 3
  store float %61, ptr %62, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  store double 7.000000e+00, ptr %9, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  %63 = load double, ptr %9, align 8, !tbaa !20
  %64 = fmul double 3.000000e+00, %63
  %65 = call double @llvm.rint.f64(double %64)
  %66 = fptosi double %65 to i32
  %67 = mul nsw i32 2, %66
  %68 = add nsw i32 %67, 3
  store i32 %68, ptr %10, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %69 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %70 = load i32, ptr %10, align 4, !tbaa !16
  %71 = load i32, ptr %10, align 4, !tbaa !16
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %69, i32 noundef %70, i32 noundef %71)
          to label %72 unwind label %182

72:                                               ; preds = %53
  store ptr %69, ptr %11, align 8, !tbaa !5
  %73 = getelementptr inbounds %class.Corner, ptr %24, i32 0, i32 14
  %74 = load float, ptr %73, align 8, !tbaa !9
  %75 = fmul float 2.000000e+00, %74
  %76 = getelementptr inbounds %class.Corner, ptr %24, i32 0, i32 14
  store float %75, ptr %76, align 8, !tbaa !9
  %77 = load ptr, ptr %4, align 8, !tbaa !5
  %78 = load ptr, ptr %11, align 8, !tbaa !5
  %79 = call noundef zeroext i1 @_ZN6Corner15normalizeAffineEP12ImageContentS1_(ptr noundef nonnull align 4 dereferenceable(88) %24, ptr noundef %77, ptr noundef %78)
  %80 = getelementptr inbounds %class.CornerDescriptor, ptr %24, i32 0, i32 3
  %81 = load float, ptr %80, align 4, !tbaa !13
  %82 = getelementptr inbounds %class.Corner, ptr %24, i32 0, i32 14
  store float %81, ptr %82, align 8, !tbaa !9
  %83 = load ptr, ptr %11, align 8, !tbaa !5
  %84 = load ptr, ptr %11, align 8, !tbaa !5
  %85 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %84)
  %86 = lshr i32 %85, 1
  %87 = load ptr, ptr %11, align 8, !tbaa !5
  %88 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %87)
  %89 = lshr i32 %88, 1
  %90 = load ptr, ptr %11, align 8, !tbaa !5
  %91 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %90)
  %92 = lshr i32 %91, 1
  %93 = uitofp i32 %92 to float
  call void @_Z9normalizeP12ImageContentiif(ptr noundef %83, i32 noundef %86, i32 noundef %89, float noundef %93)
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %94 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %95 = load ptr, ptr %11, align 8, !tbaa !5
  %96 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %95)
          to label %97 unwind label %186

97:                                               ; preds = %72
  %98 = load ptr, ptr %11, align 8, !tbaa !5
  %99 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %98)
          to label %100 unwind label %186

100:                                              ; preds = %97
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %94, i32 noundef %96, i32 noundef %99)
          to label %101 unwind label %186

101:                                              ; preds = %100
  store ptr %94, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %102 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %103 = load ptr, ptr %11, align 8, !tbaa !5
  %104 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %103)
          to label %105 unwind label %190

105:                                              ; preds = %101
  %106 = load ptr, ptr %11, align 8, !tbaa !5
  %107 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %106)
          to label %108 unwind label %190

108:                                              ; preds = %105
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %102, i32 noundef %104, i32 noundef %107)
          to label %109 unwind label %190

109:                                              ; preds = %108
  store ptr %102, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %110 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %111 = load ptr, ptr %11, align 8, !tbaa !5
  %112 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %111)
          to label %113 unwind label %194

113:                                              ; preds = %109
  %114 = load ptr, ptr %11, align 8, !tbaa !5
  %115 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %114)
          to label %116 unwind label %194

116:                                              ; preds = %113
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %110, i32 noundef %112, i32 noundef %115)
          to label %117 unwind label %194

117:                                              ; preds = %116
  store ptr %110, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %118 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %119 = load ptr, ptr %11, align 8, !tbaa !5
  %120 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %119)
          to label %121 unwind label %198

121:                                              ; preds = %117
  %122 = load ptr, ptr %11, align 8, !tbaa !5
  %123 = invoke noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %122)
          to label %124 unwind label %198

124:                                              ; preds = %121
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %118, i32 noundef %120, i32 noundef %123)
          to label %125 unwind label %198

125:                                              ; preds = %124
  store ptr %118, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %126 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %127 = load ptr, ptr %11, align 8, !tbaa !5
  %128 = invoke noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %127)
          to label %129 unwind label %202

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

132:                                              ; preds = %129
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %126, i32 noundef %128, i32 noundef %131)
          to label %133 unwind label %202

133:                                              ; preds = %132
  store ptr %126, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  %134 = load i32, ptr @_ZL3DIM, align 4, !tbaa !16
  %135 = load i32, ptr @_ZL3DIM, align 4, !tbaa !16
  %136 = mul nsw i32 %134, %135
  store i32 %136, ptr %19, align 4, !tbaa !16
  %137 = load i32, ptr %19, align 4, !tbaa !16
  %138 = sext i32 %137 to i64
  %139 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %138, i64 4)
  %140 = extractvalue { i64, i1 } %139, 1
  %141 = extractvalue { i64, i1 } %139, 0
  %142 = select i1 %140, i64 -1, i64 %141
  %143 = call noalias noundef nonnull ptr @_Znam(i64 noundef %142) #9
  %144 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 1
  store ptr %143, ptr %144, align 8, !tbaa !22
  %145 = load i32, ptr %19, align 4, !tbaa !16
  %146 = sext i32 %145 to i64
  %147 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %146, i64 4)
  %148 = extractvalue { i64, i1 } %147, 1
  %149 = extractvalue { i64, i1 } %147, 0
  %150 = select i1 %148, i64 -1, i64 %149
  %151 = call noalias noundef nonnull ptr @_Znam(i64 noundef %150) #9
  %152 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 2
  store ptr %151, ptr %152, align 8, !tbaa !24
  %153 = load i32, ptr %19, align 4, !tbaa !16
  %154 = sext i32 %153 to i64
  %155 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %154, i64 4)
  %156 = extractvalue { i64, i1 } %155, 1
  %157 = extractvalue { i64, i1 } %155, 0
  %158 = select i1 %156, i64 -1, i64 %157
  %159 = call noalias noundef nonnull ptr @_Znam(i64 noundef %158) #9
  %160 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 3
  store ptr %159, ptr %160, align 8, !tbaa !25
  %161 = load i32, ptr %19, align 4, !tbaa !16
  %162 = sext i32 %161 to i64
  %163 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %162, i64 4)
  %164 = extractvalue { i64, i1 } %163, 1
  %165 = extractvalue { i64, i1 } %163, 0
  %166 = select i1 %164, i64 -1, i64 %165
  %167 = call noalias noundef nonnull ptr @_Znam(i64 noundef %166) #9
  %168 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 4
  store ptr %167, ptr %168, align 8, !tbaa !26
  %169 = load i32, ptr %19, align 4, !tbaa !16
  %170 = sext i32 %169 to i64
  %171 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %170, i64 4)
  %172 = extractvalue { i64, i1 } %171, 1
  %173 = extractvalue { i64, i1 } %171, 0
  %174 = select i1 %172, i64 -1, i64 %173
  %175 = call noalias noundef nonnull ptr @_Znam(i64 noundef %174) #9
  %176 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 5
  store ptr %175, ptr %176, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  store i32 0, ptr %20, align 4, !tbaa !16
  br label %177

177:                                              ; preds = %232, %133
  %178 = load i32, ptr %20, align 4, !tbaa !16
  %179 = load i32, ptr %19, align 4, !tbaa !16
  %180 = icmp slt i32 %178, %179
  br i1 %180, label %206, label %181

181:                                              ; preds = %177
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %235

182:                                              ; preds = %53
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %12, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %69, i64 noundef 80) #10
  br label %395

186:                                              ; preds = %100, %97, %72
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %12, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %94, i64 noundef 80) #10
  br label %394

190:                                              ; preds = %108, %105, %101
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %12, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %102, i64 noundef 80) #10
  br label %393

194:                                              ; preds = %116, %113, %109
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %12, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %110, i64 noundef 80) #10
  br label %392

198:                                              ; preds = %124, %121, %117
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %12, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %118, i64 noundef 80) #10
  br label %391

202:                                              ; preds = %132, %129, %125
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %12, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %13, align 4
  call void @_ZdlPvm(ptr noundef %126, i64 noundef 80) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %391

206:                                              ; preds = %177
  %207 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 1
  %208 = load ptr, ptr %207, align 8, !tbaa !22
  %209 = load i32, ptr %20, align 4, !tbaa !16
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds float, ptr %208, i64 %210
  store float 0.000000e+00, ptr %211, align 4, !tbaa !28
  %212 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 2
  %213 = load ptr, ptr %212, align 8, !tbaa !24
  %214 = load i32, ptr %20, align 4, !tbaa !16
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds float, ptr %213, i64 %215
  store float 0.000000e+00, ptr %216, align 4, !tbaa !28
  %217 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 3
  %218 = load ptr, ptr %217, align 8, !tbaa !25
  %219 = load i32, ptr %20, align 4, !tbaa !16
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds float, ptr %218, i64 %220
  store float 0.000000e+00, ptr %221, align 4, !tbaa !28
  %222 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 4
  %223 = load ptr, ptr %222, align 8, !tbaa !26
  %224 = load i32, ptr %20, align 4, !tbaa !16
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds float, ptr %223, i64 %225
  store float 0.000000e+00, ptr %226, align 4, !tbaa !28
  %227 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 5
  %228 = load ptr, ptr %227, align 8, !tbaa !27
  %229 = load i32, ptr %20, align 4, !tbaa !16
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds float, ptr %228, i64 %230
  store float 0.000000e+00, ptr %231, align 4, !tbaa !28
  br label %232

232:                                              ; preds = %206
  %233 = load i32, ptr %20, align 4, !tbaa !16
  %234 = add nsw i32 %233, 1
  store i32 %234, ptr %20, align 4, !tbaa !16
  br label %177, !llvm.loop !29

235:                                              ; preds = %181
  %236 = load ptr, ptr %11, align 8, !tbaa !5
  %237 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_Z3dX6P12ImageContentS0_(ptr noundef %236, ptr noundef %237)
  %238 = load ptr, ptr %11, align 8, !tbaa !5
  %239 = load ptr, ptr %15, align 8, !tbaa !5
  call void @_Z3dY6P12ImageContentS0_(ptr noundef %238, ptr noundef %239)
  %240 = load ptr, ptr %11, align 8, !tbaa !5
  %241 = load ptr, ptr %16, align 8, !tbaa !5
  call void @_Z4dXX7P12ImageContentS0_(ptr noundef %240, ptr noundef %241)
  %242 = load ptr, ptr %11, align 8, !tbaa !5
  %243 = load ptr, ptr %17, align 8, !tbaa !5
  call void @_Z4dYY7P12ImageContentS0_(ptr noundef %242, ptr noundef %243)
  %244 = load ptr, ptr %11, align 8, !tbaa !5
  %245 = load ptr, ptr %18, align 8, !tbaa !5
  call void @_Z4dXY7P12ImageContentS0_(ptr noundef %244, ptr noundef %245)
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %246 = load ptr, ptr %11, align 8, !tbaa !5
  %247 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %246)
  %248 = uitofp i32 %247 to float
  %249 = fsub float %248, 2.000000e+00
  %250 = fptosi float %249 to i32
  store i32 %250, ptr %21, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 2, ptr %22, align 4, !tbaa !16
  br label %251

251:                                              ; preds = %334, %235
  %252 = load i32, ptr %22, align 4, !tbaa !16
  %253 = load i32, ptr %21, align 4, !tbaa !16
  %254 = icmp slt i32 %252, %253
  br i1 %254, label %256, label %255

255:                                              ; preds = %251
  store i32 5, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %337

256:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  store i32 2, ptr %23, align 4, !tbaa !16
  br label %257

257:                                              ; preds = %330, %256
  %258 = load i32, ptr %23, align 4, !tbaa !16
  %259 = load i32, ptr %21, align 4, !tbaa !16
  %260 = icmp slt i32 %258, %259
  br i1 %260, label %262, label %261

261:                                              ; preds = %257
  store i32 8, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %333

262:                                              ; preds = %257
  %263 = load i32, ptr %23, align 4, !tbaa !16
  %264 = sitofp i32 %263 to float
  %265 = load i32, ptr %22, align 4, !tbaa !16
  %266 = sitofp i32 %265 to float
  %267 = load ptr, ptr %14, align 8, !tbaa !5
  %268 = getelementptr inbounds %class.ImageContent, ptr %267, i32 0, i32 4
  %269 = load ptr, ptr %268, align 8, !tbaa !31
  %270 = load i32, ptr %22, align 4, !tbaa !16
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds ptr, ptr %269, i64 %271
  %273 = load ptr, ptr %272, align 8, !tbaa !5
  %274 = load i32, ptr %23, align 4, !tbaa !16
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds float, ptr %273, i64 %275
  %277 = load float, ptr %276, align 4, !tbaa !28
  %278 = fpext float %277 to double
  %279 = load ptr, ptr %15, align 8, !tbaa !5
  %280 = getelementptr inbounds %class.ImageContent, ptr %279, i32 0, i32 4
  %281 = load ptr, ptr %280, align 8, !tbaa !31
  %282 = load i32, ptr %22, align 4, !tbaa !16
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds ptr, ptr %281, i64 %283
  %285 = load ptr, ptr %284, align 8, !tbaa !5
  %286 = load i32, ptr %23, align 4, !tbaa !16
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds float, ptr %285, i64 %287
  %289 = load float, ptr %288, align 4, !tbaa !28
  %290 = fpext float %289 to double
  %291 = load ptr, ptr %16, align 8, !tbaa !5
  %292 = getelementptr inbounds %class.ImageContent, ptr %291, i32 0, i32 4
  %293 = load ptr, ptr %292, align 8, !tbaa !31
  %294 = load i32, ptr %22, align 4, !tbaa !16
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds ptr, ptr %293, i64 %295
  %297 = load ptr, ptr %296, align 8, !tbaa !5
  %298 = load i32, ptr %23, align 4, !tbaa !16
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds float, ptr %297, i64 %299
  %301 = load float, ptr %300, align 4, !tbaa !28
  %302 = fpext float %301 to double
  %303 = load ptr, ptr %17, align 8, !tbaa !5
  %304 = getelementptr inbounds %class.ImageContent, ptr %303, i32 0, i32 4
  %305 = load ptr, ptr %304, align 8, !tbaa !31
  %306 = load i32, ptr %22, align 4, !tbaa !16
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds ptr, ptr %305, i64 %307
  %309 = load ptr, ptr %308, align 8, !tbaa !5
  %310 = load i32, ptr %23, align 4, !tbaa !16
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds float, ptr %309, i64 %311
  %313 = load float, ptr %312, align 4, !tbaa !28
  %314 = fpext float %313 to double
  %315 = load ptr, ptr %18, align 8, !tbaa !5
  %316 = getelementptr inbounds %class.ImageContent, ptr %315, i32 0, i32 4
  %317 = load ptr, ptr %316, align 8, !tbaa !31
  %318 = load i32, ptr %22, align 4, !tbaa !16
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds ptr, ptr %317, i64 %319
  %321 = load ptr, ptr %320, align 8, !tbaa !5
  %322 = load i32, ptr %23, align 4, !tbaa !16
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds float, ptr %321, i64 %323
  %325 = load float, ptr %324, align 4, !tbaa !28
  %326 = fpext float %325 to double
  %327 = load i32, ptr %21, align 4, !tbaa !16
  %328 = sub nsw i32 %327, 2
  %329 = sitofp i32 %328 to float
  call void @_ZN7JetHist11samplePointEffdddddf(ptr noundef nonnull align 8 dereferenceable(160) %24, float noundef %264, float noundef %266, double noundef %278, double noundef %290, double noundef %302, double noundef %314, double noundef %326, float noundef %329)
  br label %330

330:                                              ; preds = %262
  %331 = load i32, ptr %23, align 4, !tbaa !16
  %332 = add nsw i32 %331, 1
  store i32 %332, ptr %23, align 4, !tbaa !16
  br label %257, !llvm.loop !33

333:                                              ; preds = %261
  br label %334

334:                                              ; preds = %333
  %335 = load i32, ptr %22, align 4, !tbaa !16
  %336 = add nsw i32 %335, 1
  store i32 %336, ptr %22, align 4, !tbaa !16
  br label %251, !llvm.loop !34

337:                                              ; preds = %255
  %338 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 1
  %339 = load ptr, ptr %338, align 8, !tbaa !22
  %340 = icmp eq ptr %339, null
  br i1 %340, label %342, label %341

341:                                              ; preds = %337
  call void @_ZdaPv(ptr noundef %339) #10
  br label %342

342:                                              ; preds = %341, %337
  %343 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 2
  %344 = load ptr, ptr %343, align 8, !tbaa !24
  %345 = icmp eq ptr %344, null
  br i1 %345, label %347, label %346

346:                                              ; preds = %342
  call void @_ZdaPv(ptr noundef %344) #10
  br label %347

347:                                              ; preds = %346, %342
  %348 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 3
  %349 = load ptr, ptr %348, align 8, !tbaa !25
  %350 = icmp eq ptr %349, null
  br i1 %350, label %352, label %351

351:                                              ; preds = %347
  call void @_ZdaPv(ptr noundef %349) #10
  br label %352

352:                                              ; preds = %351, %347
  %353 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 4
  %354 = load ptr, ptr %353, align 8, !tbaa !26
  %355 = icmp eq ptr %354, null
  br i1 %355, label %357, label %356

356:                                              ; preds = %352
  call void @_ZdaPv(ptr noundef %354) #10
  br label %357

357:                                              ; preds = %356, %352
  %358 = getelementptr inbounds %class.JetHist, ptr %24, i32 0, i32 5
  %359 = load ptr, ptr %358, align 8, !tbaa !27
  %360 = icmp eq ptr %359, null
  br i1 %360, label %362, label %361

361:                                              ; preds = %357
  call void @_ZdaPv(ptr noundef %359) #10
  br label %362

362:                                              ; preds = %361, %357
  %363 = getelementptr inbounds %class.Corner, ptr %24, i32 0, i32 20
  store i32 1, ptr %363, align 8, !tbaa !35
  %364 = load ptr, ptr %11, align 8, !tbaa !5
  %365 = icmp eq ptr %364, null
  br i1 %365, label %367, label %366

366:                                              ; preds = %362
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %364) #8
  call void @_ZdlPvm(ptr noundef %364, i64 noundef 80) #10
  br label %367

367:                                              ; preds = %366, %362
  %368 = load ptr, ptr %14, align 8, !tbaa !5
  %369 = icmp eq ptr %368, null
  br i1 %369, label %371, label %370

370:                                              ; preds = %367
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %368) #8
  call void @_ZdlPvm(ptr noundef %368, i64 noundef 80) #10
  br label %371

371:                                              ; preds = %370, %367
  %372 = load ptr, ptr %15, align 8, !tbaa !5
  %373 = icmp eq ptr %372, null
  br i1 %373, label %375, label %374

374:                                              ; preds = %371
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %372) #8
  call void @_ZdlPvm(ptr noundef %372, i64 noundef 80) #10
  br label %375

375:                                              ; preds = %374, %371
  %376 = load ptr, ptr %16, align 8, !tbaa !5
  %377 = icmp eq ptr %376, null
  br i1 %377, label %379, label %378

378:                                              ; preds = %375
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %376) #8
  call void @_ZdlPvm(ptr noundef %376, i64 noundef 80) #10
  br label %379

379:                                              ; preds = %378, %375
  %380 = load ptr, ptr %17, align 8, !tbaa !5
  %381 = icmp eq ptr %380, null
  br i1 %381, label %383, label %382

382:                                              ; preds = %379
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %380) #8
  call void @_ZdlPvm(ptr noundef %380, i64 noundef 80) #10
  br label %383

383:                                              ; preds = %382, %379
  %384 = load ptr, ptr %18, align 8, !tbaa !5
  %385 = icmp eq ptr %384, null
  br i1 %385, label %387, label %386

386:                                              ; preds = %383
  call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %384) #8
  call void @_ZdlPvm(ptr noundef %384, i64 noundef 80) #10
  br label %387

387:                                              ; preds = %386, %383
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, 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 %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  store i32 0, ptr %6, align 4
  br label %388

388:                                              ; preds = %387, %52, %47
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  %389 = load i32, ptr %6, align 4
  switch i32 %389, label %401 [
    i32 0, label %390
    i32 1, label %390
  ]

390:                                              ; preds = %388, %388, %27
  ret void

391:                                              ; preds = %202, %198
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %392

392:                                              ; preds = %391, %194
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %393

393:                                              ; preds = %392, %190
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %394

394:                                              ; preds = %393, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %395

395:                                              ; preds = %394, %182
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  br label %396

396:                                              ; preds = %395
  %397 = load ptr, ptr %12, align 8
  %398 = load i32, ptr %13, align 4
  %399 = insertvalue { ptr, i32 } poison, ptr %397, 0
  %400 = insertvalue { ptr, i32 } %399, i32 %398, 1
  resume { ptr, i32 } %400

401:                                              ; preds = %388
  unreachable
}

declare noundef i32 @_ZN6Corner4isOKEiii(ptr noundef nonnull align 4 dereferenceable(88), i32 noundef, i32 noundef, i32 noundef) #3

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.rint.f64(double) #2

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

; 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

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

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

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

; 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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #2

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

declare void @_Z3dX6P12ImageContentS0_(ptr noundef, ptr noundef) #3

declare void @_Z3dY6P12ImageContentS0_(ptr noundef, ptr noundef) #3

declare void @_Z4dXX7P12ImageContentS0_(ptr noundef, ptr noundef) #3

declare void @_Z4dYY7P12ImageContentS0_(ptr noundef, ptr noundef) #3

declare void @_Z4dXY7P12ImageContentS0_(ptr noundef, ptr noundef) #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #6

; 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { 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 #6 = { 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 #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, !12, i64 56}
!10 = !{!"_ZTS6Corner", !11, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !12, i64 60, !12, i64 64, !11, i64 68, !11, i64 72, !12, i64 76, !11, i64 80, !11, i64 84}
!11 = !{!"int", !7, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !12, i64 100}
!14 = !{!"_ZTS16CornerDescriptor", !10, i64 0, !6, i64 88, !11, i64 96, !12, i64 100, !15, i64 104, !11, i64 112}
!15 = !{!"long", !7, i64 0}
!16 = !{!11, !11, i64 0}
!17 = !{!14, !6, i64 88}
!18 = !{!10, !12, i64 4}
!19 = !{!10, !12, i64 8}
!20 = !{!21, !21, i64 0}
!21 = !{!"double", !7, i64 0}
!22 = !{!23, !6, i64 120}
!23 = !{!"_ZTS7JetHist", !14, i64 0, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152}
!24 = !{!23, !6, i64 128}
!25 = !{!23, !6, i64 136}
!26 = !{!23, !6, i64 144}
!27 = !{!23, !6, i64 152}
!28 = !{!12, !12, i64 0}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = !{!32, !6, i64 16}
!32 = !{!"_ZTS12ImageContent", !11, i64 0, !11, i64 4, !11, i64 8, !11, 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}
!33 = distinct !{!33, !30}
!34 = distinct !{!34, !30}
!35 = !{!10, !11, 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"

@_ZL3DIM = external hidden local_unnamed_addr global i32, align 4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7JetHist11samplePointEffdddddf(ptr noundef nonnull align 8 dereferenceable(160), float noundef, float noundef, double noundef, double noundef, double noundef, double noundef, double noundef, float noundef) local_unnamed_addr #0 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7JetHist17computeComponentsEP12ImageContent(ptr noundef nonnull align 8 dereferenceable(160) %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 %149, label %4

4:                                                ; preds = %2
  %5 = getelementptr inbounds i8, ptr %0, i64 56
  %6 = load float, ptr %5, align 8, !tbaa !5
  %7 = getelementptr inbounds i8, ptr %0, i64 100
  store float %6, ptr %7, align 4, !tbaa !11
  %8 = tail call float @llvm.fmuladd.f32(float %6, float 3.000000e+00, float 1.000000e+00)
  %9 = fptosi float %8 to i32
  %10 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %11 = sub i32 %10, %9
  %12 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %13 = sub i32 %12, %9
  %14 = tail call noundef i32 @_ZN6Corner4isOKEiii(ptr noundef nonnull align 4 dereferenceable(88) %0, i32 noundef %9, i32 noundef %11, i32 noundef %13)
  %.not = icmp eq i32 %14, 0
  br i1 %.not, label %149, label %15

15:                                               ; preds = %4
  tail call void @_ZN16CornerDescriptor8allocVecEi(ptr noundef nonnull align 8 dereferenceable(116) %0, i32 noundef 15)
  %16 = getelementptr inbounds i8, ptr %0, i64 88
  %17 = load ptr, ptr %16, align 8, !tbaa !15
  %18 = icmp eq ptr %17, null
  br i1 %18, label %149, label %19

19:                                               ; preds = %15
  %20 = load float, ptr %5, align 8, !tbaa !5
  store float %20, ptr %7, align 4, !tbaa !11
  %21 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  invoke void @_ZN12ImageContentC2Eii(ptr noundef nonnull align 8 dereferenceable(80) %21, i32 noundef 45, i32 noundef 45)
          to label %22 unwind label %116

22:                                               ; preds = %19
  %23 = load float, ptr %5, align 8, !tbaa !5
  %24 = fmul float %23, 2.000000e+00
  store float %24, ptr %5, align 8, !tbaa !5
  %25 = tail call noundef zeroext i1 @_ZN6Corner15normalizeAffineEP12ImageContentS1_(ptr noundef nonnull align 4 dereferenceable(88) %0, ptr noundef nonnull %1, ptr noundef nonnull %21)
  %26 = load float, ptr %7, align 4, !tbaa !11
  store float %26, ptr %5, align 8, !tbaa !5
  %27 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %28 = lshr i32 %27, 1
  %29 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %30 = lshr i32 %29, 1
  %31 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %32 = lshr i32 %31, 1
  %33 = uitofp nneg i32 %32 to float
  tail call void @_Z9normalizeP12ImageContentiif(ptr noundef nonnull %21, i32 noundef %28, i32 noundef %30, float noundef %33)
  %34 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  %35 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %36 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %34, i32 noundef %35, i32 noundef %36)
          to label %37 unwind label %118

37:                                               ; preds = %22
  %38 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  %39 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %40 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %38, i32 noundef %39, i32 noundef %40)
          to label %41 unwind label %120

41:                                               ; preds = %37
  %42 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  %43 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %44 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %42, i32 noundef %43, i32 noundef %44)
          to label %45 unwind label %122

45:                                               ; preds = %41
  %46 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  %47 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %48 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %46, i32 noundef %47, i32 noundef %48)
          to label %49 unwind label %124

49:                                               ; preds = %45
  %50 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  %51 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %52 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  invoke void @_ZN12ImageContentC2Ejj(ptr noundef nonnull align 8 dereferenceable(80) %50, i32 noundef %51, i32 noundef %52)
          to label %53 unwind label %126

53:                                               ; preds = %49
  %54 = load i32, ptr @_ZL3DIM, align 4, !tbaa !16
  %55 = mul nsw i32 %54, %54
  %56 = zext nneg i32 %55 to i64
  %57 = shl nuw nsw i64 %56, 2
  %58 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %57) #9
  %59 = getelementptr inbounds i8, ptr %0, i64 120
  store ptr %58, ptr %59, align 8, !tbaa !17
  %60 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %57) #9
  %61 = getelementptr inbounds i8, ptr %0, i64 128
  store ptr %60, ptr %61, align 8, !tbaa !19
  %62 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %57) #9
  %63 = getelementptr inbounds i8, ptr %0, i64 136
  store ptr %62, ptr %63, align 8, !tbaa !20
  %64 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %57) #9
  %65 = getelementptr inbounds i8, ptr %0, i64 144
  store ptr %64, ptr %65, align 8, !tbaa !21
  %66 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %57) #9
  %67 = getelementptr inbounds i8, ptr %0, i64 152
  store ptr %66, ptr %67, align 8, !tbaa !22
  %.not107 = icmp eq i32 %54, 0
  br i1 %.not107, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %53
  %umax = tail call i64 @llvm.umax.i64(i64 %56, i64 1)
  %68 = shl nuw nsw i64 %umax, 2
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %58, i8 0, i64 %68, i1 false), !tbaa !23
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %60, i8 0, i64 %68, i1 false), !tbaa !23
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %62, i8 0, i64 %68, i1 false), !tbaa !23
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %64, i8 0, i64 %68, i1 false), !tbaa !23
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %66, i8 0, i64 %68, i1 false), !tbaa !23
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %53
  tail call void @_Z3dX6P12ImageContentS0_(ptr noundef nonnull %21, ptr noundef nonnull %34)
  tail call void @_Z3dY6P12ImageContentS0_(ptr noundef nonnull %21, ptr noundef nonnull %38)
  tail call void @_Z4dXX7P12ImageContentS0_(ptr noundef nonnull %21, ptr noundef nonnull %42)
  tail call void @_Z4dYY7P12ImageContentS0_(ptr noundef nonnull %21, ptr noundef nonnull %46)
  tail call void @_Z4dXY7P12ImageContentS0_(ptr noundef nonnull %21, ptr noundef nonnull %50)
  %69 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %70 = uitofp i32 %69 to float
  %71 = fadd float %70, -2.000000e+00
  %72 = fptosi float %71 to i32
  %73 = icmp sgt i32 %72, 2
  br i1 %73, label %.preheader.lr.ph, label %._crit_edge106

.preheader.lr.ph:                                 ; preds = %._crit_edge
  %74 = getelementptr inbounds i8, ptr %34, i64 16
  %75 = getelementptr inbounds i8, ptr %38, i64 16
  %76 = getelementptr inbounds i8, ptr %42, i64 16
  %77 = getelementptr inbounds i8, ptr %46, i64 16
  %78 = getelementptr inbounds i8, ptr %50, i64 16
  %79 = add nsw i32 %72, -2
  %80 = uitofp nneg i32 %79 to float
  %wide.trip.count117 = zext nneg i32 %72 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %._crit_edge104.us, %.preheader.lr.ph
  %indvars.iv114 = phi i64 [ %indvars.iv.next115, %._crit_edge104.us ], [ 2, %.preheader.lr.ph ]
  %81 = trunc nuw nsw i64 %indvars.iv114 to i32
  %82 = uitofp nneg i32 %81 to float
  br label %83

83:                                               ; preds = %.preheader.us, %83
  %indvars.iv = phi i64 [ 2, %.preheader.us ], [ %indvars.iv.next, %83 ]
  %84 = trunc nuw nsw i64 %indvars.iv to i32
  %85 = uitofp nneg i32 %84 to float
  %86 = load ptr, ptr %74, align 8, !tbaa !24
  %87 = getelementptr inbounds ptr, ptr %86, i64 %indvars.iv114
  %88 = load ptr, ptr %87, align 8, !tbaa !26
  %89 = getelementptr inbounds float, ptr %88, i64 %indvars.iv
  %90 = load float, ptr %89, align 4, !tbaa !23
  %91 = fpext float %90 to double
  %92 = load ptr, ptr %75, align 8, !tbaa !24
  %93 = getelementptr inbounds ptr, ptr %92, i64 %indvars.iv114
  %94 = load ptr, ptr %93, align 8, !tbaa !26
  %95 = getelementptr inbounds float, ptr %94, i64 %indvars.iv
  %96 = load float, ptr %95, align 4, !tbaa !23
  %97 = fpext float %96 to double
  %98 = load ptr, ptr %76, align 8, !tbaa !24
  %99 = getelementptr inbounds ptr, ptr %98, i64 %indvars.iv114
  %100 = load ptr, ptr %99, align 8, !tbaa !26
  %101 = getelementptr inbounds float, ptr %100, i64 %indvars.iv
  %102 = load float, ptr %101, align 4, !tbaa !23
  %103 = fpext float %102 to double
  %104 = load ptr, ptr %77, align 8, !tbaa !24
  %105 = getelementptr inbounds ptr, ptr %104, i64 %indvars.iv114
  %106 = load ptr, ptr %105, align 8, !tbaa !26
  %107 = getelementptr inbounds float, ptr %106, i64 %indvars.iv
  %108 = load float, ptr %107, align 4, !tbaa !23
  %109 = fpext float %108 to double
  %110 = load ptr, ptr %78, align 8, !tbaa !24
  %111 = getelementptr inbounds ptr, ptr %110, i64 %indvars.iv114
  %112 = load ptr, ptr %111, align 8, !tbaa !26
  %113 = getelementptr inbounds float, ptr %112, i64 %indvars.iv
  %114 = load float, ptr %113, align 4, !tbaa !23
  %115 = fpext float %114 to double
  tail call void @_ZN7JetHist11samplePointEffdddddf(ptr noundef nonnull align 8 dereferenceable(160) %0, float noundef %85, float noundef %82, double noundef %91, double noundef %97, double noundef %103, double noundef %109, double noundef %115, float noundef %80)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count117
  br i1 %exitcond.not, label %._crit_edge104.us, label %83, !llvm.loop !27

._crit_edge104.us:                                ; preds = %83
  %indvars.iv.next115 = add nuw nsw i64 %indvars.iv114, 1
  %exitcond118.not = icmp eq i64 %indvars.iv.next115, %wide.trip.count117
  br i1 %exitcond118.not, label %._crit_edge106, label %.preheader.us, !llvm.loop !29

116:                                              ; preds = %19
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %150

118:                                              ; preds = %22
  %119 = landingpad { ptr, i32 }
          cleanup
  br label %150

120:                                              ; preds = %37
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %150

122:                                              ; preds = %41
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %150

124:                                              ; preds = %45
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %150

126:                                              ; preds = %49
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %150

._crit_edge106:                                   ; preds = %._crit_edge104.us, %._crit_edge
  %128 = load ptr, ptr %59, align 8, !tbaa !17
  %129 = icmp eq ptr %128, null
  br i1 %129, label %131, label %130

130:                                              ; preds = %._crit_edge106
  tail call void @_ZdaPv(ptr noundef nonnull %128) #10
  br label %131

131:                                              ; preds = %130, %._crit_edge106
  %132 = load ptr, ptr %61, align 8, !tbaa !19
  %133 = icmp eq ptr %132, null
  br i1 %133, label %135, label %134

134:                                              ; preds = %131
  tail call void @_ZdaPv(ptr noundef nonnull %132) #10
  br label %135

135:                                              ; preds = %134, %131
  %136 = load ptr, ptr %63, align 8, !tbaa !20
  %137 = icmp eq ptr %136, null
  br i1 %137, label %139, label %138

138:                                              ; preds = %135
  tail call void @_ZdaPv(ptr noundef nonnull %136) #10
  br label %139

139:                                              ; preds = %138, %135
  %140 = load ptr, ptr %65, align 8, !tbaa !21
  %141 = icmp eq ptr %140, null
  br i1 %141, label %143, label %142

142:                                              ; preds = %139
  tail call void @_ZdaPv(ptr noundef nonnull %140) #10
  br label %143

143:                                              ; preds = %142, %139
  %144 = load ptr, ptr %67, align 8, !tbaa !22
  %145 = icmp eq ptr %144, null
  br i1 %145, label %147, label %146

146:                                              ; preds = %143
  tail call void @_ZdaPv(ptr noundef nonnull %144) #10
  br label %147

147:                                              ; preds = %146, %143
  %148 = getelementptr inbounds i8, ptr %0, i64 80
  store i32 1, ptr %148, align 8, !tbaa !30
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %21) #11
  tail call void @_ZdlPvm(ptr noundef nonnull %21, i64 noundef 80) #10
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %34) #11
  tail call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef 80) #10
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %38) #11
  tail call void @_ZdlPvm(ptr noundef nonnull %38, i64 noundef 80) #10
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %42) #11
  tail call void @_ZdlPvm(ptr noundef nonnull %42, i64 noundef 80) #10
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %46) #11
  tail call void @_ZdlPvm(ptr noundef nonnull %46, i64 noundef 80) #10
  tail call void @_ZN12ImageContentD1Ev(ptr noundef nonnull align 8 dereferenceable(80) %50) #11
  tail call void @_ZdlPvm(ptr noundef nonnull %50, i64 noundef 80) #10
  br label %149

149:                                              ; preds = %147, %4, %15, %2
  ret void

150:                                              ; preds = %118, %122, %126, %124, %120, %116
  %.sink = phi ptr [ %34, %118 ], [ %42, %122 ], [ %50, %126 ], [ %46, %124 ], [ %38, %120 ], [ %21, %116 ]
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %119, %118 ], [ %123, %122 ], [ %127, %126 ], [ %125, %124 ], [ %121, %120 ], [ %117, %116 ]
  tail call void @_ZdlPvm(ptr noundef nonnull %.sink, i64 noundef 80) #10
  resume { ptr, i32 } %.pn.pn.pn.pn.pn
}

declare noundef i32 @_ZN6Corner4isOKEiii(ptr noundef nonnull align 4 dereferenceable(88), i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

declare void @_Z3dX6P12ImageContentS0_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_Z3dY6P12ImageContentS0_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_Z4dXX7P12ImageContentS0_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_Z4dYY7P12ImageContentS0_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @_Z4dXY7P12ImageContentS0_(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #5

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #7

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #8

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 speculatable willreturn memory(none) }
attributes #2 = { "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 = { 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 #4 = { 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 #5 = { 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 #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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin nounwind }
attributes #11 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !10, i64 56}
!6 = !{!"_ZTS6Corner", !7, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !7, i64 68, !7, i64 72, !10, i64 76, !7, i64 80, !7, i64 84}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"float", !8, i64 0}
!11 = !{!12, !10, i64 100}
!12 = !{!"_ZTS16CornerDescriptor", !6, i64 0, !13, i64 88, !7, i64 96, !10, i64 100, !14, i64 104, !7, i64 112}
!13 = !{!"any pointer", !8, i64 0}
!14 = !{!"long", !8, i64 0}
!15 = !{!12, !13, i64 88}
!16 = !{!7, !7, i64 0}
!17 = !{!18, !13, i64 120}
!18 = !{!"_ZTS7JetHist", !12, i64 0, !13, i64 120, !13, i64 128, !13, i64 136, !13, i64 144, !13, i64 152}
!19 = !{!18, !13, i64 128}
!20 = !{!18, !13, i64 136}
!21 = !{!18, !13, i64 144}
!22 = !{!18, !13, i64 152}
!23 = !{!10, !10, i64 0}
!24 = !{!25, !13, i64 16}
!25 = !{!"_ZTS12ImageContent", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72}
!26 = !{!13, !13, i64 0}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !28}
!30 = !{!6, !7, i64 80}


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