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

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.7" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.6" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<CornerDescriptor *, std::allocator<CornerDescriptor *>>::_Vector_impl" }
%"struct.std::_Vector_base<CornerDescriptor *, std::allocator<CornerDescriptor *>>::_Vector_impl" = type { %"struct.std::_Vector_base<CornerDescriptor *, std::allocator<CornerDescriptor *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CornerDescriptor *, std::allocator<CornerDescriptor *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.ImageContent = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.21 = external hidden unnamed_addr constant [13 x i8], align 1

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

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) #0

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #4

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88)) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88)) #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88)) #6 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #4

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_Z12float_squaref(float noundef) #3

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #7

declare noundef float @_Z7distEucPfS_i(ptr noundef, ptr noundef, i32 noundef) #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN16CornerDescriptor6getVecEv(ptr noundef nonnull align 8 dereferenceable(116)) #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z12computeVotesSt6vectorIP16CornerDescriptorSaIS1_EERS3_iiS_IiSaIiEES6_P12ImageContent(ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z23matchDescriptorsNearestRSt6vectorIP16CornerDescriptorSaIS1_EES4_f(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, float noundef %2) #5 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca float, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::vector.1", align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.7", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.6", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.6", align 8
  %29 = alloca i32, align 4
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.6", align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.7", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.6", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.6", align 8
  %40 = alloca i32, align 4
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.6", align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca %"class.std::vector.1", align 8
  %49 = alloca %"class.std::vector.1", align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca %"class.std::vector", align 8
  %53 = alloca %"class.std::vector", align 8
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca %"class.std::vector", align 8
  %62 = alloca %"class.std::vector.1", align 8
  %63 = alloca %"class.std::vector.1", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store float %2, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #8
  %66 = trunc i64 %65 to i32
  store i32 %66, ptr %7, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  %67 = load ptr, ptr %5, align 8, !tbaa !5
  %68 = call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #8
  %69 = trunc i64 %68 to i32
  store i32 %69, ptr %8, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %70 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %71 = load i32, ptr %7, align 4, !tbaa !11
  %72 = load i32, ptr %8, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %70, i32 noundef %71, i32 noundef %72, float noundef 0.000000e+00)
          to label %73 unwind label %95

73:                                               ; preds = %3
  store ptr %70, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %74 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %75 = load i32, ptr %7, align 4, !tbaa !11
  %76 = load i32, ptr %8, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %74, i32 noundef %75, i32 noundef %76, float noundef 0.000000e+00)
          to label %77 unwind label %99

77:                                               ; preds = %73
  store ptr %74, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %78 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %79 = load i32, ptr %7, align 4, !tbaa !11
  %80 = load i32, ptr %8, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %78, i32 noundef %79, i32 noundef %80, float noundef 2.000000e+02)
          to label %81 unwind label %103

81:                                               ; preds = %77
  store ptr %78, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %82 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %83 = load i32, ptr %7, align 4, !tbaa !11
  %84 = load i32, ptr %7, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %82, i32 noundef %83, i32 noundef %84, float noundef 0.000000e+00)
          to label %85 unwind label %107

85:                                               ; preds = %81
  store ptr %82, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %86 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #9
  %87 = load i32, ptr %8, align 4, !tbaa !11
  %88 = load i32, ptr %8, align 4, !tbaa !11
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %86, i32 noundef %87, i32 noundef %88, float noundef 0.000000e+00)
          to label %89 unwind label %111

89:                                               ; preds = %85
  store ptr %86, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %90

90:                                               ; preds = %155, %89
  %91 = load i32, ptr %16, align 4, !tbaa !11
  %92 = load i32, ptr %7, align 4, !tbaa !11
  %93 = icmp ult i32 %91, %92
  br i1 %93, label %115, label %94

94:                                               ; preds = %90
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %158

95:                                               ; preds = %3
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %10, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %70, i64 noundef 80) #10
  br label %872

99:                                               ; preds = %73
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %10, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %74, i64 noundef 80) #10
  br label %871

103:                                              ; preds = %77
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %10, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %78, i64 noundef 80) #10
  br label %870

107:                                              ; preds = %81
  %108 = landingpad { ptr, i32 }
          cleanup
  %109 = extractvalue { ptr, i32 } %108, 0
  store ptr %109, ptr %10, align 8
  %110 = extractvalue { ptr, i32 } %108, 1
  store i32 %110, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %82, i64 noundef 80) #10
  br label %869

111:                                              ; preds = %85
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %10, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %86, i64 noundef 80) #10
  br label %868

115:                                              ; preds = %90
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %116

116:                                              ; preds = %151, %115
  %117 = load i32, ptr %18, align 4, !tbaa !11
  %118 = load i32, ptr %8, align 4, !tbaa !11
  %119 = icmp ult i32 %117, %118
  br i1 %119, label %121, label %120

120:                                              ; preds = %116
  store i32 5, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %154

121:                                              ; preds = %116
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = load i32, ptr %16, align 4, !tbaa !11
  %124 = zext i32 %123 to i64
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %122, i64 noundef %124) #8
  %126 = load ptr, ptr %125, align 8, !tbaa !5
  %127 = call noundef ptr @_ZN16CornerDescriptor6getVecEv(ptr noundef nonnull align 8 dereferenceable(116) %126)
  %128 = load ptr, ptr %5, align 8, !tbaa !5
  %129 = load i32, ptr %18, align 4, !tbaa !11
  %130 = zext i32 %129 to i64
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %130) #8
  %132 = load ptr, ptr %131, align 8, !tbaa !5
  %133 = call noundef ptr @_ZN16CornerDescriptor6getVecEv(ptr noundef nonnull align 8 dereferenceable(116) %132)
  %134 = load ptr, ptr %5, align 8, !tbaa !5
  %135 = load i32, ptr %18, align 4, !tbaa !11
  %136 = zext i32 %135 to i64
  %137 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %134, i64 noundef %136) #8
  %138 = load ptr, ptr %137, align 8, !tbaa !5
  %139 = call noundef i32 @_ZNK16CornerDescriptor7getSizeEv(ptr noundef nonnull align 8 dereferenceable(116) %138)
  %140 = call noundef float @_Z7distEucPfS_i(ptr noundef %127, ptr noundef %133, i32 noundef %139)
  %141 = load ptr, ptr %9, align 8, !tbaa !5
  %142 = getelementptr inbounds %class.ImageContent, ptr %141, i32 0, i32 4
  %143 = load ptr, ptr %142, align 8, !tbaa !13
  %144 = load i32, ptr %16, align 4, !tbaa !11
  %145 = zext i32 %144 to i64
  %146 = getelementptr inbounds ptr, ptr %143, i64 %145
  %147 = load ptr, ptr %146, align 8, !tbaa !5
  %148 = load i32, ptr %18, align 4, !tbaa !11
  %149 = zext i32 %148 to i64
  %150 = getelementptr inbounds float, ptr %147, i64 %149
  store float %140, ptr %150, align 4, !tbaa !9
  br label %151

151:                                              ; preds = %121
  %152 = load i32, ptr %18, align 4, !tbaa !11
  %153 = add i32 %152, 1
  store i32 %153, ptr %18, align 4, !tbaa !11
  br label %116, !llvm.loop !15

154:                                              ; preds = %120
  br label %155

155:                                              ; preds = %154
  %156 = load i32, ptr %16, align 4, !tbaa !11
  %157 = add i32 %156, 1
  store i32 %157, ptr %16, align 4, !tbaa !11
  br label %90, !llvm.loop !17

158:                                              ; preds = %94
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  store i32 0, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  store i32 40, ptr %20, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 0, ptr %22, align 4, !tbaa !11
  br label %159

159:                                              ; preds = %318, %158
  %160 = load i32, ptr %22, align 4, !tbaa !11
  %161 = load i32, ptr %7, align 4, !tbaa !11
  %162 = icmp ult i32 %160, %161
  br i1 %162, label %164, label %163

163:                                              ; preds = %159
  store i32 8, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %322

164:                                              ; preds = %159
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.21)
          to label %166 unwind label %178

166:                                              ; preds = %164
  %167 = load i32, ptr %22, align 4, !tbaa !11
  %168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %165, i32 noundef %167)
          to label %169 unwind label %178

169:                                              ; preds = %166
  %170 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %171 unwind label %178

171:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  store i32 0, ptr %23, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %172 unwind label %182

172:                                              ; preds = %171
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  store i32 0, ptr %24, align 4, !tbaa !11
  br label %173

173:                                              ; preds = %281, %172
  %174 = load i32, ptr %24, align 4, !tbaa !11
  %175 = load i32, ptr %8, align 4, !tbaa !11
  %176 = icmp ult i32 %174, %175
  br i1 %176, label %186, label %177

177:                                              ; preds = %173
  store i32 11, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %285

178:                                              ; preds = %169, %166, %164
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %10, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %11, align 4
  br label %321

182:                                              ; preds = %171
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %10, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %321

186:                                              ; preds = %173
  %187 = load ptr, ptr %9, align 8, !tbaa !5
  %188 = getelementptr inbounds %class.ImageContent, ptr %187, i32 0, i32 4
  %189 = load ptr, ptr %188, align 8, !tbaa !13
  %190 = load i32, ptr %22, align 4, !tbaa !11
  %191 = zext i32 %190 to i64
  %192 = getelementptr inbounds ptr, ptr %189, i64 %191
  %193 = load ptr, ptr %192, align 8, !tbaa !5
  %194 = load i32, ptr %24, align 4, !tbaa !11
  %195 = zext i32 %194 to i64
  %196 = getelementptr inbounds float, ptr %193, i64 %195
  %197 = load float, ptr %196, align 4, !tbaa !9
  %198 = load float, ptr %6, align 4, !tbaa !9
  %199 = fcmp olt float %197, %198
  br i1 %199, label %200, label %280

200:                                              ; preds = %186
  store i32 1, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  store i32 0, ptr %25, align 4, !tbaa !11
  br label %201

201:                                              ; preds = %261, %200
  %202 = load i32, ptr %25, align 4, !tbaa !11
  %203 = sext i32 %202 to i64
  %204 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %205 = icmp ult i64 %203, %204
  br i1 %205, label %206, label %213

206:                                              ; preds = %201
  %207 = load i32, ptr %25, align 4, !tbaa !11
  %208 = load i32, ptr %20, align 4, !tbaa !11
  %209 = icmp slt i32 %207, %208
  br i1 %209, label %210, label %213

210:                                              ; preds = %206
  %211 = load i32, ptr %19, align 4, !tbaa !11
  %212 = icmp ne i32 %211, 0
  br label %213

213:                                              ; preds = %210, %206, %201
  %214 = phi i1 [ false, %206 ], [ false, %201 ], [ %212, %210 ]
  br i1 %214, label %216, label %215

215:                                              ; preds = %213
  store i32 14, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %264

216:                                              ; preds = %213
  %217 = load ptr, ptr %9, align 8, !tbaa !5
  %218 = getelementptr inbounds %class.ImageContent, ptr %217, i32 0, i32 4
  %219 = load ptr, ptr %218, align 8, !tbaa !13
  %220 = load i32, ptr %22, align 4, !tbaa !11
  %221 = zext i32 %220 to i64
  %222 = getelementptr inbounds ptr, ptr %219, i64 %221
  %223 = load ptr, ptr %222, align 8, !tbaa !5
  %224 = load i32, ptr %24, align 4, !tbaa !11
  %225 = zext i32 %224 to i64
  %226 = getelementptr inbounds float, ptr %223, i64 %225
  %227 = load float, ptr %226, align 4, !tbaa !9
  %228 = load ptr, ptr %9, align 8, !tbaa !5
  %229 = getelementptr inbounds %class.ImageContent, ptr %228, i32 0, i32 4
  %230 = load ptr, ptr %229, align 8, !tbaa !13
  %231 = load i32, ptr %22, align 4, !tbaa !11
  %232 = zext i32 %231 to i64
  %233 = getelementptr inbounds ptr, ptr %230, i64 %232
  %234 = load ptr, ptr %233, align 8, !tbaa !5
  %235 = load i32, ptr %25, align 4, !tbaa !11
  %236 = sext i32 %235 to i64
  %237 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %236) #8
  %238 = load i32, ptr %237, align 4, !tbaa !11
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds float, ptr %234, i64 %239
  %241 = load float, ptr %240, align 4, !tbaa !9
  %242 = fcmp olt float %227, %241
  br i1 %242, label %243, label %260

243:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %244 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %245 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.6", ptr %28, i32 0, i32 0
  store ptr %244, ptr %245, align 8
  %246 = load i32, ptr %25, align 4, !tbaa !11
  %247 = sext i32 %246 to i64
  %248 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %28, i64 noundef %247) #8
  %249 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.6", ptr %27, i32 0, i32 0
  store ptr %248, ptr %249, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPivEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  %250 = load i32, ptr %24, align 4, !tbaa !11
  store i32 %250, ptr %29, align 4, !tbaa !11
  %251 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.7", ptr %26, i32 0, i32 0
  %252 = load ptr, ptr %251, align 8
  %253 = invoke ptr @_ZNSt6vectorIiSaIiEE6insertEN9__gnu_cxx17__normal_iteratorIPKiS1_EEOi(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr %252, ptr noundef nonnull align 4 dereferenceable(4) %29)
          to label %254 unwind label %256

254:                                              ; preds = %243
  %255 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.6", ptr %30, i32 0, i32 0
  store ptr %253, ptr %255, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  store i32 0, ptr %19, align 4, !tbaa !11
  br label %260

256:                                              ; preds = %243
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %10, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %284

260:                                              ; preds = %254, %216
  br label %261

261:                                              ; preds = %260
  %262 = load i32, ptr %25, align 4, !tbaa !11
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %25, align 4, !tbaa !11
  br label %201, !llvm.loop !18

264:                                              ; preds = %215
  %265 = load i32, ptr %19, align 4, !tbaa !11
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %267, label %279

267:                                              ; preds = %264
  %268 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %269 = load i32, ptr %20, align 4, !tbaa !11
  %270 = sext i32 %269 to i64
  %271 = icmp ult i64 %268, %270
  br i1 %271, label %272, label %279

272:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  %273 = load i32, ptr %24, align 4, !tbaa !11
  store i32 %273, ptr %31, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 4 dereferenceable(4) %31)
          to label %274 unwind label %275

274:                                              ; preds = %272
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %279

275:                                              ; preds = %272
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %10, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %284

279:                                              ; preds = %274, %267, %264
  br label %280

280:                                              ; preds = %279, %186
  br label %281

281:                                              ; preds = %280
  %282 = load i32, ptr %24, align 4, !tbaa !11
  %283 = add i32 %282, 1
  store i32 %283, ptr %24, align 4, !tbaa !11
  br label %173, !llvm.loop !19

284:                                              ; preds = %275, %256
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %321

285:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  store i32 0, ptr %32, align 4, !tbaa !11
  br label %286

286:                                              ; preds = %314, %285
  %287 = load i32, ptr %32, align 4, !tbaa !11
  %288 = sext i32 %287 to i64
  %289 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %290 = icmp ult i64 %288, %289
  br i1 %290, label %291, label %295

291:                                              ; preds = %286
  %292 = load i32, ptr %32, align 4, !tbaa !11
  %293 = load i32, ptr %20, align 4, !tbaa !11
  %294 = icmp slt i32 %292, %293
  br label %295

295:                                              ; preds = %291, %286
  %296 = phi i1 [ false, %286 ], [ %294, %291 ]
  br i1 %296, label %298, label %297

297:                                              ; preds = %295
  store i32 17, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  br label %317

298:                                              ; preds = %295
  %299 = load i32, ptr %32, align 4, !tbaa !11
  %300 = sitofp i32 %299 to float
  %301 = load ptr, ptr %13, align 8, !tbaa !5
  %302 = getelementptr inbounds %class.ImageContent, ptr %301, i32 0, i32 4
  %303 = load ptr, ptr %302, align 8, !tbaa !13
  %304 = load i32, ptr %22, align 4, !tbaa !11
  %305 = zext i32 %304 to i64
  %306 = getelementptr inbounds ptr, ptr %303, i64 %305
  %307 = load ptr, ptr %306, align 8, !tbaa !5
  %308 = load i32, ptr %32, align 4, !tbaa !11
  %309 = sext i32 %308 to i64
  %310 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %309) #8
  %311 = load i32, ptr %310, align 4, !tbaa !11
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds float, ptr %307, i64 %312
  store float %300, ptr %313, align 4, !tbaa !9
  br label %314

314:                                              ; preds = %298
  %315 = load i32, ptr %32, align 4, !tbaa !11
  %316 = add nsw i32 %315, 1
  store i32 %316, ptr %32, align 4, !tbaa !11
  br label %286, !llvm.loop !20

317:                                              ; preds = %297
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  br label %318

318:                                              ; preds = %317
  %319 = load i32, ptr %22, align 4, !tbaa !11
  %320 = add i32 %319, 1
  store i32 %320, ptr %22, align 4, !tbaa !11
  br label %159, !llvm.loop !21

321:                                              ; preds = %284, %182, %178
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %867

322:                                              ; preds = %163
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %324 unwind label %330

324:                                              ; preds = %322
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %325

325:                                              ; preds = %490, %324
  %326 = load i32, ptr %33, align 4, !tbaa !11
  %327 = load i32, ptr %8, align 4, !tbaa !11
  %328 = icmp ult i32 %326, %327
  br i1 %328, label %334, label %329

329:                                              ; preds = %325
  store i32 20, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %494

330:                                              ; preds = %322
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %10, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %11, align 4
  br label %867

334:                                              ; preds = %325
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.21)
          to label %336 unwind label %348

336:                                              ; preds = %334
  %337 = load i32, ptr %33, align 4, !tbaa !11
  %338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %335, i32 noundef %337)
          to label %339 unwind label %348

339:                                              ; preds = %336
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %338, ptr noundef @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %341 unwind label %348

341:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  store i32 0, ptr %34, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %342 unwind label %352

342:                                              ; preds = %341
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #8
  store i32 0, ptr %35, align 4, !tbaa !11
  br label %343

343:                                              ; preds = %451, %342
  %344 = load i32, ptr %35, align 4, !tbaa !11
  %345 = load i32, ptr %7, align 4, !tbaa !11
  %346 = icmp ult i32 %344, %345
  br i1 %346, label %356, label %347

347:                                              ; preds = %343
  store i32 23, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %455

348:                                              ; preds = %339, %336, %334
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %10, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %11, align 4
  br label %493

352:                                              ; preds = %341
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %10, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %493

356:                                              ; preds = %343
  %357 = load ptr, ptr %9, align 8, !tbaa !5
  %358 = getelementptr inbounds %class.ImageContent, ptr %357, i32 0, i32 4
  %359 = load ptr, ptr %358, align 8, !tbaa !13
  %360 = load i32, ptr %35, align 4, !tbaa !11
  %361 = zext i32 %360 to i64
  %362 = getelementptr inbounds ptr, ptr %359, i64 %361
  %363 = load ptr, ptr %362, align 8, !tbaa !5
  %364 = load i32, ptr %33, align 4, !tbaa !11
  %365 = zext i32 %364 to i64
  %366 = getelementptr inbounds float, ptr %363, i64 %365
  %367 = load float, ptr %366, align 4, !tbaa !9
  %368 = load float, ptr %6, align 4, !tbaa !9
  %369 = fcmp olt float %367, %368
  br i1 %369, label %370, label %450

370:                                              ; preds = %356
  store i32 1, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  store i32 0, ptr %36, align 4, !tbaa !11
  br label %371

371:                                              ; preds = %431, %370
  %372 = load i32, ptr %36, align 4, !tbaa !11
  %373 = sext i32 %372 to i64
  %374 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %375 = icmp ult i64 %373, %374
  br i1 %375, label %376, label %383

376:                                              ; preds = %371
  %377 = load i32, ptr %36, align 4, !tbaa !11
  %378 = load i32, ptr %20, align 4, !tbaa !11
  %379 = icmp slt i32 %377, %378
  br i1 %379, label %380, label %383

380:                                              ; preds = %376
  %381 = load i32, ptr %19, align 4, !tbaa !11
  %382 = icmp ne i32 %381, 0
  br label %383

383:                                              ; preds = %380, %376, %371
  %384 = phi i1 [ false, %376 ], [ false, %371 ], [ %382, %380 ]
  br i1 %384, label %386, label %385

385:                                              ; preds = %383
  store i32 26, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %434

386:                                              ; preds = %383
  %387 = load ptr, ptr %9, align 8, !tbaa !5
  %388 = getelementptr inbounds %class.ImageContent, ptr %387, i32 0, i32 4
  %389 = load ptr, ptr %388, align 8, !tbaa !13
  %390 = load i32, ptr %35, align 4, !tbaa !11
  %391 = zext i32 %390 to i64
  %392 = getelementptr inbounds ptr, ptr %389, i64 %391
  %393 = load ptr, ptr %392, align 8, !tbaa !5
  %394 = load i32, ptr %33, align 4, !tbaa !11
  %395 = zext i32 %394 to i64
  %396 = getelementptr inbounds float, ptr %393, i64 %395
  %397 = load float, ptr %396, align 4, !tbaa !9
  %398 = load ptr, ptr %9, align 8, !tbaa !5
  %399 = getelementptr inbounds %class.ImageContent, ptr %398, i32 0, i32 4
  %400 = load ptr, ptr %399, align 8, !tbaa !13
  %401 = load i32, ptr %36, align 4, !tbaa !11
  %402 = sext i32 %401 to i64
  %403 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %402) #8
  %404 = load i32, ptr %403, align 4, !tbaa !11
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds ptr, ptr %400, i64 %405
  %407 = load ptr, ptr %406, align 8, !tbaa !5
  %408 = load i32, ptr %33, align 4, !tbaa !11
  %409 = zext i32 %408 to i64
  %410 = getelementptr inbounds float, ptr %407, i64 %409
  %411 = load float, ptr %410, align 4, !tbaa !9
  %412 = fcmp olt float %397, %411
  br i1 %412, label %413, label %430

413:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %414 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %415 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.6", ptr %39, i32 0, i32 0
  store ptr %414, ptr %415, align 8
  %416 = load i32, ptr %36, align 4, !tbaa !11
  %417 = sext i32 %416 to i64
  %418 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %39, i64 noundef %417) #8
  %419 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.6", ptr %38, i32 0, i32 0
  store ptr %418, ptr %419, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPivEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #8
  %420 = load i32, ptr %35, align 4, !tbaa !11
  store i32 %420, ptr %40, align 4, !tbaa !11
  %421 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.7", ptr %37, i32 0, i32 0
  %422 = load ptr, ptr %421, align 8
  %423 = invoke ptr @_ZNSt6vectorIiSaIiEE6insertEN9__gnu_cxx17__normal_iteratorIPKiS1_EEOi(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr %422, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %424 unwind label %426

424:                                              ; preds = %413
  %425 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.6", ptr %41, i32 0, i32 0
  store ptr %423, ptr %425, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  store i32 0, ptr %19, align 4, !tbaa !11
  br label %430

426:                                              ; preds = %413
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %10, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  br label %454

430:                                              ; preds = %424, %386
  br label %431

431:                                              ; preds = %430
  %432 = load i32, ptr %36, align 4, !tbaa !11
  %433 = add nsw i32 %432, 1
  store i32 %433, ptr %36, align 4, !tbaa !11
  br label %371, !llvm.loop !22

434:                                              ; preds = %385
  %435 = load i32, ptr %19, align 4, !tbaa !11
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %437, label %449

437:                                              ; preds = %434
  %438 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %439 = load i32, ptr %20, align 4, !tbaa !11
  %440 = sext i32 %439 to i64
  %441 = icmp ult i64 %438, %440
  br i1 %441, label %442, label %449

442:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  %443 = load i32, ptr %35, align 4, !tbaa !11
  store i32 %443, ptr %42, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %444 unwind label %445

444:                                              ; preds = %442
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %449

445:                                              ; preds = %442
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %10, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  br label %454

449:                                              ; preds = %444, %437, %434
  br label %450

450:                                              ; preds = %449, %356
  br label %451

451:                                              ; preds = %450
  %452 = load i32, ptr %35, align 4, !tbaa !11
  %453 = add i32 %452, 1
  store i32 %453, ptr %35, align 4, !tbaa !11
  br label %343, !llvm.loop !23

454:                                              ; preds = %445, %426
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  br label %493

455:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  store i32 0, ptr %43, align 4, !tbaa !11
  br label %456

456:                                              ; preds = %486, %455
  %457 = load i32, ptr %43, align 4, !tbaa !11
  %458 = sext i32 %457 to i64
  %459 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  %460 = icmp ult i64 %458, %459
  br i1 %460, label %461, label %465

461:                                              ; preds = %456
  %462 = load i32, ptr %43, align 4, !tbaa !11
  %463 = load i32, ptr %20, align 4, !tbaa !11
  %464 = icmp slt i32 %462, %463
  br label %465

465:                                              ; preds = %461, %456
  %466 = phi i1 [ false, %456 ], [ %464, %461 ]
  br i1 %466, label %468, label %467

467:                                              ; preds = %465
  store i32 29, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  br label %489

468:                                              ; preds = %465
  %469 = load i32, ptr %43, align 4, !tbaa !11
  %470 = sitofp i32 %469 to float
  %471 = load ptr, ptr %13, align 8, !tbaa !5
  %472 = getelementptr inbounds %class.ImageContent, ptr %471, i32 0, i32 4
  %473 = load ptr, ptr %472, align 8, !tbaa !13
  %474 = load i32, ptr %43, align 4, !tbaa !11
  %475 = sext i32 %474 to i64
  %476 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %475) #8
  %477 = load i32, ptr %476, align 4, !tbaa !11
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds ptr, ptr %473, i64 %478
  %480 = load ptr, ptr %479, align 8, !tbaa !5
  %481 = load i32, ptr %33, align 4, !tbaa !11
  %482 = zext i32 %481 to i64
  %483 = getelementptr inbounds float, ptr %480, i64 %482
  %484 = load float, ptr %483, align 4, !tbaa !9
  %485 = fadd float %484, %470
  store float %485, ptr %483, align 4, !tbaa !9
  br label %486

486:                                              ; preds = %468
  %487 = load i32, ptr %43, align 4, !tbaa !11
  %488 = add nsw i32 %487, 1
  store i32 %488, ptr %43, align 4, !tbaa !11
  br label %456, !llvm.loop !24

489:                                              ; preds = %467
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  br label %490

490:                                              ; preds = %489
  %491 = load i32, ptr %33, align 4, !tbaa !11
  %492 = add i32 %491, 1
  store i32 %492, ptr %33, align 4, !tbaa !11
  br label %325, !llvm.loop !25

493:                                              ; preds = %454, %352, %348
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %867

494:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  store i32 0, ptr %44, align 4, !tbaa !11
  br label %495

495:                                              ; preds = %581, %494
  %496 = load i32, ptr %44, align 4, !tbaa !11
  %497 = load i32, ptr %7, align 4, !tbaa !11
  %498 = icmp ult i32 %496, %497
  br i1 %498, label %500, label %499

499:                                              ; preds = %495
  store i32 32, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %584

500:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  %501 = load i32, ptr %44, align 4, !tbaa !11
  %502 = add i32 %501, 1
  store i32 %502, ptr %45, align 4, !tbaa !11
  br label %503

503:                                              ; preds = %573, %500
  %504 = load i32, ptr %45, align 4, !tbaa !11
  %505 = load i32, ptr %7, align 4, !tbaa !11
  %506 = icmp ult i32 %504, %505
  br i1 %506, label %508, label %507

507:                                              ; preds = %503
  store i32 35, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %580

508:                                              ; preds = %503
  %509 = load ptr, ptr %4, align 8, !tbaa !5
  %510 = load i32, ptr %44, align 4, !tbaa !11
  %511 = zext i32 %510 to i64
  %512 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %509, i64 noundef %511) #8
  %513 = load ptr, ptr %512, align 8, !tbaa !5
  %514 = invoke noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %513)
          to label %515 unwind label %576

515:                                              ; preds = %508
  %516 = load ptr, ptr %4, align 8, !tbaa !5
  %517 = load i32, ptr %45, align 4, !tbaa !11
  %518 = zext i32 %517 to i64
  %519 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %516, i64 noundef %518) #8
  %520 = load ptr, ptr %519, align 8, !tbaa !5
  %521 = invoke noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %520)
          to label %522 unwind label %576

522:                                              ; preds = %515
  %523 = fsub float %514, %521
  %524 = call noundef float @_Z12float_squaref(float noundef %523)
  %525 = load ptr, ptr %4, align 8, !tbaa !5
  %526 = load i32, ptr %44, align 4, !tbaa !11
  %527 = zext i32 %526 to i64
  %528 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %525, i64 noundef %527) #8
  %529 = load ptr, ptr %528, align 8, !tbaa !5
  %530 = invoke noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %529)
          to label %531 unwind label %576

531:                                              ; preds = %522
  %532 = load ptr, ptr %4, align 8, !tbaa !5
  %533 = load i32, ptr %45, align 4, !tbaa !11
  %534 = zext i32 %533 to i64
  %535 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %532, i64 noundef %534) #8
  %536 = load ptr, ptr %535, align 8, !tbaa !5
  %537 = invoke noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %536)
          to label %538 unwind label %576

538:                                              ; preds = %531
  %539 = fsub float %530, %537
  %540 = call noundef float @_Z12float_squaref(float noundef %539)
  %541 = fadd float %524, %540
  %542 = load ptr, ptr %14, align 8, !tbaa !5
  %543 = getelementptr inbounds %class.ImageContent, ptr %542, i32 0, i32 4
  %544 = load ptr, ptr %543, align 8, !tbaa !13
  %545 = load i32, ptr %44, align 4, !tbaa !11
  %546 = zext i32 %545 to i64
  %547 = getelementptr inbounds ptr, ptr %544, i64 %546
  %548 = load ptr, ptr %547, align 8, !tbaa !5
  %549 = load i32, ptr %45, align 4, !tbaa !11
  %550 = zext i32 %549 to i64
  %551 = getelementptr inbounds float, ptr %548, i64 %550
  store float %541, ptr %551, align 4, !tbaa !9
  %552 = load ptr, ptr %14, align 8, !tbaa !5
  %553 = getelementptr inbounds %class.ImageContent, ptr %552, i32 0, i32 4
  %554 = load ptr, ptr %553, align 8, !tbaa !13
  %555 = load i32, ptr %44, align 4, !tbaa !11
  %556 = zext i32 %555 to i64
  %557 = getelementptr inbounds ptr, ptr %554, i64 %556
  %558 = load ptr, ptr %557, align 8, !tbaa !5
  %559 = load i32, ptr %45, align 4, !tbaa !11
  %560 = zext i32 %559 to i64
  %561 = getelementptr inbounds float, ptr %558, i64 %560
  %562 = load float, ptr %561, align 4, !tbaa !9
  %563 = load ptr, ptr %14, align 8, !tbaa !5
  %564 = getelementptr inbounds %class.ImageContent, ptr %563, i32 0, i32 4
  %565 = load ptr, ptr %564, align 8, !tbaa !13
  %566 = load i32, ptr %45, align 4, !tbaa !11
  %567 = zext i32 %566 to i64
  %568 = getelementptr inbounds ptr, ptr %565, i64 %567
  %569 = load ptr, ptr %568, align 8, !tbaa !5
  %570 = load i32, ptr %44, align 4, !tbaa !11
  %571 = zext i32 %570 to i64
  %572 = getelementptr inbounds float, ptr %569, i64 %571
  store float %562, ptr %572, align 4, !tbaa !9
  br label %573

573:                                              ; preds = %538
  %574 = load i32, ptr %45, align 4, !tbaa !11
  %575 = add i32 %574, 1
  store i32 %575, ptr %45, align 4, !tbaa !11
  br label %503, !llvm.loop !26

576:                                              ; preds = %531, %522, %515, %508
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %10, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %867

580:                                              ; preds = %507
  br label %581

581:                                              ; preds = %580
  %582 = load i32, ptr %44, align 4, !tbaa !11
  %583 = add i32 %582, 1
  store i32 %583, ptr %44, align 4, !tbaa !11
  br label %495, !llvm.loop !27

584:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  store i32 0, ptr %46, align 4, !tbaa !11
  br label %585

585:                                              ; preds = %671, %584
  %586 = load i32, ptr %46, align 4, !tbaa !11
  %587 = load i32, ptr %8, align 4, !tbaa !11
  %588 = icmp ult i32 %586, %587
  br i1 %588, label %590, label %589

589:                                              ; preds = %585
  store i32 38, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  br label %674

590:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #8
  %591 = load i32, ptr %46, align 4, !tbaa !11
  %592 = add i32 %591, 1
  store i32 %592, ptr %47, align 4, !tbaa !11
  br label %593

593:                                              ; preds = %663, %590
  %594 = load i32, ptr %47, align 4, !tbaa !11
  %595 = load i32, ptr %8, align 4, !tbaa !11
  %596 = icmp ult i32 %594, %595
  br i1 %596, label %598, label %597

597:                                              ; preds = %593
  store i32 41, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  br label %670

598:                                              ; preds = %593
  %599 = load ptr, ptr %5, align 8, !tbaa !5
  %600 = load i32, ptr %46, align 4, !tbaa !11
  %601 = zext i32 %600 to i64
  %602 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %599, i64 noundef %601) #8
  %603 = load ptr, ptr %602, align 8, !tbaa !5
  %604 = invoke noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %603)
          to label %605 unwind label %666

605:                                              ; preds = %598
  %606 = load ptr, ptr %5, align 8, !tbaa !5
  %607 = load i32, ptr %47, align 4, !tbaa !11
  %608 = zext i32 %607 to i64
  %609 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %606, i64 noundef %608) #8
  %610 = load ptr, ptr %609, align 8, !tbaa !5
  %611 = invoke noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %610)
          to label %612 unwind label %666

612:                                              ; preds = %605
  %613 = fsub float %604, %611
  %614 = call noundef float @_Z12float_squaref(float noundef %613)
  %615 = load ptr, ptr %5, align 8, !tbaa !5
  %616 = load i32, ptr %46, align 4, !tbaa !11
  %617 = zext i32 %616 to i64
  %618 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %615, i64 noundef %617) #8
  %619 = load ptr, ptr %618, align 8, !tbaa !5
  %620 = invoke noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %619)
          to label %621 unwind label %666

621:                                              ; preds = %612
  %622 = load ptr, ptr %5, align 8, !tbaa !5
  %623 = load i32, ptr %47, align 4, !tbaa !11
  %624 = zext i32 %623 to i64
  %625 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %622, i64 noundef %624) #8
  %626 = load ptr, ptr %625, align 8, !tbaa !5
  %627 = invoke noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %626)
          to label %628 unwind label %666

628:                                              ; preds = %621
  %629 = fsub float %620, %627
  %630 = call noundef float @_Z12float_squaref(float noundef %629)
  %631 = fadd float %614, %630
  %632 = load ptr, ptr %15, align 8, !tbaa !5
  %633 = getelementptr inbounds %class.ImageContent, ptr %632, i32 0, i32 4
  %634 = load ptr, ptr %633, align 8, !tbaa !13
  %635 = load i32, ptr %46, align 4, !tbaa !11
  %636 = zext i32 %635 to i64
  %637 = getelementptr inbounds ptr, ptr %634, i64 %636
  %638 = load ptr, ptr %637, align 8, !tbaa !5
  %639 = load i32, ptr %47, align 4, !tbaa !11
  %640 = zext i32 %639 to i64
  %641 = getelementptr inbounds float, ptr %638, i64 %640
  store float %631, ptr %641, align 4, !tbaa !9
  %642 = load ptr, ptr %15, align 8, !tbaa !5
  %643 = getelementptr inbounds %class.ImageContent, ptr %642, i32 0, i32 4
  %644 = load ptr, ptr %643, align 8, !tbaa !13
  %645 = load i32, ptr %46, align 4, !tbaa !11
  %646 = zext i32 %645 to i64
  %647 = getelementptr inbounds ptr, ptr %644, i64 %646
  %648 = load ptr, ptr %647, align 8, !tbaa !5
  %649 = load i32, ptr %47, align 4, !tbaa !11
  %650 = zext i32 %649 to i64
  %651 = getelementptr inbounds float, ptr %648, i64 %650
  %652 = load float, ptr %651, align 4, !tbaa !9
  %653 = load ptr, ptr %15, align 8, !tbaa !5
  %654 = getelementptr inbounds %class.ImageContent, ptr %653, i32 0, i32 4
  %655 = load ptr, ptr %654, align 8, !tbaa !13
  %656 = load i32, ptr %47, align 4, !tbaa !11
  %657 = zext i32 %656 to i64
  %658 = getelementptr inbounds ptr, ptr %655, i64 %657
  %659 = load ptr, ptr %658, align 8, !tbaa !5
  %660 = load i32, ptr %46, align 4, !tbaa !11
  %661 = zext i32 %660 to i64
  %662 = getelementptr inbounds float, ptr %659, i64 %661
  store float %652, ptr %662, align 4, !tbaa !9
  br label %663

663:                                              ; preds = %628
  %664 = load i32, ptr %47, align 4, !tbaa !11
  %665 = add i32 %664, 1
  store i32 %665, ptr %47, align 4, !tbaa !11
  br label %593, !llvm.loop !28

666:                                              ; preds = %621, %612, %605, %598
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %10, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  br label %867

670:                                              ; preds = %597
  br label %671

671:                                              ; preds = %670
  %672 = load i32, ptr %46, align 4, !tbaa !11
  %673 = add i32 %672, 1
  store i32 %673, ptr %46, align 4, !tbaa !11
  br label %585, !llvm.loop !29

674:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #8
  store i32 0, ptr %50, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  store i32 -1, ptr %51, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %53) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #8
  store i32 0, ptr %54, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #8
  store i32 0, ptr %55, align 4, !tbaa !11
  br label %675

675:                                              ; preds = %852, %674
  %676 = load i32, ptr %55, align 4, !tbaa !11
  %677 = load i32, ptr %7, align 4, !tbaa !11
  %678 = icmp ult i32 %676, %677
  br i1 %678, label %680, label %679

679:                                              ; preds = %675
  store i32 44, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  br label %856

680:                                              ; preds = %675
  %681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.21)
          to label %682 unwind label %705

682:                                              ; preds = %680
  %683 = load i32, ptr %55, align 4, !tbaa !11
  %684 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %681, i32 noundef %683)
          to label %685 unwind label %705

685:                                              ; preds = %682
  %686 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %684, ptr noundef @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %687 unwind label %705

687:                                              ; preds = %685
  %688 = load ptr, ptr %4, align 8, !tbaa !5
  %689 = load i32, ptr %55, align 4, !tbaa !11
  %690 = zext i32 %689 to i64
  %691 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %688, i64 noundef %690) #8
  %692 = load ptr, ptr %691, align 8, !tbaa !5
  %693 = invoke noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88) %692)
          to label %694 unwind label %705

694:                                              ; preds = %687
  %695 = fpext float %693 to double
  %696 = fmul double 5.000000e+00, %695
  %697 = fptrunc double %696 to float
  %698 = call noundef float @_Z12float_squaref(float noundef %697)
  %699 = fptosi float %698 to i32
  store i32 %699, ptr %54, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #8
  store i32 0, ptr %56, align 4, !tbaa !11
  br label %700

700:                                              ; preds = %736, %694
  %701 = load i32, ptr %56, align 4, !tbaa !11
  %702 = load i32, ptr %7, align 4, !tbaa !11
  %703 = icmp ult i32 %701, %702
  br i1 %703, label %709, label %704

704:                                              ; preds = %700
  store i32 47, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %739

705:                                              ; preds = %687, %685, %682, %680
  %706 = landingpad { ptr, i32 }
          cleanup
  %707 = extractvalue { ptr, i32 } %706, 0
  store ptr %707, ptr %10, align 8
  %708 = extractvalue { ptr, i32 } %706, 1
  store i32 %708, ptr %11, align 4
  br label %855

709:                                              ; preds = %700
  %710 = load ptr, ptr %14, align 8, !tbaa !5
  %711 = getelementptr inbounds %class.ImageContent, ptr %710, i32 0, i32 4
  %712 = load ptr, ptr %711, align 8, !tbaa !13
  %713 = load i32, ptr %55, align 4, !tbaa !11
  %714 = zext i32 %713 to i64
  %715 = getelementptr inbounds ptr, ptr %712, i64 %714
  %716 = load ptr, ptr %715, align 8, !tbaa !5
  %717 = load i32, ptr %56, align 4, !tbaa !11
  %718 = zext i32 %717 to i64
  %719 = getelementptr inbounds float, ptr %716, i64 %718
  %720 = load float, ptr %719, align 4, !tbaa !9
  %721 = load i32, ptr %54, align 4, !tbaa !11
  %722 = sitofp i32 %721 to float
  %723 = fcmp olt float %720, %722
  br i1 %723, label %724, label %735

724:                                              ; preds = %709
  %725 = load i32, ptr %55, align 4, !tbaa !11
  %726 = load i32, ptr %56, align 4, !tbaa !11
  %727 = icmp ne i32 %725, %726
  br i1 %727, label %728, label %735

728:                                              ; preds = %724
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #8
  %729 = load i32, ptr %56, align 4, !tbaa !11
  store i32 %729, ptr %57, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr noundef nonnull align 4 dereferenceable(4) %57)
          to label %730 unwind label %731

730:                                              ; preds = %728
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  br label %735

731:                                              ; preds = %728
  %732 = landingpad { ptr, i32 }
          cleanup
  %733 = extractvalue { ptr, i32 } %732, 0
  store ptr %733, ptr %10, align 8
  %734 = extractvalue { ptr, i32 } %732, 1
  store i32 %734, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #8
  br label %855

735:                                              ; preds = %730, %724, %709
  br label %736

736:                                              ; preds = %735
  %737 = load i32, ptr %56, align 4, !tbaa !11
  %738 = add i32 %737, 1
  store i32 %738, ptr %56, align 4, !tbaa !11
  br label %700, !llvm.loop !30

739:                                              ; preds = %704
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  store i32 0, ptr %58, align 4, !tbaa !11
  br label %740

740:                                              ; preds = %847, %739
  %741 = load i32, ptr %58, align 4, !tbaa !11
  %742 = load i32, ptr %8, align 4, !tbaa !11
  %743 = icmp ult i32 %741, %742
  br i1 %743, label %745, label %744

744:                                              ; preds = %740
  store i32 50, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %851

745:                                              ; preds = %740
  %746 = load ptr, ptr %13, align 8, !tbaa !5
  %747 = getelementptr inbounds %class.ImageContent, ptr %746, i32 0, i32 4
  %748 = load ptr, ptr %747, align 8, !tbaa !13
  %749 = load i32, ptr %55, align 4, !tbaa !11
  %750 = zext i32 %749 to i64
  %751 = getelementptr inbounds ptr, ptr %748, i64 %750
  %752 = load ptr, ptr %751, align 8, !tbaa !5
  %753 = load i32, ptr %58, align 4, !tbaa !11
  %754 = zext i32 %753 to i64
  %755 = getelementptr inbounds float, ptr %752, i64 %754
  %756 = load float, ptr %755, align 4, !tbaa !9
  %757 = fcmp olt float %756, 5.000000e+01
  br i1 %757, label %758, label %846

758:                                              ; preds = %745
  %759 = load ptr, ptr %5, align 8, !tbaa !5
  %760 = load i32, ptr %58, align 4, !tbaa !11
  %761 = zext i32 %760 to i64
  %762 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %759, i64 noundef %761) #8
  %763 = load ptr, ptr %762, align 8, !tbaa !5
  %764 = invoke noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88) %763)
          to label %765 unwind label %776

765:                                              ; preds = %758
  %766 = fpext float %764 to double
  %767 = fmul double 5.000000e+00, %766
  %768 = fptrunc double %767 to float
  %769 = call noundef float @_Z12float_squaref(float noundef %768)
  %770 = fptosi float %769 to i32
  store i32 %770, ptr %54, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #8
  store i32 0, ptr %59, align 4, !tbaa !11
  br label %771

771:                                              ; preds = %807, %765
  %772 = load i32, ptr %59, align 4, !tbaa !11
  %773 = load i32, ptr %8, align 4, !tbaa !11
  %774 = icmp ult i32 %772, %773
  br i1 %774, label %780, label %775

775:                                              ; preds = %771
  store i32 53, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #8
  br label %810

776:                                              ; preds = %810, %758
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %10, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %11, align 4
  br label %850

780:                                              ; preds = %771
  %781 = load ptr, ptr %15, align 8, !tbaa !5
  %782 = getelementptr inbounds %class.ImageContent, ptr %781, i32 0, i32 4
  %783 = load ptr, ptr %782, align 8, !tbaa !13
  %784 = load i32, ptr %58, align 4, !tbaa !11
  %785 = zext i32 %784 to i64
  %786 = getelementptr inbounds ptr, ptr %783, i64 %785
  %787 = load ptr, ptr %786, align 8, !tbaa !5
  %788 = load i32, ptr %59, align 4, !tbaa !11
  %789 = zext i32 %788 to i64
  %790 = getelementptr inbounds float, ptr %787, i64 %789
  %791 = load float, ptr %790, align 4, !tbaa !9
  %792 = load i32, ptr %54, align 4, !tbaa !11
  %793 = sitofp i32 %792 to float
  %794 = fcmp olt float %791, %793
  br i1 %794, label %795, label %806

795:                                              ; preds = %780
  %796 = load i32, ptr %58, align 4, !tbaa !11
  %797 = load i32, ptr %59, align 4, !tbaa !11
  %798 = icmp ne i32 %796, %797
  br i1 %798, label %799, label %806

799:                                              ; preds = %795
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #8
  %800 = load i32, ptr %59, align 4, !tbaa !11
  store i32 %800, ptr %60, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 4 dereferenceable(4) %60)
          to label %801 unwind label %802

801:                                              ; preds = %799
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #8
  br label %806

802:                                              ; preds = %799
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %10, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #8
  br label %850

806:                                              ; preds = %801, %795, %780
  br label %807

807:                                              ; preds = %806
  %808 = load i32, ptr %59, align 4, !tbaa !11
  %809 = add i32 %808, 1
  store i32 %809, ptr %59, align 4, !tbaa !11
  br label %771, !llvm.loop !31

810:                                              ; preds = %775
  %811 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 8 dereferenceable(24) %811)
          to label %812 unwind label %776

812:                                              ; preds = %810
  %813 = load ptr, ptr %5, align 8, !tbaa !5
  %814 = load i32, ptr %55, align 4, !tbaa !11
  %815 = load i32, ptr %58, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %816 unwind label %832

816:                                              ; preds = %812
  invoke void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %63, ptr noundef nonnull align 8 dereferenceable(24) %49)
          to label %817 unwind label %836

817:                                              ; preds = %816
  %818 = load ptr, ptr %13, align 8, !tbaa !5
  %819 = invoke noundef i32 @_Z12computeVotesSt6vectorIP16CornerDescriptorSaIS1_EERS3_iiS_IiSaIiEES6_P12ImageContent(ptr noundef %61, ptr noundef nonnull align 8 dereferenceable(24) %813, i32 noundef %814, i32 noundef %815, ptr noundef %62, ptr noundef %63, ptr noundef %818)
          to label %820 unwind label %840

820:                                              ; preds = %817
  %821 = sitofp i32 %819 to float
  %822 = load ptr, ptr %12, align 8, !tbaa !5
  %823 = getelementptr inbounds %class.ImageContent, ptr %822, i32 0, i32 4
  %824 = load ptr, ptr %823, align 8, !tbaa !13
  %825 = load i32, ptr %55, align 4, !tbaa !11
  %826 = zext i32 %825 to i64
  %827 = getelementptr inbounds ptr, ptr %824, i64 %826
  %828 = load ptr, ptr %827, align 8, !tbaa !5
  %829 = load i32, ptr %58, align 4, !tbaa !11
  %830 = zext i32 %829 to i64
  %831 = getelementptr inbounds float, ptr %828, i64 %830
  store float %821, ptr %831, align 4, !tbaa !9
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #8
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  br label %846

832:                                              ; preds = %812
  %833 = landingpad { ptr, i32 }
          cleanup
  %834 = extractvalue { ptr, i32 } %833, 0
  store ptr %834, ptr %10, align 8
  %835 = extractvalue { ptr, i32 } %833, 1
  store i32 %835, ptr %11, align 4
  br label %845

836:                                              ; preds = %816
  %837 = landingpad { ptr, i32 }
          cleanup
  %838 = extractvalue { ptr, i32 } %837, 0
  store ptr %838, ptr %10, align 8
  %839 = extractvalue { ptr, i32 } %837, 1
  store i32 %839, ptr %11, align 4
  br label %844

840:                                              ; preds = %817
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %10, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %11, align 4
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #8
  br label %844

844:                                              ; preds = %840, %836
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #8
  br label %845

845:                                              ; preds = %844, %832
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #8
  br label %850

846:                                              ; preds = %820, %745
  br label %847

847:                                              ; preds = %846
  %848 = load i32, ptr %58, align 4, !tbaa !11
  %849 = add i32 %848, 1
  store i32 %849, ptr %58, align 4, !tbaa !11
  br label %740, !llvm.loop !32

850:                                              ; preds = %845, %802, %776
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %855

851:                                              ; preds = %744
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  br label %852

852:                                              ; preds = %851
  %853 = load i32, ptr %55, align 4, !tbaa !11
  %854 = add i32 %853, 1
  store i32 %854, ptr %55, align 4, !tbaa !11
  br label %675, !llvm.loop !33

855:                                              ; preds = %850, %731, %705
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #8
  br label %866

856:                                              ; preds = %679
  %857 = load i32, ptr %50, align 4, !tbaa !11
  %858 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %857)
          to label %859 unwind label %862

859:                                              ; preds = %856
  %860 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %858, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %861 unwind label %862

861:                                              ; preds = %859
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #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
  ret void

862:                                              ; preds = %859, %856
  %863 = landingpad { ptr, i32 }
          cleanup
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %10, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %11, align 4
  br label %866

866:                                              ; preds = %862, %855
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %53) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #8
  br label %867

867:                                              ; preds = %866, %666, %576, %493, %330, %321
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %868

868:                                              ; preds = %867, %111
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %869

869:                                              ; preds = %868, %107
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  br label %870

870:                                              ; preds = %869, %103
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %871

871:                                              ; preds = %870, %99
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  br label %872

872:                                              ; preds = %871, %95
  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
  br label %873

873:                                              ; preds = %872
  %874 = load ptr, ptr %10, align 8
  %875 = load i32, ptr %11, align 4
  %876 = insertvalue { ptr, i32 } poison, ptr %874, 0
  %877 = insertvalue { ptr, i32 } %876, i32 %875, 1
  resume { ptr, i32 } %877
}

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPivEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 align 2

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

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

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

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

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


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.7" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.6" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<CornerDescriptor *, std::allocator<CornerDescriptor *>>::_Vector_impl" }
%"struct.std::_Vector_base<CornerDescriptor *, std::allocator<CornerDescriptor *>>::_Vector_impl" = type { %"struct.std::_Vector_base<CornerDescriptor *, std::allocator<CornerDescriptor *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<CornerDescriptor *, std::allocator<CornerDescriptor *>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.21 = external hidden unnamed_addr constant [13 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #4

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_Z12float_squaref(float noundef) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #7

declare noundef float @_Z7distEucPfS_i(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZN16CornerDescriptor6getVecEv(ptr noundef nonnull align 8 dereferenceable(116)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z12computeVotesSt6vectorIP16CornerDescriptorSaIS1_EERS3_iiS_IiSaIiEES6_P12ImageContent(ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z23matchDescriptorsNearestRSt6vectorIP16CornerDescriptorSaIS1_EES4_f(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, float noundef %2) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::vector.1", align 8
  %5 = alloca i32, align 4
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.7", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.6", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.6", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.7", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.6", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.6", align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::vector.1", align 8
  %18 = alloca %"class.std::vector.1", align 8
  %19 = alloca %"class.std::vector", align 8
  %20 = alloca %"class.std::vector", align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca %"class.std::vector", align 8
  %24 = alloca %"class.std::vector.1", align 8
  %25 = alloca %"class.std::vector.1", align 8
  %26 = tail call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  %27 = trunc i64 %26 to i32
  %28 = tail call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #8
  %29 = trunc i64 %28 to i32
  %30 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %30, i32 noundef %27, i32 noundef %29, float noundef 0.000000e+00)
          to label %31 unwind label %57

31:                                               ; preds = %3
  %32 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %32, i32 noundef %27, i32 noundef %29, float noundef 0.000000e+00)
          to label %33 unwind label %59

33:                                               ; preds = %31
  %34 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %34, i32 noundef %27, i32 noundef %29, float noundef 2.000000e+02)
          to label %35 unwind label %61

35:                                               ; preds = %33
  %36 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %36, i32 noundef %27, i32 noundef %27, float noundef 0.000000e+00)
          to label %37 unwind label %63

37:                                               ; preds = %35
  %38 = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #9
  invoke void @_ZN12ImageContentC2Ejjf(ptr noundef nonnull align 8 dereferenceable(80) %38, i32 noundef %29, i32 noundef %29, float noundef 0.000000e+00)
          to label %.preheader270 unwind label %65

.preheader270:                                    ; preds = %37
  %.not323 = icmp eq i32 %27, 0
  br i1 %.not323, label %._crit_edge275.thread, label %.preheader269.lr.ph

._crit_edge275.thread:                            ; preds = %.preheader270
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  br label %._crit_edge287

.preheader269.lr.ph:                              ; preds = %.preheader270
  %.not324 = icmp eq i32 %29, 0
  %39 = getelementptr inbounds i8, ptr %30, i64 16
  br i1 %.not324, label %._crit_edge275.thread419, label %.preheader269.us.preheader

._crit_edge275.thread419:                         ; preds = %.preheader269.lr.ph
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  br label %.lr.ph286

.preheader269.us.preheader:                       ; preds = %.preheader269.lr.ph
  %wide.trip.count342 = and i64 %26, 4294967295
  %wide.trip.count = and i64 %28, 4294967295
  br label %.preheader269.us

.preheader269.us:                                 ; preds = %.preheader269.us.preheader, %._crit_edge.us
  %indvars.iv339 = phi i64 [ 0, %.preheader269.us.preheader ], [ %indvars.iv.next340, %._crit_edge.us ]
  br label %40

40:                                               ; preds = %.preheader269.us, %40
  %indvars.iv = phi i64 [ 0, %.preheader269.us ], [ %indvars.iv.next, %40 ]
  %41 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv339) #8
  %42 = load ptr, ptr %41, align 8, !tbaa !5
  %43 = tail call noundef ptr @_ZN16CornerDescriptor6getVecEv(ptr noundef nonnull align 8 dereferenceable(116) %42)
  %44 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %45 = load ptr, ptr %44, align 8, !tbaa !5
  %46 = tail call noundef ptr @_ZN16CornerDescriptor6getVecEv(ptr noundef nonnull align 8 dereferenceable(116) %45)
  %47 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv) #8
  %48 = load ptr, ptr %47, align 8, !tbaa !5
  %49 = tail call noundef i32 @_ZNK16CornerDescriptor7getSizeEv(ptr noundef nonnull align 8 dereferenceable(116) %48)
  %50 = tail call noundef float @_Z7distEucPfS_i(ptr noundef %43, ptr noundef %46, i32 noundef %49)
  %51 = load ptr, ptr %39, align 8, !tbaa !9
  %52 = getelementptr inbounds ptr, ptr %51, i64 %indvars.iv339
  %53 = load ptr, ptr %52, align 8, !tbaa !5
  %54 = getelementptr inbounds float, ptr %53, i64 %indvars.iv
  store float %50, ptr %54, align 4, !tbaa !12
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.us, label %40, !llvm.loop !14

._crit_edge.us:                                   ; preds = %40
  %indvars.iv.next340 = add nuw nsw i64 %indvars.iv339, 1
  %exitcond343.not = icmp eq i64 %indvars.iv.next340, %wide.trip.count342
  br i1 %exitcond343.not, label %._crit_edge275, label %.preheader269.us, !llvm.loop !16

._crit_edge275:                                   ; preds = %._crit_edge.us
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  br i1 %.not323, label %._crit_edge287, label %.lr.ph286

.lr.ph286:                                        ; preds = %._crit_edge275.thread419, %._crit_edge275
  %.not326 = icmp eq i32 %29, 0
  %55 = getelementptr inbounds i8, ptr %30, i64 16
  %56 = getelementptr inbounds i8, ptr %34, i64 16
  %wide.trip.count358 = and i64 %26, 4294967295
  %wide.trip.count350 = and i64 %28, 4294967295
  br label %68

57:                                               ; preds = %3
  %58 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %30, i64 noundef 80) #10
  br label %361

59:                                               ; preds = %31
  %60 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %32, i64 noundef 80) #10
  br label %361

61:                                               ; preds = %33
  %62 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef 80) #10
  br label %361

63:                                               ; preds = %35
  %64 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %36, i64 noundef 80) #10
  br label %361

65:                                               ; preds = %37
  %66 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %38, i64 noundef 80) #10
  br label %361

._crit_edge287:                                   ; preds = %._crit_edge, %._crit_edge275.thread, %._crit_edge275
  %67 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %136 unwind label %141

68:                                               ; preds = %.lr.ph286, %._crit_edge
  %indvars.iv355 = phi i64 [ 0, %.lr.ph286 ], [ %indvars.iv.next356, %._crit_edge ]
  %69 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.21)
          to label %70 unwind label %78

70:                                               ; preds = %68
  %71 = trunc nuw i64 %indvars.iv355 to i32
  %72 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %69, i32 noundef %71)
          to label %73 unwind label %78

73:                                               ; preds = %70
  %74 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %75 unwind label %78

75:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #8
  store i32 0, ptr %5, align 4, !tbaa !17
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %76 unwind label %80

76:                                               ; preds = %75
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8
  br i1 %.not326, label %.preheader268, label %.lr.ph281

.preheader268:                                    ; preds = %122, %76
  %77 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %.not328 = icmp eq i64 %77, 0
  br i1 %.not328, label %._crit_edge, label %.lr.ph283

78:                                               ; preds = %73, %70, %68
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %360

80:                                               ; preds = %75
  %81 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8
  br label %360

.lr.ph281:                                        ; preds = %76, %122
  %indvars.iv347 = phi i64 [ %indvars.iv.next348, %122 ], [ 0, %76 ]
  %82 = load ptr, ptr %55, align 8, !tbaa !9
  %83 = getelementptr inbounds ptr, ptr %82, i64 %indvars.iv355
  %84 = load ptr, ptr %83, align 8, !tbaa !5
  %85 = getelementptr inbounds float, ptr %84, i64 %indvars.iv347
  %86 = load float, ptr %85, align 4, !tbaa !12
  %87 = fcmp olt float %86, %2
  br i1 %87, label %.preheader267, label %122

.preheader267:                                    ; preds = %.lr.ph281
  %88 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %.not327 = icmp eq i64 %88, 0
  br i1 %.not327, label %.critedge.thread, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.preheader267
  %89 = trunc nuw i64 %indvars.iv347 to i32
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %112
  %indvars.iv344 = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next345, %112 ]
  %.0228276 = phi i32 [ 1, %.lr.ph.preheader ], [ %.1229, %112 ]
  %90 = icmp ult i64 %indvars.iv344, 40
  %91 = icmp ne i32 %.0228276, 0
  %or.cond = and i1 %91, %90
  br i1 %or.cond, label %92, label %.critedge

.critedge:                                        ; preds = %112, %.lr.ph
  %.0228.lcssa = phi i32 [ %.1229, %112 ], [ %.0228276, %.lr.ph ]
  %.not250 = icmp eq i32 %.0228.lcssa, 0
  br i1 %.not250, label %122, label %.critedge.thread

92:                                               ; preds = %.lr.ph
  %93 = load ptr, ptr %55, align 8, !tbaa !9
  %94 = getelementptr inbounds ptr, ptr %93, i64 %indvars.iv355
  %95 = load ptr, ptr %94, align 8, !tbaa !5
  %96 = getelementptr inbounds float, ptr %95, i64 %indvars.iv347
  %97 = load float, ptr %96, align 4, !tbaa !12
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv344) #8
  %99 = load i32, ptr %98, align 4, !tbaa !17
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds float, ptr %95, i64 %100
  %102 = load float, ptr %101, align 4, !tbaa !12
  %103 = fcmp olt float %97, %102
  br i1 %103, label %104, label %112

104:                                              ; preds = %92
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %105 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  store ptr %105, ptr %8, align 8
  %106 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %8, i64 noundef %indvars.iv344) #8
  store ptr %106, ptr %7, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPivEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #8
  store i32 %89, ptr %9, align 4, !tbaa !17
  %107 = load ptr, ptr %6, align 8
  %108 = invoke ptr @_ZNSt6vectorIiSaIiEE6insertEN9__gnu_cxx17__normal_iteratorIPKiS1_EEOi(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr %107, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %109 unwind label %110

109:                                              ; preds = %104
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br label %112

110:                                              ; preds = %104
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br label %360

112:                                              ; preds = %92, %109
  %.1229 = phi i32 [ 0, %109 ], [ 1, %92 ]
  %indvars.iv.next345 = add nuw nsw i64 %indvars.iv344, 1
  %113 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %114 = icmp ugt i64 %113, %indvars.iv.next345
  br i1 %114, label %.lr.ph, label %.critedge, !llvm.loop !18

.critedge.thread:                                 ; preds = %.preheader267, %.critedge
  %115 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %116 = icmp ult i64 %115, 40
  br i1 %116, label %117, label %122

117:                                              ; preds = %.critedge.thread
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #8
  %118 = trunc nuw i64 %indvars.iv347 to i32
  store i32 %118, ptr %10, align 4, !tbaa !17
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %119 unwind label %120

119:                                              ; preds = %117
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  br label %122

120:                                              ; preds = %117
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  br label %360

122:                                              ; preds = %.lr.ph281, %119, %.critedge.thread, %.critedge
  %indvars.iv.next348 = add nuw nsw i64 %indvars.iv347, 1
  %exitcond351.not = icmp eq i64 %indvars.iv.next348, %wide.trip.count350
  br i1 %exitcond351.not, label %.preheader268, label %.lr.ph281, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph283, %.preheader268
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %indvars.iv.next356 = add nuw nsw i64 %indvars.iv355, 1
  %exitcond359.not = icmp eq i64 %indvars.iv.next356, %wide.trip.count358
  br i1 %exitcond359.not, label %._crit_edge287, label %68, !llvm.loop !20

.lr.ph283:                                        ; preds = %.preheader268, %.lr.ph283
  %indvars.iv352 = phi i64 [ %indvars.iv.next353, %.lr.ph283 ], [ 0, %.preheader268 ]
  %123 = trunc nuw nsw i64 %indvars.iv352 to i32
  %124 = uitofp nneg i32 %123 to float
  %125 = load ptr, ptr %56, align 8, !tbaa !9
  %126 = getelementptr inbounds ptr, ptr %125, i64 %indvars.iv355
  %127 = load ptr, ptr %126, align 8, !tbaa !5
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv352) #8
  %129 = load i32, ptr %128, align 4, !tbaa !17
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds float, ptr %127, i64 %130
  store float %124, ptr %131, align 4, !tbaa !12
  %indvars.iv.next353 = add nuw nsw i64 %indvars.iv352, 1
  %132 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %133 = icmp ugt i64 %132, %indvars.iv.next353
  %134 = icmp ult i64 %indvars.iv352, 39
  %135 = and i1 %134, %133
  br i1 %135, label %.lr.ph283, label %._crit_edge, !llvm.loop !21

136:                                              ; preds = %._crit_edge287
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %.not329 = icmp eq i32 %29, 0
  br i1 %.not329, label %.preheader264, label %.lr.ph302

.lr.ph302:                                        ; preds = %136
  %137 = getelementptr inbounds i8, ptr %30, i64 16
  %138 = getelementptr inbounds i8, ptr %34, i64 16
  %wide.trip.count374 = and i64 %28, 4294967295
  %wide.trip.count366 = and i64 %26, 4294967295
  br label %143

.preheader264:                                    ; preds = %._crit_edge299, %136
  br i1 %.not323, label %.preheader262, label %.lr.ph307

.lr.ph307:                                        ; preds = %.preheader264
  %139 = getelementptr inbounds i8, ptr %36, i64 16
  %140 = and i64 %26, 4294967295
  br label %217

141:                                              ; preds = %._crit_edge287
  %142 = landingpad { ptr, i32 }
          cleanup
  br label %360

143:                                              ; preds = %.lr.ph302, %._crit_edge299
  %indvars.iv371 = phi i64 [ 0, %.lr.ph302 ], [ %indvars.iv.next372, %._crit_edge299 ]
  %144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.21)
          to label %145 unwind label %153

145:                                              ; preds = %143
  %146 = trunc nuw i64 %indvars.iv371 to i32
  %147 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %144, i32 noundef %146)
          to label %148 unwind label %153

148:                                              ; preds = %145
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %150 unwind label %153

150:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  store i32 0, ptr %11, align 4, !tbaa !17
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %151 unwind label %155

151:                                              ; preds = %150
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  br i1 %.not323, label %.preheader266, label %.lr.ph296

.preheader266:                                    ; preds = %199, %151
  %152 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %.not332 = icmp eq i64 %152, 0
  br i1 %.not332, label %._crit_edge299, label %.lr.ph298

153:                                              ; preds = %148, %145, %143
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %360

155:                                              ; preds = %150
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  br label %360

.lr.ph296:                                        ; preds = %151, %199
  %indvars.iv363 = phi i64 [ %indvars.iv.next364, %199 ], [ 0, %151 ]
  %157 = load ptr, ptr %137, align 8, !tbaa !9
  %158 = getelementptr inbounds ptr, ptr %157, i64 %indvars.iv363
  %159 = load ptr, ptr %158, align 8, !tbaa !5
  %160 = getelementptr inbounds float, ptr %159, i64 %indvars.iv371
  %161 = load float, ptr %160, align 4, !tbaa !12
  %162 = fcmp olt float %161, %2
  br i1 %162, label %.preheader265, label %199

.preheader265:                                    ; preds = %.lr.ph296
  %163 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %.not331 = icmp eq i64 %163, 0
  br i1 %.not331, label %.critedge2.thread, label %.lr.ph290.preheader

.lr.ph290.preheader:                              ; preds = %.preheader265
  %164 = trunc nuw i64 %indvars.iv363 to i32
  br label %.lr.ph290

.lr.ph290:                                        ; preds = %.lr.ph290.preheader, %189
  %indvars.iv360 = phi i64 [ 0, %.lr.ph290.preheader ], [ %indvars.iv.next361, %189 ]
  %.2230288 = phi i32 [ 1, %.lr.ph290.preheader ], [ %.3231, %189 ]
  %165 = icmp ult i64 %indvars.iv360, 40
  %166 = icmp ne i32 %.2230288, 0
  %or.cond5 = and i1 %166, %165
  br i1 %or.cond5, label %167, label %.critedge2

.critedge2:                                       ; preds = %189, %.lr.ph290
  %.2230.lcssa = phi i32 [ %.3231, %189 ], [ %.2230288, %.lr.ph290 ]
  %.not246 = icmp eq i32 %.2230.lcssa, 0
  br i1 %.not246, label %199, label %.critedge2.thread

167:                                              ; preds = %.lr.ph290
  %168 = load ptr, ptr %137, align 8, !tbaa !9
  %169 = getelementptr inbounds ptr, ptr %168, i64 %indvars.iv363
  %170 = load ptr, ptr %169, align 8, !tbaa !5
  %171 = getelementptr inbounds float, ptr %170, i64 %indvars.iv371
  %172 = load float, ptr %171, align 4, !tbaa !12
  %173 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv360) #8
  %174 = load i32, ptr %173, align 4, !tbaa !17
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds ptr, ptr %168, i64 %175
  %177 = load ptr, ptr %176, align 8, !tbaa !5
  %178 = getelementptr inbounds float, ptr %177, i64 %indvars.iv371
  %179 = load float, ptr %178, align 4, !tbaa !12
  %180 = fcmp olt float %172, %179
  br i1 %180, label %181, label %189

181:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %182 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  store ptr %182, ptr %14, align 8
  %183 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %14, i64 noundef %indvars.iv360) #8
  store ptr %183, ptr %13, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPivEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #8
  store i32 %164, ptr %15, align 4, !tbaa !17
  %184 = load ptr, ptr %12, align 8
  %185 = invoke ptr @_ZNSt6vectorIiSaIiEE6insertEN9__gnu_cxx17__normal_iteratorIPKiS1_EEOi(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr %184, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %186 unwind label %187

186:                                              ; preds = %181
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %189

187:                                              ; preds = %181
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %360

189:                                              ; preds = %167, %186
  %.3231 = phi i32 [ 0, %186 ], [ 1, %167 ]
  %indvars.iv.next361 = add nuw nsw i64 %indvars.iv360, 1
  %190 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %191 = icmp ugt i64 %190, %indvars.iv.next361
  br i1 %191, label %.lr.ph290, label %.critedge2, !llvm.loop !22

.critedge2.thread:                                ; preds = %.preheader265, %.critedge2
  %192 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %193 = icmp ult i64 %192, 40
  br i1 %193, label %194, label %199

194:                                              ; preds = %.critedge2.thread
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #8
  %195 = trunc nuw i64 %indvars.iv363 to i32
  store i32 %195, ptr %16, align 4, !tbaa !17
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %196 unwind label %197

196:                                              ; preds = %194
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %199

197:                                              ; preds = %194
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %360

199:                                              ; preds = %.lr.ph296, %196, %.critedge2.thread, %.critedge2
  %indvars.iv.next364 = add nuw nsw i64 %indvars.iv363, 1
  %exitcond367.not = icmp eq i64 %indvars.iv.next364, %wide.trip.count366
  br i1 %exitcond367.not, label %.preheader266, label %.lr.ph296, !llvm.loop !23

._crit_edge299:                                   ; preds = %.lr.ph298, %.preheader266
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %indvars.iv.next372 = add nuw nsw i64 %indvars.iv371, 1
  %exitcond375.not = icmp eq i64 %indvars.iv.next372, %wide.trip.count374
  br i1 %exitcond375.not, label %.preheader264, label %143, !llvm.loop !24

.lr.ph298:                                        ; preds = %.preheader266, %.lr.ph298
  %indvars.iv368 = phi i64 [ %indvars.iv.next369, %.lr.ph298 ], [ 0, %.preheader266 ]
  %200 = trunc nuw nsw i64 %indvars.iv368 to i32
  %201 = uitofp nneg i32 %200 to float
  %202 = load ptr, ptr %138, align 8, !tbaa !9
  %203 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv368) #8
  %204 = load i32, ptr %203, align 4, !tbaa !17
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds ptr, ptr %202, i64 %205
  %207 = load ptr, ptr %206, align 8, !tbaa !5
  %208 = getelementptr inbounds float, ptr %207, i64 %indvars.iv371
  %209 = load float, ptr %208, align 4, !tbaa !12
  %210 = fadd float %209, %201
  store float %210, ptr %208, align 4, !tbaa !12
  %indvars.iv.next369 = add nuw nsw i64 %indvars.iv368, 1
  %211 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %212 = icmp ugt i64 %211, %indvars.iv.next369
  %213 = icmp ult i64 %indvars.iv368, 39
  %214 = and i1 %213, %212
  br i1 %214, label %.lr.ph298, label %._crit_edge299, !llvm.loop !25

.loopexit263:                                     ; preds = %.lr.ph305, %217
  %indvars.iv.next377 = add nuw nsw i64 %indvars.iv376, 1
  %exitcond386.not = icmp eq i64 %indvars.iv.next383, %140
  br i1 %exitcond386.not, label %.preheader262, label %217, !llvm.loop !26

.preheader262:                                    ; preds = %.loopexit263, %.preheader264
  br i1 %.not329, label %._crit_edge313, label %.lr.ph312

.lr.ph312:                                        ; preds = %.preheader262
  %215 = getelementptr inbounds i8, ptr %38, i64 16
  %216 = and i64 %28, 4294967295
  br label %247

217:                                              ; preds = %.lr.ph307, %.loopexit263
  %indvars.iv382 = phi i64 [ 0, %.lr.ph307 ], [ %indvars.iv.next383, %.loopexit263 ]
  %indvars.iv376 = phi i64 [ 1, %.lr.ph307 ], [ %indvars.iv.next377, %.loopexit263 ]
  %indvars.iv.next383 = add nuw nsw i64 %indvars.iv382, 1
  %218 = icmp ult i64 %indvars.iv.next383, %140
  br i1 %218, label %.lr.ph305, label %.loopexit263

.lr.ph305:                                        ; preds = %217, %.lr.ph305
  %indvars.iv378 = phi i64 [ %indvars.iv.next379, %.lr.ph305 ], [ %indvars.iv376, %217 ]
  %219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv382) #8
  %220 = load ptr, ptr %219, align 8, !tbaa !5
  %221 = call noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %220)
  %222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv378) #8
  %223 = load ptr, ptr %222, align 8, !tbaa !5
  %224 = call noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %223)
  %225 = fsub float %221, %224
  %226 = call noundef float @_Z12float_squaref(float noundef %225)
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv382) #8
  %228 = load ptr, ptr %227, align 8, !tbaa !5
  %229 = call noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %228)
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv378) #8
  %231 = load ptr, ptr %230, align 8, !tbaa !5
  %232 = call noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %231)
  %233 = fsub float %229, %232
  %234 = call noundef float @_Z12float_squaref(float noundef %233)
  %235 = fadd float %226, %234
  %236 = load ptr, ptr %139, align 8, !tbaa !9
  %237 = getelementptr inbounds ptr, ptr %236, i64 %indvars.iv382
  %238 = load ptr, ptr %237, align 8, !tbaa !5
  %239 = getelementptr inbounds float, ptr %238, i64 %indvars.iv378
  store float %235, ptr %239, align 4, !tbaa !12
  %240 = getelementptr inbounds ptr, ptr %236, i64 %indvars.iv378
  %241 = load ptr, ptr %240, align 8, !tbaa !5
  %242 = getelementptr inbounds float, ptr %241, i64 %indvars.iv382
  store float %235, ptr %242, align 4, !tbaa !12
  %indvars.iv.next379 = add nuw nsw i64 %indvars.iv378, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next379 to i32
  %exitcond381.not = icmp eq i32 %lftr.wideiv, %27
  br i1 %exitcond381.not, label %.loopexit263, label %.lr.ph305, !llvm.loop !27

.loopexit:                                        ; preds = %.lr.ph310, %247
  %indvars.iv.next388 = add nuw nsw i64 %indvars.iv387, 1
  %exitcond398.not = icmp eq i64 %indvars.iv.next395, %216
  br i1 %exitcond398.not, label %._crit_edge313, label %247, !llvm.loop !28

._crit_edge313:                                   ; preds = %.loopexit, %.preheader262
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #8
  br i1 %.not323, label %._crit_edge322, label %.lr.ph321

.lr.ph321:                                        ; preds = %._crit_edge313
  %243 = getelementptr inbounds i8, ptr %36, i64 16
  %244 = getelementptr inbounds i8, ptr %34, i64 16
  %245 = getelementptr inbounds i8, ptr %38, i64 16
  %246 = getelementptr inbounds i8, ptr %32, i64 16
  %wide.trip.count417 = and i64 %26, 4294967295
  %wide.trip.count412 = and i64 %28, 4294967295
  br label %274

247:                                              ; preds = %.lr.ph312, %.loopexit
  %indvars.iv394 = phi i64 [ 0, %.lr.ph312 ], [ %indvars.iv.next395, %.loopexit ]
  %indvars.iv387 = phi i64 [ 1, %.lr.ph312 ], [ %indvars.iv.next388, %.loopexit ]
  %indvars.iv.next395 = add nuw nsw i64 %indvars.iv394, 1
  %248 = icmp ult i64 %indvars.iv.next395, %216
  br i1 %248, label %.lr.ph310, label %.loopexit

.lr.ph310:                                        ; preds = %247, %.lr.ph310
  %indvars.iv389 = phi i64 [ %indvars.iv.next390, %.lr.ph310 ], [ %indvars.iv387, %247 ]
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv394) #8
  %250 = load ptr, ptr %249, align 8, !tbaa !5
  %251 = call noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %250)
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv389) #8
  %253 = load ptr, ptr %252, align 8, !tbaa !5
  %254 = call noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %253)
  %255 = fsub float %251, %254
  %256 = call noundef float @_Z12float_squaref(float noundef %255)
  %257 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv394) #8
  %258 = load ptr, ptr %257, align 8, !tbaa !5
  %259 = call noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %258)
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv389) #8
  %261 = load ptr, ptr %260, align 8, !tbaa !5
  %262 = call noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %261)
  %263 = fsub float %259, %262
  %264 = call noundef float @_Z12float_squaref(float noundef %263)
  %265 = fadd float %256, %264
  %266 = load ptr, ptr %215, align 8, !tbaa !9
  %267 = getelementptr inbounds ptr, ptr %266, i64 %indvars.iv394
  %268 = load ptr, ptr %267, align 8, !tbaa !5
  %269 = getelementptr inbounds float, ptr %268, i64 %indvars.iv389
  store float %265, ptr %269, align 4, !tbaa !12
  %270 = getelementptr inbounds ptr, ptr %266, i64 %indvars.iv389
  %271 = load ptr, ptr %270, align 8, !tbaa !5
  %272 = getelementptr inbounds float, ptr %271, i64 %indvars.iv394
  store float %265, ptr %272, align 4, !tbaa !12
  %indvars.iv.next390 = add nuw nsw i64 %indvars.iv389, 1
  %lftr.wideiv392 = trunc i64 %indvars.iv.next390 to i32
  %exitcond393.not = icmp eq i32 %lftr.wideiv392, %29
  br i1 %exitcond393.not, label %.loopexit, label %.lr.ph310, !llvm.loop !29

._crit_edge322:                                   ; preds = %._crit_edge318, %._crit_edge313
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef 0)
          to label %354 unwind label %357

274:                                              ; preds = %.lr.ph321, %._crit_edge318
  %indvars.iv414 = phi i64 [ 0, %.lr.ph321 ], [ %indvars.iv.next415, %._crit_edge318 ]
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.21)
          to label %276 unwind label %289

276:                                              ; preds = %274
  %277 = trunc nuw i64 %indvars.iv414 to i32
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %275, i32 noundef %277)
          to label %279 unwind label %289

279:                                              ; preds = %276
  %280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %278, ptr noundef nonnull @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %281 unwind label %289

281:                                              ; preds = %279
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv414) #8
  %283 = load ptr, ptr %282, align 8, !tbaa !5
  %284 = call noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88) %283)
  %285 = fmul float %284, 5.000000e+00
  %286 = call noundef float @_Z12float_squaref(float noundef %285)
  %287 = fptosi float %286 to i32
  %288 = sitofp i32 %287 to float
  br label %291

.preheader:                                       ; preds = %303
  br i1 %.not329, label %._crit_edge318, label %.lr.ph317

289:                                              ; preds = %279, %276, %274
  %290 = landingpad { ptr, i32 }
          cleanup
  br label %359

291:                                              ; preds = %281, %303
  %indvars.iv399 = phi i64 [ 0, %281 ], [ %indvars.iv.next400, %303 ]
  %292 = load ptr, ptr %243, align 8, !tbaa !9
  %293 = getelementptr inbounds ptr, ptr %292, i64 %indvars.iv414
  %294 = load ptr, ptr %293, align 8, !tbaa !5
  %295 = getelementptr inbounds float, ptr %294, i64 %indvars.iv399
  %296 = load float, ptr %295, align 4, !tbaa !12
  %297 = fcmp uge float %296, %288
  %.not242 = icmp eq i64 %indvars.iv414, %indvars.iv399
  %or.cond260 = or i1 %.not242, %297
  br i1 %or.cond260, label %303, label %298

298:                                              ; preds = %291
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #8
  %299 = trunc nuw i64 %indvars.iv399 to i32
  store i32 %299, ptr %21, align 4, !tbaa !17
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %300 unwind label %301

300:                                              ; preds = %298
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #8
  br label %303

301:                                              ; preds = %298
  %302 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #8
  br label %359

303:                                              ; preds = %291, %300
  %indvars.iv.next400 = add nuw nsw i64 %indvars.iv399, 1
  %exitcond403.not = icmp eq i64 %indvars.iv.next400, %wide.trip.count417
  br i1 %exitcond403.not, label %.preheader, label %291, !llvm.loop !30

._crit_edge318:                                   ; preds = %353, %.preheader
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  %indvars.iv.next415 = add nuw nsw i64 %indvars.iv414, 1
  %exitcond418.not = icmp eq i64 %indvars.iv.next415, %wide.trip.count417
  br i1 %exitcond418.not, label %._crit_edge322, label %274, !llvm.loop !31

.lr.ph317:                                        ; preds = %.preheader, %353
  %indvars.iv409 = phi i64 [ %indvars.iv.next410, %353 ], [ 0, %.preheader ]
  %304 = load ptr, ptr %244, align 8, !tbaa !9
  %305 = getelementptr inbounds ptr, ptr %304, i64 %indvars.iv414
  %306 = load ptr, ptr %305, align 8, !tbaa !5
  %307 = getelementptr inbounds float, ptr %306, i64 %indvars.iv409
  %308 = load float, ptr %307, align 4, !tbaa !12
  %309 = fcmp olt float %308, 5.000000e+01
  br i1 %309, label %310, label %353

310:                                              ; preds = %.lr.ph317
  %311 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %indvars.iv409) #8
  %312 = load ptr, ptr %311, align 8, !tbaa !5
  %313 = call noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88) %312)
  %314 = fmul float %313, 5.000000e+00
  %315 = call noundef float @_Z12float_squaref(float noundef %314)
  %316 = fptosi float %315 to i32
  %317 = sitofp i32 %316 to float
  br label %321

318:                                              ; preds = %333
  invoke void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %23, ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %334 unwind label %319

319:                                              ; preds = %318
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %359

321:                                              ; preds = %310, %333
  %indvars.iv404 = phi i64 [ 0, %310 ], [ %indvars.iv.next405, %333 ]
  %322 = load ptr, ptr %245, align 8, !tbaa !9
  %323 = getelementptr inbounds ptr, ptr %322, i64 %indvars.iv409
  %324 = load ptr, ptr %323, align 8, !tbaa !5
  %325 = getelementptr inbounds float, ptr %324, i64 %indvars.iv404
  %326 = load float, ptr %325, align 4, !tbaa !12
  %327 = fcmp uge float %326, %317
  %.not = icmp eq i64 %indvars.iv409, %indvars.iv404
  %or.cond261 = or i1 %.not, %327
  br i1 %or.cond261, label %333, label %328

328:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #8
  %329 = trunc nuw i64 %indvars.iv404 to i32
  store i32 %329, ptr %22, align 4, !tbaa !17
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %330 unwind label %331

330:                                              ; preds = %328
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #8
  br label %333

331:                                              ; preds = %328
  %332 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #8
  br label %359

333:                                              ; preds = %321, %330
  %indvars.iv.next405 = add nuw nsw i64 %indvars.iv404, 1
  %exitcond408.not = icmp eq i64 %indvars.iv.next405, %wide.trip.count412
  br i1 %exitcond408.not, label %318, label %321, !llvm.loop !32

334:                                              ; preds = %318
  invoke void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %335 unwind label %345

335:                                              ; preds = %334
  invoke void @_ZNSt6vectorIiSaIiEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %336 unwind label %347

336:                                              ; preds = %335
  %337 = trunc nuw i64 %indvars.iv409 to i32
  %338 = invoke noundef i32 @_Z12computeVotesSt6vectorIP16CornerDescriptorSaIS1_EERS3_iiS_IiSaIiEES6_P12ImageContent(ptr noundef nonnull %23, ptr noundef nonnull align 8 dereferenceable(24) %1, i32 noundef %277, i32 noundef %337, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %34)
          to label %339 unwind label %349

339:                                              ; preds = %336
  %340 = sitofp i32 %338 to float
  %341 = load ptr, ptr %246, align 8, !tbaa !9
  %342 = getelementptr inbounds ptr, ptr %341, i64 %indvars.iv414
  %343 = load ptr, ptr %342, align 8, !tbaa !5
  %344 = getelementptr inbounds float, ptr %343, i64 %indvars.iv409
  store float %340, ptr %344, align 4, !tbaa !12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  br label %353

345:                                              ; preds = %334
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %352

347:                                              ; preds = %335
  %348 = landingpad { ptr, i32 }
          cleanup
  br label %351

349:                                              ; preds = %336
  %350 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  br label %351

351:                                              ; preds = %349, %347
  %.pn = phi { ptr, i32 } [ %350, %349 ], [ %348, %347 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %24) #8
  br label %352

352:                                              ; preds = %351, %345
  %.pn.pn = phi { ptr, i32 } [ %.pn, %351 ], [ %346, %345 ]
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #8
  br label %359

353:                                              ; preds = %.lr.ph317, %339
  %indvars.iv.next410 = add nuw nsw i64 %indvars.iv409, 1
  %exitcond413.not = icmp eq i64 %indvars.iv.next410, %wide.trip.count412
  br i1 %exitcond413.not, label %._crit_edge318, label %.lr.ph317, !llvm.loop !33

354:                                              ; preds = %._crit_edge322
  %355 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %356 unwind label %357

356:                                              ; preds = %354
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  ret void

357:                                              ; preds = %354, %._crit_edge322
  %358 = landingpad { ptr, i32 }
          cleanup
  br label %359

359:                                              ; preds = %289, %301, %352, %331, %319, %357
  %.pn243.pn = phi { ptr, i32 } [ %358, %357 ], [ %302, %301 ], [ %290, %289 ], [ %332, %331 ], [ %.pn.pn, %352 ], [ %320, %319 ]
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #8
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #8
  br label %360

360:                                              ; preds = %153, %155, %197, %187, %78, %80, %120, %110, %359, %141
  %.pn251.pn.pn = phi { ptr, i32 } [ %.pn243.pn, %359 ], [ %142, %141 ], [ %81, %80 ], [ %79, %78 ], [ %111, %110 ], [ %121, %120 ], [ %156, %155 ], [ %154, %153 ], [ %188, %187 ], [ %198, %197 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #8
  br label %361

361:                                              ; preds = %59, %63, %360, %65, %61, %57
  %.pn251.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %58, %57 ], [ %60, %59 ], [ %62, %61 ], [ %64, %63 ], [ %.pn251.pn.pn, %360 ], [ %66, %65 ]
  resume { ptr, i32 } %.pn251.pn.pn.pn.pn.pn.pn.pn
}

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEC2IPivEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { "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, !6, i64 16}
!10 = !{!"_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}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = !{!11, !11, i64 0}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}


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