; LLVM IR from ERGO-Code/HiGHS :: src/ipm/ipx (crossover)

; 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.ipx::Timer" = type { %"class.std::chrono::time_point" }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"class.ipx::IndexedVector" = type <{ %"class.std::valarray", %"class.std::vector.4", i32, [4 x i8] }>
%"class.std::valarray" = type { i64, ptr }
%"class.std::vector.4" = type { %"struct.std::_Vector_base.5" }
%"struct.std::_Vector_base.5" = 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.__gnu_cxx::__normal_iterator" = type { ptr }
%class.anon.20 = type { ptr, ptr }
%class.anon.21 = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.ipx::Crossover" = type { ptr, i32, i32, i32, i32, double, double }
%struct.ipx_info = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, double, double, double, double }

@.str.15 = external hidden unnamed_addr constant [74 x i8], align 1
@_ZTISt11logic_error = external constant ptr
@.str.23 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [22 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE = external hidden unnamed_addr constant [106 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [23 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

declare noundef nonnull align 8 dereferenceable(704) ptr @_ZNK3ipx5Basis5modelEv(ptr noundef nonnull align 8 dereferenceable(176)) #2

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, double noundef) #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK3ipx5Basis7IsBasicEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #5 align 2

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3ipx5Basis10IsNonbasicEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #5 align 2

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

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

declare void @_ZN3ipx5TimerC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

declare void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef) unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3ipx5Model8dualizedEv(ptr noundef nonnull align 8 dereferenceable(704)) #1 align 2

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZNSt11logic_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #2

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt11logic_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #7

declare void @__cxa_throw(ptr, ptr, ptr)

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

declare void @_ZNK3ipx7Control18ResetPrintIntervalEv(ptr noundef nonnull align 8 dereferenceable(1496)) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(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(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #4

declare noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, i32 noundef, double noundef, i32 noundef, ptr noundef) #2

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

declare noundef double @_ZNK3ipx5Basis16MinSingularValueEv(ptr noundef nonnull align 8 dereferenceable(176)) #2

declare void @_ZN3ipx6FormatB5cxx11Eii(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef, i32 noundef) #2

declare void @_ZNK3ipx7Control12hIntervalLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496), ptr noundef nonnull align 8 dereferenceable(128)) #2

declare noundef double @_ZNK3ipx5Timer7ElapsedEv(ptr noundef nonnull align 8 dereferenceable(8)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef %5, ptr noundef %6) #3 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %"class.ipx::Timer", align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %"class.ipx::IndexedVector", align 8
  %20 = alloca %"class.ipx::IndexedVector", align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i64, align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  %34 = alloca double, align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca i8, align 1
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca %class.anon.20, align 8
  %40 = alloca %class.anon.21, align 8
  %41 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %42 = alloca %"class.std::__cxx11::basic_string", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  %45 = load ptr, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  call void @_ZN3ipx5TimerC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %46 = load ptr, ptr %9, align 8, !tbaa !5
  %47 = call noundef nonnull align 8 dereferenceable(704) ptr @_ZNK3ipx5Basis5modelEv(ptr noundef nonnull align 8 dereferenceable(176) %46)
  store ptr %47, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %48 = load ptr, ptr %16, align 8, !tbaa !5
  %49 = call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %48)
  store i32 %49, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  %50 = load ptr, ptr %16, align 8, !tbaa !5
  %51 = call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %50)
  store i32 %51, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 48, ptr %19) #8
  %52 = load i32, ptr %17, align 4, !tbaa !9
  call void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %19, i32 noundef %52)
  call void @llvm.lifetime.start.p0(i64 48, ptr %20) #8
  %53 = load i32, ptr %18, align 4, !tbaa !9
  %54 = load i32, ptr %17, align 4, !tbaa !9
  %55 = add nsw i32 %53, %54
  invoke void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %20, i32 noundef %55)
          to label %56 unwind label %84

56:                                               ; preds = %7
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %57 = load ptr, ptr %16, align 8, !tbaa !5
  %58 = invoke noundef zeroext i1 @_ZNK3ipx5Model8dualizedEv(ptr noundef nonnull align 8 dereferenceable(704) %57)
          to label %59 unwind label %88

59:                                               ; preds = %56
  br i1 %58, label %60, label %65

60:                                               ; preds = %59
  %61 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 0
  %62 = load ptr, ptr %61, align 8, !tbaa !11
  %63 = invoke noundef double @_ZNK3ipx7Control16pfeasibility_tolEv(ptr noundef nonnull align 8 dereferenceable(1496) %62)
          to label %64 unwind label %88

64:                                               ; preds = %60
  br label %70

65:                                               ; preds = %59
  %66 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 0
  %67 = load ptr, ptr %66, align 8, !tbaa !11
  %68 = invoke noundef double @_ZNK3ipx7Control16dfeasibility_tolEv(ptr noundef nonnull align 8 dereferenceable(1496) %67)
          to label %69 unwind label %88

69:                                               ; preds = %65
  br label %70

70:                                               ; preds = %69, %64
  %71 = phi double [ %63, %64 ], [ %68, %69 ]
  store double %71, ptr %23, align 8, !tbaa !14
  %72 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 2
  store i32 0, ptr %72, align 4, !tbaa !15
  %73 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 4
  store i32 0, ptr %73, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %74 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %74, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %75 = load ptr, ptr %24, align 8, !tbaa !5
  %76 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %75) #8
  %77 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %25, i32 0, i32 0
  store ptr %76, ptr %77, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %78 = load ptr, ptr %24, align 8, !tbaa !5
  %79 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %78) #8
  %80 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  store ptr %79, ptr %80, align 8
  br label %81

81:                                               ; preds = %111, %70
  %82 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br i1 %82, label %92, label %83

83:                                               ; preds = %81
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %114

84:                                               ; preds = %7
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %21, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %22, align 4
  br label %544

88:                                               ; preds = %168, %65, %60, %56
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %21, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %22, align 4
  br label %543

92:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  %93 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  %94 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %94, ptr %27, align 4, !tbaa !9
  %95 = load ptr, ptr %9, align 8, !tbaa !5
  %96 = load i32, ptr %27, align 4, !tbaa !9
  %97 = invoke noundef zeroext i1 @_ZNK3ipx5Basis7IsBasicEi(ptr noundef nonnull align 8 dereferenceable(176) %95, i32 noundef %96)
          to label %98 unwind label %102

98:                                               ; preds = %92
  br i1 %97, label %110, label %99

99:                                               ; preds = %98
  %100 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt11logic_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %100, ptr noundef @.str.31)
          to label %101 unwind label %106

101:                                              ; preds = %99
  invoke void @__cxa_throw(ptr %100, ptr @_ZTISt11logic_error, ptr @_ZNSt11logic_errorD1Ev) #9
          to label %550 unwind label %102

102:                                              ; preds = %101, %92
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %21, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %22, align 4
  br label %113

106:                                              ; preds = %99
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %21, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %22, align 4
  call void @__cxa_free_exception(ptr %100) #8
  br label %113

110:                                              ; preds = %98
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %111

111:                                              ; preds = %110
  %112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br label %81

113:                                              ; preds = %106, %102
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %543

114:                                              ; preds = %83
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %115

115:                                              ; preds = %164, %114
  %116 = load i32, ptr %28, align 4, !tbaa !9
  %117 = load i32, ptr %18, align 4, !tbaa !9
  %118 = load i32, ptr %17, align 4, !tbaa !9
  %119 = add nsw i32 %117, %118
  %120 = icmp slt i32 %116, %119
  br i1 %120, label %122, label %121

121:                                              ; preds = %115
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %168

122:                                              ; preds = %115
  %123 = load ptr, ptr %13, align 8, !tbaa !5
  %124 = load i32, ptr %28, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds i32, ptr %123, i64 %125
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = and i32 %127, 1
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %130, label %137

130:                                              ; preds = %122
  %131 = load ptr, ptr %11, align 8, !tbaa !5
  %132 = load i32, ptr %28, align 4, !tbaa !9
  %133 = sext i32 %132 to i64
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %131, i64 noundef %133) #8
  %135 = load double, ptr %134, align 8, !tbaa !14
  %136 = fcmp olt double %135, 0.000000e+00
  br i1 %136, label %152, label %137

137:                                              ; preds = %130, %122
  %138 = load ptr, ptr %13, align 8, !tbaa !5
  %139 = load i32, ptr %28, align 4, !tbaa !9
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds i32, ptr %138, i64 %140
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = and i32 %142, 2
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %163

145:                                              ; preds = %137
  %146 = load ptr, ptr %11, align 8, !tbaa !5
  %147 = load i32, ptr %28, align 4, !tbaa !9
  %148 = sext i32 %147 to i64
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %146, i64 noundef %148) #8
  %150 = load double, ptr %149, align 8, !tbaa !14
  %151 = fcmp ogt double %150, 0.000000e+00
  br i1 %151, label %152, label %163

152:                                              ; preds = %145, %130
  %153 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt11logic_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %153, ptr noundef @.str.32)
          to label %154 unwind label %155

154:                                              ; preds = %152
  invoke void @__cxa_throw(ptr %153, ptr @_ZTISt11logic_error, ptr @_ZNSt11logic_errorD1Ev) #9
          to label %550 unwind label %159

155:                                              ; preds = %152
  %156 = landingpad { ptr, i32 }
          cleanup
  %157 = extractvalue { ptr, i32 } %156, 0
  store ptr %157, ptr %21, align 8
  %158 = extractvalue { ptr, i32 } %156, 1
  store i32 %158, ptr %22, align 4
  call void @__cxa_free_exception(ptr %153) #8
  br label %167

159:                                              ; preds = %154
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %21, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %22, align 4
  br label %167

163:                                              ; preds = %145, %137
  br label %164

164:                                              ; preds = %163
  %165 = load i32, ptr %28, align 4, !tbaa !9
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr %28, align 4, !tbaa !9
  br label %115, !llvm.loop !17

167:                                              ; preds = %159, %155
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %543

168:                                              ; preds = %121
  %169 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 0
  %170 = load ptr, ptr %169, align 8, !tbaa !11
  invoke void @_ZNK3ipx7Control18ResetPrintIntervalEv(ptr noundef nonnull align 8 dereferenceable(1496) %170)
          to label %171 unwind label %88

171:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  store i64 0, ptr %29, align 8, !tbaa !19
  br label %172

172:                                              ; preds = %469, %467, %171
  %173 = load i64, ptr %29, align 8, !tbaa !19
  %174 = load ptr, ptr %12, align 8, !tbaa !5
  %175 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %174) #8
  %176 = icmp ult i64 %173, %175
  br i1 %176, label %177, label %505

177:                                              ; preds = %172
  %178 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 0
  %179 = load ptr, ptr %178, align 8, !tbaa !11
  %180 = invoke noundef i32 @_ZNK3ipx7Control14InterruptCheckEi(ptr noundef nonnull align 8 dereferenceable(1496) %179, i32 noundef -1)
          to label %181 unwind label %186

181:                                              ; preds = %177
  %182 = load ptr, ptr %14, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.ipx_info, ptr %182, i32 0, i32 3
  store i32 %180, ptr %183, align 4, !tbaa !21
  %184 = icmp ne i32 %180, 0
  br i1 %184, label %185, label %190

185:                                              ; preds = %181
  br label %505

186:                                              ; preds = %538, %177
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %21, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %22, align 4
  br label %542

190:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  %191 = load ptr, ptr %12, align 8, !tbaa !5
  %192 = load i64, ptr %29, align 8, !tbaa !19
  %193 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %191, i64 noundef %192) #8
  %194 = load i32, ptr %193, align 4, !tbaa !9
  store i32 %194, ptr %30, align 4, !tbaa !9
  %195 = load ptr, ptr %11, align 8, !tbaa !5
  %196 = load i32, ptr %30, align 4, !tbaa !9
  %197 = sext i32 %196 to i64
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %195, i64 noundef %197) #8
  %199 = load double, ptr %198, align 8, !tbaa !14
  %200 = fcmp oeq double %199, 0.000000e+00
  br i1 %200, label %201, label %204

201:                                              ; preds = %190
  %202 = load i64, ptr %29, align 8, !tbaa !19
  %203 = add i64 %202, 1
  store i64 %203, ptr %29, align 8, !tbaa !19
  store i32 7, ptr %31, align 4
  br label %467, !llvm.loop !23

204:                                              ; preds = %190
  %205 = load ptr, ptr %9, align 8, !tbaa !5
  %206 = load i32, ptr %30, align 4, !tbaa !9
  invoke void @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176) %205, i32 noundef %206, ptr noundef nonnull align 8 dereferenceable(44) %19, ptr noundef nonnull align 8 dereferenceable(44) %20, i1 noundef zeroext false)
          to label %207 unwind label %228

207:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %208 = load ptr, ptr %11, align 8, !tbaa !5
  %209 = load i32, ptr %30, align 4, !tbaa !9
  %210 = sext i32 %209 to i64
  %211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %208, i64 noundef %210) #8
  %212 = load double, ptr %211, align 8, !tbaa !14
  store double %212, ptr %32, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  %213 = load ptr, ptr %11, align 8, !tbaa !5
  %214 = load ptr, ptr %13, align 8, !tbaa !5
  %215 = load double, ptr %32, align 8, !tbaa !14
  %216 = load double, ptr %23, align 8, !tbaa !14
  %217 = invoke noundef i32 @_ZN3ipx9Crossover13DualRatioTestERKSt8valarrayIdERKNS_13IndexedVectorEPKidd(ptr noundef nonnull align 8 dereferenceable(40) %45, ptr noundef nonnull align 8 dereferenceable(16) %213, ptr noundef nonnull align 8 dereferenceable(44) %20, ptr noundef %214, double noundef %215, double noundef %216)
          to label %218 unwind label %232

218:                                              ; preds = %207
  store i32 %217, ptr %33, align 4, !tbaa !9
  %219 = load i32, ptr %33, align 4, !tbaa !9
  %220 = icmp sge i32 %219, 0
  br i1 %220, label %221, label %385

221:                                              ; preds = %218
  %222 = load ptr, ptr %9, align 8, !tbaa !5
  %223 = load i32, ptr %33, align 4, !tbaa !9
  %224 = invoke noundef zeroext i1 @_ZNK3ipx5Basis10IsNonbasicEi(ptr noundef nonnull align 8 dereferenceable(176) %222, i32 noundef %223)
          to label %225 unwind label %232

225:                                              ; preds = %221
  br i1 %224, label %226, label %227

226:                                              ; preds = %225
  br label %237

227:                                              ; preds = %225
  call void @__assert_fail(ptr noundef @.str.33, ptr noundef @.str.15, i32 noundef 282, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE) #10
  unreachable

228:                                              ; preds = %204
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %21, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %22, align 4
  br label %504

232:                                              ; preds = %221, %207
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %21, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %22, align 4
  br label %503

236:                                              ; No predecessors!
  br label %237

237:                                              ; preds = %236, %226
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %238 = load i32, ptr %33, align 4, !tbaa !9
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %20, i32 noundef %238)
          to label %240 unwind label %246

240:                                              ; preds = %237
  %241 = load double, ptr %239, align 8, !tbaa !14
  store double %241, ptr %34, align 8, !tbaa !14
  %242 = load double, ptr %34, align 8, !tbaa !14
  %243 = fcmp une double %242, 0.000000e+00
  br i1 %243, label %244, label %245

244:                                              ; preds = %240
  br label %251

245:                                              ; preds = %240
  call void @__assert_fail(ptr noundef @.str.34, ptr noundef @.str.15, i32 noundef 284, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE) #10
  unreachable

246:                                              ; preds = %260, %256, %251, %237
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %21, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %22, align 4
  br label %384

250:                                              ; No predecessors!
  br label %251

251:                                              ; preds = %250, %244
  %252 = load double, ptr %34, align 8, !tbaa !14
  %253 = invoke noundef double @_ZSt3absd(double noundef %252)
          to label %254 unwind label %246

254:                                              ; preds = %251
  %255 = fcmp olt double %253, 1.000000e-04
  br i1 %255, label %256, label %280

256:                                              ; preds = %254
  %257 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 0
  %258 = load ptr, ptr %257, align 8, !tbaa !11
  %259 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %258, i32 noundef 3)
          to label %260 unwind label %246

260:                                              ; preds = %256
  %261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef @.str.23)
          to label %262 unwind label %246

262:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  %263 = load double, ptr %34, align 8, !tbaa !14
  %264 = invoke noundef double @_ZSt3absd(double noundef %263)
          to label %265 unwind label %271

265:                                              ; preds = %262
  invoke void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, double noundef %264)
          to label %266 unwind label %271

266:                                              ; preds = %265
  %267 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %268 unwind label %275

268:                                              ; preds = %266
  %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %267, i8 noundef signext 10)
          to label %270 unwind label %275

270:                                              ; preds = %268
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  br label %280

271:                                              ; preds = %265, %262
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %21, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %22, align 4
  br label %279

275:                                              ; preds = %268, %266
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %21, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %22, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %279

279:                                              ; preds = %275, %271
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  br label %384

280:                                              ; preds = %270, %254
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #8
  %281 = load ptr, ptr %9, align 8, !tbaa !5
  %282 = load i32, ptr %30, align 4, !tbaa !9
  %283 = load i32, ptr %33, align 4, !tbaa !9
  %284 = load double, ptr %34, align 8, !tbaa !14
  %285 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %281, i32 noundef %282, i32 noundef %283, double noundef %284, i32 noundef 1, ptr noundef %36)
          to label %286 unwind label %309

286:                                              ; preds = %280
  %287 = load ptr, ptr %14, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.ipx_info, ptr %287, i32 0, i32 3
  store i32 %285, ptr %288, align 4, !tbaa !21
  %289 = load ptr, ptr %14, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.ipx_info, ptr %289, i32 0, i32 3
  %291 = load i32, ptr %290, align 4, !tbaa !21
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %332

293:                                              ; preds = %286
  %294 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 0
  %295 = load ptr, ptr %294, align 8, !tbaa !11
  %296 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %295, i32 noundef 1)
          to label %297 unwind label %309

297:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #8
  invoke void @_ZN3ipx8TextlineIA40_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 1 dereferenceable(40) @.str.24)
          to label %298 unwind label %313

298:                                              ; preds = %297
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %296, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %300 unwind label %317

300:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #8
  %301 = load ptr, ptr %9, align 8, !tbaa !5
  %302 = invoke noundef double @_ZNK3ipx5Basis16MinSingularValueEv(ptr noundef nonnull align 8 dereferenceable(176) %301)
          to label %303 unwind label %321

303:                                              ; preds = %300
  invoke void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, double noundef %302)
          to label %304 unwind label %321

304:                                              ; preds = %303
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %306 unwind label %325

306:                                              ; preds = %304
  %307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %305, i8 noundef signext 10)
          to label %308 unwind label %325

308:                                              ; preds = %306
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  store i32 8, ptr %31, align 4
  br label %380

309:                                              ; preds = %336, %293, %280
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %21, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %22, align 4
  br label %383

313:                                              ; preds = %297
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %21, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %22, align 4
  br label %331

317:                                              ; preds = %298
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %21, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %22, align 4
  br label %330

321:                                              ; preds = %303, %300
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %21, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %22, align 4
  br label %329

325:                                              ; preds = %306, %304
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %21, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %22, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %329

329:                                              ; preds = %325, %321
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #8
  br label %330

330:                                              ; preds = %329, %317
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  br label %331

331:                                              ; preds = %330, %313
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #8
  br label %383

332:                                              ; preds = %286
  %333 = load i8, ptr %36, align 1, !tbaa !24, !range !26, !noundef !27
  %334 = trunc i8 %333 to i1
  br i1 %334, label %336, label %335

335:                                              ; preds = %332
  store i32 7, ptr %31, align 4
  br label %380, !llvm.loop !23

336:                                              ; preds = %332
  %337 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 4
  %338 = load i32, ptr %337, align 4, !tbaa !16
  %339 = add nsw i32 %338, 1
  store i32 %339, ptr %337, align 4, !tbaa !16
  %340 = load ptr, ptr %11, align 8, !tbaa !5
  %341 = load i32, ptr %33, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %340, i64 noundef %342) #8
  %344 = load double, ptr %343, align 8, !tbaa !14
  %345 = load i32, ptr %33, align 4, !tbaa !9
  %346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %20, i32 noundef %345)
          to label %347 unwind label %309

347:                                              ; preds = %336
  %348 = load double, ptr %346, align 8, !tbaa !14
  %349 = fdiv double %344, %348
  store double %349, ptr %32, align 8, !tbaa !14
  %350 = load ptr, ptr %13, align 8, !tbaa !5
  %351 = load i32, ptr %30, align 4, !tbaa !9
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds i32, ptr %350, i64 %352
  %354 = load i32, ptr %353, align 4, !tbaa !9
  %355 = and i32 %354, 1
  %356 = icmp ne i32 %355, 0
  br i1 %356, label %357, label %364

357:                                              ; preds = %347
  %358 = load double, ptr %32, align 8, !tbaa !14
  %359 = fcmp oge double %358, 0.000000e+00
  br i1 %359, label %360, label %361

360:                                              ; preds = %357
  br label %363

361:                                              ; preds = %357
  call void @__assert_fail(ptr noundef @.str.35, ptr noundef @.str.15, i32 noundef 303, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE) #10
  unreachable

362:                                              ; No predecessors!
  br label %363

363:                                              ; preds = %362, %360
  br label %364

364:                                              ; preds = %363, %347
  %365 = load ptr, ptr %13, align 8, !tbaa !5
  %366 = load i32, ptr %30, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds i32, ptr %365, i64 %367
  %369 = load i32, ptr %368, align 4, !tbaa !9
  %370 = and i32 %369, 2
  %371 = icmp ne i32 %370, 0
  br i1 %371, label %372, label %379

372:                                              ; preds = %364
  %373 = load double, ptr %32, align 8, !tbaa !14
  %374 = fcmp ole double %373, 0.000000e+00
  br i1 %374, label %375, label %376

375:                                              ; preds = %372
  br label %378

376:                                              ; preds = %372
  call void @__assert_fail(ptr noundef @.str.36, ptr noundef @.str.15, i32 noundef 305, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE) #10
  unreachable

377:                                              ; No predecessors!
  br label %378

378:                                              ; preds = %377, %375
  br label %379

379:                                              ; preds = %378, %364
  store i32 0, ptr %31, align 4
  br label %380

380:                                              ; preds = %379, %335, %308
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  %381 = load i32, ptr %31, align 4
  switch i32 %381, label %466 [
    i32 0, label %382
  ]

382:                                              ; preds = %380
  br label %385

383:                                              ; preds = %331, %309
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %384

384:                                              ; preds = %383, %279, %246
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %503

385:                                              ; preds = %382, %218
  %386 = load double, ptr %32, align 8, !tbaa !14
  %387 = fcmp une double %386, 0.000000e+00
  br i1 %387, label %388, label %414

388:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #8
  %389 = getelementptr inbounds %class.anon.20, ptr %39, i32 0, i32 0
  %390 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %390, ptr %389, align 8, !tbaa !5
  %391 = getelementptr inbounds %class.anon.20, ptr %39, i32 0, i32 1
  store ptr %32, ptr %391, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES6_RKSt6vectorIiSaIiEEPKiPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %19, ptr noundef nonnull align 8 dereferenceable(16) %39)
          to label %392 unwind label %405

392:                                              ; preds = %388
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #8
  %393 = getelementptr inbounds %class.anon.21, ptr %40, i32 0, i32 0
  %394 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %394, ptr %393, align 8, !tbaa !5
  %395 = getelementptr inbounds %class.anon.21, ptr %40, i32 0, i32 1
  store ptr %32, ptr %395, align 8, !tbaa !5
  %396 = getelementptr inbounds %class.anon.21, ptr %40, i32 0, i32 2
  store ptr %13, ptr %396, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES6_RKSt6vectorIiSaIiEEPKiPNS_4InfoEE3$_1EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %20, ptr noundef nonnull align 8 dereferenceable(24) %40)
          to label %397 unwind label %409

397:                                              ; preds = %392
  %398 = load double, ptr %32, align 8, !tbaa !14
  %399 = load ptr, ptr %11, align 8, !tbaa !5
  %400 = load i32, ptr %30, align 4, !tbaa !9
  %401 = sext i32 %400 to i64
  %402 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %399, i64 noundef %401) #8
  %403 = load double, ptr %402, align 8, !tbaa !14
  %404 = fsub double %403, %398
  store double %404, ptr %402, align 8, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #8
  br label %414

405:                                              ; preds = %388
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %21, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %22, align 4
  br label %413

409:                                              ; preds = %392
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %21, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #8
  br label %413

413:                                              ; preds = %409, %405
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #8
  br label %503

414:                                              ; preds = %397, %385
  %415 = load i32, ptr %33, align 4, !tbaa !9
  %416 = icmp sge i32 %415, 0
  br i1 %416, label %417, label %422

417:                                              ; preds = %414
  %418 = load ptr, ptr %11, align 8, !tbaa !5
  %419 = load i32, ptr %33, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %418, i64 noundef %420) #8
  store double 0.000000e+00, ptr %421, align 8, !tbaa !14
  br label %433

422:                                              ; preds = %414
  %423 = load ptr, ptr %11, align 8, !tbaa !5
  %424 = load i32, ptr %30, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %423, i64 noundef %425) #8
  %427 = load double, ptr %426, align 8, !tbaa !14
  %428 = fcmp oeq double %427, 0.000000e+00
  br i1 %428, label %429, label %430

429:                                              ; preds = %422
  br label %432

430:                                              ; preds = %422
  call void @__assert_fail(ptr noundef @.str.37, ptr noundef @.str.15, i32 noundef 326, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE) #10
  unreachable

431:                                              ; No predecessors!
  br label %432

432:                                              ; preds = %431, %429
  br label %433

433:                                              ; preds = %432, %417
  %434 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 2
  %435 = load i32, ptr %434, align 4, !tbaa !15
  %436 = add nsw i32 %435, 1
  store i32 %436, ptr %434, align 4, !tbaa !15
  %437 = load i64, ptr %29, align 8, !tbaa !19
  %438 = add i64 %437, 1
  store i64 %438, ptr %29, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 392, ptr %41) #8
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %41)
          to label %439 unwind label %470

439:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 32, ptr %42) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %41, ptr noundef nonnull align 8 dereferenceable(32) %42)
          to label %440 unwind label %474

440:                                              ; preds = %439
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  %441 = getelementptr inbounds i8, ptr %41, i64 16
  %442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %441, ptr noundef @.str.27)
          to label %443 unwind label %478

443:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #8
  %444 = load ptr, ptr %12, align 8, !tbaa !5
  %445 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %444) #8
  %446 = load i64, ptr %29, align 8, !tbaa !19
  %447 = sub i64 %445, %446
  %448 = trunc i64 %447 to i32
  invoke void @_ZN3ipx6FormatB5cxx11Eii(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %43, i32 noundef %448, i32 noundef 8)
          to label %449 unwind label %482

449:                                              ; preds = %443
  %450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %451 unwind label %486

451:                                              ; preds = %449
  %452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %450, ptr noundef @.str.38)
          to label %453 unwind label %486

453:                                              ; preds = %451
  %454 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %452, ptr noundef @.str.29)
          to label %455 unwind label %486

455:                                              ; preds = %453
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #8
  %456 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 4
  %457 = load i32, ptr %456, align 4, !tbaa !16
  invoke void @_ZN3ipx6FormatB5cxx11Eii(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %44, i32 noundef %457, i32 noundef 7)
          to label %458 unwind label %490

458:                                              ; preds = %455
  %459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %454, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %460 unwind label %494

460:                                              ; preds = %458
  %461 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %459, ptr noundef @.str.30)
          to label %462 unwind label %494

462:                                              ; preds = %460
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  %463 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 0
  %464 = load ptr, ptr %463, align 8, !tbaa !11
  invoke void @_ZNK3ipx7Control12hIntervalLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496) %464, ptr noundef nonnull align 8 dereferenceable(128) %41)
          to label %465 unwind label %478

465:                                              ; preds = %462
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %41) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr %41) #8
  store i32 0, ptr %31, align 4
  br label %466

466:                                              ; preds = %465, %380
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %467

467:                                              ; preds = %466, %201
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  %468 = load i32, ptr %31, align 4
  switch i32 %468, label %550 [
    i32 0, label %469
    i32 7, label %172
    i32 8, label %505
  ]

469:                                              ; preds = %467
  br label %172, !llvm.loop !23

470:                                              ; preds = %433
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %21, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %22, align 4
  br label %502

474:                                              ; preds = %439
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %21, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %22, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %42) #8
  br label %501

478:                                              ; preds = %462, %440
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %21, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %22, align 4
  br label %501

482:                                              ; preds = %443
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %21, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %22, align 4
  br label %500

486:                                              ; preds = %453, %451, %449
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %21, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %22, align 4
  br label %499

490:                                              ; preds = %455
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %21, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %22, align 4
  br label %498

494:                                              ; preds = %460, %458
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %21, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %22, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  br label %498

498:                                              ; preds = %494, %490
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #8
  br label %499

499:                                              ; preds = %498, %486
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %500

500:                                              ; preds = %499, %482
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #8
  br label %501

501:                                              ; preds = %500, %478, %474
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %41) #8
  br label %502

502:                                              ; preds = %501, %470
  call void @llvm.lifetime.end.p0(i64 392, ptr %41) #8
  br label %503

503:                                              ; preds = %502, %413, %384, %232
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %504

504:                                              ; preds = %503, %228
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  br label %542

505:                                              ; preds = %467, %185, %172
  %506 = load ptr, ptr %14, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.ipx_info, ptr %506, i32 0, i32 3
  %508 = load i32, ptr %507, align 4, !tbaa !21
  %509 = icmp eq i32 %508, 998
  br i1 %509, label %510, label %515

510:                                              ; preds = %505
  %511 = load ptr, ptr %14, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.ipx_info, ptr %511, i32 0, i32 3
  store i32 0, ptr %512, align 4, !tbaa !21
  %513 = load ptr, ptr %14, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.ipx_info, ptr %513, i32 0, i32 1
  store i32 5, ptr %514, align 4, !tbaa !28
  br label %538

515:                                              ; preds = %505
  %516 = load ptr, ptr %14, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.ipx_info, ptr %516, i32 0, i32 3
  %518 = load i32, ptr %517, align 4, !tbaa !21
  %519 = icmp eq i32 %518, 999
  br i1 %519, label %520, label %525

520:                                              ; preds = %515
  %521 = load ptr, ptr %14, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.ipx_info, ptr %521, i32 0, i32 3
  store i32 0, ptr %522, align 4, !tbaa !21
  %523 = load ptr, ptr %14, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.ipx_info, ptr %523, i32 0, i32 2
  store i32 6, ptr %524, align 8, !tbaa !29
  br label %537

525:                                              ; preds = %515
  %526 = load ptr, ptr %14, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.ipx_info, ptr %526, i32 0, i32 3
  %528 = load i32, ptr %527, align 4, !tbaa !21
  %529 = icmp ne i32 %528, 0
  br i1 %529, label %530, label %533

530:                                              ; preds = %525
  %531 = load ptr, ptr %14, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.ipx_info, ptr %531, i32 0, i32 2
  store i32 9, ptr %532, align 8, !tbaa !29
  br label %536

533:                                              ; preds = %525
  %534 = load ptr, ptr %14, align 8, !tbaa !5
  %535 = getelementptr inbounds %struct.ipx_info, ptr %534, i32 0, i32 2
  store i32 1, ptr %535, align 8, !tbaa !29
  br label %536

536:                                              ; preds = %533, %530
  br label %537

537:                                              ; preds = %536, %520
  br label %538

538:                                              ; preds = %537, %510
  %539 = invoke noundef double @_ZNK3ipx5Timer7ElapsedEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %540 unwind label %186

540:                                              ; preds = %538
  %541 = getelementptr inbounds %"class.ipx::Crossover", ptr %45, i32 0, i32 6
  store double %539, ptr %541, align 8, !tbaa !30
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %20) #8
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %19) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  ret void

542:                                              ; preds = %504, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %543

543:                                              ; preds = %542, %167, %113, %88
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %20) #8
  br label %544

544:                                              ; preds = %543, %84
  call void @llvm.lifetime.end.p0(i64 48, ptr %20) #8
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %19) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %545

545:                                              ; preds = %544
  %546 = load ptr, ptr %21, align 8
  %547 = load i32, ptr %22, align 4
  %548 = insertvalue { ptr, i32 } poison, ptr %546, 0
  %549 = insertvalue { ptr, i32 } %548, i32 %547, 1
  resume { ptr, i32 } %549

550:                                              ; preds = %467, %154, %101
  unreachable
}

declare void @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(44), i1 noundef zeroext) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3ipx9Crossover13DualRatioTestERKSt8valarrayIdERKNS_13IndexedVectorEPKidd(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(44), ptr noundef, double noundef, double noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN3ipx16for_each_nonzeroIZNS_9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES6_RKSt6vectorIiSaIiEEPKiPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(16)) #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN3ipx16for_each_nonzeroIZNS_9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES6_RKSt6vectorIiSaIiEEPKiPNS_4InfoEE3$_1EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(24)) #3

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nounwind }
attributes #9 = { noreturn }
attributes #10 = { noreturn 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 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTSN3ipx9CrossoverE", !6, i64 0, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !13, i64 24, !13, i64 32}
!13 = !{!"double", !7, i64 0}
!14 = !{!13, !13, i64 0}
!15 = !{!12, !10, i64 12}
!16 = !{!12, !10, i64 20}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!20, !20, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!22, !10, i64 12}
!22 = !{!"_ZTS8ipx_info", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !13, i64 80, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !13, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !13, i64 168, !13, i64 176, !13, i64 184, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !10, i64 212, !10, i64 216, !13, i64 224, !13, i64 232, !13, i64 240, !13, i64 248, !13, i64 256, !13, i64 264, !13, i64 272, !13, i64 280, !13, i64 288, !13, i64 296, !13, i64 304, !13, i64 312, !13, i64 320, !13, i64 328, !13, i64 336, !13, i64 344, !13, i64 352, !13, i64 360, !13, i64 368, !13, i64 376, !13, i64 384, !13, i64 392, !13, i64 400, !13, i64 408, !10, i64 416, !10, i64 420, !10, i64 424, !10, i64 428, !13, i64 432, !13, i64 440, !13, i64 448, !13, i64 456}
!23 = distinct !{!23, !18}
!24 = !{!25, !25, i64 0}
!25 = !{!"bool", !7, i64 0}
!26 = !{i8 0, i8 2}
!27 = !{}
!28 = !{!22, !10, i64 4}
!29 = !{!22, !10, i64 8}
!30 = !{!12, !13, i64 32}


; 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.ipx::Timer" = type { %"class.std::chrono::time_point" }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }
%"class.ipx::IndexedVector" = type <{ %"class.std::valarray", %"class.std::vector.4", i32, [4 x i8] }>
%"class.std::valarray" = type { i64, ptr }
%"class.std::vector.4" = type { %"struct.std::_Vector_base.5" }
%"struct.std::_Vector_base.5" = 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.__gnu_cxx::__normal_iterator" = type { ptr }
%class.anon.20 = type { ptr, ptr }
%class.anon.21 = type { ptr, ptr, ptr }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }

@.str.15 = external hidden unnamed_addr constant [74 x i8], align 1
@_ZTISt11logic_error = external constant ptr
@.str.23 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [47 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [22 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE = external hidden unnamed_addr constant [106 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [23 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

declare noundef nonnull align 8 dereferenceable(704) ptr @_ZNK3ipx5Basis5modelEv(ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #2

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) local_unnamed_addr #4

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, double noundef) local_unnamed_addr #4

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #5 align 2

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3ipx5Basis10IsNonbasicEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) local_unnamed_addr #5 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496), i32 noundef) local_unnamed_addr #2

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

declare void @_ZN3ipx5TimerC1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2

declare void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef) unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3ipx5Model8dualizedEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZNSt11logic_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #2

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt11logic_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #7

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

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

declare void @_ZNK3ipx7Control18ResetPrintIntervalEv(ptr noundef nonnull align 8 dereferenceable(1496)) local_unnamed_addr #2

declare noundef i32 @_ZNK3ipx7Control14InterruptCheckEi(ptr noundef nonnull align 8 dereferenceable(1496), i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(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(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) local_unnamed_addr #5

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

declare noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, i32 noundef, double noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

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

declare noundef double @_ZNK3ipx5Basis16MinSingularValueEv(ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #2

declare void @_ZN3ipx6FormatB5cxx11Eii(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, i32 noundef, i32 noundef) local_unnamed_addr #2

declare void @_ZNK3ipx7Control12hIntervalLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496), ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #2

declare noundef double @_ZNK3ipx5Timer7ElapsedEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef %5, ptr nocapture noundef %6) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca %"class.ipx::Timer", align 8
  %10 = alloca %"class.ipx::IndexedVector", align 8
  %11 = alloca %"class.ipx::IndexedVector", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca double, align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca i8, align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %class.anon.20, align 8
  %20 = alloca %class.anon.21, align 8
  %21 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %5, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  call void @_ZN3ipx5TimerC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %9)
  %25 = call noundef nonnull align 8 dereferenceable(704) ptr @_ZNK3ipx5Basis5modelEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
  %26 = call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %25)
  %27 = call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %25)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %10) #8
  call void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %10, i32 noundef %26)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %11) #8
  %28 = add nsw i32 %27, %26
  invoke void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %11, i32 noundef %28)
          to label %29 unwind label %44

29:                                               ; preds = %7
  %30 = call noundef zeroext i1 @_ZNK3ipx5Model8dualizedEv(ptr noundef nonnull align 8 dereferenceable(704) %25)
  %31 = load ptr, ptr %0, align 8, !tbaa !9
  br i1 %30, label %32, label %34

32:                                               ; preds = %29
  %33 = call noundef double @_ZNK3ipx7Control16pfeasibility_tolEv(ptr noundef nonnull align 8 dereferenceable(1496) %31)
  br label %36

34:                                               ; preds = %29
  %35 = call noundef double @_ZNK3ipx7Control16dfeasibility_tolEv(ptr noundef nonnull align 8 dereferenceable(1496) %31)
  br label %36

36:                                               ; preds = %34, %32
  %37 = phi double [ %33, %32 ], [ %35, %34 ]
  %38 = getelementptr inbounds i8, ptr %0, i64 12
  store i32 0, ptr %38, align 4, !tbaa !13
  %39 = getelementptr inbounds i8, ptr %0, i64 20
  store i32 0, ptr %39, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %40 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  store ptr %40, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %41 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  store ptr %41, ptr %13, align 8
  %42 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br i1 %42, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %57, %36
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  %43 = icmp sgt i32 %28, 0
  br i1 %43, label %.lr.ph152.preheader, label %._crit_edge153

.lr.ph152.preheader:                              ; preds = %._crit_edge
  %wide.trip.count = zext nneg i32 %28 to i64
  br label %.lr.ph152

44:                                               ; preds = %7
  %45 = landingpad { ptr, i32 }
          cleanup
  br label %290

46:                                               ; preds = %._crit_edge153
  %47 = landingpad { ptr, i32 }
          cleanup
  br label %289

.lr.ph:                                           ; preds = %36, %57
  %48 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %49 = load i32, ptr %48, align 4, !tbaa !15
  %50 = invoke noundef zeroext i1 @_ZNK3ipx5Basis7IsBasicEi(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef %49)
          to label %51 unwind label %.loopexit145

51:                                               ; preds = %.lr.ph
  br i1 %50, label %57, label %52

52:                                               ; preds = %51
  %53 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt11logic_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull @.str.31)
          to label %54 unwind label %55

54:                                               ; preds = %52
  invoke void @__cxa_throw(ptr nonnull %53, ptr nonnull @_ZTISt11logic_error, ptr nonnull @_ZNSt11logic_errorD1Ev) #9
          to label %291 unwind label %.loopexit.split-lp146

.loopexit145:                                     ; preds = %.lr.ph
  %lpad.loopexit147 = landingpad { ptr, i32 }
          cleanup
  br label %60

.loopexit.split-lp146:                            ; preds = %54
  %lpad.loopexit.split-lp148 = landingpad { ptr, i32 }
          cleanup
  br label %60

55:                                               ; preds = %52
  %56 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %53) #8
  br label %60

57:                                               ; preds = %51
  %58 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %59 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br i1 %59, label %.lr.ph, label %._crit_edge

60:                                               ; preds = %.loopexit145, %.loopexit.split-lp146, %55
  %.pn139 = phi { ptr, i32 } [ %56, %55 ], [ %lpad.loopexit147, %.loopexit145 ], [ %lpad.loopexit.split-lp148, %.loopexit.split-lp146 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %289

._crit_edge153:                                   ; preds = %89, %._crit_edge
  %61 = load ptr, ptr %0, align 8, !tbaa !9
  invoke void @_ZNK3ipx7Control18ResetPrintIntervalEv(ptr noundef nonnull align 8 dereferenceable(1496) %61)
          to label %.preheader unwind label %46

.preheader:                                       ; preds = %._crit_edge153
  %62 = getelementptr inbounds i8, ptr %6, i64 12
  %63 = getelementptr inbounds i8, ptr %19, i64 8
  %64 = getelementptr inbounds i8, ptr %20, i64 8
  %65 = getelementptr inbounds i8, ptr %20, i64 16
  %66 = getelementptr inbounds i8, ptr %21, i64 16
  br label %90

.lr.ph152:                                        ; preds = %.lr.ph152.preheader, %89
  %indvars.iv = phi i64 [ 0, %.lr.ph152.preheader ], [ %indvars.iv.next, %89 ]
  %67 = load ptr, ptr %8, align 8, !tbaa !5
  %68 = getelementptr inbounds i32, ptr %67, i64 %indvars.iv
  %69 = load i32, ptr %68, align 4, !tbaa !15
  %70 = and i32 %69, 1
  %.not135 = icmp eq i32 %70, 0
  br i1 %.not135, label %75, label %71

71:                                               ; preds = %.lr.ph152
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %indvars.iv) #8
  %73 = load double, ptr %72, align 8, !tbaa !16
  %74 = fcmp olt double %73, 0.000000e+00
  br i1 %74, label %82, label %._crit_edge155

._crit_edge155:                                   ; preds = %71
  %.pre = load ptr, ptr %8, align 8, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i32, ptr %.pre, i64 %indvars.iv
  %.pre156 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !15
  br label %75

75:                                               ; preds = %._crit_edge155, %.lr.ph152
  %76 = phi i32 [ %.pre156, %._crit_edge155 ], [ %69, %.lr.ph152 ]
  %77 = and i32 %76, 2
  %.not136 = icmp eq i32 %77, 0
  br i1 %.not136, label %89, label %78

78:                                               ; preds = %75
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %indvars.iv) #8
  %80 = load double, ptr %79, align 8, !tbaa !16
  %81 = fcmp ogt double %80, 0.000000e+00
  br i1 %81, label %82, label %89

82:                                               ; preds = %78, %71
  %83 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt11logic_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %83, ptr noundef nonnull @.str.32)
          to label %84 unwind label %85

84:                                               ; preds = %82
  invoke void @__cxa_throw(ptr nonnull %83, ptr nonnull @_ZTISt11logic_error, ptr nonnull @_ZNSt11logic_errorD1Ev) #9
          to label %291 unwind label %87

85:                                               ; preds = %82
  %86 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %83) #8
  br label %289

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

89:                                               ; preds = %75, %78
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge153, label %.lr.ph152, !llvm.loop !17

90:                                               ; preds = %.preheader, %255
  %.0106 = phi i64 [ %.2108, %255 ], [ 0, %.preheader ]
  %91 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %92 = icmp ult i64 %.0106, %91
  br i1 %92, label %93, label %thread-pre-split

93:                                               ; preds = %90
  %94 = load ptr, ptr %0, align 8, !tbaa !9
  %95 = invoke noundef i32 @_ZNK3ipx7Control14InterruptCheckEi(ptr noundef nonnull align 8 dereferenceable(1496) %94, i32 noundef -1)
          to label %96 unwind label %.loopexit

96:                                               ; preds = %93
  store i32 %95, ptr %62, align 4, !tbaa !19
  %.not = icmp eq i32 %95, 0
  br i1 %.not, label %97, label %.loopexit159

.loopexit:                                        ; preds = %93
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %289

.loopexit.split-lp:                               ; preds = %285
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %289

97:                                               ; preds = %96
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %.0106) #8
  %99 = load i32, ptr %98, align 4, !tbaa !15
  %100 = sext i32 %99 to i64
  %101 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %100) #8
  %102 = load double, ptr %101, align 8, !tbaa !16
  %103 = fcmp oeq double %102, 0.000000e+00
  br i1 %103, label %104, label %106

104:                                              ; preds = %97
  %105 = add nuw i64 %.0106, 1
  br label %255, !llvm.loop !21

106:                                              ; preds = %97
  invoke void @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef %99, ptr noundef nonnull align 8 dereferenceable(44) %10, ptr noundef nonnull align 8 dereferenceable(44) %11, i1 noundef zeroext false)
          to label %107 unwind label %117

107:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %100) #8
  %109 = load double, ptr %108, align 8, !tbaa !16
  store double %109, ptr %14, align 8, !tbaa !16
  %110 = load ptr, ptr %8, align 8, !tbaa !5
  %111 = invoke noundef i32 @_ZN3ipx9Crossover13DualRatioTestERKSt8valarrayIdERKNS_13IndexedVectorEPKidd(ptr noundef nonnull align 8 dereferenceable(40) %0, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(44) %11, ptr noundef %110, double noundef %109, double noundef %37)
          to label %112 unwind label %119

112:                                              ; preds = %107
  %113 = icmp sgt i32 %111, -1
  br i1 %113, label %114, label %._crit_edge157

._crit_edge157:                                   ; preds = %112
  %.pre158 = load double, ptr %14, align 8, !tbaa !16
  br label %204

114:                                              ; preds = %112
  %115 = call noundef zeroext i1 @_ZNK3ipx5Basis10IsNonbasicEi(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef %111)
  br i1 %115, label %121, label %116

116:                                              ; preds = %114
  call void @__assert_fail(ptr noundef nonnull @.str.33, ptr noundef nonnull @.str.15, i32 noundef 282, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE) #10
  unreachable

117:                                              ; preds = %106
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %289

119:                                              ; preds = %107
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %275

121:                                              ; preds = %114
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %11, i32 noundef %111)
  %123 = load double, ptr %122, align 8, !tbaa !16
  %124 = fcmp une double %123, 0.000000e+00
  br i1 %124, label %128, label %125

125:                                              ; preds = %121
  call void @__assert_fail(ptr noundef nonnull @.str.34, ptr noundef nonnull @.str.15, i32 noundef 284, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE) #10
  unreachable

126:                                              ; preds = %134, %131
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %275

128:                                              ; preds = %121
  %129 = call noundef double @_ZSt3absd(double noundef %123)
  %130 = fcmp olt double %129, 1.000000e-04
  br i1 %130, label %131, label %148

131:                                              ; preds = %128
  %132 = load ptr, ptr %0, align 8, !tbaa !9
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %132, i32 noundef 3)
          to label %134 unwind label %126

134:                                              ; preds = %131
  %135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull @.str.23)
          to label %136 unwind label %126

136:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #8
  %137 = call noundef double @_ZSt3absd(double noundef %123)
  invoke void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, double noundef %137)
          to label %138 unwind label %143

138:                                              ; preds = %136
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %140 unwind label %145

140:                                              ; preds = %138
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %139, i8 noundef signext 10)
          to label %142 unwind label %145

142:                                              ; preds = %140
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  br label %148

143:                                              ; preds = %136
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %147

145:                                              ; preds = %140, %138
  %146 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  br label %147

147:                                              ; preds = %145, %143
  %.pn = phi { ptr, i32 } [ %146, %145 ], [ %144, %143 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #8
  br label %275

148:                                              ; preds = %142, %128
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #8
  %149 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 noundef %99, i32 noundef %111, double noundef %123, i32 noundef 1, ptr noundef nonnull %16)
          to label %150 unwind label %165

150:                                              ; preds = %148
  store i32 %149, ptr %62, align 4, !tbaa !19
  %.not114 = icmp eq i32 %149, 0
  br i1 %.not114, label %178, label %151

151:                                              ; preds = %150
  %152 = load ptr, ptr %0, align 8, !tbaa !9
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %152, i32 noundef 1)
          to label %154 unwind label %165

154:                                              ; preds = %151
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  invoke void @_ZN3ipx8TextlineIA40_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %17, ptr noundef nonnull align 1 dereferenceable(40) @.str.24)
          to label %155 unwind label %167

155:                                              ; preds = %154
  %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %157 unwind label %169

157:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #8
  %158 = invoke noundef double @_ZNK3ipx5Basis16MinSingularValueEv(ptr noundef nonnull align 8 dereferenceable(176) %1)
          to label %159 unwind label %171

159:                                              ; preds = %157
  invoke void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %18, double noundef %158)
          to label %160 unwind label %171

160:                                              ; preds = %159
  %161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %162 unwind label %173

162:                                              ; preds = %160
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %161, i8 noundef signext 10)
          to label %164 unwind label %173

164:                                              ; preds = %162
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br label %.thread

165:                                              ; preds = %151, %148
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %203

167:                                              ; preds = %154
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %177

169:                                              ; preds = %155
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %176

171:                                              ; preds = %159, %157
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %175

173:                                              ; preds = %162, %160
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %175

175:                                              ; preds = %173, %171
  %.pn115 = phi { ptr, i32 } [ %174, %173 ], [ %172, %171 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  br label %176

176:                                              ; preds = %175, %169
  %.pn115.pn = phi { ptr, i32 } [ %.pn115, %175 ], [ %170, %169 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %177

177:                                              ; preds = %176, %167
  %.pn115.pn.pn = phi { ptr, i32 } [ %.pn115.pn, %176 ], [ %168, %167 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  br label %203

178:                                              ; preds = %150
  %179 = load i8, ptr %16, align 1, !tbaa !22, !range !24, !noundef !25
  %180 = trunc nuw i8 %179 to i1
  br i1 %180, label %181, label %.thread, !llvm.loop !21

181:                                              ; preds = %178
  %182 = load i32, ptr %39, align 4, !tbaa !14
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr %39, align 4, !tbaa !14
  %184 = zext nneg i32 %111 to i64
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %184) #8
  %186 = load double, ptr %185, align 8, !tbaa !16
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %11, i32 noundef %111)
  %188 = load double, ptr %187, align 8, !tbaa !16
  %189 = fdiv double %186, %188
  store double %189, ptr %14, align 8, !tbaa !16
  %190 = load ptr, ptr %8, align 8, !tbaa !5
  %191 = getelementptr inbounds i32, ptr %190, i64 %100
  %192 = load i32, ptr %191, align 4, !tbaa !15
  %193 = and i32 %192, 1
  %194 = icmp eq i32 %193, 0
  %195 = fcmp oge double %189, 0.000000e+00
  %or.cond = select i1 %194, i1 true, i1 %195
  br i1 %or.cond, label %197, label %196

196:                                              ; preds = %181
  call void @__assert_fail(ptr noundef nonnull @.str.35, ptr noundef nonnull @.str.15, i32 noundef 303, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE) #10
  unreachable

197:                                              ; preds = %181
  %198 = and i32 %192, 2
  %199 = icmp eq i32 %198, 0
  %200 = fcmp ole double %189, 0.000000e+00
  %or.cond3 = select i1 %199, i1 true, i1 %200
  br i1 %or.cond3, label %202, label %201

201:                                              ; preds = %197
  call void @__assert_fail(ptr noundef nonnull @.str.36, ptr noundef nonnull @.str.15, i32 noundef 305, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE) #10
  unreachable

.thread:                                          ; preds = %164, %178
  %.0102.ph = phi i32 [ 7, %178 ], [ 8, %164 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  br label %254

202:                                              ; preds = %197
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  br label %204

203:                                              ; preds = %177, %165
  %.pn115.pn.pn.pn = phi { ptr, i32 } [ %.pn115.pn.pn, %177 ], [ %166, %165 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #8
  br label %275

204:                                              ; preds = %._crit_edge157, %202
  %205 = phi double [ %.pre158, %._crit_edge157 ], [ %189, %202 ]
  %206 = fcmp une double %205, 0.000000e+00
  br i1 %206, label %207, label %219

207:                                              ; preds = %204
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #8
  store ptr %2, ptr %19, align 8, !tbaa !5
  store ptr %14, ptr %63, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES6_RKSt6vectorIiSaIiEEPKiPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %10, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %208 unwind label %214

208:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #8
  store ptr %3, ptr %20, align 8, !tbaa !5
  store ptr %14, ptr %64, align 8, !tbaa !5
  store ptr %8, ptr %65, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES6_RKSt6vectorIiSaIiEEPKiPNS_4InfoEE3$_1EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %11, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %209 unwind label %216

209:                                              ; preds = %208
  %210 = load double, ptr %14, align 8, !tbaa !16
  %211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %100) #8
  %212 = load double, ptr %211, align 8, !tbaa !16
  %213 = fsub double %212, %210
  store double %213, ptr %211, align 8, !tbaa !16
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #8
  br label %219

214:                                              ; preds = %207
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %218

216:                                              ; preds = %208
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  br label %218

218:                                              ; preds = %216, %214
  %.pn121 = phi { ptr, i32 } [ %217, %216 ], [ %215, %214 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #8
  br label %275

219:                                              ; preds = %209, %204
  br i1 %113, label %220, label %223

220:                                              ; preds = %219
  %221 = zext nneg i32 %111 to i64
  %222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %221) #8
  store double 0.000000e+00, ptr %222, align 8, !tbaa !16
  br label %228

223:                                              ; preds = %219
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %100) #8
  %225 = load double, ptr %224, align 8, !tbaa !16
  %226 = fcmp oeq double %225, 0.000000e+00
  br i1 %226, label %228, label %227

227:                                              ; preds = %223
  call void @__assert_fail(ptr noundef nonnull @.str.37, ptr noundef nonnull @.str.15, i32 noundef 326, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES5_RKSt6vectorIiSaIiEEPKiPNS_4InfoE) #10
  unreachable

228:                                              ; preds = %223, %220
  %229 = load i32, ptr %38, align 4, !tbaa !13
  %230 = add nsw i32 %229, 1
  store i32 %230, ptr %38, align 4, !tbaa !13
  %231 = add nuw i64 %.0106, 1
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %21) #8
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %21)
          to label %232 unwind label %256

232:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %21, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %233 unwind label %258

233:                                              ; preds = %232
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #8
  %234 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull @.str.27)
          to label %235 unwind label %260

235:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #8
  %236 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #8
  %237 = sub i64 %236, %231
  %238 = trunc i64 %237 to i32
  invoke void @_ZN3ipx6FormatB5cxx11Eii(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %23, i32 noundef %238, i32 noundef 8)
          to label %239 unwind label %262

239:                                              ; preds = %235
  %240 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %234, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %241 unwind label %264

241:                                              ; preds = %239
  %242 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef nonnull @.str.38)
          to label %243 unwind label %264

243:                                              ; preds = %241
  %244 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef nonnull @.str.29)
          to label %245 unwind label %264

245:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #8
  %246 = load i32, ptr %39, align 4, !tbaa !14
  invoke void @_ZN3ipx6FormatB5cxx11Eii(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %24, i32 noundef %246, i32 noundef 7)
          to label %247 unwind label %266

247:                                              ; preds = %245
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %249 unwind label %268

249:                                              ; preds = %247
  %250 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef nonnull @.str.30)
          to label %251 unwind label %268

251:                                              ; preds = %249
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  %252 = load ptr, ptr %0, align 8, !tbaa !9
  invoke void @_ZNK3ipx7Control12hIntervalLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496) %252, ptr noundef nonnull align 8 dereferenceable(128) %21)
          to label %253 unwind label %260

253:                                              ; preds = %251
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #8
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %21) #8
  br label %254

254:                                              ; preds = %.thread, %253
  %.1107 = phi i64 [ %231, %253 ], [ %.0106, %.thread ]
  %.1103 = phi i32 [ 0, %253 ], [ %.0102.ph, %.thread ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %255

255:                                              ; preds = %254, %104
  %.2108 = phi i64 [ %105, %104 ], [ %.1107, %254 ]
  %.2104 = phi i32 [ 7, %104 ], [ %.1103, %254 ]
  %switch = icmp eq i32 %.2104, 8
  br i1 %switch, label %thread-pre-split, label %90

256:                                              ; preds = %228
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %274

258:                                              ; preds = %232
  %259 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #8
  br label %273

260:                                              ; preds = %251, %233
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %273

262:                                              ; preds = %235
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %272

264:                                              ; preds = %243, %241, %239
  %265 = landingpad { ptr, i32 }
          cleanup
  br label %271

266:                                              ; preds = %245
  %267 = landingpad { ptr, i32 }
          cleanup
  br label %270

268:                                              ; preds = %249, %247
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  br label %270

270:                                              ; preds = %268, %266
  %.pn123 = phi { ptr, i32 } [ %269, %268 ], [ %267, %266 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #8
  br label %271

271:                                              ; preds = %270, %264
  %.pn123.pn = phi { ptr, i32 } [ %.pn123, %270 ], [ %265, %264 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %272

272:                                              ; preds = %271, %262
  %.pn123.pn.pn = phi { ptr, i32 } [ %.pn123.pn, %271 ], [ %263, %262 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  br label %273

273:                                              ; preds = %272, %260, %258
  %.pn127 = phi { ptr, i32 } [ %261, %260 ], [ %.pn123.pn.pn, %272 ], [ %259, %258 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #8
  br label %274

274:                                              ; preds = %273, %256
  %.pn127.pn = phi { ptr, i32 } [ %.pn127, %273 ], [ %257, %256 ]
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %21) #8
  br label %275

275:                                              ; preds = %126, %147, %203, %274, %218, %119
  %.pn127.pn.pn = phi { ptr, i32 } [ %.pn127.pn, %274 ], [ %.pn121, %218 ], [ %120, %119 ], [ %.pn115.pn.pn.pn, %203 ], [ %.pn, %147 ], [ %127, %126 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %289

thread-pre-split:                                 ; preds = %90, %255
  %.pr = load i32, ptr %62, align 4, !tbaa !19
  br label %.loopexit159

.loopexit159:                                     ; preds = %96, %thread-pre-split
  %276 = phi i32 [ %.pr, %thread-pre-split ], [ %95, %96 ]
  switch i32 %276, label %281 [
    i32 998, label %277
    i32 999, label %279
    i32 0, label %283
  ]

277:                                              ; preds = %.loopexit159
  store i32 0, ptr %62, align 4, !tbaa !19
  %278 = getelementptr inbounds i8, ptr %6, i64 4
  store i32 5, ptr %278, align 4, !tbaa !26
  br label %285

279:                                              ; preds = %.loopexit159
  store i32 0, ptr %62, align 4, !tbaa !19
  %280 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 6, ptr %280, align 8, !tbaa !27
  br label %285

281:                                              ; preds = %.loopexit159
  %282 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 9, ptr %282, align 8, !tbaa !27
  br label %285

283:                                              ; preds = %.loopexit159
  %284 = getelementptr inbounds i8, ptr %6, i64 8
  store i32 1, ptr %284, align 8, !tbaa !27
  br label %285

285:                                              ; preds = %279, %283, %281, %277
  %286 = invoke noundef double @_ZNK3ipx5Timer7ElapsedEv(ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %287 unwind label %.loopexit.split-lp

287:                                              ; preds = %285
  %288 = getelementptr inbounds i8, ptr %0, i64 32
  store double %286, ptr %288, align 8, !tbaa !28
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %11) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %11) #8
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %10) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  ret void

289:                                              ; preds = %.loopexit, %.loopexit.split-lp, %275, %117, %85, %87, %60, %46
  %.pn139.pn = phi { ptr, i32 } [ %.pn139, %60 ], [ %47, %46 ], [ %88, %87 ], [ %86, %85 ], [ %.pn127.pn.pn, %275 ], [ %118, %117 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %11) #8
  br label %290

290:                                              ; preds = %289, %44
  %.pn139.pn.pn = phi { ptr, i32 } [ %.pn139.pn, %289 ], [ %45, %44 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %11) #8
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %10) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  resume { ptr, i32 } %.pn139.pn.pn

291:                                              ; preds = %84, %54
  unreachable
}

declare void @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(44), i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3ipx9Crossover13DualRatioTestERKSt8valarrayIdERKNS_13IndexedVectorEPKidd(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(44), ptr noundef, double noundef, double noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN3ipx16for_each_nonzeroIZNS_9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES6_RKSt6vectorIiSaIiEEPKiPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN3ipx16for_each_nonzeroIZNS_9Crossover8PushDualEPNS_5BasisERSt8valarrayIdES6_RKSt6vectorIiSaIiEEPKiPNS_4InfoEE3$_1EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTSN3ipx9CrossoverE", !6, i64 0, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !12, i64 24, !12, i64 32}
!11 = !{!"int", !7, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!10, !11, i64 12}
!14 = !{!10, !11, i64 20}
!15 = !{!11, !11, i64 0}
!16 = !{!12, !12, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!20, !11, i64 12}
!20 = !{!"_ZTS8ipx_info", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !11, i64 52, !11, i64 56, !11, i64 60, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !12, i64 176, !12, i64 184, !11, i64 192, !11, i64 196, !11, i64 200, !11, i64 204, !11, i64 208, !11, i64 212, !11, i64 216, !12, i64 224, !12, i64 232, !12, i64 240, !12, i64 248, !12, i64 256, !12, i64 264, !12, i64 272, !12, i64 280, !12, i64 288, !12, i64 296, !12, i64 304, !12, i64 312, !12, i64 320, !12, i64 328, !12, i64 336, !12, i64 344, !12, i64 352, !12, i64 360, !12, i64 368, !12, i64 376, !12, i64 384, !12, i64 392, !12, i64 400, !12, i64 408, !11, i64 416, !11, i64 420, !11, i64 424, !11, i64 428, !12, i64 432, !12, i64 440, !12, i64 448, !12, i64 456}
!21 = distinct !{!21, !18}
!22 = !{!23, !23, i64 0}
!23 = !{!"bool", !7, i64 0}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!20, !11, i64 4}
!27 = !{!20, !11, i64 8}
!28 = !{!10, !12, i64 32}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass