; LLVM IR from ox-vgg/vise :: src/search_engine/relja_retrival/external/KMCode_relja/descriptor/AffineRegion._5d4e584e (i)

; 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.Matrix = type { ptr, ptr, i32, i32 }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<Segment *, std::allocator<Segment *>>::_Vector_impl" }
%"struct.std::_Vector_base<Segment *, std::allocator<Segment *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Segment *, std::allocator<Segment *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Segment *, std::allocator<Segment *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.0" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = 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.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [14 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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4rintf(float noundef) #2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) unnamed_addr #1 align 2

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

; Function Attrs: nounwind
declare void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17drawAffineCornersP12ImageContentSt6vectorIP16CornerDescriptorSaIS3_EEPcf(ptr noundef, ptr noundef, ptr noundef, float noundef) #5

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

declare void @_ZN12ImageContentC1EPS_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) unnamed_addr #7

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 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) #2 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) #9

; 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: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) #5 align 2

; 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 @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #9

; 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)) #9

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

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

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

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

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

declare void @_ZN6MatrixC1Eiid(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, double noundef) unnamed_addr #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Corner5setMiEffff(ptr noundef nonnull align 4 dereferenceable(88), float noundef, float noundef, float noundef, float noundef) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_Z12checkTangentP12ImageContentiiiif(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, float noundef) #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt5atan2IfiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(float noundef, i32 noundef) #1

; Function Attrs: inlinehint mustprogress uwtable
declare i32 @getchar() #9

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z7hitEdgeP12ImageContentS0_RSt6vectorIP16CornerDescriptorSaIS3_EES1_IP7SegmentSaIS8_EES6_i(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef %5) #5 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca float, align 4
  %14 = alloca float, align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca float, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %class.Matrix, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca float, align 4
  %39 = alloca float, align 4
  %40 = alloca %"class.std::vector.11", align 8
  %41 = alloca i1, align 1
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %46 = alloca i32, align 4
  %47 = alloca %"class.std::vector", align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store i32 %5, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  store float 0.000000e+00, ptr %16, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #10
  store i32 1, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #10
  store float 0.000000e+00, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #10
  %48 = load ptr, ptr %8, align 8, !tbaa !5
  %49 = call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %48)
  %50 = sub i32 %49, 2
  store i32 %50, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  %51 = load ptr, ptr %8, align 8, !tbaa !5
  %52 = call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %51)
  %53 = sub i32 %52, 2
  store i32 %53, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #10
  call void @_ZN6MatrixC1Eiid(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 2, i32 noundef 2, double noundef 0.000000e+00)
  %54 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 1, i32 noundef 1)
          to label %55 unwind label %69

55:                                               ; preds = %6
  store double 1.000000e+00, ptr %54, align 8, !tbaa !13
  %56 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 2, i32 noundef 2)
          to label %57 unwind label %69

57:                                               ; preds = %55
  store double 1.000000e+00, ptr %56, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #10
  %58 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 80) #11
          to label %59 unwind label %73

59:                                               ; preds = %57
  %60 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN12ImageContentC1EPS_(ptr noundef nonnull align 8 dereferenceable(80) %58, ptr noundef %60)
          to label %61 unwind label %77

61:                                               ; preds = %59
  store ptr %58, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %62

62:                                               ; preds = %349, %61
  %63 = load i32, ptr %36, align 4, !tbaa !9
  %64 = zext i32 %63 to i64
  %65 = load ptr, ptr %9, align 8, !tbaa !5
  %66 = call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #10
  %67 = icmp ult i64 %64, %66
  br i1 %67, label %81, label %68

68:                                               ; preds = %62
  store i32 2, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %353

69:                                               ; preds = %55, %6
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %32, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %33, align 4
  br label %387

73:                                               ; preds = %57
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %32, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %33, align 4
  br label %386

77:                                               ; preds = %59
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %32, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %33, align 4
  call void @_ZdlPvm(ptr noundef %58, i64 noundef 80) #12
  br label %386

81:                                               ; preds = %62
  %82 = load ptr, ptr %9, align 8, !tbaa !5
  %83 = load i32, ptr %36, align 4, !tbaa !9
  %84 = zext i32 %83 to i64
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %84) #10
  %86 = load ptr, ptr %85, align 8, !tbaa !5
  %87 = invoke noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %86)
          to label %88 unwind label %144

88:                                               ; preds = %81
  %89 = fptosi float %87 to i32
  store i32 %89, ptr %23, align 4, !tbaa !9
  %90 = load ptr, ptr %9, align 8, !tbaa !5
  %91 = load i32, ptr %36, align 4, !tbaa !9
  %92 = zext i32 %91 to i64
  %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %92) #10
  %94 = load ptr, ptr %93, align 8, !tbaa !5
  %95 = invoke noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %94)
          to label %96 unwind label %144

96:                                               ; preds = %88
  %97 = fptosi float %95 to i32
  store i32 %97, ptr %24, align 4, !tbaa !9
  %98 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.24)
          to label %99 unwind label %144

99:                                               ; preds = %96
  %100 = load i32, ptr %36, align 4, !tbaa !9
  %101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %98, i32 noundef %100)
          to label %102 unwind label %144

102:                                              ; preds = %99
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef @.str.2)
          to label %104 unwind label %144

104:                                              ; preds = %102
  %105 = load ptr, ptr %9, align 8, !tbaa !5
  %106 = call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %105) #10
  %107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %103, i64 noundef %106)
          to label %108 unwind label %144

108:                                              ; preds = %104
  %109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef @.str.6)
          to label %110 unwind label %144

110:                                              ; preds = %108
  %111 = load i32, ptr %23, align 4, !tbaa !9
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %109, i32 noundef %111)
          to label %113 unwind label %144

113:                                              ; preds = %110
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef @.str.6)
          to label %115 unwind label %144

115:                                              ; preds = %113
  %116 = load i32, ptr %24, align 4, !tbaa !9
  %117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %114, i32 noundef %116)
          to label %118 unwind label %144

118:                                              ; preds = %115
  %119 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef @.str.23)
          to label %120 unwind label %144

120:                                              ; preds = %118
  %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %122 unwind label %144

122:                                              ; preds = %120
  %123 = load ptr, ptr %9, align 8, !tbaa !5
  %124 = load i32, ptr %36, align 4, !tbaa !9
  %125 = zext i32 %124 to i64
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %125) #10
  %127 = load ptr, ptr %126, align 8, !tbaa !5
  %128 = invoke noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88) %127)
          to label %129 unwind label %144

129:                                              ; preds = %122
  store float %128, ptr %15, align 4, !tbaa !11
  %130 = load float, ptr %15, align 4, !tbaa !11
  %131 = invoke noundef float @_ZSt4rintf(float noundef %130)
          to label %132 unwind label %144

132:                                              ; preds = %129
  store float %131, ptr %13, align 4, !tbaa !11
  %133 = load float, ptr %15, align 4, !tbaa !11
  %134 = fpext float %133 to double
  %135 = fmul double %134, 3.000000e+00
  %136 = call double @llvm.rint.f64(double %135)
  %137 = fptrunc double %136 to float
  store float %137, ptr %14, align 4, !tbaa !11
  store i32 1, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  %138 = load float, ptr %13, align 4, !tbaa !11
  store float %138, ptr %38, align 4, !tbaa !11
  br label %139

139:                                              ; preds = %322, %132
  %140 = load float, ptr %38, align 4, !tbaa !11
  %141 = load float, ptr %14, align 4, !tbaa !11
  %142 = fcmp olt float %140, %141
  br i1 %142, label %148, label %143

143:                                              ; preds = %139
  store i32 5, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %325

144:                                              ; preds = %129, %122, %120, %118, %115, %113, %110, %108, %104, %102, %99, %96, %88, %81
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %32, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %33, align 4
  br label %352

148:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  store float 0.000000e+00, ptr %39, align 4, !tbaa !11
  br label %149

149:                                              ; preds = %315, %148
  %150 = load float, ptr %39, align 4, !tbaa !11
  %151 = fpext float %150 to double
  %152 = fcmp olt double %151, 0x401921FB544486E0
  br i1 %152, label %153, label %156

153:                                              ; preds = %149
  %154 = load i32, ptr %25, align 4, !tbaa !9
  %155 = icmp ne i32 %154, 0
  br label %156

156:                                              ; preds = %153, %149
  %157 = phi i1 [ false, %149 ], [ %155, %153 ]
  br i1 %157, label %159, label %158

158:                                              ; preds = %156
  store i32 8, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %321

159:                                              ; preds = %156
  %160 = load float, ptr %38, align 4, !tbaa !11
  %161 = load float, ptr %39, align 4, !tbaa !11
  %162 = invoke noundef float @_ZSt3cosf(float noundef %161)
          to label %163 unwind label %185

163:                                              ; preds = %159
  %164 = fmul float %160, %162
  %165 = invoke noundef float @_ZSt4rintf(float noundef %164)
          to label %166 unwind label %185

166:                                              ; preds = %163
  %167 = fptosi float %165 to i32
  %168 = sitofp i32 %167 to float
  store float %168, ptr %17, align 4, !tbaa !11
  %169 = load float, ptr %38, align 4, !tbaa !11
  %170 = load float, ptr %39, align 4, !tbaa !11
  %171 = invoke noundef float @_ZSt3sinf(float noundef %170)
          to label %172 unwind label %185

172:                                              ; preds = %166
  %173 = fmul float %169, %171
  %174 = invoke noundef float @_ZSt4rintf(float noundef %173)
          to label %175 unwind label %185

175:                                              ; preds = %172
  %176 = fptosi float %174 to i32
  %177 = sitofp i32 %176 to float
  store float %177, ptr %18, align 4, !tbaa !11
  %178 = load float, ptr %18, align 4, !tbaa !11
  %179 = fcmp une float %178, 0.000000e+00
  br i1 %179, label %180, label %189

180:                                              ; preds = %175
  %181 = load float, ptr %17, align 4, !tbaa !11
  %182 = fneg float %181
  %183 = load float, ptr %18, align 4, !tbaa !11
  %184 = fdiv float %182, %183
  store float %184, ptr %19, align 4, !tbaa !11
  br label %190

185:                                              ; preds = %300, %297, %293, %289, %285, %282, %274, %246, %232, %190, %172, %166, %163, %159
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %32, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %33, align 4
  br label %320

189:                                              ; preds = %175
  store float 1.000000e+07, ptr %19, align 4, !tbaa !11
  br label %190

190:                                              ; preds = %189, %180
  %191 = load float, ptr %19, align 4, !tbaa !11
  %192 = invoke noundef double @_ZSt5atan2IfiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(float noundef %191, i32 noundef 1)
          to label %193 unwind label %185

193:                                              ; preds = %190
  %194 = fptrunc double %192 to float
  store float %194, ptr %20, align 4, !tbaa !11
  %195 = load i32, ptr %23, align 4, !tbaa !9
  %196 = sitofp i32 %195 to float
  %197 = load float, ptr %17, align 4, !tbaa !11
  %198 = fadd float %196, %197
  %199 = fptosi float %198 to i32
  store i32 %199, ptr %21, align 4, !tbaa !9
  %200 = load i32, ptr %24, align 4, !tbaa !9
  %201 = sitofp i32 %200 to float
  %202 = load float, ptr %18, align 4, !tbaa !11
  %203 = fadd float %201, %202
  %204 = fptosi float %203 to i32
  store i32 %204, ptr %22, align 4, !tbaa !9
  %205 = load i32, ptr %21, align 4, !tbaa !9
  %206 = load i32, ptr %29, align 4, !tbaa !9
  %207 = icmp slt i32 %205, %206
  br i1 %207, label %208, label %314

208:                                              ; preds = %193
  %209 = load i32, ptr %21, align 4, !tbaa !9
  %210 = icmp sgt i32 %209, 2
  br i1 %210, label %211, label %314

211:                                              ; preds = %208
  %212 = load i32, ptr %22, align 4, !tbaa !9
  %213 = load i32, ptr %30, align 4, !tbaa !9
  %214 = icmp slt i32 %212, %213
  br i1 %214, label %215, label %314

215:                                              ; preds = %211
  %216 = load i32, ptr %22, align 4, !tbaa !9
  %217 = icmp sgt i32 %216, 2
  br i1 %217, label %218, label %314

218:                                              ; preds = %215
  %219 = load ptr, ptr %8, align 8, !tbaa !5
  %220 = getelementptr inbounds %class.ImageContent, ptr %219, i32 0, i32 4
  %221 = load ptr, ptr %220, align 8, !tbaa !15
  %222 = load i32, ptr %22, align 4, !tbaa !9
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds ptr, ptr %221, i64 %223
  %225 = load ptr, ptr %224, align 8, !tbaa !5
  %226 = load i32, ptr %21, align 4, !tbaa !9
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds float, ptr %225, i64 %227
  %229 = load float, ptr %228, align 4, !tbaa !11
  %230 = fptosi float %229 to i32
  %231 = icmp ne i32 %230, 0
  br i1 %231, label %232, label %313

232:                                              ; preds = %218
  %233 = load ptr, ptr %8, align 8, !tbaa !5
  %234 = load i32, ptr %23, align 4, !tbaa !9
  %235 = load i32, ptr %24, align 4, !tbaa !9
  %236 = load i32, ptr %21, align 4, !tbaa !9
  %237 = load i32, ptr %22, align 4, !tbaa !9
  %238 = load float, ptr %20, align 4, !tbaa !11
  %239 = invoke noundef float @_Z12checkTangentP12ImageContentiiiif(ptr noundef %233, i32 noundef %234, i32 noundef %235, i32 noundef %236, i32 noundef %237, float noundef %238)
          to label %240 unwind label %185

240:                                              ; preds = %232
  store float %239, ptr %27, align 4, !tbaa !11
  %241 = fpext float %239 to double
  %242 = fcmp olt double %241, 1.000000e-01
  br i1 %242, label %243, label %312

243:                                              ; preds = %240
  %244 = load i32, ptr %12, align 4, !tbaa !9
  %245 = icmp ne i32 %244, 0
  store i1 false, ptr %41, align 1
  br i1 %245, label %257, label %246

246:                                              ; preds = %243
  %247 = load ptr, ptr %8, align 8, !tbaa !5
  %248 = load ptr, ptr %7, align 8, !tbaa !5
  %249 = load i32, ptr %23, align 4, !tbaa !9
  %250 = load i32, ptr %24, align 4, !tbaa !9
  %251 = load i32, ptr %21, align 4, !tbaa !9
  %252 = load i32, ptr %22, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIP7SegmentSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %253 unwind label %185

253:                                              ; preds = %246
  store i1 true, ptr %41, align 1
  %254 = invoke noundef i32 @_Z17findAffineTangentP12ImageContentS0_iiiiRfSt6vectorIP7SegmentSaIS4_EER6Matrix(ptr noundef %247, ptr noundef %248, i32 noundef %249, i32 noundef %250, i32 noundef %251, i32 noundef %252, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef %40, ptr noundef nonnull align 8 dereferenceable(24) %31)
          to label %255 unwind label %267

255:                                              ; preds = %253
  %256 = icmp ne i32 %254, 0
  br label %257

257:                                              ; preds = %255, %243
  %258 = phi i1 [ true, %243 ], [ %256, %255 ]
  %259 = load i1, ptr %41, align 1
  br i1 %259, label %260, label %261

260:                                              ; preds = %257
  call void @_ZNSt6vectorIP7SegmentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  br label %261

261:                                              ; preds = %260, %257
  br i1 %258, label %262, label %311

262:                                              ; preds = %261
  store i32 0, ptr %25, align 4, !tbaa !9
  %263 = load i32, ptr %12, align 4, !tbaa !9
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %265, label %274

265:                                              ; preds = %262
  %266 = load float, ptr %38, align 4, !tbaa !11
  store float %266, ptr %28, align 4, !tbaa !11
  br label %274

267:                                              ; preds = %253
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %32, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %33, align 4
  %271 = load i1, ptr %41, align 1
  br i1 %271, label %272, label %273

272:                                              ; preds = %267
  call void @_ZNSt6vectorIP7SegmentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  br label %273

273:                                              ; preds = %272, %267
  br label %320

274:                                              ; preds = %265, %262
  %275 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 120) #11
          to label %276 unwind label %185

276:                                              ; preds = %274
  %277 = load i32, ptr %23, align 4, !tbaa !9
  %278 = sitofp i32 %277 to float
  %279 = load i32, ptr %24, align 4, !tbaa !9
  %280 = sitofp i32 %279 to float
  %281 = load float, ptr %28, align 4, !tbaa !11
  invoke void @_ZN16CornerDescriptorC2Effff(ptr noundef nonnull align 8 dereferenceable(116) %275, float noundef %278, float noundef %280, float noundef 1.000000e+02, float noundef %281)
          to label %282 unwind label %307

282:                                              ; preds = %276
  store ptr %275, ptr %35, align 8, !tbaa !5
  %283 = load ptr, ptr %35, align 8, !tbaa !5
  %284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 1, i32 noundef 1)
          to label %285 unwind label %185

285:                                              ; preds = %282
  %286 = load double, ptr %284, align 8, !tbaa !13
  %287 = fptrunc double %286 to float
  %288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 1, i32 noundef 2)
          to label %289 unwind label %185

289:                                              ; preds = %285
  %290 = load double, ptr %288, align 8, !tbaa !13
  %291 = fptrunc double %290 to float
  %292 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 2, i32 noundef 1)
          to label %293 unwind label %185

293:                                              ; preds = %289
  %294 = load double, ptr %292, align 8, !tbaa !13
  %295 = fptrunc double %294 to float
  %296 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %31, i32 noundef 2, i32 noundef 2)
          to label %297 unwind label %185

297:                                              ; preds = %293
  %298 = load double, ptr %296, align 8, !tbaa !13
  %299 = fptrunc double %298 to float
  invoke void @_ZN6Corner5setMiEffff(ptr noundef nonnull align 4 dereferenceable(88) %283, float noundef %287, float noundef %291, float noundef %295, float noundef %299)
          to label %300 unwind label %185

300:                                              ; preds = %297
  %301 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %301, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %302 unwind label %185

302:                                              ; preds = %300
  %303 = load float, ptr %38, align 4, !tbaa !11
  %304 = fpext float %303 to double
  %305 = fmul double %304, 1.400000e+00
  %306 = fptrunc double %305 to float
  store float %306, ptr %38, align 4, !tbaa !11
  br label %311

307:                                              ; preds = %276
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %32, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %33, align 4
  call void @_ZdlPvm(ptr noundef %275, i64 noundef 120) #12
  br label %320

311:                                              ; preds = %302, %261
  br label %312

312:                                              ; preds = %311, %240
  br label %313

313:                                              ; preds = %312, %218
  br label %314

314:                                              ; preds = %313, %215, %211, %208, %193
  br label %315

315:                                              ; preds = %314
  %316 = load float, ptr %39, align 4, !tbaa !11
  %317 = fpext float %316 to double
  %318 = fadd double %317, 5.000000e-02
  %319 = fptrunc double %318 to float
  store float %319, ptr %39, align 4, !tbaa !11
  br label %149, !llvm.loop !17

320:                                              ; preds = %307, %273, %185
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %352

321:                                              ; preds = %158
  br label %322

322:                                              ; preds = %321
  %323 = load float, ptr %38, align 4, !tbaa !11
  %324 = fadd float %323, 1.000000e+00
  store float %324, ptr %38, align 4, !tbaa !11
  br label %139, !llvm.loop !19

325:                                              ; preds = %143
  %326 = load i32, ptr %25, align 4, !tbaa !9
  %327 = icmp ne i32 %326, 0
  br i1 %327, label %328, label %348

328:                                              ; preds = %325
  %329 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %330 = load ptr, ptr %9, align 8, !tbaa !5
  %331 = call ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %330) #10
  %332 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %44, i32 0, i32 0
  store ptr %331, ptr %332, align 8
  %333 = load i32, ptr %36, align 4, !tbaa !9
  %334 = zext i32 %333 to i64
  %335 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP16CornerDescriptorSt6vectorIS2_SaIS2_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %44, i64 noundef %334) #10
  %336 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %43, i32 0, i32 0
  store ptr %335, ptr %336, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKP16CornerDescriptorSt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #10
  %337 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.0", ptr %42, i32 0, i32 0
  %338 = load ptr, ptr %337, align 8
  %339 = invoke ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %329, ptr %338)
          to label %340 unwind label %344

340:                                              ; preds = %328
  %341 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %45, i32 0, i32 0
  store ptr %339, ptr %341, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  %342 = load i32, ptr %36, align 4, !tbaa !9
  %343 = add i32 %342, -1
  store i32 %343, ptr %36, align 4, !tbaa !9
  br label %348

344:                                              ; preds = %328
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %32, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %352

348:                                              ; preds = %340, %325
  br label %349

349:                                              ; preds = %348
  %350 = load i32, ptr %36, align 4, !tbaa !9
  %351 = add i32 %350, 1
  store i32 %351, ptr %36, align 4, !tbaa !9
  br label %62, !llvm.loop !20

352:                                              ; preds = %344, %320, %144
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %385

353:                                              ; preds = %68
  %354 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %354) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #10
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %355

355:                                              ; preds = %363, %353
  %356 = load i32, ptr %46, align 4, !tbaa !9
  %357 = sext i32 %356 to i64
  %358 = load ptr, ptr %11, align 8, !tbaa !5
  %359 = call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %358) #10
  %360 = icmp ult i64 %357, %359
  br i1 %360, label %362, label %361

361:                                              ; preds = %355
  store i32 11, ptr %37, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #10
  br label %366

362:                                              ; preds = %355
  br label %363

363:                                              ; preds = %362
  %364 = load i32, ptr %46, align 4, !tbaa !9
  %365 = add nsw i32 %364, 20
  store i32 %365, ptr %46, align 4, !tbaa !9
  br label %355, !llvm.loop !21

366:                                              ; preds = %361
  %367 = load ptr, ptr %34, align 8, !tbaa !5
  %368 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 8 dereferenceable(24) %368)
          to label %369 unwind label %377

369:                                              ; preds = %366
  invoke void @_Z17drawAffineCornersP12ImageContentSt6vectorIP16CornerDescriptorSaIS3_EEPcf(ptr noundef %367, ptr noundef %47, ptr noundef @.str.30, float noundef 1.500000e+02)
          to label %370 unwind label %381

370:                                              ; preds = %369
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #10
  %371 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.31)
          to label %372 unwind label %377

372:                                              ; preds = %370
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %371, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %374 unwind label %377

374:                                              ; preds = %372
  %375 = invoke i32 @getchar()
          to label %376 unwind label %377

376:                                              ; preds = %374
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  ret void

377:                                              ; preds = %374, %372, %370, %366
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %32, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %33, align 4
  br label %385

381:                                              ; preds = %369
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %32, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %33, align 4
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #10
  br label %385

385:                                              ; preds = %381, %377, %352
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %386

386:                                              ; preds = %385, %77, %73
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #10
  br label %387

387:                                              ; preds = %386, %69
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #10
  br label %388

388:                                              ; preds = %387
  %389 = load ptr, ptr %32, align 8
  %390 = load i32, ptr %33, align 4
  %391 = insertvalue { ptr, i32 } poison, ptr %389, 0
  %392 = insertvalue { ptr, i32 } %391, i32 %390, 1
  resume { ptr, i32 } %392
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP7SegmentSaIS1_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 @_ZNSt6vectorIP7SegmentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 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 #2 align 2

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

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

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


; 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.Matrix = type { ptr, ptr, i32, i32 }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<Segment *, std::allocator<Segment *>>::_Vector_impl" }
%"struct.std::_Vector_base<Segment *, std::allocator<Segment *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Segment *, std::allocator<Segment *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Segment *, std::allocator<Segment *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.0" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = 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.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [14 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

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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) unnamed_addr #1 align 2

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

; Function Attrs: nounwind
declare void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z17drawAffineCornersP12ImageContentSt6vectorIP16CornerDescriptorSaIS3_EEPcf(ptr noundef, ptr noundef, ptr noundef, float noundef) local_unnamed_addr #5

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

declare void @_ZN12ImageContentC1EPS_(ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) unnamed_addr #7

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 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 #2 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 #9

; 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: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) local_unnamed_addr #5 align 2

; 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 @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #9

; 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)) #9

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

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

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

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

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

declare void @_ZN6MatrixC1Eiid(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, double noundef) unnamed_addr #7

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_Z12checkTangentP12ImageContentiiiif(ptr noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, float noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt5atan2IfiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(float noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nofree nounwind uwtable
declare noundef i32 @getchar() local_unnamed_addr #10

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z7hitEdgeP12ImageContentS0_RSt6vectorIP16CornerDescriptorSaIS3_EES1_IP7SegmentSaIS8_EES6_i(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(24) %4, i32 noundef %5) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %7 = alloca float, align 4
  %8 = alloca %class.Matrix, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::vector.11", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.0", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.std::vector", align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #11
  %15 = tail call noundef i32 @_ZNK12ImageContent1xEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %16 = add i32 %15, -2
  %17 = tail call noundef i32 @_ZNK12ImageContent1yEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %18 = add i32 %17, -2
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #11
  call void @_ZN6MatrixC1Eiid(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2, double noundef 0.000000e+00)
  %19 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 1)
  store double 1.000000e+00, ptr %19, align 8, !tbaa !5
  %20 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2)
  store double 1.000000e+00, ptr %20, align 8, !tbaa !5
  %21 = invoke noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #12
          to label %22 unwind label %26

22:                                               ; preds = %6
  invoke void @_ZN12ImageContentC1EPS_(ptr noundef nonnull align 8 dereferenceable(80) %21, ptr noundef nonnull %1)
          to label %23 unwind label %28

23:                                               ; preds = %22
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #11
  %24 = call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #11
  %.not133 = icmp eq i64 %24, 0
  br i1 %.not133, label %._crit_edge132, label %.lr.ph131

.lr.ph131:                                        ; preds = %23
  %25 = getelementptr inbounds i8, ptr %1, i64 16
  %.not105 = icmp eq i32 %5, 0
  br label %30

._crit_edge132:                                   ; preds = %156, %23
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #11
  br label %161

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

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

30:                                               ; preds = %.lr.ph131, %156
  %31 = phi i64 [ 0, %.lr.ph131 ], [ %158, %156 ]
  %.086129 = phi i32 [ 0, %.lr.ph131 ], [ %157, %156 ]
  %32 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %31) #11
  %33 = load ptr, ptr %32, align 8, !tbaa !9
  %34 = call noundef float @_ZNK6Corner4getXEv(ptr noundef nonnull align 4 dereferenceable(88) %33)
  %35 = fptosi float %34 to i32
  %36 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %31) #11
  %37 = load ptr, ptr %36, align 8, !tbaa !9
  %38 = call noundef float @_ZNK6Corner4getYEv(ptr noundef nonnull align 4 dereferenceable(88) %37)
  %39 = fptosi float %38 to i32
  %40 = 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.24)
          to label %41 unwind label %72

41:                                               ; preds = %30
  %42 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %40, i32 noundef %.086129)
          to label %43 unwind label %72

43:                                               ; preds = %41
  %44 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull @.str.2)
          to label %45 unwind label %72

45:                                               ; preds = %43
  %46 = call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #11
  %47 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %44, i64 noundef %46)
          to label %48 unwind label %72

48:                                               ; preds = %45
  %49 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull @.str.6)
          to label %50 unwind label %72

50:                                               ; preds = %48
  %51 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %49, i32 noundef %35)
          to label %52 unwind label %72

52:                                               ; preds = %50
  %53 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull @.str.6)
          to label %54 unwind label %72

54:                                               ; preds = %52
  %55 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %53, i32 noundef %39)
          to label %56 unwind label %72

56:                                               ; preds = %54
  %57 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull @.str.23)
          to label %58 unwind label %72

58:                                               ; preds = %56
  %59 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %60 unwind label %72

60:                                               ; preds = %58
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %31) #11
  %62 = load ptr, ptr %61, align 8, !tbaa !9
  %63 = call noundef float @_ZNK6Corner14getCornerScaleEv(ptr noundef nonnull align 4 dereferenceable(88) %62)
  %64 = call noundef float @_ZSt4rintf(float noundef %63)
  %65 = fpext float %63 to double
  %66 = fmul double %65, 3.000000e+00
  %67 = call double @llvm.rint.f64(double %66)
  %68 = fptrunc double %67 to float
  %69 = fcmp olt float %64, %68
  br i1 %69, label %.preheader.lr.ph, label %._crit_edge127.thread

.preheader.lr.ph:                                 ; preds = %60
  %70 = sitofp i32 %35 to float
  %71 = sitofp i32 %39 to float
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge
  %.085126 = phi float [ %64, %.preheader.lr.ph ], [ %74, %._crit_edge ]
  %.088125 = phi i32 [ 1, %.preheader.lr.ph ], [ %.189.lcssa, %._crit_edge ]
  %.not134 = icmp eq i32 %.088125, 0
  br i1 %.not134, label %._crit_edge, label %.lr.ph

._crit_edge127:                                   ; preds = %._crit_edge
  br i1 %.not, label %156, label %._crit_edge127.thread

72:                                               ; preds = %58, %56, %54, %52, %50, %48, %45, %43, %41, %30
  %73 = landingpad { ptr, i32 }
          cleanup
  br label %176

._crit_edge:                                      ; preds = %143, %.thread, %.preheader
  %.not = phi i1 [ true, %.preheader ], [ true, %.thread ], [ false, %143 ]
  %.189.lcssa = phi i32 [ 0, %.preheader ], [ 0, %.thread ], [ 1, %143 ]
  %.1.lcssa = phi float [ %.085126, %.preheader ], [ %140, %.thread ], [ %.085126, %143 ]
  %74 = fadd float %.1.lcssa, 1.000000e+00
  %75 = fcmp olt float %74, %68
  br i1 %75, label %.preheader, label %._crit_edge127, !llvm.loop !11

.lr.ph:                                           ; preds = %.preheader, %143
  %76 = phi double [ %146, %143 ], [ 0.000000e+00, %.preheader ]
  %.084123 = phi float [ %145, %143 ], [ 0.000000e+00, %.preheader ]
  %77 = call noundef float @_ZSt3cosf(float noundef %.084123)
  %78 = fmul float %.085126, %77
  %79 = call noundef float @_ZSt4rintf(float noundef %78)
  %80 = fptosi float %79 to i32
  %81 = sitofp i32 %80 to float
  %82 = call noundef float @_ZSt3sinf(float noundef %.084123)
  %83 = fmul float %.085126, %82
  %84 = call noundef float @_ZSt4rintf(float noundef %83)
  %85 = fptosi float %84 to i32
  %86 = sitofp i32 %85 to float
  %.not103 = icmp eq i32 %85, 0
  %87 = fneg float %81
  %88 = fdiv float %87, %86
  %.082 = select i1 %.not103, float 1.000000e+07, float %88
  %89 = call noundef double @_ZSt5atan2IfiEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(float noundef %.082, i32 noundef 1)
  %90 = fptrunc double %89 to float
  %91 = fadd float %70, %81
  %92 = fptosi float %91 to i32
  %93 = fadd float %71, %86
  %94 = fptosi float %93 to i32
  %95 = icmp sgt i32 %16, %92
  %96 = icmp sgt i32 %92, 2
  %or.cond = and i1 %95, %96
  br i1 %or.cond, label %97, label %143

.loopexit:                                        ; preds = %109, %115
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %176

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

97:                                               ; preds = %.lr.ph
  %98 = icmp sgt i32 %18, %94
  %99 = icmp sgt i32 %94, 2
  %or.cond3 = and i1 %98, %99
  br i1 %or.cond3, label %100, label %143

100:                                              ; preds = %97
  %101 = load ptr, ptr %25, align 8, !tbaa !13
  %102 = zext nneg i32 %94 to i64
  %103 = getelementptr inbounds ptr, ptr %101, i64 %102
  %104 = load ptr, ptr %103, align 8, !tbaa !9
  %105 = zext nneg i32 %92 to i64
  %106 = getelementptr inbounds float, ptr %104, i64 %105
  %107 = load float, ptr %106, align 4, !tbaa !16
  %108 = fptosi float %107 to i32
  %.not104 = icmp eq i32 %108, 0
  br i1 %.not104, label %143, label %109

109:                                              ; preds = %100
  %110 = invoke noundef float @_Z12checkTangentP12ImageContentiiiif(ptr noundef nonnull %1, i32 noundef %35, i32 noundef %39, i32 noundef %92, i32 noundef %94, float noundef %90)
          to label %111 unwind label %.loopexit

111:                                              ; preds = %109
  %112 = fpext float %110 to double
  %113 = fcmp olt double %112, 1.000000e-01
  br i1 %113, label %114, label %143

114:                                              ; preds = %111
  br i1 %.not105, label %115, label %119

115:                                              ; preds = %114
  invoke void @_ZNSt6vectorIP7SegmentSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %116 unwind label %.loopexit

116:                                              ; preds = %115
  %117 = invoke noundef i32 @_Z17findAffineTangentP12ImageContentS0_iiiiRfSt6vectorIP7SegmentSaIS4_EER6Matrix(ptr noundef nonnull %1, ptr noundef %0, i32 noundef %35, i32 noundef %39, i32 noundef %92, i32 noundef %94, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull %10, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %118 unwind label %120

118:                                              ; preds = %116
  %.not112 = icmp eq i32 %117, 0
  call void @_ZNSt6vectorIP7SegmentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  br i1 %.not112, label %143, label %.thread111

119:                                              ; preds = %114
  store float %.085126, ptr %7, align 4, !tbaa !16
  br label %.thread111

120:                                              ; preds = %116
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP7SegmentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  br label %176

.thread111:                                       ; preds = %118, %119
  %122 = invoke noalias noundef nonnull dereferenceable(120) ptr @_Znwm(i64 noundef 120) #12
          to label %123 unwind label %.loopexit.split-lp

123:                                              ; preds = %.thread111
  %124 = load float, ptr %7, align 4, !tbaa !16
  invoke void @_ZN16CornerDescriptorC2Effff(ptr noundef nonnull align 8 dereferenceable(116) %122, float noundef %70, float noundef %71, float noundef 1.000000e+02, float noundef %124)
          to label %125 unwind label %141

125:                                              ; preds = %123
  store ptr %122, ptr %9, align 8, !tbaa !9
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 1)
  %127 = load double, ptr %126, align 8, !tbaa !5
  %128 = fptrunc double %127 to float
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 1, i32 noundef 2)
  %130 = load double, ptr %129, align 8, !tbaa !5
  %131 = fptrunc double %130 to float
  %132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 1)
  %133 = load double, ptr %132, align 8, !tbaa !5
  %134 = fptrunc double %133 to float
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6MatrixclEii(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef 2, i32 noundef 2)
  %136 = load double, ptr %135, align 8, !tbaa !5
  %137 = fptrunc double %136 to float
  call void @_ZN6Corner5setMiEffff(ptr noundef nonnull align 4 dereferenceable(88) %122, float noundef %128, float noundef %131, float noundef %134, float noundef %137)
  invoke void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %.thread unwind label %.loopexit.split-lp

.thread:                                          ; preds = %125
  %138 = fpext float %.085126 to double
  %139 = fmul double %138, 1.400000e+00
  %140 = fptrunc double %139 to float
  br label %._crit_edge

141:                                              ; preds = %123
  %142 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %122, i64 noundef 120) #13
  br label %176

143:                                              ; preds = %.lr.ph, %97, %111, %118, %100
  %144 = fadd double %76, 5.000000e-02
  %145 = fptrunc double %144 to float
  %146 = fpext float %145 to double
  %147 = fcmp olt double %146, 0x401921FB544486E0
  br i1 %147, label %.lr.ph, label %._crit_edge, !llvm.loop !18

._crit_edge127.thread:                            ; preds = %60, %._crit_edge127
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #11
  %148 = call ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #11
  store ptr %148, ptr %13, align 8
  %149 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP16CornerDescriptorSt6vectorIS2_SaIS2_EEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %13, i64 noundef %31) #11
  store ptr %149, ptr %12, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKP16CornerDescriptorSt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #11
  %150 = load ptr, ptr %11, align 8
  %151 = invoke ptr @_ZNSt6vectorIP16CornerDescriptorSaIS1_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS1_S3_EE(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr %150)
          to label %152 unwind label %154

152:                                              ; preds = %._crit_edge127.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  %153 = add i32 %.086129, -1
  br label %156

154:                                              ; preds = %._crit_edge127.thread
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #11
  br label %176

156:                                              ; preds = %._crit_edge127, %152
  %.187 = phi i32 [ %153, %152 ], [ %.086129, %._crit_edge127 ]
  %157 = add i32 %.187, 1
  %158 = zext i32 %157 to i64
  %159 = call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #11
  %160 = icmp ugt i64 %159, %158
  br i1 %160, label %30, label %._crit_edge132, !llvm.loop !19

161:                                              ; preds = %161, %._crit_edge132
  %indvars.iv = phi i64 [ %indvars.iv.next, %161 ], [ 0, %._crit_edge132 ]
  %162 = call noundef i64 @_ZNKSt6vectorIP16CornerDescriptorSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  %163 = icmp ugt i64 %162, %indvars.iv
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 20
  br i1 %163, label %161, label %164, !llvm.loop !20

164:                                              ; preds = %161
  invoke void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(24) %4)
          to label %165 unwind label %172

165:                                              ; preds = %164
  invoke void @_Z17drawAffineCornersP12ImageContentSt6vectorIP16CornerDescriptorSaIS3_EEPcf(ptr noundef nonnull %21, ptr noundef nonnull %14, ptr noundef nonnull @.str.30, float noundef 1.500000e+02)
          to label %166 unwind label %174

166:                                              ; preds = %165
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #11
  %167 = 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.31)
          to label %168 unwind label %172

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

170:                                              ; preds = %168
  %171 = call i32 @getchar()
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #11
  call void @_ZN6MatrixD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #11
  ret void

172:                                              ; preds = %168, %166, %164
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %176

174:                                              ; preds = %165
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #11
  br label %176

176:                                              ; preds = %.loopexit, %.loopexit.split-lp, %72, %154, %120, %141, %174, %172
  %.pn.pn.pn = phi { ptr, i32 } [ %173, %172 ], [ %175, %174 ], [ %155, %154 ], [ %73, %72 ], [ %142, %141 ], [ %121, %120 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #11
  br label %177

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP7SegmentSaIS1_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 @_ZNSt6vectorIP7SegmentSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIP16CornerDescriptorSaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 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 #2 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #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 = { 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 #9 = { 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 #10 = { inlinehint mustprogress nofree 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 #11 = { nounwind }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !10, i64 16}
!14 = !{!"_ZTS12ImageContent", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72}
!15 = !{!"int", !7, i64 0}
!16 = !{!17, !17, i64 0}
!17 = !{!"float", !7, i64 0}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}


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