; LLVM IR from mickypaganini/SSI2016-jet-clustering :: spartyjet-4.0.2_mac/External/fastjet-3.0.0/plugins/SISCone/siscone/siscone/are_ae484ea2 (18b4bdbc)

; 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::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] }>
%"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::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 }>

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 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 @_ZN7siscone5Carea21compute_passive_areasERSt6vectorINS_9CmomentumESaIS2_EEddiNS_18Esplit_merge_scaleE(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) #2 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::vector.0", align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca %"class.siscone::Cmomentum", align 8
  %23 = alloca i32, align 4
  %24 = alloca double, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store double %2, ptr %9, align 8, !tbaa !9
  store double %3, ptr %10, align 8, !tbaa !9
  store i32 %4, ptr %11, align 4, !tbaa !11
  store i32 %5, ptr %12, align 4, !tbaa !13
  %25 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #6
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  %26 = getelementptr inbounds %"class.siscone::Carea", ptr %25, i32 0, i32 6
  %27 = load double, ptr %26, align 8, !tbaa !15
  %28 = getelementptr inbounds %"class.siscone::Carea", ptr %25, i32 0, i32 6
  %29 = load double, ptr %28, align 8, !tbaa !15
  %30 = fmul double %27, %29
  %31 = getelementptr inbounds i8, ptr %25, i64 448
  %32 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %31, i32 0, i32 18
  store double %30, ptr %32, align 8, !tbaa !62
  %33 = getelementptr inbounds %"class.siscone::Carea", ptr %25, i32 0, i32 7
  call void @_ZNSt6vectorIN7siscone9Cjet_areaESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %34 = load ptr, ptr %8, align 8, !tbaa !5
  %35 = call noundef i64 @_ZNKSt6vectorIN7siscone9CmomentumESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #6
  %36 = trunc i64 %35 to i32
  store i32 %36, ptr %14, align 4, !tbaa !11
  %37 = load ptr, ptr %8, align 8, !tbaa !5
  %38 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %37)
          to label %39 unwind label %119

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

40:                                               ; preds = %133, %39
  %41 = load i32, ptr %17, align 4, !tbaa !11
  %42 = getelementptr inbounds %"class.siscone::Carea", ptr %25, i32 0, i32 1
  %43 = load i32, ptr %42, align 4, !tbaa !63
  %44 = icmp slt i32 %41, %43
  br i1 %44, label %45, label %136

45:                                               ; preds = %40
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %46

46:                                               ; preds = %116, %45
  %47 = load i32, ptr %18, align 4, !tbaa !11
  %48 = getelementptr inbounds %"class.siscone::Carea", ptr %25, i32 0, i32 1
  %49 = load i32, ptr %48, align 4, !tbaa !63
  %50 = icmp slt i32 %47, %49
  br i1 %50, label %51, label %132

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

114:                                              ; preds = %51
  invoke void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(68) %22)
          to label %115 unwind label %127

115:                                              ; preds = %114
  call void @_ZN7siscone9CmomentumD1Ev(ptr noundef nonnull align 8 dereferenceable(68) %22) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr %22) #6
  br label %116

116:                                              ; preds = %115
  %117 = load i32, ptr %18, align 4, !tbaa !11
  %118 = add nsw i32 %117, 1
  store i32 %118, ptr %18, align 4, !tbaa !11
  br label %46, !llvm.loop !68

119:                                              ; preds = %6
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %15, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %16, align 4
  br label %223

123:                                              ; preds = %51
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %15, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %16, align 4
  br label %131

127:                                              ; preds = %114
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %15, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %16, align 4
  call void @_ZN7siscone9CmomentumD1Ev(ptr noundef nonnull align 8 dereferenceable(68) %22) #6
  br label %131

131:                                              ; preds = %127, %123
  call void @llvm.lifetime.end.p0(i64 72, ptr %22) #6
  br label %222

132:                                              ; preds = %46
  br label %133

133:                                              ; preds = %132
  %134 = load i32, ptr %17, align 4, !tbaa !11
  %135 = add nsw i32 %134, 1
  store i32 %135, ptr %17, align 4, !tbaa !11
  br label %40, !llvm.loop !70

136:                                              ; preds = %40
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %137 = load double, ptr %9, align 8, !tbaa !9
  %138 = load double, ptr %10, align 8, !tbaa !9
  %139 = load i32, ptr %11, align 4, !tbaa !11
  %140 = getelementptr inbounds %"class.siscone::Carea", ptr %25, i32 0, i32 6
  %141 = load double, ptr %140, align 8, !tbaa !15
  %142 = load i32, ptr %12, align 4, !tbaa !13
  %143 = invoke noundef i32 @_ZN7siscone8Csiscone12compute_jetsERSt6vectorINS_9CmomentumESaIS2_EEddidNS_18Esplit_merge_scaleE(ptr noundef nonnull align 8 dereferenceable(705) %25, ptr noundef nonnull align 8 dereferenceable(24) %13, double noundef %137, double noundef %138, i32 noundef %139, double noundef %141, i32 noundef %142)
          to label %144 unwind label %193

144:                                              ; preds = %136
  store i32 %143, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  %145 = getelementptr inbounds %"class.siscone::Carea", ptr %25, i32 0, i32 2
  %146 = load double, ptr %145, align 8, !tbaa !64
  %147 = fmul double 2.000000e+00, %146
  %148 = getelementptr inbounds %"class.siscone::Carea", ptr %25, i32 0, i32 1
  %149 = load i32, ptr %148, align 4, !tbaa !63
  %150 = sitofp i32 %149 to double
  %151 = fdiv double %147, %150
  %152 = getelementptr inbounds %"class.siscone::Carea", ptr %25, i32 0, i32 1
  %153 = load i32, ptr %152, align 4, !tbaa !63
  %154 = sitofp i32 %153 to double
  %155 = fdiv double 0x401921FB54442D18, %154
  %156 = fmul double %151, %155
  store double %156, ptr %24, align 8, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !11
  br label %157

157:                                              ; preds = %215, %144
  %158 = load i32, ptr %17, align 4, !tbaa !11
  %159 = getelementptr inbounds i8, ptr %25, i64 448
  %160 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %159, i32 0, i32 11
  %161 = call noundef i64 @_ZNKSt6vectorIN7siscone4CjetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %160) #6
  %162 = trunc i64 %161 to i32
  %163 = icmp slt i32 %158, %162
  br i1 %163, label %164, label %218

164:                                              ; preds = %157
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %165

165:                                              ; preds = %190, %164
  %166 = load i32, ptr %18, align 4, !tbaa !11
  %167 = getelementptr inbounds i8, ptr %25, i64 448
  %168 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %167, i32 0, i32 11
  %169 = load i32, ptr %17, align 4, !tbaa !11
  %170 = sext i32 %169 to i64
  %171 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %168, i64 noundef %170) #6
  %172 = getelementptr inbounds %"class.siscone::Cjet", ptr %171, i32 0, i32 2
  %173 = load i32, ptr %172, align 8, !tbaa !71
  %174 = icmp slt i32 %166, %173
  br i1 %174, label %175, label %188

175:                                              ; preds = %165
  %176 = getelementptr inbounds i8, ptr %25, i64 448
  %177 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %176, i32 0, i32 11
  %178 = load i32, ptr %17, align 4, !tbaa !11
  %179 = sext i32 %178 to i64
  %180 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %177, i64 noundef %179) #6
  %181 = getelementptr inbounds %"class.siscone::Cjet", ptr %180, i32 0, i32 4
  %182 = load i32, ptr %18, align 4, !tbaa !11
  %183 = sext i32 %182 to i64
  %184 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %181, i64 noundef %183) #6
  %185 = load i32, ptr %184, align 4, !tbaa !11
  %186 = load i32, ptr %14, align 4, !tbaa !11
  %187 = icmp slt i32 %185, %186
  br label %188

188:                                              ; preds = %175, %165
  %189 = phi i1 [ false, %165 ], [ %187, %175 ]
  br i1 %189, label %190, label %197

190:                                              ; preds = %188
  %191 = load i32, ptr %18, align 4, !tbaa !11
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr %18, align 4, !tbaa !11
  br label %165, !llvm.loop !78

193:                                              ; preds = %136
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %15, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %222

197:                                              ; preds = %188
  %198 = getelementptr inbounds i8, ptr %25, i64 448
  %199 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %198, i32 0, i32 11
  %200 = load i32, ptr %17, align 4, !tbaa !11
  %201 = sext i32 %200 to i64
  %202 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %199, i64 noundef %201) #6
  %203 = getelementptr inbounds %"class.siscone::Cjet", ptr %202, i32 0, i32 2
  %204 = load i32, ptr %203, align 8, !tbaa !71
  %205 = load i32, ptr %18, align 4, !tbaa !11
  %206 = sub nsw i32 %204, %205
  %207 = sitofp i32 %206 to double
  %208 = load double, ptr %24, align 8, !tbaa !9
  %209 = fmul double %207, %208
  %210 = getelementptr inbounds %"class.siscone::Carea", ptr %25, i32 0, i32 7
  %211 = load i32, ptr %17, align 4, !tbaa !11
  %212 = sext i32 %211 to i64
  %213 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN7siscone9Cjet_areaESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %210, i64 noundef %212) #6
  %214 = getelementptr inbounds %"class.siscone::Cjet_area", ptr %213, i32 0, i32 1
  store double %209, ptr %214, align 8, !tbaa !79
  br label %215

215:                                              ; preds = %197
  %216 = load i32, ptr %17, align 4, !tbaa !11
  %217 = add nsw i32 %216, 1
  store i32 %217, ptr %17, align 4, !tbaa !11
  br label %157, !llvm.loop !81

218:                                              ; preds = %157
  %219 = getelementptr inbounds i8, ptr %25, i64 448
  %220 = getelementptr inbounds %"class.siscone::Csplit_merge", ptr %219, i32 0, i32 11
  call void @_ZNSt6vectorIN7siscone4CjetESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %220) #6
  %221 = load i32, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #6
  ret i32 %221

222:                                              ; preds = %193, %131
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  br label %223

223:                                              ; preds = %222, %119
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #6
  br label %224

224:                                              ; preds = %223
  %225 = load ptr, ptr %15, align 8
  %226 = load i32, ptr %16, align 4
  %227 = insertvalue { ptr, i32 } poison, ptr %225, 0
  %228 = insertvalue { ptr, i32 } %227, i32 %226, 1
  resume { ptr, i32 } %228
}

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, !10, i64 744}
!16 = !{!"_ZTSN7siscone5CareaE", !17, i64 0, !12, i64 708, !10, i64 712, !10, i64 720, !10, i64 728, !10, i64 736, !10, i64 744, !58, i64 752}
!17 = !{!"_ZTSN7siscone8CsisconeE", !18, i64 0, !42, i64 448, !54, i64 680, !51, i64 704}
!18 = !{!"_ZTSN7siscone13Cstable_conesE", !19, i64 0, !20, i64 168, !6, i64 192, !12, i64 200, !10, i64 208, !10, i64 216, !32, i64 224, !6, i64 296, !6, i64 304, !12, i64 312, !12, i64 316, !32, i64 320, !34, i64 392, !38, i64 416, !10, i64 440}
!19 = !{!"_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, !20, i64 64, !24, i64 88, !6, i64 112, !28, i64 120, !12, i64 144, !10, i64 152, !10, i64 160}
!20 = !{!"_ZTSSt6vectorIN7siscone9CmomentumESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN7siscone9CmomentumESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN7siscone9CmomentumESaIS1_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN7siscone9CmomentumESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorIN7siscone19Cvicinity_inclusionESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN7siscone19Cvicinity_inclusionESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN7siscone19Cvicinity_inclusionESaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN7siscone19Cvicinity_inclusionESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSSt6vectorIPN7siscone13Cvicinity_elmESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIPN7siscone13Cvicinity_elmESaIS2_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIPN7siscone13Cvicinity_elmESaIS2_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIPN7siscone13Cvicinity_elmESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_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, !33, i64 56}
!33 = !{!"_ZTSN7siscone10CreferenceE", !7, i64 0}
!34 = !{!"_ZTSSt6vectorIPN7siscone9CmomentumESaIS2_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIPN7siscone9CmomentumESaIS2_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIPN7siscone9CmomentumESaIS2_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIPN7siscone9CmomentumESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorISt4pairIN7siscone10CreferenceES2_ESaIS3_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseISt4pairIN7siscone10CreferenceES2_ESaIS3_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseISt4pairIN7siscone10CreferenceES2_ESaIS3_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseISt4pairIN7siscone10CreferenceES2_ESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTSN7siscone12Csplit_mergeE", !12, i64 0, !20, i64 8, !43, i64 32, !12, i64 56, !20, i64 64, !20, i64 88, !12, i64 112, !10, i64 120, !47, i64 128, !6, i64 152, !12, i64 160, !51, i64 164, !52, i64 168, !10, i64 192, !10, i64 200, !53, i64 208, !10, i64 216, !51, i64 224}
!43 = !{!"_ZTSSt6vectorIdSaIdEE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!47 = !{!"_ZTSSt6vectorIN7siscone4CjetESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIN7siscone4CjetESaIS1_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN7siscone4CjetESaIS1_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN7siscone4CjetESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!"bool", !7, i64 0}
!52 = !{!"_ZTSN7siscone25Csplit_merge_ptcomparisonE", !6, i64 0, !6, i64 8, !14, i64 16}
!53 = !{!"_ZTSSt8auto_ptrISt8multisetIN7siscone4CjetENS1_25Csplit_merge_ptcomparisonESaIS2_EEE", !6, i64 0}
!54 = !{!"_ZTSSt6vectorIS_IN7siscone9CmomentumESaIS1_EESaIS3_EE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseISt6vectorIN7siscone9CmomentumESaIS2_EESaIS4_EE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN7siscone9CmomentumESaIS2_EESaIS4_EE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN7siscone9CmomentumESaIS2_EESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!58 = !{!"_ZTSSt6vectorIN7siscone9Cjet_areaESaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseIN7siscone9Cjet_areaESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIN7siscone9Cjet_areaESaIS1_EE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN7siscone9Cjet_areaESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!62 = !{!42, !10, i64 200}
!63 = !{!16, !12, i64 708}
!64 = !{!16, !10, i64 712}
!65 = !{!16, !10, i64 720}
!66 = !{!16, !10, i64 728}
!67 = !{!16, !10, i64 736}
!68 = distinct !{!68, !69}
!69 = !{!"llvm.loop.mustprogress"}
!70 = distinct !{!70, !69}
!71 = !{!72, !12, i64 80}
!72 = !{!"_ZTSN7siscone4CjetE", !32, i64 0, !10, i64 72, !12, i64 80, !73, i64 88, !10, i64 112, !77, i64 120, !12, i64 128}
!73 = !{!"_ZTSSt6vectorIiSaIiEE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!77 = !{!"_ZTSN7siscone14Ceta_phi_rangeE", !12, i64 0, !12, i64 4}
!78 = distinct !{!78, !69}
!79 = !{!80, !10, i64 136}
!80 = !{!"_ZTSN7siscone9Cjet_areaE", !72, i64 0, !10, i64 136, !10, i64 144}
!81 = distinct !{!81, !69}


; 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] }

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 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 @_ZN7siscone5Carea21compute_passive_areasERSt6vectorINS_9CmomentumESaIS2_EEddiNS_18Esplit_merge_scaleE(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) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.std::vector.0", align 8
  %8 = alloca %"class.siscone::Cmomentum", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #7
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  %9 = getelementptr inbounds i8, ptr %0, i64 744
  %10 = load double, ptr %9, align 8, !tbaa !5
  %11 = fmul double %10, %10
  %12 = getelementptr inbounds i8, ptr %0, i64 648
  store double %11, ptr %12, align 8, !tbaa !58
  %13 = getelementptr inbounds i8, ptr %0, i64 752
  call void @_ZNSt6vectorIN7siscone9Cjet_areaESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  %14 = call noundef i64 @_ZNKSt6vectorIN7siscone9CmomentumESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1) #7
  %15 = trunc i64 %14 to i32
  %16 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %1)
          to label %.preheader46 unwind label %77

.preheader46:                                     ; preds = %6
  %17 = getelementptr inbounds i8, ptr %0, i64 708
  %18 = load i32, ptr %17, align 4, !tbaa !59
  %19 = icmp sgt i32 %18, 0
  br i1 %19, label %.preheader45.preheader, label %._crit_edge53

.preheader45.preheader:                           ; preds = %.preheader46
  %20 = getelementptr inbounds i8, ptr %0, i64 712
  %21 = getelementptr inbounds i8, ptr %0, i64 720
  %22 = getelementptr inbounds i8, ptr %0, i64 728
  %23 = getelementptr inbounds i8, ptr %0, i64 736
  br label %.preheader45

.preheader45:                                     ; preds = %.preheader45.preheader, %._crit_edge
  %24 = phi i32 [ %84, %._crit_edge ], [ %18, %.preheader45.preheader ]
  %.03852 = phi i32 [ %85, %._crit_edge ], [ 0, %.preheader45.preheader ]
  %25 = icmp sgt i32 %24, 0
  br i1 %25, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader45
  %26 = uitofp nneg i32 %.03852 to double
  %27 = fadd double %26, 5.000000e-01
  br label %28

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

72:                                               ; preds = %28
  invoke void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(68) %8)
          to label %73 unwind label %81

73:                                               ; preds = %72
  call void @_ZN7siscone9CmomentumD1Ev(ptr noundef nonnull align 8 dereferenceable(68) %8) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8) #7
  %74 = add nuw nsw i32 %.04051, 1
  %75 = load i32, ptr %17, align 4, !tbaa !59
  %76 = icmp slt i32 %74, %75
  br i1 %76, label %28, label %._crit_edge, !llvm.loop !64

77:                                               ; preds = %6
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %130

79:                                               ; preds = %28
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %83

81:                                               ; preds = %72
  %82 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7siscone9CmomentumD1Ev(ptr noundef nonnull align 8 dereferenceable(68) %8) #7
  br label %83

83:                                               ; preds = %81, %79
  %.pn = phi { ptr, i32 } [ %82, %81 ], [ %80, %79 ]
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %8) #7
  br label %130

._crit_edge:                                      ; preds = %73, %.preheader45
  %84 = phi i32 [ %24, %.preheader45 ], [ %75, %73 ]
  %85 = add nuw nsw i32 %.03852, 1
  %86 = icmp slt i32 %85, %84
  br i1 %86, label %.preheader45, label %._crit_edge53, !llvm.loop !66

._crit_edge53:                                    ; preds = %._crit_edge, %.preheader46
  %87 = load double, ptr %9, align 8, !tbaa !5
  %88 = 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) %7, double noundef %2, double noundef %3, i32 noundef %4, double noundef %87, i32 noundef %5)
          to label %89 unwind label %117

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

.preheader:                                       ; preds = %89, %.critedge
  %indvars.iv66 = phi i64 [ %indvars.iv.next67, %.critedge ], [ 0, %89 ]
  %102 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef %indvars.iv66) #7
  %103 = getelementptr inbounds i8, ptr %102, i64 80
  %104 = load i32, ptr %103, align 8, !tbaa !68
  %105 = icmp sgt i32 %104, 0
  br i1 %105, label %.lr.ph55, label %.critedge

.lr.ph55:                                         ; preds = %.preheader, %111
  %indvars.iv = phi i64 [ %indvars.iv.next, %111 ], [ 0, %.preheader ]
  %106 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef %indvars.iv66) #7
  %107 = getelementptr inbounds i8, ptr %106, i64 88
  %108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %indvars.iv) #7
  %109 = load i32, ptr %108, align 4, !tbaa !75
  %110 = icmp slt i32 %109, %15
  br i1 %110, label %111, label %.critedge.loopexit

111:                                              ; preds = %.lr.ph55
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %112 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef %indvars.iv66) #7
  %113 = getelementptr inbounds i8, ptr %112, i64 80
  %114 = load i32, ptr %113, align 8, !tbaa !68
  %115 = sext i32 %114 to i64
  %116 = icmp slt i64 %indvars.iv.next, %115
  br i1 %116, label %.lr.ph55, label %.critedge.loopexit, !llvm.loop !76

117:                                              ; preds = %._crit_edge53
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %130

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

.critedge:                                        ; preds = %.critedge.loopexit, %.preheader
  %.141.lcssa = phi i32 [ 0, %.preheader ], [ %.141.lcssa.ph, %.critedge.loopexit ]
  %119 = call noundef nonnull align 8 dereferenceable(132) ptr @_ZNSt6vectorIN7siscone4CjetESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef %indvars.iv66) #7
  %120 = getelementptr inbounds i8, ptr %119, i64 80
  %121 = load i32, ptr %120, align 8, !tbaa !68
  %122 = sub nsw i32 %121, %.141.lcssa
  %123 = sitofp i32 %122 to double
  %124 = fmul double %97, %123
  %125 = call noundef nonnull align 8 dereferenceable(152) ptr @_ZNSt6vectorIN7siscone9Cjet_areaESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %indvars.iv66) #7
  %126 = getelementptr inbounds i8, ptr %125, i64 136
  store double %124, ptr %126, align 8, !tbaa !77
  %indvars.iv.next67 = add nuw nsw i64 %indvars.iv66, 1
  %127 = call noundef i64 @_ZNKSt6vectorIN7siscone4CjetESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #7
  %sext = shl i64 %127, 32
  %128 = ashr exact i64 %sext, 32
  %129 = icmp slt i64 %indvars.iv.next67, %128
  br i1 %129, label %.preheader, label %._crit_edge62, !llvm.loop !79

._crit_edge62:                                    ; preds = %.critedge, %89
  call void @_ZNSt6vectorIN7siscone4CjetESaIS1_EE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %98) #7
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  ret i32 %88

130:                                              ; preds = %83, %117, %77
  %.pn.pn.pn = phi { ptr, i32 } [ %78, %77 ], [ %.pn, %83 ], [ %118, %117 ]
  call void @_ZNSt6vectorIN7siscone9CmomentumESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #7
  resume { ptr, i32 } %.pn.pn.pn
}

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 200}
!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 136}
!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,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SCCPPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass