; LLVM IR from Derek-TH-Wang/quadruped_ctrl :: src/MPC_Ctrl/SparseCMPC.ll (ZN10SparseCMPC22addDynamicsConstraintsEv)

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

%struct.SparseTriple = type { double, i32, i32 }
%"class.Eigen::Matrix.3" = type { %"class.Eigen::PlainObjectBase.4" }
%"class.Eigen::PlainObjectBase.4" = type { %"class.Eigen::DenseStorage.11" }
%"class.Eigen::DenseStorage.11" = type { %"struct.Eigen::internal::plain_array.12" }
%"struct.Eigen::internal::plain_array.12" = type { [12 x double] }
%"class.Eigen::CwiseBinaryOp.183" = type <{ ptr, %"class.Eigen::CwiseNullaryOp.189", [8 x i8] }>
%"class.Eigen::CwiseNullaryOp.189" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%class.SparseCMPC = type <{ %"class.Eigen::Matrix", [8 x i8], %"class.Eigen::Matrix.3", double, double, double, double, %"class.Eigen::Matrix.13", %"class.Eigen::Matrix.13", %"class.Eigen::Matrix.13", %"class.Eigen::Matrix.13", %"class.Eigen::Matrix.23", %"class.Eigen::Matrix.3", %"class.Eigen::Matrix.3", %"class.Eigen::Matrix.3", %"class.std::vector", %"class.std::vector.33", %"class.std::vector.38", %"class.std::vector.43", %"class.std::vector.49", %"class.std::vector.54", %"class.std::vector.60", %"class.std::vector.60", %"class.std::vector.65", %"class.std::vector.65", %"class.std::vector.38", %"class.std::vector.38", %"class.std::vector.38", %"class.Eigen::Matrix.70", i32, i32, i32, [12 x i8] }>
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [9 x double] }
%"class.Eigen::Matrix.13" = type { %"class.Eigen::PlainObjectBase.14" }
%"class.Eigen::PlainObjectBase.14" = type { %"class.Eigen::DenseStorage.21" }
%"class.Eigen::DenseStorage.21" = type { %"struct.Eigen::internal::plain_array.22" }
%"struct.Eigen::internal::plain_array.22" = type { [3 x double] }
%"class.Eigen::Matrix.23" = type { %"class.Eigen::PlainObjectBase.24" }
%"class.Eigen::PlainObjectBase.24" = type { %"class.Eigen::DenseStorage.31" }
%"class.Eigen::DenseStorage.31" = type { %"struct.Eigen::internal::plain_array.32" }
%"struct.Eigen::internal::plain_array.32" = type { [4 x double] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<ContactState, std::allocator<ContactState>>::_Vector_impl" }
%"struct.std::_Vector_base<ContactState, std::allocator<ContactState>>::_Vector_impl" = type { %"struct.std::_Vector_base<ContactState, std::allocator<ContactState>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ContactState, std::allocator<ContactState>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.43" = type { %"struct.std::_Vector_base.44" }
%"struct.std::_Vector_base.44" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 12>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 12>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 12>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 12>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 12>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 12>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 12>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 12>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.49" = type { %"struct.std::_Vector_base.50" }
%"struct.std::_Vector_base.50" = type { %"struct.std::_Vector_base<BblockID, std::allocator<BblockID>>::_Vector_impl" }
%"struct.std::_Vector_base<BblockID, std::allocator<BblockID>>::_Vector_impl" = type { %"struct.std::_Vector_base<BblockID, std::allocator<BblockID>>::_Vector_impl_data" }
%"struct.std::_Vector_base<BblockID, std::allocator<BblockID>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.54" = type { %"struct.std::_Vector_base.55" }
%"struct.std::_Vector_base.55" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.60" = type { %"struct.std::_Vector_base.61" }
%"struct.std::_Vector_base.61" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<SparseTriple<double>, std::allocator<SparseTriple<double>>>::_Vector_impl" }
%"struct.std::_Vector_base<SparseTriple<double>, std::allocator<SparseTriple<double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<SparseTriple<double>, std::allocator<SparseTriple<double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SparseTriple<double>, std::allocator<SparseTriple<double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.38" = type { %"struct.std::_Vector_base.39" }
%"struct.std::_Vector_base.39" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Eigen::Matrix.70" = type { %"class.Eigen::PlainObjectBase.71" }
%"class.Eigen::PlainObjectBase.71" = type { %"class.Eigen::DenseStorage.78" }
%"class.Eigen::DenseStorage.78" = type { ptr, i64 }

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SparseCMPC22addDynamicsConstraintsEv(ptr noundef nonnull align 16 dereferenceable(964) %0) #2 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %struct.SparseTriple, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.Eigen::Matrix.3", align 16
  %18 = alloca %"class.Eigen::CwiseBinaryOp.183", align 8
  %19 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %20 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #4
  store i32 1, ptr %3, align 4, !tbaa !9
  br label %21

21:                                               ; preds = %170, %1
  %22 = load i32, ptr %3, align 4, !tbaa !9
  %23 = getelementptr inbounds %class.SparseCMPC, ptr %20, i32 0, i32 29
  %24 = load i32, ptr %23, align 8, !tbaa !11
  %25 = icmp ult i32 %22, %24
  br i1 %25, label %27, label %26

26:                                               ; preds = %21
  store i32 2, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #4
  br label %173

27:                                               ; preds = %21
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #4
  %28 = load i32, ptr %3, align 4, !tbaa !9
  %29 = call noundef i32 @_ZN10SparseCMPC13getStateIndexEj(ptr noundef nonnull align 16 dereferenceable(964) %20, i32 noundef %28)
  store i32 %29, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  %30 = load i32, ptr %3, align 4, !tbaa !9
  %31 = sub i32 %30, 1
  %32 = call noundef i32 @_ZN10SparseCMPC13getStateIndexEj(ptr noundef nonnull align 16 dereferenceable(964) %20, i32 noundef %31)
  store i32 %32, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  %33 = call noundef i32 @_ZN10SparseCMPC13addConstraintEj(ptr noundef nonnull align 16 dereferenceable(964) %20, i32 noundef 12)
  store i32 %33, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %34

34:                                               ; preds = %49, %27
  %35 = load i32, ptr %8, align 4, !tbaa !9
  %36 = icmp ult i32 %35, 12
  br i1 %36, label %38, label %37

37:                                               ; preds = %34
  store i32 5, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  br label %52

38:                                               ; preds = %34
  %39 = getelementptr inbounds %class.SparseCMPC, ptr %20, i32 0, i32 23
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #4
  %40 = getelementptr inbounds %struct.SparseTriple, ptr %9, i32 0, i32 0
  store double 1.000000e+00, ptr %40, align 8, !tbaa !66
  %41 = getelementptr inbounds %struct.SparseTriple, ptr %9, i32 0, i32 1
  %42 = load i32, ptr %7, align 4, !tbaa !9
  %43 = load i32, ptr %8, align 4, !tbaa !9
  %44 = add i32 %42, %43
  store i32 %44, ptr %41, align 8, !tbaa !68
  %45 = getelementptr inbounds %struct.SparseTriple, ptr %9, i32 0, i32 2
  %46 = load i32, ptr %5, align 4, !tbaa !9
  %47 = load i32, ptr %8, align 4, !tbaa !9
  %48 = add i32 %46, %47
  store i32 %48, ptr %45, align 4, !tbaa !69
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(16) %9)
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #4
  br label %49

49:                                               ; preds = %38
  %50 = load i32, ptr %8, align 4, !tbaa !9
  %51 = add i32 %50, 1
  store i32 %51, ptr %8, align 4, !tbaa !9
  br label %34, !llvm.loop !70

52:                                               ; preds = %37
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %53

53:                                               ; preds = %84, %52
  %54 = load i32, ptr %10, align 4, !tbaa !9
  %55 = icmp ult i32 %54, 12
  br i1 %55, label %57, label %56

56:                                               ; preds = %53
  store i32 8, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  br label %87

57:                                               ; preds = %53
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %58

58:                                               ; preds = %80, %57
  %59 = load i32, ptr %11, align 4, !tbaa !9
  %60 = icmp ult i32 %59, 12
  br i1 %60, label %62, label %61

61:                                               ; preds = %58
  store i32 11, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  br label %83

62:                                               ; preds = %58
  %63 = getelementptr inbounds %class.SparseCMPC, ptr %20, i32 0, i32 18
  %64 = load i32, ptr %3, align 4, !tbaa !9
  %65 = zext i32 %64 to i64
  %66 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %65) #4
  %67 = load i32, ptr %10, align 4, !tbaa !9
  %68 = zext i32 %67 to i64
  %69 = load i32, ptr %11, align 4, !tbaa !9
  %70 = zext i32 %69 to i64
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %66, i64 noundef %68, i64 noundef %70)
  %72 = load double, ptr %71, align 8, !tbaa !72
  %73 = fneg double %72
  %74 = load i32, ptr %7, align 4, !tbaa !9
  %75 = load i32, ptr %10, align 4, !tbaa !9
  %76 = add i32 %74, %75
  %77 = load i32, ptr %6, align 4, !tbaa !9
  %78 = load i32, ptr %11, align 4, !tbaa !9
  %79 = add i32 %77, %78
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %20, double noundef %73, i32 noundef %76, i32 noundef %79)
  br label %80

80:                                               ; preds = %62
  %81 = load i32, ptr %11, align 4, !tbaa !9
  %82 = add i32 %81, 1
  store i32 %82, ptr %11, align 4, !tbaa !9
  br label %58, !llvm.loop !73

83:                                               ; preds = %61
  br label %84

84:                                               ; preds = %83
  %85 = load i32, ptr %10, align 4, !tbaa !9
  %86 = add i32 %85, 1
  store i32 %86, ptr %10, align 4, !tbaa !9
  br label %53, !llvm.loop !74

87:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  %88 = getelementptr inbounds %class.SparseCMPC, ptr %20, i32 0, i32 21
  %89 = load i32, ptr %3, align 4, !tbaa !9
  %90 = zext i32 %89 to i64
  %91 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %90) #4
  %92 = load i32, ptr %91, align 4, !tbaa !9
  store i32 %92, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  %93 = getelementptr inbounds %class.SparseCMPC, ptr %20, i32 0, i32 22
  %94 = load i32, ptr %3, align 4, !tbaa !9
  %95 = zext i32 %94 to i64
  %96 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %95) #4
  %97 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %97, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %98

98:                                               ; preds = %144, %87
  %99 = load i32, ptr %14, align 4, !tbaa !9
  %100 = load i32, ptr %12, align 4, !tbaa !9
  %101 = icmp ult i32 %99, %100
  br i1 %101, label %103, label %102

102:                                              ; preds = %98
  store i32 14, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  br label %147

103:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %104

104:                                              ; preds = %140, %103
  %105 = load i32, ptr %15, align 4, !tbaa !9
  %106 = icmp ult i32 %105, 12
  br i1 %106, label %108, label %107

107:                                              ; preds = %104
  store i32 17, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  br label %143

108:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %136, %108
  %110 = load i32, ptr %16, align 4, !tbaa !9
  %111 = icmp ult i32 %110, 3
  br i1 %111, label %113, label %112

112:                                              ; preds = %109
  store i32 20, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  br label %139

113:                                              ; preds = %109
  %114 = getelementptr inbounds %class.SparseCMPC, ptr %20, i32 0, i32 20
  %115 = load i32, ptr %13, align 4, !tbaa !9
  %116 = load i32, ptr %14, align 4, !tbaa !9
  %117 = add i32 %115, %116
  %118 = zext i32 %117 to i64
  %119 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %114, i64 noundef %118) #4
  %120 = load i32, ptr %15, align 4, !tbaa !9
  %121 = zext i32 %120 to i64
  %122 = load i32, ptr %16, align 4, !tbaa !9
  %123 = zext i32 %122 to i64
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi3ELi0ELi12ELi3EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %119, i64 noundef %121, i64 noundef %123)
  %125 = load double, ptr %124, align 8, !tbaa !72
  %126 = fneg double %125
  %127 = load i32, ptr %7, align 4, !tbaa !9
  %128 = load i32, ptr %15, align 4, !tbaa !9
  %129 = add i32 %127, %128
  %130 = load i32, ptr %13, align 4, !tbaa !9
  %131 = load i32, ptr %14, align 4, !tbaa !9
  %132 = add i32 %130, %131
  %133 = call noundef i32 @_ZN10SparseCMPC15getControlIndexEj(ptr noundef nonnull align 16 dereferenceable(964) %20, i32 noundef %132)
  %134 = load i32, ptr %16, align 4, !tbaa !9
  %135 = add i32 %133, %134
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %20, double noundef %126, i32 noundef %129, i32 noundef %135)
  br label %136

136:                                              ; preds = %113
  %137 = load i32, ptr %16, align 4, !tbaa !9
  %138 = add i32 %137, 1
  store i32 %138, ptr %16, align 4, !tbaa !9
  br label %109, !llvm.loop !75

139:                                              ; preds = %112
  br label %140

140:                                              ; preds = %139
  %141 = load i32, ptr %15, align 4, !tbaa !9
  %142 = add i32 %141, 1
  store i32 %142, ptr %15, align 4, !tbaa !9
  br label %104, !llvm.loop !76

143:                                              ; preds = %107
  br label %144

144:                                              ; preds = %143
  %145 = load i32, ptr %14, align 4, !tbaa !9
  %146 = add i32 %145, 1
  store i32 %146, ptr %14, align 4, !tbaa !9
  br label %98, !llvm.loop !77

147:                                              ; preds = %102
  call void @llvm.lifetime.start.p0(i64 96, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #4
  %148 = getelementptr inbounds %class.SparseCMPC, ptr %20, i32 0, i32 14
  %149 = getelementptr inbounds %class.SparseCMPC, ptr %20, i32 0, i32 17
  %150 = load i32, ptr %3, align 4, !tbaa !9
  %151 = zext i32 %150 to i64
  %152 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %151) #4
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEEEmlIdEEKNS_13CwiseBinaryOpINS_8internal17scalar_product_opIdNS6_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdS9_NS7_IdS9_EEEEEE5valueEE4typeEEEKS2_KNS6_19plain_constant_typeIS2_SE_E4typeEEERKS9_(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.183") align 8 %18, ptr noundef nonnull align 1 dereferenceable(1) %148, ptr noundef nonnull align 8 dereferenceable(8) %152)
  call void @_ZN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEC2INS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(96) %17, ptr noundef nonnull align 1 dereferenceable(1) %18)
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %153

153:                                              ; preds = %166, %147
  %154 = load i32, ptr %19, align 4, !tbaa !9
  %155 = icmp ult i32 %154, 12
  br i1 %155, label %157, label %156

156:                                              ; preds = %153
  store i32 23, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  br label %169

157:                                              ; preds = %153
  %158 = getelementptr inbounds %class.SparseCMPC, ptr %20, i32 0, i32 26
  %159 = load i32, ptr %19, align 4, !tbaa !9
  %160 = zext i32 %159 to i64
  %161 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %17, i64 noundef %160)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %158, ptr noundef nonnull align 8 dereferenceable(8) %161)
  %162 = getelementptr inbounds %class.SparseCMPC, ptr %20, i32 0, i32 25
  %163 = load i32, ptr %19, align 4, !tbaa !9
  %164 = zext i32 %163 to i64
  %165 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %17, i64 noundef %164)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %162, ptr noundef nonnull align 8 dereferenceable(8) %165)
  br label %166

166:                                              ; preds = %157
  %167 = load i32, ptr %19, align 4, !tbaa !9
  %168 = add i32 %167, 1
  store i32 %168, ptr %19, align 4, !tbaa !9
  br label %153, !llvm.loop !78

169:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 96, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  br label %170

170:                                              ; preds = %169
  %171 = load i32, ptr %3, align 4, !tbaa !9
  %172 = add i32 %171, 1
  store i32 %172, ptr %3, align 4, !tbaa !9
  br label %21, !llvm.loop !79

173:                                              ; preds = %26
  ret void
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10SparseCMPC13getStateIndexEj(ptr noundef nonnull align 16 dereferenceable(964), i32 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10SparseCMPC15getControlIndexEj(ptr noundef nonnull align 16 dereferenceable(964), i32 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10SparseCMPC13addConstraintEj(ptr noundef nonnull align 16 dereferenceable(964), i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964), double noundef, i32 noundef, i32 noundef) #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEC2INS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(96), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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, !10, i64 952}
!12 = !{!"_ZTS10SparseCMPC", !13, i64 0, !17, i64 80, !21, i64 176, !21, i64 184, !21, i64 192, !21, i64 200, !22, i64 208, !22, i64 232, !22, i64 256, !22, i64 280, !26, i64 304, !17, i64 336, !17, i64 432, !17, i64 528, !30, i64 624, !34, i64 648, !38, i64 672, !42, i64 696, !46, i64 720, !50, i64 744, !54, i64 768, !54, i64 792, !58, i64 816, !58, i64 840, !38, i64 864, !38, i64 888, !38, i64 912, !62, i64 936, !10, i64 952, !10, i64 956, !10, i64 960}
!13 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE", !14, i64 0}
!14 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEE", !15, i64 0}
!15 = !{!"_ZTSN5Eigen12DenseStorageIdLi9ELi3ELi3ELi0EEE", !16, i64 0}
!16 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi9ELi0ELi0EEE", !7, i64 0}
!17 = !{!"_ZTSN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEE", !18, i64 0}
!18 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEEEE", !19, i64 0}
!19 = !{!"_ZTSN5Eigen12DenseStorageIdLi12ELi12ELi1ELi0EEE", !20, i64 0}
!20 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi12ELi0ELi16EEE", !7, i64 0}
!21 = !{!"double", !7, i64 0}
!22 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !23, i64 0}
!23 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !24, i64 0}
!24 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !25, i64 0}
!25 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !7, i64 0}
!26 = !{!"_ZTSN5Eigen6MatrixIdLi4ELi1ELi0ELi4ELi1EEE", !27, i64 0}
!27 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEE", !28, i64 0}
!28 = !{!"_ZTSN5Eigen12DenseStorageIdLi4ELi4ELi1ELi0EEE", !29, i64 0}
!29 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi4ELi0ELi16EEE", !7, i64 0}
!30 = !{!"_ZTSSt6vectorI12ContactStateSaIS0_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseI12ContactStateSaIS0_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseI12ContactStateSaIS0_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseI12ContactStateSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorIdSaIdEE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSSt6vectorI8BblockIDSaIS0_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseI8BblockIDSaIS0_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseI8BblockIDSaIS0_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseI8BblockIDSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!54 = !{!"_ZTSSt6vectorIjSaIjEE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!58 = !{!"_ZTSSt6vectorI12SparseTripleIdESaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseI12SparseTripleIdESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseI12SparseTripleIdESaIS1_EE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseI12SparseTripleIdESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!62 = !{!"_ZTSN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEE", !63, i64 0}
!63 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEEE", !64, i64 0}
!64 = !{!"_ZTSN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EEE", !6, i64 0, !65, i64 8}
!65 = !{!"long", !7, i64 0}
!66 = !{!67, !21, i64 0}
!67 = !{!"_ZTS12SparseTripleIdE", !21, i64 0, !10, i64 8, !10, i64 12}
!68 = !{!67, !10, i64 8}
!69 = !{!67, !10, i64 12}
!70 = distinct !{!70, !71}
!71 = !{!"llvm.loop.mustprogress"}
!72 = !{!21, !21, i64 0}
!73 = distinct !{!73, !71}
!74 = distinct !{!74, !71}
!75 = distinct !{!75, !71}
!76 = distinct !{!76, !71}
!77 = distinct !{!77, !71}
!78 = distinct !{!78, !71}
!79 = distinct !{!79, !71}


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

%struct.SparseTriple = type { double, i32, i32 }
%"class.Eigen::Matrix.3" = type { %"class.Eigen::PlainObjectBase.4" }
%"class.Eigen::PlainObjectBase.4" = type { %"class.Eigen::DenseStorage.11" }
%"class.Eigen::DenseStorage.11" = type { %"struct.Eigen::internal::plain_array.12" }
%"struct.Eigen::internal::plain_array.12" = type { [12 x double] }
%"class.Eigen::CwiseBinaryOp.183" = type <{ ptr, %"class.Eigen::CwiseNullaryOp.189", [8 x i8] }>
%"class.Eigen::CwiseNullaryOp.189" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10SparseCMPC22addDynamicsConstraintsEv(ptr noundef nonnull align 16 dereferenceable(964) %0) local_unnamed_addr #2 align 2 {
  %2 = alloca %struct.SparseTriple, align 8
  %3 = alloca %"class.Eigen::Matrix.3", align 16
  %4 = alloca %"class.Eigen::CwiseBinaryOp.183", align 8
  %5 = getelementptr inbounds i8, ptr %0, i64 952
  %6 = load i32, ptr %5, align 8, !tbaa !5
  %7 = icmp ugt i32 %6, 1
  br i1 %7, label %.lr.ph, label %._crit_edge63

.lr.ph:                                           ; preds = %1
  %8 = getelementptr inbounds i8, ptr %0, i64 816
  %9 = getelementptr inbounds i8, ptr %2, i64 8
  %10 = getelementptr inbounds i8, ptr %2, i64 12
  %11 = getelementptr inbounds i8, ptr %0, i64 696
  %12 = getelementptr inbounds i8, ptr %0, i64 768
  %13 = getelementptr inbounds i8, ptr %0, i64 792
  %14 = getelementptr inbounds i8, ptr %0, i64 744
  %15 = getelementptr inbounds i8, ptr %0, i64 528
  %16 = getelementptr inbounds i8, ptr %0, i64 672
  %17 = getelementptr inbounds i8, ptr %0, i64 888
  %18 = getelementptr inbounds i8, ptr %0, i64 864
  br label %.preheader53

._crit_edge63:                                    ; preds = %._crit_edge, %1
  ret void

.preheader53:                                     ; preds = %.lr.ph, %._crit_edge
  %indvars.iv82 = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next83, %._crit_edge ]
  %19 = trunc nuw i64 %indvars.iv82 to i32
  %20 = call noundef i32 @_ZN10SparseCMPC13getStateIndexEj(ptr noundef nonnull align 16 dereferenceable(964) %0, i32 noundef %19)
  %21 = trunc i64 %indvars.iv82 to i32
  %22 = add i32 %21, -1
  %23 = call noundef i32 @_ZN10SparseCMPC13getStateIndexEj(ptr noundef nonnull align 16 dereferenceable(964) %0, i32 noundef %22)
  %24 = call noundef i32 @_ZN10SparseCMPC13addConstraintEj(ptr noundef nonnull align 16 dereferenceable(964) %0, i32 noundef 12)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  store i32 %24, ptr %9, align 8, !tbaa !66
  store i32 %20, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %25 = add i32 %24, 1
  store i32 %25, ptr %9, align 8, !tbaa !66
  %26 = add i32 %20, 1
  store i32 %26, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %27 = add i32 %24, 2
  store i32 %27, ptr %9, align 8, !tbaa !66
  %28 = add i32 %20, 2
  store i32 %28, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %29 = add i32 %24, 3
  store i32 %29, ptr %9, align 8, !tbaa !66
  %30 = add i32 %20, 3
  store i32 %30, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %31 = add i32 %24, 4
  store i32 %31, ptr %9, align 8, !tbaa !66
  %32 = add i32 %20, 4
  store i32 %32, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %33 = add i32 %24, 5
  store i32 %33, ptr %9, align 8, !tbaa !66
  %34 = add i32 %20, 5
  store i32 %34, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %35 = add i32 %24, 6
  store i32 %35, ptr %9, align 8, !tbaa !66
  %36 = add i32 %20, 6
  store i32 %36, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %37 = add i32 %24, 7
  store i32 %37, ptr %9, align 8, !tbaa !66
  %38 = add i32 %20, 7
  store i32 %38, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %39 = add i32 %24, 8
  store i32 %39, ptr %9, align 8, !tbaa !66
  %40 = add i32 %20, 8
  store i32 %40, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %41 = add i32 %24, 9
  store i32 %41, ptr %9, align 8, !tbaa !66
  %42 = add i32 %20, 9
  store i32 %42, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %43 = add i32 %24, 10
  store i32 %43, ptr %9, align 8, !tbaa !66
  %44 = add i32 %20, 10
  store i32 %44, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #4
  store double 1.000000e+00, ptr %2, align 8, !tbaa !64
  %45 = add i32 %24, 11
  store i32 %45, ptr %9, align 8, !tbaa !66
  %46 = add i32 %20, 11
  store i32 %46, ptr %10, align 4, !tbaa !67
  call void @_ZNSt6vectorI12SparseTripleIdESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(16) %2)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #4
  %47 = add i32 %23, 1
  %48 = add i32 %23, 2
  %49 = add i32 %23, 3
  %50 = add i32 %23, 4
  %51 = add i32 %23, 5
  %52 = add i32 %23, 6
  %53 = add i32 %23, 7
  %54 = add i32 %23, 8
  %55 = add i32 %23, 9
  %56 = add i32 %23, 10
  %57 = add i32 %23, 11
  br label %.preheader52

.preheader52:                                     ; preds = %.preheader53, %.preheader52
  %indvars.iv = phi i64 [ 0, %.preheader53 ], [ %indvars.iv.next, %.preheader52 ]
  %58 = trunc nuw nsw i64 %indvars.iv to i32
  %59 = add i32 %24, %58
  %60 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef %indvars.iv, i64 noundef 0)
  %62 = load double, ptr %61, align 8, !tbaa !68
  %63 = fneg double %62
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %63, i32 noundef %59, i32 noundef %23)
  %64 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %65 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %64, i64 noundef %indvars.iv, i64 noundef 1)
  %66 = load double, ptr %65, align 8, !tbaa !68
  %67 = fneg double %66
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %67, i32 noundef %59, i32 noundef %47)
  %68 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %69 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %68, i64 noundef %indvars.iv, i64 noundef 2)
  %70 = load double, ptr %69, align 8, !tbaa !68
  %71 = fneg double %70
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %71, i32 noundef %59, i32 noundef %48)
  %72 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %72, i64 noundef %indvars.iv, i64 noundef 3)
  %74 = load double, ptr %73, align 8, !tbaa !68
  %75 = fneg double %74
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %75, i32 noundef %59, i32 noundef %49)
  %76 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %76, i64 noundef %indvars.iv, i64 noundef 4)
  %78 = load double, ptr %77, align 8, !tbaa !68
  %79 = fneg double %78
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %79, i32 noundef %59, i32 noundef %50)
  %80 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %80, i64 noundef %indvars.iv, i64 noundef 5)
  %82 = load double, ptr %81, align 8, !tbaa !68
  %83 = fneg double %82
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %83, i32 noundef %59, i32 noundef %51)
  %84 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %84, i64 noundef %indvars.iv, i64 noundef 6)
  %86 = load double, ptr %85, align 8, !tbaa !68
  %87 = fneg double %86
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %87, i32 noundef %59, i32 noundef %52)
  %88 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %89 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %88, i64 noundef %indvars.iv, i64 noundef 7)
  %90 = load double, ptr %89, align 8, !tbaa !68
  %91 = fneg double %90
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %91, i32 noundef %59, i32 noundef %53)
  %92 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %92, i64 noundef %indvars.iv, i64 noundef 8)
  %94 = load double, ptr %93, align 8, !tbaa !68
  %95 = fneg double %94
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %95, i32 noundef %59, i32 noundef %54)
  %96 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %96, i64 noundef %indvars.iv, i64 noundef 9)
  %98 = load double, ptr %97, align 8, !tbaa !68
  %99 = fneg double %98
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %99, i32 noundef %59, i32 noundef %55)
  %100 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %101 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %100, i64 noundef %indvars.iv, i64 noundef 10)
  %102 = load double, ptr %101, align 8, !tbaa !68
  %103 = fneg double %102
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %103, i32 noundef %59, i32 noundef %56)
  %104 = call noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %indvars.iv82) #4
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi12ELi0ELi12ELi12EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %104, i64 noundef %indvars.iv, i64 noundef 11)
  %106 = load double, ptr %105, align 8, !tbaa !68
  %107 = fneg double %106
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %107, i32 noundef %59, i32 noundef %57)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 12
  br i1 %exitcond.not, label %108, label %.preheader52, !llvm.loop !69

108:                                              ; preds = %.preheader52
  %109 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %indvars.iv82) #4
  %110 = load i32, ptr %109, align 4, !tbaa !71
  %111 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %indvars.iv82) #4
  %112 = load i32, ptr %111, align 4, !tbaa !71
  %.not = icmp eq i32 %110, 0
  br i1 %.not, label %._crit_edge, label %.preheader51.preheader

.preheader51.preheader:                           ; preds = %108
  %wide.trip.count = zext i32 %110 to i64
  br label %.preheader51

.preheader51:                                     ; preds = %.preheader51.preheader, %163
  %indvars.iv74 = phi i64 [ 0, %.preheader51.preheader ], [ %indvars.iv.next75, %163 ]
  %113 = trunc nuw i64 %indvars.iv74 to i32
  %114 = add i32 %112, %113
  %115 = zext i32 %114 to i64
  br label %.preheader

._crit_edge:                                      ; preds = %163, %108
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %3) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #4
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv82) #4
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEEEmlIdEEKNS_13CwiseBinaryOpINS_8internal17scalar_product_opIdNS6_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdS9_NS7_IdS9_EEEEEE5valueEE4typeEEEKS2_KNS6_19plain_constant_typeIS2_SE_E4typeEEERKS9_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.183") align 8 %4, ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 8 dereferenceable(8) %116)
  call void @_ZN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEC2INS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(96) %3, ptr noundef nonnull align 1 dereferenceable(1) %4)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #4
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 0)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %117)
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 0)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %118)
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 1)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %119)
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 1)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %120)
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 2)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %121)
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 2)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %122)
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 3)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %123)
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 3)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %124)
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 4)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %125)
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 4)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %126)
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 5)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %127)
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 5)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %128)
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 6)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %129)
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 6)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %130)
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 7)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %131)
  %132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 7)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %132)
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 8)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %133)
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 8)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %134)
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 9)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %135)
  %136 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 9)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %136)
  %137 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 10)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %137)
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 10)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %138)
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 11)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %139)
  %140 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef 11)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %140)
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %3) #4
  %indvars.iv.next83 = add nuw nsw i64 %indvars.iv82, 1
  %141 = load i32, ptr %5, align 8, !tbaa !5
  %142 = zext i32 %141 to i64
  %143 = icmp ult i64 %indvars.iv.next83, %142
  br i1 %143, label %.preheader53, label %._crit_edge63, !llvm.loop !72

.preheader:                                       ; preds = %.preheader51, %.preheader
  %indvars.iv70 = phi i64 [ 0, %.preheader51 ], [ %indvars.iv.next71, %.preheader ]
  %144 = trunc nuw nsw i64 %indvars.iv70 to i32
  %145 = add i32 %24, %144
  %146 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %115) #4
  %147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi3ELi0ELi12ELi3EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %146, i64 noundef %indvars.iv70, i64 noundef 0)
  %148 = load double, ptr %147, align 8, !tbaa !68
  %149 = fneg double %148
  %150 = call noundef i32 @_ZN10SparseCMPC15getControlIndexEj(ptr noundef nonnull align 16 dereferenceable(964) %0, i32 noundef %114)
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %149, i32 noundef %145, i32 noundef %150)
  %151 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %115) #4
  %152 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi3ELi0ELi12ELi3EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %151, i64 noundef %indvars.iv70, i64 noundef 1)
  %153 = load double, ptr %152, align 8, !tbaa !68
  %154 = fneg double %153
  %155 = call noundef i32 @_ZN10SparseCMPC15getControlIndexEj(ptr noundef nonnull align 16 dereferenceable(964) %0, i32 noundef %114)
  %156 = add i32 %155, 1
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %154, i32 noundef %145, i32 noundef %156)
  %157 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %115) #4
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi12ELi3ELi0ELi12ELi3EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %157, i64 noundef %indvars.iv70, i64 noundef 2)
  %159 = load double, ptr %158, align 8, !tbaa !68
  %160 = fneg double %159
  %161 = call noundef i32 @_ZN10SparseCMPC15getControlIndexEj(ptr noundef nonnull align 16 dereferenceable(964) %0, i32 noundef %114)
  %162 = add i32 %161, 2
  call void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964) %0, double noundef %160, i32 noundef %145, i32 noundef %162)
  %indvars.iv.next71 = add nuw nsw i64 %indvars.iv70, 1
  %exitcond73.not = icmp eq i64 %indvars.iv.next71, 12
  br i1 %exitcond73.not, label %163, label %.preheader, !llvm.loop !73

163:                                              ; preds = %.preheader
  %indvars.iv.next75 = add nuw nsw i64 %indvars.iv74, 1
  %exitcond77.not = icmp eq i64 %indvars.iv.next75, %wide.trip.count
  br i1 %exitcond77.not, label %._crit_edge, label %.preheader51, !llvm.loop !74
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(1152) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10SparseCMPC13getStateIndexEj(ptr noundef nonnull align 16 dereferenceable(964), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10SparseCMPC15getControlIndexEj(ptr noundef nonnull align 16 dereferenceable(964), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN10SparseCMPC13addConstraintEj(ptr noundef nonnull align 16 dereferenceable(964), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10SparseCMPC19addConstraintTripleEdjj(ptr noundef nonnull align 16 dereferenceable(964), double noundef, i32 noundef, i32 noundef) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEC2INS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKS1_KNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEES7_EEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(96), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { 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, !63, i64 952}
!6 = !{!"_ZTS10SparseCMPC", !7, i64 0, !13, i64 80, !17, i64 176, !17, i64 184, !17, i64 192, !17, i64 200, !18, i64 208, !18, i64 232, !18, i64 256, !18, i64 280, !22, i64 304, !13, i64 336, !13, i64 432, !13, i64 528, !26, i64 624, !31, i64 648, !35, i64 672, !39, i64 696, !43, i64 720, !47, i64 744, !51, i64 768, !51, i64 792, !55, i64 816, !55, i64 840, !35, i64 864, !35, i64 888, !35, i64 912, !59, i64 936, !63, i64 952, !63, i64 956, !63, i64 960}
!7 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE", !8, i64 0}
!8 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEE", !9, i64 0}
!9 = !{!"_ZTSN5Eigen12DenseStorageIdLi9ELi3ELi3ELi0EEE", !10, i64 0}
!10 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi9ELi0ELi0EEE", !11, i64 0}
!11 = !{!"omnipotent char", !12, i64 0}
!12 = !{!"Simple C++ TBAA"}
!13 = !{!"_ZTSN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEE", !14, i64 0}
!14 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEEEE", !15, i64 0}
!15 = !{!"_ZTSN5Eigen12DenseStorageIdLi12ELi12ELi1ELi0EEE", !16, i64 0}
!16 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi12ELi0ELi16EEE", !11, i64 0}
!17 = !{!"double", !11, i64 0}
!18 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !19, i64 0}
!19 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !20, i64 0}
!20 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !21, i64 0}
!21 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !11, i64 0}
!22 = !{!"_ZTSN5Eigen6MatrixIdLi4ELi1ELi0ELi4ELi1EEE", !23, i64 0}
!23 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEE", !24, i64 0}
!24 = !{!"_ZTSN5Eigen12DenseStorageIdLi4ELi4ELi1ELi0EEE", !25, i64 0}
!25 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi4ELi0ELi16EEE", !11, i64 0}
!26 = !{!"_ZTSSt6vectorI12ContactStateSaIS0_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseI12ContactStateSaIS0_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseI12ContactStateSaIS0_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseI12ContactStateSaIS0_EE17_Vector_impl_dataE", !30, i64 0, !30, i64 8, !30, i64 16}
!30 = !{!"any pointer", !11, i64 0}
!31 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !30, i64 0, !30, i64 8, !30, i64 16}
!35 = !{!"_ZTSSt6vectorIdSaIdEE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !30, i64 0, !30, i64 8, !30, i64 16}
!39 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !30, i64 0, !30, i64 8, !30, i64 16}
!43 = !{!"_ZTSSt6vectorI8BblockIDSaIS0_EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseI8BblockIDSaIS0_EE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseI8BblockIDSaIS0_EE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseI8BblockIDSaIS0_EE17_Vector_impl_dataE", !30, i64 0, !30, i64 8, !30, i64 16}
!47 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !30, i64 0, !30, i64 8, !30, i64 16}
!51 = !{!"_ZTSSt6vectorIjSaIjEE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !30, i64 0, !30, i64 8, !30, i64 16}
!55 = !{!"_ZTSSt6vectorI12SparseTripleIdESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseI12SparseTripleIdESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseI12SparseTripleIdESaIS1_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseI12SparseTripleIdESaIS1_EE17_Vector_impl_dataE", !30, i64 0, !30, i64 8, !30, i64 16}
!59 = !{!"_ZTSN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEE", !60, i64 0}
!60 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEEE", !61, i64 0}
!61 = !{!"_ZTSN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EEE", !30, i64 0, !62, i64 8}
!62 = !{!"long", !11, i64 0}
!63 = !{!"int", !11, i64 0}
!64 = !{!65, !17, i64 0}
!65 = !{!"_ZTS12SparseTripleIdE", !17, i64 0, !63, i64 8, !63, i64 12}
!66 = !{!65, !63, i64 8}
!67 = !{!65, !63, i64 12}
!68 = !{!17, !17, i64 0}
!69 = distinct !{!69, !70}
!70 = !{!"llvm.loop.mustprogress"}
!71 = !{!63, !63, i64 0}
!72 = distinct !{!72, !70}
!73 = distinct !{!73, !70}
!74 = distinct !{!74, !70}


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