; LLVM IR from ERGO-Code/HiGHS :: src/util/HFactor.ll (ZN7HFactor11buildSimpleEv)

; 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.HFactor = type { double, double, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %struct.RefactorInfo, i32, i32, i32, i32, i32, i32, i32, double, i8, ptr, ptr, ptr, ptr, double, double, i32, double, %"class.std::unique_ptr", %struct.HighsLogOptions, i8, i8, i32, i32, ptr, i32, %"class.std::vector", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.15", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", i32, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %class.HVectorBase }
%struct.RefactorInfo = type { i8, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", double }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.9" }
%"struct.std::_Head_base.9" = type { ptr }
%struct.HighsLogOptions = type <{ ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::function", ptr, i8, [7 x i8] }>
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, 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.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HVectorBase = type { i32, i32, %"class.std::vector", %"class.std::vector.10", double, %"class.std::vector.15", %"class.std::vector", ptr, i8, i32, %"class.std::vector", %"class.std::vector.10" }

@.str.52 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [35 x i8], align 1
@__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv = external hidden unnamed_addr constant [28 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [33 x i8], align 1
@_ZL18kPivotRowSingleton = external hidden constant i8, align 1
@_ZL18kPivotColSingleton = external hidden constant i8, align 1
@.str.58 = external hidden unnamed_addr constant [69 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

; 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 dso_local noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7HFactor11buildSimpleEv(ptr noundef nonnull align 8 dereferenceable(1912) %0) #2 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i8, align 1
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca i8, align 1
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i8, align 1
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i8, align 1
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca double, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca double, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca double, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %73 = load ptr, ptr %2, align 8
  call void @_ZN7HFactor7luClearEv(ptr noundef nonnull align 8 dereferenceable(1912) %73)
  call void @llvm.lifetime.start.p0(i64 1, ptr %3) #6
  store i8 0, ptr %3, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #6
  store i32 100000, ptr %4, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  %74 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 13
  %75 = load i32, ptr %74, align 8, !tbaa !13
  store i32 %75, ptr %5, align 4, !tbaa !11
  %76 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 38
  %77 = load i32, ptr %5, align 4, !tbaa !11
  %78 = sext i32 %77 to i64
  call void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %76, i64 noundef %78)
  %79 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 38
  %80 = load i32, ptr %5, align 4, !tbaa !11
  %81 = sext i32 %80 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  store i32 -1, ptr %6, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %81, ptr noundef nonnull align 4 dereferenceable(4) %6)
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #6
  store i8 0, ptr %7, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #6
  store i8 0, ptr %8, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #6
  store i8 0, ptr %9, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #6
  store i8 0, ptr %10, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store i32 0, ptr %11, align 4, !tbaa !11
  %82 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %83 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %82) #6
  %84 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 11
  %85 = load i32, ptr %84, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !11
  %86 = call noundef ptr @_ZSt6fill_nIPiiiET_S1_T0_RKT1_(ptr noundef %83, i32 noundef %85, ptr noundef nonnull align 4 dereferenceable(4) %12)
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  %87 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  store i32 0, ptr %87, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %88 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 13
  %89 = load i32, ptr %88, align 8, !tbaa !13
  store i32 %89, ptr %13, align 4, !tbaa !11
  %90 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 32
  %91 = load i32, ptr %13, align 4, !tbaa !11
  %92 = add nsw i32 %91, 1
  %93 = sext i32 %92 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  store i32 0, ptr %14, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE6resizeEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %93, ptr noundef nonnull align 4 dereferenceable(4) %14)
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  %94 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 32
  %95 = load i32, ptr %13, align 4, !tbaa !11
  %96 = add nsw i32 %95, 1
  %97 = sext i32 %96 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 0, ptr %15, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %97, ptr noundef nonnull align 4 dereferenceable(4) %15)
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %98

98:                                               ; preds = %318, %1
  %99 = load i32, ptr %16, align 4, !tbaa !11
  %100 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 13
  %101 = load i32, ptr %100, align 8, !tbaa !13
  %102 = icmp slt i32 %99, %101
  br i1 %102, label %104, label %103

103:                                              ; preds = %98
  store i32 2, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %321

104:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %105 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 19
  %106 = load ptr, ptr %105, align 8, !tbaa !45
  %107 = load i32, ptr %16, align 4, !tbaa !11
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds i32, ptr %106, i64 %108
  %110 = load i32, ptr %109, align 4, !tbaa !11
  store i32 %110, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  store i32 -1, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #6
  store i8 -1, ptr %20, align 1, !tbaa !46
  %111 = load i32, ptr %18, align 4, !tbaa !11
  %112 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 12
  %113 = load i32, ptr %112, align 4, !tbaa !47
  %114 = icmp sge i32 %111, %113
  br i1 %114, label %115, label %153

115:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  %116 = load i32, ptr %18, align 4, !tbaa !11
  %117 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 12
  %118 = load i32, ptr %117, align 4, !tbaa !47
  %119 = sub nsw i32 %116, %118
  store i32 %119, ptr %21, align 4, !tbaa !11
  %120 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %121 = load i32, ptr %21, align 4, !tbaa !11
  %122 = sext i32 %121 to i64
  %123 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %122) #6
  %124 = load i32, ptr %123, align 4, !tbaa !11
  %125 = icmp sge i32 %124, 0
  br i1 %125, label %126, label %128

126:                                              ; preds = %115
  store i8 0, ptr %20, align 1, !tbaa !46
  %127 = load i32, ptr %21, align 4, !tbaa !11
  store i32 %127, ptr %19, align 4, !tbaa !11
  br label %152

128:                                              ; preds = %115
  %129 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %130 = load i32, ptr %21, align 4, !tbaa !11
  %131 = sext i32 %130 to i64
  %132 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %131) #6
  %133 = load i32, ptr %132, align 4, !tbaa !11
  %134 = add nsw i32 %133, 1
  store i32 %134, ptr %132, align 4, !tbaa !11
  %135 = load i32, ptr %21, align 4, !tbaa !11
  %136 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 36
  %137 = load i32, ptr %11, align 4, !tbaa !11
  %138 = sext i32 %137 to i64
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %136, i64 noundef %138) #6
  store i32 %135, ptr %139, align 4, !tbaa !11
  %140 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 37
  %141 = load i32, ptr %11, align 4, !tbaa !11
  %142 = add nsw i32 %141, 1
  store i32 %142, ptr %11, align 4, !tbaa !11
  %143 = sext i32 %141 to i64
  %144 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %140, i64 noundef %143) #6
  store double 1.000000e+00, ptr %144, align 8, !tbaa !48
  %145 = load i32, ptr %16, align 4, !tbaa !11
  %146 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 32
  %147 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %148 = load i32, ptr %147, align 8, !tbaa !44
  %149 = add nsw i32 %148, 1
  store i32 %149, ptr %147, align 8, !tbaa !44
  %150 = sext i32 %148 to i64
  %151 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %150) #6
  store i32 %145, ptr %151, align 4, !tbaa !11
  br label %152

152:                                              ; preds = %128, %126
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  br label %267

153:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %154 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 16
  %155 = load ptr, ptr %154, align 8, !tbaa !49
  %156 = load i32, ptr %18, align 4, !tbaa !11
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds i32, ptr %155, i64 %157
  %159 = load i32, ptr %158, align 4, !tbaa !11
  store i32 %159, ptr %22, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %160 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 16
  %161 = load ptr, ptr %160, align 8, !tbaa !49
  %162 = load i32, ptr %18, align 4, !tbaa !11
  %163 = add nsw i32 %162, 1
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds i32, ptr %161, i64 %164
  %166 = load i32, ptr %165, align 4, !tbaa !11
  %167 = load i32, ptr %22, align 4, !tbaa !11
  %168 = sub nsw i32 %166, %167
  store i32 %168, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  store i8 0, ptr %24, align 1, !tbaa !9
  %169 = load i32, ptr %23, align 4, !tbaa !11
  %170 = icmp eq i32 %169, 1
  br i1 %170, label %171, label %194

171:                                              ; preds = %153
  %172 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 18
  %173 = load ptr, ptr %172, align 8, !tbaa !50
  %174 = load i32, ptr %22, align 4, !tbaa !11
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds double, ptr %173, i64 %175
  %177 = load double, ptr %176, align 8, !tbaa !48
  %178 = fcmp oeq double %177, 1.000000e+00
  br i1 %178, label %179, label %191

179:                                              ; preds = %171
  %180 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %181 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 17
  %182 = load ptr, ptr %181, align 8, !tbaa !51
  %183 = load i32, ptr %22, align 4, !tbaa !11
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds i32, ptr %182, i64 %184
  %186 = load i32, ptr %185, align 4, !tbaa !11
  %187 = sext i32 %186 to i64
  %188 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %180, i64 noundef %187) #6
  %189 = load i32, ptr %188, align 4, !tbaa !11
  %190 = icmp sge i32 %189, 0
  br label %191

191:                                              ; preds = %179, %171
  %192 = phi i1 [ false, %171 ], [ %190, %179 ]
  %193 = zext i1 %192 to i8
  store i8 %193, ptr %24, align 1, !tbaa !9
  br label %194

194:                                              ; preds = %191, %153
  %195 = load i8, ptr %24, align 1, !tbaa !9, !range !52, !noundef !53
  %196 = trunc i8 %195 to i1
  br i1 %196, label %197, label %204

197:                                              ; preds = %194
  store i8 3, ptr %20, align 1, !tbaa !46
  %198 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 17
  %199 = load ptr, ptr %198, align 8, !tbaa !51
  %200 = load i32, ptr %22, align 4, !tbaa !11
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds i32, ptr %199, i64 %201
  %203 = load i32, ptr %202, align 4, !tbaa !11
  store i32 %203, ptr %19, align 4, !tbaa !11
  br label %266

204:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %205 = load i32, ptr %22, align 4, !tbaa !11
  store i32 %205, ptr %25, align 4, !tbaa !11
  br label %206

206:                                              ; preds = %255, %204
  %207 = load i32, ptr %25, align 4, !tbaa !11
  %208 = load i32, ptr %22, align 4, !tbaa !11
  %209 = load i32, ptr %23, align 4, !tbaa !11
  %210 = add nsw i32 %208, %209
  %211 = icmp slt i32 %207, %210
  br i1 %211, label %213, label %212

212:                                              ; preds = %206
  store i32 5, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %258

213:                                              ; preds = %206
  %214 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %215 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 17
  %216 = load ptr, ptr %215, align 8, !tbaa !51
  %217 = load i32, ptr %25, align 4, !tbaa !11
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds i32, ptr %216, i64 %218
  %220 = load i32, ptr %219, align 4, !tbaa !11
  %221 = sext i32 %220 to i64
  %222 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %214, i64 noundef %221) #6
  %223 = load i32, ptr %222, align 4, !tbaa !11
  %224 = add nsw i32 %223, 1
  store i32 %224, ptr %222, align 4, !tbaa !11
  %225 = load i32, ptr %11, align 4, !tbaa !11
  %226 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 36
  %227 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %226) #6
  %228 = trunc i64 %227 to i32
  %229 = icmp slt i32 %225, %228
  br i1 %229, label %230, label %231

230:                                              ; preds = %213
  br label %233

231:                                              ; preds = %213
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.52, i32 noundef 653, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv) #7
  unreachable

232:                                              ; No predecessors!
  br label %233

233:                                              ; preds = %232, %230
  %234 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 17
  %235 = load ptr, ptr %234, align 8, !tbaa !51
  %236 = load i32, ptr %25, align 4, !tbaa !11
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds i32, ptr %235, i64 %237
  %239 = load i32, ptr %238, align 4, !tbaa !11
  %240 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 36
  %241 = load i32, ptr %11, align 4, !tbaa !11
  %242 = sext i32 %241 to i64
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef %242) #6
  store i32 %239, ptr %243, align 4, !tbaa !11
  %244 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 18
  %245 = load ptr, ptr %244, align 8, !tbaa !50
  %246 = load i32, ptr %25, align 4, !tbaa !11
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds double, ptr %245, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !48
  %250 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 37
  %251 = load i32, ptr %11, align 4, !tbaa !11
  %252 = add nsw i32 %251, 1
  store i32 %252, ptr %11, align 4, !tbaa !11
  %253 = sext i32 %251 to i64
  %254 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %253) #6
  store double %249, ptr %254, align 8, !tbaa !48
  br label %255

255:                                              ; preds = %233
  %256 = load i32, ptr %25, align 4, !tbaa !11
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr %25, align 4, !tbaa !11
  br label %206, !llvm.loop !54

258:                                              ; preds = %212
  %259 = load i32, ptr %16, align 4, !tbaa !11
  %260 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 32
  %261 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %262 = load i32, ptr %261, align 8, !tbaa !44
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %261, align 8, !tbaa !44
  %264 = sext i32 %262 to i64
  %265 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %260, i64 noundef %264) #6
  store i32 %259, ptr %265, align 4, !tbaa !11
  br label %266

266:                                              ; preds = %258, %197
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %267

267:                                              ; preds = %266, %152
  %268 = load i32, ptr %19, align 4, !tbaa !11
  %269 = icmp sge i32 %268, 0
  br i1 %269, label %270, label %306

270:                                              ; preds = %267
  %271 = load i32, ptr %19, align 4, !tbaa !11
  %272 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 38
  %273 = load i32, ptr %16, align 4, !tbaa !11
  %274 = sext i32 %273 to i64
  %275 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %274) #6
  store i32 %271, ptr %275, align 4, !tbaa !11
  %276 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 63
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  %277 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 64
  %278 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %277) #6
  %279 = trunc i64 %278 to i32
  store i32 %279, ptr %26, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %276, ptr noundef nonnull align 4 dereferenceable(4) %26)
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  %280 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 70
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %280, ptr noundef nonnull align 4 dereferenceable(4) %19)
  %281 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 71
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  store double 1.000000e+00, ptr %27, align 8, !tbaa !48
  call void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %281, ptr noundef nonnull align 8 dereferenceable(8) %27)
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  %282 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 74
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %283 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 76
  %284 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %283) #6
  %285 = trunc i64 %284 to i32
  store i32 %285, ptr %28, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %282, ptr noundef nonnull align 4 dereferenceable(4) %28)
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  %286 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 13
  %287 = load i32, ptr %286, align 8, !tbaa !13
  %288 = sub nsw i32 0, %287
  %289 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %290 = load i32, ptr %19, align 4, !tbaa !11
  %291 = sext i32 %290 to i64
  %292 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %289, i64 noundef %291) #6
  store i32 %288, ptr %292, align 4, !tbaa !11
  %293 = load i8, ptr %20, align 1, !tbaa !46
  %294 = sext i8 %293 to i32
  %295 = icmp ne i32 %294, -1
  br i1 %295, label %296, label %297

296:                                              ; preds = %270
  br label %299

297:                                              ; preds = %270
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.52, i32 noundef 672, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv) #7
  unreachable

298:                                              ; No predecessors!
  br label %299

299:                                              ; preds = %298, %296
  %300 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 6
  %301 = getelementptr inbounds %struct.RefactorInfo, ptr %300, i32 0, i32 1
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %301, ptr noundef nonnull align 4 dereferenceable(4) %19)
  %302 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 6
  %303 = getelementptr inbounds %struct.RefactorInfo, ptr %302, i32 0, i32 2
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %303, ptr noundef nonnull align 4 dereferenceable(4) %18)
  %304 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 6
  %305 = getelementptr inbounds %struct.RefactorInfo, ptr %304, i32 0, i32 3
  call void @_ZNSt6vectorIaSaIaEE9push_backERKa(ptr noundef nonnull align 8 dereferenceable(24) %305, ptr noundef nonnull align 1 dereferenceable(1) %20)
  br label %306

306:                                              ; preds = %299, %267
  %307 = load i32, ptr %11, align 4, !tbaa !11
  %308 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 35
  %309 = load i32, ptr %16, align 4, !tbaa !11
  %310 = add nsw i32 %309, 1
  %311 = sext i32 %310 to i64
  %312 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %308, i64 noundef %311) #6
  store i32 %307, ptr %312, align 4, !tbaa !11
  %313 = load i32, ptr %18, align 4, !tbaa !11
  %314 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 34
  %315 = load i32, ptr %16, align 4, !tbaa !11
  %316 = sext i32 %315 to i64
  %317 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %314, i64 noundef %316) #6
  store i32 %313, ptr %317, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %318

318:                                              ; preds = %306
  %319 = load i32, ptr %16, align 4, !tbaa !11
  %320 = add nsw i32 %319, 1
  store i32 %320, ptr %16, align 4, !tbaa !11
  br label %98, !llvm.loop !56

321:                                              ; preds = %103
  %322 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 11
  %323 = load i32, ptr %322, align 8, !tbaa !43
  %324 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %325 = load i32, ptr %324, align 8, !tbaa !44
  %326 = sub nsw i32 %323, %325
  %327 = load i32, ptr %11, align 4, !tbaa !11
  %328 = add nsw i32 %326, %327
  %329 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 7
  store i32 %328, ptr %329, align 8, !tbaa !57
  %330 = load i32, ptr %11, align 4, !tbaa !11
  %331 = mul nsw i32 %330, 60
  %332 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 11
  %333 = load i32, ptr %332, align 8, !tbaa !43
  %334 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %335 = load i32, ptr %334, align 8, !tbaa !44
  %336 = sub nsw i32 %333, %335
  %337 = mul nsw i32 %336, 80
  %338 = add nsw i32 %331, %337
  %339 = sitofp i32 %338 to double
  %340 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 1
  %341 = load double, ptr %340, align 8, !tbaa !58
  %342 = fadd double %341, %339
  store double %342, ptr %340, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  store double 0.000000e+00, ptr %29, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %343 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 64
  %344 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %343) #6
  %345 = uitofp i64 %344 to double
  store double %345, ptr %30, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %346 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 76
  %347 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %346) #6
  %348 = uitofp i64 %347 to double
  store double %348, ptr %31, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  %349 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %350 = load i32, ptr %349, align 8, !tbaa !44
  %351 = sitofp i32 %350 to double
  store double %351, ptr %32, align 8, !tbaa !48
  br label %352

352:                                              ; preds = %688, %321
  %353 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %354 = load i32, ptr %353, align 8, !tbaa !44
  %355 = icmp sgt i32 %354, 0
  br i1 %355, label %356, label %689

356:                                              ; preds = %352
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %357 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %358 = load i32, ptr %357, align 8, !tbaa !44
  store i32 %358, ptr %33, align 4, !tbaa !11
  %359 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  store i32 0, ptr %359, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  store i32 0, ptr %34, align 4, !tbaa !11
  br label %360

360:                                              ; preds = %676, %356
  %361 = load i32, ptr %34, align 4, !tbaa !11
  %362 = load i32, ptr %33, align 4, !tbaa !11
  %363 = icmp slt i32 %361, %362
  br i1 %363, label %365, label %364

364:                                              ; preds = %360
  store i32 10, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %679

365:                                              ; preds = %360
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %366 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 32
  %367 = load i32, ptr %34, align 4, !tbaa !11
  %368 = sext i32 %367 to i64
  %369 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %366, i64 noundef %368) #6
  %370 = load i32, ptr %369, align 4, !tbaa !11
  store i32 %370, ptr %35, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %371 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 35
  %372 = load i32, ptr %35, align 4, !tbaa !11
  %373 = sext i32 %372 to i64
  %374 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %371, i64 noundef %373) #6
  %375 = load i32, ptr %374, align 4, !tbaa !11
  store i32 %375, ptr %36, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  %376 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 35
  %377 = load i32, ptr %35, align 4, !tbaa !11
  %378 = add nsw i32 %377, 1
  %379 = sext i32 %378 to i64
  %380 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %376, i64 noundef %379) #6
  %381 = load i32, ptr %380, align 4, !tbaa !11
  store i32 %381, ptr %37, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  store i32 -1, ptr %38, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  store i32 0, ptr %39, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  store i32 0, ptr %40, align 4, !tbaa !11
  %382 = load i32, ptr %37, align 4, !tbaa !11
  %383 = load i32, ptr %36, align 4, !tbaa !11
  %384 = sub nsw i32 %382, %383
  %385 = sitofp i32 %384 to double
  %386 = load double, ptr %29, align 8, !tbaa !48
  %387 = fadd double %386, %385
  store double %387, ptr %29, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  %388 = load i32, ptr %36, align 4, !tbaa !11
  store i32 %388, ptr %41, align 4, !tbaa !11
  br label %389

389:                                              ; preds = %423, %365
  %390 = load i32, ptr %41, align 4, !tbaa !11
  %391 = load i32, ptr %37, align 4, !tbaa !11
  %392 = icmp slt i32 %390, %391
  br i1 %392, label %394, label %393

393:                                              ; preds = %389
  store i32 13, ptr %17, align 4
  br label %426

394:                                              ; preds = %389
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %395 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 36
  %396 = load i32, ptr %41, align 4, !tbaa !11
  %397 = sext i32 %396 to i64
  %398 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %395, i64 noundef %397) #6
  %399 = load i32, ptr %398, align 4, !tbaa !11
  store i32 %399, ptr %42, align 4, !tbaa !11
  %400 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %401 = load i32, ptr %42, align 4, !tbaa !11
  %402 = sext i32 %401 to i64
  %403 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %400, i64 noundef %402) #6
  %404 = load i32, ptr %403, align 4, !tbaa !11
  %405 = icmp eq i32 %404, 1
  br i1 %405, label %406, label %408

406:                                              ; preds = %394
  %407 = load i32, ptr %41, align 4, !tbaa !11
  store i32 %407, ptr %38, align 4, !tbaa !11
  store i32 1, ptr %39, align 4, !tbaa !11
  store i32 13, ptr %17, align 4
  br label %420

408:                                              ; preds = %394
  %409 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %410 = load i32, ptr %42, align 4, !tbaa !11
  %411 = sext i32 %410 to i64
  %412 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %409, i64 noundef %411) #6
  %413 = load i32, ptr %412, align 4, !tbaa !11
  %414 = icmp sgt i32 %413, 1
  br i1 %414, label %415, label %419

415:                                              ; preds = %408
  %416 = load i32, ptr %41, align 4, !tbaa !11
  store i32 %416, ptr %38, align 4, !tbaa !11
  %417 = load i32, ptr %40, align 4, !tbaa !11
  %418 = add nsw i32 %417, 1
  store i32 %418, ptr %40, align 4, !tbaa !11
  br label %419

419:                                              ; preds = %415, %408
  store i32 0, ptr %17, align 4
  br label %420

420:                                              ; preds = %419, %406
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  %421 = load i32, ptr %17, align 4
  switch i32 %421, label %426 [
    i32 0, label %422
  ]

422:                                              ; preds = %420
  br label %423

423:                                              ; preds = %422
  %424 = load i32, ptr %41, align 4, !tbaa !11
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %41, align 4, !tbaa !11
  br label %389, !llvm.loop !59

426:                                              ; preds = %420, %393
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %427

427:                                              ; preds = %426
  %428 = load i32, ptr %39, align 4, !tbaa !11
  %429 = icmp ne i32 %428, 0
  br i1 %429, label %430, label %564

430:                                              ; preds = %427
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  %431 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 37
  %432 = load i32, ptr %38, align 4, !tbaa !11
  %433 = sext i32 %432 to i64
  %434 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %431, i64 noundef %433) #6
  %435 = load double, ptr %434, align 8, !tbaa !48
  %436 = fdiv double 1.000000e+00, %435
  store double %436, ptr %43, align 8, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  store i32 0, ptr %44, align 4, !tbaa !11
  br label %437

437:                                              ; preds = %505, %430
  %438 = load i32, ptr %44, align 4, !tbaa !11
  %439 = icmp slt i32 %438, 2
  br i1 %439, label %441, label %440

440:                                              ; preds = %437
  store i32 16, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %508

441:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %442 = load i32, ptr %44, align 4, !tbaa !11
  %443 = icmp eq i32 %442, 0
  br i1 %443, label %444, label %446

444:                                              ; preds = %441
  %445 = load i32, ptr %36, align 4, !tbaa !11
  br label %449

446:                                              ; preds = %441
  %447 = load i32, ptr %38, align 4, !tbaa !11
  %448 = add nsw i32 %447, 1
  br label %449

449:                                              ; preds = %446, %444
  %450 = phi i32 [ %445, %444 ], [ %448, %446 ]
  store i32 %450, ptr %45, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  %451 = load i32, ptr %44, align 4, !tbaa !11
  %452 = icmp eq i32 %451, 0
  br i1 %452, label %453, label %455

453:                                              ; preds = %449
  %454 = load i32, ptr %38, align 4, !tbaa !11
  br label %457

455:                                              ; preds = %449
  %456 = load i32, ptr %37, align 4, !tbaa !11
  br label %457

457:                                              ; preds = %455, %453
  %458 = phi i32 [ %454, %453 ], [ %456, %455 ]
  store i32 %458, ptr %46, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  %459 = load i32, ptr %45, align 4, !tbaa !11
  store i32 %459, ptr %47, align 4, !tbaa !11
  br label %460

460:                                              ; preds = %501, %457
  %461 = load i32, ptr %47, align 4, !tbaa !11
  %462 = load i32, ptr %46, align 4, !tbaa !11
  %463 = icmp slt i32 %461, %462
  br i1 %463, label %465, label %464

464:                                              ; preds = %460
  store i32 19, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  br label %504

465:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  %466 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 36
  %467 = load i32, ptr %47, align 4, !tbaa !11
  %468 = sext i32 %467 to i64
  %469 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %466, i64 noundef %468) #6
  %470 = load i32, ptr %469, align 4, !tbaa !11
  store i32 %470, ptr %48, align 4, !tbaa !11
  %471 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %472 = load i32, ptr %48, align 4, !tbaa !11
  %473 = sext i32 %472 to i64
  %474 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %471, i64 noundef %473) #6
  %475 = load i32, ptr %474, align 4, !tbaa !11
  %476 = icmp sgt i32 %475, 0
  br i1 %476, label %477, label %487

477:                                              ; preds = %465
  %478 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 64
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %478, ptr noundef nonnull align 4 dereferenceable(4) %48)
  %479 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 65
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  %480 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 37
  %481 = load i32, ptr %47, align 4, !tbaa !11
  %482 = sext i32 %481 to i64
  %483 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %480, i64 noundef %482) #6
  %484 = load double, ptr %483, align 8, !tbaa !48
  %485 = load double, ptr %43, align 8, !tbaa !48
  %486 = fmul double %484, %485
  store double %486, ptr %49, align 8, !tbaa !48
  call void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %479, ptr noundef nonnull align 8 dereferenceable(8) %49)
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  br label %494

487:                                              ; preds = %465
  %488 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 76
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %488, ptr noundef nonnull align 4 dereferenceable(4) %48)
  %489 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 77
  %490 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 37
  %491 = load i32, ptr %47, align 4, !tbaa !11
  %492 = sext i32 %491 to i64
  %493 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %490, i64 noundef %492) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %489, ptr noundef nonnull align 8 dereferenceable(8) %493)
  br label %494

494:                                              ; preds = %487, %477
  %495 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %496 = load i32, ptr %48, align 4, !tbaa !11
  %497 = sext i32 %496 to i64
  %498 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %495, i64 noundef %497) #6
  %499 = load i32, ptr %498, align 4, !tbaa !11
  %500 = add nsw i32 %499, -1
  store i32 %500, ptr %498, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  br label %501

501:                                              ; preds = %494
  %502 = load i32, ptr %47, align 4, !tbaa !11
  %503 = add nsw i32 %502, 1
  store i32 %503, ptr %47, align 4, !tbaa !11
  br label %460, !llvm.loop !60

504:                                              ; preds = %464
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %505

505:                                              ; preds = %504
  %506 = load i32, ptr %44, align 4, !tbaa !11
  %507 = add nsw i32 %506, 1
  store i32 %507, ptr %44, align 4, !tbaa !11
  br label %437, !llvm.loop !61

508:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #6
  %509 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 36
  %510 = load i32, ptr %38, align 4, !tbaa !11
  %511 = sext i32 %510 to i64
  %512 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %509, i64 noundef %511) #6
  %513 = load i32, ptr %512, align 4, !tbaa !11
  store i32 %513, ptr %50, align 4, !tbaa !11
  %514 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %515 = load i32, ptr %50, align 4, !tbaa !11
  %516 = sext i32 %515 to i64
  %517 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %514, i64 noundef %516) #6
  store i32 0, ptr %517, align 4, !tbaa !11
  %518 = load i32, ptr %50, align 4, !tbaa !11
  %519 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 38
  %520 = load i32, ptr %35, align 4, !tbaa !11
  %521 = sext i32 %520 to i64
  %522 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %519, i64 noundef %521) #6
  store i32 %518, ptr %522, align 4, !tbaa !11
  %523 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 63
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #6
  %524 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 64
  %525 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %524) #6
  %526 = trunc i64 %525 to i32
  store i32 %526, ptr %51, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %523, ptr noundef nonnull align 4 dereferenceable(4) %51)
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #6
  %527 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 70
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %527, ptr noundef nonnull align 4 dereferenceable(4) %50)
  %528 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 71
  %529 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 37
  %530 = load i32, ptr %38, align 4, !tbaa !11
  %531 = sext i32 %530 to i64
  %532 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %529, i64 noundef %531) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %528, ptr noundef nonnull align 8 dereferenceable(8) %532)
  %533 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 74
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  %534 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 76
  %535 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %534) #6
  %536 = trunc i64 %535 to i32
  store i32 %536, ptr %52, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %533, ptr noundef nonnull align 4 dereferenceable(4) %52)
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  %537 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 34
  %538 = load i32, ptr %35, align 4, !tbaa !11
  %539 = sext i32 %538 to i64
  %540 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %537, i64 noundef %539) #6
  %541 = load i32, ptr %540, align 4, !tbaa !11
  %542 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 19
  %543 = load ptr, ptr %542, align 8, !tbaa !45
  %544 = load i32, ptr %35, align 4, !tbaa !11
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds i32, ptr %543, i64 %545
  %547 = load i32, ptr %546, align 4, !tbaa !11
  %548 = icmp eq i32 %541, %547
  br i1 %548, label %549, label %550

549:                                              ; preds = %508
  br label %552

550:                                              ; preds = %508
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.52, i32 noundef 760, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv) #7
  unreachable

551:                                              ; No predecessors!
  br label %552

552:                                              ; preds = %551, %549
  %553 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 6
  %554 = getelementptr inbounds %struct.RefactorInfo, ptr %553, i32 0, i32 1
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %554, ptr noundef nonnull align 4 dereferenceable(4) %50)
  %555 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 6
  %556 = getelementptr inbounds %struct.RefactorInfo, ptr %555, i32 0, i32 2
  %557 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 19
  %558 = load ptr, ptr %557, align 8, !tbaa !45
  %559 = load i32, ptr %35, align 4, !tbaa !11
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds i32, ptr %558, i64 %560
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %556, ptr noundef nonnull align 4 dereferenceable(4) %561)
  %562 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 6
  %563 = getelementptr inbounds %struct.RefactorInfo, ptr %562, i32 0, i32 3
  call void @_ZNSt6vectorIaSaIaEE9push_backERKa(ptr noundef nonnull align 8 dereferenceable(24) %563, ptr noundef nonnull align 1 dereferenceable(1) @_ZL18kPivotRowSingleton)
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  br label %675

564:                                              ; preds = %427
  %565 = load i32, ptr %40, align 4, !tbaa !11
  %566 = icmp eq i32 %565, 1
  br i1 %566, label %567, label %666

567:                                              ; preds = %564
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #6
  %568 = load i32, ptr %36, align 4, !tbaa !11
  store i32 %568, ptr %53, align 4, !tbaa !11
  br label %569

569:                                              ; preds = %585, %567
  %570 = load i32, ptr %53, align 4, !tbaa !11
  %571 = load i32, ptr %38, align 4, !tbaa !11
  %572 = icmp slt i32 %570, %571
  br i1 %572, label %574, label %573

573:                                              ; preds = %569
  store i32 22, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #6
  br label %588

574:                                              ; preds = %569
  %575 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 76
  %576 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 36
  %577 = load i32, ptr %53, align 4, !tbaa !11
  %578 = sext i32 %577 to i64
  %579 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %576, i64 noundef %578) #6
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %575, ptr noundef nonnull align 4 dereferenceable(4) %579)
  %580 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 77
  %581 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 37
  %582 = load i32, ptr %53, align 4, !tbaa !11
  %583 = sext i32 %582 to i64
  %584 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %581, i64 noundef %583) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %580, ptr noundef nonnull align 8 dereferenceable(8) %584)
  br label %585

585:                                              ; preds = %574
  %586 = load i32, ptr %53, align 4, !tbaa !11
  %587 = add nsw i32 %586, 1
  store i32 %587, ptr %53, align 4, !tbaa !11
  br label %569, !llvm.loop !62

588:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  %589 = load i32, ptr %38, align 4, !tbaa !11
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr %54, align 4, !tbaa !11
  br label %591

591:                                              ; preds = %607, %588
  %592 = load i32, ptr %54, align 4, !tbaa !11
  %593 = load i32, ptr %37, align 4, !tbaa !11
  %594 = icmp slt i32 %592, %593
  br i1 %594, label %596, label %595

595:                                              ; preds = %591
  store i32 25, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  br label %610

596:                                              ; preds = %591
  %597 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 76
  %598 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 36
  %599 = load i32, ptr %54, align 4, !tbaa !11
  %600 = sext i32 %599 to i64
  %601 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %598, i64 noundef %600) #6
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %597, ptr noundef nonnull align 4 dereferenceable(4) %601)
  %602 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 77
  %603 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 37
  %604 = load i32, ptr %54, align 4, !tbaa !11
  %605 = sext i32 %604 to i64
  %606 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %603, i64 noundef %605) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %602, ptr noundef nonnull align 8 dereferenceable(8) %606)
  br label %607

607:                                              ; preds = %596
  %608 = load i32, ptr %54, align 4, !tbaa !11
  %609 = add nsw i32 %608, 1
  store i32 %609, ptr %54, align 4, !tbaa !11
  br label %591, !llvm.loop !63

610:                                              ; preds = %595
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #6
  %611 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 36
  %612 = load i32, ptr %38, align 4, !tbaa !11
  %613 = sext i32 %612 to i64
  %614 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %611, i64 noundef %613) #6
  %615 = load i32, ptr %614, align 4, !tbaa !11
  store i32 %615, ptr %55, align 4, !tbaa !11
  %616 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %617 = load i32, ptr %55, align 4, !tbaa !11
  %618 = sext i32 %617 to i64
  %619 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %616, i64 noundef %618) #6
  store i32 0, ptr %619, align 4, !tbaa !11
  %620 = load i32, ptr %55, align 4, !tbaa !11
  %621 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 38
  %622 = load i32, ptr %35, align 4, !tbaa !11
  %623 = sext i32 %622 to i64
  %624 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %621, i64 noundef %623) #6
  store i32 %620, ptr %624, align 4, !tbaa !11
  %625 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 63
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  %626 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 64
  %627 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %626) #6
  %628 = trunc i64 %627 to i32
  store i32 %628, ptr %56, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %625, ptr noundef nonnull align 4 dereferenceable(4) %56)
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  %629 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 70
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %629, ptr noundef nonnull align 4 dereferenceable(4) %55)
  %630 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 71
  %631 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 37
  %632 = load i32, ptr %38, align 4, !tbaa !11
  %633 = sext i32 %632 to i64
  %634 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %631, i64 noundef %633) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %630, ptr noundef nonnull align 8 dereferenceable(8) %634)
  %635 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 74
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  %636 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 76
  %637 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %636) #6
  %638 = trunc i64 %637 to i32
  store i32 %638, ptr %57, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %635, ptr noundef nonnull align 4 dereferenceable(4) %57)
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  %639 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 34
  %640 = load i32, ptr %35, align 4, !tbaa !11
  %641 = sext i32 %640 to i64
  %642 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %639, i64 noundef %641) #6
  %643 = load i32, ptr %642, align 4, !tbaa !11
  %644 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 19
  %645 = load ptr, ptr %644, align 8, !tbaa !45
  %646 = load i32, ptr %35, align 4, !tbaa !11
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds i32, ptr %645, i64 %647
  %649 = load i32, ptr %648, align 4, !tbaa !11
  %650 = icmp eq i32 %643, %649
  br i1 %650, label %651, label %652

651:                                              ; preds = %610
  br label %654

652:                                              ; preds = %610
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.52, i32 noundef 795, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv) #7
  unreachable

653:                                              ; No predecessors!
  br label %654

654:                                              ; preds = %653, %651
  %655 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 6
  %656 = getelementptr inbounds %struct.RefactorInfo, ptr %655, i32 0, i32 1
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %656, ptr noundef nonnull align 4 dereferenceable(4) %55)
  %657 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 6
  %658 = getelementptr inbounds %struct.RefactorInfo, ptr %657, i32 0, i32 2
  %659 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 19
  %660 = load ptr, ptr %659, align 8, !tbaa !45
  %661 = load i32, ptr %35, align 4, !tbaa !11
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds i32, ptr %660, i64 %662
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %658, ptr noundef nonnull align 4 dereferenceable(4) %663)
  %664 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 6
  %665 = getelementptr inbounds %struct.RefactorInfo, ptr %664, i32 0, i32 3
  call void @_ZNSt6vectorIaSaIaEE9push_backERKa(ptr noundef nonnull align 8 dereferenceable(24) %665, ptr noundef nonnull align 1 dereferenceable(1) @_ZL18kPivotColSingleton)
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #6
  br label %674

666:                                              ; preds = %564
  %667 = load i32, ptr %35, align 4, !tbaa !11
  %668 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 32
  %669 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %670 = load i32, ptr %669, align 8, !tbaa !44
  %671 = add nsw i32 %670, 1
  store i32 %671, ptr %669, align 8, !tbaa !44
  %672 = sext i32 %670 to i64
  %673 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %668, i64 noundef %672) #6
  store i32 %667, ptr %673, align 4, !tbaa !11
  br label %674

674:                                              ; preds = %666, %654
  br label %675

675:                                              ; preds = %674, %552
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %676

676:                                              ; preds = %675
  %677 = load i32, ptr %34, align 4, !tbaa !11
  %678 = add nsw i32 %677, 1
  store i32 %678, ptr %34, align 4, !tbaa !11
  br label %360, !llvm.loop !64

679:                                              ; preds = %364
  %680 = load i32, ptr %33, align 4, !tbaa !11
  %681 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %682 = load i32, ptr %681, align 8, !tbaa !44
  %683 = icmp eq i32 %680, %682
  br i1 %683, label %684, label %685

684:                                              ; preds = %679
  store i32 9, ptr %17, align 4
  br label %686

685:                                              ; preds = %679
  store i32 0, ptr %17, align 4
  br label %686

686:                                              ; preds = %685, %684
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  %687 = load i32, ptr %17, align 4
  switch i32 %687, label %932 [
    i32 0, label %688
    i32 9, label %689
  ]

688:                                              ; preds = %686
  br label %352, !llvm.loop !65

689:                                              ; preds = %686, %352
  %690 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 64
  %691 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %690) #6
  %692 = uitofp i64 %691 to double
  %693 = load double, ptr %30, align 8, !tbaa !48
  %694 = fsub double %692, %693
  store double %694, ptr %30, align 8, !tbaa !48
  %695 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 76
  %696 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %695) #6
  %697 = uitofp i64 %696 to double
  %698 = load double, ptr %31, align 8, !tbaa !48
  %699 = fsub double %697, %698
  store double %699, ptr %31, align 8, !tbaa !48
  %700 = load double, ptr %32, align 8, !tbaa !48
  %701 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %702 = load i32, ptr %701, align 8, !tbaa !44
  %703 = sitofp i32 %702 to double
  %704 = fsub double %700, %703
  store double %704, ptr %32, align 8, !tbaa !48
  %705 = load double, ptr %29, align 8, !tbaa !48
  %706 = load double, ptr %32, align 8, !tbaa !48
  %707 = load double, ptr %30, align 8, !tbaa !48
  %708 = fadd double %706, %707
  %709 = load double, ptr %31, align 8, !tbaa !48
  %710 = fadd double %708, %709
  %711 = fmul double %710, 8.000000e+01
  %712 = call double @llvm.fmuladd.f64(double %705, double 2.000000e+01, double %711)
  %713 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 1
  %714 = load double, ptr %713, align 8, !tbaa !58
  %715 = fadd double %714, %712
  store double %715, ptr %713, align 8, !tbaa !58
  %716 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 58
  %717 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 13
  %718 = load i32, ptr %717, align 8, !tbaa !13
  %719 = add nsw i32 %718, 1
  %720 = sext i32 %719 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #6
  store i32 -1, ptr %58, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %716, i64 noundef %720, ptr noundef nonnull align 4 dereferenceable(4) %58)
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #6
  %721 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 48
  %722 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 11
  %723 = load i32, ptr %722, align 8, !tbaa !43
  %724 = sext i32 %723 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #6
  store i32 0, ptr %59, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %721, i64 noundef %724, ptr noundef nonnull align 4 dereferenceable(4) %59)
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #6
  store i32 0, ptr %60, align 4, !tbaa !11
  %725 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 10
  store i32 0, ptr %725, align 4, !tbaa !66
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #6
  store i32 0, ptr %61, align 4, !tbaa !11
  br label %726

726:                                              ; preds = %764, %689
  %727 = load i32, ptr %61, align 4, !tbaa !11
  %728 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 11
  %729 = load i32, ptr %728, align 8, !tbaa !43
  %730 = icmp slt i32 %727, %729
  br i1 %730, label %732, label %731

731:                                              ; preds = %726
  store i32 28, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #6
  br label %767

732:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #6
  %733 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %734 = load i32, ptr %61, align 4, !tbaa !11
  %735 = sext i32 %734 to i64
  %736 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %733, i64 noundef %735) #6
  %737 = load i32, ptr %736, align 4, !tbaa !11
  store i32 %737, ptr %62, align 4, !tbaa !11
  %738 = load i32, ptr %62, align 4, !tbaa !11
  %739 = icmp sgt i32 %738, 0
  br i1 %739, label %740, label %763

740:                                              ; preds = %732
  %741 = load i32, ptr %60, align 4, !tbaa !11
  %742 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 47
  %743 = load i32, ptr %61, align 4, !tbaa !11
  %744 = sext i32 %743 to i64
  %745 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %742, i64 noundef %744) #6
  store i32 %741, ptr %745, align 4, !tbaa !11
  %746 = load i32, ptr %62, align 4, !tbaa !11
  %747 = mul nsw i32 %746, 2
  %748 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 49
  %749 = load i32, ptr %61, align 4, !tbaa !11
  %750 = sext i32 %749 to i64
  %751 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %748, i64 noundef %750) #6
  store i32 %747, ptr %751, align 4, !tbaa !11
  %752 = load i32, ptr %62, align 4, !tbaa !11
  %753 = mul nsw i32 %752, 2
  %754 = load i32, ptr %60, align 4, !tbaa !11
  %755 = add nsw i32 %754, %753
  store i32 %755, ptr %60, align 4, !tbaa !11
  %756 = load i32, ptr %61, align 4, !tbaa !11
  %757 = load i32, ptr %62, align 4, !tbaa !11
  call void @_ZN7HFactor8rlinkAddEii(ptr noundef nonnull align 8 dereferenceable(1912) %73, i32 noundef %756, i32 noundef %757)
  %758 = load i32, ptr %62, align 4, !tbaa !11
  %759 = add nsw i32 %758, 1
  %760 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 10
  %761 = load i32, ptr %760, align 4, !tbaa !66
  %762 = add nsw i32 %761, %759
  store i32 %762, ptr %760, align 4, !tbaa !66
  br label %763

763:                                              ; preds = %740, %732
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #6
  br label %764

764:                                              ; preds = %763
  %765 = load i32, ptr %61, align 4, !tbaa !11
  %766 = add nsw i32 %765, 1
  store i32 %766, ptr %61, align 4, !tbaa !11
  br label %726, !llvm.loop !67

767:                                              ; preds = %731
  %768 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 51
  %769 = load i32, ptr %60, align 4, !tbaa !11
  %770 = sext i32 %769 to i64
  call void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %768, i64 noundef %770)
  %771 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 55
  %772 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 11
  %773 = load i32, ptr %772, align 8, !tbaa !43
  %774 = add nsw i32 %773, 1
  %775 = sext i32 %774 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #6
  store i32 -1, ptr %63, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %771, i64 noundef %775, ptr noundef nonnull align 4 dereferenceable(4) %63)
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #6
  %776 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 13
  %777 = load i32, ptr %776, align 8, !tbaa !13
  store i32 %777, ptr %64, align 4, !tbaa !11
  %778 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 44
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %778) #6
  %779 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 45
  call void @_ZNSt6vectorIdSaIdEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %779) #6
  %780 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 41
  %781 = load i32, ptr %64, align 4, !tbaa !11
  %782 = sext i32 %781 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #6
  store i32 0, ptr %65, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %780, i64 noundef %782, ptr noundef nonnull align 4 dereferenceable(4) %65)
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #6
  %783 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 42
  %784 = load i32, ptr %64, align 4, !tbaa !11
  %785 = sext i32 %784 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  store i32 0, ptr %66, align 4, !tbaa !11
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %783, i64 noundef %785, ptr noundef nonnull align 4 dereferenceable(4) %66)
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  store i32 0, ptr %67, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #6
  store i32 0, ptr %68, align 4, !tbaa !11
  br label %786

786:                                              ; preds = %896, %767
  %787 = load i32, ptr %68, align 4, !tbaa !11
  %788 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %789 = load i32, ptr %788, align 8, !tbaa !44
  %790 = icmp slt i32 %787, %789
  br i1 %790, label %792, label %791

791:                                              ; preds = %786
  store i32 31, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #6
  br label %899

792:                                              ; preds = %786
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #6
  %793 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 32
  %794 = load i32, ptr %68, align 4, !tbaa !11
  %795 = sext i32 %794 to i64
  %796 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %793, i64 noundef %795) #6
  %797 = load i32, ptr %796, align 4, !tbaa !11
  store i32 %797, ptr %69, align 4, !tbaa !11
  %798 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 34
  %799 = load i32, ptr %69, align 4, !tbaa !11
  %800 = sext i32 %799 to i64
  %801 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %798, i64 noundef %800) #6
  %802 = load i32, ptr %801, align 4, !tbaa !11
  %803 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 39
  %804 = load i32, ptr %69, align 4, !tbaa !11
  %805 = sext i32 %804 to i64
  %806 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %803, i64 noundef %805) #6
  store i32 %802, ptr %806, align 4, !tbaa !11
  %807 = load i32, ptr %67, align 4, !tbaa !11
  %808 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 40
  %809 = load i32, ptr %69, align 4, !tbaa !11
  %810 = sext i32 %809 to i64
  %811 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %808, i64 noundef %810) #6
  store i32 %807, ptr %811, align 4, !tbaa !11
  %812 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 35
  %813 = load i32, ptr %69, align 4, !tbaa !11
  %814 = add nsw i32 %813, 1
  %815 = sext i32 %814 to i64
  %816 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %812, i64 noundef %815) #6
  %817 = load i32, ptr %816, align 4, !tbaa !11
  %818 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 35
  %819 = load i32, ptr %69, align 4, !tbaa !11
  %820 = sext i32 %819 to i64
  %821 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %818, i64 noundef %820) #6
  %822 = load i32, ptr %821, align 4, !tbaa !11
  %823 = sub nsw i32 %817, %822
  %824 = mul nsw i32 %823, 2
  %825 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 43
  %826 = load i32, ptr %69, align 4, !tbaa !11
  %827 = sext i32 %826 to i64
  %828 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %825, i64 noundef %827) #6
  store i32 %824, ptr %828, align 4, !tbaa !11
  %829 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 43
  %830 = load i32, ptr %69, align 4, !tbaa !11
  %831 = sext i32 %830 to i64
  %832 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %829, i64 noundef %831) #6
  %833 = load i32, ptr %832, align 4, !tbaa !11
  %834 = load i32, ptr %67, align 4, !tbaa !11
  %835 = add nsw i32 %834, %833
  store i32 %835, ptr %67, align 4, !tbaa !11
  %836 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 44
  %837 = load i32, ptr %67, align 4, !tbaa !11
  %838 = sext i32 %837 to i64
  call void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %836, i64 noundef %838)
  %839 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 45
  %840 = load i32, ptr %67, align 4, !tbaa !11
  %841 = sext i32 %840 to i64
  call void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %839, i64 noundef %841)
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #6
  %842 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 35
  %843 = load i32, ptr %69, align 4, !tbaa !11
  %844 = sext i32 %843 to i64
  %845 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %842, i64 noundef %844) #6
  %846 = load i32, ptr %845, align 4, !tbaa !11
  store i32 %846, ptr %70, align 4, !tbaa !11
  br label %847

847:                                              ; preds = %885, %792
  %848 = load i32, ptr %70, align 4, !tbaa !11
  %849 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 35
  %850 = load i32, ptr %69, align 4, !tbaa !11
  %851 = add nsw i32 %850, 1
  %852 = sext i32 %851 to i64
  %853 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %849, i64 noundef %852) #6
  %854 = load i32, ptr %853, align 4, !tbaa !11
  %855 = icmp slt i32 %848, %854
  br i1 %855, label %857, label %856

856:                                              ; preds = %847
  store i32 34, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #6
  br label %888

857:                                              ; preds = %847
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #6
  %858 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 36
  %859 = load i32, ptr %70, align 4, !tbaa !11
  %860 = sext i32 %859 to i64
  %861 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %858, i64 noundef %860) #6
  %862 = load i32, ptr %861, align 4, !tbaa !11
  store i32 %862, ptr %71, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #6
  %863 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 37
  %864 = load i32, ptr %70, align 4, !tbaa !11
  %865 = sext i32 %864 to i64
  %866 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %863, i64 noundef %865) #6
  %867 = load double, ptr %866, align 8, !tbaa !48
  store double %867, ptr %72, align 8, !tbaa !48
  %868 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 50
  %869 = load i32, ptr %71, align 4, !tbaa !11
  %870 = sext i32 %869 to i64
  %871 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %868, i64 noundef %870) #6
  %872 = load i32, ptr %871, align 4, !tbaa !11
  %873 = icmp sgt i32 %872, 0
  br i1 %873, label %874, label %880

874:                                              ; preds = %857
  %875 = load i32, ptr %69, align 4, !tbaa !11
  %876 = load i32, ptr %71, align 4, !tbaa !11
  %877 = load double, ptr %72, align 8, !tbaa !48
  call void @_ZN7HFactor9colInsertEiid(ptr noundef nonnull align 8 dereferenceable(1912) %73, i32 noundef %875, i32 noundef %876, double noundef %877)
  %878 = load i32, ptr %69, align 4, !tbaa !11
  %879 = load i32, ptr %71, align 4, !tbaa !11
  call void @_ZN7HFactor9rowInsertEii(ptr noundef nonnull align 8 dereferenceable(1912) %73, i32 noundef %878, i32 noundef %879)
  br label %884

880:                                              ; preds = %857
  %881 = load i32, ptr %69, align 4, !tbaa !11
  %882 = load i32, ptr %71, align 4, !tbaa !11
  %883 = load double, ptr %72, align 8, !tbaa !48
  call void @_ZN7HFactor9colStoreNEiid(ptr noundef nonnull align 8 dereferenceable(1912) %73, i32 noundef %881, i32 noundef %882, double noundef %883)
  br label %884

884:                                              ; preds = %880, %874
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #6
  br label %885

885:                                              ; preds = %884
  %886 = load i32, ptr %70, align 4, !tbaa !11
  %887 = add nsw i32 %886, 1
  store i32 %887, ptr %70, align 4, !tbaa !11
  br label %847, !llvm.loop !68

888:                                              ; preds = %856
  %889 = load i32, ptr %69, align 4, !tbaa !11
  call void @_ZN7HFactor9colFixMaxEi(ptr noundef nonnull align 8 dereferenceable(1912) %73, i32 noundef %889)
  %890 = load i32, ptr %69, align 4, !tbaa !11
  %891 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 41
  %892 = load i32, ptr %69, align 4, !tbaa !11
  %893 = sext i32 %892 to i64
  %894 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %891, i64 noundef %893) #6
  %895 = load i32, ptr %894, align 4, !tbaa !11
  call void @_ZN7HFactor8clinkAddEii(ptr noundef nonnull align 8 dereferenceable(1912) %73, i32 noundef %890, i32 noundef %895)
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #6
  br label %896

896:                                              ; preds = %888
  %897 = load i32, ptr %68, align 4, !tbaa !11
  %898 = add nsw i32 %897, 1
  store i32 %898, ptr %68, align 4, !tbaa !11
  br label %786, !llvm.loop !69

899:                                              ; preds = %791
  %900 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 11
  %901 = load i32, ptr %900, align 8, !tbaa !43
  %902 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %903 = load i32, ptr %902, align 8, !tbaa !44
  %904 = add nsw i32 %901, %903
  %905 = load i32, ptr %67, align 4, !tbaa !11
  %906 = add nsw i32 %904, %905
  %907 = mul nsw i32 %906, 40
  %908 = load i32, ptr %60, align 4, !tbaa !11
  %909 = mul nsw i32 %908, 20
  %910 = add nsw i32 %907, %909
  %911 = sitofp i32 %910 to double
  %912 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 1
  %913 = load double, ptr %912, align 8, !tbaa !58
  %914 = fadd double %913, %911
  store double %914, ptr %912, align 8, !tbaa !58
  %915 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %916 = load i32, ptr %915, align 8, !tbaa !44
  %917 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 9
  store i32 %916, ptr %917, align 8, !tbaa !70
  %918 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 6
  %919 = getelementptr inbounds %struct.RefactorInfo, ptr %918, i32 0, i32 1
  %920 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %919) #6
  %921 = trunc i64 %920 to i32
  %922 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 13
  %923 = load i32, ptr %922, align 8, !tbaa !13
  %924 = getelementptr inbounds %class.HFactor, ptr %73, i32 0, i32 31
  %925 = load i32, ptr %924, align 8, !tbaa !44
  %926 = sub nsw i32 %923, %925
  %927 = icmp eq i32 %921, %926
  br i1 %927, label %928, label %929

928:                                              ; preds = %899
  br label %931

929:                                              ; preds = %899
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.52, i32 noundef 868, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv) #7
  unreachable

930:                                              ; No predecessors!
  br label %931

931:                                              ; preds = %930, %928
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %3) #6
  ret void

932:                                              ; preds = %686
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7HFactor7luClearEv(ptr noundef nonnull align 8 dereferenceable(1912)) #2 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt6fill_nIPiiiET_S1_T0_RKT1_(ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) #4

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor8rlinkAddEii(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef, i32 noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor9colInsertEiid(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef, i32 noundef, double noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor9rowInsertEii(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef, i32 noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor9colStoreNEiid(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef, i32 noundef, double noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor9colFixMaxEi(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor8clinkAddEii(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef, i32 noundef) #1 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 208}
!14 = !{!"_ZTS7HFactor", !15, i64 0, !15, i64 8, !12, i64 16, !16, i64 24, !16, i64 48, !16, i64 72, !20, i64 96, !12, i64 184, !12, i64 188, !12, i64 192, !12, i64 196, !12, i64 200, !12, i64 204, !12, i64 208, !15, i64 216, !10, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !15, i64 264, !15, i64 272, !12, i64 280, !15, i64 288, !25, i64 296, !31, i64 304, !10, i64 400, !10, i64 401, !12, i64 404, !12, i64 408, !6, i64 416, !12, i64 424, !16, i64 432, !34, i64 456, !16, i64 480, !16, i64 504, !16, i64 528, !34, i64 552, !16, i64 576, !16, i64 600, !16, i64 624, !16, i64 648, !16, i64 672, !16, i64 696, !16, i64 720, !34, i64 744, !34, i64 768, !16, i64 792, !16, i64 816, !16, i64 840, !16, i64 864, !16, i64 888, !16, i64 912, !38, i64 936, !34, i64 960, !16, i64 984, !16, i64 1008, !16, i64 1032, !16, i64 1056, !16, i64 1080, !16, i64 1104, !16, i64 1128, !16, i64 1152, !16, i64 1176, !16, i64 1200, !34, i64 1224, !16, i64 1248, !16, i64 1272, !34, i64 1296, !16, i64 1320, !16, i64 1344, !34, i64 1368, !12, i64 1392, !12, i64 1396, !16, i64 1400, !16, i64 1424, !16, i64 1448, !34, i64 1472, !16, i64 1496, !16, i64 1520, !16, i64 1544, !16, i64 1568, !34, i64 1592, !34, i64 1616, !16, i64 1640, !16, i64 1664, !16, i64 1688, !34, i64 1712, !42, i64 1736}
!15 = !{!"double", !7, i64 0}
!16 = !{!"_ZTSSt6vectorIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTS12RefactorInfo", !10, i64 0, !16, i64 8, !16, i64 32, !21, i64 56, !15, i64 80}
!21 = !{!"_ZTSSt6vectorIaSaIaEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIaSaIaEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIaSaIaEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIaSaIaEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSSt10unique_ptrIN7HFactor7LogDataESt14default_deleteIS1_EE", !26, i64 0}
!26 = !{!"_ZTSSt15__uniq_ptr_dataIN7HFactor7LogDataESt14default_deleteIS1_ELb1ELb1EE", !27, i64 0}
!27 = !{!"_ZTSSt15__uniq_ptr_implIN7HFactor7LogDataESt14default_deleteIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt5tupleIJPN7HFactor7LogDataESt14default_deleteIS1_EEE", !29, i64 0}
!29 = !{!"_ZTSSt11_Tuple_implILm0EJPN7HFactor7LogDataESt14default_deleteIS1_EEE", !30, i64 0}
!30 = !{!"_ZTSSt10_Head_baseILm0EPN7HFactor7LogDataELb0EE", !6, i64 0}
!31 = !{!"_ZTS15HighsLogOptions", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !32, i64 48, !6, i64 80, !10, i64 88}
!32 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !33, i64 0, !6, i64 24}
!33 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!34 = !{!"_ZTSSt6vectorIdSaIdEE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorIcSaIcEE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTS11HVectorBaseIdE", !12, i64 0, !12, i64 4, !16, i64 8, !34, i64 32, !15, i64 56, !38, i64 64, !16, i64 88, !6, i64 112, !10, i64 120, !12, i64 124, !16, i64 128, !34, i64 152}
!43 = !{!14, !12, i64 200}
!44 = !{!14, !12, i64 424}
!45 = !{!14, !6, i64 256}
!46 = !{!7, !7, i64 0}
!47 = !{!14, !12, i64 204}
!48 = !{!15, !15, i64 0}
!49 = !{!14, !6, i64 232}
!50 = !{!14, !6, i64 248}
!51 = !{!14, !6, i64 240}
!52 = !{i8 0, i8 2}
!53 = !{}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = distinct !{!56, !55}
!57 = !{!14, !12, i64 184}
!58 = !{!14, !15, i64 8}
!59 = distinct !{!59, !55}
!60 = distinct !{!60, !55}
!61 = distinct !{!61, !55}
!62 = distinct !{!62, !55}
!63 = distinct !{!63, !55}
!64 = distinct !{!64, !55}
!65 = distinct !{!65, !55}
!66 = !{!14, !12, i64 196}
!67 = distinct !{!67, !55}
!68 = distinct !{!68, !55}
!69 = distinct !{!69, !55}
!70 = !{!14, !12, i64 192}


; 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"

@.str.52 = external hidden unnamed_addr constant [70 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [35 x i8], align 1
@__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv = external hidden unnamed_addr constant [28 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [33 x i8], align 1
@_ZL18kPivotRowSingleton = external hidden constant i8, align 1
@_ZL18kPivotColSingleton = external hidden constant i8, align 1
@.str.58 = external hidden unnamed_addr constant [69 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

; 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 dso_local noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7HFactor11buildSimpleEv(ptr noundef nonnull align 8 dereferenceable(1912) %0) local_unnamed_addr #2 align 2 {
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca double, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  tail call void @_ZN7HFactor7luClearEv(ptr noundef nonnull align 8 dereferenceable(1912) %0)
  %25 = getelementptr inbounds i8, ptr %0, i64 208
  %26 = load i32, ptr %25, align 8, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %0, i64 576
  %28 = sext i32 %26 to i64
  tail call void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %28)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #6
  store i32 -1, ptr %2, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %28, ptr noundef nonnull align 4 dereferenceable(4) %2)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #6
  %29 = getelementptr inbounds i8, ptr %0, i64 864
  %30 = call noundef ptr @_ZNSt6vectorIiSaIiEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #6
  %31 = getelementptr inbounds i8, ptr %0, i64 200
  %32 = load i32, ptr %31, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #6
  store i32 0, ptr %3, align 4, !tbaa !40
  %33 = call noundef ptr @_ZSt6fill_nIPiiiET_S1_T0_RKT1_(ptr noundef %30, i32 noundef %32, ptr noundef nonnull align 4 dereferenceable(4) %3)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #6
  %34 = getelementptr inbounds i8, ptr %0, i64 424
  store i32 0, ptr %34, align 8, !tbaa !42
  %35 = load i32, ptr %25, align 8, !tbaa !5
  %36 = getelementptr inbounds i8, ptr %0, i64 432
  %37 = add nsw i32 %35, 1
  %38 = sext i32 %37 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #6
  store i32 0, ptr %4, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE6resizeEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %38, ptr noundef nonnull align 4 dereferenceable(4) %4)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #6
  store i32 0, ptr %5, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %38, ptr noundef nonnull align 4 dereferenceable(4) %5)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  %39 = load i32, ptr %25, align 8, !tbaa !5
  %40 = icmp sgt i32 %39, 0
  br i1 %40, label %.lr.ph226, label %._crit_edge227

.lr.ph226:                                        ; preds = %1
  %41 = getelementptr inbounds i8, ptr %0, i64 256
  %42 = getelementptr inbounds i8, ptr %0, i64 204
  %43 = getelementptr inbounds i8, ptr %0, i64 528
  %44 = getelementptr inbounds i8, ptr %0, i64 552
  %45 = getelementptr inbounds i8, ptr %0, i64 232
  %46 = getelementptr inbounds i8, ptr %0, i64 248
  %47 = getelementptr inbounds i8, ptr %0, i64 240
  %48 = getelementptr inbounds i8, ptr %0, i64 1176
  %49 = getelementptr inbounds i8, ptr %0, i64 1200
  %50 = getelementptr inbounds i8, ptr %0, i64 1344
  %51 = getelementptr inbounds i8, ptr %0, i64 1368
  %52 = getelementptr inbounds i8, ptr %0, i64 1400
  %53 = getelementptr inbounds i8, ptr %0, i64 1448
  %54 = getelementptr inbounds i8, ptr %0, i64 104
  %55 = getelementptr inbounds i8, ptr %0, i64 128
  %56 = getelementptr inbounds i8, ptr %0, i64 152
  %57 = getelementptr inbounds i8, ptr %0, i64 504
  %58 = getelementptr inbounds i8, ptr %0, i64 480
  br label %93

._crit_edge227:                                   ; preds = %186, %1
  %.0.lcssa = phi i32 [ 0, %1 ], [ %.4, %186 ]
  %59 = load i32, ptr %31, align 8, !tbaa !41
  %60 = load i32, ptr %34, align 8, !tbaa !42
  %61 = sub nsw i32 %59, %60
  %62 = add nsw i32 %61, %.0.lcssa
  %63 = getelementptr inbounds i8, ptr %0, i64 184
  store i32 %62, ptr %63, align 8, !tbaa !43
  %64 = mul nsw i32 %.0.lcssa, 60
  %65 = mul nsw i32 %61, 80
  %66 = add nsw i32 %65, %64
  %67 = sitofp i32 %66 to double
  %68 = getelementptr inbounds i8, ptr %0, i64 8
  %69 = load double, ptr %68, align 8, !tbaa !44
  %70 = fadd double %69, %67
  store double %70, ptr %68, align 8, !tbaa !44
  %71 = getelementptr inbounds i8, ptr %0, i64 1200
  %72 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #6
  %73 = uitofp i64 %72 to double
  %74 = getelementptr inbounds i8, ptr %0, i64 1448
  %75 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #6
  %76 = uitofp i64 %75 to double
  %77 = load i32, ptr %34, align 8, !tbaa !42
  %78 = sitofp i32 %77 to double
  %79 = getelementptr inbounds i8, ptr %0, i64 504
  %80 = getelementptr inbounds i8, ptr %0, i64 528
  %81 = getelementptr inbounds i8, ptr %0, i64 1472
  %82 = getelementptr inbounds i8, ptr %0, i64 552
  %83 = getelementptr inbounds i8, ptr %0, i64 1176
  %84 = getelementptr inbounds i8, ptr %0, i64 1344
  %85 = getelementptr inbounds i8, ptr %0, i64 1368
  %86 = getelementptr inbounds i8, ptr %0, i64 1400
  %87 = getelementptr inbounds i8, ptr %0, i64 480
  %88 = getelementptr inbounds i8, ptr %0, i64 256
  %89 = getelementptr inbounds i8, ptr %0, i64 104
  %90 = getelementptr inbounds i8, ptr %0, i64 128
  %91 = getelementptr inbounds i8, ptr %0, i64 152
  %92 = getelementptr inbounds i8, ptr %0, i64 1224
  br label %193

93:                                               ; preds = %.lr.ph226, %186
  %indvars.iv280 = phi i64 [ 0, %.lr.ph226 ], [ %indvars.iv.next281, %186 ]
  %.0224 = phi i32 [ 0, %.lr.ph226 ], [ %.4, %186 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  %94 = load ptr, ptr %41, align 8, !tbaa !45
  %95 = getelementptr inbounds i32, ptr %94, i64 %indvars.iv280
  %96 = load i32, ptr %95, align 4, !tbaa !40
  store i32 %96, ptr %6, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  store i32 -1, ptr %7, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #6
  store i8 -1, ptr %8, align 1, !tbaa !46
  %97 = load i32, ptr %42, align 4, !tbaa !47
  %.not200 = icmp slt i32 %96, %97
  br i1 %.not200, label %113, label %98

98:                                               ; preds = %93
  %99 = sub nsw i32 %96, %97
  %100 = sext i32 %99 to i64
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %100) #6
  %102 = load i32, ptr %101, align 4, !tbaa !40
  %103 = icmp sgt i32 %102, -1
  br i1 %103, label %104, label %105

104:                                              ; preds = %98
  store i8 0, ptr %8, align 1, !tbaa !46
  store i32 %99, ptr %7, align 4, !tbaa !40
  br label %169

105:                                              ; preds = %98
  %106 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %100) #6
  %107 = load i32, ptr %106, align 4, !tbaa !40
  %108 = add nsw i32 %107, 1
  store i32 %108, ptr %106, align 4, !tbaa !40
  %109 = sext i32 %.0224 to i64
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %109) #6
  store i32 %99, ptr %110, align 4, !tbaa !40
  %111 = add nsw i32 %.0224, 1
  %112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %109) #6
  store double 1.000000e+00, ptr %112, align 8, !tbaa !48
  br label %thread-pre-split

113:                                              ; preds = %93
  %114 = load ptr, ptr %45, align 8, !tbaa !49
  %115 = sext i32 %96 to i64
  %116 = getelementptr inbounds i32, ptr %114, i64 %115
  %117 = load i32, ptr %116, align 4, !tbaa !40
  %118 = getelementptr i8, ptr %116, i64 4
  %119 = load i32, ptr %118, align 4, !tbaa !40
  %120 = sub nsw i32 %119, %117
  %121 = icmp eq i32 %120, 1
  br i1 %121, label %122, label %.critedge

122:                                              ; preds = %113
  %123 = load ptr, ptr %46, align 8, !tbaa !50
  %124 = sext i32 %117 to i64
  %125 = getelementptr inbounds double, ptr %123, i64 %124
  %126 = load double, ptr %125, align 8, !tbaa !48
  %127 = fcmp oeq double %126, 1.000000e+00
  br i1 %127, label %128, label %.critedge

128:                                              ; preds = %122
  %129 = load ptr, ptr %47, align 8, !tbaa !51
  %130 = getelementptr inbounds i32, ptr %129, i64 %124
  %131 = load i32, ptr %130, align 4, !tbaa !40
  %132 = sext i32 %131 to i64
  %133 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %132) #6
  %134 = load i32, ptr %133, align 4, !tbaa !40
  %135 = icmp sgt i32 %134, -1
  br i1 %135, label %136, label %.critedge

136:                                              ; preds = %128
  store i8 3, ptr %8, align 1, !tbaa !46
  %137 = load ptr, ptr %47, align 8, !tbaa !51
  %138 = getelementptr inbounds i32, ptr %137, i64 %124
  %139 = load i32, ptr %138, align 4, !tbaa !40
  store i32 %139, ptr %7, align 4, !tbaa !40
  br label %169

.critedge:                                        ; preds = %113, %122, %128
  %140 = icmp slt i32 %117, %119
  br i1 %140, label %.lr.ph.preheader, label %thread-pre-split

.lr.ph.preheader:                                 ; preds = %.critedge
  %141 = sext i32 %.0224 to i64
  %142 = sext i32 %117 to i64
  br label %.lr.ph

._crit_edge.loopexit:                             ; preds = %155
  %143 = trunc nsw i64 %indvars.iv.next to i32
  br label %thread-pre-split

.lr.ph:                                           ; preds = %.lr.ph.preheader, %155
  %indvars.iv275 = phi i64 [ %142, %.lr.ph.preheader ], [ %indvars.iv.next276, %155 ]
  %indvars.iv = phi i64 [ %141, %.lr.ph.preheader ], [ %indvars.iv.next, %155 ]
  %144 = load ptr, ptr %47, align 8, !tbaa !51
  %145 = getelementptr inbounds i32, ptr %144, i64 %indvars.iv275
  %146 = load i32, ptr %145, align 4, !tbaa !40
  %147 = sext i32 %146 to i64
  %148 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %147) #6
  %149 = load i32, ptr %148, align 4, !tbaa !40
  %150 = add nsw i32 %149, 1
  store i32 %150, ptr %148, align 4, !tbaa !40
  %151 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %43) #6
  %sext = shl i64 %151, 32
  %152 = ashr exact i64 %sext, 32
  %153 = icmp slt i64 %indvars.iv, %152
  br i1 %153, label %155, label %154

154:                                              ; preds = %.lr.ph
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.52, i32 noundef 653, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv) #7
  unreachable

155:                                              ; preds = %.lr.ph
  %156 = load ptr, ptr %47, align 8, !tbaa !51
  %157 = getelementptr inbounds i32, ptr %156, i64 %indvars.iv275
  %158 = load i32, ptr %157, align 4, !tbaa !40
  %159 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %indvars.iv) #6
  store i32 %158, ptr %159, align 4, !tbaa !40
  %160 = load ptr, ptr %46, align 8, !tbaa !50
  %161 = getelementptr inbounds double, ptr %160, i64 %indvars.iv275
  %162 = load double, ptr %161, align 8, !tbaa !48
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %indvars.iv) #6
  store double %162, ptr %163, align 8, !tbaa !48
  %indvars.iv.next276 = add nsw i64 %indvars.iv275, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next276 to i32
  %exitcond.not = icmp eq i32 %119, %lftr.wideiv
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !52

thread-pre-split:                                 ; preds = %.critedge, %._crit_edge.loopexit, %105
  %.4.ph = phi i32 [ %111, %105 ], [ %.0224, %.critedge ], [ %143, %._crit_edge.loopexit ]
  %164 = load i32, ptr %34, align 8, !tbaa !42
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr %34, align 8, !tbaa !42
  %166 = sext i32 %164 to i64
  %167 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %166) #6
  %168 = trunc nuw nsw i64 %indvars.iv280 to i32
  store i32 %168, ptr %167, align 4, !tbaa !40
  %.pr = load i32, ptr %7, align 4, !tbaa !40
  br label %169

169:                                              ; preds = %thread-pre-split, %136, %104
  %170 = phi i32 [ %.pr, %thread-pre-split ], [ %139, %136 ], [ %99, %104 ]
  %.4 = phi i32 [ %.4.ph, %thread-pre-split ], [ %.0224, %136 ], [ %.0224, %104 ]
  %171 = icmp sgt i32 %170, -1
  br i1 %171, label %172, label %186

172:                                              ; preds = %169
  %173 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %indvars.iv280) #6
  store i32 %170, ptr %173, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  %174 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %49) #6
  %175 = trunc i64 %174 to i32
  store i32 %175, ptr %9, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr noundef nonnull align 4 dereferenceable(4) %9)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %50, ptr noundef nonnull align 4 dereferenceable(4) %7)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  store double 1.000000e+00, ptr %10, align 8, !tbaa !48
  call void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 8 dereferenceable(8) %10)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  %176 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %53) #6
  %177 = trunc i64 %176 to i32
  store i32 %177, ptr %11, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %52, ptr noundef nonnull align 4 dereferenceable(4) %11)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  %178 = load i32, ptr %25, align 8, !tbaa !5
  %179 = sub nsw i32 0, %178
  %180 = load i32, ptr %7, align 4, !tbaa !40
  %181 = sext i32 %180 to i64
  %182 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %181) #6
  store i32 %179, ptr %182, align 4, !tbaa !40
  %183 = load i8, ptr %8, align 1, !tbaa !46
  %.not201 = icmp eq i8 %183, -1
  br i1 %.not201, label %184, label %185

184:                                              ; preds = %172
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.52, i32 noundef 672, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv) #7
  unreachable

185:                                              ; preds = %172
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 4 dereferenceable(4) %7)
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %55, ptr noundef nonnull align 4 dereferenceable(4) %6)
  call void @_ZNSt6vectorIaSaIaEE9push_backERKa(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 1 dereferenceable(1) %8)
  br label %186

186:                                              ; preds = %185, %169
  %indvars.iv.next281 = add nuw nsw i64 %indvars.iv280, 1
  %187 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %indvars.iv.next281) #6
  store i32 %.4, ptr %187, align 4, !tbaa !40
  %188 = load i32, ptr %6, align 4, !tbaa !40
  %189 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %indvars.iv280) #6
  store i32 %188, ptr %189, align 4, !tbaa !40
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  %190 = load i32, ptr %25, align 8, !tbaa !5
  %191 = sext i32 %190 to i64
  %192 = icmp slt i64 %indvars.iv.next281, %191
  br i1 %192, label %93, label %._crit_edge227, !llvm.loop !54

193:                                              ; preds = %197, %._crit_edge227
  %194 = phi i32 [ %198, %197 ], [ %77, %._crit_edge227 ]
  %.0175 = phi double [ %212, %197 ], [ 0.000000e+00, %._crit_edge227 ]
  %195 = icmp sgt i32 %194, 0
  br i1 %195, label %196, label %329

196:                                              ; preds = %193
  store i32 0, ptr %34, align 8, !tbaa !42
  %wide.trip.count = zext nneg i32 %194 to i64
  br label %200

197:                                              ; preds = %328
  %198 = load i32, ptr %34, align 8, !tbaa !42
  %199 = icmp eq i32 %194, %198
  br i1 %199, label %329, label %193

200:                                              ; preds = %196, %328
  %indvars.iv303 = phi i64 [ 0, %196 ], [ %indvars.iv.next304, %328 ]
  %.1176249 = phi double [ %.0175, %196 ], [ %212, %328 ]
  %201 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %indvars.iv303) #6
  %202 = load i32, ptr %201, align 4, !tbaa !40
  %203 = sext i32 %202 to i64
  %204 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %203) #6
  %205 = load i32, ptr %204, align 4, !tbaa !40
  %206 = add nsw i32 %202, 1
  %207 = sext i32 %206 to i64
  %208 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %207) #6
  %209 = load i32, ptr %208, align 4, !tbaa !40
  %210 = sub nsw i32 %209, %205
  %211 = sitofp i32 %210 to double
  %212 = fadd double %.1176249, %211
  %213 = icmp slt i32 %205, %209
  br i1 %213, label %.lr.ph233.preheader, label %._crit_edge234.thread

.lr.ph233.preheader:                              ; preds = %200
  %214 = sext i32 %205 to i64
  br label %.lr.ph233

.lr.ph233:                                        ; preds = %.lr.ph233.preheader, %220
  %indvars.iv283 = phi i64 [ %214, %.lr.ph233.preheader ], [ %indvars.iv.next284, %220 ]
  %.0180230 = phi i32 [ 0, %.lr.ph233.preheader ], [ %spec.select202, %220 ]
  %.0187229 = phi i32 [ -1, %.lr.ph233.preheader ], [ %spec.select, %220 ]
  %215 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv283) #6
  %216 = load i32, ptr %215, align 4, !tbaa !40
  %217 = sext i32 %216 to i64
  %218 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %217) #6
  %219 = load i32, ptr %218, align 4, !tbaa !40
  %.not = icmp eq i32 %219, 1
  br i1 %.not, label %226, label %220

220:                                              ; preds = %.lr.ph233
  %221 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %217) #6
  %222 = load i32, ptr %221, align 4, !tbaa !40
  %223 = icmp sgt i32 %222, 1
  %224 = trunc nsw i64 %indvars.iv283 to i32
  %spec.select = select i1 %223, i32 %224, i32 %.0187229
  %225 = zext i1 %223 to i32
  %spec.select202 = add nuw nsw i32 %.0180230, %225
  %indvars.iv.next284 = add nsw i64 %indvars.iv283, 1
  %lftr.wideiv286 = trunc i64 %indvars.iv.next284 to i32
  %exitcond287.not = icmp eq i32 %209, %lftr.wideiv286
  br i1 %exitcond287.not, label %._crit_edge234, label %.lr.ph233, !llvm.loop !55

226:                                              ; preds = %.lr.ph233
  %227 = trunc nsw i64 %indvars.iv283 to i32
  %sext316 = shl i64 %indvars.iv283, 32
  %228 = ashr exact i64 %sext316, 32
  %229 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %228) #6
  %230 = load double, ptr %229, align 8, !tbaa !48
  %231 = fdiv double 1.000000e+00, %230
  %232 = add nsw i32 %227, 1
  %233 = icmp slt i32 %205, %227
  br i1 %233, label %.lr.ph245, label %._crit_edge246

._crit_edge246:                                   ; preds = %283, %226
  %234 = icmp slt i32 %232, %209
  br i1 %234, label %.lr.ph245.preheader.1, label %._crit_edge246.1

.lr.ph245.preheader.1:                            ; preds = %._crit_edge246
  %235 = sext i32 %232 to i64
  br label %.lr.ph245.1

.lr.ph245.1:                                      ; preds = %248, %.lr.ph245.preheader.1
  %indvars.iv298.1 = phi i64 [ %235, %.lr.ph245.preheader.1 ], [ %indvars.iv.next299.1, %248 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  %236 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv298.1) #6
  %237 = load i32, ptr %236, align 4, !tbaa !40
  store i32 %237, ptr %12, align 4, !tbaa !40
  %238 = sext i32 %237 to i64
  %239 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %238) #6
  %240 = load i32, ptr %239, align 4, !tbaa !40
  %241 = icmp sgt i32 %240, 0
  br i1 %241, label %244, label %242

242:                                              ; preds = %.lr.ph245.1
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 4 dereferenceable(4) %12)
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %indvars.iv298.1) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull align 8 dereferenceable(8) %243)
  br label %248

244:                                              ; preds = %.lr.ph245.1
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 4 dereferenceable(4) %12)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %245 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %indvars.iv298.1) #6
  %246 = load double, ptr %245, align 8, !tbaa !48
  %247 = fmul double %231, %246
  store double %247, ptr %13, align 8, !tbaa !48
  call void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr noundef nonnull align 8 dereferenceable(8) %13)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %248

248:                                              ; preds = %244, %242
  %249 = load i32, ptr %12, align 4, !tbaa !40
  %250 = sext i32 %249 to i64
  %251 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %250) #6
  %252 = load i32, ptr %251, align 4, !tbaa !40
  %253 = add nsw i32 %252, -1
  store i32 %253, ptr %251, align 4, !tbaa !40
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  %indvars.iv.next299.1 = add nsw i64 %indvars.iv298.1, 1
  %lftr.wideiv301.1 = trunc i64 %indvars.iv.next299.1 to i32
  %exitcond302.1.not = icmp eq i32 %209, %lftr.wideiv301.1
  br i1 %exitcond302.1.not, label %._crit_edge246.1, label %.lr.ph245.1, !llvm.loop !56

._crit_edge246.1:                                 ; preds = %248, %._crit_edge246
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #6
  %254 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %228) #6
  %255 = load i32, ptr %254, align 4, !tbaa !40
  store i32 %255, ptr %14, align 4, !tbaa !40
  %256 = sext i32 %255 to i64
  %257 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %256) #6
  store i32 0, ptr %257, align 4, !tbaa !40
  %258 = load i32, ptr %14, align 4, !tbaa !40
  %259 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %203) #6
  store i32 %258, ptr %259, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #6
  %260 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #6
  %261 = trunc i64 %260 to i32
  store i32 %261, ptr %15, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 4 dereferenceable(4) %15)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 4 dereferenceable(4) %14)
  %262 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %228) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(8) %262)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  %263 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #6
  %264 = trunc i64 %263 to i32
  store i32 %264, ptr %16, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %86, ptr noundef nonnull align 4 dereferenceable(4) %16)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  %265 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %203) #6
  %266 = load i32, ptr %265, align 4, !tbaa !40
  %267 = load ptr, ptr %88, align 8, !tbaa !45
  %268 = getelementptr inbounds i32, ptr %267, i64 %203
  %269 = load i32, ptr %268, align 4, !tbaa !40
  %270 = icmp eq i32 %266, %269
  br i1 %270, label %290, label %289

.lr.ph245:                                        ; preds = %226, %283
  %indvars.iv298 = phi i64 [ %indvars.iv.next299, %283 ], [ %214, %226 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  %271 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv298) #6
  %272 = load i32, ptr %271, align 4, !tbaa !40
  store i32 %272, ptr %12, align 4, !tbaa !40
  %273 = sext i32 %272 to i64
  %274 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %273) #6
  %275 = load i32, ptr %274, align 4, !tbaa !40
  %276 = icmp sgt i32 %275, 0
  br i1 %276, label %277, label %281

277:                                              ; preds = %.lr.ph245
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 4 dereferenceable(4) %12)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %278 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %indvars.iv298) #6
  %279 = load double, ptr %278, align 8, !tbaa !48
  %280 = fmul double %231, %279
  store double %280, ptr %13, align 8, !tbaa !48
  call void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr noundef nonnull align 8 dereferenceable(8) %13)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %283

281:                                              ; preds = %.lr.ph245
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 4 dereferenceable(4) %12)
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %indvars.iv298) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull align 8 dereferenceable(8) %282)
  br label %283

283:                                              ; preds = %281, %277
  %284 = load i32, ptr %12, align 4, !tbaa !40
  %285 = sext i32 %284 to i64
  %286 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %285) #6
  %287 = load i32, ptr %286, align 4, !tbaa !40
  %288 = add nsw i32 %287, -1
  store i32 %288, ptr %286, align 4, !tbaa !40
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  %indvars.iv.next299 = add nsw i64 %indvars.iv298, 1
  %lftr.wideiv301 = trunc i64 %indvars.iv.next299 to i32
  %exitcond302.not = icmp eq i32 %lftr.wideiv301, %227
  br i1 %exitcond302.not, label %._crit_edge246, label %.lr.ph245, !llvm.loop !56

289:                                              ; preds = %._crit_edge246.1
  call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.52, i32 noundef 760, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv) #7
  unreachable

290:                                              ; preds = %._crit_edge246.1
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %89, ptr noundef nonnull align 4 dereferenceable(4) %14)
  %291 = load ptr, ptr %88, align 8, !tbaa !45
  %292 = getelementptr inbounds i32, ptr %291, i64 %203
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr noundef nonnull align 4 dereferenceable(4) %292)
  call void @_ZNSt6vectorIaSaIaEE9push_backERKa(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr noundef nonnull align 1 dereferenceable(1) @_ZL18kPivotRowSingleton)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  br label %328

._crit_edge234:                                   ; preds = %220
  %293 = icmp eq i32 %spec.select202, 1
  br i1 %293, label %.preheader211, label %._crit_edge234.thread

.preheader211:                                    ; preds = %._crit_edge234
  %294 = icmp slt i32 %205, %spec.select
  br i1 %294, label %.lr.ph238.preheader, label %.preheader

.lr.ph238.preheader:                              ; preds = %.preheader211
  %295 = sext i32 %205 to i64
  br label %.lr.ph238

.preheader:                                       ; preds = %.lr.ph238, %.preheader211
  %.0172239 = add nsw i32 %spec.select, 1
  %296 = icmp slt i32 %.0172239, %209
  br i1 %296, label %.lr.ph241.preheader, label %._crit_edge242

.lr.ph241.preheader:                              ; preds = %.preheader
  %297 = sext i32 %.0172239 to i64
  br label %.lr.ph241

.lr.ph238:                                        ; preds = %.lr.ph238.preheader, %.lr.ph238
  %indvars.iv288 = phi i64 [ %295, %.lr.ph238.preheader ], [ %indvars.iv.next289, %.lr.ph238 ]
  %298 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv288) #6
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 4 dereferenceable(4) %298)
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %indvars.iv288) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull align 8 dereferenceable(8) %299)
  %indvars.iv.next289 = add nsw i64 %indvars.iv288, 1
  %lftr.wideiv291 = trunc i64 %indvars.iv.next289 to i32
  %exitcond292.not = icmp eq i32 %spec.select, %lftr.wideiv291
  br i1 %exitcond292.not, label %.preheader, label %.lr.ph238, !llvm.loop !57

._crit_edge242:                                   ; preds = %.lr.ph241, %.preheader
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  %300 = sext i32 %spec.select to i64
  %301 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %300) #6
  %302 = load i32, ptr %301, align 4, !tbaa !40
  store i32 %302, ptr %17, align 4, !tbaa !40
  %303 = sext i32 %302 to i64
  %304 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %303) #6
  store i32 0, ptr %304, align 4, !tbaa !40
  %305 = load i32, ptr %17, align 4, !tbaa !40
  %306 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %203) #6
  store i32 %305, ptr %306, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  %307 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #6
  %308 = trunc i64 %307 to i32
  store i32 %308, ptr %18, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 4 dereferenceable(4) %18)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 4 dereferenceable(4) %17)
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %300) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(8) %309)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  %310 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #6
  %311 = trunc i64 %310 to i32
  store i32 %311, ptr %19, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %86, ptr noundef nonnull align 4 dereferenceable(4) %19)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  %312 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %203) #6
  %313 = load i32, ptr %312, align 4, !tbaa !40
  %314 = load ptr, ptr %88, align 8, !tbaa !45
  %315 = getelementptr inbounds i32, ptr %314, i64 %203
  %316 = load i32, ptr %315, align 4, !tbaa !40
  %317 = icmp eq i32 %313, %316
  br i1 %317, label %321, label %320

.lr.ph241:                                        ; preds = %.lr.ph241.preheader, %.lr.ph241
  %indvars.iv293 = phi i64 [ %297, %.lr.ph241.preheader ], [ %indvars.iv.next294, %.lr.ph241 ]
  %318 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv293) #6
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 4 dereferenceable(4) %318)
  %319 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %indvars.iv293) #6
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull align 8 dereferenceable(8) %319)
  %indvars.iv.next294 = add nsw i64 %indvars.iv293, 1
  %lftr.wideiv296 = trunc i64 %indvars.iv.next294 to i32
  %exitcond297.not = icmp eq i32 %209, %lftr.wideiv296
  br i1 %exitcond297.not, label %._crit_edge242, label %.lr.ph241, !llvm.loop !58

320:                                              ; preds = %._crit_edge242
  call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.52, i32 noundef 795, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv) #7
  unreachable

321:                                              ; preds = %._crit_edge242
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %89, ptr noundef nonnull align 4 dereferenceable(4) %17)
  %322 = load ptr, ptr %88, align 8, !tbaa !45
  %323 = getelementptr inbounds i32, ptr %322, i64 %203
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr noundef nonnull align 4 dereferenceable(4) %323)
  call void @_ZNSt6vectorIaSaIaEE9push_backERKa(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr noundef nonnull align 1 dereferenceable(1) @_ZL18kPivotColSingleton)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  br label %328

._crit_edge234.thread:                            ; preds = %200, %._crit_edge234
  %324 = load i32, ptr %34, align 8, !tbaa !42
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr %34, align 8, !tbaa !42
  %326 = sext i32 %324 to i64
  %327 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %326) #6
  store i32 %202, ptr %327, align 4, !tbaa !40
  br label %328

328:                                              ; preds = %321, %._crit_edge234.thread, %290
  %indvars.iv.next304 = add nuw nsw i64 %indvars.iv303, 1
  %exitcond306.not = icmp eq i64 %indvars.iv.next304, %wide.trip.count
  br i1 %exitcond306.not, label %197, label %200, !llvm.loop !59

329:                                              ; preds = %197, %193
  %.2177 = phi double [ %212, %197 ], [ %.0175, %193 ]
  %330 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #6
  %331 = uitofp i64 %330 to double
  %332 = fsub double %331, %73
  %333 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %74) #6
  %334 = uitofp i64 %333 to double
  %335 = fsub double %334, %76
  %336 = load i32, ptr %34, align 8, !tbaa !42
  %337 = sitofp i32 %336 to double
  %338 = fsub double %78, %337
  %339 = fadd double %332, %338
  %340 = fadd double %335, %339
  %341 = fmul double %340, 8.000000e+01
  %342 = call double @llvm.fmuladd.f64(double %.2177, double 2.000000e+01, double %341)
  %343 = load double, ptr %68, align 8, !tbaa !44
  %344 = fadd double %343, %342
  store double %344, ptr %68, align 8, !tbaa !44
  %345 = getelementptr inbounds i8, ptr %0, i64 1056
  %346 = load i32, ptr %25, align 8, !tbaa !5
  %347 = add nsw i32 %346, 1
  %348 = sext i32 %347 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  store i32 -1, ptr %20, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %345, i64 noundef %348, ptr noundef nonnull align 4 dereferenceable(4) %20)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  %349 = getelementptr inbounds i8, ptr %0, i64 816
  %350 = load i32, ptr %31, align 8, !tbaa !41
  %351 = sext i32 %350 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  store i32 0, ptr %21, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %349, i64 noundef %351, ptr noundef nonnull align 4 dereferenceable(4) %21)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #6
  %352 = getelementptr inbounds i8, ptr %0, i64 196
  store i32 0, ptr %352, align 4, !tbaa !60
  %353 = load i32, ptr %31, align 8, !tbaa !41
  %354 = icmp sgt i32 %353, 0
  br i1 %354, label %.lr.ph253, label %._crit_edge254

.lr.ph253:                                        ; preds = %329
  %355 = getelementptr inbounds i8, ptr %0, i64 792
  %356 = getelementptr inbounds i8, ptr %0, i64 840
  br label %374

._crit_edge254:                                   ; preds = %387, %329
  %.0170.lcssa = phi i32 [ 0, %329 ], [ %.1171, %387 ]
  %357 = getelementptr inbounds i8, ptr %0, i64 888
  %358 = zext nneg i32 %.0170.lcssa to i64
  call void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %357, i64 noundef %358)
  %359 = getelementptr inbounds i8, ptr %0, i64 984
  %360 = load i32, ptr %31, align 8, !tbaa !41
  %361 = add nsw i32 %360, 1
  %362 = sext i32 %361 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  store i32 -1, ptr %22, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %359, i64 noundef %362, ptr noundef nonnull align 4 dereferenceable(4) %22)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  %363 = load i32, ptr %25, align 8, !tbaa !5
  %364 = getelementptr inbounds i8, ptr %0, i64 720
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %364) #6
  %365 = getelementptr inbounds i8, ptr %0, i64 744
  call void @_ZNSt6vectorIdSaIdEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %365) #6
  %366 = getelementptr inbounds i8, ptr %0, i64 648
  %367 = sext i32 %363 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  store i32 0, ptr %23, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %366, i64 noundef %367, ptr noundef nonnull align 4 dereferenceable(4) %23)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  %368 = getelementptr inbounds i8, ptr %0, i64 672
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  store i32 0, ptr %24, align 4, !tbaa !40
  call void @_ZNSt6vectorIiSaIiEE6assignEmRKi(ptr noundef nonnull align 8 dereferenceable(24) %368, i64 noundef %367, ptr noundef nonnull align 4 dereferenceable(4) %24)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  %369 = load i32, ptr %34, align 8, !tbaa !42
  %370 = icmp sgt i32 %369, 0
  br i1 %370, label %.lr.ph263, label %._crit_edge264

.lr.ph263:                                        ; preds = %._crit_edge254
  %371 = getelementptr inbounds i8, ptr %0, i64 600
  %372 = getelementptr inbounds i8, ptr %0, i64 624
  %373 = getelementptr inbounds i8, ptr %0, i64 696
  br label %407

374:                                              ; preds = %.lr.ph253, %387
  %indvars.iv307 = phi i64 [ 0, %.lr.ph253 ], [ %indvars.iv.next308, %387 ]
  %.0170250 = phi i32 [ 0, %.lr.ph253 ], [ %.1171, %387 ]
  %375 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %indvars.iv307) #6
  %376 = load i32, ptr %375, align 4, !tbaa !40
  %377 = icmp sgt i32 %376, 0
  br i1 %377, label %378, label %387

378:                                              ; preds = %374
  %379 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %indvars.iv307) #6
  store i32 %.0170250, ptr %379, align 4, !tbaa !40
  %380 = shl nuw nsw i32 %376, 1
  %381 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %356, i64 noundef %indvars.iv307) #6
  store i32 %380, ptr %381, align 4, !tbaa !40
  %382 = add nuw nsw i32 %380, %.0170250
  %383 = trunc nuw nsw i64 %indvars.iv307 to i32
  call void @_ZN7HFactor8rlinkAddEii(ptr noundef nonnull align 8 dereferenceable(1912) %0, i32 noundef %383, i32 noundef %376)
  %384 = add nuw nsw i32 %376, 1
  %385 = load i32, ptr %352, align 4, !tbaa !60
  %386 = add nsw i32 %384, %385
  store i32 %386, ptr %352, align 4, !tbaa !60
  br label %387

387:                                              ; preds = %378, %374
  %.1171 = phi i32 [ %382, %378 ], [ %.0170250, %374 ]
  %indvars.iv.next308 = add nuw nsw i64 %indvars.iv307, 1
  %388 = load i32, ptr %31, align 8, !tbaa !41
  %389 = sext i32 %388 to i64
  %390 = icmp slt i64 %indvars.iv.next308, %389
  br i1 %390, label %374, label %._crit_edge254, !llvm.loop !61

._crit_edge264:                                   ; preds = %._crit_edge259, %._crit_edge254
  %.0166.lcssa = phi i32 [ 0, %._crit_edge254 ], [ %426, %._crit_edge259 ]
  %.lcssa = phi i32 [ %369, %._crit_edge254 ], [ %436, %._crit_edge259 ]
  %391 = load i32, ptr %31, align 8, !tbaa !41
  %392 = add i32 %.lcssa, %.0166.lcssa
  %393 = add i32 %392, %391
  %394 = mul nsw i32 %393, 40
  %395 = mul nsw i32 %.0170.lcssa, 20
  %396 = add nsw i32 %394, %395
  %397 = sitofp i32 %396 to double
  %398 = load double, ptr %68, align 8, !tbaa !44
  %399 = fadd double %398, %397
  store double %399, ptr %68, align 8, !tbaa !44
  %400 = getelementptr inbounds i8, ptr %0, i64 192
  store i32 %.lcssa, ptr %400, align 8, !tbaa !62
  %401 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #6
  %402 = trunc i64 %401 to i32
  %403 = load i32, ptr %25, align 8, !tbaa !5
  %404 = load i32, ptr %34, align 8, !tbaa !42
  %405 = sub nsw i32 %403, %404
  %406 = icmp eq i32 %405, %402
  br i1 %406, label %455, label %454

407:                                              ; preds = %.lr.ph263, %._crit_edge259
  %indvars.iv313 = phi i64 [ 0, %.lr.ph263 ], [ %indvars.iv.next314, %._crit_edge259 ]
  %.0166260 = phi i32 [ 0, %.lr.ph263 ], [ %426, %._crit_edge259 ]
  %408 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %36, i64 noundef %indvars.iv313) #6
  %409 = load i32, ptr %408, align 4, !tbaa !40
  %410 = sext i32 %409 to i64
  %411 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %410) #6
  %412 = load i32, ptr %411, align 4, !tbaa !40
  %413 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %371, i64 noundef %410) #6
  store i32 %412, ptr %413, align 4, !tbaa !40
  %414 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %372, i64 noundef %410) #6
  store i32 %.0166260, ptr %414, align 4, !tbaa !40
  %415 = add nsw i32 %409, 1
  %416 = sext i32 %415 to i64
  %417 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %416) #6
  %418 = load i32, ptr %417, align 4, !tbaa !40
  %419 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %410) #6
  %420 = load i32, ptr %419, align 4, !tbaa !40
  %421 = sub nsw i32 %418, %420
  %422 = shl nsw i32 %421, 1
  %423 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %373, i64 noundef %410) #6
  store i32 %422, ptr %423, align 4, !tbaa !40
  %424 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %373, i64 noundef %410) #6
  %425 = load i32, ptr %424, align 4, !tbaa !40
  %426 = add nsw i32 %425, %.0166260
  %427 = sext i32 %426 to i64
  call void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %364, i64 noundef %427)
  call void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %365, i64 noundef %427)
  %428 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %410) #6
  %429 = load i32, ptr %428, align 4, !tbaa !40
  %430 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %416) #6
  %431 = load i32, ptr %430, align 4, !tbaa !40
  %432 = icmp slt i32 %429, %431
  br i1 %432, label %.lr.ph258.preheader, label %._crit_edge259

.lr.ph258.preheader:                              ; preds = %407
  %433 = sext i32 %429 to i64
  br label %.lr.ph258

._crit_edge259:                                   ; preds = %449, %407
  call void @_ZN7HFactor9colFixMaxEi(ptr noundef nonnull align 8 dereferenceable(1912) %0, i32 noundef %409)
  %434 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %366, i64 noundef %410) #6
  %435 = load i32, ptr %434, align 4, !tbaa !40
  call void @_ZN7HFactor8clinkAddEii(ptr noundef nonnull align 8 dereferenceable(1912) %0, i32 noundef %409, i32 noundef %435)
  %indvars.iv.next314 = add nuw nsw i64 %indvars.iv313, 1
  %436 = load i32, ptr %34, align 8, !tbaa !42
  %437 = sext i32 %436 to i64
  %438 = icmp slt i64 %indvars.iv.next314, %437
  br i1 %438, label %407, label %._crit_edge264, !llvm.loop !63

.lr.ph258:                                        ; preds = %.lr.ph258.preheader, %449
  %indvars.iv310 = phi i64 [ %433, %.lr.ph258.preheader ], [ %indvars.iv.next311, %449 ]
  %439 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %80, i64 noundef %indvars.iv310) #6
  %440 = load i32, ptr %439, align 4, !tbaa !40
  %441 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %indvars.iv310) #6
  %442 = load double, ptr %441, align 8, !tbaa !48
  %443 = sext i32 %440 to i64
  %444 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %443) #6
  %445 = load i32, ptr %444, align 4, !tbaa !40
  %446 = icmp sgt i32 %445, 0
  br i1 %446, label %447, label %448

447:                                              ; preds = %.lr.ph258
  call void @_ZN7HFactor9colInsertEiid(ptr noundef nonnull align 8 dereferenceable(1912) %0, i32 noundef %409, i32 noundef %440, double noundef %442)
  call void @_ZN7HFactor9rowInsertEii(ptr noundef nonnull align 8 dereferenceable(1912) %0, i32 noundef %409, i32 noundef %440)
  br label %449

448:                                              ; preds = %.lr.ph258
  call void @_ZN7HFactor9colStoreNEiid(ptr noundef nonnull align 8 dereferenceable(1912) %0, i32 noundef %409, i32 noundef %440, double noundef %442)
  br label %449

449:                                              ; preds = %448, %447
  %indvars.iv.next311 = add nsw i64 %indvars.iv310, 1
  %450 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %416) #6
  %451 = load i32, ptr %450, align 4, !tbaa !40
  %452 = sext i32 %451 to i64
  %453 = icmp slt i64 %indvars.iv.next311, %452
  br i1 %453, label %.lr.ph258, label %._crit_edge259, !llvm.loop !64

454:                                              ; preds = %._crit_edge264
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.52, i32 noundef 868, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor11buildSimpleEv) #7
  unreachable

455:                                              ; preds = %._crit_edge264
  ret void
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7HFactor7luClearEv(ptr noundef nonnull align 8 dereferenceable(1912)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor8rlinkAddEii(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef, i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor9colInsertEiid(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef, i32 noundef, double noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor9rowInsertEii(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef, i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor9colStoreNEiid(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef, i32 noundef, double noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor9colFixMaxEi(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN7HFactor8clinkAddEii(ptr noundef nonnull align 8 dereferenceable(1912), i32 noundef, i32 noundef) local_unnamed_addr #1 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nounwind }
attributes #7 = { 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, !10, i64 208}
!6 = !{!"_ZTS7HFactor", !7, i64 0, !7, i64 8, !10, i64 16, !11, i64 24, !11, i64 48, !11, i64 72, !16, i64 96, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !7, i64 216, !17, i64 224, !15, i64 232, !15, i64 240, !15, i64 248, !15, i64 256, !7, i64 264, !7, i64 272, !10, i64 280, !7, i64 288, !22, i64 296, !28, i64 304, !17, i64 400, !17, i64 401, !10, i64 404, !10, i64 408, !15, i64 416, !10, i64 424, !11, i64 432, !31, i64 456, !11, i64 480, !11, i64 504, !11, i64 528, !31, i64 552, !11, i64 576, !11, i64 600, !11, i64 624, !11, i64 648, !11, i64 672, !11, i64 696, !11, i64 720, !31, i64 744, !31, i64 768, !11, i64 792, !11, i64 816, !11, i64 840, !11, i64 864, !11, i64 888, !11, i64 912, !35, i64 936, !31, i64 960, !11, i64 984, !11, i64 1008, !11, i64 1032, !11, i64 1056, !11, i64 1080, !11, i64 1104, !11, i64 1128, !11, i64 1152, !11, i64 1176, !11, i64 1200, !31, i64 1224, !11, i64 1248, !11, i64 1272, !31, i64 1296, !11, i64 1320, !11, i64 1344, !31, i64 1368, !10, i64 1392, !10, i64 1396, !11, i64 1400, !11, i64 1424, !11, i64 1448, !31, i64 1472, !11, i64 1496, !11, i64 1520, !11, i64 1544, !11, i64 1568, !31, i64 1592, !31, i64 1616, !11, i64 1640, !11, i64 1664, !11, i64 1688, !31, i64 1712, !39, i64 1736}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!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", !15, i64 0, !15, i64 8, !15, i64 16}
!15 = !{!"any pointer", !8, i64 0}
!16 = !{!"_ZTS12RefactorInfo", !17, i64 0, !11, i64 8, !11, i64 32, !18, i64 56, !7, i64 80}
!17 = !{!"bool", !8, i64 0}
!18 = !{!"_ZTSSt6vectorIaSaIaEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIaSaIaEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIaSaIaEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIaSaIaEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!22 = !{!"_ZTSSt10unique_ptrIN7HFactor7LogDataESt14default_deleteIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt15__uniq_ptr_dataIN7HFactor7LogDataESt14default_deleteIS1_ELb1ELb1EE", !24, i64 0}
!24 = !{!"_ZTSSt15__uniq_ptr_implIN7HFactor7LogDataESt14default_deleteIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt5tupleIJPN7HFactor7LogDataESt14default_deleteIS1_EEE", !26, i64 0}
!26 = !{!"_ZTSSt11_Tuple_implILm0EJPN7HFactor7LogDataESt14default_deleteIS1_EEE", !27, i64 0}
!27 = !{!"_ZTSSt10_Head_baseILm0EPN7HFactor7LogDataELb0EE", !15, i64 0}
!28 = !{!"_ZTS15HighsLogOptions", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !29, i64 48, !15, i64 80, !17, i64 88}
!29 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !30, i64 0, !15, i64 24}
!30 = !{!"_ZTSSt14_Function_base", !8, i64 0, !15, i64 16}
!31 = !{!"_ZTSSt6vectorIdSaIdEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!35 = !{!"_ZTSSt6vectorIcSaIcEE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!39 = !{!"_ZTS11HVectorBaseIdE", !10, i64 0, !10, i64 4, !11, i64 8, !31, i64 32, !7, i64 56, !35, i64 64, !11, i64 88, !15, i64 112, !17, i64 120, !10, i64 124, !11, i64 128, !31, i64 152}
!40 = !{!10, !10, i64 0}
!41 = !{!6, !10, i64 200}
!42 = !{!6, !10, i64 424}
!43 = !{!6, !10, i64 184}
!44 = !{!6, !7, i64 8}
!45 = !{!6, !15, i64 256}
!46 = !{!8, !8, i64 0}
!47 = !{!6, !10, i64 204}
!48 = !{!7, !7, i64 0}
!49 = !{!6, !15, i64 232}
!50 = !{!6, !15, i64 248}
!51 = !{!6, !15, i64 240}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.mustprogress"}
!54 = distinct !{!54, !53}
!55 = distinct !{!55, !53}
!56 = distinct !{!56, !53}
!57 = distinct !{!57, !53}
!58 = distinct !{!58, !53}
!59 = distinct !{!59, !53}
!60 = !{!6, !10, i64 196}
!61 = distinct !{!61, !53}
!62 = !{!6, !10, i64 192}
!63 = distinct !{!63, !53}
!64 = distinct !{!64, !53}


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