; LLVM IR from ERGO-Code/HiGHS :: src/ipm/ipx/basis.ll (ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_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.36 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.37 = 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.42 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE = external hidden unnamed_addr constant [71 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [49 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: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3ipx5Model2AIEv(ptr noundef nonnull align 8 dereferenceable(704)) #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_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 @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(44), i1 noundef zeroext) #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 @_ZNK3ipx5Model1bEv(ptr noundef nonnull align 8 dereferenceable(704)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3ipx13ScatterColumnERKNS_12SparseMatrixEidRSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(128), i32 noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(16)) #4

; 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
define dso_local void @_ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_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 ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca %"class.ipx::IndexedVector", align 8
  %13 = alloca %"class.ipx::IndexedVector", align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca i32, align 4
  %20 = alloca %"class.std::valarray", align 8
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::vector", align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca %class.anon.36, align 8
  %33 = alloca i8, align 1
  %34 = alloca double, align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca i32, align 4
  %38 = alloca double, align 8
  %39 = alloca %class.anon.37, align 8
  %40 = alloca i8, align 1
  %41 = alloca double, align 8
  %42 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = 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
  %45 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %46 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 1
  %47 = load ptr, ptr %46, align 8, !tbaa !9
  %48 = call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %47)
  store i32 %48, ptr %7, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  %49 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 1
  %50 = load ptr, ptr %49, align 8, !tbaa !9
  %51 = call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %50)
  store i32 %51, ptr %8, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #7
  %52 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 1
  %53 = load ptr, ptr %52, align 8, !tbaa !9
  %54 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3ipx5Model2AIEv(ptr noundef nonnull align 8 dereferenceable(704) %53)
  store ptr %54, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %55 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 1
  %56 = load ptr, ptr %55, align 8, !tbaa !9
  %57 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2lbEv(ptr noundef nonnull align 8 dereferenceable(704) %56)
  store ptr %57, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %58 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 1
  %59 = load ptr, ptr %58, align 8, !tbaa !9
  %60 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2ubEv(ptr noundef nonnull align 8 dereferenceable(704) %59)
  store ptr %60, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %12) #7
  %61 = load i32, ptr %7, align 4, !tbaa !28
  call void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %12, i32 noundef %61)
  call void @llvm.lifetime.start.p0(i64 48, ptr %13) #7
  %62 = load i32, ptr %8, align 4, !tbaa !28
  %63 = load i32, ptr %7, align 4, !tbaa !28
  %64 = add nsw i32 %62, %63
  invoke void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %13, i32 noundef %64)
          to label %65 unwind label %89

65:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  store double 0.000000e+00, ptr %17, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %66 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 0
  %67 = load ptr, ptr %66, align 8, !tbaa !30
  %68 = invoke noundef double @_ZNK3ipx7Control14dependency_tolEv(ptr noundef nonnull align 8 dereferenceable(1496) %67)
          to label %69 unwind label %93

69:                                               ; preds = %65
  store double %68, ptr %18, align 8, !tbaa !29
  %70 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %71 unwind label %93

71:                                               ; preds = %69
  %72 = load double, ptr %70, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  store double %72, ptr %16, align 8, !tbaa !29
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.ipx_info, ptr %73, i32 0, i32 3
  store i32 0, ptr %74, align 4, !tbaa !31
  %75 = load ptr, ptr %6, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.ipx_info, ptr %75, i32 0, i32 14
  store i32 0, ptr %76, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  store i32 0, ptr %19, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #7
  %77 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 1
  %78 = load ptr, ptr %77, align 8, !tbaa !9
  %79 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model1bEv(ptr noundef nonnull align 8 dereferenceable(704) %78)
          to label %80 unwind label %97

80:                                               ; preds = %71
  invoke void @_ZNSt8valarrayIdEC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %79)
          to label %81 unwind label %97

81:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  store i32 0, ptr %21, align 4, !tbaa !28
  br label %82

82:                                               ; preds = %135, %81
  %83 = load i32, ptr %21, align 4, !tbaa !28
  %84 = load i32, ptr %8, align 4, !tbaa !28
  %85 = load i32, ptr %7, align 4, !tbaa !28
  %86 = add nsw i32 %84, %85
  %87 = icmp slt i32 %83, %86
  br i1 %87, label %101, label %88

88:                                               ; preds = %82
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %138

89:                                               ; preds = %3
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %14, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %15, align 4
  br label %506

93:                                               ; preds = %69, %65
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %14, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %505

97:                                               ; preds = %80, %71
  %98 = landingpad { ptr, i32 }
          cleanup
  %99 = extractvalue { ptr, i32 } %98, 0
  store ptr %99, ptr %14, align 8
  %100 = extractvalue { ptr, i32 } %98, 1
  store i32 %100, ptr %15, align 4
  br label %504

101:                                              ; preds = %82
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = load i32, ptr %21, align 4, !tbaa !28
  %104 = sext i32 %103 to i64
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %102, i64 noundef %104) #7
  %106 = load double, ptr %105, align 8, !tbaa !29
  %107 = load ptr, ptr %11, align 8, !tbaa !5
  %108 = load i32, ptr %21, align 4, !tbaa !28
  %109 = sext i32 %108 to i64
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %107, i64 noundef %109) #7
  %111 = load double, ptr %110, align 8, !tbaa !29
  %112 = fcmp oeq double %106, %111
  br i1 %112, label %113, label %134

113:                                              ; preds = %101
  %114 = load ptr, ptr %10, align 8, !tbaa !5
  %115 = load i32, ptr %21, align 4, !tbaa !28
  %116 = sext i32 %115 to i64
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %114, i64 noundef %116) #7
  %118 = load double, ptr %117, align 8, !tbaa !29
  %119 = fcmp une double %118, 0.000000e+00
  br i1 %119, label %120, label %134

120:                                              ; preds = %113
  %121 = load ptr, ptr %9, align 8, !tbaa !5
  %122 = load i32, ptr %21, align 4, !tbaa !28
  %123 = load ptr, ptr %10, align 8, !tbaa !5
  %124 = load i32, ptr %21, align 4, !tbaa !28
  %125 = sext i32 %124 to i64
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %123, i64 noundef %125) #7
  %127 = load double, ptr %126, align 8, !tbaa !29
  %128 = fneg double %127
  invoke void @_ZN3ipx13ScatterColumnERKNS_12SparseMatrixEidRSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(128) %121, i32 noundef %122, double noundef %128, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %129 unwind label %130

129:                                              ; preds = %120
  br label %134

130:                                              ; preds = %120
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %14, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %503

134:                                              ; preds = %129, %113, %101
  br label %135

135:                                              ; preds = %134
  %136 = load i32, ptr %21, align 4, !tbaa !28
  %137 = add nsw i32 %136, 1
  store i32 %137, ptr %21, align 4, !tbaa !28
  br label %82, !llvm.loop !34

138:                                              ; preds = %88
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !28
  br label %139

139:                                              ; preds = %163, %138
  %140 = load i32, ptr %23, align 4, !tbaa !28
  %141 = load i32, ptr %8, align 4, !tbaa !28
  %142 = icmp slt i32 %140, %141
  br i1 %142, label %144, label %143

143:                                              ; preds = %139
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %166

144:                                              ; preds = %139
  %145 = load ptr, ptr %5, align 8, !tbaa !5
  %146 = load i32, ptr %23, align 4, !tbaa !28
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds double, ptr %145, i64 %147
  %149 = load double, ptr %148, align 8, !tbaa !29
  %150 = fcmp oeq double %149, 0.000000e+00
  br i1 %150, label %151, label %162

151:                                              ; preds = %144
  %152 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 3
  %153 = load i32, ptr %23, align 4, !tbaa !28
  %154 = sext i32 %153 to i64
  %155 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef %154) #7
  %156 = load i32, ptr %155, align 4, !tbaa !28
  %157 = icmp slt i32 %156, 0
  br i1 %157, label %158, label %159

158:                                              ; preds = %151
  br label %161

159:                                              ; preds = %151
  call void @__assert_fail(ptr noundef @.str.45, ptr noundef @.str.12, i32 noundef 814, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE) #8
  unreachable

160:                                              ; No predecessors!
  br label %161

161:                                              ; preds = %160, %158
  br label %162

162:                                              ; preds = %161, %144
  br label %163

163:                                              ; preds = %162
  %164 = load i32, ptr %23, align 4, !tbaa !28
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr %23, align 4, !tbaa !28
  br label %139, !llvm.loop !36

166:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %167 = load i32, ptr %8, align 4, !tbaa !28
  store i32 %167, ptr %24, align 4, !tbaa !28
  br label %168

168:                                              ; preds = %196, %166
  %169 = load i32, ptr %24, align 4, !tbaa !28
  %170 = load i32, ptr %8, align 4, !tbaa !28
  %171 = load i32, ptr %7, align 4, !tbaa !28
  %172 = add nsw i32 %170, %171
  %173 = icmp slt i32 %169, %172
  br i1 %173, label %175, label %174

174:                                              ; preds = %168
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %199

175:                                              ; preds = %168
  %176 = load ptr, ptr %5, align 8, !tbaa !5
  %177 = load i32, ptr %24, align 4, !tbaa !28
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds double, ptr %176, i64 %178
  %180 = load double, ptr %179, align 8, !tbaa !29
  %181 = fcmp oeq double %180, 0.000000e+00
  br i1 %181, label %182, label %195

182:                                              ; preds = %175
  %183 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 3
  %184 = load i32, ptr %24, align 4, !tbaa !28
  %185 = sext i32 %184 to i64
  %186 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %183, i64 noundef %185) #7
  %187 = load i32, ptr %186, align 4, !tbaa !28
  %188 = icmp sge i32 %187, 0
  br i1 %188, label %189, label %195

189:                                              ; preds = %182
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %190 unwind label %191

190:                                              ; preds = %189
  br label %195

191:                                              ; preds = %189
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %14, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %502

195:                                              ; preds = %190, %182, %175
  br label %196

196:                                              ; preds = %195
  %197 = load i32, ptr %24, align 4, !tbaa !28
  %198 = add nsw i32 %197, 1
  store i32 %198, ptr %24, align 4, !tbaa !28
  br label %168, !llvm.loop !37

199:                                              ; preds = %174
  %200 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 0
  %201 = load ptr, ptr %200, align 8, !tbaa !30
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %201, i32 noundef 1)
          to label %203 unwind label %229

203:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 32, ptr %25) #7
  invoke void @_ZN3ipx8TextlineIA33_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 1 dereferenceable(33) @.str.46)
          to label %204 unwind label %233

204:                                              ; preds = %203
  %205 = 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) %202, ptr noundef nonnull align 8 dereferenceable(32) %25)
          to label %206 unwind label %237

206:                                              ; preds = %204
  %207 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %205, i64 noundef %207)
          to label %209 unwind label %237

209:                                              ; preds = %206
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %208, i8 noundef signext 10)
          to label %211 unwind label %237

211:                                              ; preds = %209
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  %212 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 0
  %213 = load ptr, ptr %212, align 8, !tbaa !30
  invoke void @_ZNK3ipx7Control18ResetPrintIntervalEv(ptr noundef nonnull align 8 dereferenceable(1496) %213)
          to label %214 unwind label %229

214:                                              ; preds = %211
  br label %215

215:                                              ; preds = %460, %458, %214
  %216 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  %217 = xor i1 %216, true
  br i1 %217, label %218, label %477

218:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  %219 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  %220 = load i32, ptr %219, align 4, !tbaa !28
  store i32 %220, ptr %26, align 4, !tbaa !28
  %221 = load ptr, ptr %5, align 8, !tbaa !5
  %222 = load i32, ptr %26, align 4, !tbaa !28
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds double, ptr %221, i64 %223
  %225 = load double, ptr %224, align 8, !tbaa !29
  %226 = fcmp oeq double %225, 0.000000e+00
  br i1 %226, label %227, label %228

227:                                              ; preds = %218
  br label %243

228:                                              ; preds = %218
  call void @__assert_fail(ptr noundef @.str.47, ptr noundef @.str.12, i32 noundef 826, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE) #8
  unreachable

229:                                              ; preds = %477, %211, %199
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %14, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %15, align 4
  br label %502

233:                                              ; preds = %203
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %14, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %15, align 4
  br label %241

237:                                              ; preds = %209, %206, %204
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %14, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %241

241:                                              ; preds = %237, %233
  call void @llvm.lifetime.end.p0(i64 32, ptr %25) #7
  br label %502

242:                                              ; No predecessors!
  br label %243

243:                                              ; preds = %242, %227
  %244 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 3
  %245 = load i32, ptr %26, align 4, !tbaa !28
  %246 = sext i32 %245 to i64
  %247 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %244, i64 noundef %246) #7
  %248 = load i32, ptr %247, align 4, !tbaa !28
  %249 = icmp sge i32 %248, 0
  br i1 %249, label %250, label %251

250:                                              ; preds = %243
  br label %253

251:                                              ; preds = %243
  call void @__assert_fail(ptr noundef @.str.48, ptr noundef @.str.12, i32 noundef 827, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE) #8
  unreachable

252:                                              ; No predecessors!
  br label %253

253:                                              ; preds = %252, %250
  %254 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 0
  %255 = load ptr, ptr %254, align 8, !tbaa !30
  %256 = invoke noundef i32 @_ZNK3ipx7Control14InterruptCheckEi(ptr noundef nonnull align 8 dereferenceable(1496) %255, i32 noundef -1)
          to label %257 unwind label %262

257:                                              ; preds = %253
  %258 = load ptr, ptr %6, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.ipx_info, ptr %258, i32 0, i32 3
  store i32 %256, ptr %259, align 4, !tbaa !31
  %260 = icmp ne i32 %256, 0
  br i1 %260, label %261, label %266

261:                                              ; preds = %257
  store i32 1, ptr %27, align 4
  br label %458

262:                                              ; preds = %266, %253
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %14, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %15, align 4
  br label %476

266:                                              ; preds = %257
  %267 = load i32, ptr %26, align 4, !tbaa !28
  invoke void @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176) %45, i32 noundef %267, ptr noundef nonnull align 8 dereferenceable(44) %12, ptr noundef nonnull align 8 dereferenceable(44) %13, i1 noundef zeroext false)
          to label %268 unwind label %262

268:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 -1, ptr %28, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  store i32 -1, ptr %29, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  store double 0.000000e+00, ptr %30, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  store double 0.000000e+00, ptr %31, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 48, ptr %32) #7
  %269 = getelementptr inbounds %class.anon.36, ptr %32, i32 0, i32 0
  store ptr %8, ptr %269, align 8, !tbaa !5
  %270 = getelementptr inbounds %class.anon.36, ptr %32, i32 0, i32 1
  store ptr %5, ptr %270, align 8, !tbaa !5
  %271 = getelementptr inbounds %class.anon.36, ptr %32, i32 0, i32 2
  store ptr %30, ptr %271, align 8, !tbaa !5
  %272 = getelementptr inbounds %class.anon.36, ptr %32, i32 0, i32 3
  store ptr %28, ptr %272, align 8, !tbaa !5
  %273 = getelementptr inbounds %class.anon.36, ptr %32, i32 0, i32 4
  store ptr %31, ptr %273, align 8, !tbaa !5
  %274 = getelementptr inbounds %class.anon.36, ptr %32, i32 0, i32 5
  store ptr %29, ptr %274, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %13, ptr noundef nonnull align 8 dereferenceable(48) %32)
          to label %275 unwind label %290

275:                                              ; preds = %268
  %276 = load double, ptr %30, align 8, !tbaa !29
  %277 = fcmp ogt double %276, 4.000000e+00
  br i1 %277, label %278, label %330

278:                                              ; preds = %275
  %279 = load double, ptr %31, align 8, !tbaa !29
  %280 = fcmp olt double %279, 1.000000e+00
  br i1 %280, label %281, label %330

281:                                              ; preds = %278
  %282 = load ptr, ptr %5, align 8, !tbaa !5
  %283 = load i32, ptr %28, align 4, !tbaa !28
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %282, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !29
  %287 = fcmp oeq double %286, 0.000000e+00
  br i1 %287, label %288, label %289

288:                                              ; preds = %281
  br label %295

289:                                              ; preds = %281
  call void @__assert_fail(ptr noundef @.str.49, ptr noundef @.str.12, i32 noundef 855, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE) #8
  unreachable

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

294:                                              ; No predecessors!
  br label %295

295:                                              ; preds = %294, %288
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #7
  %296 = load i32, ptr %26, align 4, !tbaa !28
  %297 = load i32, ptr %28, align 4, !tbaa !28
  %298 = load i32, ptr %28, align 4, !tbaa !28
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %13, i32 noundef %298)
          to label %300 unwind label %311

300:                                              ; preds = %295
  %301 = load double, ptr %299, align 8, !tbaa !29
  %302 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %45, i32 noundef %296, i32 noundef %297, double noundef %301, i32 noundef 1, ptr noundef %33)
          to label %303 unwind label %311

303:                                              ; preds = %300
  %304 = load ptr, ptr %6, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.ipx_info, ptr %304, i32 0, i32 3
  store i32 %302, ptr %305, align 4, !tbaa !31
  %306 = load ptr, ptr %6, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.ipx_info, ptr %306, i32 0, i32 3
  %308 = load i32, ptr %307, align 4, !tbaa !31
  %309 = icmp ne i32 %308, 0
  br i1 %309, label %310, label %315

310:                                              ; preds = %303
  store i32 1, ptr %27, align 4
  br label %327

311:                                              ; preds = %319, %300, %295
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %14, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  br label %475

315:                                              ; preds = %303
  %316 = load i8, ptr %33, align 1, !tbaa !38, !range !39, !noundef !40
  %317 = trunc i8 %316 to i1
  br i1 %317, label %319, label %318

318:                                              ; preds = %315
  store i32 11, ptr %27, align 4
  br label %327, !llvm.loop !41

319:                                              ; preds = %315
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %320 unwind label %311

320:                                              ; preds = %319
  %321 = load ptr, ptr %6, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.ipx_info, ptr %321, i32 0, i32 38
  %323 = load i32, ptr %322, align 8, !tbaa !42
  %324 = add nsw i32 %323, 1
  store i32 %324, ptr %322, align 8, !tbaa !42
  %325 = load i32, ptr %19, align 4, !tbaa !28
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %19, align 4, !tbaa !28
  store i32 0, ptr %27, align 4
  br label %327

327:                                              ; preds = %320, %318, %310
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #7
  %328 = load i32, ptr %27, align 4
  switch i32 %328, label %457 [
    i32 0, label %329
  ]

329:                                              ; preds = %327
  br label %443

330:                                              ; preds = %278, %275
  %331 = load double, ptr %31, align 8, !tbaa !29
  %332 = load double, ptr %16, align 8, !tbaa !29
  %333 = fcmp ole double %331, %332
  br i1 %333, label %334, label %393

334:                                              ; preds = %330
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.ipx_info, ptr %335, i32 0, i32 16
  %337 = load i32, ptr %336, align 8, !tbaa !43
  %338 = icmp ne i32 %337, 0
  br i1 %338, label %388, label %339

339:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %340 = invoke noundef double @_ZN3ipx3DotERKNS_13IndexedVectorERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(44) %12, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %341 unwind label %363

341:                                              ; preds = %339
  store double %340, ptr %34, align 8, !tbaa !29
  %342 = load double, ptr %34, align 8, !tbaa !29
  %343 = invoke noundef double @_ZSt3absd(double noundef %342)
          to label %344 unwind label %363

344:                                              ; preds = %341
  %345 = load double, ptr %16, align 8, !tbaa !29
  %346 = fcmp ogt double %343, %345
  br i1 %346, label %347, label %386

347:                                              ; preds = %344
  %348 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 0
  %349 = load ptr, ptr %348, align 8, !tbaa !30
  %350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %349, i32 noundef 1)
          to label %351 unwind label %363

351:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #7
  invoke void @_ZN3ipx8TextlineIA42_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 1 dereferenceable(42) @.str.50)
          to label %352 unwind label %367

352:                                              ; preds = %351
  %353 = 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) %350, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %354 unwind label %371

354:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #7
  %355 = load double, ptr %34, align 8, !tbaa !29
  invoke void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, double noundef %355)
          to label %356 unwind label %375

356:                                              ; preds = %354
  %357 = 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) %353, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %358 unwind label %379

358:                                              ; preds = %356
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %357, i8 noundef signext 10)
          to label %360 unwind label %379

360:                                              ; preds = %358
  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
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  %361 = load ptr, ptr %6, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.ipx_info, ptr %361, i32 0, i32 16
  store i32 1, ptr %362, align 8, !tbaa !43
  br label %386

363:                                              ; preds = %347, %341, %339
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %14, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %15, align 4
  br label %387

367:                                              ; preds = %351
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %14, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %15, align 4
  br label %385

371:                                              ; preds = %352
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %14, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %15, align 4
  br label %384

375:                                              ; preds = %354
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %14, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %15, align 4
  br label %383

379:                                              ; preds = %358, %356
  %380 = landingpad { ptr, i32 }
          cleanup
  %381 = extractvalue { ptr, i32 } %380, 0
  store ptr %381, ptr %14, align 8
  %382 = extractvalue { ptr, i32 } %380, 1
  store i32 %382, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %383

383:                                              ; preds = %379, %375
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  br label %384

384:                                              ; preds = %383, %371
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %385

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

386:                                              ; preds = %360, %344
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %388

387:                                              ; preds = %385, %363
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %475

388:                                              ; preds = %386, %334
  %389 = load ptr, ptr %6, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.ipx_info, ptr %389, i32 0, i32 14
  %391 = load i32, ptr %390, align 8, !tbaa !33
  %392 = add nsw i32 %391, 1
  store i32 %392, ptr %390, align 8, !tbaa !33
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  br label %442

393:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  store i32 -1, ptr %37, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  store double 0.000000e+00, ptr %38, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  %394 = getelementptr inbounds %class.anon.37, ptr %39, i32 0, i32 0
  store ptr %5, ptr %394, align 8, !tbaa !5
  %395 = getelementptr inbounds %class.anon.37, ptr %39, i32 0, i32 1
  store ptr %31, ptr %395, align 8, !tbaa !5
  %396 = getelementptr inbounds %class.anon.37, ptr %39, i32 0, i32 2
  store ptr %38, ptr %396, align 8, !tbaa !5
  %397 = getelementptr inbounds %class.anon.37, ptr %39, i32 0, i32 3
  store ptr %37, ptr %397, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoEE3$_1EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %13, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %398 unwind label %403

398:                                              ; preds = %393
  %399 = load i32, ptr %37, align 4, !tbaa !28
  %400 = icmp sge i32 %399, 0
  br i1 %400, label %401, label %402

401:                                              ; preds = %398
  br label %408

402:                                              ; preds = %398
  call void @__assert_fail(ptr noundef @.str.51, ptr noundef @.str.12, i32 noundef 903, ptr noundef @__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE) #8
  unreachable

403:                                              ; preds = %393
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %14, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %15, align 4
  br label %441

407:                                              ; No predecessors!
  br label %408

408:                                              ; preds = %407, %401
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %409 = load i32, ptr %37, align 4, !tbaa !28
  %410 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %13, i32 noundef %409)
          to label %411 unwind label %425

411:                                              ; preds = %408
  %412 = load double, ptr %410, align 8, !tbaa !29
  store double %412, ptr %41, align 8, !tbaa !29
  %413 = load i32, ptr %26, align 4, !tbaa !28
  %414 = load i32, ptr %37, align 4, !tbaa !28
  %415 = load double, ptr %41, align 8, !tbaa !29
  %416 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %45, i32 noundef %413, i32 noundef %414, double noundef %415, i32 noundef 1, ptr noundef %40)
          to label %417 unwind label %425

417:                                              ; preds = %411
  %418 = load ptr, ptr %6, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.ipx_info, ptr %418, i32 0, i32 3
  store i32 %416, ptr %419, align 4, !tbaa !31
  %420 = load ptr, ptr %6, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.ipx_info, ptr %420, i32 0, i32 3
  %422 = load i32, ptr %421, align 4, !tbaa !31
  %423 = icmp ne i32 %422, 0
  br i1 %423, label %424, label %429

424:                                              ; preds = %417
  store i32 1, ptr %27, align 4
  br label %438

425:                                              ; preds = %411, %408
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %14, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  br label %441

429:                                              ; preds = %417
  %430 = load i8, ptr %40, align 1, !tbaa !38, !range !39, !noundef !40
  %431 = trunc i8 %430 to i1
  br i1 %431, label %433, label %432

432:                                              ; preds = %429
  store i32 11, ptr %27, align 4
  br label %438, !llvm.loop !41

433:                                              ; preds = %429
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  %434 = load ptr, ptr %6, align 8, !tbaa !5
  %435 = getelementptr inbounds %struct.ipx_info, ptr %434, i32 0, i32 38
  %436 = load i32, ptr %435, align 8, !tbaa !42
  %437 = add nsw i32 %436, 1
  store i32 %437, ptr %435, align 8, !tbaa !42
  store i32 0, ptr %27, align 4
  br label %438

438:                                              ; preds = %433, %432, %424
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  %439 = load i32, ptr %27, align 4
  switch i32 %439, label %457 [
    i32 0, label %440
  ]

440:                                              ; preds = %438
  br label %442

441:                                              ; preds = %425, %403
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %475

442:                                              ; preds = %440, %388
  br label %443

443:                                              ; preds = %442, %329
  call void @llvm.lifetime.start.p0(i64 392, ptr %42) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %42)
          to label %444 unwind label %461

444:                                              ; preds = %443
  call void @llvm.lifetime.start.p0(i64 32, ptr %43) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %42, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %445 unwind label %465

445:                                              ; preds = %444
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  %446 = getelementptr inbounds i8, ptr %42, i64 16
  %447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %446, ptr noundef @.str.42)
          to label %448 unwind label %469

448:                                              ; preds = %445
  %449 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  %450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %447, i64 noundef %449)
          to label %451 unwind label %469

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

453:                                              ; preds = %451
  %454 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 0
  %455 = load ptr, ptr %454, align 8, !tbaa !30
  invoke void @_ZNK3ipx7Control12hIntervalLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496) %455, ptr noundef nonnull align 8 dereferenceable(128) %42)
          to label %456 unwind label %469

456:                                              ; preds = %453
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %42) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %42) #7
  store i32 0, ptr %27, align 4
  br label %457

457:                                              ; preds = %456, %438, %327
  call void @llvm.lifetime.end.p0(i64 48, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %458

458:                                              ; preds = %457, %261
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  %459 = load i32, ptr %27, align 4
  switch i32 %459, label %490 [
    i32 0, label %460
    i32 11, label %215
  ]

460:                                              ; preds = %458
  br label %215, !llvm.loop !41

461:                                              ; preds = %443
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %14, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %15, align 4
  br label %474

465:                                              ; preds = %444
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %14, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %43) #7
  br label %473

469:                                              ; preds = %453, %451, %448, %445
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %14, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %15, align 4
  br label %473

473:                                              ; preds = %469, %465
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %42) #7
  br label %474

474:                                              ; preds = %473, %461
  call void @llvm.lifetime.end.p0(i64 392, ptr %42) #7
  br label %475

475:                                              ; preds = %474, %441, %387, %311, %290
  call void @llvm.lifetime.end.p0(i64 48, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %476

476:                                              ; preds = %475, %262
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %502

477:                                              ; preds = %215
  %478 = getelementptr inbounds %"class.ipx::Basis", ptr %45, i32 0, i32 0
  %479 = load ptr, ptr %478, align 8, !tbaa !30
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %479, i32 noundef 1)
          to label %481 unwind label %229

481:                                              ; preds = %477
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #7
  invoke void @_ZN3ipx8TextlineIA49_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %44, ptr noundef nonnull align 1 dereferenceable(49) @.str.53)
          to label %482 unwind label %493

482:                                              ; preds = %481
  %483 = 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) %480, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %484 unwind label %497

484:                                              ; preds = %482
  %485 = load i32, ptr %19, align 4, !tbaa !28
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %483, i32 noundef %485)
          to label %487 unwind label %497

487:                                              ; preds = %484
  %488 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %486, i8 noundef signext 10)
          to label %489 unwind label %497

489:                                              ; preds = %487
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  store i32 0, ptr %27, align 4
  br label %490

490:                                              ; preds = %489, %458
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %13) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %12) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, 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
  %491 = load i32, ptr %27, align 4
  switch i32 %491, label %512 [
    i32 0, label %492
    i32 1, label %492
  ]

492:                                              ; preds = %490, %490
  ret void

493:                                              ; preds = %481
  %494 = landingpad { ptr, i32 }
          cleanup
  %495 = extractvalue { ptr, i32 } %494, 0
  store ptr %495, ptr %14, align 8
  %496 = extractvalue { ptr, i32 } %494, 1
  store i32 %496, ptr %15, align 4
  br label %501

497:                                              ; preds = %487, %484, %482
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %14, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %501

501:                                              ; preds = %497, %493
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  br label %502

502:                                              ; preds = %501, %476, %241, %229, %191
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #7
  br label %503

503:                                              ; preds = %502, %130
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  br label %504

504:                                              ; preds = %503, %97
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %505

505:                                              ; preds = %504, %93
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %13) #7
  br label %506

506:                                              ; preds = %505, %89
  call void @llvm.lifetime.end.p0(i64 48, ptr %13) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %12) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 8, 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 %507

507:                                              ; preds = %506
  %508 = load ptr, ptr %14, align 8
  %509 = load i32, ptr %15, align 4
  %510 = insertvalue { ptr, i32 } poison, ptr %508, 0
  %511 = insertvalue { ptr, i32 } %510, i32 %509, 1
  resume { ptr, i32 } %511

512:                                              ; preds = %490
  unreachable
}

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt8valarrayIdEC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

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

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

declare noundef double @_ZN3ipx3DotERKNS_13IndexedVectorERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(16)) #5

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN3ipx16for_each_nonzeroIZNS_5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_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 @_ZN3ipx8TextlineIA49_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(49)) #3

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 56}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = distinct !{!37, !35}
!38 = !{!21, !21, i64 0}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = distinct !{!41, !35}
!42 = !{!32, !22, i64 208}
!43 = !{!32, !22, i64 64}


; 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.36 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.37 = 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.42 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE = external hidden unnamed_addr constant [71 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [49 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: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3ipx5Model2AIEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_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 @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef, ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(44), i1 noundef zeroext) local_unnamed_addr #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 @_ZNK3ipx5Model1bEv(ptr noundef nonnull align 8 dereferenceable(704)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3ipx13ScatterColumnERKNS_12SparseMatrixEidRSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(128), i32 noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4

; 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
define dso_local void @_ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_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 i32, align 4
  %6 = alloca %"class.ipx::IndexedVector", align 8
  %7 = alloca %"class.ipx::IndexedVector", align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca %"class.std::valarray", align 8
  %11 = alloca %"class.std::vector", align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca %class.anon.36, align 8
  %19 = alloca i8, align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca %class.anon.37, align 8
  %25 = alloca i8, align 1
  %26 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %1, ptr %4, align 8, !tbaa !5
  %29 = getelementptr inbounds i8, ptr %0, i64 8
  %30 = load ptr, ptr %29, align 8, !tbaa !9
  %31 = tail call noundef i32 @_ZNK3ipx5Model4rowsEv(ptr noundef nonnull align 8 dereferenceable(704) %30)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  %32 = load ptr, ptr %29, align 8, !tbaa !9
  %33 = tail call noundef i32 @_ZNK3ipx5Model4colsEv(ptr noundef nonnull align 8 dereferenceable(704) %32)
  store i32 %33, ptr %5, align 4, !tbaa !28
  %34 = load ptr, ptr %29, align 8, !tbaa !9
  %35 = tail call noundef nonnull align 8 dereferenceable(128) ptr @_ZNK3ipx5Model2AIEv(ptr noundef nonnull align 8 dereferenceable(704) %34)
  %36 = load ptr, ptr %29, align 8, !tbaa !9
  %37 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2lbEv(ptr noundef nonnull align 8 dereferenceable(704) %36)
  %38 = load ptr, ptr %29, align 8, !tbaa !9
  %39 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model2ubEv(ptr noundef nonnull align 8 dereferenceable(704) %38)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) #7
  call void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %6, i32 noundef %31)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) #7
  %40 = add nsw i32 %33, %31
  invoke void @_ZN3ipx13IndexedVectorC1Ei(ptr noundef nonnull align 8 dereferenceable(44) %7, i32 noundef %40)
          to label %41 unwind label %56

41:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  store double 0.000000e+00, ptr %8, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  %42 = load ptr, ptr %0, align 8, !tbaa !30
  %43 = call noundef double @_ZNK3ipx7Control14dependency_tolEv(ptr noundef nonnull align 8 dereferenceable(1496) %42)
  store double %43, ptr %9, align 8, !tbaa !29
  %44 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9)
  %45 = load double, ptr %44, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  %46 = getelementptr inbounds i8, ptr %2, i64 12
  store i32 0, ptr %46, align 4, !tbaa !31
  %47 = getelementptr inbounds i8, ptr %2, i64 56
  store i32 0, ptr %47, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  %48 = load ptr, ptr %29, align 8, !tbaa !9
  %49 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3ipx5Model1bEv(ptr noundef nonnull align 8 dereferenceable(704) %48)
  invoke void @_ZNSt8valarrayIdEC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(16) %49)
          to label %.preheader113 unwind label %58

.preheader113:                                    ; preds = %41
  %50 = load i32, ptr %5, align 4, !tbaa !28
  %51 = add nsw i32 %50, %31
  %52 = icmp sgt i32 %51, 0
  br i1 %52, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %76, %.preheader113
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  %53 = load i32, ptr %5, align 4, !tbaa !28
  %54 = icmp sgt i32 %53, 0
  br i1 %54, label %.lr.ph136, label %._crit_edge137

.lr.ph136:                                        ; preds = %._crit_edge
  %55 = getelementptr inbounds i8, ptr %0, i64 40
  br label %84

56:                                               ; preds = %3
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %301

58:                                               ; preds = %41
  %59 = landingpad { ptr, i32 }
          cleanup
  br label %300

.lr.ph:                                           ; preds = %.preheader113, %76
  %indvars.iv = phi i64 [ %indvars.iv.next, %76 ], [ 0, %.preheader113 ]
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %indvars.iv) #7
  %61 = load double, ptr %60, align 8, !tbaa !29
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %39, i64 noundef %indvars.iv) #7
  %63 = load double, ptr %62, align 8, !tbaa !29
  %64 = fcmp oeq double %61, %63
  br i1 %64, label %65, label %76

65:                                               ; preds = %.lr.ph
  %66 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %indvars.iv) #7
  %67 = load double, ptr %66, align 8, !tbaa !29
  %68 = fcmp une double %67, 0.000000e+00
  br i1 %68, label %69, label %76

69:                                               ; preds = %65
  %70 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8valarrayIdEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %indvars.iv) #7
  %71 = load double, ptr %70, align 8, !tbaa !29
  %72 = fneg double %71
  %73 = trunc nuw nsw i64 %indvars.iv to i32
  invoke void @_ZN3ipx13ScatterColumnERKNS_12SparseMatrixEidRSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(128) %35, i32 noundef %73, double noundef %72, ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %76 unwind label %74

74:                                               ; preds = %69
  %75 = landingpad { ptr, i32 }
          cleanup
  br label %299

76:                                               ; preds = %.lr.ph, %65, %69
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %77 = load i32, ptr %5, align 4, !tbaa !28
  %78 = add nsw i32 %77, %31
  %79 = sext i32 %78 to i64
  %80 = icmp slt i64 %indvars.iv.next, %79
  br i1 %80, label %.lr.ph, label %._crit_edge, !llvm.loop !34

._crit_edge137:                                   ; preds = %95, %._crit_edge
  %81 = phi i32 [ %53, %._crit_edge ], [ %96, %95 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #7
  store i32 %81, ptr %12, align 4, !tbaa !28
  %82 = icmp sgt i32 %31, 0
  br i1 %82, label %.lr.ph140, label %._crit_edge141

.lr.ph140:                                        ; preds = %._crit_edge137
  %83 = getelementptr inbounds i8, ptr %0, i64 40
  br label %101

84:                                               ; preds = %.lr.ph136, %95
  %85 = phi i32 [ %53, %.lr.ph136 ], [ %96, %95 ]
  %indvars.iv148 = phi i64 [ 0, %.lr.ph136 ], [ %indvars.iv.next149, %95 ]
  %86 = load ptr, ptr %4, align 8, !tbaa !5
  %87 = getelementptr inbounds double, ptr %86, i64 %indvars.iv148
  %88 = load double, ptr %87, align 8, !tbaa !29
  %89 = fcmp oeq double %88, 0.000000e+00
  br i1 %89, label %90, label %95

90:                                               ; preds = %84
  %91 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %indvars.iv148) #7
  %92 = load i32, ptr %91, align 4, !tbaa !28
  %93 = icmp slt i32 %92, 0
  br i1 %93, label %._crit_edge151, label %94

._crit_edge151:                                   ; preds = %90
  %.pre = load i32, ptr %5, align 4, !tbaa !28
  br label %95

94:                                               ; preds = %90
  call void @__assert_fail(ptr noundef nonnull @.str.45, ptr noundef nonnull @.str.12, i32 noundef 814, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE) #8
  unreachable

95:                                               ; preds = %._crit_edge151, %84
  %96 = phi i32 [ %.pre, %._crit_edge151 ], [ %85, %84 ]
  %indvars.iv.next149 = add nuw nsw i64 %indvars.iv148, 1
  %97 = sext i32 %96 to i64
  %98 = icmp slt i64 %indvars.iv.next149, %97
  br i1 %98, label %84, label %._crit_edge137, !llvm.loop !36

._crit_edge141:                                   ; preds = %114, %._crit_edge137
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  %99 = load ptr, ptr %0, align 8, !tbaa !30
  %100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %99, i32 noundef 1)
          to label %120 unwind label %152

101:                                              ; preds = %.lr.ph140, %114
  %storemerge138 = phi i32 [ %81, %.lr.ph140 ], [ %116, %114 ]
  %102 = load ptr, ptr %4, align 8, !tbaa !5
  %103 = sext i32 %storemerge138 to i64
  %104 = getelementptr inbounds double, ptr %102, i64 %103
  %105 = load double, ptr %104, align 8, !tbaa !29
  %106 = fcmp oeq double %105, 0.000000e+00
  br i1 %106, label %107, label %114

107:                                              ; preds = %101
  %108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %103) #7
  %109 = load i32, ptr %108, align 4, !tbaa !28
  %110 = icmp sgt i32 %109, -1
  br i1 %110, label %111, label %114

111:                                              ; preds = %107
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %114 unwind label %112

112:                                              ; preds = %111
  %113 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #7
  br label %298

114:                                              ; preds = %101, %107, %111
  %115 = load i32, ptr %12, align 4, !tbaa !28
  %116 = add nsw i32 %115, 1
  store i32 %116, ptr %12, align 4, !tbaa !28
  %117 = load i32, ptr %5, align 4, !tbaa !28
  %118 = add nsw i32 %117, %31
  %119 = icmp slt i32 %116, %118
  br i1 %119, label %101, label %._crit_edge141, !llvm.loop !37

120:                                              ; preds = %._crit_edge141
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  invoke void @_ZN3ipx8TextlineIA33_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 1 dereferenceable(33) @.str.46)
          to label %121 unwind label %154

121:                                              ; preds = %120
  %122 = 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) %100, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %123 unwind label %156

123:                                              ; preds = %121
  %124 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  %125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %122, i64 noundef %124)
          to label %126 unwind label %156

126:                                              ; preds = %123
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %125, i8 noundef signext 10)
          to label %128 unwind label %156

128:                                              ; preds = %126
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  %129 = load ptr, ptr %0, align 8, !tbaa !30
  invoke void @_ZNK3ipx7Control18ResetPrintIntervalEv(ptr noundef nonnull align 8 dereferenceable(1496) %129)
          to label %.preheader unwind label %152

.preheader:                                       ; preds = %128
  %130 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  br i1 %130, label %._crit_edge144, label %.lr.ph143

.lr.ph143:                                        ; preds = %.preheader
  %131 = getelementptr inbounds i8, ptr %0, i64 40
  %132 = getelementptr inbounds i8, ptr %18, i64 8
  %133 = getelementptr inbounds i8, ptr %18, i64 16
  %134 = getelementptr inbounds i8, ptr %18, i64 24
  %135 = getelementptr inbounds i8, ptr %18, i64 32
  %136 = getelementptr inbounds i8, ptr %18, i64 40
  %137 = getelementptr inbounds i8, ptr %2, i64 64
  %138 = getelementptr inbounds i8, ptr %24, i64 8
  %139 = getelementptr inbounds i8, ptr %24, i64 16
  %140 = getelementptr inbounds i8, ptr %24, i64 24
  %141 = getelementptr inbounds i8, ptr %2, i64 208
  %142 = getelementptr inbounds i8, ptr %26, i64 16
  br label %143

143:                                              ; preds = %.lr.ph143, %.backedge
  %.070142 = phi i32 [ 0, %.lr.ph143 ], [ %.373155, %.backedge ]
  %144 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  %145 = load i32, ptr %144, align 4, !tbaa !28
  %146 = load ptr, ptr %4, align 8, !tbaa !5
  %147 = sext i32 %145 to i64
  %148 = getelementptr inbounds double, ptr %146, i64 %147
  %149 = load double, ptr %148, align 8, !tbaa !29
  %150 = fcmp oeq double %149, 0.000000e+00
  br i1 %150, label %159, label %151

151:                                              ; preds = %143
  call void @__assert_fail(ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.12, i32 noundef 826, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE) #8
  unreachable

152:                                              ; preds = %._crit_edge144, %128, %._crit_edge141
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %298

154:                                              ; preds = %120
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %158

156:                                              ; preds = %126, %123, %121
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #7
  br label %158

158:                                              ; preds = %156, %154
  %.pn = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %298

159:                                              ; preds = %143
  %160 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %131, i64 noundef %147) #7
  %161 = load i32, ptr %160, align 4, !tbaa !28
  %162 = icmp sgt i32 %161, -1
  br i1 %162, label %164, label %163

163:                                              ; preds = %159
  call void @__assert_fail(ptr noundef nonnull @.str.48, ptr noundef nonnull @.str.12, i32 noundef 827, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE) #8
  unreachable

164:                                              ; preds = %159
  %165 = load ptr, ptr %0, align 8, !tbaa !30
  %166 = invoke noundef i32 @_ZNK3ipx7Control14InterruptCheckEi(ptr noundef nonnull align 8 dereferenceable(1496) %165, i32 noundef -1)
          to label %167 unwind label %168

167:                                              ; preds = %164
  store i32 %166, ptr %46, align 4, !tbaa !31
  %.not = icmp eq i32 %166, 0
  br i1 %.not, label %170, label %.thread110

168:                                              ; preds = %170, %164
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %298

170:                                              ; preds = %167
  invoke void @_ZN3ipx5Basis10TableauRowEiRNS_13IndexedVectorES2_b(ptr noundef nonnull align 8 dereferenceable(176) %0, i32 noundef %145, ptr noundef nonnull align 8 dereferenceable(44) %6, ptr noundef nonnull align 8 dereferenceable(44) %7, i1 noundef zeroext false)
          to label %171 unwind label %168

171:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #7
  store i32 -1, ptr %14, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  store i32 -1, ptr %15, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  store double 0.000000e+00, ptr %16, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  store double 0.000000e+00, ptr %17, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %18) #7
  store ptr %5, ptr %18, align 8, !tbaa !5
  store ptr %4, ptr %132, align 8, !tbaa !5
  store ptr %16, ptr %133, align 8, !tbaa !5
  store ptr %14, ptr %134, align 8, !tbaa !5
  store ptr %17, ptr %135, align 8, !tbaa !5
  store ptr %15, ptr %136, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoEE3$_0EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %7, ptr noundef nonnull align 8 dereferenceable(48) %18)
          to label %172 unwind label %185

172:                                              ; preds = %171
  %173 = load double, ptr %16, align 8, !tbaa !29
  %174 = fcmp ogt double %173, 4.000000e+00
  %175 = load double, ptr %17, align 8
  %176 = fcmp olt double %175, 1.000000e+00
  %or.cond = select i1 %174, i1 %176, i1 false
  br i1 %or.cond, label %177, label %202

177:                                              ; preds = %172
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = load i32, ptr %14, align 4, !tbaa !28
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds double, ptr %178, i64 %180
  %182 = load double, ptr %181, align 8, !tbaa !29
  %183 = fcmp oeq double %182, 0.000000e+00
  br i1 %183, label %187, label %184

184:                                              ; preds = %177
  call void @__assert_fail(ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.12, i32 noundef 855, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE) #8
  unreachable

185:                                              ; preds = %171
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %282

187:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #7
  %188 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %7, i32 noundef %179)
  %189 = load double, ptr %188, align 8, !tbaa !29
  %190 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %0, i32 noundef %145, i32 noundef %179, double noundef %189, i32 noundef 1, ptr noundef nonnull %19)
          to label %191 unwind label %192

191:                                              ; preds = %187
  store i32 %190, ptr %46, align 4, !tbaa !31
  %.not91 = icmp eq i32 %190, 0
  br i1 %.not91, label %194, label %.thread

192:                                              ; preds = %197, %187
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  br label %282

194:                                              ; preds = %191
  %195 = load i8, ptr %19, align 1, !tbaa !38, !range !39, !noundef !40
  %196 = trunc nuw i8 %195 to i1
  br i1 %196, label %197, label %.thread, !llvm.loop !41

197:                                              ; preds = %194
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %198 unwind label %192

.thread:                                          ; preds = %191, %194
  %.066.ph = phi i32 [ 11, %194 ], [ 1, %191 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  br label %272

198:                                              ; preds = %197
  %199 = load i32, ptr %141, align 8, !tbaa !42
  %200 = add nsw i32 %199, 1
  store i32 %200, ptr %141, align 8, !tbaa !42
  %201 = add nsw i32 %.070142, 1
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #7
  br label %261

202:                                              ; preds = %172
  %203 = fcmp ugt double %175, %45
  br i1 %203, label %239, label %204

204:                                              ; preds = %202
  %205 = load i32, ptr %137, align 8, !tbaa !43
  %.not85 = icmp eq i32 %205, 0
  br i1 %.not85, label %206, label %236

206:                                              ; preds = %204
  %207 = invoke noundef double @_ZN3ipx3DotERKNS_13IndexedVectorERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(44) %6, ptr noundef nonnull align 8 dereferenceable(16) %10)
          to label %208 unwind label %223

208:                                              ; preds = %206
  %209 = call noundef double @_ZSt3absd(double noundef %207)
  %210 = fcmp ogt double %209, %45
  br i1 %210, label %211, label %236

211:                                              ; preds = %208
  %212 = load ptr, ptr %0, align 8, !tbaa !30
  %213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %212, i32 noundef 1)
          to label %214 unwind label %223

214:                                              ; preds = %211
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  invoke void @_ZN3ipx8TextlineIA42_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(42) @.str.50)
          to label %215 unwind label %225

215:                                              ; preds = %214
  %216 = 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) %213, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %217 unwind label %227

217:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  invoke void @_ZN3ipx4sci2B5cxx11Ed(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, double noundef %207)
          to label %218 unwind label %229

218:                                              ; preds = %217
  %219 = 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) %216, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %220 unwind label %231

220:                                              ; preds = %218
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %219, i8 noundef signext 10)
          to label %222 unwind label %231

222:                                              ; preds = %220
  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 %137, align 8, !tbaa !43
  br label %236

223:                                              ; preds = %211, %206
  %224 = landingpad { ptr, i32 }
          cleanup
  br label %282

225:                                              ; preds = %214
  %226 = landingpad { ptr, i32 }
          cleanup
  br label %235

227:                                              ; preds = %215
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %234

229:                                              ; preds = %217
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %233

231:                                              ; preds = %220, %218
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  br label %233

233:                                              ; preds = %231, %229
  %.pn86 = phi { ptr, i32 } [ %232, %231 ], [ %230, %229 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  br label %234

234:                                              ; preds = %233, %227
  %.pn86.pn = phi { ptr, i32 } [ %.pn86, %233 ], [ %228, %227 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %235

235:                                              ; preds = %234, %225
  %.pn86.pn.pn = phi { ptr, i32 } [ %.pn86.pn, %234 ], [ %226, %225 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %282

236:                                              ; preds = %208, %222, %204
  %237 = load i32, ptr %47, align 8, !tbaa !33
  %238 = add nsw i32 %237, 1
  store i32 %238, ptr %47, align 8, !tbaa !33
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  br label %261

239:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #7
  store i32 -1, ptr %22, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  store double 0.000000e+00, ptr %23, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #7
  store ptr %4, ptr %24, align 8, !tbaa !5
  store ptr %17, ptr %138, align 8, !tbaa !5
  store ptr %23, ptr %139, align 8, !tbaa !5
  store ptr %22, ptr %140, align 8, !tbaa !5
  invoke void @"_ZN3ipx16for_each_nonzeroIZNS_5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoEE3$_1EEvRNS_13IndexedVectorERT_"(ptr noundef nonnull align 8 dereferenceable(44) %7, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %240 unwind label %244

240:                                              ; preds = %239
  %241 = load i32, ptr %22, align 4, !tbaa !28
  %242 = icmp sgt i32 %241, -1
  br i1 %242, label %246, label %243

243:                                              ; preds = %240
  call void @__assert_fail(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.12, i32 noundef 903, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN3ipx5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_4InfoE) #8
  unreachable

244:                                              ; preds = %239
  %245 = landingpad { ptr, i32 }
          cleanup
  br label %260

246:                                              ; preds = %240
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #7
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ipx13IndexedVectorixEi(ptr noundef nonnull align 8 dereferenceable(44) %7, i32 noundef %241)
  %248 = load double, ptr %247, align 8, !tbaa !29
  %249 = load i32, ptr %22, align 4, !tbaa !28
  %250 = invoke noundef i32 @_ZN3ipx5Basis16ExchangeIfStableEiidiPb(ptr noundef nonnull align 8 dereferenceable(176) %0, i32 noundef %145, i32 noundef %249, double noundef %248, i32 noundef 1, ptr noundef nonnull %25)
          to label %251 unwind label %252

251:                                              ; preds = %246
  store i32 %250, ptr %46, align 4, !tbaa !31
  %.not84 = icmp eq i32 %250, 0
  br i1 %.not84, label %254, label %.thread107

252:                                              ; preds = %246
  %253 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  br label %260

254:                                              ; preds = %251
  %255 = load i8, ptr %25, align 1, !tbaa !38, !range !39, !noundef !40
  %256 = trunc nuw i8 %255 to i1
  br i1 %256, label %257, label %.thread107, !llvm.loop !41

.thread107:                                       ; preds = %251, %254
  %.167.ph = phi i32 [ 11, %254 ], [ 1, %251 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  br label %272

257:                                              ; preds = %254
  call void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  %258 = load i32, ptr %141, align 8, !tbaa !42
  %259 = add nsw i32 %258, 1
  store i32 %259, ptr %141, align 8, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  br label %261

260:                                              ; preds = %252, %244
  %.pn82 = phi { ptr, i32 } [ %253, %252 ], [ %245, %244 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  br label %282

261:                                              ; preds = %257, %198, %236
  %.272 = phi i32 [ %201, %198 ], [ %.070142, %236 ], [ %.070142, %257 ]
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %26) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %26)
          to label %262 unwind label %274

262:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %26, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %263 unwind label %276

263:                                              ; preds = %262
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  %264 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef nonnull @.str.42)
          to label %265 unwind label %278

265:                                              ; preds = %263
  %266 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  %267 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %264, i64 noundef %266)
          to label %268 unwind label %278

268:                                              ; preds = %265
  %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef nonnull @.str.52)
          to label %270 unwind label %278

270:                                              ; preds = %268
  %271 = load ptr, ptr %0, align 8, !tbaa !30
  invoke void @_ZNK3ipx7Control12hIntervalLogERNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(1496) %271, ptr noundef nonnull align 8 dereferenceable(128) %26)
          to label %.thread152 unwind label %278

.thread152:                                       ; preds = %270
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %26) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  br label %.backedge

272:                                              ; preds = %.thread, %.thread107
  %.268 = phi i32 [ %.066.ph, %.thread ], [ %.167.ph, %.thread107 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  %cond = icmp eq i32 %.268, 11
  br i1 %cond, label %.backedge, label %.thread110

.backedge:                                        ; preds = %272, %.thread152
  %.373155 = phi i32 [ %.272, %.thread152 ], [ %.070142, %272 ]
  %273 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  br i1 %273, label %._crit_edge144, label %143, !llvm.loop !41

274:                                              ; preds = %261
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %281

276:                                              ; preds = %262
  %277 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %280

278:                                              ; preds = %270, %268, %265, %263
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %280

280:                                              ; preds = %278, %276
  %.pn92 = phi { ptr, i32 } [ %279, %278 ], [ %277, %276 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %26) #7
  br label %281

281:                                              ; preds = %280, %274
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %280 ], [ %275, %274 ]
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %26) #7
  br label %282

282:                                              ; preds = %223, %235, %281, %260, %192, %185
  %.pn92.pn.pn = phi { ptr, i32 } [ %.pn92.pn, %281 ], [ %193, %192 ], [ %.pn82, %260 ], [ %186, %185 ], [ %.pn86.pn.pn, %235 ], [ %224, %223 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  br label %298

._crit_edge144:                                   ; preds = %.backedge, %.preheader
  %.070.lcssa = phi i32 [ 0, %.preheader ], [ %.373155, %.backedge ]
  %283 = load ptr, ptr %0, align 8, !tbaa !30
  %284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3ipx7Control5DebugEi(ptr noundef nonnull align 8 dereferenceable(1496) %283, i32 noundef 1)
          to label %285 unwind label %152

285:                                              ; preds = %._crit_edge144
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #7
  invoke void @_ZN3ipx8TextlineIA49_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 1 dereferenceable(49) @.str.53)
          to label %286 unwind label %293

286:                                              ; preds = %285
  %287 = 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) %284, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %288 unwind label %295

288:                                              ; preds = %286
  %289 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %287, i32 noundef %.070.lcssa)
          to label %290 unwind label %295

290:                                              ; preds = %288
  %291 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %289, i8 noundef signext 10)
          to label %292 unwind label %295

292:                                              ; preds = %290
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %.thread110

.thread110:                                       ; preds = %272, %167, %292
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %7) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %6) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  ret void

293:                                              ; preds = %285
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %297

295:                                              ; preds = %290, %288, %286
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %297

297:                                              ; preds = %295, %293
  %.pn80 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #7
  br label %298

298:                                              ; preds = %168, %282, %297, %158, %152, %112
  %.pn97 = phi { ptr, i32 } [ %113, %112 ], [ %.pn80, %297 ], [ %153, %152 ], [ %.pn, %158 ], [ %.pn92.pn.pn, %282 ], [ %169, %168 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  br label %299

299:                                              ; preds = %298, %74
  %.pn99 = phi { ptr, i32 } [ %75, %74 ], [ %.pn97, %298 ]
  call void @_ZNSt8valarrayIdED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  br label %300

300:                                              ; preds = %299, %58
  %.pn99.pn = phi { ptr, i32 } [ %.pn99, %299 ], [ %59, %58 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %7) #7
  br label %301

301:                                              ; preds = %300, %56
  %.pn99.pn.pn = phi { ptr, i32 } [ %.pn99.pn, %300 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #7
  call void @_ZN3ipx13IndexedVectorD2Ev(ptr noundef nonnull align 8 dereferenceable(44) %6) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn99.pn.pn
}

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

; 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 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 nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt8valarrayIdEC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #4 align 2

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

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

declare noundef double @_ZN3ipx3DotERKNS_13IndexedVectorERKSt8valarrayIdE(ptr noundef nonnull align 8 dereferenceable(44), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZN3ipx16for_each_nonzeroIZNS_5Basis29PivotFixedVariablesOutOfBasisEPKdPNS_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 @_ZN3ipx8TextlineIA49_cEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKT_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 1 dereferenceable(49)) local_unnamed_addr #3

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 56}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = distinct !{!37, !35}
!38 = !{!21, !21, i64 0}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = distinct !{!41, !35}
!42 = !{!32, !22, i64 208}
!43 = !{!32, !22, i64 64}


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