; LLVM IR from erwincoumans/tiny-differentiable-simulator :: third_party/rbdl/src (Constraints)

; 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::CwiseNullaryOp" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%"class.Eigen::CwiseNullaryOp.113" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.SpatialVector_t = type { %"class.Eigen::Matrix.89" }
%"class.Eigen::Matrix.89" = type { %"class.Eigen::PlainObjectBase.90" }
%"class.Eigen::PlainObjectBase.90" = type { %"class.Eigen::DenseStorage.97" }
%"class.Eigen::DenseStorage.97" = type { %"struct.Eigen::internal::plain_array.98" }
%"struct.Eigen::internal::plain_array.98" = type { [6 x double] }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%class.Vector2_t = type { %"class.Eigen::Matrix.103" }
%"class.Eigen::Matrix.103" = type { %"class.Eigen::PlainObjectBase.104" }
%"class.Eigen::PlainObjectBase.104" = type { %"class.Eigen::DenseStorage.111" }
%"class.Eigen::DenseStorage.111" = type { %"struct.Eigen::internal::plain_array.112" }
%"struct.Eigen::internal::plain_array.112" = type { [2 x double] }
%class.Vector3_t = type { %"class.Eigen::Matrix.70" }
%"class.Eigen::Matrix.70" = type { %"class.Eigen::PlainObjectBase.71" }
%"class.Eigen::PlainObjectBase.71" = type { %"class.Eigen::DenseStorage.78" }
%"class.Eigen::DenseStorage.78" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.18" = type { i8 }
%"struct.RigidBodyDynamics::ConstraintSet" = type { i32, i8, %"class.std::vector", %"class.std::vector.1", %"class.std::vector.6", %"class.std::vector.6", %"class.std::vector.6", %"class.std::vector.11", %"class.std::vector.6", %"class.std::vector.16", %"class.std::vector.16", %"class.std::vector.6", %"class.std::vector.6", %"class.std::vector.21", %"class.std::vector.21", %"class.std::vector.27", %"class.std::vector.34", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::HouseholderQR", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.16", %"class.std::vector.27", %"class.std::vector.27", %"class.Eigen::Matrix", %"class.std::vector.60", %"class.std::vector.27", %"class.Eigen::Matrix", %"class.std::vector.16" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<RigidBodyDynamics::ConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::ConstraintSet::ConstraintType>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::ConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::ConstraintSet::ConstraintType>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::ConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::ConstraintSet::ConstraintType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::ConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::ConstraintSet::ConstraintType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<RigidBodyDynamics::CustomConstraint *, std::allocator<RigidBodyDynamics::CustomConstraint *>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::CustomConstraint *, std::allocator<RigidBodyDynamics::CustomConstraint *>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::CustomConstraint *, std::allocator<RigidBodyDynamics::CustomConstraint *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::CustomConstraint *, std::allocator<RigidBodyDynamics::CustomConstraint *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.6" = type { %"struct.std::_Vector_base.7" }
%"struct.std::_Vector_base.7" = 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.21" = type { %"class.std::vector.22" }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = type { %"struct.std::_Vector_base<Vector2_t, std::allocator<Vector2_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector2_t, std::allocator<Vector2_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector2_t, std::allocator<Vector2_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector2_t, std::allocator<Vector2_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Eigen::HouseholderQR" = type <{ %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix.51", i8, [7 x i8] }>
%"class.Eigen::Matrix.51" = type { %"class.Eigen::PlainObjectBase.52" }
%"class.Eigen::PlainObjectBase.52" = type { %"class.Eigen::DenseStorage.59" }
%"class.Eigen::DenseStorage.59" = type { ptr, i64 }
%"class.Eigen::Matrix.41" = type { %"class.Eigen::PlainObjectBase.42" }
%"class.Eigen::PlainObjectBase.42" = type { %"class.Eigen::DenseStorage.49" }
%"class.Eigen::DenseStorage.49" = type { ptr, i64, i64 }
%"class.std::vector.60" = type { %"class.std::vector.61" }
%"class.std::vector.61" = type { %"struct.std::_Vector_base.62" }
%"struct.std::_Vector_base.62" = type { %"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl" }
%"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.27" = type { %"class.std::vector.28" }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl" }
%"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { ptr, i64 }
%"struct.RigidBodyDynamics::CustomConstraint" = type <{ ptr, i32, [4 x i8] }>

@.str = external hidden unnamed_addr constant [15 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [112 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.5 = external hidden unnamed_addr constant [81 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics13ConstraintSet19AddCustomConstraintEPNS_16CustomConstraintEjjRKNS_4Math16SpatialTransformES6_bdPKc = external hidden unnamed_addr constant [213 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK17RigidBodyDynamics13ConstraintSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(1160)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE4ZeroEv(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseNullaryOp") align 8) #4 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8) #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

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

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

; Function Attrs: noreturn nounwind
declare void @abort() #0

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN17RigidBodyDynamics13ConstraintSet19AddCustomConstraintEPNS_16CustomConstraintEjjRKNS_4Math16SpatialTransformES6_bdPKc(ptr noundef nonnull align 8 dereferenceable(1160) %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(96) %4, ptr noundef nonnull align 8 dereferenceable(96) %5, i1 noundef zeroext %6, double noundef %7, ptr noundef %8) #2 align 2 personality ptr @__gxx_personality_v0 {
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i8, align 1
  %17 = alloca double, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca %class.SpatialVector_t, align 16
  %25 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %26 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca %"class.std::__cxx11::basic_string", align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca double, align 8
  %32 = alloca %class.Vector2_t, align 16
  %33 = alloca i32, align 4
  %34 = alloca %class.Vector3_t, align 8
  %35 = alloca %"class.Eigen::CwiseNullaryOp.113", align 8
  %36 = alloca %class.Vector3_t, align 8
  %37 = alloca %"class.Eigen::CwiseNullaryOp.113", align 8
  %38 = alloca %"class.std::vector.16", align 8
  %39 = alloca %class.Vector3_t, align 8
  %40 = alloca %"class.Eigen::CwiseNullaryOp.113", align 8
  %41 = alloca %"class.std::allocator.18", align 1
  %42 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store i32 %2, ptr %12, align 4, !tbaa !9
  store i32 %3, ptr %13, align 4, !tbaa !9
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  %43 = zext i1 %6 to i8
  store i8 %43, ptr %16, align 1, !tbaa !11
  store double %7, ptr %17, align 8, !tbaa !13
  store ptr %8, ptr %18, align 8, !tbaa !5
  %44 = load ptr, ptr %10, align 8
  %45 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 1
  %46 = load i8, ptr %45, align 4, !tbaa !15, !range !68, !noundef !69
  %47 = trunc i8 %46 to i1
  %48 = zext i1 %47 to i32
  %49 = icmp eq i32 %48, 0
  br i1 %49, label %50, label %51

50:                                               ; preds = %9
  br label %53

51:                                               ; preds = %9
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.4, i32 noundef 169, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics13ConstraintSet19AddCustomConstraintEPNS_16CustomConstraintEjjRKNS_4Math16SpatialTransformES6_bdPKc) #5
  unreachable

52:                                               ; No predecessors!
  br label %53

53:                                               ; preds = %52, %50
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %54 = call noundef i64 @_ZNK17RigidBodyDynamics13ConstraintSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(1160) %44)
  %55 = trunc i64 %54 to i32
  store i32 %55, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %56 = call noundef i64 @_ZNK17RigidBodyDynamics13ConstraintSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(1160) %44)
  %57 = load ptr, ptr %11, align 8, !tbaa !5
  %58 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomConstraint", ptr %57, i32 0, i32 1
  %59 = load i32, ptr %58, align 8, !tbaa !70
  %60 = zext i32 %59 to i64
  %61 = add i64 %56, %60
  %62 = trunc i64 %61 to i32
  store i32 %62, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  %63 = load ptr, ptr %18, align 8, !tbaa !5
  %64 = icmp ne ptr %63, null
  br i1 %64, label %65, label %73

65:                                               ; preds = %53
  %66 = load ptr, ptr %18, align 8, !tbaa !5
  %67 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef %66)
          to label %68 unwind label %69

68:                                               ; preds = %65
  br label %73

69:                                               ; preds = %65
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %22, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %23, align 4
  br label %295

73:                                               ; preds = %68, %53
  call void @llvm.lifetime.start.p0(i64 48, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %25)
          to label %74 unwind label %84

74:                                               ; preds = %73
  invoke void @_ZN15SpatialVector_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %24, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %75 unwind label %84

75:                                               ; preds = %74
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 392, ptr %26) #6
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %26)
          to label %76 unwind label %88

76:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %77

77:                                               ; preds = %177, %76
  %78 = load i32, ptr %27, align 4, !tbaa !9
  %79 = load ptr, ptr %11, align 8, !tbaa !5
  %80 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomConstraint", ptr %79, i32 0, i32 1
  %81 = load i32, ptr %80, align 8, !tbaa !70
  %82 = icmp ult i32 %78, %81
  br i1 %82, label %92, label %83

83:                                               ; preds = %77
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %198

84:                                               ; preds = %74, %73
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %22, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  br label %294

88:                                               ; preds = %75
  %89 = landingpad { ptr, i32 }
          cleanup
  %90 = extractvalue { ptr, i32 } %89, 0
  store ptr %90, ptr %22, align 8
  %91 = extractvalue { ptr, i32 } %89, 1
  store i32 %91, ptr %23, align 4
  br label %293

92:                                               ; preds = %77
  %93 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 2, ptr %28, align 4, !tbaa !72
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %93, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %94 unwind label %112

94:                                               ; preds = %92
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  %95 = getelementptr inbounds i8, ptr %26, i64 16
  %96 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %97 unwind label %116

97:                                               ; preds = %94
  %98 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef @.str.6)
          to label %99 unwind label %116

99:                                               ; preds = %97
  %100 = load i32, ptr %27, align 4, !tbaa !9
  %101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %98, i32 noundef %100)
          to label %102 unwind label %116

102:                                              ; preds = %99
  %103 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #6
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %29, ptr noundef nonnull align 8 dereferenceable(128) %26)
          to label %104 unwind label %120

104:                                              ; preds = %102
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %103, ptr noundef nonnull align 8 dereferenceable(32) %29)
          to label %105 unwind label %124

105:                                              ; preds = %104
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %26, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %106 unwind label %129

106:                                              ; preds = %105
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #6
  %107 = load i32, ptr %27, align 4, !tbaa !9
  %108 = icmp eq i32 %107, 0
  br i1 %108, label %109, label %133

109:                                              ; preds = %106
  %110 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 6
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %110, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %111 unwind label %116

111:                                              ; preds = %109
  br label %133

112:                                              ; preds = %92
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %22, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %197

116:                                              ; preds = %143, %140, %137, %135, %133, %109, %99, %97, %94
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %22, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %23, align 4
  br label %197

120:                                              ; preds = %102
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %22, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %23, align 4
  br label %128

124:                                              ; preds = %104
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %22, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %23, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #6
  br label %128

128:                                              ; preds = %124, %120
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #6
  br label %197

129:                                              ; preds = %105
  %130 = landingpad { ptr, i32 }
          cleanup
  %131 = extractvalue { ptr, i32 } %130, 0
  store ptr %131, ptr %22, align 8
  %132 = extractvalue { ptr, i32 } %130, 1
  store i32 %132, ptr %23, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #6
  br label %197

133:                                              ; preds = %111, %106
  %134 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 11
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %134, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %135 unwind label %116

135:                                              ; preds = %133
  %136 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 12
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %136, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %137 unwind label %116

137:                                              ; preds = %135
  %138 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 13
  %139 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %138, ptr noundef nonnull align 8 dereferenceable(96) %139)
          to label %140 unwind label %116

140:                                              ; preds = %137
  %141 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 14
  %142 = load ptr, ptr %15, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %141, ptr noundef nonnull align 8 dereferenceable(96) %142)
          to label %143 unwind label %116

143:                                              ; preds = %140
  %144 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 15
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %144, ptr noundef nonnull align 16 dereferenceable(48) %24)
          to label %145 unwind label %116

145:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  store double 0.000000e+00, ptr %31, align 8, !tbaa !13
  %146 = load i8, ptr %16, align 1, !tbaa !11, !range !68, !noundef !69
  %147 = trunc i8 %146 to i1
  br i1 %147, label %148, label %163

148:                                              ; preds = %145
  %149 = load double, ptr %17, align 8, !tbaa !13
  %150 = fcmp oeq double %149, 0.000000e+00
  br i1 %150, label %151, label %160

151:                                              ; preds = %148
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.5)
          to label %153 unwind label %156

153:                                              ; preds = %151
  %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %155 unwind label %156

155:                                              ; preds = %153
  call void @abort() #5
  unreachable

156:                                              ; preds = %153, %151
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %22, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %23, align 4
  br label %196

160:                                              ; preds = %148
  %161 = load double, ptr %17, align 8, !tbaa !13
  %162 = fdiv double 1.000000e+00, %161
  store double %162, ptr %31, align 8, !tbaa !13
  br label %163

163:                                              ; preds = %160, %145
  %164 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 16
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #6
  invoke void @_ZN9Vector2_tC2ERKdS1_(ptr noundef nonnull align 16 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %165 unwind label %180

165:                                              ; preds = %163
  invoke void @_ZNSt6vectorI9Vector2_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %164, ptr noundef nonnull align 16 dereferenceable(16) %32)
          to label %166 unwind label %180

166:                                              ; preds = %165
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #6
  %167 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  store i32 0, ptr %33, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %167, ptr noundef nonnull align 4 dereferenceable(4) %33)
          to label %168 unwind label %184

168:                                              ; preds = %166
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  %169 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 9
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %35)
          to label %170 unwind label %188

170:                                              ; preds = %168
  invoke void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %171 unwind label %188

171:                                              ; preds = %170
  invoke void @_ZNSt6vectorI9Vector3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %169, ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %172 unwind label %188

172:                                              ; preds = %171
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #6
  %173 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 10
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %37)
          to label %174 unwind label %192

174:                                              ; preds = %172
  invoke void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %175 unwind label %192

175:                                              ; preds = %174
  invoke void @_ZNSt6vectorI9Vector3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %173, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %176 unwind label %192

176:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %177

177:                                              ; preds = %176
  %178 = load i32, ptr %27, align 4, !tbaa !9
  %179 = add i32 %178, 1
  store i32 %179, ptr %27, align 4, !tbaa !9
  br label %77, !llvm.loop !74

180:                                              ; preds = %165, %163
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %22, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #6
  br label %196

184:                                              ; preds = %166
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %22, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %196

188:                                              ; preds = %171, %170, %168
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %22, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #6
  br label %196

192:                                              ; preds = %175, %174, %172
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %22, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #6
  br label %196

196:                                              ; preds = %192, %188, %184, %180, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %197

197:                                              ; preds = %196, %129, %128, %116, %112
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %292

198:                                              ; preds = %83
  %199 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 17
  %200 = load i32, ptr %20, align 4, !tbaa !9
  %201 = zext i32 %200 to i64
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %199, i64 noundef %201)
          to label %202 unwind label %236

202:                                              ; preds = %198
  %203 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 18
  %204 = load i32, ptr %20, align 4, !tbaa !9
  %205 = zext i32 %204 to i64
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %203, i64 noundef %205)
          to label %206 unwind label %236

206:                                              ; preds = %202
  %207 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 19
  %208 = load i32, ptr %20, align 4, !tbaa !9
  %209 = zext i32 %208 to i64
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %207, i64 noundef %209)
          to label %210 unwind label %236

210:                                              ; preds = %206
  %211 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 20
  %212 = load i32, ptr %20, align 4, !tbaa !9
  %213 = zext i32 %212 to i64
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %211, i64 noundef %213)
          to label %214 unwind label %236

214:                                              ; preds = %210
  %215 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 21
  %216 = load i32, ptr %20, align 4, !tbaa !9
  %217 = zext i32 %216 to i64
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %215, i64 noundef %217)
          to label %218 unwind label %236

218:                                              ; preds = %214
  %219 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 22
  %220 = load i32, ptr %20, align 4, !tbaa !9
  %221 = zext i32 %220 to i64
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %219, i64 noundef %221)
          to label %222 unwind label %236

222:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #6
  %223 = load i32, ptr %20, align 4, !tbaa !9
  %224 = zext i32 %223 to i64
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %40) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %40)
          to label %225 unwind label %240

225:                                              ; preds = %222
  invoke void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %226 unwind label %240

226:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #6
  call void @_ZNSaI9Vector3_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  invoke void @_ZNSt6vectorI9Vector3_tSaIS0_EEC2EmRKS0_RKS1_(ptr noundef nonnull align 8 dereferenceable(24) %38, i64 noundef %224, ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %227 unwind label %244

227:                                              ; preds = %226
  %228 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 53
  %229 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %228, ptr noundef nonnull align 8 dereferenceable(24) %38) #6
  call void @_ZNSt6vectorI9Vector3_tSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #6
  call void @_ZNSt15__new_allocatorI9Vector3_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %230 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %230, ptr %42, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %280, %227
  %232 = load i32, ptr %42, align 4, !tbaa !9
  %233 = load i32, ptr %20, align 4, !tbaa !9
  %234 = icmp ult i32 %232, %233
  br i1 %234, label %249, label %235

235:                                              ; preds = %231
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %287

236:                                              ; preds = %287, %218, %214, %210, %206, %202, %198
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %22, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %23, align 4
  br label %292

240:                                              ; preds = %225, %222
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %22, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %23, align 4
  br label %248

244:                                              ; preds = %226
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %22, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %23, align 4
  call void @_ZNSt15__new_allocatorI9Vector3_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %41) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #6
  br label %248

248:                                              ; preds = %244, %240
  call void @llvm.lifetime.end.p0(i64 16, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #6
  br label %292

249:                                              ; preds = %231
  %250 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 17
  %251 = load i32, ptr %42, align 4, !tbaa !9
  %252 = zext i32 %251 to i64
  %253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %250, i64 noundef %252)
          to label %254 unwind label %283

254:                                              ; preds = %249
  store double 0.000000e+00, ptr %253, align 8, !tbaa !13
  %255 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 18
  %256 = load i32, ptr %42, align 4, !tbaa !9
  %257 = zext i32 %256 to i64
  %258 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %255, i64 noundef %257)
          to label %259 unwind label %283

259:                                              ; preds = %254
  store double 0.000000e+00, ptr %258, align 8, !tbaa !13
  %260 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 19
  %261 = load i32, ptr %42, align 4, !tbaa !9
  %262 = zext i32 %261 to i64
  %263 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %260, i64 noundef %262)
          to label %264 unwind label %283

264:                                              ; preds = %259
  store double 0.000000e+00, ptr %263, align 8, !tbaa !13
  %265 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 20
  %266 = load i32, ptr %42, align 4, !tbaa !9
  %267 = zext i32 %266 to i64
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %265, i64 noundef %267)
          to label %269 unwind label %283

269:                                              ; preds = %264
  store double 0.000000e+00, ptr %268, align 8, !tbaa !13
  %270 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 21
  %271 = load i32, ptr %42, align 4, !tbaa !9
  %272 = zext i32 %271 to i64
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %270, i64 noundef %272)
          to label %274 unwind label %283

274:                                              ; preds = %269
  store double 0.000000e+00, ptr %273, align 8, !tbaa !13
  %275 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 22
  %276 = load i32, ptr %42, align 4, !tbaa !9
  %277 = zext i32 %276 to i64
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %275, i64 noundef %277)
          to label %279 unwind label %283

279:                                              ; preds = %274
  store double 0.000000e+00, ptr %278, align 8, !tbaa !13
  br label %280

280:                                              ; preds = %279
  %281 = load i32, ptr %42, align 4, !tbaa !9
  %282 = add i32 %281, 1
  store i32 %282, ptr %42, align 4, !tbaa !9
  br label %231, !llvm.loop !76

283:                                              ; preds = %274, %269, %264, %259, %254, %249
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %22, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %292

287:                                              ; preds = %235
  %288 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %44, i32 0, i32 7
  invoke void @_ZNSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %288, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %289 unwind label %236

289:                                              ; preds = %287
  %290 = load i32, ptr %20, align 4, !tbaa !9
  %291 = sub i32 %290, 1
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %26) #6
  call void @llvm.lifetime.end.p0(i64 392, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %24) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  ret i32 %291

292:                                              ; preds = %283, %248, %236, %197
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %26) #6
  br label %293

293:                                              ; preds = %292, %88
  call void @llvm.lifetime.end.p0(i64 392, ptr %26) #6
  br label %294

294:                                              ; preds = %293, %84
  call void @llvm.lifetime.end.p0(i64 48, ptr %24) #6
  br label %295

295:                                              ; preds = %294, %69
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %296

296:                                              ; preds = %295
  %297 = load ptr, ptr %22, align 8
  %298 = load i32, ptr %23, align 4
  %299 = insertvalue { ptr, i32 } poison, ptr %297, 0
  %300 = insertvalue { ptr, i32 } %299, i32 %298, 1
  resume { ptr, i32 } %300
}

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #3 align 2

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

attributes #0 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noreturn nounwind }
attributes #6 = { 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 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!16, !12, i64 4}
!16 = !{!"_ZTSN17RigidBodyDynamics13ConstraintSetE", !17, i64 0, !12, i64 4, !18, i64 8, !22, i64 32, !26, i64 56, !26, i64 80, !26, i64 104, !30, i64 128, !26, i64 152, !34, i64 176, !34, i64 200, !26, i64 224, !26, i64 248, !38, i64 272, !38, i64 296, !43, i64 320, !48, i64 344, !52, i64 368, !52, i64 384, !52, i64 400, !52, i64 416, !52, i64 432, !52, i64 448, !56, i64 464, !52, i64 488, !52, i64 504, !56, i64 520, !56, i64 544, !52, i64 568, !52, i64 584, !56, i64 600, !56, i64 624, !56, i64 648, !56, i64 672, !59, i64 696, !56, i64 760, !56, i64 784, !56, i64 808, !52, i64 832, !52, i64 848, !56, i64 864, !52, i64 888, !52, i64 904, !52, i64 920, !43, i64 936, !43, i64 960, !34, i64 984, !43, i64 1008, !43, i64 1032, !52, i64 1056, !63, i64 1072, !43, i64 1096, !52, i64 1120, !34, i64 1136}
!17 = !{!"_ZTSN17RigidBodyDynamics4Math12LinearSolverE", !7, i64 0}
!18 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt6vectorIjSaIjEE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIPN17RigidBodyDynamics16CustomConstraintESaIS2_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics16CustomConstraintESaIS2_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics16CustomConstraintESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTSSt6vectorI9Vector3_tSaIS0_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseI9Vector3_tSaIS0_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!"_ZTSSt6vectorI15SpatialVector_tSaIS0_EE", !44, i64 0}
!44 = !{!"_ZTSSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!48 = !{!"_ZTSSt6vectorI9Vector2_tSaIS0_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseI9Vector2_tSaIS0_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseI9Vector2_tSaIS0_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseI9Vector2_tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!52 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !53, i64 0}
!53 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !54, i64 0}
!54 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !6, i64 0, !55, i64 8}
!55 = !{!"long", !7, i64 0}
!56 = !{!"_ZTSN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEE", !57, i64 0}
!57 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE", !58, i64 0}
!58 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EEE", !6, i64 0, !55, i64 8, !55, i64 16}
!59 = !{!"_ZTSN5Eigen13HouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE", !56, i64 0, !52, i64 24, !60, i64 40, !12, i64 56}
!60 = !{!"_ZTSN5Eigen6MatrixIdLi1ELin1ELi1ELi1ELin1EEE", !61, i64 0}
!61 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi1ELin1ELi1ELi1ELin1EEEEE", !62, i64 0}
!62 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELi1ELin1ELi1EEE", !6, i64 0, !55, i64 8}
!63 = !{!"_ZTSSt6vectorI15SpatialMatrix_tSaIS0_EE", !64, i64 0}
!64 = !{!"_ZTSSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !65, i64 0}
!65 = !{!"_ZTSSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !66, i64 0}
!66 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!68 = !{i8 0, i8 2}
!69 = !{}
!70 = !{!71, !10, i64 8}
!71 = !{!"_ZTSN17RigidBodyDynamics16CustomConstraintE", !10, i64 8}
!72 = !{!73, !73, i64 0}
!73 = !{!"_ZTSN17RigidBodyDynamics13ConstraintSet14ConstraintTypeE", !7, i64 0}
!74 = distinct !{!74, !75}
!75 = !{!"llvm.loop.mustprogress"}
!76 = distinct !{!76, !75}


; 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::CwiseNullaryOp" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%"class.Eigen::CwiseNullaryOp.113" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.SpatialVector_t = type { %"class.Eigen::Matrix.89" }
%"class.Eigen::Matrix.89" = type { %"class.Eigen::PlainObjectBase.90" }
%"class.Eigen::PlainObjectBase.90" = type { %"class.Eigen::DenseStorage.97" }
%"class.Eigen::DenseStorage.97" = type { %"struct.Eigen::internal::plain_array.98" }
%"struct.Eigen::internal::plain_array.98" = type { [6 x double] }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%class.Vector2_t = type { %"class.Eigen::Matrix.103" }
%"class.Eigen::Matrix.103" = type { %"class.Eigen::PlainObjectBase.104" }
%"class.Eigen::PlainObjectBase.104" = type { %"class.Eigen::DenseStorage.111" }
%"class.Eigen::DenseStorage.111" = type { %"struct.Eigen::internal::plain_array.112" }
%"struct.Eigen::internal::plain_array.112" = type { [2 x double] }
%class.Vector3_t = type { %"class.Eigen::Matrix.70" }
%"class.Eigen::Matrix.70" = type { %"class.Eigen::PlainObjectBase.71" }
%"class.Eigen::PlainObjectBase.71" = type { %"class.Eigen::DenseStorage.78" }
%"class.Eigen::DenseStorage.78" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.18" = type { i8 }

@.str = external hidden unnamed_addr constant [15 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [112 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.5 = external hidden unnamed_addr constant [81 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics13ConstraintSet19AddCustomConstraintEPNS_16CustomConstraintEjjRKNS_4Math16SpatialTransformES6_bdPKc = external hidden unnamed_addr constant [213 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i64 @_ZNK17RigidBodyDynamics13ConstraintSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(1160)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE4ZeroEv(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseNullaryOp") align 8) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #3 align 2

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

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

; 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 #2 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)) #4

; Function Attrs: noreturn nounwind
declare void @abort() local_unnamed_addr #0

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN17RigidBodyDynamics13ConstraintSet19AddCustomConstraintEPNS_16CustomConstraintEjjRKNS_4Math16SpatialTransformES6_bdPKc(ptr noundef nonnull align 8 dereferenceable(1160) %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef nonnull align 8 dereferenceable(96) %4, ptr noundef nonnull align 8 dereferenceable(96) %5, i1 noundef zeroext %6, double noundef %7, ptr noundef %8) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %class.SpatialVector_t, align 16
  %16 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %17 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca double, align 8
  %22 = alloca %class.Vector2_t, align 16
  %23 = alloca i32, align 4
  %24 = alloca %class.Vector3_t, align 8
  %25 = alloca %"class.Eigen::CwiseNullaryOp.113", align 8
  %26 = alloca %class.Vector3_t, align 8
  %27 = alloca %"class.Eigen::CwiseNullaryOp.113", align 8
  %28 = alloca %"class.std::vector.16", align 8
  %29 = alloca %class.Vector3_t, align 8
  %30 = alloca %"class.Eigen::CwiseNullaryOp.113", align 8
  %31 = alloca %"class.std::allocator.18", align 1
  store ptr %1, ptr %10, align 8, !tbaa !5
  store i32 %2, ptr %11, align 4, !tbaa !9
  store i32 %3, ptr %12, align 4, !tbaa !9
  %32 = getelementptr inbounds i8, ptr %0, i64 4
  %33 = load i8, ptr %32, align 4, !tbaa !11, !range !65, !noundef !66
  %34 = icmp eq i8 %33, 0
  br i1 %34, label %36, label %35

35:                                               ; preds = %9
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.4, i32 noundef 169, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics13ConstraintSet19AddCustomConstraintEPNS_16CustomConstraintEjjRKNS_4Math16SpatialTransformES6_bdPKc) #5
  unreachable

36:                                               ; preds = %9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  %37 = tail call noundef i64 @_ZNK17RigidBodyDynamics13ConstraintSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(1160) %0)
  %38 = trunc i64 %37 to i32
  store i32 %38, ptr %13, align 4, !tbaa !9
  %39 = tail call noundef i64 @_ZNK17RigidBodyDynamics13ConstraintSet4sizeEv(ptr noundef nonnull align 8 dereferenceable(1160) %0)
  %40 = getelementptr inbounds i8, ptr %1, i64 8
  %41 = load i32, ptr %40, align 8, !tbaa !67
  %42 = trunc i64 %39 to i32
  %43 = add i32 %41, %42
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  %.not = icmp eq ptr %8, null
  br i1 %.not, label %48, label %44

44:                                               ; preds = %36
  %45 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull %8)
          to label %48 unwind label %46

46:                                               ; preds = %44
  %47 = landingpad { ptr, i32 }
          cleanup
  br label %194

48:                                               ; preds = %44, %36
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %16)
          to label %49 unwind label %99

49:                                               ; preds = %48
  invoke void @_ZN15SpatialVector_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %15, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %50 unwind label %99

50:                                               ; preds = %49
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %17) #6
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %17)
          to label %.preheader unwind label %101

.preheader:                                       ; preds = %50
  %51 = load i32, ptr %40, align 8, !tbaa !67
  %.not58 = icmp eq i32 %51, 0
  br i1 %.not58, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader
  %52 = getelementptr inbounds i8, ptr %0, i64 8
  %53 = getelementptr inbounds i8, ptr %17, i64 16
  %54 = getelementptr inbounds i8, ptr %0, i64 32
  %55 = getelementptr inbounds i8, ptr %0, i64 104
  %56 = getelementptr inbounds i8, ptr %0, i64 224
  %57 = getelementptr inbounds i8, ptr %0, i64 248
  %58 = getelementptr inbounds i8, ptr %0, i64 272
  %59 = getelementptr inbounds i8, ptr %0, i64 296
  %60 = getelementptr inbounds i8, ptr %0, i64 320
  %61 = fcmp oeq double %7, 0.000000e+00
  %62 = fdiv double 1.000000e+00, %7
  %63 = getelementptr inbounds i8, ptr %0, i64 344
  %64 = getelementptr inbounds i8, ptr %0, i64 152
  %65 = getelementptr inbounds i8, ptr %0, i64 176
  %66 = getelementptr inbounds i8, ptr %0, i64 200
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  store i32 2, ptr %18, align 4, !tbaa !69
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %52, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %67 unwind label %.loopexit.split-lp

67:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  %68 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %69 unwind label %.loopexit.split-lp61

69:                                               ; preds = %67
  %70 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull @.str.6)
          to label %71 unwind label %.loopexit.split-lp61

71:                                               ; preds = %69
  %72 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %70, i32 noundef 0)
          to label %73 unwind label %.loopexit.split-lp61

73:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(128) %17)
          to label %74 unwind label %.loopexit.split-lp66

74:                                               ; preds = %73
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %75 unwind label %.loopexit.split-lp71

75:                                               ; preds = %74
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %17, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %76 unwind label %.loopexit.split-lp76

76:                                               ; preds = %75
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %55, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %77 unwind label %.loopexit.split-lp61

77:                                               ; preds = %76
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %78 unwind label %.loopexit.split-lp61

78:                                               ; preds = %77
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %79 unwind label %.loopexit.split-lp61

79:                                               ; preds = %78
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %58, ptr noundef nonnull align 8 dereferenceable(96) %4)
          to label %80 unwind label %.loopexit.split-lp61

80:                                               ; preds = %79
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef nonnull align 8 dereferenceable(96) %5)
          to label %81 unwind label %.loopexit.split-lp61

81:                                               ; preds = %80
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %60, ptr noundef nonnull align 16 dereferenceable(48) %15)
          to label %82 unwind label %.loopexit.split-lp61

82:                                               ; preds = %81
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  store double 0.000000e+00, ptr %21, align 8, !tbaa !71
  br i1 %6, label %83, label %85

83:                                               ; preds = %82
  br i1 %61, label %.loopexit80, label %84

84:                                               ; preds = %83
  store double %62, ptr %21, align 8, !tbaa !71
  br label %85

85:                                               ; preds = %84, %82
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #6
  invoke void @_ZN9Vector2_tC2ERKdS1_(ptr noundef nonnull align 16 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %86 unwind label %.loopexit.split-lp82

86:                                               ; preds = %85
  invoke void @_ZNSt6vectorI9Vector2_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %63, ptr noundef nonnull align 16 dereferenceable(16) %22)
          to label %87 unwind label %.loopexit.split-lp82

87:                                               ; preds = %86
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  store i32 0, ptr %23, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %64, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %88 unwind label %.loopexit.split-lp87

88:                                               ; preds = %87
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %25)
          to label %89 unwind label %.loopexit.split-lp92

89:                                               ; preds = %88
  invoke void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %90 unwind label %.loopexit.split-lp92

90:                                               ; preds = %89
  invoke void @_ZNSt6vectorI9Vector3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %91 unwind label %.loopexit.split-lp92

91:                                               ; preds = %90
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %27)
          to label %92 unwind label %.loopexit.split-lp97

92:                                               ; preds = %91
  invoke void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %93 unwind label %.loopexit.split-lp97

93:                                               ; preds = %92
  invoke void @_ZNSt6vectorI9Vector3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %94 unwind label %.loopexit.split-lp97

94:                                               ; preds = %93
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  %95 = load i32, ptr %40, align 8, !tbaa !67
  %96 = icmp ugt i32 %95, 1
  br i1 %96, label %.peel.next, label %._crit_edge

._crit_edge:                                      ; preds = %139, %94, %.preheader
  %97 = getelementptr inbounds i8, ptr %0, i64 368
  %98 = zext i32 %43 to i64
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %97, i64 noundef %98)
          to label %148 unwind label %168

99:                                               ; preds = %49, %48
  %100 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #6
  br label %193

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

.peel.next:                                       ; preds = %94, %139
  %.03053 = phi i32 [ %140, %139 ], [ 1, %94 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  store i32 2, ptr %18, align 4, !tbaa !69
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %52, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %103 unwind label %.loopexit

103:                                              ; preds = %.peel.next
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %105 unwind label %.loopexit60

105:                                              ; preds = %103
  %106 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull @.str.6)
          to label %107 unwind label %.loopexit60

107:                                              ; preds = %105
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %106, i32 noundef %.03053)
          to label %109 unwind label %.loopexit60

109:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(128) %17)
          to label %110 unwind label %.loopexit65

110:                                              ; preds = %109
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %111 unwind label %.loopexit70

111:                                              ; preds = %110
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128) %17, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %116 unwind label %.loopexit75

.loopexit:                                        ; preds = %.peel.next
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %112

.loopexit.split-lp:                               ; preds = %.lr.ph
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %112

112:                                              ; preds = %.loopexit.split-lp, %.loopexit
  %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br label %191

.loopexit60:                                      ; preds = %103, %105, %107, %116, %117, %118, %119, %120
  %lpad.loopexit62 = landingpad { ptr, i32 }
          cleanup
  br label %191

.loopexit.split-lp61:                             ; preds = %67, %69, %71, %76, %77, %78, %79, %80, %81
  %lpad.loopexit.split-lp63 = landingpad { ptr, i32 }
          cleanup
  br label %191

.loopexit65:                                      ; preds = %109
  %lpad.loopexit67 = landingpad { ptr, i32 }
          cleanup
  br label %114

.loopexit.split-lp66:                             ; preds = %73
  %lpad.loopexit.split-lp68 = landingpad { ptr, i32 }
          cleanup
  br label %114

.loopexit70:                                      ; preds = %110
  %lpad.loopexit72 = landingpad { ptr, i32 }
          cleanup
  br label %113

.loopexit.split-lp71:                             ; preds = %74
  %lpad.loopexit.split-lp73 = landingpad { ptr, i32 }
          cleanup
  br label %113

113:                                              ; preds = %.loopexit.split-lp71, %.loopexit70
  %lpad.phi74 = phi { ptr, i32 } [ %lpad.loopexit72, %.loopexit70 ], [ %lpad.loopexit.split-lp73, %.loopexit.split-lp71 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %114

114:                                              ; preds = %.loopexit65, %.loopexit.split-lp66, %113
  %.pn44 = phi { ptr, i32 } [ %lpad.phi74, %113 ], [ %lpad.loopexit67, %.loopexit65 ], [ %lpad.loopexit.split-lp68, %.loopexit.split-lp66 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  br label %191

.loopexit75:                                      ; preds = %111
  %lpad.loopexit77 = landingpad { ptr, i32 }
          cleanup
  br label %115

.loopexit.split-lp76:                             ; preds = %75
  %lpad.loopexit.split-lp78 = landingpad { ptr, i32 }
          cleanup
  br label %115

115:                                              ; preds = %.loopexit.split-lp76, %.loopexit75
  %lpad.phi79 = phi { ptr, i32 } [ %lpad.loopexit77, %.loopexit75 ], [ %lpad.loopexit.split-lp78, %.loopexit.split-lp76 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  br label %191

116:                                              ; preds = %111
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #6
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %117 unwind label %.loopexit60

117:                                              ; preds = %116
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %118 unwind label %.loopexit60

118:                                              ; preds = %117
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %58, ptr noundef nonnull align 8 dereferenceable(96) %4)
          to label %119 unwind label %.loopexit60

119:                                              ; preds = %118
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef nonnull align 8 dereferenceable(96) %5)
          to label %120 unwind label %.loopexit60

120:                                              ; preds = %119
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %60, ptr noundef nonnull align 16 dereferenceable(48) %15)
          to label %121 unwind label %.loopexit60

121:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  store double 0.000000e+00, ptr %21, align 8, !tbaa !71
  br i1 %6, label %122, label %130

122:                                              ; preds = %121
  br i1 %61, label %.loopexit80, label %129

.loopexit80:                                      ; preds = %122, %83
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.5)
          to label %124 unwind label %127

124:                                              ; preds = %.loopexit80
  %125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %126 unwind label %127

126:                                              ; preds = %124
  call void @abort() #5
  unreachable

127:                                              ; preds = %124, %.loopexit80
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %147

129:                                              ; preds = %122
  store double %62, ptr %21, align 8, !tbaa !71
  br label %130

130:                                              ; preds = %129, %121
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #6
  invoke void @_ZN9Vector2_tC2ERKdS1_(ptr noundef nonnull align 16 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %131 unwind label %.loopexit81

131:                                              ; preds = %130
  invoke void @_ZNSt6vectorI9Vector2_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %63, ptr noundef nonnull align 16 dereferenceable(16) %22)
          to label %132 unwind label %.loopexit81

132:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  store i32 0, ptr %23, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %64, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %133 unwind label %.loopexit86

133:                                              ; preds = %132
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %25)
          to label %134 unwind label %.loopexit91

134:                                              ; preds = %133
  invoke void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %24, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %135 unwind label %.loopexit91

135:                                              ; preds = %134
  invoke void @_ZNSt6vectorI9Vector3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %24)
          to label %136 unwind label %.loopexit91

136:                                              ; preds = %135
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %27)
          to label %137 unwind label %.loopexit96

137:                                              ; preds = %136
  invoke void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %138 unwind label %.loopexit96

138:                                              ; preds = %137
  invoke void @_ZNSt6vectorI9Vector3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %66, ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %139 unwind label %.loopexit96

139:                                              ; preds = %138
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  %140 = add nuw i32 %.03053, 1
  %141 = load i32, ptr %40, align 8, !tbaa !67
  %142 = icmp ult i32 %140, %141
  br i1 %142, label %.peel.next, label %._crit_edge, !llvm.loop !73

.loopexit81:                                      ; preds = %130, %131
  %lpad.loopexit83 = landingpad { ptr, i32 }
          cleanup
  br label %143

.loopexit.split-lp82:                             ; preds = %85, %86
  %lpad.loopexit.split-lp84 = landingpad { ptr, i32 }
          cleanup
  br label %143

143:                                              ; preds = %.loopexit.split-lp82, %.loopexit81
  %lpad.phi85 = phi { ptr, i32 } [ %lpad.loopexit83, %.loopexit81 ], [ %lpad.loopexit.split-lp84, %.loopexit.split-lp82 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  br label %147

.loopexit86:                                      ; preds = %132
  %lpad.loopexit88 = landingpad { ptr, i32 }
          cleanup
  br label %144

.loopexit.split-lp87:                             ; preds = %87
  %lpad.loopexit.split-lp89 = landingpad { ptr, i32 }
          cleanup
  br label %144

144:                                              ; preds = %.loopexit.split-lp87, %.loopexit86
  %lpad.phi90 = phi { ptr, i32 } [ %lpad.loopexit88, %.loopexit86 ], [ %lpad.loopexit.split-lp89, %.loopexit.split-lp87 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  br label %147

.loopexit91:                                      ; preds = %133, %134, %135
  %lpad.loopexit93 = landingpad { ptr, i32 }
          cleanup
  br label %145

.loopexit.split-lp92:                             ; preds = %88, %89, %90
  %lpad.loopexit.split-lp94 = landingpad { ptr, i32 }
          cleanup
  br label %145

145:                                              ; preds = %.loopexit.split-lp92, %.loopexit91
  %lpad.phi95 = phi { ptr, i32 } [ %lpad.loopexit93, %.loopexit91 ], [ %lpad.loopexit.split-lp94, %.loopexit.split-lp92 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  br label %147

.loopexit96:                                      ; preds = %136, %137, %138
  %lpad.loopexit98 = landingpad { ptr, i32 }
          cleanup
  br label %146

.loopexit.split-lp97:                             ; preds = %91, %92, %93
  %lpad.loopexit.split-lp99 = landingpad { ptr, i32 }
          cleanup
  br label %146

146:                                              ; preds = %.loopexit.split-lp97, %.loopexit96
  %lpad.phi100 = phi { ptr, i32 } [ %lpad.loopexit98, %.loopexit96 ], [ %lpad.loopexit.split-lp99, %.loopexit.split-lp97 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  br label %147

147:                                              ; preds = %146, %145, %144, %143, %127
  %.pn46 = phi { ptr, i32 } [ %128, %127 ], [ %lpad.phi100, %146 ], [ %lpad.phi95, %145 ], [ %lpad.phi90, %144 ], [ %lpad.phi85, %143 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  br label %191

148:                                              ; preds = %._crit_edge
  %149 = getelementptr inbounds i8, ptr %0, i64 384
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %149, i64 noundef %98)
          to label %150 unwind label %168

150:                                              ; preds = %148
  %151 = getelementptr inbounds i8, ptr %0, i64 400
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %151, i64 noundef %98)
          to label %152 unwind label %168

152:                                              ; preds = %150
  %153 = getelementptr inbounds i8, ptr %0, i64 416
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %153, i64 noundef %98)
          to label %154 unwind label %168

154:                                              ; preds = %152
  %155 = getelementptr inbounds i8, ptr %0, i64 432
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %155, i64 noundef %98)
          to label %156 unwind label %168

156:                                              ; preds = %154
  %157 = getelementptr inbounds i8, ptr %0, i64 448
  invoke void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE18conservativeResizeEl(ptr noundef nonnull align 8 dereferenceable(16) %157, i64 noundef %98)
          to label %158 unwind label %168

158:                                              ; preds = %156
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %30)
          to label %159 unwind label %170

159:                                              ; preds = %158
  invoke void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %160 unwind label %170

160:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #6
  call void @_ZNSaI9Vector3_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  invoke void @_ZNSt6vectorI9Vector3_tSaIS0_EEC2EmRKS0_RKS1_(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %98, ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %161 unwind label %172

161:                                              ; preds = %160
  %162 = getelementptr inbounds i8, ptr %0, i64 1136
  %163 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEaSEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %162, ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  call void @_ZNSt6vectorI9Vector3_tSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  call void @_ZNSt15__new_allocatorI9Vector3_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #6
  %164 = load i32, ptr %13, align 4, !tbaa !9
  %165 = icmp ult i32 %164, %43
  br i1 %165, label %.lr.ph56.preheader, label %._crit_edge57

.lr.ph56.preheader:                               ; preds = %161
  %166 = zext i32 %164 to i64
  br label %.lr.ph56

._crit_edge57:                                    ; preds = %186, %161
  %167 = getelementptr inbounds i8, ptr %0, i64 128
  invoke void @_ZNSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %167, ptr noundef nonnull align 8 dereferenceable(8) %10)
          to label %189 unwind label %168

168:                                              ; preds = %._crit_edge57, %156, %154, %152, %150, %148, %._crit_edge
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %191

170:                                              ; preds = %159, %158
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %174

172:                                              ; preds = %160
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorI9Vector3_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #6
  br label %174

174:                                              ; preds = %172, %170
  %.pn = phi { ptr, i32 } [ %173, %172 ], [ %171, %170 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #6
  br label %191

.lr.ph56:                                         ; preds = %.lr.ph56.preheader, %186
  %indvars.iv = phi i64 [ %166, %.lr.ph56.preheader ], [ %indvars.iv.next, %186 ]
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %97, i64 noundef %indvars.iv)
          to label %176 unwind label %187

176:                                              ; preds = %.lr.ph56
  store double 0.000000e+00, ptr %175, align 8, !tbaa !71
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %149, i64 noundef %indvars.iv)
          to label %178 unwind label %187

178:                                              ; preds = %176
  store double 0.000000e+00, ptr %177, align 8, !tbaa !71
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %151, i64 noundef %indvars.iv)
          to label %180 unwind label %187

180:                                              ; preds = %178
  store double 0.000000e+00, ptr %179, align 8, !tbaa !71
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %153, i64 noundef %indvars.iv)
          to label %182 unwind label %187

182:                                              ; preds = %180
  store double 0.000000e+00, ptr %181, align 8, !tbaa !71
  %183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %155, i64 noundef %indvars.iv)
          to label %184 unwind label %187

184:                                              ; preds = %182
  store double 0.000000e+00, ptr %183, align 8, !tbaa !71
  %185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %157, i64 noundef %indvars.iv)
          to label %186 unwind label %187

186:                                              ; preds = %184
  store double 0.000000e+00, ptr %185, align 8, !tbaa !71
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond.not = icmp eq i32 %43, %lftr.wideiv
  br i1 %exitcond.not, label %._crit_edge57, label %.lr.ph56, !llvm.loop !76

187:                                              ; preds = %184, %182, %180, %178, %176, %.lr.ph56
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %191

189:                                              ; preds = %._crit_edge57
  %190 = add i32 %43, -1
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %17) #6
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  ret i32 %190

191:                                              ; preds = %.loopexit60, %.loopexit.split-lp61, %112, %114, %115, %147, %187, %174, %168
  %.pn46.pn.pn = phi { ptr, i32 } [ %188, %187 ], [ %169, %168 ], [ %.pn, %174 ], [ %.pn46, %147 ], [ %lpad.phi79, %115 ], [ %.pn44, %114 ], [ %lpad.phi, %112 ], [ %lpad.loopexit62, %.loopexit60 ], [ %lpad.loopexit.split-lp63, %.loopexit.split-lp61 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %17) #6
  br label %192

192:                                              ; preds = %191, %101
  %.pn46.pn.pn.pn = phi { ptr, i32 } [ %.pn46.pn.pn, %191 ], [ %102, %101 ]
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %17) #6
  br label %193

193:                                              ; preds = %192, %99
  %.pn46.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn46.pn.pn.pn, %192 ], [ %100, %99 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #6
  br label %194

194:                                              ; preds = %193, %46
  %.pn46.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn46.pn.pn.pn.pn, %193 ], [ %47, %46 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  resume { ptr, i32 } %.pn46.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #3 align 2

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

attributes #0 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noreturn nounwind }
attributes #6 = { 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, !14, i64 4}
!12 = !{!"_ZTSN17RigidBodyDynamics13ConstraintSetE", !13, i64 0, !14, i64 4, !15, i64 8, !19, i64 32, !23, i64 56, !23, i64 80, !23, i64 104, !27, i64 128, !23, i64 152, !31, i64 176, !31, i64 200, !23, i64 224, !23, i64 248, !35, i64 272, !35, i64 296, !40, i64 320, !45, i64 344, !49, i64 368, !49, i64 384, !49, i64 400, !49, i64 416, !49, i64 432, !49, i64 448, !53, i64 464, !49, i64 488, !49, i64 504, !53, i64 520, !53, i64 544, !49, i64 568, !49, i64 584, !53, i64 600, !53, i64 624, !53, i64 648, !53, i64 672, !56, i64 696, !53, i64 760, !53, i64 784, !53, i64 808, !49, i64 832, !49, i64 848, !53, i64 864, !49, i64 888, !49, i64 904, !49, i64 920, !40, i64 936, !40, i64 960, !31, i64 984, !40, i64 1008, !40, i64 1032, !49, i64 1056, !60, i64 1072, !40, i64 1096, !49, i64 1120, !31, i64 1136}
!13 = !{!"_ZTSN17RigidBodyDynamics4Math12LinearSolverE", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics13ConstraintSet14ConstraintTypeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIjSaIjEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIPN17RigidBodyDynamics16CustomConstraintESaIS2_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics16CustomConstraintESaIS2_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics16CustomConstraintESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorI9Vector3_tSaIS0_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseI9Vector3_tSaIS0_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EE", !36, i64 0}
!36 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!40 = !{!"_ZTSSt6vectorI15SpatialVector_tSaIS0_EE", !41, i64 0}
!41 = !{!"_ZTSSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!45 = !{!"_ZTSSt6vectorI9Vector2_tSaIS0_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseI9Vector2_tSaIS0_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseI9Vector2_tSaIS0_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseI9Vector2_tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !50, i64 0}
!50 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !51, i64 0}
!51 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !6, i64 0, !52, i64 8}
!52 = !{!"long", !7, i64 0}
!53 = !{!"_ZTSN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEE", !54, i64 0}
!54 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE", !55, i64 0}
!55 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EEE", !6, i64 0, !52, i64 8, !52, i64 16}
!56 = !{!"_ZTSN5Eigen13HouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE", !53, i64 0, !49, i64 24, !57, i64 40, !14, i64 56}
!57 = !{!"_ZTSN5Eigen6MatrixIdLi1ELin1ELi1ELi1ELin1EEE", !58, i64 0}
!58 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi1ELin1ELi1ELi1ELin1EEEEE", !59, i64 0}
!59 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELi1ELin1ELi1EEE", !6, i64 0, !52, i64 8}
!60 = !{!"_ZTSSt6vectorI15SpatialMatrix_tSaIS0_EE", !61, i64 0}
!61 = !{!"_ZTSSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{i8 0, i8 2}
!66 = !{}
!67 = !{!68, !10, i64 8}
!68 = !{!"_ZTSN17RigidBodyDynamics16CustomConstraintE", !10, i64 8}
!69 = !{!70, !70, i64 0}
!70 = !{!"_ZTSN17RigidBodyDynamics13ConstraintSet14ConstraintTypeE", !7, i64 0}
!71 = !{!72, !72, i64 0}
!72 = !{!"double", !7, i64 0}
!73 = distinct !{!73, !74, !75}
!74 = !{!"llvm.loop.mustprogress"}
!75 = !{!"llvm.loop.peeled.count", i32 1}
!76 = distinct !{!76, !74}


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