; 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.fastjet::LimitedWarning" = type { i32, i32, 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::allocator.13" = type { i8 }
%"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.std::locale" = type { ptr }
%"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.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" = 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::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 }

@.str.2 = external hidden unnamed_addr constant [136 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [14 x i8], align 1
@__PRETTY_FUNCTION__._ZN7fastjet15ClusterSequence19_initialise_and_runERKNS_13JetDefinitionERKb = external hidden unnamed_addr constant [88 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [72 x i8], align 1
@_ZTIN7fastjet5ErrorE = external dso_local constant { ptr, ptr }, align 8
@.str.6 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@_ZN7fastjet15ClusterSequence25_changed_strategy_warningE = external dso_local global %"class.fastjet::LimitedWarning", align 8
@.str.10 = external hidden unnamed_addr constant [34 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7fastjet15ClusterSequence19_initialise_and_runERKNS_13JetDefinitionERKb(ptr noundef nonnull align 8 dereferenceable(276) %0, ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 1 dereferenceable(1) %2) #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.13", align 1
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i1, align 1
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca i1, align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %22 = load ptr, ptr %4, align 8
  %23 = load ptr, ptr %5, align 8, !tbaa !5
  %24 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN7fastjet15ClusterSequence15_decant_optionsERKNS_13JetDefinitionERKb(ptr noundef nonnull align 8 dereferenceable(276) %22, ptr noundef nonnull align 8 dereferenceable(80) %23, ptr noundef nonnull align 1 dereferenceable(1) %24)
  call void @_ZN7fastjet15ClusterSequence21_fill_initial_historyEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  %25 = call noundef i32 @_ZNK7fastjet15ClusterSequence11n_particlesEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  %26 = icmp eq i32 %25, 0
  br i1 %26, label %27, label %28

27:                                               ; preds = %3
  br label %357

28:                                               ; preds = %3
  %29 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 12
  %30 = load i32, ptr %29, align 4, !tbaa !9
  %31 = icmp eq i32 %30, 99
  br i1 %31, label %32, label %40

32:                                               ; preds = %28
  %33 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 16
  store i8 1, ptr %33, align 1, !tbaa !36
  %34 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 1
  %35 = call noundef ptr @_ZNK7fastjet13JetDefinition6pluginEv(ptr noundef nonnull align 8 dereferenceable(80) %34)
  %36 = load ptr, ptr %35, align 8, !tbaa !37
  %37 = getelementptr inbounds ptr, ptr %36, i64 1
  %38 = load ptr, ptr %37, align 8
  call void %38(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(276) %22)
  %39 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 16
  store i8 0, ptr %39, align 1, !tbaa !36
  call void @_ZN7fastjet15ClusterSequence27_update_structure_use_countEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %357

40:                                               ; preds = %28
  %41 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 12
  %42 = load i32, ptr %41, align 4, !tbaa !9
  %43 = icmp eq i32 %42, 50
  br i1 %43, label %48, label %44

44:                                               ; preds = %40
  %45 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 12
  %46 = load i32, ptr %45, align 4, !tbaa !9
  %47 = icmp eq i32 %46, 53
  br i1 %47, label %48, label %86

48:                                               ; preds = %44, %40
  %49 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  store i32 -1, ptr %49, align 8, !tbaa !39
  %50 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 12
  %51 = load i32, ptr %50, align 4, !tbaa !9
  %52 = icmp eq i32 %51, 50
  br i1 %52, label %53, label %62

53:                                               ; preds = %48
  %54 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 7
  %55 = load double, ptr %54, align 8, !tbaa !40
  %56 = fcmp ogt double %55, 2.000000e+00
  br i1 %56, label %57, label %58

57:                                               ; preds = %53
  br label %60

58:                                               ; preds = %53
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.2, i32 noundef 140, ptr noundef @__PRETTY_FUNCTION__._ZN7fastjet15ClusterSequence19_initialise_and_runERKNS_13JetDefinitionERKb) #8
  unreachable

59:                                               ; No predecessors!
  br label %60

60:                                               ; preds = %59, %57
  %61 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 9
  store double 1.000000e+00, ptr %61, align 8, !tbaa !41
  br label %85

62:                                               ; preds = %48
  %63 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 7
  %64 = load double, ptr %63, align 8, !tbaa !40
  %65 = fcmp ogt double %64, 0x400921FB54442D18
  br i1 %65, label %66, label %73

66:                                               ; preds = %62
  %67 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 7
  %68 = load double, ptr %67, align 8, !tbaa !40
  %69 = call double @cos(double noundef %68) #9
  %70 = fadd double 3.000000e+00, %69
  %71 = fmul double 2.000000e+00, %70
  %72 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 8
  store double %71, ptr %72, align 8, !tbaa !42
  br label %80

73:                                               ; preds = %62
  %74 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 7
  %75 = load double, ptr %74, align 8, !tbaa !40
  %76 = call double @cos(double noundef %75) #9
  %77 = fsub double 1.000000e+00, %76
  %78 = fmul double 2.000000e+00, %77
  %79 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 8
  store double %78, ptr %79, align 8, !tbaa !42
  br label %80

80:                                               ; preds = %73, %66
  %81 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 8
  %82 = load double, ptr %81, align 8, !tbaa !42
  %83 = fdiv double 1.000000e+00, %82
  %84 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 9
  store double %83, ptr %84, align 8, !tbaa !41
  br label %85

85:                                               ; preds = %80, %60
  call void @_ZN7fastjet15ClusterSequence29_simple_N2_cluster_EEBriefJetEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %357

86:                                               ; preds = %44
  %87 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 12
  %88 = load i32, ptr %87, align 4, !tbaa !9
  %89 = icmp eq i32 %88, 999
  br i1 %89, label %90, label %106

90:                                               ; preds = %86
  store i1 true, ptr %11, align 1
  %91 = call ptr @__cxa_allocate_exception(i64 40) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %92 unwind label %94

92:                                               ; preds = %90
  invoke void @_ZN7fastjet5ErrorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %91, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %93 unwind label %98

93:                                               ; preds = %92
  store i1 false, ptr %11, align 1
  invoke void @__cxa_throw(ptr %91, ptr @_ZTIN7fastjet5ErrorE, ptr @_ZN7fastjet5ErrorD2Ev) #10
          to label %363 unwind label %98

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

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

102:                                              ; preds = %98, %94
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #9
  %103 = load i1, ptr %11, align 1
  br i1 %103, label %104, label %105

104:                                              ; preds = %102
  call void @__cxa_free_exception(ptr %91) #9
  br label %105

105:                                              ; preds = %104, %102
  br label %358

106:                                              ; preds = %86
  br label %107

107:                                              ; preds = %106
  br label %108

108:                                              ; preds = %107
  %109 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %110 = load i32, ptr %109, align 8, !tbaa !39
  %111 = icmp eq i32 %110, 1
  br i1 %111, label %112, label %173

112:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %113 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 2
  %114 = call noundef i64 @_ZNKSt6vectorIN7fastjet9PseudoJetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #9
  %115 = trunc i64 %114 to i32
  store i32 %115, ptr %12, align 4, !tbaa !43
  %116 = load i32, ptr %12, align 4, !tbaa !43
  %117 = sitofp i32 %116 to double
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  store double 5.000000e-01, ptr %13, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #9
  store double 1.000000e+00, ptr %14, align 8, !tbaa !44
  %118 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 7
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %118)
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %119)
  %121 = load double, ptr %120, align 8, !tbaa !44
  %122 = fmul double 5.500000e+01, %121
  %123 = fcmp ole double %117, %122
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  br i1 %123, label %124, label %126

124:                                              ; preds = %112
  %125 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  store i32 -1, ptr %125, align 8, !tbaa !39
  br label %172

126:                                              ; preds = %112
  %127 = load i32, ptr %12, align 4, !tbaa !43
  %128 = sitofp i32 %127 to double
  %129 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 7
  %130 = load double, ptr %129, align 8, !tbaa !40
  %131 = call double @pow(double noundef %130, double noundef 2.000000e+00) #9
  %132 = fdiv double 6.200000e+03, %131
  %133 = fcmp ogt double %128, %132
  br i1 %133, label %134, label %140

134:                                              ; preds = %126
  %135 = load ptr, ptr %5, align 8, !tbaa !5
  %136 = call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %135)
  %137 = icmp eq i32 %136, 1
  br i1 %137, label %138, label %140

138:                                              ; preds = %134
  %139 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  store i32 12, ptr %139, align 8, !tbaa !39
  br label %171

140:                                              ; preds = %134, %126
  %141 = load i32, ptr %12, align 4, !tbaa !43
  %142 = sitofp i32 %141 to double
  %143 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 7
  %144 = load double, ptr %143, align 8, !tbaa !40
  %145 = call double @pow(double noundef %144, double noundef 1.150000e+00) #9
  %146 = fdiv double 1.600000e+04, %145
  %147 = fcmp ogt double %142, %146
  br i1 %147, label %148, label %152

148:                                              ; preds = %140
  %149 = load ptr, ptr %5, align 8, !tbaa !5
  %150 = call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %149)
  %151 = icmp ne i32 %150, 2
  br i1 %151, label %160, label %152

152:                                              ; preds = %148, %140
  %153 = load i32, ptr %12, align 4, !tbaa !43
  %154 = sitofp i32 %153 to double
  %155 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 7
  %156 = load double, ptr %155, align 8, !tbaa !40
  %157 = call double @pow(double noundef %156, double noundef 1.150000e+00) #9
  %158 = fdiv double 3.500000e+04, %157
  %159 = fcmp ogt double %154, %158
  br i1 %159, label %160, label %162

160:                                              ; preds = %152, %148
  %161 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  store i32 2, ptr %161, align 8, !tbaa !39
  br label %170

162:                                              ; preds = %152
  %163 = load i32, ptr %12, align 4, !tbaa !43
  %164 = icmp sle i32 %163, 450
  br i1 %164, label %165, label %167

165:                                              ; preds = %162
  %166 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  store i32 -3, ptr %166, align 8, !tbaa !39
  br label %169

167:                                              ; preds = %162
  %168 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  store i32 -4, ptr %168, align 8, !tbaa !39
  br label %169

169:                                              ; preds = %167, %165
  br label %170

170:                                              ; preds = %169, %160
  br label %171

171:                                              ; preds = %170, %138
  br label %172

172:                                              ; preds = %171, %124
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  br label %173

173:                                              ; preds = %172, %108
  %174 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 7
  %175 = load double, ptr %174, align 8, !tbaa !40
  %176 = fcmp oge double %175, 0x401921FB54442D18
  br i1 %176, label %177, label %267

177:                                              ; preds = %173
  %178 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %179 = load i32, ptr %178, align 8, !tbaa !39
  %180 = icmp eq i32 %179, 2
  br i1 %180, label %197, label %181

181:                                              ; preds = %177
  %182 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %183 = load i32, ptr %182, align 8, !tbaa !39
  %184 = icmp eq i32 %183, 3
  br i1 %184, label %197, label %185

185:                                              ; preds = %181
  %186 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %187 = load i32, ptr %186, align 8, !tbaa !39
  %188 = icmp eq i32 %187, 12
  br i1 %188, label %197, label %189

189:                                              ; preds = %185
  %190 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %191 = load i32, ptr %190, align 8, !tbaa !39
  %192 = icmp eq i32 %191, 13
  br i1 %192, label %197, label %193

193:                                              ; preds = %189
  %194 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %195 = load i32, ptr %194, align 8, !tbaa !39
  %196 = icmp eq i32 %195, 14
  br i1 %196, label %197, label %199

197:                                              ; preds = %193, %189, %185, %181, %177
  %198 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  store i32 4, ptr %198, align 8, !tbaa !39
  br label %199

199:                                              ; preds = %197, %193
  %200 = load ptr, ptr %5, align 8, !tbaa !5
  %201 = call noundef i32 @_ZNK7fastjet13JetDefinition8strategyEv(ptr noundef nonnull align 8 dereferenceable(80) %200)
  %202 = icmp ne i32 %201, 1
  br i1 %202, label %203, label %266

203:                                              ; preds = %199
  %204 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %205 = load i32, ptr %204, align 8, !tbaa !39
  %206 = load ptr, ptr %5, align 8, !tbaa !5
  %207 = call noundef i32 @_ZNK7fastjet13JetDefinition8strategyEv(ptr noundef nonnull align 8 dereferenceable(80) %206)
  %208 = icmp ne i32 %205, %207
  br i1 %208, label %209, label %266

209:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 376, ptr %15) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %15)
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef @.str.6)
          to label %211 unwind label %233

211:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #9
  %212 = load ptr, ptr %5, align 8, !tbaa !5
  %213 = invoke noundef i32 @_ZNK7fastjet13JetDefinition8strategyEv(ptr noundef nonnull align 8 dereferenceable(80) %212)
          to label %214 unwind label %237

214:                                              ; preds = %211
  invoke void @_ZNK7fastjet15ClusterSequence15strategy_stringB5cxx11ENS_8StrategyE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(276) %22, i32 noundef %213)
          to label %215 unwind label %237

215:                                              ; preds = %214
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %217 unwind label %241

217:                                              ; preds = %215
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef @.str.7)
          to label %219 unwind label %241

219:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #9
  invoke void @_ZNK7fastjet15ClusterSequence15strategy_stringB5cxx11Ev(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 8 dereferenceable(276) %22)
          to label %220 unwind label %245

220:                                              ; preds = %219
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %222 unwind label %249

222:                                              ; preds = %220
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef @.str.8)
          to label %224 unwind label %249

224:                                              ; preds = %222
  %225 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 7
  %226 = load double, ptr %225, align 8, !tbaa !40
  %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %223, double noundef %226)
          to label %228 unwind label %249

228:                                              ; preds = %224
  %229 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %227, ptr noundef @.str.9)
          to label %230 unwind label %249

230:                                              ; preds = %228
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #9
  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) %15)
          to label %231 unwind label %256

231:                                              ; preds = %230
  invoke void @_ZN7fastjet14LimitedWarning4warnERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) @_ZN7fastjet15ClusterSequence25_changed_strategy_warningE, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %232 unwind label %260

232:                                              ; preds = %231
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %15) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %15) #9
  br label %266

233:                                              ; preds = %209
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %9, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %10, align 4
  br label %265

237:                                              ; preds = %214, %211
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %9, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %10, align 4
  br label %255

241:                                              ; preds = %217, %215
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %9, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %10, align 4
  br label %254

245:                                              ; preds = %219
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %9, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %10, align 4
  br label %253

249:                                              ; preds = %228, %224, %222, %220
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %9, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #9
  br label %253

253:                                              ; preds = %249, %245
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #9
  br label %254

254:                                              ; preds = %253, %241
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  br label %255

255:                                              ; preds = %254, %237
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  br label %265

256:                                              ; preds = %230
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %9, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %10, align 4
  br label %264

260:                                              ; preds = %231
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %9, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %264

264:                                              ; preds = %260, %256
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  br label %265

265:                                              ; preds = %264, %255, %233
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %15) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %15) #9
  br label %358

266:                                              ; preds = %232, %203, %199
  br label %267

267:                                              ; preds = %266, %173
  %268 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %269 = load i32, ptr %268, align 8, !tbaa !39
  %270 = icmp eq i32 %269, -1
  br i1 %270, label %271, label %272

271:                                              ; preds = %267
  call void @_ZN7fastjet15ClusterSequence27_simple_N2_cluster_BriefJetEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %357

272:                                              ; preds = %267
  %273 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %274 = load i32, ptr %273, align 8, !tbaa !39
  %275 = icmp eq i32 %274, -3
  br i1 %275, label %276, label %277

276:                                              ; preds = %272
  call void @_ZN7fastjet15ClusterSequence24_faster_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %356

277:                                              ; preds = %272
  %278 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %279 = load i32, ptr %278, align 8, !tbaa !39
  %280 = icmp eq i32 %279, -4
  br i1 %280, label %281, label %282

281:                                              ; preds = %277
  call void @_ZN7fastjet15ClusterSequence32_minheap_faster_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %355

282:                                              ; preds = %277
  %283 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %284 = load i32, ptr %283, align 8, !tbaa !39
  %285 = icmp eq i32 %284, 2
  br i1 %285, label %286, label %287

286:                                              ; preds = %282
  call void @_ZN7fastjet15ClusterSequence17_delaunay_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %354

287:                                              ; preds = %282
  %288 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %289 = load i32, ptr %288, align 8, !tbaa !39
  %290 = icmp eq i32 %289, 12
  br i1 %290, label %291, label %292

291:                                              ; preds = %287
  call void @_ZN7fastjet15ClusterSequence26_CP2DChan_cluster_2piMultDEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %353

292:                                              ; preds = %287
  %293 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %294 = load i32, ptr %293, align 8, !tbaa !39
  %295 = icmp eq i32 %294, 3
  br i1 %295, label %300, label %296

296:                                              ; preds = %292
  %297 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %298 = load i32, ptr %297, align 8, !tbaa !39
  %299 = icmp eq i32 %298, 4
  br i1 %299, label %300, label %301

300:                                              ; preds = %296, %292
  call void @_ZN7fastjet15ClusterSequence17_delaunay_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %352

301:                                              ; preds = %296
  %302 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %303 = load i32, ptr %302, align 8, !tbaa !39
  %304 = icmp eq i32 %303, 0
  br i1 %304, label %305, label %306

305:                                              ; preds = %301
  call void @_ZN7fastjet15ClusterSequence20_really_dumb_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %351

306:                                              ; preds = %301
  %307 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %308 = load i32, ptr %307, align 8, !tbaa !39
  %309 = icmp eq i32 %308, -2
  br i1 %309, label %310, label %311

310:                                              ; preds = %306
  call void @_ZN7fastjet15ClusterSequence17_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %350

311:                                              ; preds = %306
  %312 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %313 = load i32, ptr %312, align 8, !tbaa !39
  %314 = icmp eq i32 %313, 14
  br i1 %314, label %315, label %316

315:                                              ; preds = %311
  call void @_ZN7fastjet15ClusterSequence17_CP2DChan_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %349

316:                                              ; preds = %311
  %317 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %318 = load i32, ptr %317, align 8, !tbaa !39
  %319 = icmp eq i32 %318, 13
  br i1 %319, label %320, label %321

320:                                              ; preds = %316
  call void @_ZN7fastjet15ClusterSequence23_CP2DChan_cluster_2pi2REv(ptr noundef nonnull align 8 dereferenceable(276) %22)
  br label %348

321:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 376, ptr %19) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %19)
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef @.str.10)
          to label %323 unwind label %331

323:                                              ; preds = %321
  %324 = getelementptr inbounds %"class.fastjet::ClusterSequence", ptr %22, i32 0, i32 11
  %325 = load i32, ptr %324, align 8, !tbaa !39
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %322, i32 noundef %325)
          to label %327 unwind label %331

327:                                              ; preds = %323
  store i1 true, ptr %21, align 1
  %328 = call ptr @__cxa_allocate_exception(i64 40) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(112) %19)
          to label %329 unwind label %335

329:                                              ; preds = %327
  invoke void @_ZN7fastjet5ErrorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %328, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %330 unwind label %339

330:                                              ; preds = %329
  store i1 false, ptr %21, align 1
  invoke void @__cxa_throw(ptr %328, ptr @_ZTIN7fastjet5ErrorE, ptr @_ZN7fastjet5ErrorD2Ev) #10
          to label %363 unwind label %339

331:                                              ; preds = %323, %321
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %9, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %10, align 4
  br label %347

335:                                              ; preds = %327
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %9, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %10, align 4
  br label %343

339:                                              ; preds = %330, %329
  %340 = landingpad { ptr, i32 }
          cleanup
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %9, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %343

343:                                              ; preds = %339, %335
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #9
  %344 = load i1, ptr %21, align 1
  br i1 %344, label %345, label %346

345:                                              ; preds = %343
  call void @__cxa_free_exception(ptr %328) #9
  br label %346

346:                                              ; preds = %345, %343
  br label %347

347:                                              ; preds = %346, %331
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %19) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr %19) #9
  br label %358

348:                                              ; preds = %320
  br label %349

349:                                              ; preds = %348, %315
  br label %350

350:                                              ; preds = %349, %310
  br label %351

351:                                              ; preds = %350, %305
  br label %352

352:                                              ; preds = %351, %300
  br label %353

353:                                              ; preds = %352, %291
  br label %354

354:                                              ; preds = %353, %286
  br label %355

355:                                              ; preds = %354, %281
  br label %356

356:                                              ; preds = %355, %276
  br label %357

357:                                              ; preds = %356, %271, %85, %32, %27
  ret void

358:                                              ; preds = %347, %265, %105
  %359 = load ptr, ptr %9, align 8
  %360 = load i32, ptr %10, align 4
  %361 = insertvalue { ptr, i32 } poison, ptr %359, 0
  %362 = insertvalue { ptr, i32 } %361, i32 %360, 1
  resume { ptr, i32 } %362

363:                                              ; preds = %330, %93
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7fastjet15ClusterSequence15_decant_optionsERKNS_13JetDefinitionERKb(ptr noundef nonnull align 8 dereferenceable(276), ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7fastjet15ClusterSequence21_fill_initial_historyEv(ptr noundef nonnull align 8 dereferenceable(276)) #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7fastjet15ClusterSequence27_update_structure_use_countEv(ptr noundef nonnull align 8 dereferenceable(276)) #2 align 2

; Function Attrs: nounwind
declare double @cos(double noundef) #5

declare void @_ZN7fastjet15ClusterSequence29_simple_N2_cluster_EEBriefJetEv(ptr noundef nonnull align 8 dereferenceable(276)) #6

declare ptr @__cxa_allocate_exception(i64)

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

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

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

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

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

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

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #5

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #7

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

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

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

declare void @_ZN7fastjet14LimitedWarning4warnERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) #6

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

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

declare void @_ZN7fastjet15ClusterSequence27_simple_N2_cluster_BriefJetEv(ptr noundef nonnull align 8 dereferenceable(276)) #6

declare void @_ZN7fastjet15ClusterSequence24_faster_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) #6

declare void @_ZN7fastjet15ClusterSequence32_minheap_faster_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) #6

declare void @_ZN7fastjet15ClusterSequence17_delaunay_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) #6

declare void @_ZN7fastjet15ClusterSequence26_CP2DChan_cluster_2piMultDEv(ptr noundef nonnull align 8 dereferenceable(276)) #6

declare void @_ZN7fastjet15ClusterSequence20_really_dumb_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) #6

declare void @_ZN7fastjet15ClusterSequence17_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) #6

declare void @_ZN7fastjet15ClusterSequence17_CP2DChan_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) #6

declare void @_ZN7fastjet15ClusterSequence23_CP2DChan_cluster_2pi2REv(ptr noundef nonnull align 8 dereferenceable(276)) #6

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noreturn 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 #2 = { 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 #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "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 = { 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 #8 = { noreturn nounwind }
attributes #9 = { nounwind }
attributes #10 = { 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, !12, i64 180}
!10 = !{!"_ZTSN7fastjet15ClusterSequenceE", !11, i64 8, !20, i64 88, !24, i64 112, !28, i64 136, !29, i64 140, !13, i64 144, !13, i64 152, !13, i64 160, !13, i64 168, !14, i64 176, !12, i64 180, !30, i64 184, !29, i64 192, !28, i64 196, !28, i64 197, !31, i64 200, !32, i64 208, !13, i64 232, !13, i64 240, !13, i64 248, !13, i64 256, !29, i64 264, !29, i64 268, !29, i64 272}
!11 = !{!"_ZTSN7fastjet13JetDefinitionE", !12, i64 0, !13, i64 8, !13, i64 16, !14, i64 24, !6, i64 32, !15, i64 40, !16, i64 48, !6, i64 64, !19, i64 72}
!12 = !{!"_ZTSN7fastjet12JetAlgorithmE", !7, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = !{!"_ZTSN7fastjet8StrategyE", !7, i64 0}
!15 = !{!"_ZTSN7fastjet9SharedPtrIKNS_13JetDefinition6PluginEEE", !6, i64 0}
!16 = !{!"_ZTSN7fastjet13JetDefinition17DefaultRecombinerE", !17, i64 0, !18, i64 8}
!17 = !{!"_ZTSN7fastjet13JetDefinition10RecombinerE"}
!18 = !{!"_ZTSN7fastjet19RecombinationSchemeE", !7, i64 0}
!19 = !{!"_ZTSN7fastjet9SharedPtrIKNS_13JetDefinition10RecombinerEEE", !6, i64 0}
!20 = !{!"_ZTSSt6vectorIN7fastjet9PseudoJetESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"bool", !7, i64 0}
!29 = !{!"int", !7, i64 0}
!30 = !{!"_ZTSN7fastjet9SharedPtrINS_22PseudoJetStructureBaseEEE", !6, i64 0}
!31 = !{!"_ZTSN7fastjet9SharedPtrINS_15ClusterSequence6ExtrasEEE", !6, i64 0}
!32 = !{!"_ZTSSt6vectorIN7fastjet15ClusterSequence4TileESaIS2_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!10, !28, i64 197}
!37 = !{!38, !38, i64 0}
!38 = !{!"vtable pointer", !8, i64 0}
!39 = !{!10, !14, i64 176}
!40 = !{!10, !13, i64 144}
!41 = !{!10, !13, i64 160}
!42 = !{!10, !13, i64 152}
!43 = !{!29, !29, i64 0}
!44 = !{!13, !13, i64 0}


; 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.fastjet::LimitedWarning" = type { i32, i32, 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::allocator.13" = type { i8 }
%"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.std::locale" = type { ptr }
%"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 }

@.str.2 = external hidden unnamed_addr constant [136 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [14 x i8], align 1
@__PRETTY_FUNCTION__._ZN7fastjet15ClusterSequence19_initialise_and_runERKNS_13JetDefinitionERKb = external hidden unnamed_addr constant [88 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [72 x i8], align 1
@_ZTIN7fastjet5ErrorE = external dso_local constant { ptr, ptr }, align 8
@.str.6 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@_ZN7fastjet15ClusterSequence25_changed_strategy_warningE = external dso_local global %"class.fastjet::LimitedWarning", align 8
@.str.10 = external hidden unnamed_addr constant [34 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

; 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 uwtable
define dso_local void @_ZN7fastjet15ClusterSequence19_initialise_and_runERKNS_13JetDefinitionERKb(ptr noundef nonnull align 8 dereferenceable(276) %0, ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 1 dereferenceable(1) %2) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::allocator.13", align 1
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  tail call void @_ZN7fastjet15ClusterSequence15_decant_optionsERKNS_13JetDefinitionERKb(ptr noundef nonnull align 8 dereferenceable(276) %0, ptr noundef nonnull align 8 dereferenceable(80) %1, ptr noundef nonnull align 1 dereferenceable(1) %2)
  tail call void @_ZN7fastjet15ClusterSequence21_fill_initial_historyEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  %14 = tail call noundef i32 @_ZNK7fastjet15ClusterSequence11n_particlesEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  %15 = icmp eq i32 %14, 0
  br i1 %15, label %168, label %16

16:                                               ; preds = %3
  %17 = getelementptr inbounds i8, ptr %0, i64 180
  %18 = load i32, ptr %17, align 4, !tbaa !5
  switch i32 %18, label %51 [
    i32 99, label %19
    i32 50, label %26
    i32 53, label %26
    i32 999, label %43
  ]

19:                                               ; preds = %16
  %20 = getelementptr inbounds i8, ptr %0, i64 197
  store i8 1, ptr %20, align 1, !tbaa !35
  %21 = getelementptr inbounds i8, ptr %0, i64 8
  %22 = tail call noundef ptr @_ZNK7fastjet13JetDefinition6pluginEv(ptr noundef nonnull align 8 dereferenceable(80) %21)
  %23 = load ptr, ptr %22, align 8, !tbaa !36
  %24 = getelementptr inbounds i8, ptr %23, i64 8
  %25 = load ptr, ptr %24, align 8
  tail call void %25(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(276) %0)
  store i8 0, ptr %20, align 1, !tbaa !35
  tail call void @_ZN7fastjet15ClusterSequence27_update_structure_use_countEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

26:                                               ; preds = %16, %16
  %27 = getelementptr inbounds i8, ptr %0, i64 176
  store i32 -1, ptr %27, align 8, !tbaa !38
  %28 = icmp eq i32 %18, 50
  %29 = getelementptr inbounds i8, ptr %0, i64 144
  %30 = load double, ptr %29, align 8, !tbaa !39
  br i1 %28, label %31, label %34

31:                                               ; preds = %26
  %32 = fcmp ogt double %30, 2.000000e+00
  br i1 %32, label %41, label %33

33:                                               ; preds = %31
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.2, i32 noundef 140, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7fastjet15ClusterSequence19_initialise_and_runERKNS_13JetDefinitionERKb) #8
  unreachable

34:                                               ; preds = %26
  %35 = fcmp ogt double %30, 0x400921FB54442D18
  %36 = tail call double @cos(double noundef %30) #9
  %37 = fadd double %36, 3.000000e+00
  %38 = fsub double 1.000000e+00, %36
  %.sink.in = select i1 %35, double %37, double %38
  %.sink = fmul double %.sink.in, 2.000000e+00
  %39 = getelementptr inbounds i8, ptr %0, i64 152
  store double %.sink, ptr %39, align 8
  %40 = fdiv double 1.000000e+00, %.sink
  br label %41

41:                                               ; preds = %31, %34
  %.sink58 = phi double [ %40, %34 ], [ 1.000000e+00, %31 ]
  %42 = getelementptr inbounds i8, ptr %0, i64 160
  store double %.sink58, ptr %42, align 8, !tbaa !40
  tail call void @_ZN7fastjet15ClusterSequence29_simple_N2_cluster_EEBriefJetEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

43:                                               ; preds = %16
  %44 = tail call ptr @__cxa_allocate_exception(i64 40) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.5, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %45 unwind label %.thread

45:                                               ; preds = %43
  invoke void @_ZN7fastjet5ErrorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %44, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %46 unwind label %48

46:                                               ; preds = %45
  invoke void @__cxa_throw(ptr nonnull %44, ptr nonnull @_ZTIN7fastjet5ErrorE, ptr nonnull @_ZN7fastjet5ErrorD2Ev) #10
          to label %170 unwind label %48

.thread:                                          ; preds = %43
  %47 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9
  br label %50

48:                                               ; preds = %45, %46
  %.018 = phi i1 [ false, %46 ], [ true, %45 ]
  %49 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #9
  br i1 %.018, label %50, label %169

50:                                               ; preds = %.thread, %48
  %.pn4651 = phi { ptr, i32 } [ %47, %.thread ], [ %49, %48 ]
  call void @__cxa_free_exception(ptr %44) #9
  br label %169

51:                                               ; preds = %16
  %52 = getelementptr inbounds i8, ptr %0, i64 176
  %53 = load i32, ptr %52, align 8, !tbaa !38
  %54 = icmp eq i32 %53, 1
  br i1 %54, label %55, label %87

55:                                               ; preds = %51
  %56 = getelementptr inbounds i8, ptr %0, i64 88
  %57 = tail call noundef i64 @_ZNKSt6vectorIN7fastjet9PseudoJetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %58 = trunc i64 %57 to i32
  %59 = sitofp i32 %58 to double
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  store double 5.000000e-01, ptr %6, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  store double 1.000000e+00, ptr %7, align 8, !tbaa !41
  %60 = getelementptr inbounds i8, ptr %0, i64 144
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %60)
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %61)
  %63 = load double, ptr %62, align 8, !tbaa !41
  %64 = fmul double %63, 5.500000e+01
  %65 = fcmp ult double %64, %59
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  br i1 %65, label %66, label %.sink.split

66:                                               ; preds = %55
  %67 = load double, ptr %60, align 8, !tbaa !39
  %square = fmul double %67, %67
  %68 = fdiv double 6.200000e+03, %square
  %69 = fcmp olt double %68, %59
  br i1 %69, label %70, label %73

70:                                               ; preds = %66
  %71 = call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %72 = icmp eq i32 %71, 1
  br i1 %72, label %.sink.split, label %._crit_edge

._crit_edge:                                      ; preds = %70
  %.pre = load double, ptr %60, align 8, !tbaa !39
  br label %73

73:                                               ; preds = %._crit_edge, %66
  %74 = phi double [ %.pre, %._crit_edge ], [ %67, %66 ]
  %75 = call double @pow(double noundef %74, double noundef 1.150000e+00) #9
  %76 = fdiv double 1.600000e+04, %75
  %77 = fcmp olt double %76, %59
  br i1 %77, label %78, label %80

78:                                               ; preds = %73
  %79 = call noundef i32 @_ZNK7fastjet13JetDefinition13jet_algorithmEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %.not = icmp eq i32 %79, 2
  br i1 %.not, label %80, label %.sink.split

80:                                               ; preds = %78, %73
  %81 = load double, ptr %60, align 8, !tbaa !39
  %82 = call double @pow(double noundef %81, double noundef 1.150000e+00) #9
  %83 = fdiv double 3.500000e+04, %82
  %84 = fcmp olt double %83, %59
  br i1 %84, label %.sink.split, label %85

85:                                               ; preds = %80
  %86 = icmp slt i32 %58, 451
  %. = select i1 %86, i32 -3, i32 -4
  br label %.sink.split

.sink.split:                                      ; preds = %85, %78, %80, %70, %55
  %.sink60 = phi i32 [ -1, %55 ], [ 12, %70 ], [ 2, %80 ], [ 2, %78 ], [ %., %85 ]
  store i32 %.sink60, ptr %52, align 8, !tbaa !38
  br label %87

87:                                               ; preds = %.sink.split, %51
  %88 = phi i32 [ %53, %51 ], [ %.sink60, %.sink.split ]
  %89 = getelementptr inbounds i8, ptr %0, i64 144
  %90 = load double, ptr %89, align 8, !tbaa !39
  %91 = fcmp ult double %90, 0x401921FB54442D18
  br i1 %91, label %139, label %92

92:                                               ; preds = %87
  switch i32 %88, label %94 [
    i32 2, label %93
    i32 3, label %93
    i32 12, label %93
    i32 13, label %93
    i32 14, label %93
  ]

93:                                               ; preds = %92, %92, %92, %92, %92
  store i32 4, ptr %52, align 8, !tbaa !38
  br label %94

94:                                               ; preds = %92, %93
  %95 = call noundef i32 @_ZNK7fastjet13JetDefinition8strategyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %.not35 = icmp eq i32 %95, 1
  br i1 %.not35, label %139, label %96

96:                                               ; preds = %94
  %97 = load i32, ptr %52, align 8, !tbaa !38
  %98 = call noundef i32 @_ZNK7fastjet13JetDefinition8strategyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  %.not36 = icmp eq i32 %97, %98
  br i1 %.not36, label %139, label %99

99:                                               ; preds = %96
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %8) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %8)
  %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull @.str.6)
          to label %101 unwind label %120

101:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #9
  %102 = call noundef i32 @_ZNK7fastjet13JetDefinition8strategyEv(ptr noundef nonnull align 8 dereferenceable(80) %1)
  invoke void @_ZNK7fastjet15ClusterSequence15strategy_stringB5cxx11ENS_8StrategyE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(276) %0, i32 noundef %102)
          to label %103 unwind label %122

103:                                              ; preds = %101
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %105 unwind label %124

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

107:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  invoke void @_ZNK7fastjet15ClusterSequence15strategy_stringB5cxx11Ev(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(276) %0)
          to label %108 unwind label %126

108:                                              ; preds = %107
  %109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %110 unwind label %128

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

112:                                              ; preds = %110
  %113 = load double, ptr %89, align 8, !tbaa !39
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %111, double noundef %113)
          to label %115 unwind label %128

115:                                              ; preds = %112
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull @.str.9)
          to label %117 unwind label %128

117:                                              ; preds = %115
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(112) %8)
          to label %118 unwind label %133

118:                                              ; preds = %117
  invoke void @_ZN7fastjet14LimitedWarning4warnERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) @_ZN7fastjet15ClusterSequence25_changed_strategy_warningE, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %119 unwind label %135

119:                                              ; preds = %118
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %8) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %8) #9
  br label %139

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

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

124:                                              ; preds = %105, %103
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %131

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

128:                                              ; preds = %115, %112, %110, %108
  %129 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  br label %130

130:                                              ; preds = %128, %126
  %.pn = phi { ptr, i32 } [ %129, %128 ], [ %127, %126 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %131

131:                                              ; preds = %130, %124
  %.pn.pn = phi { ptr, i32 } [ %.pn, %130 ], [ %125, %124 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  br label %132

132:                                              ; preds = %131, %122
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %131 ], [ %123, %122 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  br label %138

133:                                              ; preds = %117
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %137

135:                                              ; preds = %118
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  br label %137

137:                                              ; preds = %135, %133
  %.pn40 = phi { ptr, i32 } [ %136, %135 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  br label %138

138:                                              ; preds = %137, %132, %120
  %.pn40.pn = phi { ptr, i32 } [ %.pn40, %137 ], [ %.pn.pn.pn, %132 ], [ %121, %120 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %8) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %8) #9
  br label %169

139:                                              ; preds = %94, %96, %119, %87
  %140 = load i32, ptr %52, align 8, !tbaa !38
  switch i32 %140, label %151 [
    i32 -1, label %141
    i32 -3, label %142
    i32 -4, label %143
    i32 2, label %144
    i32 12, label %145
    i32 3, label %146
    i32 4, label %146
    i32 0, label %147
    i32 -2, label %148
    i32 14, label %149
    i32 13, label %150
  ]

141:                                              ; preds = %139
  call void @_ZN7fastjet15ClusterSequence27_simple_N2_cluster_BriefJetEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

142:                                              ; preds = %139
  call void @_ZN7fastjet15ClusterSequence24_faster_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

143:                                              ; preds = %139
  call void @_ZN7fastjet15ClusterSequence32_minheap_faster_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

144:                                              ; preds = %139
  call void @_ZN7fastjet15ClusterSequence17_delaunay_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

145:                                              ; preds = %139
  call void @_ZN7fastjet15ClusterSequence26_CP2DChan_cluster_2piMultDEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

146:                                              ; preds = %139, %139
  call void @_ZN7fastjet15ClusterSequence17_delaunay_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

147:                                              ; preds = %139
  call void @_ZN7fastjet15ClusterSequence20_really_dumb_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

148:                                              ; preds = %139
  call void @_ZN7fastjet15ClusterSequence17_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

149:                                              ; preds = %139
  call void @_ZN7fastjet15ClusterSequence17_CP2DChan_clusterEv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

150:                                              ; preds = %139
  call void @_ZN7fastjet15ClusterSequence23_CP2DChan_cluster_2pi2REv(ptr noundef nonnull align 8 dereferenceable(276) %0)
  br label %168

151:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %12) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %12)
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull @.str.10)
          to label %153 unwind label %161

153:                                              ; preds = %151
  %154 = load i32, ptr %52, align 8, !tbaa !38
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %152, i32 noundef %154)
          to label %156 unwind label %161

156:                                              ; preds = %153
  %157 = call ptr @__cxa_allocate_exception(i64 40) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #9
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(112) %12)
          to label %158 unwind label %.thread52

158:                                              ; preds = %156
  invoke void @_ZN7fastjet5ErrorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %157, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %160 unwind label %.thread56

.thread56:                                        ; preds = %158
  %159 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %166

160:                                              ; preds = %158
  invoke void @__cxa_throw(ptr nonnull %157, ptr nonnull @_ZTIN7fastjet5ErrorE, ptr nonnull @_ZN7fastjet5ErrorD2Ev) #10
          to label %170 unwind label %164

161:                                              ; preds = %153, %151
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %167

.thread52:                                        ; preds = %156
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %166

164:                                              ; preds = %160
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %167

166:                                              ; preds = %.thread56, %.thread52
  %.pn4355 = phi { ptr, i32 } [ %163, %.thread52 ], [ %159, %.thread56 ]
  call void @__cxa_free_exception(ptr %157) #9
  br label %167

167:                                              ; preds = %164, %166, %161
  %.pn43.pn = phi { ptr, i32 } [ %.pn4355, %166 ], [ %165, %164 ], [ %162, %161 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %12) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %12) #9
  br label %169

168:                                              ; preds = %142, %144, %146, %148, %150, %149, %147, %145, %143, %3, %141, %41, %19
  ret void

169:                                              ; preds = %48, %50, %167, %138
  %.pn46.pn = phi { ptr, i32 } [ %.pn4651, %50 ], [ %49, %48 ], [ %.pn43.pn, %167 ], [ %.pn40.pn, %138 ]
  resume { ptr, i32 } %.pn46.pn

170:                                              ; preds = %160, %46
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7fastjet15ClusterSequence15_decant_optionsERKNS_13JetDefinitionERKb(ptr noundef nonnull align 8 dereferenceable(276), ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7fastjet15ClusterSequence21_fill_initial_historyEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7fastjet15ClusterSequence27_update_structure_use_countEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @cos(double noundef) local_unnamed_addr #5

declare void @_ZN7fastjet15ClusterSequence29_simple_N2_cluster_EEBriefJetEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #6

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #5

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK7fastjet15ClusterSequence15strategy_stringB5cxx11ENS_8StrategyE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(276), i32 noundef) local_unnamed_addr #2 align 2

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

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

declare void @_ZN7fastjet14LimitedWarning4warnERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6

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

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

declare void @_ZN7fastjet15ClusterSequence27_simple_N2_cluster_BriefJetEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #6

declare void @_ZN7fastjet15ClusterSequence24_faster_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #6

declare void @_ZN7fastjet15ClusterSequence32_minheap_faster_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #6

declare void @_ZN7fastjet15ClusterSequence17_delaunay_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #6

declare void @_ZN7fastjet15ClusterSequence26_CP2DChan_cluster_2piMultDEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #6

declare void @_ZN7fastjet15ClusterSequence20_really_dumb_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #6

declare void @_ZN7fastjet15ClusterSequence17_tiled_N2_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #6

declare void @_ZN7fastjet15ClusterSequence17_CP2DChan_clusterEv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #6

declare void @_ZN7fastjet15ClusterSequence23_CP2DChan_cluster_2pi2REv(ptr noundef nonnull align 8 dereferenceable(276)) local_unnamed_addr #6

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noreturn 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 #2 = { 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 #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nofree nounwind willreturn memory(write) "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 = { "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 = { 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 #8 = { noreturn nounwind }
attributes #9 = { nounwind }
attributes #10 = { 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, !8, i64 180}
!6 = !{!"_ZTSN7fastjet15ClusterSequenceE", !7, i64 8, !19, i64 88, !23, i64 112, !27, i64 136, !28, i64 140, !11, i64 144, !11, i64 152, !11, i64 160, !11, i64 168, !12, i64 176, !8, i64 180, !29, i64 184, !28, i64 192, !27, i64 196, !27, i64 197, !30, i64 200, !31, i64 208, !11, i64 232, !11, i64 240, !11, i64 248, !11, i64 256, !28, i64 264, !28, i64 268, !28, i64 272}
!7 = !{!"_ZTSN7fastjet13JetDefinitionE", !8, i64 0, !11, i64 8, !11, i64 16, !12, i64 24, !13, i64 32, !14, i64 40, !15, i64 48, !13, i64 64, !18, i64 72}
!8 = !{!"_ZTSN7fastjet12JetAlgorithmE", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"double", !9, i64 0}
!12 = !{!"_ZTSN7fastjet8StrategyE", !9, i64 0}
!13 = !{!"any pointer", !9, i64 0}
!14 = !{!"_ZTSN7fastjet9SharedPtrIKNS_13JetDefinition6PluginEEE", !13, i64 0}
!15 = !{!"_ZTSN7fastjet13JetDefinition17DefaultRecombinerE", !16, i64 0, !17, i64 8}
!16 = !{!"_ZTSN7fastjet13JetDefinition10RecombinerE"}
!17 = !{!"_ZTSN7fastjet19RecombinationSchemeE", !9, i64 0}
!18 = !{!"_ZTSN7fastjet9SharedPtrIKNS_13JetDefinition10RecombinerEEE", !13, i64 0}
!19 = !{!"_ZTSSt6vectorIN7fastjet9PseudoJetESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN7fastjet9PseudoJetESaIS1_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!23 = !{!"_ZTSSt6vectorIN7fastjet15ClusterSequence15history_elementESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence15history_elementESaIS2_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!27 = !{!"bool", !9, i64 0}
!28 = !{!"int", !9, i64 0}
!29 = !{!"_ZTSN7fastjet9SharedPtrINS_22PseudoJetStructureBaseEEE", !13, i64 0}
!30 = !{!"_ZTSN7fastjet9SharedPtrINS_15ClusterSequence6ExtrasEEE", !13, i64 0}
!31 = !{!"_ZTSSt6vectorIN7fastjet15ClusterSequence4TileESaIS2_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN7fastjet15ClusterSequence4TileESaIS2_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!35 = !{!6, !27, i64 197}
!36 = !{!37, !37, i64 0}
!37 = !{!"vtable pointer", !10, i64 0}
!38 = !{!6, !12, i64 176}
!39 = !{!6, !11, i64 144}
!40 = !{!6, !11, i64 160}
!41 = !{!11, !11, i64 0}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MergedLoadStoreMotionPass,SROAPass,SimplifyCFGPass,TailCallElimPass