; LLVM IR from dcajasn/Riskfolio-Lib :: lib/spectra-1.0.1/benchmark (F77)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.Eigen::Matrix.3" = type { %"class.Eigen::PlainObjectBase.4" }
%"class.Eigen::PlainObjectBase.4" = type { %"class.Eigen::DenseStorage.11" }
%"class.Eigen::DenseStorage.11" = type { ptr, i64 }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { ptr, i64, i64 }
%"class.Eigen::Map" = type { %"class.Eigen::MapBase.base.19", [7 x i8] }
%"class.Eigen::MapBase.base.19" = type { %"class.Eigen::MapBase.base" }
%"class.Eigen::MapBase.base" = type <{ ptr, %"class.Eigen::internal::variable_if_dynamic", i8 }>
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"class.Eigen::Stride" = type { [2 x i8] }
%"class.Eigen::Product" = type { %"class.Eigen::SelfAdjointView", %"class.Eigen::Map" }
%"class.Eigen::SelfAdjointView" = type { ptr }
%"class.Eigen::NoAlias" = type { ptr }
%"class.Eigen::CwiseBinaryOp" = type <{ %"class.Eigen::Product.29", %"class.Eigen::Product.44", [8 x i8] }>
%"class.Eigen::Product.29" = type { ptr, %"class.Eigen::Block" }
%"class.Eigen::Block" = type { %"class.Eigen::BlockImpl" }
%"class.Eigen::BlockImpl" = type { %"class.Eigen::internal::BlockImpl_dense" }
%"class.Eigen::internal::BlockImpl_dense" = type { %"class.Eigen::MapBase.36", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase.36" = type { %"class.Eigen::MapBase.37" }
%"class.Eigen::MapBase.37" = type { ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic" }
%"class.Eigen::Product.44" = type { %"class.Eigen::Block", %"class.Eigen::DiagonalWrapper" }
%"class.Eigen::DiagonalWrapper" = type { ptr }
%"class.Eigen::CwiseUnaryOp" = type <{ ptr, [8 x i8] }>

@__const._Z12eigs_sym_F77RN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEERNS0_IdLin1ELi1ELi0ELin1ELi1EEEiiRdS5_Ri.which = external hidden unnamed_addr constant [3 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [17 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [15 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z12eigs_sym_F77RN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEERNS0_IdLin1ELi1ELi0ELin1ELi1EEEiiRdS5_Ri(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 4 dereferenceable(4) %6) #0 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca i32, align 4
  %18 = alloca i8, align 1
  %19 = alloca i32, align 4
  %20 = alloca [3 x i8], align 1
  %21 = alloca i32, align 4
  %22 = alloca double, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca %"class.Eigen::Matrix.3", align 8
  %26 = alloca %"class.Eigen::Matrix", align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca %"class.Eigen::Map", align 8
  %38 = alloca %"class.Eigen::Stride", align 1
  %39 = alloca %"class.Eigen::Map", align 8
  %40 = alloca %"class.Eigen::Stride", align 1
  %41 = alloca %"class.Eigen::Product", align 8
  %42 = alloca %"class.Eigen::SelfAdjointView", align 8
  %43 = alloca %"class.Eigen::NoAlias", align 8
  %44 = alloca i32, align 4
  %45 = alloca i8, align 1
  %46 = alloca i8, align 1
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca i32, align 4
  %50 = alloca double, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca %"class.Eigen::Matrix", align 8
  %55 = alloca %"class.Eigen::CwiseBinaryOp", align 8
  %56 = alloca %"class.Eigen::Product.29", align 8
  %57 = alloca %"class.Eigen::Block", align 8
  %58 = alloca %"class.Eigen::Product.44", align 8
  %59 = alloca %"class.Eigen::Block", align 8
  %60 = alloca %"class.Eigen::DiagonalWrapper", align 8
  %61 = alloca %"class.Eigen::CwiseUnaryOp", align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store i32 %2, ptr %10, align 4, !tbaa !9
  store i32 %3, ptr %11, align 4, !tbaa !9
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  %62 = load ptr, ptr %13, align 8, !tbaa !5
  store double -1.000000e+00, ptr %62, align 8, !tbaa !11
  %63 = call noundef double @_Z13get_wall_timev()
  store double %63, ptr %15, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #9
  store i8 73, ptr %18, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  %64 = load ptr, ptr %8, align 8, !tbaa !5
  %65 = call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %64) #9
  %66 = trunc i64 %65 to i32
  store i32 %66, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 3, ptr %20) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %20, ptr align 1 @__const._Z12eigs_sym_F77RN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEERNS0_IdLin1ELi1ELi0ELin1ELi1EEEiiRdS5_Ri.which, i64 3, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  %67 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %67, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  store double 1.000000e-10, ptr %22, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %68 = load i32, ptr %19, align 4, !tbaa !9
  %69 = sext i32 %68 to i64
  %70 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %69, i64 8)
  %71 = extractvalue { i64, i1 } %70, 1
  %72 = extractvalue { i64, i1 } %70, 0
  %73 = select i1 %71, i64 -1, i64 %72
  %74 = call noalias noundef nonnull ptr @_Znam(i64 noundef %73) #10
  call void @llvm.memset.p0.i64(ptr align 8 %74, i8 0, i64 %73, i1 false)
  store ptr %74, ptr %23, align 8, !tbaa !5
  %75 = load ptr, ptr %9, align 8, !tbaa !5
  %76 = call noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %75)
  %77 = load ptr, ptr %9, align 8, !tbaa !5
  %78 = call noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %77)
  %79 = load i32, ptr %19, align 4, !tbaa !9
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds double, ptr %78, i64 %80
  %82 = load ptr, ptr %23, align 8, !tbaa !5
  %83 = call noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %76, ptr noundef %81, ptr noundef %82)
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %84 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %84, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #9
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2IiEERKT_(ptr noundef nonnull align 8 dereferenceable(16) %25, ptr noundef nonnull align 4 dereferenceable(4) %21)
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #9
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %85 unwind label %189

85:                                               ; preds = %7
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %86 = invoke noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %87 unwind label %193

87:                                               ; preds = %85
  store ptr %86, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  %88 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %88, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %89 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 44) #10
          to label %90 unwind label %197

90:                                               ; preds = %87
  call void @llvm.memset.p0.i64(ptr align 4 %89, i8 0, i64 44, i1 false)
  store ptr %89, ptr %31, align 8, !tbaa !5
  %91 = load ptr, ptr %31, align 8, !tbaa !5
  %92 = getelementptr inbounds i32, ptr %91, i64 0
  store i32 1, ptr %92, align 4, !tbaa !9
  %93 = load ptr, ptr %31, align 8, !tbaa !5
  %94 = getelementptr inbounds i32, ptr %93, i64 2
  store i32 1000, ptr %94, align 4, !tbaa !9
  %95 = load ptr, ptr %31, align 8, !tbaa !5
  %96 = getelementptr inbounds i32, ptr %95, i64 6
  store i32 1, ptr %96, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %97 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 44) #10
          to label %98 unwind label %201

98:                                               ; preds = %90
  call void @llvm.memset.p0.i64(ptr align 4 %97, i8 0, i64 44, i1 false)
  store ptr %97, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %99 = load i32, ptr %19, align 4, !tbaa !9
  %100 = mul nsw i32 3, %99
  %101 = sext i32 %100 to i64
  %102 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %101, i64 8)
  %103 = extractvalue { i64, i1 } %102, 1
  %104 = extractvalue { i64, i1 } %102, 0
  %105 = select i1 %103, i64 -1, i64 %104
  %106 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %105) #10
          to label %107 unwind label %205

107:                                              ; preds = %98
  call void @llvm.memset.p0.i64(ptr align 8 %106, i8 0, i64 %105, i1 false)
  store ptr %106, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #9
  %108 = load i32, ptr %24, align 4, !tbaa !9
  %109 = load i32, ptr %24, align 4, !tbaa !9
  %110 = add nsw i32 %109, 8
  %111 = mul nsw i32 %108, %110
  store i32 %111, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %112 = load i32, ptr %34, align 4, !tbaa !9
  %113 = sext i32 %112 to i64
  %114 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %113, i64 8)
  %115 = extractvalue { i64, i1 } %114, 1
  %116 = extractvalue { i64, i1 } %114, 0
  %117 = select i1 %115, i64 -1, i64 %116
  %118 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %117) #10
          to label %119 unwind label %209

119:                                              ; preds = %107
  call void @llvm.memset.p0.i64(ptr align 8 %118, i8 0, i64 %117, i1 false)
  store ptr %118, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  store i32 1, ptr %36, align 4, !tbaa !9
  %120 = load i8, ptr %18, align 1, !tbaa !13
  %121 = load i32, ptr %19, align 4, !tbaa !9
  %122 = getelementptr inbounds [3 x i8], ptr %20, i64 0, i64 0
  %123 = load i32, ptr %21, align 4, !tbaa !9
  %124 = load ptr, ptr %23, align 8, !tbaa !5
  %125 = load i32, ptr %24, align 4, !tbaa !9
  %126 = load ptr, ptr %29, align 8, !tbaa !5
  %127 = load i32, ptr %30, align 4, !tbaa !9
  %128 = load ptr, ptr %31, align 8, !tbaa !5
  %129 = load ptr, ptr %32, align 8, !tbaa !5
  %130 = load ptr, ptr %33, align 8, !tbaa !5
  %131 = load ptr, ptr %35, align 8, !tbaa !5
  %132 = load i32, ptr %34, align 4, !tbaa !9
  invoke void @_Z5saupdRiciPciRdPdiS2_iPiS3_S2_S2_iS_(ptr noundef nonnull align 4 dereferenceable(4) %17, i8 noundef signext %120, i32 noundef %121, ptr noundef %122, i32 noundef %123, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %124, i32 noundef %125, ptr noundef %126, i32 noundef %127, ptr noundef %128, ptr noundef %129, ptr noundef %130, ptr noundef %131, i32 noundef %132, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %133 unwind label %213

133:                                              ; preds = %119
  br label %134

134:                                              ; preds = %188, %133
  %135 = load i32, ptr %17, align 4, !tbaa !9
  %136 = icmp eq i32 %135, -1
  br i1 %136, label %140, label %137

137:                                              ; preds = %134
  %138 = load i32, ptr %17, align 4, !tbaa !9
  %139 = icmp eq i32 %138, 1
  br label %140

140:                                              ; preds = %137, %134
  %141 = phi i1 [ true, %134 ], [ %139, %137 ]
  br i1 %141, label %142, label %240

142:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 24, ptr %37) #9
  %143 = load ptr, ptr %33, align 8, !tbaa !5
  %144 = load ptr, ptr %32, align 8, !tbaa !5
  %145 = getelementptr inbounds i32, ptr %144, i64 0
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = sub nsw i32 %146, 1
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds double, ptr %143, i64 %148
  %150 = load i32, ptr %19, align 4, !tbaa !9
  %151 = sext i32 %150 to i64
  call void @llvm.lifetime.start.p0(i64 2, ptr %38) #9
  invoke void @_ZN5Eigen6StrideILi0ELi0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(2) %38)
          to label %152 unwind label %217

152:                                              ; preds = %142
  invoke void @_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEC2EPdlRKS4_(ptr noundef nonnull align 8 dereferenceable(19) %37, ptr noundef %149, i64 noundef %151, ptr noundef nonnull align 1 dereferenceable(2) %38)
          to label %153 unwind label %217

153:                                              ; preds = %152
  call void @llvm.lifetime.end.p0(i64 2, ptr %38) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #9
  %154 = load ptr, ptr %33, align 8, !tbaa !5
  %155 = load ptr, ptr %32, align 8, !tbaa !5
  %156 = getelementptr inbounds i32, ptr %155, i64 1
  %157 = load i32, ptr %156, align 4, !tbaa !9
  %158 = sub nsw i32 %157, 1
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds double, ptr %154, i64 %159
  %161 = load i32, ptr %19, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  call void @llvm.lifetime.start.p0(i64 2, ptr %40) #9
  invoke void @_ZN5Eigen6StrideILi0ELi0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(2) %40)
          to label %163 unwind label %221

163:                                              ; preds = %153
  invoke void @_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEC2EPdlRKS4_(ptr noundef nonnull align 8 dereferenceable(19) %39, ptr noundef %160, i64 noundef %162, ptr noundef nonnull align 1 dereferenceable(2) %40)
          to label %164 unwind label %221

164:                                              ; preds = %163
  call void @llvm.lifetime.end.p0(i64 2, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %165 = load ptr, ptr %8, align 8, !tbaa !5
  %166 = invoke ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE15selfadjointViewILj1EEENS3_25SelfAdjointViewReturnTypeIXT_EE4TypeEv(ptr noundef nonnull align 1 dereferenceable(1) %165)
          to label %167 unwind label %225

167:                                              ; preds = %164
  %168 = getelementptr inbounds %"class.Eigen::SelfAdjointView", ptr %42, i32 0, i32 0
  store ptr %166, ptr %168, align 8
  invoke void @_ZNK5Eigen15SelfAdjointViewINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELj1EEmlINS_3MapINS1_IdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEKNS_7ProductIS3_T_Li0EEERKNS_10MatrixBaseISB_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product") align 8 %41, ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %169 unwind label %225

169:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %170 = invoke ptr @_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %171 unwind label %229

171:                                              ; preds = %169
  %172 = getelementptr inbounds %"class.Eigen::NoAlias", ptr %43, i32 0, i32 0
  store ptr %170, ptr %172, align 8
  %173 = invoke noundef nonnull align 8 dereferenceable(19) ptr @_ZN5Eigen7NoAliasINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEENS_10MatrixBaseEEaSINS_7ProductINS_15SelfAdjointViewINS2_IdLin1ELin1ELi0ELin1ELin1EEELj1EEES6_Li0EEEEERS6_RKNS7_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %174 unwind label %229

174:                                              ; preds = %171
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #9
  %175 = load i8, ptr %18, align 1, !tbaa !13
  %176 = load i32, ptr %19, align 4, !tbaa !9
  %177 = getelementptr inbounds [3 x i8], ptr %20, i64 0, i64 0
  %178 = load i32, ptr %21, align 4, !tbaa !9
  %179 = load ptr, ptr %23, align 8, !tbaa !5
  %180 = load i32, ptr %24, align 4, !tbaa !9
  %181 = load ptr, ptr %29, align 8, !tbaa !5
  %182 = load i32, ptr %30, align 4, !tbaa !9
  %183 = load ptr, ptr %31, align 8, !tbaa !5
  %184 = load ptr, ptr %32, align 8, !tbaa !5
  %185 = load ptr, ptr %33, align 8, !tbaa !5
  %186 = load ptr, ptr %35, align 8, !tbaa !5
  %187 = load i32, ptr %34, align 4, !tbaa !9
  invoke void @_Z5saupdRiciPciRdPdiS2_iPiS3_S2_S2_iS_(ptr noundef nonnull align 4 dereferenceable(4) %17, i8 noundef signext %175, i32 noundef %176, ptr noundef %177, i32 noundef %178, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %179, i32 noundef %180, ptr noundef %181, i32 noundef %182, ptr noundef %183, ptr noundef %184, ptr noundef %185, ptr noundef %186, i32 noundef %187, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %188 unwind label %234

188:                                              ; preds = %174
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #9
  br label %134, !llvm.loop !14

189:                                              ; preds = %7
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %27, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %28, align 4
  br label %415

193:                                              ; preds = %85
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %27, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %28, align 4
  br label %414

197:                                              ; preds = %87
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %27, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %28, align 4
  br label %413

201:                                              ; preds = %90
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %27, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %28, align 4
  br label %412

205:                                              ; preds = %98
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %27, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %28, align 4
  br label %411

209:                                              ; preds = %107
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %27, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %28, align 4
  br label %410

213:                                              ; preds = %275, %273, %271, %245, %243, %119
  %214 = landingpad { ptr, i32 }
          cleanup
  %215 = extractvalue { ptr, i32 } %214, 0
  store ptr %215, ptr %27, align 8
  %216 = extractvalue { ptr, i32 } %214, 1
  store i32 %216, ptr %28, align 4
  br label %409

217:                                              ; preds = %152, %142
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %27, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %38) #9
  br label %239

221:                                              ; preds = %163, %153
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %27, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 2, ptr %40) #9
  br label %238

225:                                              ; preds = %167, %164
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %27, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %28, align 4
  br label %233

229:                                              ; preds = %171, %169
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %27, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %233

233:                                              ; preds = %229, %225
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #9
  br label %238

234:                                              ; preds = %174
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %27, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %28, align 4
  br label %238

238:                                              ; preds = %234, %233, %221
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #9
  br label %239

239:                                              ; preds = %238, %217
  call void @llvm.lifetime.end.p0(i64 24, ptr %37) #9
  br label %409

240:                                              ; preds = %140
  %241 = load i32, ptr %36, align 4, !tbaa !9
  %242 = icmp sgt i32 %241, 0
  br i1 %242, label %243, label %248

243:                                              ; preds = %240
  %244 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str)
          to label %245 unwind label %213

245:                                              ; preds = %243
  %246 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %247 unwind label %213

247:                                              ; preds = %245
  br label %248

248:                                              ; preds = %247, %240
  %249 = load i32, ptr %36, align 4, !tbaa !9
  %250 = icmp slt i32 %249, 0
  br i1 %250, label %251, label %283

251:                                              ; preds = %248
  %252 = load ptr, ptr %35, align 8, !tbaa !5
  %253 = icmp eq ptr %252, null
  br i1 %253, label %255, label %254

254:                                              ; preds = %251
  call void @_ZdaPv(ptr noundef %252) #11
  br label %255

255:                                              ; preds = %254, %251
  %256 = load ptr, ptr %33, align 8, !tbaa !5
  %257 = icmp eq ptr %256, null
  br i1 %257, label %259, label %258

258:                                              ; preds = %255
  call void @_ZdaPv(ptr noundef %256) #11
  br label %259

259:                                              ; preds = %258, %255
  %260 = load ptr, ptr %32, align 8, !tbaa !5
  %261 = icmp eq ptr %260, null
  br i1 %261, label %263, label %262

262:                                              ; preds = %259
  call void @_ZdaPv(ptr noundef %260) #11
  br label %263

263:                                              ; preds = %262, %259
  %264 = load ptr, ptr %31, align 8, !tbaa !5
  %265 = icmp eq ptr %264, null
  br i1 %265, label %267, label %266

266:                                              ; preds = %263
  call void @_ZdaPv(ptr noundef %264) #11
  br label %267

267:                                              ; preds = %266, %263
  %268 = load ptr, ptr %23, align 8, !tbaa !5
  %269 = icmp eq ptr %268, null
  br i1 %269, label %271, label %270

270:                                              ; preds = %267
  call void @_ZdaPv(ptr noundef %268) #11
  br label %271

271:                                              ; preds = %270, %267
  %272 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.4)
          to label %273 unwind label %213

273:                                              ; preds = %271
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %272, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %275 unwind label %213

275:                                              ; preds = %273
  %276 = invoke noundef double @_Z13get_wall_timev()
          to label %277 unwind label %213

277:                                              ; preds = %275
  store double %276, ptr %16, align 8, !tbaa !11
  %278 = load double, ptr %16, align 8, !tbaa !11
  %279 = load double, ptr %15, align 8, !tbaa !11
  %280 = fsub double %278, %279
  %281 = fmul double %280, 1.000000e+03
  %282 = load ptr, ptr %12, align 8, !tbaa !5
  store double %281, ptr %282, align 8, !tbaa !11
  store i32 1, ptr %44, align 4
  br label %385

283:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #9
  store i8 1, ptr %45, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #9
  store i8 65, ptr %46, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %284 = invoke noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %25)
          to label %285 unwind label %350

285:                                              ; preds = %283
  store ptr %284, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #9
  %286 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %286, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  %287 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %287, ptr %49, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #9
  store i32 0, ptr %51, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  store i32 0, ptr %52, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  store i32 0, ptr %53, align 4, !tbaa !9
  %288 = load i8, ptr %45, align 1, !tbaa !16, !range !18, !noundef !19
  %289 = trunc i8 %288 to i1
  %290 = load i8, ptr %46, align 1, !tbaa !13
  %291 = load ptr, ptr %47, align 8, !tbaa !5
  %292 = load ptr, ptr %48, align 8, !tbaa !5
  %293 = load i32, ptr %49, align 4, !tbaa !9
  %294 = load double, ptr %50, align 8, !tbaa !11
  %295 = load i8, ptr %18, align 1, !tbaa !13
  %296 = load i32, ptr %19, align 4, !tbaa !9
  %297 = getelementptr inbounds [3 x i8], ptr %20, i64 0, i64 0
  %298 = load i32, ptr %21, align 4, !tbaa !9
  %299 = load double, ptr %22, align 8, !tbaa !11
  %300 = load ptr, ptr %23, align 8, !tbaa !5
  %301 = load i32, ptr %24, align 4, !tbaa !9
  %302 = load ptr, ptr %29, align 8, !tbaa !5
  %303 = load i32, ptr %30, align 4, !tbaa !9
  %304 = load ptr, ptr %31, align 8, !tbaa !5
  %305 = load ptr, ptr %32, align 8, !tbaa !5
  %306 = load ptr, ptr %33, align 8, !tbaa !5
  %307 = load ptr, ptr %35, align 8, !tbaa !5
  %308 = load i32, ptr %34, align 4, !tbaa !9
  invoke void @_Z5seupdbcPdS_idciPcidS_iS_iPiS1_S_S_iRi(i1 noundef zeroext %289, i8 noundef signext %290, ptr noundef %291, ptr noundef %292, i32 noundef %293, double noundef %294, i8 noundef signext %295, i32 noundef %296, ptr noundef %297, i32 noundef %298, double noundef %299, ptr noundef %300, i32 noundef %301, ptr noundef %302, i32 noundef %303, ptr noundef %304, ptr noundef %305, ptr noundef %306, ptr noundef %307, i32 noundef %308, ptr noundef nonnull align 4 dereferenceable(4) %51)
          to label %309 unwind label %354

309:                                              ; preds = %285
  %310 = load ptr, ptr %31, align 8, !tbaa !5
  %311 = getelementptr inbounds i32, ptr %310, i64 4
  %312 = load i32, ptr %311, align 4, !tbaa !9
  store i32 %312, ptr %52, align 4, !tbaa !9
  %313 = load ptr, ptr %31, align 8, !tbaa !5
  %314 = getelementptr inbounds i32, ptr %313, i64 8
  %315 = load i32, ptr %314, align 4, !tbaa !9
  store i32 %315, ptr %53, align 4, !tbaa !9
  %316 = load ptr, ptr %35, align 8, !tbaa !5
  %317 = icmp eq ptr %316, null
  br i1 %317, label %319, label %318

318:                                              ; preds = %309
  call void @_ZdaPv(ptr noundef %316) #11
  br label %319

319:                                              ; preds = %318, %309
  %320 = load ptr, ptr %33, align 8, !tbaa !5
  %321 = icmp eq ptr %320, null
  br i1 %321, label %323, label %322

322:                                              ; preds = %319
  call void @_ZdaPv(ptr noundef %320) #11
  br label %323

323:                                              ; preds = %322, %319
  %324 = load ptr, ptr %32, align 8, !tbaa !5
  %325 = icmp eq ptr %324, null
  br i1 %325, label %327, label %326

326:                                              ; preds = %323
  call void @_ZdaPv(ptr noundef %324) #11
  br label %327

327:                                              ; preds = %326, %323
  %328 = load ptr, ptr %31, align 8, !tbaa !5
  %329 = icmp eq ptr %328, null
  br i1 %329, label %331, label %330

330:                                              ; preds = %327
  call void @_ZdaPv(ptr noundef %328) #11
  br label %331

331:                                              ; preds = %330, %327
  %332 = load ptr, ptr %23, align 8, !tbaa !5
  %333 = icmp eq ptr %332, null
  br i1 %333, label %335, label %334

334:                                              ; preds = %331
  call void @_ZdaPv(ptr noundef %332) #11
  br label %335

335:                                              ; preds = %334, %331
  %336 = load i32, ptr %51, align 4, !tbaa !9
  %337 = icmp slt i32 %336, 0
  br i1 %337, label %338, label %358

338:                                              ; preds = %335
  %339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.4)
          to label %340 unwind label %354

340:                                              ; preds = %338
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %342 unwind label %354

342:                                              ; preds = %340
  %343 = invoke noundef double @_Z13get_wall_timev()
          to label %344 unwind label %354

344:                                              ; preds = %342
  store double %343, ptr %16, align 8, !tbaa !11
  %345 = load double, ptr %16, align 8, !tbaa !11
  %346 = load double, ptr %15, align 8, !tbaa !11
  %347 = fsub double %345, %346
  %348 = fmul double %347, 1.000000e+03
  %349 = load ptr, ptr %12, align 8, !tbaa !5
  store double %348, ptr %349, align 8, !tbaa !11
  store i32 1, ptr %44, align 4
  br label %384

350:                                              ; preds = %283
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %27, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %28, align 4
  br label %408

354:                                              ; preds = %358, %342, %340, %338, %285
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %27, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %28, align 4
  br label %407

358:                                              ; preds = %335
  %359 = invoke noundef double @_Z13get_wall_timev()
          to label %360 unwind label %354

360:                                              ; preds = %358
  store double %359, ptr %16, align 8, !tbaa !11
  %361 = load double, ptr %16, align 8, !tbaa !11
  %362 = load double, ptr %15, align 8, !tbaa !11
  %363 = fsub double %361, %362
  %364 = fmul double %363, 1.000000e+03
  %365 = load ptr, ptr %12, align 8, !tbaa !5
  store double %364, ptr %365, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #9
  call void @llvm.lifetime.start.p0(i64 136, ptr %55) #9
  call void @llvm.lifetime.start.p0(i64 64, ptr %56) #9
  %366 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr %57) #9
  %367 = load i32, ptr %21, align 4, !tbaa !9
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8leftColsIiEENS3_13NColsBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEE4TypeES6_(ptr dead_on_unwind writable sret(%"class.Eigen::Block") align 8 %57, ptr noundef nonnull align 1 dereferenceable(1) %26, i32 noundef %367)
          to label %368 unwind label %388

368:                                              ; preds = %360
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS_5BlockIS2_Lin1ELin1ELb1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS8_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.29") align 8 %56, ptr noundef nonnull align 1 dereferenceable(1) %366, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %369 unwind label %388

369:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 64, ptr %58) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr %59) #9
  %370 = load i32, ptr %21, align 4, !tbaa !9
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8leftColsIiEENS3_13NColsBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEE4TypeES6_(ptr dead_on_unwind writable sret(%"class.Eigen::Block") align 8 %59, ptr noundef nonnull align 1 dereferenceable(1) %26, i32 noundef %370)
          to label %371 unwind label %392

371:                                              ; preds = %369
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #9
  %372 = invoke ptr @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE10asDiagonalEv(ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %373 unwind label %396

373:                                              ; preds = %371
  %374 = getelementptr inbounds %"class.Eigen::DiagonalWrapper", ptr %60, i32 0, i32 0
  store ptr %372, ptr %374, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb1EEEEmlINS_15DiagonalWrapperIKNS2_IdLin1ELi1ELi0ELin1ELi1EEEEEEEKNS_7ProductIS4_T_Li1EEERKNS_12DiagonalBaseISC_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.44") align 8 %58, ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %375 unwind label %396

375:                                              ; preds = %373
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS_5BlockIS3_Lin1ELin1ELb1EEELi0EEEEmiINS1_IS5_NS_15DiagonalWrapperIKNS2_IdLin1ELi1ELi0ELin1ELi1EEEEELi1EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSF_6traitsIT_E6ScalarEEEKS6_KSI_EERKNS0_ISI_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp") align 8 %55, ptr noundef nonnull align 1 dereferenceable(1) %56, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %376 unwind label %396

376:                                              ; preds = %375
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_7ProductIS1_NS_5BlockIS1_Lin1ELin1ELb1EEELi0EEEKNS7_IS9_NS_15DiagonalWrapperIKNS0_IdLin1ELi1ELi0ELin1ELi1EEEEELi1EEEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %377 unwind label %396

377:                                              ; preds = %376
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 136, ptr %55) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #9
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8cwiseAbsEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseUnaryOp") align 8 %61, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %378 unwind label %402

378:                                              ; preds = %377
  %379 = invoke noundef double @_ZNK5Eigen9DenseBaseINS_12CwiseUnaryOpINS_8internal13scalar_abs_opIdEEKNS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEE8maxCoeffEv(ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %380 unwind label %402

380:                                              ; preds = %378
  %381 = load ptr, ptr %13, align 8, !tbaa !5
  store double %379, ptr %381, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #9
  %382 = load i32, ptr %53, align 4, !tbaa !9
  %383 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %382, ptr %383, align 4, !tbaa !9
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #9
  store i32 0, ptr %44, align 4
  br label %384

384:                                              ; preds = %380, %344
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #9
  br label %385

385:                                              ; preds = %384, %277
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #9
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 3, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  %386 = load i32, ptr %44, align 4
  switch i32 %386, label %421 [
    i32 0, label %387
    i32 1, label %387
  ]

387:                                              ; preds = %385, %385
  ret void

388:                                              ; preds = %368, %360
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %27, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %28, align 4
  br label %401

392:                                              ; preds = %369
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %27, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %28, align 4
  br label %400

396:                                              ; preds = %376, %375, %373, %371
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %27, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  br label %400

400:                                              ; preds = %396, %392
  call void @llvm.lifetime.end.p0(i64 56, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %58) #9
  br label %401

401:                                              ; preds = %400, %388
  call void @llvm.lifetime.end.p0(i64 56, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 136, ptr %55) #9
  br label %406

402:                                              ; preds = %378, %377
  %403 = landingpad { ptr, i32 }
          cleanup
  %404 = extractvalue { ptr, i32 } %403, 0
  store ptr %404, ptr %27, align 8
  %405 = extractvalue { ptr, i32 } %403, 1
  store i32 %405, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #9
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #9
  br label %406

406:                                              ; preds = %402, %401
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #9
  br label %407

407:                                              ; preds = %406, %354
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  br label %408

408:                                              ; preds = %407, %350
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #9
  br label %409

409:                                              ; preds = %408, %239, %213
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #9
  br label %410

410:                                              ; preds = %409, %209
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #9
  br label %411

411:                                              ; preds = %410, %205
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %412

412:                                              ; preds = %411, %201
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %413

413:                                              ; preds = %412, %197
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  br label %414

414:                                              ; preds = %413, %193
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #9
  br label %415

415:                                              ; preds = %414, %189
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #9
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 3, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #9
  br label %416

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

421:                                              ; preds = %385
  unreachable
}

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #4

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #5

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef, ptr noundef, ptr noundef) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(16)) #7 align 2

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z5saupdRiciPciRdPdiS2_iPiS3_S2_S2_iS_(ptr noundef nonnull align 4 dereferenceable(4), i8 noundef signext, i32 noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) #7

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5Eigen6StrideILi0ELi0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(2)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEC2EPdlRKS4_(ptr noundef nonnull align 8 dereferenceable(19), ptr noundef, i64 noundef, ptr noundef nonnull align 1 dereferenceable(2)) unnamed_addr #7 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE15selfadjointViewILj1EEENS3_25SelfAdjointViewReturnTypeIXT_EE4TypeEv(ptr noundef nonnull align 1 dereferenceable(1)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5Eigen15SelfAdjointViewINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELj1EEmlINS_3MapINS1_IdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEKNS_7ProductIS3_T_Li0EEERKNS_10MatrixBaseISB_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Product") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1)) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(19) ptr @_ZN5Eigen7NoAliasINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEENS_10MatrixBaseEEaSINS_7ProductINS_15SelfAdjointViewINS2_IdLin1ELin1ELi0ELin1ELin1EEELj1EEES6_Li0EEEEERS6_RKNS7_IT_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) #7 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #7

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z5seupdbcPdS_idciPcidS_iS_iPiS1_S_S_iRi(i1 noundef zeroext, i8 noundef signext, ptr noundef, ptr noundef, i32 noundef, double noundef, i8 noundef signext, i32 noundef, ptr noundef, i32 noundef, double noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS_5BlockIS2_Lin1ELin1ELb1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS8_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Product.29") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8leftColsIiEENS3_13NColsBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEE4TypeES6_(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Block") align 8, ptr noundef nonnull align 1 dereferenceable(1), i32 noundef) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS_5BlockIS3_Lin1ELin1ELb1EEELi0EEEEmiINS1_IS5_NS_15DiagonalWrapperIKNS2_IdLin1ELi1ELi0ELin1ELi1EEEEELi1EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSF_6traitsIT_E6ScalarEEEKS6_KSI_EERKNS0_ISI_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseBinaryOp") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb1EEEEmlINS_15DiagonalWrapperIKNS2_IdLin1ELi1ELi0ELin1ELi1EEEEEEEKNS_7ProductIS4_T_Li1EEERKNS_12DiagonalBaseISC_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Product.44") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE10asDiagonalEv(ptr noundef nonnull align 1 dereferenceable(1)) #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8cwiseAbsEv(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseUnaryOp") align 8, ptr noundef nonnull align 1 dereferenceable(1)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK5Eigen9DenseBaseINS_12CwiseUnaryOpINS_8internal13scalar_abs_opIdEEKNS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEE8maxCoeffEv(ptr noundef nonnull align 1 dereferenceable(1)) #7 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !17, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{i8 0, i8 2}
!19 = !{}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.Eigen::Matrix.3" = type { %"class.Eigen::PlainObjectBase.4" }
%"class.Eigen::PlainObjectBase.4" = type { %"class.Eigen::DenseStorage.11" }
%"class.Eigen::DenseStorage.11" = type { ptr, i64 }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { ptr, i64, i64 }
%"class.Eigen::Map" = type { %"class.Eigen::MapBase.base.19", [7 x i8] }
%"class.Eigen::MapBase.base.19" = type { %"class.Eigen::MapBase.base" }
%"class.Eigen::MapBase.base" = type <{ ptr, %"class.Eigen::internal::variable_if_dynamic", i8 }>
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"class.Eigen::Stride" = type { [2 x i8] }
%"class.Eigen::Product" = type { %"class.Eigen::SelfAdjointView", %"class.Eigen::Map" }
%"class.Eigen::SelfAdjointView" = type { ptr }
%"class.Eigen::NoAlias" = type { ptr }
%"class.Eigen::CwiseBinaryOp" = type <{ %"class.Eigen::Product.29", %"class.Eigen::Product.44", [8 x i8] }>
%"class.Eigen::Product.29" = type { ptr, %"class.Eigen::Block" }
%"class.Eigen::Block" = type { %"class.Eigen::BlockImpl" }
%"class.Eigen::BlockImpl" = type { %"class.Eigen::internal::BlockImpl_dense" }
%"class.Eigen::internal::BlockImpl_dense" = type { %"class.Eigen::MapBase.36", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase.36" = type { %"class.Eigen::MapBase.37" }
%"class.Eigen::MapBase.37" = type { ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic" }
%"class.Eigen::Product.44" = type { %"class.Eigen::Block", %"class.Eigen::DiagonalWrapper" }
%"class.Eigen::DiagonalWrapper" = type { ptr }
%"class.Eigen::CwiseUnaryOp" = type <{ ptr, [8 x i8] }>

@__const._Z12eigs_sym_F77RN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEERNS0_IdLin1ELi1ELi0ELin1ELi1EEEiiRdS5_Ri.which = external hidden unnamed_addr constant [3 x i8], align 1
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [17 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [15 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z12eigs_sym_F77RN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEERNS0_IdLin1ELi1ELi0ELin1ELi1EEEiiRdS5_Ri(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef %2, i32 noundef %3, ptr nocapture noundef nonnull writeonly align 8 dereferenceable(8) %4, ptr nocapture noundef nonnull writeonly align 8 dereferenceable(8) %5, ptr nocapture noundef nonnull writeonly align 4 dereferenceable(4) %6) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca [3 x i8], align 1
  %11 = alloca i32, align 4
  %12 = alloca double, align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.Eigen::Matrix.3", align 8
  %15 = alloca %"class.Eigen::Matrix", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.Eigen::Map", align 8
  %18 = alloca %"class.Eigen::Stride", align 1
  %19 = alloca %"class.Eigen::Map", align 8
  %20 = alloca %"class.Eigen::Stride", align 1
  %21 = alloca %"class.Eigen::Product", align 8
  %22 = alloca %"class.Eigen::SelfAdjointView", align 8
  %23 = alloca %"class.Eigen::NoAlias", align 8
  %24 = alloca i32, align 4
  %25 = alloca %"class.Eigen::Matrix", align 8
  %26 = alloca %"class.Eigen::CwiseBinaryOp", align 8
  %27 = alloca %"class.Eigen::Product.29", align 8
  %28 = alloca %"class.Eigen::Block", align 8
  %29 = alloca %"class.Eigen::Product.44", align 8
  %30 = alloca %"class.Eigen::Block", align 8
  %31 = alloca %"class.Eigen::DiagonalWrapper", align 8
  %32 = alloca %"class.Eigen::CwiseUnaryOp", align 8
  store double -1.000000e+00, ptr %5, align 8, !tbaa !5
  %33 = tail call noundef double @_Z13get_wall_timev()
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #8
  store i32 0, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #8
  %34 = tail call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  %35 = trunc i64 %34 to i32
  store i32 %35, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %10) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %10, ptr noundef nonnull align 1 dereferenceable(3) @__const._Z12eigs_sym_F77RN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEERNS0_IdLin1ELi1ELi0ELin1ELi1EEEiiRdS5_Ri.which, i64 3, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  store i32 %2, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  store double 1.000000e-10, ptr %12, align 8, !tbaa !5
  %36 = icmp slt i32 %35, 0
  %37 = shl i64 %34, 3
  %38 = and i64 %37, 34359738360
  %39 = select i1 %36, i64 -1, i64 %38
  %40 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %39) #9
  tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %40, i8 0, i64 %39, i1 false)
  %41 = tail call noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %42 = tail call noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %sext = shl i64 %34, 32
  %43 = ashr exact i64 %sext, 29
  %44 = getelementptr inbounds i8, ptr %42, i64 %43
  %45 = tail call noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef %41, ptr noundef %44, ptr noundef nonnull %40)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #8
  store i32 %3, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #8
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2IiEERKT_(ptr noundef nonnull align 8 dereferenceable(16) %14, ptr noundef nonnull align 4 dereferenceable(4) %11)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #8
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2IiiEERKT_RKT0_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %46 unwind label %101

46:                                               ; preds = %7
  %47 = invoke noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %48 unwind label %103

48:                                               ; preds = %46
  %49 = load i32, ptr %9, align 4, !tbaa !9
  %50 = invoke noalias noundef nonnull dereferenceable(44) ptr @_Znam(i64 noundef 44) #9
          to label %51 unwind label %105

51:                                               ; preds = %48
  %52 = getelementptr inbounds i8, ptr %50, i64 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(44) %52, i8 0, i64 40, i1 false)
  store i32 1, ptr %50, align 4, !tbaa !9
  %53 = getelementptr inbounds i8, ptr %50, i64 8
  store i32 1000, ptr %53, align 4, !tbaa !9
  %54 = getelementptr inbounds i8, ptr %50, i64 24
  store i32 1, ptr %54, align 4, !tbaa !9
  %55 = invoke noalias noundef nonnull dereferenceable(44) ptr @_Znam(i64 noundef 44) #9
          to label %56 unwind label %107

56:                                               ; preds = %51
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(44) %55, i8 0, i64 44, i1 false)
  %57 = mul nsw i32 %49, 3
  %58 = sext i32 %57 to i64
  %59 = icmp slt i32 %49, 0
  %60 = shl nsw i64 %58, 3
  %61 = select i1 %59, i64 -1, i64 %60
  %62 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %61) #9
          to label %63 unwind label %109

63:                                               ; preds = %56
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %62, i8 0, i64 %61, i1 false)
  %64 = load i32, ptr %13, align 4, !tbaa !9
  %65 = add nsw i32 %64, 8
  %66 = mul nsw i32 %65, %64
  %67 = sext i32 %66 to i64
  %68 = icmp slt i32 %66, 0
  %69 = shl nsw i64 %67, 3
  %70 = select i1 %68, i64 -1, i64 %69
  %71 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %70) #9
          to label %72 unwind label %111

72:                                               ; preds = %63
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %71, i8 0, i64 %70, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #8
  store i32 1, ptr %16, align 4, !tbaa !9
  %73 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @_Z5saupdRiciPciRdPdiS2_iPiS3_S2_S2_iS_(ptr noundef nonnull align 4 dereferenceable(4) %8, i8 noundef signext 73, i32 noundef %49, ptr noundef nonnull %10, i32 noundef %73, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull %40, i32 noundef %64, ptr noundef %47, i32 noundef %49, ptr noundef nonnull %50, ptr noundef nonnull %55, ptr noundef nonnull %62, ptr noundef nonnull %71, i32 noundef %66, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %.preheader unwind label %113

.preheader:                                       ; preds = %72
  %invariant.gep = getelementptr i8, ptr %62, i64 -8
  %74 = getelementptr inbounds i8, ptr %55, i64 4
  br label %75

75:                                               ; preds = %.preheader, %100
  %76 = load i32, ptr %8, align 4
  switch i32 %76, label %128 [
    i32 -1, label %77
    i32 1, label %77
  ]

77:                                               ; preds = %75, %75
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #8
  %78 = load i32, ptr %55, align 4, !tbaa !9
  %79 = load i32, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %18) #8
  invoke void @_ZN5Eigen6StrideILi0ELi0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(2) %18)
          to label %80 unwind label %115

80:                                               ; preds = %77
  %81 = sext i32 %79 to i64
  %82 = sext i32 %78 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %82
  invoke void @_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEC2EPdlRKS4_(ptr noundef nonnull align 8 dereferenceable(19) %17, ptr noundef %gep, i64 noundef %81, ptr noundef nonnull align 1 dereferenceable(2) %18)
          to label %83 unwind label %115

83:                                               ; preds = %80
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #8
  %84 = load i32, ptr %74, align 4, !tbaa !9
  %85 = load i32, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %20) #8
  invoke void @_ZN5Eigen6StrideILi0ELi0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(2) %20)
          to label %86 unwind label %117

86:                                               ; preds = %83
  %87 = sext i32 %85 to i64
  %88 = sext i32 %84 to i64
  %gep111 = getelementptr double, ptr %invariant.gep, i64 %88
  invoke void @_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEC2EPdlRKS4_(ptr noundef nonnull align 8 dereferenceable(19) %19, ptr noundef %gep111, i64 noundef %87, ptr noundef nonnull align 1 dereferenceable(2) %20)
          to label %89 unwind label %117

89:                                               ; preds = %86
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %20) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %90 = invoke ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE15selfadjointViewILj1EEENS3_25SelfAdjointViewReturnTypeIXT_EE4TypeEv(ptr noundef nonnull align 1 dereferenceable(1) %0)
          to label %91 unwind label %119

91:                                               ; preds = %89
  store ptr %90, ptr %22, align 8
  invoke void @_ZNK5Eigen15SelfAdjointViewINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELj1EEmlINS_3MapINS1_IdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEKNS_7ProductIS3_T_Li0EEERKNS_10MatrixBaseISB_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product") align 8 %21, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %92 unwind label %119

92:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  %93 = invoke ptr @_ZN5Eigen10MatrixBaseINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %94 unwind label %121

94:                                               ; preds = %92
  store ptr %93, ptr %23, align 8
  %95 = invoke noundef nonnull align 8 dereferenceable(19) ptr @_ZN5Eigen7NoAliasINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEENS_10MatrixBaseEEaSINS_7ProductINS_15SelfAdjointViewINS2_IdLin1ELin1ELi0ELin1ELin1EEELj1EEES6_Li0EEEEERS6_RKNS7_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %96 unwind label %121

96:                                               ; preds = %94
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  %97 = load i32, ptr %9, align 4, !tbaa !9
  %98 = load i32, ptr %11, align 4, !tbaa !9
  %99 = load i32, ptr %13, align 4, !tbaa !9
  invoke void @_Z5saupdRiciPciRdPdiS2_iPiS3_S2_S2_iS_(ptr noundef nonnull align 4 dereferenceable(4) %8, i8 noundef signext 73, i32 noundef %97, ptr noundef nonnull %10, i32 noundef %98, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull %40, i32 noundef %99, ptr noundef %47, i32 noundef %49, ptr noundef nonnull %50, ptr noundef nonnull %55, ptr noundef nonnull %62, ptr noundef nonnull %71, i32 noundef %66, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %100 unwind label %124

100:                                              ; preds = %96
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #8
  br label %75, !llvm.loop !11

101:                                              ; preds = %7
  %102 = landingpad { ptr, i32 }
          cleanup
  br label %203

103:                                              ; preds = %46
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %202

105:                                              ; preds = %48
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %202

107:                                              ; preds = %51
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %202

109:                                              ; preds = %56
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %202

111:                                              ; preds = %63
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %202

113:                                              ; preds = %140, %138, %133, %131, %72
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %201

115:                                              ; preds = %80, %77
  %116 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %18) #8
  br label %127

117:                                              ; preds = %86, %83
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %20) #8
  br label %126

119:                                              ; preds = %91, %89
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %123

121:                                              ; preds = %94, %92
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %123

123:                                              ; preds = %121, %119
  %.pn98 = phi { ptr, i32 } [ %122, %121 ], [ %120, %119 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #8
  br label %126

124:                                              ; preds = %96
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %126

126:                                              ; preds = %124, %123, %117
  %.pn100 = phi { ptr, i32 } [ %125, %124 ], [ %.pn98, %123 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #8
  br label %127

127:                                              ; preds = %126, %115
  %.pn100.pn = phi { ptr, i32 } [ %.pn100, %126 ], [ %116, %115 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #8
  br label %201

128:                                              ; preds = %75
  %129 = load i32, ptr %16, align 4, !tbaa !9
  %130 = icmp sgt i32 %129, 0
  br i1 %130, label %131, label %135

131:                                              ; preds = %128
  %132 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str)
          to label %133 unwind label %113

133:                                              ; preds = %131
  %134 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %thread-pre-split unwind label %113

thread-pre-split:                                 ; preds = %133
  %.pr = load i32, ptr %16, align 4, !tbaa !9
  br label %135

135:                                              ; preds = %thread-pre-split, %128
  %136 = phi i32 [ %.pr, %thread-pre-split ], [ %129, %128 ]
  %137 = icmp slt i32 %136, 0
  br i1 %137, label %138, label %146

138:                                              ; preds = %135
  call void @_ZdaPv(ptr noundef nonnull %71) #10
  call void @_ZdaPv(ptr noundef nonnull %62) #10
  call void @_ZdaPv(ptr noundef nonnull %55) #10
  call void @_ZdaPv(ptr noundef nonnull %50) #10
  call void @_ZdaPv(ptr noundef nonnull %40) #10
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.4)
          to label %140 unwind label %113

140:                                              ; preds = %138
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %142 unwind label %113

142:                                              ; preds = %140
  %143 = call noundef double @_Z13get_wall_timev()
  %144 = fsub double %143, %33
  %145 = fmul double %144, 1.000000e+03
  store double %145, ptr %4, align 8, !tbaa !5
  br label %188

146:                                              ; preds = %135
  %147 = invoke noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %148 unwind label %166

148:                                              ; preds = %146
  %149 = load i32, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #8
  store i32 0, ptr %24, align 4, !tbaa !9
  %150 = load i32, ptr %11, align 4, !tbaa !9
  %151 = load double, ptr %12, align 8, !tbaa !5
  %152 = load i32, ptr %13, align 4, !tbaa !9
  invoke void @_Z5seupdbcPdS_idciPcidS_iS_iPiS1_S_S_iRi(i1 noundef zeroext true, i8 noundef signext 65, ptr noundef %147, ptr noundef %47, i32 noundef %149, double noundef 0.000000e+00, i8 noundef signext 73, i32 noundef %149, ptr noundef nonnull %10, i32 noundef %150, double noundef %151, ptr noundef nonnull %40, i32 noundef %152, ptr noundef %47, i32 noundef %49, ptr noundef nonnull %50, ptr noundef nonnull %55, ptr noundef nonnull %62, ptr noundef nonnull %71, i32 noundef %66, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %153 unwind label %168

153:                                              ; preds = %148
  %154 = getelementptr inbounds i8, ptr %50, i64 32
  %155 = load i32, ptr %154, align 4, !tbaa !9
  call void @_ZdaPv(ptr noundef nonnull %71) #10
  call void @_ZdaPv(ptr noundef nonnull %62) #10
  call void @_ZdaPv(ptr noundef nonnull %55) #10
  call void @_ZdaPv(ptr noundef nonnull %50) #10
  call void @_ZdaPv(ptr noundef nonnull %40) #10
  %156 = load i32, ptr %24, align 4, !tbaa !9
  %157 = icmp slt i32 %156, 0
  br i1 %157, label %158, label %170

158:                                              ; preds = %153
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.4)
          to label %160 unwind label %168

160:                                              ; preds = %158
  %161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %162 unwind label %168

162:                                              ; preds = %160
  %163 = call noundef double @_Z13get_wall_timev()
  %164 = fsub double %163, %33
  %165 = fmul double %164, 1.000000e+03
  store double %165, ptr %4, align 8, !tbaa !5
  br label %187

166:                                              ; preds = %146
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %201

168:                                              ; preds = %160, %158, %148
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %200

170:                                              ; preds = %153
  %171 = call noundef double @_Z13get_wall_timev()
  %172 = fsub double %171, %33
  %173 = fmul double %172, 1.000000e+03
  store double %173, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #8
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %26) #8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %28) #8
  %174 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8leftColsIiEENS3_13NColsBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEE4TypeES6_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block") align 8 %28, ptr noundef nonnull align 1 dereferenceable(1) %15, i32 noundef %174)
          to label %175 unwind label %189

175:                                              ; preds = %170
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS_5BlockIS2_Lin1ELin1ELb1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS8_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.29") align 8 %27, ptr noundef nonnull align 1 dereferenceable(1) %0, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %176 unwind label %189

176:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %30) #8
  %177 = load i32, ptr %11, align 4, !tbaa !9
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8leftColsIiEENS3_13NColsBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEE4TypeES6_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block") align 8 %30, ptr noundef nonnull align 1 dereferenceable(1) %15, i32 noundef %177)
          to label %178 unwind label %191

178:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  %179 = invoke ptr @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE10asDiagonalEv(ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %180 unwind label %193

180:                                              ; preds = %178
  store ptr %179, ptr %31, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb1EEEEmlINS_15DiagonalWrapperIKNS2_IdLin1ELi1ELi0ELin1ELi1EEEEEEEKNS_7ProductIS4_T_Li1EEERKNS_12DiagonalBaseISC_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.44") align 8 %29, ptr noundef nonnull align 1 dereferenceable(1) %30, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %181 unwind label %193

181:                                              ; preds = %180
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS_5BlockIS3_Lin1ELin1ELb1EEELi0EEEEmiINS1_IS5_NS_15DiagonalWrapperIKNS2_IdLin1ELi1ELi0ELin1ELi1EEEEELi1EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSF_6traitsIT_E6ScalarEEEKS6_KSI_EERKNS0_ISI_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp") align 8 %26, ptr noundef nonnull align 1 dereferenceable(1) %27, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %182 unwind label %193

182:                                              ; preds = %181
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS_7ProductIS1_NS_5BlockIS1_Lin1ELin1ELb1EEELi0EEEKNS7_IS9_NS_15DiagonalWrapperIKNS0_IdLin1ELi1ELi0ELin1ELi1EEEEELi1EEEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %183 unwind label %193

183:                                              ; preds = %182
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %26) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8cwiseAbsEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseUnaryOp") align 8 %32, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %184 unwind label %197

184:                                              ; preds = %183
  %185 = invoke noundef double @_ZNK5Eigen9DenseBaseINS_12CwiseUnaryOpINS_8internal13scalar_abs_opIdEEKNS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEE8maxCoeffEv(ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %186 unwind label %197

186:                                              ; preds = %184
  store double %185, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #8
  store i32 %155, ptr %6, align 4, !tbaa !9
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  br label %187

187:                                              ; preds = %186, %162
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  br label %188

188:                                              ; preds = %187, %142
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  ret void

189:                                              ; preds = %175, %170
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %196

191:                                              ; preds = %176
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %195

193:                                              ; preds = %182, %181, %180, %178
  %194 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  br label %195

195:                                              ; preds = %193, %191
  %.pn = phi { ptr, i32 } [ %194, %193 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %29) #8
  br label %196

196:                                              ; preds = %195, %189
  %.pn.pn = phi { ptr, i32 } [ %.pn, %195 ], [ %190, %189 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %26) #8
  br label %199

197:                                              ; preds = %184, %183
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  br label %199

199:                                              ; preds = %197, %196
  %.pn93 = phi { ptr, i32 } [ %198, %197 ], [ %.pn.pn, %196 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #8
  br label %200

200:                                              ; preds = %199, %168
  %.pn95 = phi { ptr, i32 } [ %169, %168 ], [ %.pn93, %199 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  br label %201

201:                                              ; preds = %166, %200, %127, %113
  %.pn100.pn.pn = phi { ptr, i32 } [ %.pn100.pn, %127 ], [ %114, %113 ], [ %.pn95, %200 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %202

202:                                              ; preds = %105, %109, %201, %111, %107, %103
  %.pn100.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %104, %103 ], [ %106, %105 ], [ %108, %107 ], [ %110, %109 ], [ %.pn100.pn.pn, %201 ], [ %112, %111 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #8
  br label %203

203:                                              ; preds = %202, %101
  %.pn100.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn100.pn.pn.pn.pn.pn.pn.pn, %202 ], [ %102, %101 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  resume { ptr, i32 } %.pn100.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4copyIPdS0_ET0_T_S2_S1_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

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

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

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4dataEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z5saupdRiciPciRdPdiS2_iPiS3_S2_S2_iS_(ptr noundef nonnull align 4 dereferenceable(4), i8 noundef signext, i32 noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN5Eigen6StrideILi0ELi0EEC2Ev(ptr noundef nonnull align 1 dereferenceable(2)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEC2EPdlRKS4_(ptr noundef nonnull align 8 dereferenceable(19), ptr noundef, i64 noundef, ptr noundef nonnull align 1 dereferenceable(2)) unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5Eigen15SelfAdjointViewINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELj1EEmlINS_3MapINS1_IdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEEEEKNS_7ProductIS3_T_Li0EEERKNS_10MatrixBaseISB_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Product") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #0 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(19) ptr @_ZN5Eigen7NoAliasINS_3MapINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0ENS_6StrideILi0ELi0EEEEENS_10MatrixBaseEEaSINS_7ProductINS_15SelfAdjointViewINS2_IdLin1ELin1ELi0ELin1ELin1EEELj1EEES6_Li0EEEEERS6_RKNS7_IT_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #6 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z5seupdbcPdS_idciPcidS_iS_iPiS1_S_S_iRi(i1 noundef zeroext, i8 noundef signext, ptr noundef, ptr noundef, i32 noundef, double noundef, i8 noundef signext, i32 noundef, ptr noundef, i32 noundef, double noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS_5BlockIS2_Lin1ELin1ELb1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS8_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Product.29") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8leftColsIiEENS3_13NColsBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEE4TypeES6_(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Block") align 8, ptr noundef nonnull align 1 dereferenceable(1), i32 noundef) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS_5BlockIS3_Lin1ELin1ELb1EEELi0EEEEmiINS1_IS5_NS_15DiagonalWrapperIKNS2_IdLin1ELi1ELi0ELin1ELi1EEEEELi1EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSF_6traitsIT_E6ScalarEEEKS6_KSI_EERKNS0_ISI_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseBinaryOp") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb1EEEEmlINS_15DiagonalWrapperIKNS2_IdLin1ELi1ELi0ELin1ELi1EEEEEEEKNS_7ProductIS4_T_Li1EEERKNS_12DiagonalBaseISC_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Product.44") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE10asDiagonalEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #6 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8cwiseAbsEv(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseUnaryOp") align 8, ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK5Eigen9DenseBaseINS_12CwiseUnaryOpINS_8internal13scalar_abs_opIdEEKNS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEE8maxCoeffEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #6 align 2

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

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nobuiltin allocsize(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 nounwind willreturn memory(argmem: write) }
attributes #6 = { 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 #7 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopSimplifyPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass