; LLVM IR from mickypaganini/SSI2016-jet-clustering :: spartyjet-4.0.2_mac/External/fastjet-3.0.0/plugins/ATLASCone/JetConeFinderTool.l_2470024f (ZN7fastjet5atlas17JetConeFinderTool11reconstructEv)

; 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.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.fastjet::atlas::JetConeFinderTool" = type { ptr, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", double, double, double, double, double, ptr, ptr, i32, ptr, ptr, i32, i32 }
%"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] }

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7fastjet5atlas17JetConeFinderTool11reconstructEv(ptr noundef nonnull align 8 dereferenceable(160) %0) #1 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %4 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %6 = alloca double, align 8
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %20 = alloca i8, align 1
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %27 = load ptr, ptr %2, align 8
  %28 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 24) #10
  call void @llvm.memset.p0.i64(ptr align 16 %28, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #11
  %29 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 9
  store ptr %28, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #11
  call void @_ZN9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #11
  %30 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 8
  %31 = load ptr, ptr %30, align 8, !tbaa !16
  %32 = call ptr @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  %33 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %4, i32 0, i32 0
  store ptr %32, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #11
  %34 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 8
  %35 = load ptr, ptr %34, align 8, !tbaa !16
  %36 = call ptr @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %35) #11
  %37 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %5, i32 0, i32 0
  store ptr %36, ptr %37, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %3, ptr align 8 %4, i64 8, i1 false), !tbaa.struct !17
  br label %38

38:                                               ; preds = %205, %1
  %39 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %5) #11
  br i1 %39, label %40, label %207

40:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #11
  %41 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  %42 = load ptr, ptr %41, align 8, !tbaa !5
  %43 = call noundef double @_ZNK7fastjet5atlas13LorentzVector2etEv(ptr noundef nonnull align 8 dereferenceable(32) %42)
  store double %43, ptr %6, align 8, !tbaa !18
  %44 = load double, ptr %6, align 8, !tbaa !18
  %45 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 6
  %46 = load double, ptr %45, align 8, !tbaa !19
  %47 = fcmp olt double %44, %46
  br i1 %47, label %48, label %49

48:                                               ; preds = %40
  store i32 2, ptr %7, align 4
  br label %202

49:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #11
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  %51 = load ptr, ptr %50, align 8, !tbaa !5
  %52 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3etaEv(ptr noundef nonnull align 8 dereferenceable(32) %51)
  store double %52, ptr %8, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #11
  %53 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  %54 = load ptr, ptr %53, align 8, !tbaa !5
  %55 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3phiEv(ptr noundef nonnull align 8 dereferenceable(32) %54)
  store double %55, ptr %9, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #11
  store i8 0, ptr %10, align 1, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #11
  store i8 1, ptr %11, align 1, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #11
  store i32 1, ptr %13, align 4, !tbaa !22
  br label %56

56:                                               ; preds = %117, %49
  %57 = load double, ptr %8, align 8, !tbaa !18
  %58 = load double, ptr %9, align 8, !tbaa !18
  %59 = call noundef ptr @_ZN7fastjet5atlas17JetConeFinderTool9calc_coneEdd(ptr noundef nonnull align 8 dereferenceable(160) %27, double noundef %57, double noundef %58)
  store ptr %59, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #11
  %60 = load ptr, ptr %12, align 8, !tbaa !5
  %61 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3etaEv(ptr noundef nonnull align 8 dereferenceable(32) %60)
  store double %61, ptr %14, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #11
  %62 = load ptr, ptr %12, align 8, !tbaa !5
  %63 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3phiEv(ptr noundef nonnull align 8 dereferenceable(32) %62)
  store double %63, ptr %15, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #11
  %64 = load double, ptr %8, align 8, !tbaa !18
  %65 = load double, ptr %14, align 8, !tbaa !18
  %66 = fsub double %64, %65
  %67 = call double @llvm.fabs.f64(double %66)
  store double %67, ptr %16, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #11
  %68 = load double, ptr %9, align 8, !tbaa !18
  %69 = load double, ptr %15, align 8, !tbaa !18
  %70 = call noundef double @_ZN7fastjet5atlas12JetDistances8deltaPhiEdd(double noundef %68, double noundef %69)
  %71 = call double @llvm.fabs.f64(double %70)
  store double %71, ptr %17, align 8, !tbaa !18
  %72 = load double, ptr %16, align 8, !tbaa !18
  %73 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 5
  %74 = load double, ptr %73, align 8, !tbaa !23
  %75 = fcmp olt double %72, %74
  br i1 %75, label %76, label %82

76:                                               ; preds = %56
  %77 = load double, ptr %17, align 8, !tbaa !18
  %78 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 5
  %79 = load double, ptr %78, align 8, !tbaa !23
  %80 = fcmp olt double %77, %79
  br i1 %80, label %81, label %82

81:                                               ; preds = %76
  store i8 1, ptr %10, align 1, !tbaa !20
  br label %82

82:                                               ; preds = %81, %76, %56
  %83 = load double, ptr %14, align 8, !tbaa !18
  %84 = call double @llvm.fabs.f64(double %83)
  %85 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 7
  %86 = load double, ptr %85, align 8, !tbaa !24
  %87 = fcmp ogt double %84, %86
  br i1 %87, label %88, label %89

88:                                               ; preds = %82
  store i8 0, ptr %11, align 1, !tbaa !20
  br label %89

89:                                               ; preds = %88, %82
  %90 = load double, ptr %14, align 8, !tbaa !18
  store double %90, ptr %8, align 8, !tbaa !18
  %91 = load double, ptr %15, align 8, !tbaa !18
  store double %91, ptr %9, align 8, !tbaa !18
  %92 = load i8, ptr %10, align 1, !tbaa !20, !range !25, !noundef !26
  %93 = trunc i8 %92 to i1
  br i1 %93, label %105, label %94

94:                                               ; preds = %89
  %95 = load i8, ptr %11, align 1, !tbaa !20, !range !25, !noundef !26
  %96 = trunc i8 %95 to i1
  br i1 %96, label %97, label %105

97:                                               ; preds = %94
  %98 = load ptr, ptr %12, align 8, !tbaa !5
  %99 = icmp eq ptr %98, null
  br i1 %99, label %101, label %100

100:                                              ; preds = %97
  call void @_ZN7fastjet5atlas3JetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %98) #11
  call void @_ZdlPvm(ptr noundef %98, i64 noundef 64) #12
  br label %101

101:                                              ; preds = %100, %97
  %102 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 14
  %103 = load i32, ptr %102, align 4, !tbaa !27
  %104 = add nsw i32 %103, 1
  store i32 %104, ptr %102, align 4, !tbaa !27
  br label %105

105:                                              ; preds = %101, %94, %89
  %106 = load i32, ptr %13, align 4, !tbaa !22
  %107 = add nsw i32 %106, 1
  store i32 %107, ptr %13, align 4, !tbaa !22
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  br label %108

108:                                              ; preds = %105
  %109 = load i8, ptr %10, align 1, !tbaa !20, !range !25, !noundef !26
  %110 = trunc i8 %109 to i1
  br i1 %110, label %117, label %111

111:                                              ; preds = %108
  %112 = load i8, ptr %11, align 1, !tbaa !20, !range !25, !noundef !26
  %113 = trunc i8 %112 to i1
  br i1 %113, label %114, label %117

114:                                              ; preds = %111
  %115 = load i32, ptr %13, align 4, !tbaa !22
  %116 = icmp slt i32 %115, 10
  br label %117

117:                                              ; preds = %114, %111, %108
  %118 = phi i1 [ false, %111 ], [ false, %108 ], [ %116, %114 ]
  br i1 %118, label %56, label %119, !llvm.loop !28

119:                                              ; preds = %117
  %120 = load i32, ptr %13, align 4, !tbaa !22
  %121 = icmp sgt i32 %120, 9
  br i1 %121, label %122, label %129

122:                                              ; preds = %119
  %123 = load i8, ptr %10, align 1, !tbaa !20, !range !25, !noundef !26
  %124 = trunc i8 %123 to i1
  br i1 %124, label %129, label %125

125:                                              ; preds = %122
  %126 = load i8, ptr %11, align 1, !tbaa !20, !range !25, !noundef !26
  %127 = trunc i8 %126 to i1
  br i1 %127, label %128, label %129

128:                                              ; preds = %125
  store i32 4, ptr %7, align 4
  br label %201

129:                                              ; preds = %125, %122, %119
  %130 = load i8, ptr %10, align 1, !tbaa !20, !range !25, !noundef !26
  %131 = trunc i8 %130 to i1
  br i1 %131, label %132, label %192

132:                                              ; preds = %129
  %133 = load i8, ptr %11, align 1, !tbaa !20, !range !25, !noundef !26
  %134 = trunc i8 %133 to i1
  br i1 %134, label %135, label %192

135:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #11
  %136 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 9
  %137 = load ptr, ptr %136, align 8, !tbaa !9
  %138 = call ptr @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %137) #11
  %139 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %18, i32 0, i32 0
  store ptr %138, ptr %139, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  %140 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 9
  %141 = load ptr, ptr %140, align 8, !tbaa !9
  %142 = call ptr @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %141) #11
  %143 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %19, i32 0, i32 0
  store ptr %142, ptr %143, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #11
  store i8 1, ptr %20, align 1, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #11
  %144 = load ptr, ptr %12, align 8, !tbaa !5
  %145 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3etaEv(ptr noundef nonnull align 8 dereferenceable(32) %144)
  store double %145, ptr %21, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %146 = load ptr, ptr %12, align 8, !tbaa !5
  %147 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3phiEv(ptr noundef nonnull align 8 dereferenceable(32) %146)
  store double %147, ptr %22, align 8, !tbaa !18
  br label %148

148:                                              ; preds = %175, %135
  %149 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  br i1 %149, label %150, label %177

150:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #11
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #11
  %152 = load ptr, ptr %151, align 8, !tbaa !5
  %153 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3etaEv(ptr noundef nonnull align 8 dereferenceable(32) %152)
  store double %153, ptr %23, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #11
  %155 = load ptr, ptr %154, align 8, !tbaa !5
  %156 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3phiEv(ptr noundef nonnull align 8 dereferenceable(32) %155)
  store double %156, ptr %24, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #11
  %157 = load double, ptr %21, align 8, !tbaa !18
  %158 = load double, ptr %23, align 8, !tbaa !18
  %159 = fsub double %157, %158
  %160 = call double @llvm.fabs.f64(double %159)
  store double %160, ptr %25, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  %161 = load double, ptr %22, align 8, !tbaa !18
  %162 = load double, ptr %24, align 8, !tbaa !18
  %163 = call noundef double @_ZN7fastjet5atlas12JetDistances8deltaPhiEdd(double noundef %161, double noundef %162)
  %164 = call double @llvm.fabs.f64(double %163)
  store double %164, ptr %26, align 8, !tbaa !18
  %165 = load double, ptr %25, align 8, !tbaa !18
  %166 = fcmp olt double %165, 5.000000e-02
  br i1 %166, label %167, label %171

167:                                              ; preds = %150
  %168 = load double, ptr %26, align 8, !tbaa !18
  %169 = fcmp olt double %168, 5.000000e-02
  br i1 %169, label %170, label %171

170:                                              ; preds = %167
  store i8 0, ptr %20, align 1, !tbaa !20
  store i32 7, ptr %7, align 4
  br label %172

171:                                              ; preds = %167, %150
  store i32 0, ptr %7, align 4
  br label %172

172:                                              ; preds = %171, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  %173 = load i32, ptr %7, align 4
  switch i32 %173, label %208 [
    i32 0, label %174
    i32 7, label %177
  ]

174:                                              ; preds = %172
  br label %175

175:                                              ; preds = %174
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #11
  br label %148, !llvm.loop !30

177:                                              ; preds = %172, %148
  %178 = load i8, ptr %20, align 1, !tbaa !20, !range !25, !noundef !26
  %179 = trunc i8 %178 to i1
  br i1 %179, label %180, label %183

180:                                              ; preds = %177
  %181 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 9
  %182 = load ptr, ptr %181, align 8, !tbaa !9
  call void @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %182, ptr noundef nonnull align 8 dereferenceable(8) %12)
  br label %191

183:                                              ; preds = %177
  %184 = load ptr, ptr %12, align 8, !tbaa !5
  %185 = icmp eq ptr %184, null
  br i1 %185, label %187, label %186

186:                                              ; preds = %183
  call void @_ZN7fastjet5atlas3JetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %184) #11
  call void @_ZdlPvm(ptr noundef %184, i64 noundef 64) #12
  br label %187

187:                                              ; preds = %186, %183
  %188 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 14
  %189 = load i32, ptr %188, align 4, !tbaa !27
  %190 = add nsw i32 %189, 1
  store i32 %190, ptr %188, align 4, !tbaa !27
  br label %191

191:                                              ; preds = %187, %180
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #11
  br label %200

192:                                              ; preds = %132, %129
  %193 = load ptr, ptr %12, align 8, !tbaa !5
  %194 = icmp eq ptr %193, null
  br i1 %194, label %196, label %195

195:                                              ; preds = %192
  call void @_ZN7fastjet5atlas3JetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %193) #11
  call void @_ZdlPvm(ptr noundef %193, i64 noundef 64) #12
  br label %196

196:                                              ; preds = %195, %192
  %197 = getelementptr inbounds %"class.fastjet::atlas::JetConeFinderTool", ptr %27, i32 0, i32 14
  %198 = load i32, ptr %197, align 4, !tbaa !27
  %199 = add nsw i32 %198, 1
  store i32 %199, ptr %197, align 4, !tbaa !27
  br label %200

200:                                              ; preds = %196, %191
  store i32 0, ptr %7, align 4
  br label %201

201:                                              ; preds = %200, %128
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #11
  br label %202

202:                                              ; preds = %201, %48
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #11
  %203 = load i32, ptr %7, align 4
  switch i32 %203, label %208 [
    i32 0, label %204
    i32 2, label %207
    i32 4, label %205
  ]

204:                                              ; preds = %202
  br label %205

205:                                              ; preds = %204, %202
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #11
  br label %38, !llvm.loop !31

207:                                              ; preds = %202, %38
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #11
  ret void

208:                                              ; preds = %202, %172
  unreachable
}

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK7fastjet5atlas13LorentzVector2etEv(ptr noundef nonnull align 8 dereferenceable(32)) #8 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN7fastjet5atlas12JetDistances8deltaPhiEdd(double noundef, double noundef) #8 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7fastjet5atlas3JetD2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #4 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 120}
!10 = !{!"_ZTSN7fastjet5atlas17JetConeFinderToolE", !11, i64 8, !11, i64 40, !14, i64 72, !14, i64 80, !14, i64 88, !14, i64 96, !14, i64 104, !6, i64 112, !6, i64 120, !15, i64 128, !6, i64 136, !6, i64 144, !15, i64 152, !15, i64 156}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !12, i64 0, !13, i64 8, !7, i64 16}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!"int", !7, i64 0}
!16 = !{!10, !6, i64 112}
!17 = !{i64 0, i64 8, !5}
!18 = !{!14, !14, i64 0}
!19 = !{!10, !14, i64 96}
!20 = !{!21, !21, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{!15, !15, i64 0}
!23 = !{!10, !14, i64 88}
!24 = !{!10, !14, i64 104}
!25 = !{i8 0, i8 2}
!26 = !{}
!27 = !{!10, !15, i64 156}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = distinct !{!31, !29}


; 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.__gnu_cxx::__normal_iterator" = type { ptr }

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7fastjet5atlas17JetConeFinderTool11reconstructEv(ptr noundef nonnull align 8 dereferenceable(160) %0) local_unnamed_addr #1 align 2 {
  %2 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %3 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %7 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #9
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(24) %7, i8 0, i64 24, i1 false)
  tail call void @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #10
  %8 = getelementptr inbounds i8, ptr %0, i64 120
  store ptr %7, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #10
  call void @_ZN9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) #10
  %9 = getelementptr inbounds i8, ptr %0, i64 112
  %10 = load ptr, ptr %9, align 8, !tbaa !15
  %11 = call ptr @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #10
  %12 = load ptr, ptr %9, align 8, !tbaa !15
  %13 = call ptr @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %12) #10
  store ptr %13, ptr %3, align 8
  store ptr %11, ptr %2, align 8, !tbaa !16
  %14 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #10
  br i1 %14, label %.lr.ph67, label %.thread57

.lr.ph67:                                         ; preds = %1
  %15 = getelementptr inbounds i8, ptr %0, i64 96
  %16 = getelementptr inbounds i8, ptr %0, i64 88
  %17 = getelementptr inbounds i8, ptr %0, i64 104
  %18 = getelementptr inbounds i8, ptr %0, i64 156
  br label %19

19:                                               ; preds = %.lr.ph67, %.thread
  %20 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #10
  %21 = load ptr, ptr %20, align 8, !tbaa !16
  %22 = call noundef double @_ZNK7fastjet5atlas13LorentzVector2etEv(ptr noundef nonnull align 8 dereferenceable(32) %21)
  %23 = load double, ptr %15, align 8, !tbaa !17
  %24 = fcmp olt double %22, %23
  br i1 %24, label %.thread57, label %25

25:                                               ; preds = %19
  %26 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #10
  %27 = load ptr, ptr %26, align 8, !tbaa !16
  %28 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3etaEv(ptr noundef nonnull align 8 dereferenceable(32) %27)
  %29 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #10
  %30 = load ptr, ptr %29, align 8, !tbaa !16
  %31 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3phiEv(ptr noundef nonnull align 8 dereferenceable(32) %30)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  br label %32

32:                                               ; preds = %53, %25
  %.041 = phi i32 [ 1, %25 ], [ %56, %53 ]
  %.039 = phi i8 [ 1, %25 ], [ %.140, %53 ]
  %.036 = phi double [ %31, %25 ], [ %36, %53 ]
  %.035 = phi double [ %28, %25 ], [ %34, %53 ]
  %33 = call noundef ptr @_ZN7fastjet5atlas17JetConeFinderTool9calc_coneEdd(ptr noundef nonnull align 8 dereferenceable(160) %0, double noundef %.035, double noundef %.036)
  store ptr %33, ptr %4, align 8, !tbaa !16
  %34 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3etaEv(ptr noundef nonnull align 8 dereferenceable(32) %33)
  %35 = load ptr, ptr %4, align 8, !tbaa !16
  %36 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3phiEv(ptr noundef nonnull align 8 dereferenceable(32) %35)
  %37 = fsub double %.035, %34
  %38 = call double @llvm.fabs.f64(double %37)
  %39 = call noundef double @_ZN7fastjet5atlas12JetDistances8deltaPhiEdd(double noundef %.036, double noundef %36)
  %40 = load double, ptr %16, align 8, !tbaa !18
  %41 = fcmp olt double %38, %40
  %42 = call double @llvm.fabs.f64(double %39)
  %43 = fcmp olt double %42, %40
  %or.cond51 = and i1 %41, %43
  %44 = call double @llvm.fabs.f64(double %34)
  %45 = load double, ptr %17, align 8, !tbaa !19
  %46 = fcmp ogt double %44, %45
  %.140 = select i1 %46, i8 0, i8 %.039
  %47 = trunc nuw i8 %.140 to i1
  br i1 %or.cond51, label %57, label %48

48:                                               ; preds = %32
  br i1 %47, label %49, label %.thread56

49:                                               ; preds = %48
  %50 = load ptr, ptr %4, align 8, !tbaa !16
  %51 = icmp eq ptr %50, null
  br i1 %51, label %53, label %52

52:                                               ; preds = %49
  call void @_ZN7fastjet5atlas3JetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %50) #10
  call void @_ZdlPvm(ptr noundef nonnull %50, i64 noundef 64) #11
  br label %53

53:                                               ; preds = %49, %52
  %54 = load i32, ptr %18, align 4, !tbaa !20
  %55 = add nsw i32 %54, 1
  store i32 %55, ptr %18, align 4, !tbaa !20
  %56 = add nuw nsw i32 %.041, 1
  %exitcond.not = icmp eq i32 %56, 10
  br i1 %exitcond.not, label %.thread, label %32, !llvm.loop !21

57:                                               ; preds = %32
  br i1 %47, label %58, label %.thread56

58:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  %60 = call ptr @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #10
  store ptr %60, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  %61 = load ptr, ptr %8, align 8, !tbaa !5
  %62 = call ptr @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #10
  store ptr %62, ptr %6, align 8
  %63 = load ptr, ptr %4, align 8, !tbaa !16
  %64 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3etaEv(ptr noundef nonnull align 8 dereferenceable(32) %63)
  %65 = load ptr, ptr %4, align 8, !tbaa !16
  %66 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3phiEv(ptr noundef nonnull align 8 dereferenceable(32) %65)
  %67 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  br i1 %67, label %.lr.ph, label %.critedge62

.lr.ph:                                           ; preds = %58, %80
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  %69 = load ptr, ptr %68, align 8, !tbaa !16
  %70 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3etaEv(ptr noundef nonnull align 8 dereferenceable(32) %69)
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  %72 = load ptr, ptr %71, align 8, !tbaa !16
  %73 = call noundef double @_ZNK7fastjet5atlas13LorentzVector3phiEv(ptr noundef nonnull align 8 dereferenceable(32) %72)
  %74 = fsub double %64, %70
  %75 = call double @llvm.fabs.f64(double %74)
  %76 = call noundef double @_ZN7fastjet5atlas12JetDistances8deltaPhiEdd(double noundef %66, double noundef %73)
  %77 = call double @llvm.fabs.f64(double %76)
  %78 = fcmp olt double %75, 5.000000e-02
  %79 = fcmp olt double %77, 5.000000e-02
  %or.cond = and i1 %78, %79
  br i1 %or.cond, label %84, label %80

80:                                               ; preds = %.lr.ph
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #10
  %82 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #10
  br i1 %82, label %.lr.ph, label %.critedge62, !llvm.loop !23

.critedge62:                                      ; preds = %80, %58
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZNSt6vectorIPN7fastjet5atlas3JetESaIS3_EE9push_backERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 8 dereferenceable(8) %4)
  br label %91

84:                                               ; preds = %.lr.ph
  %85 = load ptr, ptr %4, align 8, !tbaa !16
  %86 = icmp eq ptr %85, null
  br i1 %86, label %88, label %87

87:                                               ; preds = %84
  call void @_ZN7fastjet5atlas3JetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %85) #10
  call void @_ZdlPvm(ptr noundef nonnull %85, i64 noundef 64) #11
  br label %88

88:                                               ; preds = %87, %84
  %89 = load i32, ptr %18, align 4, !tbaa !20
  %90 = add nsw i32 %89, 1
  store i32 %90, ptr %18, align 4, !tbaa !20
  br label %91

91:                                               ; preds = %88, %.critedge62
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  br label %.thread

.thread56:                                        ; preds = %48, %57
  %92 = load ptr, ptr %4, align 8, !tbaa !16
  %93 = icmp eq ptr %92, null
  br i1 %93, label %95, label %94

94:                                               ; preds = %.thread56
  call void @_ZN7fastjet5atlas3JetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %92) #10
  call void @_ZdlPvm(ptr noundef nonnull %92, i64 noundef 64) #11
  br label %95

95:                                               ; preds = %94, %.thread56
  %96 = load i32, ptr %18, align 4, !tbaa !20
  %97 = add nsw i32 %96, 1
  store i32 %97, ptr %18, align 4, !tbaa !20
  br label %.thread

.thread:                                          ; preds = %53, %91, %95
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  %98 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %2) #10
  %99 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #10
  br i1 %99, label %19, label %.thread57, !llvm.loop !24

.thread57:                                        ; preds = %.thread, %19, %1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #10
  ret void
}

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPPN7fastjet5atlas3JetESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK7fastjet5atlas13LorentzVector2etEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZN7fastjet5atlas12JetDistances8deltaPhiEdd(double noundef, double noundef) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN7fastjet5atlas3JetD2Ev(ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #4 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !9, i64 120}
!6 = !{!"_ZTSN7fastjet5atlas17JetConeFinderToolE", !7, i64 8, !7, i64 40, !13, i64 72, !13, i64 80, !13, i64 88, !13, i64 96, !13, i64 104, !9, i64 112, !9, i64 120, !14, i64 128, !9, i64 136, !9, i64 144, !14, i64 152, !14, i64 156}
!7 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !8, i64 0, !12, i64 8, !10, i64 16}
!8 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !9, i64 0}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"long", !10, i64 0}
!13 = !{!"double", !10, i64 0}
!14 = !{!"int", !10, i64 0}
!15 = !{!6, !9, i64 112}
!16 = !{!9, !9, i64 0}
!17 = !{!6, !13, i64 96}
!18 = !{!6, !13, i64 88}
!19 = !{!6, !13, i64 104}
!20 = !{!6, !14, i64 156}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = distinct !{!24, !22}


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