; LLVM IR from ERGO-Code/HiGHS :: src/ipm/ipx/basis.ll (ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE)

; 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::IndexedVector" = type <{ %"class.std::valarray", %"class.std::vector", i32, [4 x i8] }>
%"class.std::valarray" = type { i64, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.34 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.35 = type { ptr, 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::Basis" = type { ptr, ptr, %"class.std::vector", %"class.std::vector", %"class.std::unique_ptr", i8, i32, i32, i32, i32, i32, i32, double, double, double, double, %"class.std::vector.5", double, double }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.4" }
%"struct.std::_Head_base.4" = type { ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%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.12 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE = external hidden unnamed_addr constant [69 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [48 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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #3 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 @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Basis14SolveForUpdateEiRNS_13IndexedVectorE(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, ptr noundef nonnull align 8 dereferenceable(44)) #3 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: mustprogress uwtable
declare dso_local noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, i32 noundef, double noundef, i32 noundef, ptr noundef) #3 align 2

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

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

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

; 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 uwtable
declare dso_local void @_ZN3ipx8TextlineIA48_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(48)) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(176) %0, ptr noundef %1, ptr noundef %2) #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.ipx::IndexedVector", align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::vector", align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca %class.anon.34, align 8
  %26 = alloca i32, align 4
  %27 = alloca i8, align 1
  %28 = alloca ptr, align 8
  %29 = alloca double, align 8
  %30 = alloca %class.anon.35, align 8
  %31 = alloca %"class.std::__cxx11::basic_string", align 8
  %32 = alloca %"class.std::__cxx11::basic_string", align 8
  %33 = alloca i32, align 4
  %34 = alloca i8, align 1
  %35 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %38 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %39 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 1
  %40 = load ptr, ptr %39, align 8, !tbaa !9
  %41 = call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %40)
  store i32 %41, ptr %7, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  %42 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 1
  %43 = load ptr, ptr %42, align 8, !tbaa !9
  %44 = call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %43)
  store i32 %44, ptr %8, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 48, ptr %9) #7
  %45 = load i32, ptr %7, align 4, !tbaa !28
  call void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %9, i32 noundef %45)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  store double 0.000000e+00, ptr %11, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %46 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 0
  %47 = load ptr, ptr %46, align 8, !tbaa !30
  %48 = invoke noundef double @_ZNK3ipx7Control14dependency_tolEv(ptr noundef nonnull align 8 dereferenceable(1496) %47)
          to label %49 unwind label %64

49:                                               ; preds = %3
  store double %48, ptr %12, align 8, !tbaa !29
  %50 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %51 unwind label %64

51:                                               ; preds = %49
  %52 = load double, ptr %50, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  store double %52, ptr %10, align 8, !tbaa !29
  %53 = load ptr, ptr %6, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.ipx_info, ptr %53, i32 0, i32 3
  store i32 0, ptr %54, align 4, !tbaa !31
  %55 = load ptr, ptr %6, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.ipx_info, ptr %55, i32 0, i32 15
  store i32 0, ptr %56, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  store i32 0, ptr %15, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 0, ptr %17, align 4, !tbaa !28
  br label %57

57:                                               ; preds = %90, %51
  %58 = load i32, ptr %17, align 4, !tbaa !28
  %59 = load i32, ptr %8, align 4, !tbaa !28
  %60 = load i32, ptr %7, align 4, !tbaa !28
  %61 = add nsw i32 %59, %60
  %62 = icmp slt i32 %58, %61
  br i1 %62, label %68, label %63

63:                                               ; preds = %57
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %93

64:                                               ; preds = %49, %3
  %65 = landingpad { ptr, i32 }
          cleanup
  %66 = extractvalue { ptr, i32 } %65, 0
  store ptr %66, ptr %13, align 8
  %67 = extractvalue { ptr, i32 } %65, 1
  store i32 %67, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  br label %415

68:                                               ; preds = %57
  %69 = load ptr, ptr %5, align 8, !tbaa !5
  %70 = load i32, ptr %17, align 4, !tbaa !28
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds double, ptr %69, i64 %71
  %73 = load double, ptr %72, align 8, !tbaa !29
  %74 = invoke noundef zeroext i1 @_ZSt5isinfd(double noundef %73)
          to label %75 unwind label %85

75:                                               ; preds = %68
  br i1 %74, label %76, label %89

76:                                               ; preds = %75
  %77 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 3
  %78 = load i32, ptr %17, align 4, !tbaa !28
  %79 = sext i32 %78 to i64
  %80 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %77, i64 noundef %79) #7
  %81 = load i32, ptr %80, align 4, !tbaa !28
  %82 = icmp slt i32 %81, 0
  br i1 %82, label %83, label %89

83:                                               ; preds = %76
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %84 unwind label %85

84:                                               ; preds = %83
  br label %89

85:                                               ; preds = %83, %68
  %86 = landingpad { ptr, i32 }
          cleanup
  %87 = extractvalue { ptr, i32 } %86, 0
  store ptr %87, ptr %13, align 8
  %88 = extractvalue { ptr, i32 } %86, 1
  store i32 %88, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %414

89:                                               ; preds = %84, %76, %75
  br label %90

90:                                               ; preds = %89
  %91 = load i32, ptr %17, align 4, !tbaa !28
  %92 = add nsw i32 %91, 1
  store i32 %92, ptr %17, align 4, !tbaa !28
  br label %57, !llvm.loop !34

93:                                               ; preds = %63
  %94 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 0
  %95 = load ptr, ptr %94, align 8, !tbaa !30
  %96 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %95, i32 noundef 1)
          to label %97 unwind label %124

97:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #7
  invoke void @_ZN3ipx8TextlineIA35_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 1 dereferenceable(35) @.str.38)
          to label %98 unwind label %128

98:                                               ; preds = %97
  %99 = 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) %96, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %100 unwind label %132

100:                                              ; preds = %98
  %101 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %99, i64 noundef %101)
          to label %103 unwind label %132

103:                                              ; preds = %100
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %102, i8 noundef signext 10)
          to label %105 unwind label %132

105:                                              ; preds = %103
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  %106 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 0
  %107 = load ptr, ptr %106, align 8, !tbaa !30
  invoke void @_ZNK3ipx7Control18ResetPrintIntervalEv(ptr noundef nonnull align 8 dereferenceable(1496) %107)
          to label %108 unwind label %124

108:                                              ; preds = %105
  br label %109

109:                                              ; preds = %372, %370, %108
  %110 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  %111 = xor i1 %110, true
  br i1 %111, label %112, label %389

112:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %113 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  %114 = load i32, ptr %113, align 4, !tbaa !28
  store i32 %114, ptr %19, align 4, !tbaa !28
  %115 = load ptr, ptr %5, align 8, !tbaa !5
  %116 = load i32, ptr %19, align 4, !tbaa !28
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds double, ptr %115, i64 %117
  %119 = load double, ptr %118, align 8, !tbaa !29
  %120 = invoke noundef zeroext i1 @_ZSt5isinfd(double noundef %119)
          to label %121 unwind label %137

121:                                              ; preds = %112
  br i1 %120, label %122, label %123

122:                                              ; preds = %121
  br label %142

123:                                              ; preds = %121
  call void @__assert_fail(ptr noundef @.str.39, ptr noundef @.str.12, i32 noundef 701, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE) #8
  unreachable

124:                                              ; preds = %389, %105, %93
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %13, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %14, align 4
  br label %414

128:                                              ; preds = %97
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %13, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %14, align 4
  br label %136

132:                                              ; preds = %103, %100, %98
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %13, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #7
  br label %136

136:                                              ; preds = %132, %128
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  br label %414

137:                                              ; preds = %161, %152, %112
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %13, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %14, align 4
  br label %388

141:                                              ; No predecessors!
  br label %142

142:                                              ; preds = %141, %122
  %143 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 3
  %144 = load i32, ptr %19, align 4, !tbaa !28
  %145 = sext i32 %144 to i64
  %146 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %145) #7
  %147 = load i32, ptr %146, align 4, !tbaa !28
  %148 = icmp slt i32 %147, 0
  br i1 %148, label %149, label %150

149:                                              ; preds = %142
  br label %152

150:                                              ; preds = %142
  call void @__assert_fail(ptr noundef @.str.30, ptr noundef @.str.12, i32 noundef 702, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE) #8
  unreachable

151:                                              ; No predecessors!
  br label %152

152:                                              ; preds = %151, %149
  %153 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 0
  %154 = load ptr, ptr %153, align 8, !tbaa !30
  %155 = invoke noundef i32 @_ZNK3ipx7Control14InterruptCheckEi(ptr noundef nonnull align 8 dereferenceable(1496) %154, i32 noundef -1)
          to label %156 unwind label %137

156:                                              ; preds = %152
  %157 = load ptr, ptr %6, align 8, !tbaa !5
  %158 = getelementptr inbounds %struct.ipx_info, ptr %157, i32 0, i32 3
  store i32 %155, ptr %158, align 4, !tbaa !31
  %159 = icmp ne i32 %155, 0
  br i1 %159, label %160, label %161

160:                                              ; preds = %156
  store i32 1, ptr %20, align 4
  br label %370

161:                                              ; preds = %156
  %162 = load i32, ptr %19, align 4, !tbaa !28
  invoke void @_ZN3ipx5Basis14SolveForUpdateEiRNS_13IndexedVectorE(ptr noundef nonnull align 8 dereferenceable(176) %38, i32 noundef %162, ptr noundef nonnull align 8 dereferenceable(44) %9)
          to label %163 unwind label %137

163:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  store i32 -1, ptr %21, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 -1, ptr %22, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  store double 0.000000e+00, ptr %23, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  store double 0.000000e+00, ptr %24, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 48, ptr %25) #7
  %164 = getelementptr inbounds %class.anon.34, ptr %25, i32 0, i32 0
  store ptr %23, ptr %164, align 8, !tbaa !5
  %165 = getelementptr inbounds %class.anon.34, ptr %25, i32 0, i32 1
  store ptr %21, ptr %165, align 8, !tbaa !5
  %166 = getelementptr inbounds %class.anon.34, ptr %25, i32 0, i32 2
  store ptr %5, ptr %166, align 8, !tbaa !5
  %167 = getelementptr inbounds %class.anon.34, ptr %25, i32 0, i32 3
  store ptr %38, ptr %167, align 8, !tbaa !36
  %168 = getelementptr inbounds %class.anon.34, ptr %25, i32 0, i32 4
  store ptr %24, ptr %168, align 8, !tbaa !5
  %169 = getelementptr inbounds %class.anon.34, ptr %25, i32 0, i32 5
  store ptr %22, ptr %169, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(48) %25)
          to label %170 unwind label %191

170:                                              ; preds = %163
  %171 = load double, ptr %23, align 8, !tbaa !29
  %172 = fcmp ogt double %171, 4.000000e+00
  br i1 %172, label %173, label %236

173:                                              ; preds = %170
  %174 = load double, ptr %24, align 8, !tbaa !29
  %175 = fcmp olt double %174, 1.000000e+00
  br i1 %175, label %176, label %236

176:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  %177 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 2
  %178 = load i32, ptr %21, align 4, !tbaa !28
  %179 = sext i32 %178 to i64
  %180 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %177, i64 noundef %179) #7
  %181 = load i32, ptr %180, align 4, !tbaa !28
  store i32 %181, ptr %26, align 4, !tbaa !28
  %182 = load ptr, ptr %5, align 8, !tbaa !5
  %183 = load i32, ptr %26, align 4, !tbaa !28
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds double, ptr %182, i64 %184
  %186 = load double, ptr %185, align 8, !tbaa !29
  %187 = invoke noundef zeroext i1 @_ZSt5isinfd(double noundef %186)
          to label %188 unwind label %195

188:                                              ; preds = %176
  br i1 %187, label %189, label %190

189:                                              ; preds = %188
  br label %200

190:                                              ; preds = %188
  call void @__assert_fail(ptr noundef @.str.40, ptr noundef @.str.12, i32 noundef 728, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE) #8
  unreachable

191:                                              ; preds = %163
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %13, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %14, align 4
  br label %387

195:                                              ; preds = %176
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %13, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %14, align 4
  br label %235

199:                                              ; No predecessors!
  br label %200

200:                                              ; preds = %199, %189
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  %201 = load i32, ptr %26, align 4, !tbaa !28
  %202 = load i32, ptr %19, align 4, !tbaa !28
  %203 = load i32, ptr %21, align 4, !tbaa !28
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %9, i32 noundef %203)
          to label %205 unwind label %216

205:                                              ; preds = %200
  %206 = load double, ptr %204, align 8, !tbaa !29
  %207 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %38, i32 noundef %201, i32 noundef %202, double noundef %206, i32 noundef -1, ptr noundef %27)
          to label %208 unwind label %216

208:                                              ; preds = %205
  %209 = load ptr, ptr %6, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.ipx_info, ptr %209, i32 0, i32 3
  store i32 %207, ptr %210, align 4, !tbaa !31
  %211 = load ptr, ptr %6, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct.ipx_info, ptr %211, i32 0, i32 3
  %213 = load i32, ptr %212, align 4, !tbaa !31
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %220

215:                                              ; preds = %208
  store i32 1, ptr %20, align 4
  br label %232

216:                                              ; preds = %224, %205, %200
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %13, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  br label %235

220:                                              ; preds = %208
  %221 = load i8, ptr %27, align 1, !tbaa !38, !range !39, !noundef !40
  %222 = trunc i8 %221 to i1
  br i1 %222, label %224, label %223

223:                                              ; preds = %220
  store i32 5, ptr %20, align 4
  br label %232, !llvm.loop !41

224:                                              ; preds = %220
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 4 dereferenceable(4) %26)
          to label %225 unwind label %216

225:                                              ; preds = %224
  %226 = load ptr, ptr %6, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct.ipx_info, ptr %226, i32 0, i32 38
  %228 = load i32, ptr %227, align 8, !tbaa !42
  %229 = add nsw i32 %228, 1
  store i32 %229, ptr %227, align 8, !tbaa !42
  %230 = load i32, ptr %15, align 4, !tbaa !28
  %231 = add nsw i32 %230, 1
  store i32 %231, ptr %15, align 4, !tbaa !28
  store i32 0, ptr %20, align 4
  br label %232

232:                                              ; preds = %225, %223, %215
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  %233 = load i32, ptr %20, align 4
  switch i32 %233, label %369 [
    i32 0, label %234
  ]

234:                                              ; preds = %232
  br label %355

235:                                              ; preds = %216, %195
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %387

236:                                              ; preds = %173, %170
  %237 = load double, ptr %24, align 8, !tbaa !29
  %238 = load double, ptr %10, align 8, !tbaa !29
  %239 = fcmp ole double %237, %238
  br i1 %239, label %240, label %317

240:                                              ; preds = %236
  %241 = load ptr, ptr %6, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.ipx_info, ptr %241, i32 0, i32 17
  %243 = load i32, ptr %242, align 4, !tbaa !43
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %312, label %245

245:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %246 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 1
  %247 = load ptr, ptr %246, align 8, !tbaa !9
  %248 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model1cEv(ptr noundef nonnull align 8 dereferenceable(704) %247)
          to label %249 unwind label %282

249:                                              ; preds = %245
  store ptr %248, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %250 = load ptr, ptr %28, align 8, !tbaa !5
  %251 = load i32, ptr %19, align 4, !tbaa !28
  %252 = sext i32 %251 to i64
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %250, i64 noundef %252) #7
  %254 = load double, ptr %253, align 8, !tbaa !29
  store double %254, ptr %29, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #7
  %255 = getelementptr inbounds %class.anon.35, ptr %30, i32 0, i32 0
  store ptr %38, ptr %255, align 8, !tbaa !44
  %256 = getelementptr inbounds %class.anon.35, ptr %30, i32 0, i32 1
  store ptr %5, ptr %256, align 8, !tbaa !5
  %257 = getelementptr inbounds %class.anon.35, ptr %30, i32 0, i32 2
  store ptr %29, ptr %257, align 8, !tbaa !5
  %258 = getelementptr inbounds %class.anon.35, ptr %30, i32 0, i32 3
  %259 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %259, ptr %258, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoEE3$_1EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %9, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %260 unwind label %286

260:                                              ; preds = %249
  %261 = load double, ptr %29, align 8, !tbaa !29
  %262 = invoke noundef double @_ZSt3absd(double noundef %261)
          to label %263 unwind label %286

263:                                              ; preds = %260
  %264 = load double, ptr %10, align 8, !tbaa !29
  %265 = fcmp ogt double %262, %264
  br i1 %265, label %266, label %309

266:                                              ; preds = %263
  %267 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 0
  %268 = load ptr, ptr %267, align 8, !tbaa !30
  %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %268, i32 noundef 1)
          to label %270 unwind label %286

270:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 32, ptr %31) #7
  invoke void @_ZN3ipx8TextlineIA44_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %31, ptr noundef nonnull align 1 dereferenceable(44) @.str.41)
          to label %271 unwind label %290

271:                                              ; preds = %270
  %272 = 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) %269, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %273 unwind label %294

273:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #7
  %274 = load double, ptr %29, align 8, !tbaa !29
  invoke void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %32, double noundef %274)
          to label %275 unwind label %298

275:                                              ; preds = %273
  %276 = 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) %272, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %277 unwind label %302

277:                                              ; preds = %275
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %276, i8 noundef signext 10)
          to label %279 unwind label %302

279:                                              ; preds = %277
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  %280 = load ptr, ptr %6, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.ipx_info, ptr %280, i32 0, i32 17
  store i32 1, ptr %281, align 4, !tbaa !43
  br label %309

282:                                              ; preds = %245
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %13, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %14, align 4
  br label %311

286:                                              ; preds = %266, %260, %249
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %13, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %14, align 4
  br label %310

290:                                              ; preds = %270
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %13, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %14, align 4
  br label %308

294:                                              ; preds = %271
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %13, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %14, align 4
  br label %307

298:                                              ; preds = %273
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %13, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %14, align 4
  br label %306

302:                                              ; preds = %277, %275
  %303 = landingpad { ptr, i32 }
          cleanup
  %304 = extractvalue { ptr, i32 } %303, 0
  store ptr %304, ptr %13, align 8
  %305 = extractvalue { ptr, i32 } %303, 1
  store i32 %305, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  br label %306

306:                                              ; preds = %302, %298
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #7
  br label %307

307:                                              ; preds = %306, %294
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  br label %308

308:                                              ; preds = %307, %290
  call void @llvm.lifetime.end.p0(i64 32, ptr %31) #7
  br label %310

309:                                              ; preds = %279, %263
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %312

310:                                              ; preds = %308, %286
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %311

311:                                              ; preds = %310, %282
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %387

312:                                              ; preds = %309, %240
  %313 = load ptr, ptr %6, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.ipx_info, ptr %313, i32 0, i32 15
  %315 = load i32, ptr %314, align 4, !tbaa !33
  %316 = add nsw i32 %315, 1
  store i32 %316, ptr %314, align 4, !tbaa !33
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  br label %354

317:                                              ; preds = %236
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  %318 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 2
  %319 = load i32, ptr %22, align 4, !tbaa !28
  %320 = sext i32 %319 to i64
  %321 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %318, i64 noundef %320) #7
  %322 = load i32, ptr %321, align 4, !tbaa !28
  store i32 %322, ptr %33, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #7
  %323 = load i32, ptr %33, align 4, !tbaa !28
  %324 = load i32, ptr %19, align 4, !tbaa !28
  %325 = load i32, ptr %22, align 4, !tbaa !28
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %9, i32 noundef %325)
          to label %327 unwind label %338

327:                                              ; preds = %317
  %328 = load double, ptr %326, align 8, !tbaa !29
  %329 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %38, i32 noundef %323, i32 noundef %324, double noundef %328, i32 noundef -1, ptr noundef %34)
          to label %330 unwind label %338

330:                                              ; preds = %327
  %331 = load ptr, ptr %6, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.ipx_info, ptr %331, i32 0, i32 3
  store i32 %329, ptr %332, align 4, !tbaa !31
  %333 = load ptr, ptr %6, align 8, !tbaa !5
  %334 = getelementptr inbounds %struct.ipx_info, ptr %333, i32 0, i32 3
  %335 = load i32, ptr %334, align 4, !tbaa !31
  %336 = icmp ne i32 %335, 0
  br i1 %336, label %337, label %342

337:                                              ; preds = %330
  store i32 1, ptr %20, align 4
  br label %351

338:                                              ; preds = %327, %317
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %13, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %387

342:                                              ; preds = %330
  %343 = load i8, ptr %34, align 1, !tbaa !38, !range !39, !noundef !40
  %344 = trunc i8 %343 to i1
  br i1 %344, label %346, label %345

345:                                              ; preds = %342
  store i32 5, ptr %20, align 4
  br label %351, !llvm.loop !41

346:                                              ; preds = %342
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  %347 = load ptr, ptr %6, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.ipx_info, ptr %347, i32 0, i32 38
  %349 = load i32, ptr %348, align 8, !tbaa !42
  %350 = add nsw i32 %349, 1
  store i32 %350, ptr %348, align 8, !tbaa !42
  store i32 0, ptr %20, align 4
  br label %351

351:                                              ; preds = %346, %345, %337
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  %352 = load i32, ptr %20, align 4
  switch i32 %352, label %369 [
    i32 0, label %353
  ]

353:                                              ; preds = %351
  br label %354

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

355:                                              ; preds = %354, %234
  call void @llvm.lifetime.start.p0(i64 392, ptr %35) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %35)
          to label %356 unwind label %373

356:                                              ; preds = %355
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %35, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %357 unwind label %377

357:                                              ; preds = %356
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  %358 = getelementptr inbounds i8, ptr %35, i64 16
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %358, ptr noundef @.str.42)
          to label %360 unwind label %381

360:                                              ; preds = %357
  %361 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  %362 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %359, i64 noundef %361)
          to label %363 unwind label %381

363:                                              ; preds = %360
  %364 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %362, ptr noundef @.str.43)
          to label %365 unwind label %381

365:                                              ; preds = %363
  %366 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 0
  %367 = load ptr, ptr %366, align 8, !tbaa !30
  invoke void @_ZNK3ipx7Control12hIntervalLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496) %367, ptr noundef nonnull align 8 dereferenceable(128) %35)
          to label %368 unwind label %381

368:                                              ; preds = %365
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %35) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %35) #7
  store i32 0, ptr %20, align 4
  br label %369

369:                                              ; preds = %368, %351, %232
  call void @llvm.lifetime.end.p0(i64 48, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %370

370:                                              ; preds = %369, %160
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  %371 = load i32, ptr %20, align 4
  switch i32 %371, label %402 [
    i32 0, label %372
    i32 5, label %109
  ]

372:                                              ; preds = %370
  br label %109, !llvm.loop !41

373:                                              ; preds = %355
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %13, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %14, align 4
  br label %386

377:                                              ; preds = %356
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %13, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  br label %385

381:                                              ; preds = %365, %363, %360, %357
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %13, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %14, align 4
  br label %385

385:                                              ; preds = %381, %377
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %35) #7
  br label %386

386:                                              ; preds = %385, %373
  call void @llvm.lifetime.end.p0(i64 392, ptr %35) #7
  br label %387

387:                                              ; preds = %386, %338, %311, %235, %191
  call void @llvm.lifetime.end.p0(i64 48, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %388

388:                                              ; preds = %387, %137
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %414

389:                                              ; preds = %109
  %390 = getelementptr inbounds %"class.ipx::Basis", ptr %38, i32 0, i32 0
  %391 = load ptr, ptr %390, align 8, !tbaa !30
  %392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %391, i32 noundef 1)
          to label %393 unwind label %124

393:                                              ; preds = %389
  call void @llvm.lifetime.start.p0(i64 32, ptr %37) #7
  invoke void @_ZN3ipx8TextlineIA48_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %37, ptr noundef nonnull align 1 dereferenceable(48) @.str.44)
          to label %394 unwind label %405

394:                                              ; preds = %393
  %395 = 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) %392, ptr noundef nonnull align 8 dereferenceable(32) %37)
          to label %396 unwind label %409

396:                                              ; preds = %394
  %397 = load i32, ptr %15, align 4, !tbaa !28
  %398 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %395, i32 noundef %397)
          to label %399 unwind label %409

399:                                              ; preds = %396
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %398, i8 noundef signext 10)
          to label %401 unwind label %409

401:                                              ; preds = %399
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  store i32 0, ptr %20, align 4
  br label %402

402:                                              ; preds = %401, %370
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %9) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  %403 = load i32, ptr %20, align 4
  switch i32 %403, label %421 [
    i32 0, label %404
    i32 1, label %404
  ]

404:                                              ; preds = %402, %402
  ret void

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

409:                                              ; preds = %399, %396, %394
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %13, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %413

413:                                              ; preds = %409, %405
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #7
  br label %414

414:                                              ; preds = %413, %388, %136, %124, %85
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  br label %415

415:                                              ; preds = %414, %64
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %9) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  br label %416

416:                                              ; preds = %415
  %417 = load ptr, ptr %13, align 8
  %418 = load i32, ptr %14, align 4
  %419 = insertvalue { ptr, i32 } poison, ptr %417, 0
  %420 = insertvalue { ptr, i32 } %419, i32 %418, 1
  resume { ptr, i32 } %420

421:                                              ; preds = %402
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #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: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #1 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfd(double noundef) #1

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) #3 align 2

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

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

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

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

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

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

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

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

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

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

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 = { 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 #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 = { "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 = { 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 #7 = { nounwind }
attributes #8 = { 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 8}
!10 = !{!"_ZTSN3ipx5BasisE", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 40, !15, i64 64, !21, i64 72, !22, i64 76, !22, i64 80, !22, i64 84, !22, i64 88, !22, i64 92, !22, i64 96, !23, i64 104, !23, i64 112, !23, i64 120, !23, i64 128, !24, i64 136, !23, i64 160, !23, i64 168}
!11 = !{!"_ZTSSt6vectorIiSaIiEE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!15 = !{!"_ZTSSt10unique_ptrIN3ipx8LuUpdateESt14default_deleteIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt15__uniq_ptr_dataIN3ipx8LuUpdateESt14default_deleteIS1_ELb1ELb1EE", !17, i64 0}
!17 = !{!"_ZTSSt15__uniq_ptr_implIN3ipx8LuUpdateESt14default_deleteIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt5tupleIJPN3ipx8LuUpdateESt14default_deleteIS1_EEE", !19, i64 0}
!19 = !{!"_ZTSSt11_Tuple_implILm0EJPN3ipx8LuUpdateESt14default_deleteIS1_EEE", !20, i64 0}
!20 = !{!"_ZTSSt10_Head_baseILm0EPN3ipx8LuUpdateELb0EE", !6, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{!"int", !7, i64 0}
!23 = !{!"double", !7, i64 0}
!24 = !{!"_ZTSSt6vectorIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!22, !22, i64 0}
!29 = !{!23, !23, i64 0}
!30 = !{!10, !6, i64 0}
!31 = !{!32, !22, i64 12}
!32 = !{!"_ZTS8ipx_info", !22, i64 0, !22, i64 4, !22, i64 8, !22, i64 12, !22, i64 16, !22, i64 20, !22, i64 24, !22, i64 28, !22, i64 32, !22, i64 36, !22, i64 40, !22, i64 44, !22, i64 48, !22, i64 52, !22, i64 56, !22, i64 60, !22, i64 64, !22, i64 68, !22, i64 72, !22, i64 76, !23, i64 80, !23, i64 88, !23, i64 96, !23, i64 104, !23, i64 112, !23, i64 120, !23, i64 128, !23, i64 136, !23, i64 144, !23, i64 152, !23, i64 160, !23, i64 168, !23, i64 176, !23, i64 184, !22, i64 192, !22, i64 196, !22, i64 200, !22, i64 204, !22, i64 208, !22, i64 212, !22, i64 216, !23, i64 224, !23, i64 232, !23, i64 240, !23, i64 248, !23, i64 256, !23, i64 264, !23, i64 272, !23, i64 280, !23, i64 288, !23, i64 296, !23, i64 304, !23, i64 312, !23, i64 320, !23, i64 328, !23, i64 336, !23, i64 344, !23, i64 352, !23, i64 360, !23, i64 368, !23, i64 376, !23, i64 384, !23, i64 392, !23, i64 400, !23, i64 408, !22, i64 416, !22, i64 420, !22, i64 424, !22, i64 428, !23, i64 432, !23, i64 440, !23, i64 448, !23, i64 456}
!33 = !{!32, !22, i64 60}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!37, !6, i64 24}
!37 = !{!"_ZTSZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!38 = !{!21, !21, i64 0}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = distinct !{!41, !35}
!42 = !{!32, !22, i64 208}
!43 = !{!32, !22, i64 68}
!44 = !{!45, !6, i64 0}
!45 = !{!"_ZTSZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoEE3$_1", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}


; 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::IndexedVector" = type <{ %"class.std::valarray", %"class.std::vector", i32, [4 x i8] }>
%"class.std::valarray" = type { i64, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.34 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.35 = type { ptr, 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.12 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [27 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE = external hidden unnamed_addr constant [69 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [48 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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3 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 @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3ipx5Basis14SolveForUpdateEiRNS_13IndexedVectorE(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, ptr noundef nonnull align 8 dereferenceable(44)) local_unnamed_addr #3 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: mustprogress uwtable
declare dso_local noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, i32 noundef, double noundef, i32 noundef, ptr noundef) local_unnamed_addr #3 align 2

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

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

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

; 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 uwtable
declare dso_local void @_ZN3ipx8TextlineIA48_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(48)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE(ptr noundef nonnull align 8 dereferenceable(176) %0, ptr noundef %1, ptr nocapture noundef %2) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca %"class.ipx::IndexedVector", align 8
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca %"class.std::vector", align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca %class.anon.34, align 8
  %16 = alloca i32, align 4
  %17 = alloca i8, align 1
  %18 = alloca double, align 8
  %19 = alloca %class.anon.35, align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca i8, align 1
  %23 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  %26 = getelementptr inbounds i8, ptr %0, i64 8
  %27 = load ptr, ptr %26, align 8, !tbaa !9
  %28 = tail call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %27)
  %29 = load ptr, ptr %26, align 8, !tbaa !9
  %30 = tail call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %29)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) #7
  call void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %5, i32 noundef %28)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  store double 0.000000e+00, ptr %6, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  %31 = load ptr, ptr %0, align 8, !tbaa !29
  %32 = call noundef double @_ZNK3ipx7Control14dependency_tolEv(ptr noundef nonnull align 8 dereferenceable(1496) %31)
  store double %32, ptr %7, align 8, !tbaa !28
  %33 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7)
  %34 = load double, ptr %33, align 8, !tbaa !28
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  %35 = getelementptr inbounds i8, ptr %2, i64 12
  store i32 0, ptr %35, align 4, !tbaa !30
  %36 = getelementptr inbounds i8, ptr %2, i64 60
  store i32 0, ptr %36, align 4, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  %37 = add nsw i32 %30, %28
  store i32 0, ptr %9, align 4, !tbaa !33
  %38 = icmp sgt i32 %37, 0
  br i1 %38, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %3
  %39 = getelementptr inbounds i8, ptr %0, i64 40
  br label %42

._crit_edge:                                      ; preds = %57, %3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  %40 = load ptr, ptr %0, align 8, !tbaa !29
  %41 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %40, i32 noundef 1)
          to label %61 unwind label %94

42:                                               ; preds = %.lr.ph, %57
  %storemerge101 = phi i32 [ 0, %.lr.ph ], [ %59, %57 ]
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = sext i32 %storemerge101 to i64
  %45 = getelementptr inbounds double, ptr %43, i64 %44
  %46 = load double, ptr %45, align 8, !tbaa !28
  %47 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %46)
  br i1 %47, label %48, label %57

48:                                               ; preds = %42
  %49 = load i32, ptr %9, align 4, !tbaa !33
  %50 = sext i32 %49 to i64
  %51 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %50) #7
  %52 = load i32, ptr %51, align 4, !tbaa !33
  %53 = icmp slt i32 %52, 0
  br i1 %53, label %54, label %57

54:                                               ; preds = %48
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %57 unwind label %55

55:                                               ; preds = %54
  %56 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %248

57:                                               ; preds = %42, %48, %54
  %58 = load i32, ptr %9, align 4, !tbaa !33
  %59 = add nsw i32 %58, 1
  store i32 %59, ptr %9, align 4, !tbaa !33
  %60 = icmp slt i32 %59, %37
  br i1 %60, label %42, label %._crit_edge, !llvm.loop !34

61:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7
  invoke void @_ZN3ipx8TextlineIA35_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 1 dereferenceable(35) @.str.38)
          to label %62 unwind label %96

62:                                               ; preds = %61
  %63 = 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) %41, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %64 unwind label %98

64:                                               ; preds = %62
  %65 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  %66 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %63, i64 noundef %65)
          to label %67 unwind label %98

67:                                               ; preds = %64
  %68 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %66, i8 noundef signext 10)
          to label %69 unwind label %98

69:                                               ; preds = %67
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  %70 = load ptr, ptr %0, align 8, !tbaa !29
  invoke void @_ZNK3ipx7Control18ResetPrintIntervalEv(ptr noundef nonnull align 8 dereferenceable(1496) %70)
          to label %.preheader unwind label %94

.preheader:                                       ; preds = %69
  %71 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  br i1 %71, label %._crit_edge104, label %.lr.ph103

.lr.ph103:                                        ; preds = %.preheader
  %72 = getelementptr inbounds i8, ptr %0, i64 40
  %73 = getelementptr inbounds i8, ptr %15, i64 8
  %74 = getelementptr inbounds i8, ptr %15, i64 16
  %75 = getelementptr inbounds i8, ptr %15, i64 24
  %76 = getelementptr inbounds i8, ptr %15, i64 32
  %77 = getelementptr inbounds i8, ptr %15, i64 40
  %78 = getelementptr inbounds i8, ptr %2, i64 68
  %79 = getelementptr inbounds i8, ptr %19, i64 8
  %80 = getelementptr inbounds i8, ptr %19, i64 16
  %81 = getelementptr inbounds i8, ptr %19, i64 24
  %82 = getelementptr inbounds i8, ptr %0, i64 16
  %83 = getelementptr inbounds i8, ptr %2, i64 208
  %84 = getelementptr inbounds i8, ptr %23, i64 16
  br label %85

85:                                               ; preds = %.lr.ph103, %.backedge
  %.050102 = phi i32 [ 0, %.lr.ph103 ], [ %.353108, %.backedge ]
  %86 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  %87 = load i32, ptr %86, align 4, !tbaa !33
  %88 = load ptr, ptr %4, align 8, !tbaa !5
  %89 = sext i32 %87 to i64
  %90 = getelementptr inbounds double, ptr %88, i64 %89
  %91 = load double, ptr %90, align 8, !tbaa !28
  %92 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %91)
  br i1 %92, label %103, label %93

93:                                               ; preds = %85
  call void @__assert_fail(ptr noundef nonnull @.str.39, ptr noundef nonnull @.str.12, i32 noundef 701, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE) #8
  unreachable

94:                                               ; preds = %._crit_edge104, %69, %._crit_edge
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %248

96:                                               ; preds = %61
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %100

98:                                               ; preds = %67, %64, %62
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %100

100:                                              ; preds = %98, %96
  %.pn = phi { ptr, i32 } [ %99, %98 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7
  br label %248

101:                                              ; preds = %112, %108
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %248

103:                                              ; preds = %85
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %89) #7
  %105 = load i32, ptr %104, align 4, !tbaa !33
  %106 = icmp slt i32 %105, 0
  br i1 %106, label %108, label %107

107:                                              ; preds = %103
  call void @__assert_fail(ptr noundef nonnull @.str.30, ptr noundef nonnull @.str.12, i32 noundef 702, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE) #8
  unreachable

108:                                              ; preds = %103
  %109 = load ptr, ptr %0, align 8, !tbaa !29
  %110 = invoke noundef i32 @_ZNK3ipx7Control14InterruptCheckEi(ptr noundef nonnull align 8 dereferenceable(1496) %109, i32 noundef -1)
          to label %111 unwind label %101

111:                                              ; preds = %108
  store i32 %110, ptr %35, align 4, !tbaa !30
  %.not = icmp eq i32 %110, 0
  br i1 %.not, label %112, label %.thread82

112:                                              ; preds = %111
  invoke void @_ZN3ipx5Basis14SolveForUpdateEiRNS_13IndexedVectorE(ptr noundef nonnull align 8 dereferenceable(176) %0, i32 noundef %87, ptr noundef nonnull align 8 dereferenceable(44) %5)
          to label %113 unwind label %101

113:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  store i32 -1, ptr %11, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  store i32 -1, ptr %12, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  store double 0.000000e+00, ptr %13, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  store double 0.000000e+00, ptr %14, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #7
  store ptr %13, ptr %15, align 8, !tbaa !5
  store ptr %11, ptr %73, align 8, !tbaa !5
  store ptr %4, ptr %74, align 8, !tbaa !5
  store ptr %0, ptr %75, align 8, !tbaa !36
  store ptr %14, ptr %76, align 8, !tbaa !5
  store ptr %12, ptr %77, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %5, ptr noundef nonnull align 8 dereferenceable(48) %15)
          to label %114 unwind label %130

114:                                              ; preds = %113
  %115 = load double, ptr %13, align 8, !tbaa !28
  %116 = fcmp ogt double %115, 4.000000e+00
  %117 = load double, ptr %14, align 8
  %118 = fcmp olt double %117, 1.000000e+00
  %or.cond = select i1 %116, i1 %118, i1 false
  br i1 %or.cond, label %119, label %149

119:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #7
  %120 = load i32, ptr %11, align 4, !tbaa !33
  %121 = sext i32 %120 to i64
  %122 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %121) #7
  %123 = load i32, ptr %122, align 4, !tbaa !33
  store i32 %123, ptr %16, align 4, !tbaa !33
  %124 = load ptr, ptr %4, align 8, !tbaa !5
  %125 = sext i32 %123 to i64
  %126 = getelementptr inbounds double, ptr %124, i64 %125
  %127 = load double, ptr %126, align 8, !tbaa !28
  %128 = call noundef zeroext i1 @_ZSt5isinfd(double noundef %127)
  br i1 %128, label %132, label %129

129:                                              ; preds = %119
  call void @__assert_fail(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.12, i32 noundef 728, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoE) #8
  unreachable

130:                                              ; preds = %113
  %131 = landingpad { ptr, i32 }
          cleanup
  br label %232

132:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #7
  %133 = load i32, ptr %16, align 4, !tbaa !33
  %134 = load i32, ptr %11, align 4, !tbaa !33
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %5, i32 noundef %134)
  %136 = load double, ptr %135, align 8, !tbaa !28
  %137 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %0, i32 noundef %133, i32 noundef %87, double noundef %136, i32 noundef -1, ptr noundef nonnull %17)
          to label %138 unwind label %139

138:                                              ; preds = %132
  store i32 %137, ptr %35, align 4, !tbaa !30
  %.not67 = icmp eq i32 %137, 0
  br i1 %.not67, label %141, label %.thread

139:                                              ; preds = %144, %132
  %140 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  br label %232

141:                                              ; preds = %138
  %142 = load i8, ptr %17, align 1, !tbaa !38, !range !39, !noundef !40
  %143 = trunc nuw i8 %142 to i1
  br i1 %143, label %144, label %.thread, !llvm.loop !41

144:                                              ; preds = %141
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %145 unwind label %139

.thread:                                          ; preds = %138, %141
  %.046.ph = phi i32 [ 5, %141 ], [ 1, %138 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  br label %222

145:                                              ; preds = %144
  %146 = load i32, ptr %83, align 8, !tbaa !42
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %83, align 8, !tbaa !42
  %148 = add nsw i32 %.050102, 1
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  br label %211

149:                                              ; preds = %114
  %150 = fcmp ugt double %117, %34
  br i1 %150, label %193, label %151

151:                                              ; preds = %149
  %152 = load i32, ptr %78, align 4, !tbaa !43
  %.not61 = icmp eq i32 %152, 0
  br i1 %.not61, label %153, label %190

153:                                              ; preds = %151
  %154 = load ptr, ptr %26, align 8, !tbaa !9
  %155 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model1cEv(ptr noundef nonnull align 8 dereferenceable(704) %154)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %155, i64 noundef %89) #7
  %157 = load double, ptr %156, align 8, !tbaa !28
  store double %157, ptr %18, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  store ptr %0, ptr %19, align 8, !tbaa !44
  store ptr %4, ptr %79, align 8, !tbaa !5
  store ptr %18, ptr %80, align 8, !tbaa !5
  store ptr %155, ptr %81, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoEE3$_1EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %5, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %158 unwind label %175

158:                                              ; preds = %153
  %159 = load double, ptr %18, align 8, !tbaa !28
  %160 = call noundef double @_ZSt3absd(double noundef %159)
  %161 = fcmp ogt double %160, %34
  br i1 %161, label %162, label %188

162:                                              ; preds = %158
  %163 = load ptr, ptr %0, align 8, !tbaa !29
  %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %163, i32 noundef 1)
          to label %165 unwind label %175

165:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  invoke void @_ZN3ipx8TextlineIA44_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 1 dereferenceable(44) @.str.41)
          to label %166 unwind label %177

166:                                              ; preds = %165
  %167 = 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) %164, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %168 unwind label %179

168:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  %169 = load double, ptr %18, align 8, !tbaa !28
  invoke void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, double noundef %169)
          to label %170 unwind label %181

170:                                              ; preds = %168
  %171 = 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) %167, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %172 unwind label %183

172:                                              ; preds = %170
  %173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %171, i8 noundef signext 10)
          to label %174 unwind label %183

174:                                              ; preds = %172
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  store i32 1, ptr %78, align 4, !tbaa !43
  br label %188

175:                                              ; preds = %162, %153
  %176 = landingpad { ptr, i32 }
          cleanup
  br label %189

177:                                              ; preds = %165
  %178 = landingpad { ptr, i32 }
          cleanup
  br label %187

179:                                              ; preds = %166
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %186

181:                                              ; preds = %168
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %185

183:                                              ; preds = %172, %170
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %185

185:                                              ; preds = %183, %181
  %.pn62 = phi { ptr, i32 } [ %184, %183 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  br label %186

186:                                              ; preds = %185, %179
  %.pn62.pn = phi { ptr, i32 } [ %.pn62, %185 ], [ %180, %179 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %187

187:                                              ; preds = %186, %177
  %.pn62.pn.pn = phi { ptr, i32 } [ %.pn62.pn, %186 ], [ %178, %177 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %189

188:                                              ; preds = %174, %158
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %190

189:                                              ; preds = %187, %175
  %.pn62.pn.pn.pn = phi { ptr, i32 } [ %.pn62.pn.pn, %187 ], [ %176, %175 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %232

190:                                              ; preds = %188, %151
  %191 = load i32, ptr %36, align 4, !tbaa !32
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr %36, align 4, !tbaa !32
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  br label %211

193:                                              ; preds = %149
  %194 = load i32, ptr %12, align 4, !tbaa !33
  %195 = sext i32 %194 to i64
  %196 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %195) #7
  %197 = load i32, ptr %196, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #7
  %198 = load i32, ptr %12, align 4, !tbaa !33
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %5, i32 noundef %198)
  %200 = load double, ptr %199, align 8, !tbaa !28
  %201 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %0, i32 noundef %197, i32 noundef %87, double noundef %200, i32 noundef -1, ptr noundef nonnull %22)
          to label %202 unwind label %203

202:                                              ; preds = %193
  store i32 %201, ptr %35, align 4, !tbaa !30
  %.not60 = icmp eq i32 %201, 0
  br i1 %.not60, label %205, label %.thread79

203:                                              ; preds = %193
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #7
  br label %232

205:                                              ; preds = %202
  %206 = load i8, ptr %22, align 1, !tbaa !38, !range !39, !noundef !40
  %207 = trunc nuw i8 %206 to i1
  br i1 %207, label %208, label %.thread79, !llvm.loop !41

.thread79:                                        ; preds = %202, %205
  %.147.ph = phi i32 [ 5, %205 ], [ 1, %202 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #7
  br label %222

208:                                              ; preds = %205
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  %209 = load i32, ptr %83, align 8, !tbaa !42
  %210 = add nsw i32 %209, 1
  store i32 %210, ptr %83, align 8, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #7
  br label %211

211:                                              ; preds = %208, %145, %190
  %.252 = phi i32 [ %148, %145 ], [ %.050102, %190 ], [ %.050102, %208 ]
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %23) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %23)
          to label %212 unwind label %224

212:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %23, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %213 unwind label %226

213:                                              ; preds = %212
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull @.str.42)
          to label %215 unwind label %228

215:                                              ; preds = %213
  %216 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %214, i64 noundef %216)
          to label %218 unwind label %228

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

220:                                              ; preds = %218
  %221 = load ptr, ptr %0, align 8, !tbaa !29
  invoke void @_ZNK3ipx7Control12hIntervalLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496) %221, ptr noundef nonnull align 8 dereferenceable(128) %23)
          to label %.thread105 unwind label %228

.thread105:                                       ; preds = %220
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %23) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  br label %.backedge

222:                                              ; preds = %.thread, %.thread79
  %.248 = phi i32 [ %.046.ph, %.thread ], [ %.147.ph, %.thread79 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  %cond = icmp eq i32 %.248, 5
  br i1 %cond, label %.backedge, label %.thread82

.backedge:                                        ; preds = %222, %.thread105
  %.353108 = phi i32 [ %.252, %.thread105 ], [ %.050102, %222 ]
  %223 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  br i1 %223, label %._crit_edge104, label %85, !llvm.loop !41

224:                                              ; preds = %211
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %231

226:                                              ; preds = %212
  %227 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  br label %230

228:                                              ; preds = %220, %218, %215, %213
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %230

230:                                              ; preds = %228, %226
  %.pn68 = phi { ptr, i32 } [ %229, %228 ], [ %227, %226 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %23) #7
  br label %231

231:                                              ; preds = %230, %224
  %.pn68.pn = phi { ptr, i32 } [ %.pn68, %230 ], [ %225, %224 ]
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %23) #7
  br label %232

232:                                              ; preds = %231, %203, %189, %139, %130
  %.pn68.pn.pn = phi { ptr, i32 } [ %.pn68.pn, %231 ], [ %140, %139 ], [ %.pn62.pn.pn.pn, %189 ], [ %204, %203 ], [ %131, %130 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  br label %248

._crit_edge104:                                   ; preds = %.backedge, %.preheader
  %.050.lcssa = phi i32 [ 0, %.preheader ], [ %.353108, %.backedge ]
  %233 = load ptr, ptr %0, align 8, !tbaa !29
  %234 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %233, i32 noundef 1)
          to label %235 unwind label %94

235:                                              ; preds = %._crit_edge104
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  invoke void @_ZN3ipx8TextlineIA48_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 1 dereferenceable(48) @.str.44)
          to label %236 unwind label %243

236:                                              ; preds = %235
  %237 = 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) %25)
          to label %238 unwind label %245

238:                                              ; preds = %236
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %237, i32 noundef %.050.lcssa)
          to label %240 unwind label %245

240:                                              ; preds = %238
  %241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %239, i8 noundef signext 10)
          to label %242 unwind label %245

242:                                              ; preds = %240
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %.thread82

.thread82:                                        ; preds = %222, %111, %242
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %5) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) #7
  ret void

243:                                              ; preds = %235
  %244 = landingpad { ptr, i32 }
          cleanup
  br label %247

245:                                              ; preds = %240, %238, %236
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %247

247:                                              ; preds = %245, %243
  %.pn58 = phi { ptr, i32 } [ %246, %245 ], [ %244, %243 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %248

248:                                              ; preds = %101, %232, %247, %100, %94, %55
  %.pn73 = phi { ptr, i32 } [ %56, %55 ], [ %.pn58, %247 ], [ %95, %94 ], [ %.pn, %100 ], [ %.pn68.pn.pn, %232 ], [ %102, %101 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %5) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn73
}

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt5isinfd(double noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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 = { 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 #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 = { "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 = { 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 #7 = { nounwind }
attributes #8 = { 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 8}
!10 = !{!"_ZTSN3ipx5BasisE", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 40, !15, i64 64, !21, i64 72, !22, i64 76, !22, i64 80, !22, i64 84, !22, i64 88, !22, i64 92, !22, i64 96, !23, i64 104, !23, i64 112, !23, i64 120, !23, i64 128, !24, i64 136, !23, i64 160, !23, i64 168}
!11 = !{!"_ZTSSt6vectorIiSaIiEE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!15 = !{!"_ZTSSt10unique_ptrIN3ipx8LuUpdateESt14default_deleteIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt15__uniq_ptr_dataIN3ipx8LuUpdateESt14default_deleteIS1_ELb1ELb1EE", !17, i64 0}
!17 = !{!"_ZTSSt15__uniq_ptr_implIN3ipx8LuUpdateESt14default_deleteIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt5tupleIJPN3ipx8LuUpdateESt14default_deleteIS1_EEE", !19, i64 0}
!19 = !{!"_ZTSSt11_Tuple_implILm0EJPN3ipx8LuUpdateESt14default_deleteIS1_EEE", !20, i64 0}
!20 = !{!"_ZTSSt10_Head_baseILm0EPN3ipx8LuUpdateELb0EE", !6, i64 0}
!21 = !{!"bool", !7, i64 0}
!22 = !{!"int", !7, i64 0}
!23 = !{!"double", !7, i64 0}
!24 = !{!"_ZTSSt6vectorIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!23, !23, i64 0}
!29 = !{!10, !6, i64 0}
!30 = !{!31, !22, i64 12}
!31 = !{!"_ZTS8ipx_info", !22, i64 0, !22, i64 4, !22, i64 8, !22, i64 12, !22, i64 16, !22, i64 20, !22, i64 24, !22, i64 28, !22, i64 32, !22, i64 36, !22, i64 40, !22, i64 44, !22, i64 48, !22, i64 52, !22, i64 56, !22, i64 60, !22, i64 64, !22, i64 68, !22, i64 72, !22, i64 76, !23, i64 80, !23, i64 88, !23, i64 96, !23, i64 104, !23, i64 112, !23, i64 120, !23, i64 128, !23, i64 136, !23, i64 144, !23, i64 152, !23, i64 160, !23, i64 168, !23, i64 176, !23, i64 184, !22, i64 192, !22, i64 196, !22, i64 200, !22, i64 204, !22, i64 208, !22, i64 212, !22, i64 216, !23, i64 224, !23, i64 232, !23, i64 240, !23, i64 248, !23, i64 256, !23, i64 264, !23, i64 272, !23, i64 280, !23, i64 288, !23, i64 296, !23, i64 304, !23, i64 312, !23, i64 320, !23, i64 328, !23, i64 336, !23, i64 344, !23, i64 352, !23, i64 360, !23, i64 368, !23, i64 376, !23, i64 384, !23, i64 392, !23, i64 400, !23, i64 408, !22, i64 416, !22, i64 420, !22, i64 424, !22, i64 428, !23, i64 432, !23, i64 440, !23, i64 448, !23, i64 456}
!32 = !{!31, !22, i64 60}
!33 = !{!22, !22, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!37, !6, i64 24}
!37 = !{!"_ZTSZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!38 = !{!21, !21, i64 0}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = distinct !{!41, !35}
!42 = !{!31, !22, i64 208}
!43 = !{!31, !22, i64 68}
!44 = !{!45, !6, i64 0}
!45 = !{!"_ZTSZN3ipx5Basis27PivotFreeVariablesIntoBasisEPKdPNS_4InfoEE3$_1", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}


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