; LLVM IR from mickypaganini/SSI2016-jet-clustering :: spartyjet-4.0.2_mac/External/fastjet-3.0.0/src (ClusterSequence)

; 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<fastjet::PseudoJet, std::allocator<fastjet::PseudoJet>>::_Vector_impl" }
%"struct.std::_Vector_base<fastjet::PseudoJet, std::allocator<fastjet::PseudoJet>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastjet::PseudoJet, std::allocator<fastjet::PseudoJet>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastjet::PseudoJet, std::allocator<fastjet::PseudoJet>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.fastjet::ClusterSequence" = type <{ ptr, %"class.fastjet::JetDefinition", %"class.std::vector", %"class.std::vector.1", i8, [3 x i8], i32, double, double, double, double, i32, i32, %"class.fastjet::SharedPtr.6", i32, i8, i8, [2 x i8], %"class.fastjet::SharedPtr.7", %"class.std::vector.8", double, double, double, double, i32, i32, i32, [4 x i8] }>
%"class.fastjet::JetDefinition" = type { i32, double, double, i32, ptr, %"class.fastjet::SharedPtr", %"class.fastjet::JetDefinition::DefaultRecombiner", ptr, %"class.fastjet::SharedPtr.0" }
%"class.fastjet::SharedPtr" = type { ptr }
%"class.fastjet::JetDefinition::DefaultRecombiner" = type <{ %"class.fastjet::JetDefinition::Recombiner", i32, [4 x i8] }>
%"class.fastjet::JetDefinition::Recombiner" = type { ptr }
%"class.fastjet::SharedPtr.0" = type { ptr }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<fastjet::ClusterSequence::history_element, std::allocator<fastjet::ClusterSequence::history_element>>::_Vector_impl" }
%"struct.std::_Vector_base<fastjet::ClusterSequence::history_element, std::allocator<fastjet::ClusterSequence::history_element>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastjet::ClusterSequence::history_element, std::allocator<fastjet::ClusterSequence::history_element>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastjet::ClusterSequence::history_element, std::allocator<fastjet::ClusterSequence::history_element>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.fastjet::SharedPtr.6" = type { ptr }
%"class.fastjet::SharedPtr.7" = type { ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<fastjet::ClusterSequence::Tile, std::allocator<fastjet::ClusterSequence::Tile>>::_Vector_impl" }
%"struct.std::_Vector_base<fastjet::ClusterSequence::Tile, std::allocator<fastjet::ClusterSequence::Tile>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastjet::ClusterSequence::Tile, std::allocator<fastjet::ClusterSequence::Tile>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastjet::ClusterSequence::Tile, std::allocator<fastjet::ClusterSequence::Tile>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.fastjet::ClusterSequence::history_element" = type { i32, i32, i32, i32, double, double }

@_ZTIN7fastjet5ErrorE = external dso_local constant { ptr, ptr }, align 8
@_ZN7fastjet15ClusterSequence21_n_exclusive_warningsE = external dso_local global i32, align 4
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.47 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [2 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZN7fastjet5ErrorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2

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

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

declare void @__cxa_free_exception(ptr)

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112)) 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) #4

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3 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: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK7fastjet13JetDefinition11extra_paramEv(ptr noundef nonnull align 8 dereferenceable(80)) #1 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK7fastjet15ClusterSequence20exclusive_jets_up_toERKi(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(276) %1, ptr noundef nonnull align 4 dereferenceable(4) %2) #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca i1, align 1
  %13 = alloca i1, align 1
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca i1, align 1
  store ptr %0, ptr %4, align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %20 = load ptr, ptr %5, align 8
  %21 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 1
  %22 = call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %23 = icmp ne i32 %22, 0
  br i1 %23, label %24, label %63

24:                                               ; preds = %3
  %25 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 1
  %26 = call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %25)
  %27 = icmp ne i32 %26, 1
  br i1 %27, label %28, label %63

28:                                               ; preds = %24
  %29 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 1
  %30 = call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %29)
  %31 = icmp ne i32 %30, 50
  br i1 %31, label %32, label %63

32:                                               ; preds = %28
  %33 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 1
  %34 = call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %33)
  %35 = icmp ne i32 %34, 3
  br i1 %35, label %36, label %40

36:                                               ; preds = %32
  %37 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 1
  %38 = call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %37)
  %39 = icmp ne i32 %38, 53
  br i1 %39, label %44, label %40

40:                                               ; preds = %36, %32
  %41 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 1
  %42 = call noundef double @_ZNK7fastjet13JetDefinition11extra_paramEv(ptr noundef nonnull align 8 dereferenceable(80) %41)
  %43 = fcmp olt double %42, 0.000000e+00
  br i1 %43, label %44, label %63

44:                                               ; preds = %40, %36
  %45 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 1
  %46 = call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %45)
  %47 = icmp ne i32 %46, 99
  br i1 %47, label %55, label %48

48:                                               ; preds = %44
  %49 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 1
  %50 = call noundef ptr @_ZNK7fastjet13JetDefinition6pluginEv(ptr noundef nonnull align 8 dereferenceable(80) %49)
  %51 = load ptr, ptr %50, align 8, !tbaa !9
  %52 = getelementptr inbounds ptr, ptr %51, i64 6
  %53 = load ptr, ptr %52, align 8
  %54 = call noundef zeroext i1 %53(ptr noundef nonnull align 8 dereferenceable(8) %50)
  br i1 %54, label %63, label %55

55:                                               ; preds = %48, %44
  %56 = load i32, ptr @_ZN7fastjet15ClusterSequence21_n_exclusive_warningsE, align 4, !tbaa !11
  %57 = icmp slt i32 %56, 5
  br i1 %57, label %58, label %63

58:                                               ; preds = %55
  %59 = load i32, ptr @_ZN7fastjet15ClusterSequence21_n_exclusive_warningsE, align 4, !tbaa !11
  %60 = add nsw i32 %59, 1
  store i32 %60, ptr @_ZN7fastjet15ClusterSequence21_n_exclusive_warningsE, align 4, !tbaa !11
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.47)
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %63

63:                                               ; preds = %58, %55, %48, %40, %28, %24, %3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  %64 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 6
  %65 = load i32, ptr %64, align 4, !tbaa !13
  %66 = mul nsw i32 2, %65
  %67 = load ptr, ptr %6, align 8, !tbaa !5
  %68 = load i32, ptr %67, align 4, !tbaa !11
  %69 = sub nsw i32 %66, %68
  store i32 %69, ptr %7, align 4, !tbaa !11
  %70 = load i32, ptr %7, align 4, !tbaa !11
  %71 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 6
  %72 = load i32, ptr %71, align 4, !tbaa !13
  %73 = icmp slt i32 %70, %72
  br i1 %73, label %74, label %77

74:                                               ; preds = %63
  %75 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 6
  %76 = load i32, ptr %75, align 4, !tbaa !13
  store i32 %76, ptr %7, align 4, !tbaa !11
  br label %77

77:                                               ; preds = %74, %63
  %78 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 6
  %79 = load i32, ptr %78, align 4, !tbaa !13
  %80 = mul nsw i32 2, %79
  %81 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 3
  %82 = call noundef i64 @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %81) #6
  %83 = trunc i64 %82 to i32
  %84 = icmp ne i32 %80, %83
  br i1 %84, label %85, label %108

85:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 376, ptr %8) #6
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %8)
  %86 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef @.str.48)
          to label %87 unwind label %91

87:                                               ; preds = %85
  store i1 true, ptr %12, align 1
  %88 = call ptr @__cxa_allocate_exception(i64 40) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #6
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(112) %8)
          to label %89 unwind label %95

89:                                               ; preds = %87
  invoke void @_ZN7fastjet5ErrorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %88, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %90 unwind label %99

90:                                               ; preds = %89
  store i1 false, ptr %12, align 1
  invoke void @__cxa_throw(ptr %88, ptr @_ZTIN7fastjet5ErrorE, ptr @_ZN7fastjet5ErrorD2Ev) #7
          to label %239 unwind label %99

91:                                               ; preds = %85
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %9, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %10, align 4
  br label %107

95:                                               ; preds = %87
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %9, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %10, align 4
  br label %103

99:                                               ; preds = %90, %89
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %9, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %103

103:                                              ; preds = %99, %95
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #6
  %104 = load i1, ptr %12, align 1
  br i1 %104, label %105, label %106

105:                                              ; preds = %103
  call void @__cxa_free_exception(ptr %88) #6
  br label %106

106:                                              ; preds = %105, %103
  br label %107

107:                                              ; preds = %106, %91
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %8) #6
  call void @llvm.lifetime.end.p0(i64 376, ptr %8) #6
  br label %233

108:                                              ; preds = %77
  store i1 false, ptr %13, align 1
  call void @_ZNSt6vectorIN7fastjet9PseudoJetESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %109 = load i32, ptr %7, align 4, !tbaa !11
  store i32 %109, ptr %14, align 4, !tbaa !11
  br label %110

110:                                              ; preds = %171, %108
  %111 = load i32, ptr %14, align 4, !tbaa !11
  %112 = zext i32 %111 to i64
  %113 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 3
  %114 = call noundef i64 @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #6
  %115 = icmp ult i64 %112, %114
  br i1 %115, label %117, label %116

116:                                              ; preds = %110
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %175

117:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %118 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 3
  %119 = load i32, ptr %14, align 4, !tbaa !11
  %120 = zext i32 %119 to i64
  %121 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %118, i64 noundef %120) #6
  %122 = getelementptr inbounds %"struct.fastjet::ClusterSequence::history_element", ptr %121, i32 0, i32 0
  %123 = load i32, ptr %122, align 8, !tbaa !39
  store i32 %123, ptr %15, align 4, !tbaa !11
  %124 = load i32, ptr %15, align 4, !tbaa !11
  %125 = load i32, ptr %7, align 4, !tbaa !11
  %126 = icmp slt i32 %124, %125
  br i1 %126, label %127, label %142

127:                                              ; preds = %117
  %128 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 2
  %129 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 3
  %130 = load i32, ptr %15, align 4, !tbaa !11
  %131 = sext i32 %130 to i64
  %132 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %131) #6
  %133 = getelementptr inbounds %"struct.fastjet::ClusterSequence::history_element", ptr %132, i32 0, i32 3
  %134 = load i32, ptr %133, align 4, !tbaa !41
  %135 = sext i32 %134 to i64
  %136 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt6vectorIN7fastjet9PseudoJetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %128, i64 noundef %135) #6
  invoke void @_ZNSt6vectorIN7fastjet9PseudoJetESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(88) %136)
          to label %137 unwind label %138

137:                                              ; preds = %127
  br label %142

138:                                              ; preds = %127
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %9, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %10, align 4
  br label %174

142:                                              ; preds = %137, %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %143 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 3
  %144 = load i32, ptr %14, align 4, !tbaa !11
  %145 = zext i32 %144 to i64
  %146 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %145) #6
  %147 = getelementptr inbounds %"struct.fastjet::ClusterSequence::history_element", ptr %146, i32 0, i32 1
  %148 = load i32, ptr %147, align 4, !tbaa !42
  store i32 %148, ptr %16, align 4, !tbaa !11
  %149 = load i32, ptr %16, align 4, !tbaa !11
  %150 = load i32, ptr %7, align 4, !tbaa !11
  %151 = icmp slt i32 %149, %150
  br i1 %151, label %152, label %170

152:                                              ; preds = %142
  %153 = load i32, ptr %16, align 4, !tbaa !11
  %154 = icmp sgt i32 %153, 0
  br i1 %154, label %155, label %170

155:                                              ; preds = %152
  %156 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 2
  %157 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 3
  %158 = load i32, ptr %16, align 4, !tbaa !11
  %159 = sext i32 %158 to i64
  %160 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %157, i64 noundef %159) #6
  %161 = getelementptr inbounds %"struct.fastjet::ClusterSequence::history_element", ptr %160, i32 0, i32 3
  %162 = load i32, ptr %161, align 4, !tbaa !41
  %163 = sext i32 %162 to i64
  %164 = call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt6vectorIN7fastjet9PseudoJetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %163) #6
  invoke void @_ZNSt6vectorIN7fastjet9PseudoJetESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(88) %164)
          to label %165 unwind label %166

165:                                              ; preds = %155
  br label %170

166:                                              ; preds = %155
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %9, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %174

170:                                              ; preds = %165, %152, %142
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %171

171:                                              ; preds = %170
  %172 = load i32, ptr %14, align 4, !tbaa !11
  %173 = add i32 %172, 1
  store i32 %173, ptr %14, align 4, !tbaa !11
  br label %110, !llvm.loop !43

174:                                              ; preds = %166, %138
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %232

175:                                              ; preds = %116
  %176 = call noundef i64 @_ZNKSt6vectorIN7fastjet9PseudoJetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  %177 = trunc i64 %176 to i32
  %178 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %20, i32 0, i32 6
  %179 = load ptr, ptr %6, align 8, !tbaa !5
  %180 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %178, ptr noundef nonnull align 4 dereferenceable(4) %179)
          to label %181 unwind label %202

181:                                              ; preds = %175
  %182 = load i32, ptr %180, align 4, !tbaa !11
  %183 = icmp ne i32 %177, %182
  br i1 %183, label %184, label %228

184:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 376, ptr %17) #6
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %17)
          to label %185 unwind label %206

185:                                              ; preds = %184
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef @.str.49)
          to label %187 unwind label %210

187:                                              ; preds = %185
  %188 = call noundef i64 @_ZNKSt6vectorIN7fastjet9PseudoJetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  %189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %186, i64 noundef %188)
          to label %190 unwind label %210

190:                                              ; preds = %187
  %191 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef @.str.50)
          to label %192 unwind label %210

192:                                              ; preds = %190
  %193 = load ptr, ptr %6, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !11
  %195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %191, i32 noundef %194)
          to label %196 unwind label %210

196:                                              ; preds = %192
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %195, ptr noundef @.str.51)
          to label %198 unwind label %210

198:                                              ; preds = %196
  store i1 true, ptr %19, align 1
  %199 = call ptr @__cxa_allocate_exception(i64 40) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #6
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(112) %17)
          to label %200 unwind label %214

200:                                              ; preds = %198
  invoke void @_ZN7fastjet5ErrorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %199, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %201 unwind label %218

201:                                              ; preds = %200
  store i1 false, ptr %19, align 1
  invoke void @__cxa_throw(ptr %199, ptr @_ZTIN7fastjet5ErrorE, ptr @_ZN7fastjet5ErrorD2Ev) #7
          to label %239 unwind label %218

202:                                              ; preds = %175
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %9, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %10, align 4
  br label %232

206:                                              ; preds = %184
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %9, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %10, align 4
  br label %227

210:                                              ; preds = %196, %192, %190, %187, %185
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %9, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %10, align 4
  br label %226

214:                                              ; preds = %198
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %9, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %10, align 4
  br label %222

218:                                              ; preds = %201, %200
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %9, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %222

222:                                              ; preds = %218, %214
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  %223 = load i1, ptr %19, align 1
  br i1 %223, label %224, label %225

224:                                              ; preds = %222
  call void @__cxa_free_exception(ptr %199) #6
  br label %225

225:                                              ; preds = %224, %222
  br label %226

226:                                              ; preds = %225, %210
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %17) #6
  br label %227

227:                                              ; preds = %226, %206
  call void @llvm.lifetime.end.p0(i64 376, ptr %17) #6
  br label %232

228:                                              ; preds = %181
  store i1 true, ptr %13, align 1
  %229 = load i1, ptr %13, align 1
  br i1 %229, label %231, label %230

230:                                              ; preds = %228
  call void @_ZNSt6vectorIN7fastjet9PseudoJetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  br label %231

231:                                              ; preds = %230, %228
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  ret void

232:                                              ; preds = %227, %202, %174
  call void @_ZNSt6vectorIN7fastjet9PseudoJetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  br label %233

233:                                              ; preds = %232, %107
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  br label %234

234:                                              ; preds = %233
  %235 = load ptr, ptr %9, align 8
  %236 = load i32, ptr %10, align 4
  %237 = insertvalue { ptr, i32 } poison, ptr %235, 0
  %238 = insertvalue { ptr, i32 } %237, i32 %236, 1
  resume { ptr, i32 } %238

239:                                              ; preds = %201, %90
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #5

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

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

!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 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 140}
!14 = !{!"_ZTSN7fastjet15ClusterSequenceE", !15, i64 8, !24, i64 88, !28, i64 112, !32, i64 136, !12, i64 140, !17, i64 144, !17, i64 152, !17, i64 160, !17, i64 168, !18, i64 176, !16, i64 180, !33, i64 184, !12, i64 192, !32, i64 196, !32, i64 197, !34, i64 200, !35, i64 208, !17, i64 232, !17, i64 240, !17, i64 248, !17, i64 256, !12, i64 264, !12, i64 268, !12, i64 272}
!15 = !{!"_ZTSN7fastjet13JetDefinitionE", !16, i64 0, !17, i64 8, !17, i64 16, !18, i64 24, !6, i64 32, !19, i64 40, !20, i64 48, !6, i64 64, !23, i64 72}
!16 = !{!"_ZTSN7fastjet12JetAlgorithmE", !7, i64 0}
!17 = !{!"double", !7, i64 0}
!18 = !{!"_ZTSN7fastjet8StrategyE", !7, i64 0}
!19 = !{!"_ZTSN7fastjet9SharedPtrIKNS_13JetDefinition6PluginEEE", !6, i64 0}
!20 = !{!"_ZTSN7fastjet13JetDefinition17DefaultRecombinerE", !21, i64 0, !22, i64 8}
!21 = !{!"_ZTSN7fastjet13JetDefinition10RecombinerE"}
!22 = !{!"_ZTSN7fastjet19RecombinationSchemeE", !7, i64 0}
!23 = !{!"_ZTSN7fastjet9SharedPtrIKNS_13JetDefinition10RecombinerEEE", !6, i64 0}
!24 = !{!"_ZTSSt6vectorIN7fastjet9PseudoJetESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"bool", !7, i64 0}
!33 = !{!"_ZTSN7fastjet9SharedPtrINS_22PseudoJetStructureBaseEEE", !6, i64 0}
!34 = !{!"_ZTSN7fastjet9SharedPtrINS_15ClusterSequence6ExtrasEEE", !6, i64 0}
!35 = !{!"_ZTSSt6vectorIN7fastjet15ClusterSequence4TileESaIS2_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!40, !12, i64 0}
!40 = !{!"_ZTSN7fastjet15ClusterSequence15history_elementE", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !17, i64 16, !17, i64 24}
!41 = !{!40, !12, i64 12}
!42 = !{!40, !12, i64 4}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}


; 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<fastjet::PseudoJet, std::allocator<fastjet::PseudoJet>>::_Vector_impl" }
%"struct.std::_Vector_base<fastjet::PseudoJet, std::allocator<fastjet::PseudoJet>>::_Vector_impl" = type { %"struct.std::_Vector_base<fastjet::PseudoJet, std::allocator<fastjet::PseudoJet>>::_Vector_impl_data" }
%"struct.std::_Vector_base<fastjet::PseudoJet, std::allocator<fastjet::PseudoJet>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }

@_ZTIN7fastjet5ErrorE = external dso_local constant { ptr, ptr }, align 8
@_ZN7fastjet15ClusterSequence21_n_exclusive_warningsE = external dso_local local_unnamed_addr global i32, align 4
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.47 = external hidden unnamed_addr constant [104 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [73 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [2 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZN7fastjet5ErrorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2

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

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112)) 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 void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #1 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #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 #3 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: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK7fastjet13JetDefinition11extra_paramEv(ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #1 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK7fastjet15ClusterSequence20exclusive_jets_up_toERKi(ptr dead_on_unwind noalias writable sret(%"class.std::vector") align 8 %0, ptr noundef nonnull align 8 dereferenceable(276) %1, ptr noundef nonnull align 4 dereferenceable(4) %2) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = getelementptr inbounds i8, ptr %1, i64 8
  %9 = tail call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %8)
  %.not44 = icmp eq i32 %9, 0
  br i1 %.not44, label %37, label %10

10:                                               ; preds = %3
  %11 = tail call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %8)
  %.not45 = icmp eq i32 %11, 1
  br i1 %.not45, label %37, label %12

12:                                               ; preds = %10
  %13 = tail call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %8)
  %.not46 = icmp eq i32 %13, 50
  br i1 %.not46, label %37, label %14

14:                                               ; preds = %12
  %15 = tail call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %8)
  %.not47 = icmp eq i32 %15, 3
  br i1 %.not47, label %18, label %16

16:                                               ; preds = %14
  %17 = tail call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %8)
  %.not48 = icmp eq i32 %17, 53
  br i1 %.not48, label %18, label %21

18:                                               ; preds = %16, %14
  %19 = tail call noundef double @_ZNK7fastjet13JetDefinition11extra_paramEv(ptr noundef nonnull align 8 dereferenceable(80) %8)
  %20 = fcmp olt double %19, 0.000000e+00
  br i1 %20, label %21, label %37

21:                                               ; preds = %18, %16
  %22 = tail call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %8)
  %.not49 = icmp eq i32 %22, 99
  br i1 %.not49, label %23, label %31

23:                                               ; preds = %21
  %24 = tail call noundef ptr @_ZNK7fastjet13JetDefinition6pluginEv(ptr noundef nonnull align 8 dereferenceable(80) %8)
  %25 = load ptr, ptr %24, align 8, !tbaa !5
  %26 = getelementptr inbounds i8, ptr %25, i64 48
  %27 = load ptr, ptr %26, align 8
  %28 = tail call noundef zeroext i1 %27(ptr noundef nonnull align 8 dereferenceable(8) %24)
  %29 = load i32, ptr @_ZN7fastjet15ClusterSequence21_n_exclusive_warningsE, align 4
  %30 = icmp sgt i32 %29, 4
  %or.cond.not = select i1 %28, i1 true, i1 %30
  br i1 %or.cond.not, label %37, label %32

31:                                               ; preds = %21
  %.old = load i32, ptr @_ZN7fastjet15ClusterSequence21_n_exclusive_warningsE, align 4, !tbaa !8
  %.old1 = icmp slt i32 %.old, 5
  br i1 %.old1, label %32, label %37

32:                                               ; preds = %23, %31
  %33 = phi i32 [ %29, %23 ], [ %.old, %31 ]
  %34 = add nsw i32 %33, 1
  store i32 %34, ptr @_ZN7fastjet15ClusterSequence21_n_exclusive_warningsE, align 4, !tbaa !8
  %35 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.47)
  %36 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %37

37:                                               ; preds = %32, %31, %23, %18, %12, %10, %3
  %38 = getelementptr inbounds i8, ptr %1, i64 140
  %39 = load i32, ptr %38, align 4, !tbaa !11
  %40 = shl nsw i32 %39, 1
  %41 = load i32, ptr %2, align 4, !tbaa !8
  %42 = sub nsw i32 %40, %41
  %spec.select = tail call i32 @llvm.smax.i32(i32 %42, i32 %39)
  %43 = getelementptr inbounds i8, ptr %1, i64 112
  %44 = tail call noundef i64 @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  %45 = trunc i64 %44 to i32
  %.not = icmp eq i32 %40, %45
  br i1 %.not, label %60, label %46

46:                                               ; preds = %37
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %4) #7
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %4)
  %47 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull @.str.48)
          to label %48 unwind label %53

48:                                               ; preds = %46
  %49 = call ptr @__cxa_allocate_exception(i64 40) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(112) %4)
          to label %50 unwind label %.thread

50:                                               ; preds = %48
  invoke void @_ZN7fastjet5ErrorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %49, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %52 unwind label %.thread65

.thread65:                                        ; preds = %50
  %51 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %58

52:                                               ; preds = %50
  invoke void @__cxa_throw(ptr nonnull %49, ptr nonnull @_ZTIN7fastjet5ErrorE, ptr nonnull @_ZN7fastjet5ErrorD2Ev) #8
          to label %134 unwind label %56

53:                                               ; preds = %46
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %59

.thread:                                          ; preds = %48
  %55 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %58

56:                                               ; preds = %52
  %57 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %59

58:                                               ; preds = %.thread65, %.thread
  %.pn5864 = phi { ptr, i32 } [ %55, %.thread ], [ %51, %.thread65 ]
  call void @__cxa_free_exception(ptr %49) #7
  br label %59

59:                                               ; preds = %56, %58, %53
  %.pn58.pn = phi { ptr, i32 } [ %.pn5864, %58 ], [ %57, %56 ], [ %54, %53 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %4) #7
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %4) #7
  br label %133

60:                                               ; preds = %37
  tail call void @_ZNSt6vectorIN7fastjet9PseudoJetESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  %61 = zext i32 %spec.select to i64
  %62 = tail call noundef i64 @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  %63 = icmp ugt i64 %62, %61
  br i1 %63, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %60
  %64 = getelementptr inbounds i8, ptr %1, i64 88
  br label %69

._crit_edge:                                      ; preds = %98, %60
  %65 = tail call noundef i64 @_ZNKSt6vectorIN7fastjet9PseudoJetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  %66 = trunc i64 %65 to i32
  %67 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %38, ptr noundef nonnull align 4 dereferenceable(4) %2)
  %68 = load i32, ptr %67, align 4, !tbaa !8
  %.not51 = icmp eq i32 %68, %66
  br i1 %.not51, label %131, label %103

69:                                               ; preds = %.lr.ph, %98
  %70 = phi i64 [ %61, %.lr.ph ], [ %100, %98 ]
  %.02873 = phi i32 [ %spec.select, %.lr.ph ], [ %99, %98 ]
  %71 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %70) #7
  %72 = load i32, ptr %71, align 8, !tbaa !38
  %73 = icmp slt i32 %72, %spec.select
  br i1 %73, label %74, label %83

74:                                               ; preds = %69
  %75 = sext i32 %72 to i64
  %76 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %75) #7
  %77 = getelementptr inbounds i8, ptr %76, i64 12
  %78 = load i32, ptr %77, align 4, !tbaa !40
  %79 = sext i32 %78 to i64
  %80 = tail call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt6vectorIN7fastjet9PseudoJetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %79) #7
  invoke void @_ZNSt6vectorIN7fastjet9PseudoJetESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(88) %80)
          to label %83 unwind label %81

81:                                               ; preds = %74
  %82 = landingpad { ptr, i32 }
          cleanup
  br label %132

83:                                               ; preds = %74, %69
  %84 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %70) #7
  %85 = getelementptr inbounds i8, ptr %84, i64 4
  %86 = load i32, ptr %85, align 4, !tbaa !41
  %87 = icmp slt i32 %86, %spec.select
  %88 = icmp sgt i32 %86, 0
  %or.cond4 = and i1 %87, %88
  br i1 %or.cond4, label %89, label %98

89:                                               ; preds = %83
  %90 = zext nneg i32 %86 to i64
  %91 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %90) #7
  %92 = getelementptr inbounds i8, ptr %91, i64 12
  %93 = load i32, ptr %92, align 4, !tbaa !40
  %94 = sext i32 %93 to i64
  %95 = tail call noundef nonnull align 8 dereferenceable(88) ptr @_ZNKSt6vectorIN7fastjet9PseudoJetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %94) #7
  invoke void @_ZNSt6vectorIN7fastjet9PseudoJetESaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(88) %95)
          to label %98 unwind label %96

96:                                               ; preds = %89
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %132

98:                                               ; preds = %89, %83
  %99 = add i32 %.02873, 1
  %100 = zext i32 %99 to i64
  %101 = tail call noundef i64 @_ZNKSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  %102 = icmp ugt i64 %101, %100
  br i1 %102, label %69, label %._crit_edge, !llvm.loop !42

103:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %6) #7
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %6)
          to label %104 unwind label %121

104:                                              ; preds = %103
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @.str.49)
          to label %106 unwind label %123

106:                                              ; preds = %104
  %107 = call noundef i64 @_ZNKSt6vectorIN7fastjet9PseudoJetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %105, i64 noundef %107)
          to label %109 unwind label %123

109:                                              ; preds = %106
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull @.str.50)
          to label %111 unwind label %123

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

114:                                              ; preds = %111
  %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull @.str.51)
          to label %116 unwind label %123

116:                                              ; preds = %114
  %117 = call ptr @__cxa_allocate_exception(i64 40) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(112) %6)
          to label %118 unwind label %.thread67

118:                                              ; preds = %116
  invoke void @_ZN7fastjet5ErrorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %117, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %120 unwind label %.thread71

.thread71:                                        ; preds = %118
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %128

120:                                              ; preds = %118
  invoke void @__cxa_throw(ptr nonnull %117, ptr nonnull @_ZTIN7fastjet5ErrorE, ptr nonnull @_ZN7fastjet5ErrorD2Ev) #8
          to label %134 unwind label %126

121:                                              ; preds = %103
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %130

123:                                              ; preds = %114, %111, %109, %106, %104
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %129

.thread67:                                        ; preds = %116
  %125 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %128

126:                                              ; preds = %120
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %129

128:                                              ; preds = %.thread71, %.thread67
  %.pn70 = phi { ptr, i32 } [ %125, %.thread67 ], [ %119, %.thread71 ]
  call void @__cxa_free_exception(ptr %117) #7
  br label %129

129:                                              ; preds = %126, %128, %123
  %.pn.pn = phi { ptr, i32 } [ %.pn70, %128 ], [ %127, %126 ], [ %124, %123 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %6) #7
  br label %130

130:                                              ; preds = %129, %121
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %129 ], [ %122, %121 ]
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %6) #7
  br label %132

131:                                              ; preds = %._crit_edge
  ret void

132:                                              ; preds = %81, %96, %130
  %.pn55.pn = phi { ptr, i32 } [ %.pn.pn.pn, %130 ], [ %97, %96 ], [ %82, %81 ]
  call void @_ZNSt6vectorIN7fastjet9PseudoJetESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  br label %133

133:                                              ; preds = %132, %59
  %.pn58.pn.pn = phi { ptr, i32 } [ %.pn58.pn, %59 ], [ %.pn55.pn, %132 ]
  resume { ptr, i32 } %.pn58.pn.pn

134:                                              ; preds = %120, %52
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

; 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 #3 align 2

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

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

!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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"int", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!12, !9, i64 140}
!12 = !{!"_ZTSN7fastjet15ClusterSequenceE", !13, i64 8, !23, i64 88, !27, i64 112, !31, i64 136, !9, i64 140, !15, i64 144, !15, i64 152, !15, i64 160, !15, i64 168, !16, i64 176, !14, i64 180, !32, i64 184, !9, i64 192, !31, i64 196, !31, i64 197, !33, i64 200, !34, i64 208, !15, i64 232, !15, i64 240, !15, i64 248, !15, i64 256, !9, i64 264, !9, i64 268, !9, i64 272}
!13 = !{!"_ZTSN7fastjet13JetDefinitionE", !14, i64 0, !15, i64 8, !15, i64 16, !16, i64 24, !17, i64 32, !18, i64 40, !19, i64 48, !17, i64 64, !22, i64 72}
!14 = !{!"_ZTSN7fastjet12JetAlgorithmE", !10, i64 0}
!15 = !{!"double", !10, i64 0}
!16 = !{!"_ZTSN7fastjet8StrategyE", !10, i64 0}
!17 = !{!"any pointer", !10, i64 0}
!18 = !{!"_ZTSN7fastjet9SharedPtrIKNS_13JetDefinition6PluginEEE", !17, i64 0}
!19 = !{!"_ZTSN7fastjet13JetDefinition17DefaultRecombinerE", !20, i64 0, !21, i64 8}
!20 = !{!"_ZTSN7fastjet13JetDefinition10RecombinerE"}
!21 = !{!"_ZTSN7fastjet19RecombinationSchemeE", !10, i64 0}
!22 = !{!"_ZTSN7fastjet9SharedPtrIKNS_13JetDefinition10RecombinerEEE", !17, i64 0}
!23 = !{!"_ZTSSt6vectorIN7fastjet9PseudoJetESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!27 = !{!"_ZTSSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!31 = !{!"bool", !10, i64 0}
!32 = !{!"_ZTSN7fastjet9SharedPtrINS_22PseudoJetStructureBaseEEE", !17, i64 0}
!33 = !{!"_ZTSN7fastjet9SharedPtrINS_15ClusterSequence6ExtrasEEE", !17, i64 0}
!34 = !{!"_ZTSSt6vectorIN7fastjet15ClusterSequence4TileESaIS2_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!38 = !{!39, !9, i64 0}
!39 = !{!"_ZTSN7fastjet15ClusterSequence15history_elementE", !9, i64 0, !9, i64 4, !9, i64 8, !9, i64 12, !15, i64 16, !15, i64 24}
!40 = !{!39, !9, i64 12}
!41 = !{!39, !9, i64 4}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}


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