; LLVM IR from mickypaganini/SSI2016-jet-clustering :: spartyjet-4.0.2_mac/External/fastjet-3.0.0/plugins/SISCone/siscone/siscone/are_4587db92 (13419b17)

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

%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<siscone::Cmomentum, std::allocator<siscone::Cmomentum>>::_Vector_impl" }
%"struct.std::_Vector_base<siscone::Cmomentum, std::allocator<siscone::Cmomentum>>::_Vector_impl" = type { %"struct.std::_Vector_base<siscone::Cmomentum, std::allocator<siscone::Cmomentum>>::_Vector_impl_data" }
%"struct.std::_Vector_base<siscone::Cmomentum, std::allocator<siscone::Cmomentum>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.siscone::Cmomentum" = type <{ double, double, double, double, double, double, i32, i32, %"class.siscone::Creference", [4 x i8] }>
%"class.siscone::Creference" = type { [3 x i32] }
%"class.siscone::Cjet_area" = type { %"class.siscone::Cjet.base", double, double }
%"class.siscone::Cjet.base" = type <{ %"class.siscone::Cmomentum", double, i32, [4 x i8], %"class.std::vector", double, %"class.siscone::Ceta_phi_range", i32 }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.siscone::Ceta_phi_range" = type { i32, i32 }
%"class.siscone::Carea" = type { %"class.siscone::Csiscone.base", i32, double, double, double, double, double, %"class.std::vector.40" }
%"class.siscone::Csiscone.base" = type <{ %"class.siscone::Cstable_cones", %"class.siscone::Csplit_merge.base", [7 x i8], %"class.std::vector.35", i8 }>
%"class.siscone::Cstable_cones" = type { %"class.siscone::Cvicinity", %"class.std::vector.0", ptr, i32, double, double, %"class.siscone::Cmomentum", ptr, ptr, i32, i32, %"class.siscone::Cmomentum", %"class.std::vector.15", %"class.std::vector.20", double }
%"class.siscone::Cvicinity" = type { ptr, double, double, double, double, double, double, i32, %"class.std::vector.0", %"class.std::vector.5", ptr, %"class.std::vector.10", i32, double, double }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<siscone::Cvicinity_inclusion, std::allocator<siscone::Cvicinity_inclusion>>::_Vector_impl" }
%"struct.std::_Vector_base<siscone::Cvicinity_inclusion, std::allocator<siscone::Cvicinity_inclusion>>::_Vector_impl" = type { %"struct.std::_Vector_base<siscone::Cvicinity_inclusion, std::allocator<siscone::Cvicinity_inclusion>>::_Vector_impl_data" }
%"struct.std::_Vector_base<siscone::Cvicinity_inclusion, std::allocator<siscone::Cvicinity_inclusion>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<siscone::Cvicinity_elm *, std::allocator<siscone::Cvicinity_elm *>>::_Vector_impl" }
%"struct.std::_Vector_base<siscone::Cvicinity_elm *, std::allocator<siscone::Cvicinity_elm *>>::_Vector_impl" = type { %"struct.std::_Vector_base<siscone::Cvicinity_elm *, std::allocator<siscone::Cvicinity_elm *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<siscone::Cvicinity_elm *, std::allocator<siscone::Cvicinity_elm *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<siscone::Cmomentum *, std::allocator<siscone::Cmomentum *>>::_Vector_impl" }
%"struct.std::_Vector_base<siscone::Cmomentum *, std::allocator<siscone::Cmomentum *>>::_Vector_impl" = type { %"struct.std::_Vector_base<siscone::Cmomentum *, std::allocator<siscone::Cmomentum *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<siscone::Cmomentum *, std::allocator<siscone::Cmomentum *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<std::pair<siscone::Creference, siscone::Creference>, std::allocator<std::pair<siscone::Creference, siscone::Creference>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<siscone::Creference, siscone::Creference>, std::allocator<std::pair<siscone::Creference, siscone::Creference>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<siscone::Creference, siscone::Creference>, std::allocator<std::pair<siscone::Creference, siscone::Creference>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<siscone::Creference, siscone::Creference>, std::allocator<std::pair<siscone::Creference, siscone::Creference>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.siscone::Csplit_merge.base" = type <{ i32, [4 x i8], %"class.std::vector.0", %"class.std::vector.25", i32, [4 x i8], %"class.std::vector.0", %"class.std::vector.0", i32, [4 x i8], double, %"class.std::vector.30", ptr, i32, i8, [3 x i8], %"class.siscone::Csplit_merge_ptcomparison", double, double, %"class.std::auto_ptr", double, i8 }>
%"class.std::vector.25" = type { %"struct.std::_Vector_base.26" }
%"struct.std::_Vector_base.26" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.30" = type { %"struct.std::_Vector_base.31" }
%"struct.std::_Vector_base.31" = type { %"struct.std::_Vector_base<siscone::Cjet, std::allocator<siscone::Cjet>>::_Vector_impl" }
%"struct.std::_Vector_base<siscone::Cjet, std::allocator<siscone::Cjet>>::_Vector_impl" = type { %"struct.std::_Vector_base<siscone::Cjet, std::allocator<siscone::Cjet>>::_Vector_impl_data" }
%"struct.std::_Vector_base<siscone::Cjet, std::allocator<siscone::Cjet>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.siscone::Csplit_merge_ptcomparison" = type <{ ptr, ptr, i32, [4 x i8] }>
%"class.std::auto_ptr" = type { ptr }
%"class.std::vector.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = type { %"struct.std::_Vector_base<std::vector<siscone::Cmomentum>, std::allocator<std::vector<siscone::Cmomentum>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<siscone::Cmomentum>, std::allocator<std::vector<siscone::Cmomentum>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<siscone::Cmomentum>, std::allocator<std::vector<siscone::Cmomentum>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<siscone::Cmomentum>, std::allocator<std::vector<siscone::Cmomentum>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<siscone::Cjet_area, std::allocator<siscone::Cjet_area>>::_Vector_impl" }
%"struct.std::_Vector_base<siscone::Cjet_area, std::allocator<siscone::Cjet_area>>::_Vector_impl" = type { %"struct.std::_Vector_base<siscone::Cjet_area, std::allocator<siscone::Cjet_area>>::_Vector_impl_data" }
%"struct.std::_Vector_base<siscone::Cjet_area, std::allocator<siscone::Cjet_area>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.siscone::Csplit_merge" = type <{ i32, [4 x i8], %"class.std::vector.0", %"class.std::vector.25", i32, [4 x i8], %"class.std::vector.0", %"class.std::vector.0", i32, [4 x i8], double, %"class.std::vector.30", ptr, i32, i8, [3 x i8], %"class.siscone::Csplit_merge_ptcomparison", double, double, %"class.std::auto_ptr", double, i8, [7 x i8] }>
%"class.siscone::Cjet" = type <{ %"class.siscone::Cmomentum", double, i32, [4 x i8], %"class.std::vector", double, %"class.siscone::Ceta_phi_range", i32, [4 x i8] }>

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: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

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

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

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

; Function Attrs: nounwind
declare i32 @rand() #3

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

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

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

; Function Attrs: nounwind
declare double @sin(double noundef) #3

; Function Attrs: nounwind
declare double @sinh(double noundef) #3

; Function Attrs: nounwind
declare double @cosh(double noundef) #3

declare void @_ZN7siscone9CmomentumC1Edddd(ptr noundef nonnull align 8 dereferenceable(68), double noundef, double noundef, double noundef, double noundef) unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZN7siscone9CmomentumD1Ev(ptr noundef nonnull align 8 dereferenceable(68)) unnamed_addr #3

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

declare noundef i32 @_ZN7siscone8Csiscone12compute_jetsERSt6vectorINS_9CmomentumESaIS2_EEddidNS_18Esplit_merge_scaleE(ptr noundef nonnull align 8 dereferenceable(705), ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, i32 noundef, double noundef, i32 noundef) #5

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7siscone5Carea20compute_active_areasERSt6vectorINS_9CmomentumESaIS2_EEddiNS_18Esplit_merge_scaleEb(ptr noundef nonnull align 8 dereferenceable(776) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, double noundef %2, double noundef %3, i32 noundef %4, i32 noundef %5, i1 noundef zeroext %6) #2 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i8, align 1
  %15 = alloca %"class.std::vector.0", align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca %"class.siscone::Cmomentum", align 8
  %25 = alloca i32, align 4
  %26 = alloca double, align 8
  %27 = alloca %"class.siscone::Cjet_area", align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store double %2, ptr %10, align 8, !tbaa !9
  store double %3, ptr %11, align 8, !tbaa !9
  store i32 %4, ptr %12, align 4, !tbaa !11
  store i32 %5, ptr %13, align 4, !tbaa !13
  %28 = zext i1 %6 to i8
  store i8 %28, ptr %14, align 1, !tbaa !15
  %29 = load ptr, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #6
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  %30 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %31 = trunc i8 %30 to i1
  br i1 %31, label %32, label %40

32:                                               ; preds = %7
  %33 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 6
  %34 = load double, ptr %33, align 8, !tbaa !19
  %35 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 6
  %36 = load double, ptr %35, align 8, !tbaa !19
  %37 = fmul double %34, %36
  %38 = getelementptr inbounds i8, ptr %29, i64 448
  %39 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %38, i32 0, i32 17
  store double %37, ptr %39, align 8, !tbaa !65
  br label %40

40:                                               ; preds = %32, %7
  %41 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 7
  call void @_ZNSt6vectorIN7siscone9Cjet_areaESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %41) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %42 = load ptr, ptr %9, align 8, !tbaa !5
  %43 = call noundef i64 @_ZNKSt6vectorIN7siscone9CmomentumESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %42) #6
  %44 = trunc i64 %43 to i32
  store i32 %44, ptr %16, align 4, !tbaa !11
  %45 = load ptr, ptr %9, align 8, !tbaa !5
  %46 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %45)
          to label %47 unwind label %127

47:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  store i32 0, ptr %19, align 4, !tbaa !11
  br label %48

48:                                               ; preds = %141, %47
  %49 = load i32, ptr %19, align 4, !tbaa !11
  %50 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 1
  %51 = load i32, ptr %50, align 4, !tbaa !66
  %52 = icmp slt i32 %49, %51
  br i1 %52, label %53, label %144

53:                                               ; preds = %48
  store i32 0, ptr %20, align 4, !tbaa !11
  br label %54

54:                                               ; preds = %124, %53
  %55 = load i32, ptr %20, align 4, !tbaa !11
  %56 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 1
  %57 = load i32, ptr %56, align 4, !tbaa !66
  %58 = icmp slt i32 %55, %57
  br i1 %58, label %59, label %140

59:                                               ; preds = %54
  %60 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 2
  %61 = load double, ptr %60, align 8, !tbaa !67
  %62 = load i32, ptr %19, align 4, !tbaa !11
  %63 = sitofp i32 %62 to double
  %64 = fadd double %63, 5.000000e-01
  %65 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 3
  %66 = load double, ptr %65, align 8, !tbaa !68
  %67 = call i32 @rand() #6
  %68 = sitofp i32 %67 to double
  %69 = fdiv double %68, 0x41E0000000000000
  %70 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %69, double -1.000000e+00)
  %71 = call double @llvm.fmuladd.f64(double %66, double %70, double %64)
  %72 = fmul double 2.000000e+00, %71
  %73 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 1
  %74 = load i32, ptr %73, align 4, !tbaa !66
  %75 = sitofp i32 %74 to double
  %76 = fdiv double %72, %75
  %77 = fadd double -1.000000e+00, %76
  %78 = fmul double %61, %77
  store double %78, ptr %21, align 8, !tbaa !9
  %79 = load i32, ptr %20, align 4, !tbaa !11
  %80 = sitofp i32 %79 to double
  %81 = fadd double %80, 5.000000e-01
  %82 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 3
  %83 = load double, ptr %82, align 8, !tbaa !68
  %84 = call i32 @rand() #6
  %85 = sitofp i32 %84 to double
  %86 = fdiv double %85, 0x41E0000000000000
  %87 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %86, double -1.000000e+00)
  %88 = call double @llvm.fmuladd.f64(double %83, double %87, double %81)
  %89 = fmul double 2.000000e+00, %88
  %90 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 1
  %91 = load i32, ptr %90, align 4, !tbaa !66
  %92 = sitofp i32 %91 to double
  %93 = fdiv double %89, %92
  %94 = fadd double -1.000000e+00, %93
  %95 = fmul double 0x400921FB54442D18, %94
  store double %95, ptr %22, align 8, !tbaa !9
  %96 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 4
  %97 = load double, ptr %96, align 8, !tbaa !69
  %98 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 5
  %99 = load double, ptr %98, align 8, !tbaa !70
  %100 = call i32 @rand() #6
  %101 = sitofp i32 %100 to double
  %102 = fdiv double %101, 0x41E0000000000000
  %103 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %102, double -1.000000e+00)
  %104 = call double @llvm.fmuladd.f64(double %99, double %103, double 1.000000e+00)
  %105 = fmul double %97, %104
  store double %105, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 72, ptr %24) #6
  %106 = load double, ptr %23, align 8, !tbaa !9
  %107 = load double, ptr %22, align 8, !tbaa !9
  %108 = call double @cos(double noundef %107) #6
  %109 = fmul double %106, %108
  %110 = load double, ptr %23, align 8, !tbaa !9
  %111 = load double, ptr %22, align 8, !tbaa !9
  %112 = call double @sin(double noundef %111) #6
  %113 = fmul double %110, %112
  %114 = load double, ptr %23, align 8, !tbaa !9
  %115 = load double, ptr %21, align 8, !tbaa !9
  %116 = call double @sinh(double noundef %115) #6
  %117 = fmul double %114, %116
  %118 = load double, ptr %23, align 8, !tbaa !9
  %119 = load double, ptr %21, align 8, !tbaa !9
  %120 = call double @cosh(double noundef %119) #6
  %121 = fmul double %118, %120
  invoke void @_ZN7siscone9CmomentumC1Edddd(ptr noundef nonnull align 8 dereferenceable(68) %24, double noundef %109, double noundef %113, double noundef %117, double noundef %121)
          to label %122 unwind label %131

122:                                              ; preds = %59
  invoke void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(68) %24)
          to label %123 unwind label %135

123:                                              ; preds = %122
  call void @_ZN7siscone9CmomentumD1Ev(ptr noundef nonnull align 8 dereferenceable(68) %24) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr %24) #6
  br label %124

124:                                              ; preds = %123
  %125 = load i32, ptr %20, align 4, !tbaa !11
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr %20, align 4, !tbaa !11
  br label %54, !llvm.loop !71

127:                                              ; preds = %40
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %17, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %18, align 4
  br label %247

131:                                              ; preds = %59
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %17, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %18, align 4
  br label %139

135:                                              ; preds = %122
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %17, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %18, align 4
  call void @_ZN7siscone9CmomentumD1Ev(ptr noundef nonnull align 8 dereferenceable(68) %24) #6
  br label %139

139:                                              ; preds = %135, %131
  call void @llvm.lifetime.end.p0(i64 72, ptr %24) #6
  br label %246

140:                                              ; preds = %54
  br label %141

141:                                              ; preds = %140
  %142 = load i32, ptr %19, align 4, !tbaa !11
  %143 = add nsw i32 %142, 1
  store i32 %143, ptr %19, align 4, !tbaa !11
  br label %48, !llvm.loop !73

144:                                              ; preds = %48
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %145 = load double, ptr %10, align 8, !tbaa !9
  %146 = load double, ptr %11, align 8, !tbaa !9
  %147 = load i32, ptr %12, align 4, !tbaa !11
  %148 = load i32, ptr %13, align 4, !tbaa !13
  %149 = invoke noundef i32 @_ZN7siscone8Csiscone12compute_jetsERSt6vectorINS_9CmomentumESaIS2_EEddidNS_18Esplit_merge_scaleE(ptr noundef nonnull align 8 dereferenceable(705) %29, ptr noundef nonnull align 8 dereferenceable(24) %15, double noundef %145, double noundef %146, i32 noundef %147, double noundef 0.000000e+00, i32 noundef %148)
          to label %150 unwind label %207

150:                                              ; preds = %144
  store i32 %149, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %151 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 2
  %152 = load double, ptr %151, align 8, !tbaa !67
  %153 = fmul double 2.000000e+00, %152
  %154 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 1
  %155 = load i32, ptr %154, align 4, !tbaa !66
  %156 = sitofp i32 %155 to double
  %157 = fdiv double %153, %156
  %158 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 1
  %159 = load i32, ptr %158, align 4, !tbaa !66
  %160 = sitofp i32 %159 to double
  %161 = fdiv double 0x401921FB54442D18, %160
  %162 = fmul double %157, %161
  store double %162, ptr %26, align 8, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !11
  br label %163

163:                                              ; preds = %238, %150
  %164 = load i32, ptr %19, align 4, !tbaa !11
  %165 = getelementptr inbounds i8, ptr %29, i64 448
  %166 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %165, i32 0, i32 11
  %167 = call noundef i64 @_ZNKSt6vectorIN7siscone4CjetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %166) #6
  %168 = trunc i64 %167 to i32
  %169 = icmp slt i32 %164, %168
  br i1 %169, label %170, label %241

170:                                              ; preds = %163
  %171 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 7
  call void @llvm.lifetime.start.p0(i64 152, ptr %27) #6
  %172 = getelementptr inbounds i8, ptr %29, i64 448
  %173 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %172, i32 0, i32 11
  %174 = load i32, ptr %19, align 4, !tbaa !11
  %175 = sext i32 %174 to i64
  %176 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %173, i64 noundef %175) #6
  invoke void @_ZN7siscone9Cjet_areaC1ERNS_4CjetE(ptr noundef nonnull align 8 dereferenceable(152) %27, ptr noundef nonnull align 8 dereferenceable(132) %176)
          to label %177 unwind label %211

177:                                              ; preds = %170
  invoke void @_ZNSt6vectorIN7siscone9Cjet_areaESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %171, ptr noundef nonnull align 8 dereferenceable(152) %27)
          to label %178 unwind label %215

178:                                              ; preds = %177
  call void @_ZN7siscone9Cjet_areaD1Ev(ptr noundef nonnull align 8 dereferenceable(152) %27) #6
  call void @llvm.lifetime.end.p0(i64 152, ptr %27) #6
  store i32 0, ptr %20, align 4, !tbaa !11
  br label %179

179:                                              ; preds = %204, %178
  %180 = load i32, ptr %20, align 4, !tbaa !11
  %181 = getelementptr inbounds i8, ptr %29, i64 448
  %182 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %181, i32 0, i32 11
  %183 = load i32, ptr %19, align 4, !tbaa !11
  %184 = sext i32 %183 to i64
  %185 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %182, i64 noundef %184) #6
  %186 = getelementptr inbounds %"class.siscone::Cjet", ptr %185, i32 0, i32 2
  %187 = load i32, ptr %186, align 8, !tbaa !74
  %188 = icmp slt i32 %180, %187
  br i1 %188, label %189, label %202

189:                                              ; preds = %179
  %190 = getelementptr inbounds i8, ptr %29, i64 448
  %191 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %190, i32 0, i32 11
  %192 = load i32, ptr %19, align 4, !tbaa !11
  %193 = sext i32 %192 to i64
  %194 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %191, i64 noundef %193) #6
  %195 = getelementptr inbounds %"class.siscone::Cjet", ptr %194, i32 0, i32 4
  %196 = load i32, ptr %20, align 4, !tbaa !11
  %197 = sext i32 %196 to i64
  %198 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %195, i64 noundef %197) #6
  %199 = load i32, ptr %198, align 4, !tbaa !11
  %200 = load i32, ptr %16, align 4, !tbaa !11
  %201 = icmp slt i32 %199, %200
  br label %202

202:                                              ; preds = %189, %179
  %203 = phi i1 [ false, %179 ], [ %201, %189 ]
  br i1 %203, label %204, label %220

204:                                              ; preds = %202
  %205 = load i32, ptr %20, align 4, !tbaa !11
  %206 = add nsw i32 %205, 1
  store i32 %206, ptr %20, align 4, !tbaa !11
  br label %179, !llvm.loop !81

207:                                              ; preds = %144
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %17, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %18, align 4
  br label %245

211:                                              ; preds = %170
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %17, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %18, align 4
  br label %219

215:                                              ; preds = %177
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %17, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %18, align 4
  call void @_ZN7siscone9Cjet_areaD1Ev(ptr noundef nonnull align 8 dereferenceable(152) %27) #6
  br label %219

219:                                              ; preds = %215, %211
  call void @llvm.lifetime.end.p0(i64 152, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br label %245

220:                                              ; preds = %202
  %221 = getelementptr inbounds i8, ptr %29, i64 448
  %222 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %221, i32 0, i32 11
  %223 = load i32, ptr %19, align 4, !tbaa !11
  %224 = sext i32 %223 to i64
  %225 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %222, i64 noundef %224) #6
  %226 = getelementptr inbounds %"class.siscone::Cjet", ptr %225, i32 0, i32 2
  %227 = load i32, ptr %226, align 8, !tbaa !74
  %228 = load i32, ptr %20, align 4, !tbaa !11
  %229 = sub nsw i32 %227, %228
  %230 = sitofp i32 %229 to double
  %231 = load double, ptr %26, align 8, !tbaa !9
  %232 = fmul double %230, %231
  %233 = getelementptr inbounds %"class.siscone::Carea", ptr %29, i32 0, i32 7
  %234 = load i32, ptr %19, align 4, !tbaa !11
  %235 = sext i32 %234 to i64
  %236 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN7siscone9Cjet_areaESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %233, i64 noundef %235) #6
  %237 = getelementptr inbounds %"class.siscone::Cjet_area", ptr %236, i32 0, i32 2
  store double %232, ptr %237, align 8, !tbaa !82
  br label %238

238:                                              ; preds = %220
  %239 = load i32, ptr %19, align 4, !tbaa !11
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %19, align 4, !tbaa !11
  br label %163, !llvm.loop !84

241:                                              ; preds = %163
  %242 = getelementptr inbounds i8, ptr %29, i64 448
  %243 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %242, i32 0, i32 11
  call void @_ZNSt6vectorIN7siscone4CjetESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %243) #6
  %244 = load i32, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #6
  ret i32 %244

245:                                              ; preds = %219, %207
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %246

246:                                              ; preds = %245, %139
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %247

247:                                              ; preds = %246, %127
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #6
  br label %248

248:                                              ; preds = %247
  %249 = load ptr, ptr %17, align 8
  %250 = load i32, ptr %18, align 4
  %251 = insertvalue { ptr, i32 } poison, ptr %249, 0
  %252 = insertvalue { ptr, i32 } %251, i32 %250, 1
  resume { ptr, i32 } %252
}

declare void @_ZN7siscone9Cjet_areaC1ERNS_4CjetE(ptr, ptr)

declare void @_ZN7siscone9Cjet_areaD1Ev(ptr)

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN7siscone18Esplit_merge_scaleE", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"bool", !7, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = !{!20, !10, i64 744}
!20 = !{!"_ZTSN7siscone5CareaE", !21, i64 0, !12, i64 708, !10, i64 712, !10, i64 720, !10, i64 728, !10, i64 736, !10, i64 744, !61, i64 752}
!21 = !{!"_ZTSN7siscone8CsisconeE", !22, i64 0, !46, i64 448, !57, i64 680, !16, i64 704}
!22 = !{!"_ZTSN7siscone13Cstable_conesE", !23, i64 0, !24, i64 168, !6, i64 192, !12, i64 200, !10, i64 208, !10, i64 216, !36, i64 224, !6, i64 296, !6, i64 304, !12, i64 312, !12, i64 316, !36, i64 320, !38, i64 392, !42, i64 416, !10, i64 440}
!23 = !{!"_ZTSN7siscone9CvicinityE", !6, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !12, i64 56, !24, i64 64, !28, i64 88, !6, i64 112, !32, i64 120, !12, i64 144, !10, i64 152, !10, i64 160}
!24 = !{!"_ZTSSt6vectorIN7siscone9CmomentumESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN7siscone9CmomentumESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN7siscone9CmomentumESaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN7siscone9CmomentumESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorIN7siscone19Cvicinity_inclusionESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIN7siscone19Cvicinity_inclusionESaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN7siscone19Cvicinity_inclusionESaIS1_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIN7siscone19Cvicinity_inclusionESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSSt6vectorIPN7siscone13Cvicinity_elmESaIS2_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIPN7siscone13Cvicinity_elmESaIS2_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIPN7siscone13Cvicinity_elmESaIS2_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIPN7siscone13Cvicinity_elmESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!"_ZTSN7siscone9CmomentumE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !12, i64 48, !12, i64 52, !37, i64 56}
!37 = !{!"_ZTSN7siscone10CreferenceE", !7, i64 0}
!38 = !{!"_ZTSSt6vectorIPN7siscone9CmomentumESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIPN7siscone9CmomentumESaIS2_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIPN7siscone9CmomentumESaIS2_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIPN7siscone9CmomentumESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTSSt6vectorISt4pairIN7siscone10CreferenceES2_ESaIS3_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseISt4pairIN7siscone10CreferenceES2_ESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseISt4pairIN7siscone10CreferenceES2_ESaIS3_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseISt4pairIN7siscone10CreferenceES2_ESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSN7siscone12Csplit_mergeE", !12, i64 0, !24, i64 8, !47, i64 32, !12, i64 56, !24, i64 64, !24, i64 88, !12, i64 112, !10, i64 120, !51, i64 128, !6, i64 152, !12, i64 160, !16, i64 164, !55, i64 168, !10, i64 192, !10, i64 200, !56, i64 208, !10, i64 216, !16, i64 224}
!47 = !{!"_ZTSSt6vectorIdSaIdEE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!"_ZTSSt6vectorIN7siscone4CjetESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIN7siscone4CjetESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN7siscone4CjetESaIS1_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN7siscone4CjetESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"_ZTSN7siscone25Csplit_merge_ptcomparisonE", !6, i64 0, !6, i64 8, !14, i64 16}
!56 = !{!"_ZTSSt8auto_ptrISt8multisetIN7siscone4CjetENS1_25Csplit_merge_ptcomparisonESaIS2_EEE", !6, i64 0}
!57 = !{!"_ZTSSt6vectorIS_IN7siscone9CmomentumESaIS1_EESaIS3_EE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseISt6vectorIN7siscone9CmomentumESaIS2_EESaIS4_EE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN7siscone9CmomentumESaIS2_EESaIS4_EE12_Vector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN7siscone9CmomentumESaIS2_EESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!61 = !{!"_ZTSSt6vectorIN7siscone9Cjet_areaESaIS1_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseIN7siscone9Cjet_areaESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN7siscone9Cjet_areaESaIS1_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIN7siscone9Cjet_areaESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!46, !10, i64 192}
!66 = !{!20, !12, i64 708}
!67 = !{!20, !10, i64 712}
!68 = !{!20, !10, i64 720}
!69 = !{!20, !10, i64 728}
!70 = !{!20, !10, i64 736}
!71 = distinct !{!71, !72}
!72 = !{!"llvm.loop.mustprogress"}
!73 = distinct !{!73, !72}
!74 = !{!75, !12, i64 80}
!75 = !{!"_ZTSN7siscone4CjetE", !36, i64 0, !10, i64 72, !12, i64 80, !76, i64 88, !10, i64 112, !80, i64 120, !12, i64 128}
!76 = !{!"_ZTSSt6vectorIiSaIiEE", !77, i64 0}
!77 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!80 = !{!"_ZTSN7siscone14Ceta_phi_rangeE", !12, i64 0, !12, i64 4}
!81 = distinct !{!81, !72}
!82 = !{!83, !10, i64 144}
!83 = !{!"_ZTSN7siscone9Cjet_areaE", !75, i64 0, !10, i64 136, !10, i64 144}
!84 = distinct !{!84, !72}


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

%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<siscone::Cmomentum, std::allocator<siscone::Cmomentum>>::_Vector_impl" }
%"struct.std::_Vector_base<siscone::Cmomentum, std::allocator<siscone::Cmomentum>>::_Vector_impl" = type { %"struct.std::_Vector_base<siscone::Cmomentum, std::allocator<siscone::Cmomentum>>::_Vector_impl_data" }
%"struct.std::_Vector_base<siscone::Cmomentum, std::allocator<siscone::Cmomentum>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.siscone::Cmomentum" = type <{ double, double, double, double, double, double, i32, i32, %"class.siscone::Creference", [4 x i8] }>
%"class.siscone::Creference" = type { [3 x i32] }
%"class.siscone::Cjet_area" = type { %"class.siscone::Cjet.base", double, double }
%"class.siscone::Cjet.base" = type <{ %"class.siscone::Cmomentum", double, i32, [4 x i8], %"class.std::vector", double, %"class.siscone::Ceta_phi_range", i32 }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.siscone::Ceta_phi_range" = type { i32, i32 }

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; Function Attrs: nounwind
declare i32 @rand() local_unnamed_addr #3

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

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

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

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

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

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

declare void @_ZN7siscone9CmomentumC1Edddd(ptr noundef nonnull align 8 dereferenceable(68), double noundef, double noundef, double noundef, double noundef) unnamed_addr #6

; Function Attrs: nounwind
declare void @_ZN7siscone9CmomentumD1Ev(ptr noundef nonnull align 8 dereferenceable(68)) unnamed_addr #3

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

declare noundef i32 @_ZN7siscone8Csiscone12compute_jetsERSt6vectorINS_9CmomentumESaIS2_EEddidNS_18Esplit_merge_scaleE(ptr noundef nonnull align 8 dereferenceable(705), ptr noundef nonnull align 8 dereferenceable(24), double noundef, double noundef, i32 noundef, double noundef, i32 noundef) local_unnamed_addr #6

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7siscone5Carea20compute_active_areasERSt6vectorINS_9CmomentumESaIS2_EEddiNS_18Esplit_merge_scaleEb(ptr noundef nonnull align 8 dereferenceable(776) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, double noundef %2, double noundef %3, i32 noundef %4, i32 noundef %5, i1 noundef zeroext %6) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"class.std::vector.0", align 8
  %9 = alloca %"class.siscone::Cmomentum", align 8
  %10 = alloca %"class.siscone::Cjet_area", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #7
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  br i1 %6, label %11, label %16

11:                                               ; preds = %7
  %12 = getelementptr inbounds i8, ptr %0, i64 744
  %13 = load double, ptr %12, align 8, !tbaa !5
  %14 = fmul double %13, %13
  %15 = getelementptr inbounds i8, ptr %0, i64 640
  store double %14, ptr %15, align 8, !tbaa !58
  br label %16

16:                                               ; preds = %11, %7
  %17 = getelementptr inbounds i8, ptr %0, i64 752
  call void @_ZNSt6vectorIN7siscone9Cjet_areaESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  %18 = call noundef i64 @_ZNKSt6vectorIN7siscone9CmomentumESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  %19 = trunc i64 %18 to i32
  %20 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %1)
          to label %.preheader52 unwind label %81

.preheader52:                                     ; preds = %16
  %21 = getelementptr inbounds i8, ptr %0, i64 708
  %22 = load i32, ptr %21, align 4, !tbaa !59
  %23 = icmp sgt i32 %22, 0
  br i1 %23, label %.preheader.preheader, label %._crit_edge60

.preheader.preheader:                             ; preds = %.preheader52
  %24 = getelementptr inbounds i8, ptr %0, i64 712
  %25 = getelementptr inbounds i8, ptr %0, i64 720
  %26 = getelementptr inbounds i8, ptr %0, i64 728
  %27 = getelementptr inbounds i8, ptr %0, i64 736
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %._crit_edge
  %28 = phi i32 [ %88, %._crit_edge ], [ %22, %.preheader.preheader ]
  %.04259 = phi i32 [ %89, %._crit_edge ], [ 0, %.preheader.preheader ]
  %29 = icmp sgt i32 %28, 0
  br i1 %29, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader
  %30 = uitofp nneg i32 %.04259 to double
  %31 = fadd double %30, 5.000000e-01
  br label %32

32:                                               ; preds = %.lr.ph, %77
  %.04458 = phi i32 [ 0, %.lr.ph ], [ %78, %77 ]
  %33 = load double, ptr %24, align 8, !tbaa !60
  %34 = load double, ptr %25, align 8, !tbaa !61
  %35 = call i32 @rand() #7
  %36 = sitofp i32 %35 to double
  %37 = fmul double %36, 0x3E00000000000000
  %38 = call double @llvm.fmuladd.f64(double %37, double 2.000000e+00, double -1.000000e+00)
  %39 = call double @llvm.fmuladd.f64(double %34, double %38, double %31)
  %40 = fmul double %39, 2.000000e+00
  %41 = load i32, ptr %21, align 4, !tbaa !59
  %42 = sitofp i32 %41 to double
  %43 = fdiv double %40, %42
  %44 = fadd double %43, -1.000000e+00
  %45 = fmul double %33, %44
  %46 = uitofp nneg i32 %.04458 to double
  %47 = fadd double %46, 5.000000e-01
  %48 = load double, ptr %25, align 8, !tbaa !61
  %49 = call i32 @rand() #7
  %50 = sitofp i32 %49 to double
  %51 = fmul double %50, 0x3E00000000000000
  %52 = call double @llvm.fmuladd.f64(double %51, double 2.000000e+00, double -1.000000e+00)
  %53 = call double @llvm.fmuladd.f64(double %48, double %52, double %47)
  %54 = fmul double %53, 2.000000e+00
  %55 = load i32, ptr %21, align 4, !tbaa !59
  %56 = sitofp i32 %55 to double
  %57 = fdiv double %54, %56
  %58 = fadd double %57, -1.000000e+00
  %59 = fmul double %58, 0x400921FB54442D18
  %60 = load double, ptr %26, align 8, !tbaa !62
  %61 = load double, ptr %27, align 8, !tbaa !63
  %62 = call i32 @rand() #7
  %63 = sitofp i32 %62 to double
  %64 = fmul double %63, 0x3E00000000000000
  %65 = call double @llvm.fmuladd.f64(double %64, double 2.000000e+00, double -1.000000e+00)
  %66 = call double @llvm.fmuladd.f64(double %61, double %65, double 1.000000e+00)
  %67 = fmul double %60, %66
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %9) #7
  %68 = call double @cos(double noundef %59) #7
  %69 = fmul double %68, %67
  %70 = call double @sin(double noundef %59) #7
  %71 = fmul double %70, %67
  %72 = call double @sinh(double noundef %45) #7
  %73 = fmul double %72, %67
  %74 = call double @cosh(double noundef %45) #7
  %75 = fmul double %67, %74
  invoke void @_ZN7siscone9CmomentumC1Edddd(ptr noundef nonnull align 8 dereferenceable(68) %9, double noundef %69, double noundef %71, double noundef %73, double noundef %75)
          to label %76 unwind label %83

76:                                               ; preds = %32
  invoke void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(68) %9)
          to label %77 unwind label %85

77:                                               ; preds = %76
  call void @_ZN7siscone9CmomentumD1Ev(ptr noundef nonnull align 8 dereferenceable(68) %9) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9) #7
  %78 = add nuw nsw i32 %.04458, 1
  %79 = load i32, ptr %21, align 4, !tbaa !59
  %80 = icmp slt i32 %78, %79
  br i1 %80, label %32, label %._crit_edge, !llvm.loop !64

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

83:                                               ; preds = %32
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %87

85:                                               ; preds = %76
  %86 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7siscone9CmomentumD1Ev(ptr noundef nonnull align 8 dereferenceable(68) %9) #7
  br label %87

87:                                               ; preds = %85, %83
  %.pn48 = phi { ptr, i32 } [ %86, %85 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9) #7
  br label %141

._crit_edge:                                      ; preds = %77, %.preheader
  %88 = phi i32 [ %28, %.preheader ], [ %79, %77 ]
  %89 = add nuw nsw i32 %.04259, 1
  %90 = icmp slt i32 %89, %88
  br i1 %90, label %.preheader, label %._crit_edge60, !llvm.loop !66

._crit_edge60:                                    ; preds = %._crit_edge, %.preheader52
  %91 = invoke noundef i32 @_ZN7siscone8Csiscone12compute_jetsERSt6vectorINS_9CmomentumESaIS2_EEddidNS_18Esplit_merge_scaleE(ptr noundef nonnull align 8 dereferenceable(705) %0, ptr noundef nonnull align 8 dereferenceable(24) %8, double noundef %2, double noundef %3, i32 noundef %4, double noundef 0.000000e+00, i32 noundef %5)
          to label %92 unwind label %123

92:                                               ; preds = %._crit_edge60
  %93 = getelementptr inbounds i8, ptr %0, i64 712
  %94 = load double, ptr %93, align 8, !tbaa !60
  %95 = fmul double %94, 2.000000e+00
  %96 = load i32, ptr %21, align 4, !tbaa !59
  %97 = sitofp i32 %96 to double
  %98 = fdiv double %95, %97
  %99 = fdiv double 0x401921FB54442D18, %97
  %100 = fmul double %98, %99
  %101 = getelementptr inbounds i8, ptr %0, i64 576
  %102 = call noundef i64 @_ZNKSt6vectorIN7siscone4CjetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %101) #7
  %103 = trunc i64 %102 to i32
  %104 = icmp sgt i32 %103, 0
  br i1 %104, label %.lr.ph69, label %._crit_edge70

.lr.ph69:                                         ; preds = %92, %.critedge
  %indvars.iv74 = phi i64 [ %indvars.iv.next75, %.critedge ], [ 0, %92 ]
  call void @llvm.lifetime.start.p0(i64 152, ptr nonnull %10) #7
  %105 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %indvars.iv74) #7
  invoke void @_ZN7siscone9Cjet_areaC1ERNS_4CjetE(ptr noundef nonnull align 8 dereferenceable(152) %10, ptr noundef nonnull align 8 dereferenceable(132) %105)
          to label %106 unwind label %125

106:                                              ; preds = %.lr.ph69
  invoke void @_ZNSt6vectorIN7siscone9Cjet_areaESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(152) %10)
          to label %107 unwind label %127

107:                                              ; preds = %106
  call void @_ZN7siscone9Cjet_areaD1Ev(ptr noundef nonnull align 8 dereferenceable(152) %10) #7
  call void @llvm.lifetime.end.p0(i64 152, ptr nonnull %10) #7
  %108 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %indvars.iv74) #7
  %109 = getelementptr inbounds i8, ptr %108, i64 80
  %110 = load i32, ptr %109, align 8, !tbaa !68
  %111 = icmp sgt i32 %110, 0
  br i1 %111, label %.lr.ph63, label %.critedge

.lr.ph63:                                         ; preds = %107, %117
  %indvars.iv = phi i64 [ %indvars.iv.next, %117 ], [ 0, %107 ]
  %112 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %indvars.iv74) #7
  %113 = getelementptr inbounds i8, ptr %112, i64 88
  %114 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %113, i64 noundef %indvars.iv) #7
  %115 = load i32, ptr %114, align 4, !tbaa !75
  %116 = icmp slt i32 %115, %19
  br i1 %116, label %117, label %.critedge.loopexit

117:                                              ; preds = %.lr.ph63
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %118 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %indvars.iv74) #7
  %119 = getelementptr inbounds i8, ptr %118, i64 80
  %120 = load i32, ptr %119, align 8, !tbaa !68
  %121 = sext i32 %120 to i64
  %122 = icmp slt i64 %indvars.iv.next, %121
  br i1 %122, label %.lr.ph63, label %.critedge.loopexit, !llvm.loop !76

123:                                              ; preds = %._crit_edge60
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %141

125:                                              ; preds = %.lr.ph69
  %126 = landingpad { ptr, i32 }
          cleanup
  br label %129

127:                                              ; preds = %106
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7siscone9Cjet_areaD1Ev(ptr noundef nonnull align 8 dereferenceable(152) %10) #7
  br label %129

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

.critedge.loopexit:                               ; preds = %117, %.lr.ph63
  %.145.lcssa.ph.in = phi i64 [ %indvars.iv, %.lr.ph63 ], [ %indvars.iv.next, %117 ]
  %.145.lcssa.ph = trunc i64 %.145.lcssa.ph.in to i32
  br label %.critedge

.critedge:                                        ; preds = %.critedge.loopexit, %107
  %.145.lcssa = phi i32 [ 0, %107 ], [ %.145.lcssa.ph, %.critedge.loopexit ]
  %130 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %indvars.iv74) #7
  %131 = getelementptr inbounds i8, ptr %130, i64 80
  %132 = load i32, ptr %131, align 8, !tbaa !68
  %133 = sub nsw i32 %132, %.145.lcssa
  %134 = sitofp i32 %133 to double
  %135 = fmul double %100, %134
  %136 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN7siscone9Cjet_areaESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %indvars.iv74) #7
  %137 = getelementptr inbounds i8, ptr %136, i64 144
  store double %135, ptr %137, align 8, !tbaa !77
  %indvars.iv.next75 = add nuw nsw i64 %indvars.iv74, 1
  %138 = call noundef i64 @_ZNKSt6vectorIN7siscone4CjetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %101) #7
  %sext = shl i64 %138, 32
  %139 = ashr exact i64 %sext, 32
  %140 = icmp slt i64 %indvars.iv.next75, %139
  br i1 %140, label %.lr.ph69, label %._crit_edge70, !llvm.loop !79

._crit_edge70:                                    ; preds = %.critedge, %92
  call void @_ZNSt6vectorIN7siscone4CjetESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %101) #7
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  ret i32 %91

141:                                              ; preds = %87, %129, %123, %81
  %.pn48.pn.pn = phi { ptr, i32 } [ %82, %81 ], [ %.pn48, %87 ], [ %.pn, %129 ], [ %124, %123 ]
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  resume { ptr, i32 } %.pn48.pn.pn
}

declare void @_ZN7siscone9Cjet_areaC1ERNS_4CjetE(ptr, ptr) local_unnamed_addr

declare void @_ZN7siscone9Cjet_areaD1Ev(ptr) local_unnamed_addr

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 = { 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { 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, !13, i64 744}
!6 = !{!"_ZTSN7siscone5CareaE", !7, i64 0, !14, i64 708, !13, i64 712, !13, i64 720, !13, i64 728, !13, i64 736, !13, i64 744, !54, i64 752}
!7 = !{!"_ZTSN7siscone8CsisconeE", !8, i64 0, !37, i64 448, !50, i64 680, !46, i64 704}
!8 = !{!"_ZTSN7siscone13Cstable_conesE", !9, i64 0, !15, i64 168, !10, i64 192, !14, i64 200, !13, i64 208, !13, i64 216, !27, i64 224, !10, i64 296, !10, i64 304, !14, i64 312, !14, i64 316, !27, i64 320, !29, i64 392, !33, i64 416, !13, i64 440}
!9 = !{!"_ZTSN7siscone9CvicinityE", !10, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !14, i64 56, !15, i64 64, !19, i64 88, !10, i64 112, !23, i64 120, !14, i64 144, !13, i64 152, !13, i64 160}
!10 = !{!"any pointer", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"double", !11, i64 0}
!14 = !{!"int", !11, i64 0}
!15 = !{!"_ZTSSt6vectorIN7siscone9CmomentumESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIN7siscone9CmomentumESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN7siscone9CmomentumESaIS1_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN7siscone9CmomentumESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!19 = !{!"_ZTSSt6vectorIN7siscone19Cvicinity_inclusionESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN7siscone19Cvicinity_inclusionESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN7siscone19Cvicinity_inclusionESaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN7siscone19Cvicinity_inclusionESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!23 = !{!"_ZTSSt6vectorIPN7siscone13Cvicinity_elmESaIS2_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIPN7siscone13Cvicinity_elmESaIS2_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIPN7siscone13Cvicinity_elmESaIS2_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIPN7siscone13Cvicinity_elmESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!27 = !{!"_ZTSN7siscone9CmomentumE", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !14, i64 48, !14, i64 52, !28, i64 56}
!28 = !{!"_ZTSN7siscone10CreferenceE", !11, i64 0}
!29 = !{!"_ZTSSt6vectorIPN7siscone9CmomentumESaIS2_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIPN7siscone9CmomentumESaIS2_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIPN7siscone9CmomentumESaIS2_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIPN7siscone9CmomentumESaIS2_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!33 = !{!"_ZTSSt6vectorISt4pairIN7siscone10CreferenceES2_ESaIS3_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseISt4pairIN7siscone10CreferenceES2_ESaIS3_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseISt4pairIN7siscone10CreferenceES2_ESaIS3_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseISt4pairIN7siscone10CreferenceES2_ESaIS3_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!37 = !{!"_ZTSN7siscone12Csplit_mergeE", !14, i64 0, !15, i64 8, !38, i64 32, !14, i64 56, !15, i64 64, !15, i64 88, !14, i64 112, !13, i64 120, !42, i64 128, !10, i64 152, !14, i64 160, !46, i64 164, !47, i64 168, !13, i64 192, !13, i64 200, !49, i64 208, !13, i64 216, !46, i64 224}
!38 = !{!"_ZTSSt6vectorIdSaIdEE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!42 = !{!"_ZTSSt6vectorIN7siscone4CjetESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN7siscone4CjetESaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN7siscone4CjetESaIS1_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN7siscone4CjetESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!46 = !{!"bool", !11, i64 0}
!47 = !{!"_ZTSN7siscone25Csplit_merge_ptcomparisonE", !10, i64 0, !10, i64 8, !48, i64 16}
!48 = !{!"_ZTSN7siscone18Esplit_merge_scaleE", !11, i64 0}
!49 = !{!"_ZTSSt8auto_ptrISt8multisetIN7siscone4CjetENS1_25Csplit_merge_ptcomparisonESaIS2_EEE", !10, i64 0}
!50 = !{!"_ZTSSt6vectorIS_IN7siscone9CmomentumESaIS1_EESaIS3_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseISt6vectorIN7siscone9CmomentumESaIS2_EESaIS4_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN7siscone9CmomentumESaIS2_EESaIS4_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN7siscone9CmomentumESaIS2_EESaIS4_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!54 = !{!"_ZTSSt6vectorIN7siscone9Cjet_areaESaIS1_EE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseIN7siscone9Cjet_areaESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN7siscone9Cjet_areaESaIS1_EE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN7siscone9Cjet_areaESaIS1_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!58 = !{!37, !13, i64 192}
!59 = !{!6, !14, i64 708}
!60 = !{!6, !13, i64 712}
!61 = !{!6, !13, i64 720}
!62 = !{!6, !13, i64 728}
!63 = !{!6, !13, i64 736}
!64 = distinct !{!64, !65}
!65 = !{!"llvm.loop.mustprogress"}
!66 = distinct !{!66, !65, !67}
!67 = !{!"llvm.loop.unswitch.partial.disable"}
!68 = !{!69, !14, i64 80}
!69 = !{!"_ZTSN7siscone4CjetE", !27, i64 0, !13, i64 72, !14, i64 80, !70, i64 88, !13, i64 112, !74, i64 120, !14, i64 128}
!70 = !{!"_ZTSSt6vectorIiSaIiEE", !71, i64 0}
!71 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!74 = !{!"_ZTSN7siscone14Ceta_phi_rangeE", !14, i64 0, !14, i64 4}
!75 = !{!14, !14, i64 0}
!76 = distinct !{!76, !65}
!77 = !{!78, !13, i64 144}
!78 = !{!"_ZTSN7siscone9Cjet_areaE", !69, i64 0, !13, i64 136, !13, i64 144}
!79 = distinct !{!79, !65}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass