; 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.Eigen::CwiseNullaryOp" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%"class.Eigen::CwiseNullaryOp.182" = type { %"class.Eigen::internal::variable_if_dynamic", [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"class.Eigen::Product.336" = type { %"class.Eigen::Product.303", ptr }
%"class.Eigen::Product.303" = type { ptr, ptr }
%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.SpatialMatrix_t = type { %"class.Eigen::Matrix.187" }
%"class.Eigen::Matrix.187" = type { %"class.Eigen::PlainObjectBase.188" }
%"class.Eigen::PlainObjectBase.188" = type { %"class.Eigen::DenseStorage.195" }
%"class.Eigen::DenseStorage.195" = type { %"struct.Eigen::internal::plain_array.196" }
%"struct.Eigen::internal::plain_array.196" = type { [36 x double] }
%"class.Eigen::Product.517" = type { ptr, ptr }
%"class.Eigen::CwiseBinaryOp.524" = type <{ ptr, %"class.Eigen::Product.530", [8 x i8] }>
%"class.Eigen::Product.530" = type { %"class.Eigen::Transpose.537", ptr }
%"class.Eigen::Transpose.537" = type { ptr }
%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.Eigen::CwiseBinaryOp.556" = type <{ ptr, %"class.Eigen::Product.562", [8 x i8] }>
%"class.Eigen::Product.562" = type { %"class.Eigen::Product.569", %"class.Eigen::Transpose.537" }
%"class.Eigen::Product.569" = type { ptr, ptr }
%"class.Eigen::CwiseBinaryOp.577" = type <{ [8 x i8], %"class.Eigen::CwiseBinaryOp.583", %"class.Eigen::Product.590", [8 x i8] }>
%"class.Eigen::CwiseBinaryOp.583" = type <{ ptr, %"class.Eigen::Product.517", [8 x i8] }>
%"class.Eigen::Product.590" = type { %"class.Eigen::Product.569", ptr }
%"class.Eigen::Product.598" = type { %"class.Eigen::Product.605", ptr }
%"class.Eigen::Product.605" = type { ptr, ptr }
%"class.Eigen::NoAlias" = type { ptr }
%"class.Eigen::NoAlias.612" = type { ptr }
%"class.Eigen::CwiseBinaryOp.613" = type <{ ptr, %"class.Eigen::Product.619", [8 x i8] }>
%"class.Eigen::Product.619" = type { ptr, %"class.Eigen::Transpose.626" }
%"class.Eigen::Transpose.626" = type { %"class.Eigen::CwiseBinaryOp.632" }
%"class.Eigen::CwiseBinaryOp.632" = type <{ ptr, %"class.Eigen::CwiseNullaryOp.638", [8 x i8] }>
%"class.Eigen::CwiseNullaryOp.638" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::CwiseBinaryOp.645" = type { [8 x i8], %"class.Eigen::CwiseBinaryOp.583", %"class.Eigen::CwiseBinaryOp.651", [8 x i8] }
%"class.Eigen::CwiseBinaryOp.651" = type <{ [8 x i8], %"class.Eigen::CwiseBinaryOp.657", %"class.Eigen::CwiseNullaryOp.638", [8 x i8] }>
%"class.Eigen::CwiseBinaryOp.657" = type <{ ptr, %"class.Eigen::CwiseNullaryOp.638", [8 x i8] }>
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { ptr, i64 }
%"class.Eigen::CwiseBinaryOp.666" = type <{ ptr, %"class.Eigen::Product.672", [8 x i8] }>
%"class.Eigen::Product.672" = type { %"class.Eigen::Transpose", ptr }
%"class.Eigen::Transpose" = type { ptr }
%"class.Eigen::CwiseBinaryOp.680" = type <{ ptr, %"class.Eigen::Product.686", [8 x i8] }>
%"class.Eigen::Product.686" = type { %"class.Eigen::Product.303", %"class.Eigen::Transpose" }
%"class.Eigen::CwiseBinaryOp.694" = type <{ [8 x i8], %"class.Eigen::CwiseBinaryOp.583", %"class.Eigen::Product.336", [8 x i8] }>
%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }
%class.Matrix3_t = type { %"class.Eigen::Matrix.79" }
%"class.Eigen::Matrix.79" = type { %"class.Eigen::PlainObjectBase.80" }
%"class.Eigen::PlainObjectBase.80" = type { %"class.Eigen::DenseStorage.87" }
%"class.Eigen::DenseStorage.87" = type { %"struct.Eigen::internal::plain_array.88" }
%"struct.Eigen::internal::plain_array.88" = type { [9 x double] }
%"class.Eigen::CwiseBinaryOp.701" = type <{ ptr, ptr, [8 x i8] }>
%"class.Eigen::Product.708" = type { ptr, %"class.Eigen::CwiseBinaryOp.524" }
%"class.Eigen::CwiseBinaryOp.715" = type <{ ptr, %"class.Eigen::Product.721", [8 x i8] }>
%"class.Eigen::Product.721" = type { ptr, ptr }
%"class.Eigen::CwiseBinaryOp.729" = type <{ ptr, %"class.Eigen::CwiseBinaryOp.657", [8 x i8] }>
%"class.Eigen::Product.736" = type { ptr, %"class.Eigen::CwiseBinaryOp.666" }
%"class.Eigen::CwiseBinaryOp.743" = type <{ ptr, %"class.Eigen::Product.350", [8 x i8] }>
%"class.Eigen::Product.350" = type { ptr, ptr }
%"struct.RigidBodyDynamics::Model" = type { %"class.std::vector.6", %"class.std::vector.6", %"class.std::vector.118", i32, i32, i32, i32, %class.Vector3_t, %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.123", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.6", %"class.std::vector.21", %"class.std::vector.6", %"class.std::vector.130", %"class.std::vector.130", %"class.std::vector.137", %"class.std::vector.16", %"class.std::vector.6", %"class.std::vector.142", %"class.std::vector.27", %"class.std::vector.60", %"class.std::vector.27", %"class.std::vector.27", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.std::vector.27", %"class.std::vector.147", %"class.std::vector.147", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.21", %"class.std::vector.21", %"class.std::vector.154", i32, %"class.std::vector.161", %"class.std::map" }
%"class.std::vector.118" = type { %"struct.std::_Vector_base.119" }
%"struct.std::_Vector_base.119" = type { %"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.123" = type { %"class.std::vector.124" }
%"class.std::vector.124" = type { %"struct.std::_Vector_base.125" }
%"struct.std::_Vector_base.125" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.130" = type { %"class.std::vector.131" }
%"class.std::vector.131" = type { %"struct.std::_Vector_base.132" }
%"struct.std::_Vector_base.132" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.137" = type { %"struct.std::_Vector_base.138" }
%"struct.std::_Vector_base.138" = type { %"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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::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.142" = type { %"struct.std::_Vector_base.143" }
%"struct.std::_Vector_base.143" = type { %"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.147" = type { %"class.std::vector.148" }
%"class.std::vector.148" = type { %"struct.std::_Vector_base.149" }
%"struct.std::_Vector_base.149" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_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.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.154" = type { %"class.std::vector.155" }
%"class.std::vector.155" = type { %"struct.std::_Vector_base.156" }
%"struct.std::_Vector_base.156" = type { %"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.161" = type { %"class.std::vector.162" }
%"class.std::vector.162" = type { %"struct.std::_Vector_base.163" }
%"struct.std::_Vector_base.163" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"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.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 }
%"struct.RigidBodyDynamics::Joint" = type { ptr, i32, i32, i32, i32 }
%"struct.RigidBodyDynamics::CustomJoint" = type { ptr, i32, %"struct.RigidBodyDynamics::Math::SpatialTransform", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix" }

@.str.4 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [32 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics36ForwardDynamicsApplyConstraintForcesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERS4_ = external hidden unnamed_addr constant [117 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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE4ZeroEv(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseNullaryOp") align 8) #2 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) #2 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS1_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math16SpatialTransform5applyERK15SpatialVector_t(ptr dead_on_unwind noalias writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 16 dereferenceable(48)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 16 dereferenceable(48)) #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics36ForwardDynamicsApplyConstraintForcesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERS4_(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(1160) %2, ptr noundef nonnull align 8 dereferenceable(16) %3) #5 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %class.SpatialMatrix_t, align 16
  %11 = alloca %class.SpatialVector_t, align 16
  %12 = alloca %class.SpatialVector_t, align 16
  %13 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %14 = alloca %"class.Eigen::Product.517", align 8
  %15 = alloca %class.SpatialMatrix_t, align 16
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca %"class.Eigen::CwiseBinaryOp.524", align 8
  %19 = alloca %class.Vector3_t, align 8
  %20 = alloca %"class.Eigen::Product.530", align 8
  %21 = alloca %"class.Eigen::Transpose.537", align 8
  %22 = alloca %class.SpatialMatrix_t, align 16
  %23 = alloca %"class.Eigen::CwiseBinaryOp.556", align 8
  %24 = alloca %"class.Eigen::Product.562", align 8
  %25 = alloca %"class.Eigen::Product.569", align 8
  %26 = alloca %"class.Eigen::Transpose.537", align 8
  %27 = alloca %class.SpatialVector_t, align 16
  %28 = alloca %"class.Eigen::CwiseBinaryOp.577", align 8
  %29 = alloca %"class.Eigen::CwiseBinaryOp.583", align 8
  %30 = alloca %"class.Eigen::Product.517", align 8
  %31 = alloca %"class.Eigen::Product.590", align 8
  %32 = alloca %"class.Eigen::Product.569", align 8
  %33 = alloca %"class.Eigen::Product.598", align 8
  %34 = alloca %"class.Eigen::Product.605", align 8
  %35 = alloca %class.SpatialMatrix_t, align 16
  %36 = alloca %class.SpatialMatrix_t, align 16
  %37 = alloca %"class.Eigen::NoAlias", align 8
  %38 = alloca %class.SpatialVector_t, align 16
  %39 = alloca %"class.Eigen::NoAlias.612", align 8
  %40 = alloca i32, align 4
  %41 = alloca %class.SpatialMatrix_t, align 16
  %42 = alloca %"class.Eigen::CwiseBinaryOp.613", align 8
  %43 = alloca %"class.Eigen::Product.619", align 8
  %44 = alloca %"class.Eigen::Transpose.626", align 8
  %45 = alloca %"class.Eigen::CwiseBinaryOp.632", align 8
  %46 = alloca %class.SpatialVector_t, align 16
  %47 = alloca %"class.Eigen::CwiseBinaryOp.645", align 8
  %48 = alloca %"class.Eigen::CwiseBinaryOp.583", align 8
  %49 = alloca %"class.Eigen::Product.517", align 8
  %50 = alloca %"class.Eigen::CwiseBinaryOp.651", align 8
  %51 = alloca %"class.Eigen::CwiseBinaryOp.657", align 8
  %52 = alloca %"class.Eigen::Product.598", align 8
  %53 = alloca %"class.Eigen::Product.605", align 8
  %54 = alloca %class.SpatialMatrix_t, align 16
  %55 = alloca %class.SpatialMatrix_t, align 16
  %56 = alloca %"class.Eigen::NoAlias", align 8
  %57 = alloca %class.SpatialVector_t, align 16
  %58 = alloca %"class.Eigen::NoAlias.612", align 8
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca %"class.Eigen::Matrix", align 8
  %63 = alloca %"class.Eigen::CwiseNullaryOp.182", align 8
  %64 = alloca i32, align 4
  %65 = alloca ptr, align 8
  %66 = alloca i32, align 4
  %67 = alloca %"class.Eigen::CwiseBinaryOp.666", align 8
  %68 = alloca %"class.Eigen::Product.672", align 8
  %69 = alloca %"class.Eigen::Transpose", align 8
  %70 = alloca %class.SpatialMatrix_t, align 16
  %71 = alloca %"class.Eigen::CwiseBinaryOp.680", align 8
  %72 = alloca %"class.Eigen::Product.686", align 8
  %73 = alloca %"class.Eigen::Product.303", align 8
  %74 = alloca %"class.Eigen::Transpose", align 8
  %75 = alloca %class.SpatialVector_t, align 16
  %76 = alloca %"class.Eigen::CwiseBinaryOp.694", align 8
  %77 = alloca %"class.Eigen::CwiseBinaryOp.583", align 8
  %78 = alloca %"class.Eigen::Product.517", align 8
  %79 = alloca %"class.Eigen::Product.336", align 8
  %80 = alloca %"class.Eigen::Product.303", align 8
  %81 = alloca %"class.Eigen::Product.598", align 8
  %82 = alloca %"class.Eigen::Product.605", align 8
  %83 = alloca %class.SpatialMatrix_t, align 16
  %84 = alloca %class.SpatialMatrix_t, align 16
  %85 = alloca %"class.Eigen::NoAlias", align 8
  %86 = alloca %class.SpatialVector_t, align 16
  %87 = alloca %"class.Eigen::NoAlias.612", align 8
  %88 = alloca %class.SpatialVector_t, align 16
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %98 = alloca %"class.Eigen::CwiseBinaryOp.701", align 8
  %99 = alloca %class.SpatialVector_t, align 16
  %100 = alloca %class.Vector3_t, align 8
  %101 = alloca %"class.Eigen::Product.708", align 8
  %102 = alloca %"class.Eigen::CwiseBinaryOp.524", align 8
  %103 = alloca %"class.Eigen::Product.530", align 8
  %104 = alloca %"class.Eigen::Transpose.537", align 8
  %105 = alloca %"class.Eigen::CwiseBinaryOp.715", align 8
  %106 = alloca %"class.Eigen::Product.721", align 8
  %107 = alloca %"class.Eigen::CwiseBinaryOp.729", align 8
  %108 = alloca %"class.Eigen::CwiseBinaryOp.657", align 8
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca %"class.Eigen::Matrix", align 8
  %112 = alloca %"class.Eigen::CwiseNullaryOp.182", align 8
  %113 = alloca %"class.Eigen::Product.736", align 8
  %114 = alloca %"class.Eigen::CwiseBinaryOp.666", align 8
  %115 = alloca %"class.Eigen::Product.672", align 8
  %116 = alloca %"class.Eigen::Transpose", align 8
  %117 = alloca i32, align 4
  %118 = alloca %"class.Eigen::CwiseBinaryOp.743", align 8
  %119 = alloca %"class.Eigen::Product.350", align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  %120 = load ptr, ptr %8, align 8, !tbaa !5
  %121 = call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %120)
  %122 = load ptr, ptr %5, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 3
  %124 = load i32, ptr %123, align 8, !tbaa !9
  %125 = zext i32 %124 to i64
  %126 = icmp eq i64 %121, %125
  br i1 %126, label %127, label %128

127:                                              ; preds = %4
  br label %130

128:                                              ; preds = %4
  call void @__assert_fail(ptr noundef @.str.18, ptr noundef @.str.4, i32 noundef 1131, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics36ForwardDynamicsApplyConstraintForcesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERS4_) #6
  unreachable

129:                                              ; No predecessors!
  br label %130

130:                                              ; preds = %129, %127
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  store i32 0, ptr %9, align 4, !tbaa !89
  store i32 1, ptr %9, align 4, !tbaa !89
  br label %131

131:                                              ; preds = %200, %130
  %132 = load i32, ptr %9, align 4, !tbaa !89
  %133 = zext i32 %132 to i64
  %134 = load ptr, ptr %5, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %134, i32 0, i32 38
  %136 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %135) #7
  %137 = icmp ult i64 %133, %136
  br i1 %137, label %138, label %203

138:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 288, ptr %10) #7
  %139 = load ptr, ptr %5, align 8, !tbaa !5
  %140 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %139, i32 0, i32 30
  %141 = load i32, ptr %9, align 4, !tbaa !89
  %142 = zext i32 %141 to i64
  %143 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %140, i64 noundef %142) #7
  call void @_ZNK17RigidBodyDynamics4Math23SpatialRigidBodyInertia8toMatrixEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %10, ptr noundef nonnull align 8 dereferenceable(80) %143)
  %144 = load ptr, ptr %5, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %144, i32 0, i32 24
  %146 = load i32, ptr %9, align 4, !tbaa !89
  %147 = zext i32 %146 to i64
  %148 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %145, i64 noundef %147) #7
  %149 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZN15SpatialMatrix_taSEOS_(ptr noundef nonnull align 16 dereferenceable(288) %148, ptr noundef nonnull align 16 dereferenceable(288) %10) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %11) #7
  %150 = load ptr, ptr %5, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %150, i32 0, i32 8
  %152 = load i32, ptr %9, align 4, !tbaa !89
  %153 = zext i32 %152 to i64
  %154 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %153) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %12) #7
  %155 = load ptr, ptr %5, align 8, !tbaa !5
  %156 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %155, i32 0, i32 30
  %157 = load i32, ptr %9, align 4, !tbaa !89
  %158 = zext i32 %157 to i64
  %159 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %158) #7
  %160 = load ptr, ptr %5, align 8, !tbaa !5
  %161 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %160, i32 0, i32 8
  %162 = load i32, ptr %9, align 4, !tbaa !89
  %163 = zext i32 %162 to i64
  %164 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %161, i64 noundef %163) #7
  call void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiamlERK15SpatialVector_t(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %12, ptr noundef nonnull align 8 dereferenceable(80) %159, ptr noundef nonnull align 16 dereferenceable(48) %164)
  call void @_ZN17RigidBodyDynamics4Math6crossfERK15SpatialVector_tS3_(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %11, ptr noundef nonnull align 16 dereferenceable(48) %154, ptr noundef nonnull align 16 dereferenceable(48) %12)
  %165 = load ptr, ptr %5, align 8, !tbaa !5
  %166 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %165, i32 0, i32 25
  %167 = load i32, ptr %9, align 4, !tbaa !89
  %168 = zext i32 %167 to i64
  %169 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %166, i64 noundef %168) #7
  %170 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %169, ptr noundef nonnull align 16 dereferenceable(48) %11) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %11) #7
  %171 = load ptr, ptr %7, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %171, i32 0, i32 45
  %173 = load i32, ptr %9, align 4, !tbaa !89
  %174 = zext i32 %173 to i64
  %175 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %172, i64 noundef %174) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %13) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %13)
  %176 = call noundef zeroext i1 @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEneINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES2_EEEEbRKNS0_IT_EE(ptr noundef nonnull align 1 dereferenceable(1) %175, ptr noundef nonnull align 1 dereferenceable(1) %13)
  call void @llvm.lifetime.end.p0(i64 16, ptr %13) #7
  br i1 %176, label %177, label %199

177:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 288, ptr %15) #7
  %178 = load ptr, ptr %5, align 8, !tbaa !5
  %179 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %178, i32 0, i32 35
  %180 = load i32, ptr %9, align 4, !tbaa !89
  %181 = zext i32 %180 to i64
  %182 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %179, i64 noundef %181) #7
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform15toMatrixAdjointEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %15, ptr noundef nonnull align 8 dereferenceable(96) %182)
  %183 = load ptr, ptr %7, align 8, !tbaa !5
  %184 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %183, i32 0, i32 45
  %185 = load i32, ptr %9, align 4, !tbaa !89
  %186 = zext i32 %185 to i64
  %187 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %184, i64 noundef %186) #7
  %188 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 1 dereferenceable(1) %187)
  %189 = getelementptr inbounds { ptr, ptr }, ptr %14, i32 0, i32 0
  %190 = extractvalue { ptr, ptr } %188, 0
  store ptr %190, ptr %189, align 8
  %191 = getelementptr inbounds { ptr, ptr }, ptr %14, i32 0, i32 1
  %192 = extractvalue { ptr, ptr } %188, 1
  store ptr %192, ptr %191, align 8
  %193 = load ptr, ptr %5, align 8, !tbaa !5
  %194 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %193, i32 0, i32 25
  %195 = load i32, ptr %9, align 4, !tbaa !89
  %196 = zext i32 %195 to i64
  %197 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %194, i64 noundef %196) #7
  %198 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmIINS_7ProductINS1_IdLi6ELi6ELi0ELi6ELi6EEES2_Li0EEEEERS2_RKNS0_IT_EE(ptr noundef nonnull align 1 dereferenceable(1) %197, ptr noundef nonnull align 1 dereferenceable(1) %14)
  call void @llvm.lifetime.end.p0(i64 288, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #7
  br label %199

199:                                              ; preds = %177, %138
  br label %200

200:                                              ; preds = %199
  %201 = load i32, ptr %9, align 4, !tbaa !89
  %202 = add i32 %201, 1
  store i32 %202, ptr %9, align 4, !tbaa !89
  br label %131, !llvm.loop !90

203:                                              ; preds = %131
  %204 = load ptr, ptr %5, align 8, !tbaa !5
  %205 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %204, i32 0, i32 38
  %206 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %205) #7
  %207 = sub i64 %206, 1
  %208 = trunc i64 %207 to i32
  store i32 %208, ptr %9, align 4, !tbaa !89
  br label %209

209:                                              ; preds = %795, %203
  %210 = load i32, ptr %9, align 4, !tbaa !89
  %211 = icmp ugt i32 %210, 0
  br i1 %211, label %212, label %798

212:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  %213 = load ptr, ptr %5, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %213, i32 0, i32 10
  %215 = load i32, ptr %9, align 4, !tbaa !89
  %216 = zext i32 %215 to i64
  %217 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %214, i64 noundef %216) #7
  %218 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %217, i32 0, i32 3
  %219 = load i32, ptr %218, align 8, !tbaa !92
  store i32 %219, ptr %16, align 4, !tbaa !89
  %220 = load ptr, ptr %5, align 8, !tbaa !5
  %221 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %220, i32 0, i32 10
  %222 = load i32, ptr %9, align 4, !tbaa !89
  %223 = zext i32 %222 to i64
  %224 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %221, i64 noundef %223) #7
  %225 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %224, i32 0, i32 2
  %226 = load i32, ptr %225, align 4, !tbaa !95
  %227 = icmp eq i32 %226, 3
  br i1 %227, label %228, label %383

228:                                              ; preds = %212
  %229 = load ptr, ptr %5, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %229, i32 0, i32 10
  %231 = load i32, ptr %9, align 4, !tbaa !89
  %232 = zext i32 %231 to i64
  %233 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %230, i64 noundef %232) #7
  %234 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %233, i32 0, i32 1
  %235 = load i32, ptr %234, align 8, !tbaa !96
  %236 = icmp ne i32 %235, 21
  br i1 %236, label %237, label %383

237:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  %238 = load ptr, ptr %5, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %238, i32 0, i32 0
  %240 = load i32, ptr %9, align 4, !tbaa !89
  %241 = zext i32 %240 to i64
  %242 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %239, i64 noundef %241) #7
  %243 = load i32, ptr %242, align 4, !tbaa !89
  store i32 %243, ptr %17, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  %244 = load ptr, ptr %6, align 8, !tbaa !5
  %245 = load i32, ptr %16, align 4, !tbaa !89
  %246 = zext i32 %245 to i64
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %244, i64 noundef %246)
  %248 = load ptr, ptr %6, align 8, !tbaa !5
  %249 = load i32, ptr %16, align 4, !tbaa !89
  %250 = add i32 %249, 1
  %251 = zext i32 %250 to i64
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %248, i64 noundef %251)
  %253 = load ptr, ptr %6, align 8, !tbaa !5
  %254 = load i32, ptr %16, align 4, !tbaa !89
  %255 = add i32 %254, 2
  %256 = zext i32 %255 to i64
  %257 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %253, i64 noundef %256)
  call void @_ZN9Vector3_tC2ERKdS1_S1_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull align 8 dereferenceable(8) %257)
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %258 = load ptr, ptr %5, align 8, !tbaa !5
  %259 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %258, i32 0, i32 17
  %260 = load i32, ptr %9, align 4, !tbaa !89
  %261 = zext i32 %260 to i64
  %262 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %259, i64 noundef %261) #7
  %263 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %262)
  %264 = getelementptr inbounds %"class.Eigen::Transpose.537", ptr %21, i32 0, i32 0
  store ptr %263, ptr %264, align 8
  %265 = load ptr, ptr %5, align 8, !tbaa !5
  %266 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %265, i32 0, i32 25
  %267 = load i32, ptr %9, align 4, !tbaa !89
  %268 = zext i32 %267 to i64
  %269 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %266, i64 noundef %268) #7
  %270 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %21, ptr noundef nonnull align 1 dereferenceable(1) %269)
  %271 = getelementptr inbounds { ptr, ptr }, ptr %20, i32 0, i32 0
  %272 = extractvalue { ptr, ptr } %270, 0
  store ptr %272, ptr %271, align 8
  %273 = getelementptr inbounds { ptr, ptr }, ptr %20, i32 0, i32 1
  %274 = extractvalue { ptr, ptr } %270, 1
  store ptr %274, ptr %273, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEmiINS_7ProductINS_9TransposeINS1_IdLi6ELi3ELi0ELi6ELi3EEEEENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSC_6traitsIT_E6ScalarEEEKS2_KSF_EERKNS0_ISF_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.524") align 8 %18, ptr noundef nonnull align 1 dereferenceable(1) %19, ptr noundef nonnull align 1 dereferenceable(1) %20)
  %275 = load ptr, ptr %5, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %275, i32 0, i32 20
  %277 = load i32, ptr %9, align 4, !tbaa !89
  %278 = zext i32 %277 to i64
  %279 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %276, i64 noundef %278) #7
  %280 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN9Vector3_taSIN5Eigen13CwiseBinaryOpINS1_8internal20scalar_difference_opIddEEKNS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEKNS1_7ProductINS1_9TransposeINS6_IdLi6ELi3ELi0ELi6ELi3EEEEENS6_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %279, ptr noundef nonnull align 1 dereferenceable(1) %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #7
  %281 = load i32, ptr %17, align 4, !tbaa !89
  %282 = icmp ne i32 %281, 0
  br i1 %282, label %283, label %382

283:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 288, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %23) #7
  %284 = load ptr, ptr %5, align 8, !tbaa !5
  %285 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %284, i32 0, i32 24
  %286 = load i32, ptr %9, align 4, !tbaa !89
  %287 = zext i32 %286 to i64
  %288 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %285, i64 noundef %287) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #7
  %289 = load ptr, ptr %5, align 8, !tbaa !5
  %290 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %289, i32 0, i32 18
  %291 = load i32, ptr %9, align 4, !tbaa !89
  %292 = zext i32 %291 to i64
  %293 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %290, i64 noundef %292) #7
  %294 = load ptr, ptr %5, align 8, !tbaa !5
  %295 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %294, i32 0, i32 19
  %296 = load i32, ptr %9, align 4, !tbaa !89
  %297 = zext i32 %296 to i64
  %298 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI9Matrix3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %295, i64 noundef %297) #7
  %299 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi3ELi0ELi3ELi3EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %293, ptr noundef nonnull align 1 dereferenceable(1) %298)
  %300 = getelementptr inbounds { ptr, ptr }, ptr %25, i32 0, i32 0
  %301 = extractvalue { ptr, ptr } %299, 0
  store ptr %301, ptr %300, align 8
  %302 = getelementptr inbounds { ptr, ptr }, ptr %25, i32 0, i32 1
  %303 = extractvalue { ptr, ptr } %299, 1
  store ptr %303, ptr %302, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %304 = load ptr, ptr %5, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %304, i32 0, i32 18
  %306 = load i32, ptr %9, align 4, !tbaa !89
  %307 = zext i32 %306 to i64
  %308 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %305, i64 noundef %307) #7
  %309 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %308)
  %310 = getelementptr inbounds %"class.Eigen::Transpose.537", ptr %26, i32 0, i32 0
  store ptr %309, ptr %310, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS2_IdLi3ELi3ELi0ELi3ELi3EEELi0EEEEmlINS_9TransposeIS3_EEEEKNS1_IS5_T_Li0EEERKNS0_ISA_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.562") align 8 %24, ptr noundef nonnull align 1 dereferenceable(1) %25, ptr noundef nonnull align 1 dereferenceable(1) %26)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmiINS_7ProductINS5_INS1_IdLi6ELi3ELi0ELi6ELi3EEENS1_IdLi3ELi3ELi0ELi3ELi3EEELi0EEENS_9TransposeIS6_EELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSD_6traitsIT_E6ScalarEEEKS2_KSG_EERKNS0_ISG_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.556") align 8 %23, ptr noundef nonnull align 1 dereferenceable(1) %288, ptr noundef nonnull align 1 dereferenceable(1) %24)
  call void @_ZN15SpatialMatrix_tC2IN5Eigen13CwiseBinaryOpINS1_8internal20scalar_difference_opIddEEKNS1_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEKNS1_7ProductINS9_INS6_IdLi6ELi3ELi0ELi6ELi3EEENS6_IdLi3ELi3ELi0ELi3ELi3EEELi0EEENS1_9TransposeISA_EELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(288) %22, ptr noundef nonnull align 1 dereferenceable(1) %23)
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 72, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %29) #7
  %311 = load ptr, ptr %5, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %311, i32 0, i32 25
  %313 = load i32, ptr %9, align 4, !tbaa !89
  %314 = zext i32 %313 to i64
  %315 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %312, i64 noundef %314) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #7
  %316 = load ptr, ptr %5, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %316, i32 0, i32 23
  %318 = load i32, ptr %9, align 4, !tbaa !89
  %319 = zext i32 %318 to i64
  %320 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %317, i64 noundef %319) #7
  %321 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %22, ptr noundef nonnull align 1 dereferenceable(1) %320)
  %322 = getelementptr inbounds { ptr, ptr }, ptr %30, i32 0, i32 0
  %323 = extractvalue { ptr, ptr } %321, 0
  store ptr %323, ptr %322, align 8
  %324 = getelementptr inbounds { ptr, ptr }, ptr %30, i32 0, i32 1
  %325 = extractvalue { ptr, ptr } %321, 1
  store ptr %325, ptr %324, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLi6ELi6ELi0ELi6ELi6EEES2_Li0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS9_6traitsIT_E6ScalarEEEKS2_KSC_EERKNS0_ISC_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.583") align 8 %29, ptr noundef nonnull align 1 dereferenceable(1) %315, ptr noundef nonnull align 1 dereferenceable(1) %30)
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %32) #7
  %326 = load ptr, ptr %5, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %326, i32 0, i32 18
  %328 = load i32, ptr %9, align 4, !tbaa !89
  %329 = zext i32 %328 to i64
  %330 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %327, i64 noundef %329) #7
  %331 = load ptr, ptr %5, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %331, i32 0, i32 19
  %333 = load i32, ptr %9, align 4, !tbaa !89
  %334 = zext i32 %333 to i64
  %335 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI9Matrix3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %332, i64 noundef %334) #7
  %336 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi3ELi0ELi3ELi3EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %330, ptr noundef nonnull align 1 dereferenceable(1) %335)
  %337 = getelementptr inbounds { ptr, ptr }, ptr %32, i32 0, i32 0
  %338 = extractvalue { ptr, ptr } %336, 0
  store ptr %338, ptr %337, align 8
  %339 = getelementptr inbounds { ptr, ptr }, ptr %32, i32 0, i32 1
  %340 = extractvalue { ptr, ptr } %336, 1
  store ptr %340, ptr %339, align 8
  %341 = load ptr, ptr %5, align 8, !tbaa !5
  %342 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %341, i32 0, i32 20
  %343 = load i32, ptr %9, align 4, !tbaa !89
  %344 = zext i32 %343 to i64
  %345 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %342, i64 noundef %344) #7
  call void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS2_IdLi3ELi3ELi0ELi3ELi3EEELi0EEEEmlINS2_IdLi3ELi1ELi0ELi3ELi1EEEEEKNS1_IS5_T_Li0EEERKNS0_IS9_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.590") align 8 %31, ptr noundef nonnull align 1 dereferenceable(1) %32, ptr noundef nonnull align 1 dereferenceable(1) %345)
  call void @_ZNK5Eigen10MatrixBaseINS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKNS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS_7ProductINS5_IdLi6ELi6ELi0ELi6ELi6EEES6_Li0EEEEEEplINS8_INS8_INS5_IdLi6ELi3ELi0ELi6ELi3EEENS5_IdLi3ELi3ELi0ELi3ELi3EEELi0EEENS5_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEKNS1_INS3_IdNS2_6traitsIT_E6ScalarEEEKSC_KSL_EERKNS0_ISL_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.577") align 8 %28, ptr noundef nonnull align 1 dereferenceable(1) %29, ptr noundef nonnull align 1 dereferenceable(1) %31)
  call void @_ZN15SpatialVector_tC2IN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS2_IS5_KNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi6ELi0ELi6ELi6EEES7_Li0EEEEEKNS9_INS9_INS6_IdLi6ELi3ELi0ELi6ELi3EEENS6_IdLi3ELi3ELi0ELi3ELi3EEELi0EEENS6_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %27, ptr noundef nonnull align 1 dereferenceable(1) %28)
  call void @llvm.lifetime.end.p0(i64 16, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 288, ptr %35) #7
  %346 = load ptr, ptr %5, align 8, !tbaa !5
  %347 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %346, i32 0, i32 34
  %348 = load i32, ptr %9, align 4, !tbaa !89
  %349 = zext i32 %348 to i64
  %350 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %347, i64 noundef %349) #7
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %35, ptr noundef nonnull align 8 dereferenceable(96) %350)
  %351 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1) %35, ptr noundef nonnull align 1 dereferenceable(1) %22)
  %352 = getelementptr inbounds { ptr, ptr }, ptr %34, i32 0, i32 0
  %353 = extractvalue { ptr, ptr } %351, 0
  store ptr %353, ptr %352, align 8
  %354 = getelementptr inbounds { ptr, ptr }, ptr %34, i32 0, i32 1
  %355 = extractvalue { ptr, ptr } %351, 1
  store ptr %355, ptr %354, align 8
  call void @llvm.lifetime.start.p0(i64 288, ptr %36) #7
  %356 = load ptr, ptr %5, align 8, !tbaa !5
  %357 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %356, i32 0, i32 34
  %358 = load i32, ptr %9, align 4, !tbaa !89
  %359 = zext i32 %358 to i64
  %360 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %357, i64 noundef %359) #7
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform8toMatrixEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %36, ptr noundef nonnull align 8 dereferenceable(96) %360)
  call void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEES3_Li0EEEEmlIS3_EEKNS1_IS4_T_Li0EEERKNS0_IS7_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.598") align 8 %33, ptr noundef nonnull align 1 dereferenceable(1) %34, ptr noundef nonnull align 1 dereferenceable(1) %36)
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %361 = load ptr, ptr %5, align 8, !tbaa !5
  %362 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %361, i32 0, i32 24
  %363 = load i32, ptr %17, align 4, !tbaa !89
  %364 = zext i32 %363 to i64
  %365 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %362, i64 noundef %364) #7
  %366 = call ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %365)
  %367 = getelementptr inbounds %"class.Eigen::NoAlias", ptr %37, i32 0, i32 0
  store ptr %366, ptr %367, align 8
  %368 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEENS_10MatrixBaseEEpLINS_7ProductINS6_IS2_S2_Li0EEES2_Li0EEEEERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 1 dereferenceable(1) %33)
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %38) #7
  %369 = load ptr, ptr %5, align 8, !tbaa !5
  %370 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %369, i32 0, i32 34
  %371 = load i32, ptr %9, align 4, !tbaa !89
  %372 = zext i32 %371 to i64
  %373 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %370, i64 noundef %372) #7
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERK15SpatialVector_t(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %38, ptr noundef nonnull align 8 dereferenceable(96) %373, ptr noundef nonnull align 16 dereferenceable(48) %27)
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %374 = load ptr, ptr %5, align 8, !tbaa !5
  %375 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %374, i32 0, i32 25
  %376 = load i32, ptr %17, align 4, !tbaa !89
  %377 = zext i32 %376 to i64
  %378 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %375, i64 noundef %377) #7
  %379 = call ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %378)
  %380 = getelementptr inbounds %"class.Eigen::NoAlias.612", ptr %39, i32 0, i32 0
  store ptr %379, ptr %380, align 8
  %381 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEENS_10MatrixBaseEEpLIS2_EERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 1 dereferenceable(1) %38)
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr %22) #7
  br label %382

382:                                              ; preds = %283, %237
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %794

383:                                              ; preds = %228, %212
  %384 = load ptr, ptr %5, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %384, i32 0, i32 10
  %386 = load i32, ptr %9, align 4, !tbaa !89
  %387 = zext i32 %386 to i64
  %388 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %385, i64 noundef %387) #7
  %389 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %388, i32 0, i32 2
  %390 = load i32, ptr %389, align 4, !tbaa !95
  %391 = icmp eq i32 %390, 1
  br i1 %391, label %392, label %520

392:                                              ; preds = %383
  %393 = load ptr, ptr %5, align 8, !tbaa !5
  %394 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %393, i32 0, i32 10
  %395 = load i32, ptr %9, align 4, !tbaa !89
  %396 = zext i32 %395 to i64
  %397 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef %396) #7
  %398 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %397, i32 0, i32 1
  %399 = load i32, ptr %398, align 8, !tbaa !96
  %400 = icmp ne i32 %399, 21
  br i1 %400, label %401, label %520

401:                                              ; preds = %392
  %402 = load ptr, ptr %6, align 8, !tbaa !5
  %403 = load i32, ptr %16, align 4, !tbaa !89
  %404 = zext i32 %403 to i64
  %405 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %402, i64 noundef %404)
  %406 = load double, ptr %405, align 8, !tbaa !97
  %407 = load ptr, ptr %5, align 8, !tbaa !5
  %408 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %407, i32 0, i32 11
  %409 = load i32, ptr %9, align 4, !tbaa !89
  %410 = zext i32 %409 to i64
  %411 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %408, i64 noundef %410) #7
  %412 = load ptr, ptr %5, align 8, !tbaa !5
  %413 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %412, i32 0, i32 25
  %414 = load i32, ptr %9, align 4, !tbaa !89
  %415 = zext i32 %414 to i64
  %416 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %413, i64 noundef %415) #7
  %417 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotIS2_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENS6_17scalar_product_opIdSA_EEE10ReturnTypeERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %411, ptr noundef nonnull align 1 dereferenceable(1) %416)
  %418 = fsub double %406, %417
  %419 = load ptr, ptr %5, align 8, !tbaa !5
  %420 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %419, i32 0, i32 28
  %421 = load i32, ptr %9, align 4, !tbaa !89
  %422 = zext i32 %421 to i64
  %423 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %420, i64 noundef %422)
  store double %418, ptr %423, align 8, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  %424 = load ptr, ptr %5, align 8, !tbaa !5
  %425 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %424, i32 0, i32 0
  %426 = load i32, ptr %9, align 4, !tbaa !89
  %427 = zext i32 %426 to i64
  %428 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %425, i64 noundef %427) #7
  %429 = load i32, ptr %428, align 4, !tbaa !89
  store i32 %429, ptr %40, align 4, !tbaa !89
  %430 = load i32, ptr %40, align 4, !tbaa !89
  %431 = icmp ne i32 %430, 0
  br i1 %431, label %432, label %519

432:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 288, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr %42) #7
  %433 = load ptr, ptr %5, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %433, i32 0, i32 24
  %435 = load i32, ptr %9, align 4, !tbaa !89
  %436 = zext i32 %435 to i64
  %437 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %434, i64 noundef %436) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %43) #7
  %438 = load ptr, ptr %5, align 8, !tbaa !5
  %439 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %438, i32 0, i32 26
  %440 = load i32, ptr %9, align 4, !tbaa !89
  %441 = zext i32 %440 to i64
  %442 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %439, i64 noundef %441) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #7
  %443 = load ptr, ptr %5, align 8, !tbaa !5
  %444 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %443, i32 0, i32 26
  %445 = load i32, ptr %9, align 4, !tbaa !89
  %446 = zext i32 %445 to i64
  %447 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %444, i64 noundef %446) #7
  %448 = load ptr, ptr %5, align 8, !tbaa !5
  %449 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %448, i32 0, i32 27
  %450 = load i32, ptr %9, align 4, !tbaa !89
  %451 = zext i32 %450 to i64
  %452 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %449, i64 noundef %451)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEdvIdEEKNS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIdNS6_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdS9_NS7_IdS9_EEEEEE5valueEE4typeEEEKS2_KNS6_19plain_constant_typeIS2_SE_E4typeEEERKS9_(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.632") align 8 %45, ptr noundef nonnull align 1 dereferenceable(1) %447, ptr noundef nonnull align 8 dereferenceable(8) %452)
  call void @_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIddEEKNS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEES7_EEEEE9transposeEv(ptr dead_on_unwind writable sret(%"class.Eigen::Transpose.626") align 8 %44, ptr noundef nonnull align 1 dereferenceable(1) %45)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmlINS_9TransposeIKNS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIddEEKS2_KNS_14CwiseNullaryOpINS7_18scalar_constant_opIdEESA_EEEEEEEEKNS_7ProductIS2_T_Li0EEERKNS0_ISK_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.619") align 8 %43, ptr noundef nonnull align 1 dereferenceable(1) %442, ptr noundef nonnull align 1 dereferenceable(1) %44)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmiINS_7ProductINS1_IdLi6ELi1ELi0ELi6ELi1EEENS_9TransposeIKNS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIddEEKS6_KNS_14CwiseNullaryOpINS9_18scalar_constant_opIdEESC_EEEEEELi0EEEEEKNS8_INS9_20scalar_difference_opIdNS9_6traitsIT_E6ScalarEEEKS2_KSO_EERKNS0_ISO_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.613") align 8 %42, ptr noundef nonnull align 1 dereferenceable(1) %437, ptr noundef nonnull align 1 dereferenceable(1) %43)
  call void @_ZN15SpatialMatrix_tC2IN5Eigen13CwiseBinaryOpINS1_8internal20scalar_difference_opIddEEKNS1_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEKNS1_7ProductINS6_IdLi6ELi1ELi0ELi6ELi1EEENS1_9TransposeIKNS2_INS3_18scalar_quotient_opIddEEKSA_KNS1_14CwiseNullaryOpINS3_18scalar_constant_opIdEESE_EEEEEELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(288) %41, ptr noundef nonnull align 1 dereferenceable(1) %42)
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr %42) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 112, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #7
  %453 = load ptr, ptr %5, align 8, !tbaa !5
  %454 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %453, i32 0, i32 25
  %455 = load i32, ptr %9, align 4, !tbaa !89
  %456 = zext i32 %455 to i64
  %457 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %454, i64 noundef %456) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #7
  %458 = load ptr, ptr %5, align 8, !tbaa !5
  %459 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %458, i32 0, i32 23
  %460 = load i32, ptr %9, align 4, !tbaa !89
  %461 = zext i32 %460 to i64
  %462 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %459, i64 noundef %461) #7
  %463 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %41, ptr noundef nonnull align 1 dereferenceable(1) %462)
  %464 = getelementptr inbounds { ptr, ptr }, ptr %49, i32 0, i32 0
  %465 = extractvalue { ptr, ptr } %463, 0
  store ptr %465, ptr %464, align 8
  %466 = getelementptr inbounds { ptr, ptr }, ptr %49, i32 0, i32 1
  %467 = extractvalue { ptr, ptr } %463, 1
  store ptr %467, ptr %466, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLi6ELi6ELi0ELi6ELi6EEES2_Li0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS9_6traitsIT_E6ScalarEEEKS2_KSC_EERKNS0_ISC_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.583") align 8 %48, ptr noundef nonnull align 1 dereferenceable(1) %457, ptr noundef nonnull align 1 dereferenceable(1) %49)
  call void @llvm.lifetime.start.p0(i64 64, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #7
  %468 = load ptr, ptr %5, align 8, !tbaa !5
  %469 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %468, i32 0, i32 26
  %470 = load i32, ptr %9, align 4, !tbaa !89
  %471 = zext i32 %470 to i64
  %472 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %469, i64 noundef %471) #7
  %473 = load ptr, ptr %5, align 8, !tbaa !5
  %474 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %473, i32 0, i32 28
  %475 = load i32, ptr %9, align 4, !tbaa !89
  %476 = zext i32 %475 to i64
  %477 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %474, i64 noundef %476)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmlIdEEKNS_13CwiseBinaryOpINS_8internal17scalar_product_opIdNS6_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdS9_NS7_IdS9_EEEEEE5valueEE4typeEEEKS2_KNS6_19plain_constant_typeIS2_SE_E4typeEEERKS9_(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.657") align 8 %51, ptr noundef nonnull align 1 dereferenceable(1) %472, ptr noundef nonnull align 8 dereferenceable(8) %477)
  %478 = load ptr, ptr %5, align 8, !tbaa !5
  %479 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %478, i32 0, i32 27
  %480 = load i32, ptr %9, align 4, !tbaa !89
  %481 = zext i32 %480 to i64
  %482 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %479, i64 noundef %481)
  call void @_ZNK5Eigen10MatrixBaseINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEES7_EEEEEdvIdEEKNS1_INS2_18scalar_quotient_opIdNS2_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdSI_NSG_IdSI_EEEEEE5valueEE4typeEEEKSD_KNS2_19plain_constant_typeISD_SN_E4typeEEERKSI_(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.651") align 8 %50, ptr noundef nonnull align 1 dereferenceable(1) %51, ptr noundef nonnull align 8 dereferenceable(8) %482)
  call void @_ZNK5Eigen10MatrixBaseINS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKNS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS_7ProductINS5_IdLi6ELi6ELi0ELi6ELi6EEES6_Li0EEEEEEplINS1_INS2_18scalar_quotient_opIddEEKNS1_INS2_17scalar_product_opIddEES7_KNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEES7_EEEESN_EEEEKNS1_INS3_IdNS2_6traitsIT_E6ScalarEEEKSC_KSS_EERKNS0_ISS_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.645") align 8 %47, ptr noundef nonnull align 1 dereferenceable(1) %48, ptr noundef nonnull align 1 dereferenceable(1) %50)
  call void @_ZN15SpatialVector_tC2IN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS2_IS5_KNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi6ELi0ELi6ELi6EEES7_Li0EEEEEKNS2_INS3_18scalar_quotient_opIddEEKNS2_INS3_17scalar_product_opIddEES8_KNS1_14CwiseNullaryOpINS3_18scalar_constant_opIdEES8_EEEESN_EEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %46, ptr noundef nonnull align 1 dereferenceable(1) %47)
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 112, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #7
  call void @llvm.lifetime.start.p0(i64 288, ptr %54) #7
  %483 = load ptr, ptr %5, align 8, !tbaa !5
  %484 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %483, i32 0, i32 34
  %485 = load i32, ptr %9, align 4, !tbaa !89
  %486 = zext i32 %485 to i64
  %487 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %484, i64 noundef %486) #7
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %54, ptr noundef nonnull align 8 dereferenceable(96) %487)
  %488 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1) %54, ptr noundef nonnull align 1 dereferenceable(1) %41)
  %489 = getelementptr inbounds { ptr, ptr }, ptr %53, i32 0, i32 0
  %490 = extractvalue { ptr, ptr } %488, 0
  store ptr %490, ptr %489, align 8
  %491 = getelementptr inbounds { ptr, ptr }, ptr %53, i32 0, i32 1
  %492 = extractvalue { ptr, ptr } %488, 1
  store ptr %492, ptr %491, align 8
  call void @llvm.lifetime.start.p0(i64 288, ptr %55) #7
  %493 = load ptr, ptr %5, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %493, i32 0, i32 34
  %495 = load i32, ptr %9, align 4, !tbaa !89
  %496 = zext i32 %495 to i64
  %497 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %494, i64 noundef %496) #7
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform8toMatrixEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %55, ptr noundef nonnull align 8 dereferenceable(96) %497)
  call void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEES3_Li0EEEEmlIS3_EEKNS1_IS4_T_Li0EEERKNS0_IS7_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.598") align 8 %52, ptr noundef nonnull align 1 dereferenceable(1) %53, ptr noundef nonnull align 1 dereferenceable(1) %55)
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %498 = load ptr, ptr %5, align 8, !tbaa !5
  %499 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %498, i32 0, i32 24
  %500 = load i32, ptr %40, align 4, !tbaa !89
  %501 = zext i32 %500 to i64
  %502 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %499, i64 noundef %501) #7
  %503 = call ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %502)
  %504 = getelementptr inbounds %"class.Eigen::NoAlias", ptr %56, i32 0, i32 0
  store ptr %503, ptr %504, align 8
  %505 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEENS_10MatrixBaseEEpLINS_7ProductINS6_IS2_S2_Li0EEES2_Li0EEEEERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 1 dereferenceable(1) %52)
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %57) #7
  %506 = load ptr, ptr %5, align 8, !tbaa !5
  %507 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %506, i32 0, i32 34
  %508 = load i32, ptr %9, align 4, !tbaa !89
  %509 = zext i32 %508 to i64
  %510 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %507, i64 noundef %509) #7
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERK15SpatialVector_t(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %57, ptr noundef nonnull align 8 dereferenceable(96) %510, ptr noundef nonnull align 16 dereferenceable(48) %46)
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %511 = load ptr, ptr %5, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %511, i32 0, i32 25
  %513 = load i32, ptr %40, align 4, !tbaa !89
  %514 = zext i32 %513 to i64
  %515 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %512, i64 noundef %514) #7
  %516 = call ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %515)
  %517 = getelementptr inbounds %"class.Eigen::NoAlias.612", ptr %58, i32 0, i32 0
  store ptr %516, ptr %517, align 8
  %518 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEENS_10MatrixBaseEEpLIS2_EERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 1 dereferenceable(1) %57)
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr %41) #7
  br label %519

519:                                              ; preds = %432, %401
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  br label %793

520:                                              ; preds = %392, %383
  %521 = load ptr, ptr %5, align 8, !tbaa !5
  %522 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %521, i32 0, i32 10
  %523 = load i32, ptr %9, align 4, !tbaa !89
  %524 = zext i32 %523 to i64
  %525 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %522, i64 noundef %524) #7
  %526 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %525, i32 0, i32 1
  %527 = load i32, ptr %526, align 8, !tbaa !96
  %528 = icmp eq i32 %527, 21
  br i1 %528, label %529, label %792

529:                                              ; preds = %520
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #7
  %530 = load ptr, ptr %5, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %530, i32 0, i32 10
  %532 = load i32, ptr %9, align 4, !tbaa !89
  %533 = zext i32 %532 to i64
  %534 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %531, i64 noundef %533) #7
  %535 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %534, i32 0, i32 4
  %536 = load i32, ptr %535, align 4, !tbaa !99
  store i32 %536, ptr %59, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #7
  %537 = load ptr, ptr %5, align 8, !tbaa !5
  %538 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %537, i32 0, i32 22
  %539 = load i32, ptr %59, align 4, !tbaa !89
  %540 = zext i32 %539 to i64
  %541 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %538, i64 noundef %540) #7
  %542 = load ptr, ptr %541, align 8, !tbaa !5
  %543 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %542, i32 0, i32 1
  %544 = load i32, ptr %543, align 8, !tbaa !100
  store i32 %544, ptr %60, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #7
  %545 = load ptr, ptr %5, align 8, !tbaa !5
  %546 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %545, i32 0, i32 0
  %547 = load i32, ptr %9, align 4, !tbaa !89
  %548 = zext i32 %547 to i64
  %549 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %546, i64 noundef %548) #7
  %550 = load i32, ptr %549, align 4, !tbaa !89
  store i32 %550, ptr %61, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %63) #7
  %551 = load i32, ptr %60, align 4, !tbaa !89
  %552 = zext i32 %551 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.182") align 8 %63, i64 noundef %552)
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull align 1 dereferenceable(1) %63)
  call void @llvm.lifetime.end.p0(i64 24, ptr %63) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #7
  store i32 0, ptr %64, align 4, !tbaa !89
  br label %553

553:                                              ; preds = %571, %529
  %554 = load i32, ptr %64, align 4, !tbaa !89
  %555 = load i32, ptr %60, align 4, !tbaa !89
  %556 = icmp ult i32 %554, %555
  br i1 %556, label %558, label %557

557:                                              ; preds = %553
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #7
  br label %578

558:                                              ; preds = %553
  %559 = load ptr, ptr %6, align 8, !tbaa !5
  %560 = load i32, ptr %16, align 4, !tbaa !89
  %561 = load i32, ptr %64, align 4, !tbaa !89
  %562 = add i32 %560, %561
  %563 = zext i32 %562 to i64
  %564 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %559, i64 noundef %563)
          to label %565 unwind label %574

565:                                              ; preds = %558
  %566 = load double, ptr %564, align 8, !tbaa !97
  %567 = load i32, ptr %64, align 4, !tbaa !89
  %568 = sext i32 %567 to i64
  %569 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %62, i64 noundef %568)
          to label %570 unwind label %574

570:                                              ; preds = %565
  store double %566, ptr %569, align 8, !tbaa !97
  br label %571

571:                                              ; preds = %570
  %572 = load i32, ptr %64, align 4, !tbaa !89
  %573 = add nsw i32 %572, 1
  store i32 %573, ptr %64, align 4, !tbaa !89
  br label %553, !llvm.loop !111

574:                                              ; preds = %565, %558
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %65, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %66, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #7
  br label %791

578:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 32, ptr %67) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %68) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %579 = load ptr, ptr %5, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %579, i32 0, i32 22
  %581 = load i32, ptr %59, align 4, !tbaa !89
  %582 = zext i32 %581 to i64
  %583 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %580, i64 noundef %582) #7
  %584 = load ptr, ptr %583, align 8, !tbaa !5
  %585 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %584, i32 0, i32 3
  %586 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %585)
          to label %587 unwind label %743

587:                                              ; preds = %578
  %588 = getelementptr inbounds %"class.Eigen::Transpose", ptr %69, i32 0, i32 0
  store ptr %586, ptr %588, align 8
  %589 = load ptr, ptr %5, align 8, !tbaa !5
  %590 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %589, i32 0, i32 25
  %591 = load i32, ptr %9, align 4, !tbaa !89
  %592 = zext i32 %591 to i64
  %593 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %590, i64 noundef %592) #7
  %594 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %69, ptr noundef nonnull align 1 dereferenceable(1) %593)
          to label %595 unwind label %743

595:                                              ; preds = %587
  %596 = getelementptr inbounds { ptr, ptr }, ptr %68, i32 0, i32 0
  %597 = extractvalue { ptr, ptr } %594, 0
  store ptr %597, ptr %596, align 8
  %598 = getelementptr inbounds { ptr, ptr }, ptr %68, i32 0, i32 1
  %599 = extractvalue { ptr, ptr } %594, 1
  store ptr %599, ptr %598, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEmiINS_7ProductINS_9TransposeINS1_IdLin1ELin1ELi0ELin1ELin1EEEEENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSC_6traitsIT_E6ScalarEEEKS2_KSF_EERKNS0_ISF_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.666") align 8 %67, ptr noundef nonnull align 1 dereferenceable(1) %62, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %600 unwind label %743

600:                                              ; preds = %595
  %601 = load ptr, ptr %5, align 8, !tbaa !5
  %602 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %601, i32 0, i32 22
  %603 = load i32, ptr %59, align 4, !tbaa !89
  %604 = zext i32 %603 to i64
  %605 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %602, i64 noundef %604) #7
  %606 = load ptr, ptr %605, align 8, !tbaa !5
  %607 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %606, i32 0, i32 6
  %608 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKS1_KNS_7ProductINS_9TransposeINS0_IdLin1ELin1ELi0ELin1ELin1EEEEENS0_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %607, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %609 unwind label %743

609:                                              ; preds = %600
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #7
  %610 = load i32, ptr %61, align 4, !tbaa !89
  %611 = icmp ne i32 %610, 0
  br i1 %611, label %612, label %790

612:                                              ; preds = %609
  call void @llvm.lifetime.start.p0(i64 288, ptr %70) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %71) #7
  %613 = load ptr, ptr %5, align 8, !tbaa !5
  %614 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %613, i32 0, i32 24
  %615 = load i32, ptr %9, align 4, !tbaa !89
  %616 = zext i32 %615 to i64
  %617 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %614, i64 noundef %616) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %72) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #7
  %618 = load ptr, ptr %5, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %618, i32 0, i32 22
  %620 = load i32, ptr %59, align 4, !tbaa !89
  %621 = zext i32 %620 to i64
  %622 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %619, i64 noundef %621) #7
  %623 = load ptr, ptr %622, align 8, !tbaa !5
  %624 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %623, i32 0, i32 4
  %625 = load ptr, ptr %5, align 8, !tbaa !5
  %626 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %625, i32 0, i32 22
  %627 = load i32, ptr %59, align 4, !tbaa !89
  %628 = zext i32 %627 to i64
  %629 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %626, i64 noundef %628) #7
  %630 = load ptr, ptr %629, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %630, i32 0, i32 5
  %632 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1) %624, ptr noundef nonnull align 1 dereferenceable(1) %631)
          to label %633 unwind label %747

633:                                              ; preds = %612
  %634 = getelementptr inbounds { ptr, ptr }, ptr %73, i32 0, i32 0
  %635 = extractvalue { ptr, ptr } %632, 0
  store ptr %635, ptr %634, align 8
  %636 = getelementptr inbounds { ptr, ptr }, ptr %73, i32 0, i32 1
  %637 = extractvalue { ptr, ptr } %632, 1
  store ptr %637, ptr %636, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %638 = load ptr, ptr %5, align 8, !tbaa !5
  %639 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %638, i32 0, i32 22
  %640 = load i32, ptr %59, align 4, !tbaa !89
  %641 = zext i32 %640 to i64
  %642 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %639, i64 noundef %641) #7
  %643 = load ptr, ptr %642, align 8, !tbaa !5
  %644 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %643, i32 0, i32 4
  %645 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %644)
          to label %646 unwind label %751

646:                                              ; preds = %633
  %647 = getelementptr inbounds %"class.Eigen::Transpose", ptr %74, i32 0, i32 0
  store ptr %645, ptr %647, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEES3_Li0EEEEmlINS_9TransposeIS3_EEEEKNS1_IS4_T_Li0EEERKNS0_IS9_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.686") align 8 %72, ptr noundef nonnull align 1 dereferenceable(1) %73, ptr noundef nonnull align 1 dereferenceable(1) %74)
          to label %648 unwind label %751

648:                                              ; preds = %646
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmiINS_7ProductINS5_INS1_IdLin1ELin1ELi0ELin1ELin1EEES6_Li0EEENS_9TransposeIS6_EELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSC_6traitsIT_E6ScalarEEEKS2_KSF_EERKNS0_ISF_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.680") align 8 %71, ptr noundef nonnull align 1 dereferenceable(1) %617, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %649 unwind label %751

649:                                              ; preds = %648
  invoke void @_ZN15SpatialMatrix_tC2IN5Eigen13CwiseBinaryOpINS1_8internal20scalar_difference_opIddEEKNS1_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEKNS1_7ProductINS9_INS6_IdLin1ELin1ELi0ELin1ELin1EEESA_Li0EEENS1_9TransposeISA_EELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(288) %70, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %650 unwind label %751

650:                                              ; preds = %649
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %71) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %75) #7
  call void @llvm.lifetime.start.p0(i64 72, ptr %76) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #7
  %651 = load ptr, ptr %5, align 8, !tbaa !5
  %652 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %651, i32 0, i32 25
  %653 = load i32, ptr %9, align 4, !tbaa !89
  %654 = zext i32 %653 to i64
  %655 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %652, i64 noundef %654) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #7
  %656 = load ptr, ptr %5, align 8, !tbaa !5
  %657 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %656, i32 0, i32 23
  %658 = load i32, ptr %9, align 4, !tbaa !89
  %659 = zext i32 %658 to i64
  %660 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %657, i64 noundef %659) #7
  %661 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %70, ptr noundef nonnull align 1 dereferenceable(1) %660)
          to label %662 unwind label %756

662:                                              ; preds = %650
  %663 = getelementptr inbounds { ptr, ptr }, ptr %78, i32 0, i32 0
  %664 = extractvalue { ptr, ptr } %661, 0
  store ptr %664, ptr %663, align 8
  %665 = getelementptr inbounds { ptr, ptr }, ptr %78, i32 0, i32 1
  %666 = extractvalue { ptr, ptr } %661, 1
  store ptr %666, ptr %665, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLi6ELi6ELi0ELi6ELi6EEES2_Li0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS9_6traitsIT_E6ScalarEEEKS2_KSC_EERKNS0_ISC_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.583") align 8 %77, ptr noundef nonnull align 1 dereferenceable(1) %655, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %667 unwind label %756

667:                                              ; preds = %662
  call void @llvm.lifetime.start.p0(i64 24, ptr %79) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %80) #7
  %668 = load ptr, ptr %5, align 8, !tbaa !5
  %669 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %668, i32 0, i32 22
  %670 = load i32, ptr %59, align 4, !tbaa !89
  %671 = zext i32 %670 to i64
  %672 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %669, i64 noundef %671) #7
  %673 = load ptr, ptr %672, align 8, !tbaa !5
  %674 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %673, i32 0, i32 4
  %675 = load ptr, ptr %5, align 8, !tbaa !5
  %676 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %675, i32 0, i32 22
  %677 = load i32, ptr %59, align 4, !tbaa !89
  %678 = zext i32 %677 to i64
  %679 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %676, i64 noundef %678) #7
  %680 = load ptr, ptr %679, align 8, !tbaa !5
  %681 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %680, i32 0, i32 5
  %682 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1) %674, ptr noundef nonnull align 1 dereferenceable(1) %681)
          to label %683 unwind label %760

683:                                              ; preds = %667
  %684 = getelementptr inbounds { ptr, ptr }, ptr %80, i32 0, i32 0
  %685 = extractvalue { ptr, ptr } %682, 0
  store ptr %685, ptr %684, align 8
  %686 = getelementptr inbounds { ptr, ptr }, ptr %80, i32 0, i32 1
  %687 = extractvalue { ptr, ptr } %682, 1
  store ptr %687, ptr %686, align 8
  %688 = load ptr, ptr %5, align 8, !tbaa !5
  %689 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %688, i32 0, i32 22
  %690 = load i32, ptr %59, align 4, !tbaa !89
  %691 = zext i32 %690 to i64
  %692 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %689, i64 noundef %691) #7
  %693 = load ptr, ptr %692, align 8, !tbaa !5
  %694 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %693, i32 0, i32 6
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEES3_Li0EEEEmlINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS1_IS4_T_Li0EEERKNS0_IS8_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.336") align 8 %79, ptr noundef nonnull align 1 dereferenceable(1) %80, ptr noundef nonnull align 1 dereferenceable(1) %694)
          to label %695 unwind label %760

695:                                              ; preds = %683
  invoke void @_ZNK5Eigen10MatrixBaseINS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKNS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS_7ProductINS5_IdLi6ELi6ELi0ELi6ELi6EEES6_Li0EEEEEEplINS8_INS8_INS5_IdLin1ELin1ELi0ELin1ELin1EEESF_Li0EEENS5_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEKNS1_INS3_IdNS2_6traitsIT_E6ScalarEEEKSC_KSK_EERKNS0_ISK_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.694") align 8 %76, ptr noundef nonnull align 1 dereferenceable(1) %77, ptr noundef nonnull align 1 dereferenceable(1) %79)
          to label %696 unwind label %760

696:                                              ; preds = %695
  invoke void @_ZN15SpatialVector_tC2IN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS2_IS5_KNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi6ELi0ELi6ELi6EEES7_Li0EEEEEKNS9_INS9_INS6_IdLin1ELin1ELi0ELin1ELin1EEESF_Li0EEENS6_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %75, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %697 unwind label %760

697:                                              ; preds = %696
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr %76) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %81) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #7
  call void @llvm.lifetime.start.p0(i64 288, ptr %83) #7
  %698 = load ptr, ptr %5, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %698, i32 0, i32 34
  %700 = load i32, ptr %9, align 4, !tbaa !89
  %701 = zext i32 %700 to i64
  %702 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %699, i64 noundef %701) #7
  invoke void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %83, ptr noundef nonnull align 8 dereferenceable(96) %702)
          to label %703 unwind label %765

703:                                              ; preds = %697
  %704 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1) %83, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %705 unwind label %765

705:                                              ; preds = %703
  %706 = getelementptr inbounds { ptr, ptr }, ptr %82, i32 0, i32 0
  %707 = extractvalue { ptr, ptr } %704, 0
  store ptr %707, ptr %706, align 8
  %708 = getelementptr inbounds { ptr, ptr }, ptr %82, i32 0, i32 1
  %709 = extractvalue { ptr, ptr } %704, 1
  store ptr %709, ptr %708, align 8
  call void @llvm.lifetime.start.p0(i64 288, ptr %84) #7
  %710 = load ptr, ptr %5, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %710, i32 0, i32 34
  %712 = load i32, ptr %9, align 4, !tbaa !89
  %713 = zext i32 %712 to i64
  %714 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %711, i64 noundef %713) #7
  invoke void @_ZNK17RigidBodyDynamics4Math16SpatialTransform8toMatrixEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %84, ptr noundef nonnull align 8 dereferenceable(96) %714)
          to label %715 unwind label %769

715:                                              ; preds = %705
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEES3_Li0EEEEmlIS3_EEKNS1_IS4_T_Li0EEERKNS0_IS7_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.598") align 8 %81, ptr noundef nonnull align 1 dereferenceable(1) %82, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %716 unwind label %769

716:                                              ; preds = %715
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #7
  %717 = load ptr, ptr %5, align 8, !tbaa !5
  %718 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %717, i32 0, i32 24
  %719 = load i32, ptr %61, align 4, !tbaa !89
  %720 = zext i32 %719 to i64
  %721 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %718, i64 noundef %720) #7
  %722 = invoke ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %721)
          to label %723 unwind label %773

723:                                              ; preds = %716
  %724 = getelementptr inbounds %"class.Eigen::NoAlias", ptr %85, i32 0, i32 0
  store ptr %722, ptr %724, align 8
  %725 = invoke noundef nonnull align 16 dereferenceable(288) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEENS_10MatrixBaseEEpLINS_7ProductINS6_IS2_S2_Li0EEES2_Li0EEEEERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 1 dereferenceable(1) %81)
          to label %726 unwind label %773

726:                                              ; preds = %723
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr %84) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %86) #7
  %727 = load ptr, ptr %5, align 8, !tbaa !5
  %728 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %727, i32 0, i32 34
  %729 = load i32, ptr %9, align 4, !tbaa !89
  %730 = zext i32 %729 to i64
  %731 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %728, i64 noundef %730) #7
  invoke void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERK15SpatialVector_t(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %86, ptr noundef nonnull align 8 dereferenceable(96) %731, ptr noundef nonnull align 16 dereferenceable(48) %75)
          to label %732 unwind label %779

732:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #7
  %733 = load ptr, ptr %5, align 8, !tbaa !5
  %734 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %733, i32 0, i32 25
  %735 = load i32, ptr %61, align 4, !tbaa !89
  %736 = zext i32 %735 to i64
  %737 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %734, i64 noundef %736) #7
  %738 = invoke ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %737)
          to label %739 unwind label %783

739:                                              ; preds = %732
  %740 = getelementptr inbounds %"class.Eigen::NoAlias.612", ptr %87, i32 0, i32 0
  store ptr %738, ptr %740, align 8
  %741 = invoke noundef nonnull align 16 dereferenceable(48) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEENS_10MatrixBaseEEpLIS2_EERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %742 unwind label %783

742:                                              ; preds = %739
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %86) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %75) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr %70) #7
  br label %790

743:                                              ; preds = %600, %595, %587, %578
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %65, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %66, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %67) #7
  br label %791

747:                                              ; preds = %612
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %65, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %66, align 4
  br label %755

751:                                              ; preds = %649, %648, %646, %633
  %752 = landingpad { ptr, i32 }
          cleanup
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %65, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %66, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  br label %755

755:                                              ; preds = %751, %747
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %71) #7
  br label %789

756:                                              ; preds = %662, %650
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %65, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %66, align 4
  br label %764

760:                                              ; preds = %696, %695, %683, %667
  %761 = landingpad { ptr, i32 }
          cleanup
  %762 = extractvalue { ptr, i32 } %761, 0
  store ptr %762, ptr %65, align 8
  %763 = extractvalue { ptr, i32 } %761, 1
  store i32 %763, ptr %66, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %80) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #7
  br label %764

764:                                              ; preds = %760, %756
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr %76) #7
  br label %788

765:                                              ; preds = %703, %697
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %65, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %66, align 4
  br label %778

769:                                              ; preds = %715, %705
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %65, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %66, align 4
  br label %777

773:                                              ; preds = %723, %716
  %774 = landingpad { ptr, i32 }
          cleanup
  %775 = extractvalue { ptr, i32 } %774, 0
  store ptr %775, ptr %65, align 8
  %776 = extractvalue { ptr, i32 } %774, 1
  store i32 %776, ptr %66, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #7
  br label %777

777:                                              ; preds = %773, %769
  call void @llvm.lifetime.end.p0(i64 288, ptr %84) #7
  br label %778

778:                                              ; preds = %777, %765
  call void @llvm.lifetime.end.p0(i64 288, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #7
  br label %788

779:                                              ; preds = %726
  %780 = landingpad { ptr, i32 }
          cleanup
  %781 = extractvalue { ptr, i32 } %780, 0
  store ptr %781, ptr %65, align 8
  %782 = extractvalue { ptr, i32 } %780, 1
  store i32 %782, ptr %66, align 4
  br label %787

783:                                              ; preds = %739, %732
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %65, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %66, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  br label %787

787:                                              ; preds = %783, %779
  call void @llvm.lifetime.end.p0(i64 48, ptr %86) #7
  br label %788

788:                                              ; preds = %787, %778, %764
  call void @llvm.lifetime.end.p0(i64 48, ptr %75) #7
  br label %789

789:                                              ; preds = %788, %755
  call void @llvm.lifetime.end.p0(i64 288, ptr %70) #7
  br label %791

790:                                              ; preds = %742, %609
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  br label %792

791:                                              ; preds = %789, %743, %574
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %1149

792:                                              ; preds = %790, %520
  br label %793

793:                                              ; preds = %792, %519
  br label %794

794:                                              ; preds = %793, %382
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %795

795:                                              ; preds = %794
  %796 = load i32, ptr %9, align 4, !tbaa !89
  %797 = add i32 %796, -1
  store i32 %797, ptr %9, align 4, !tbaa !89
  br label %209, !llvm.loop !112

798:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 48, ptr %88) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #7
  store double 0.000000e+00, ptr %89, align 8, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #7
  store double 0.000000e+00, ptr %90, align 8, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #7
  store double 0.000000e+00, ptr %91, align 8, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #7
  %799 = load ptr, ptr %5, align 8, !tbaa !5
  %800 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %799, i32 0, i32 7
  %801 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %800, i64 noundef 0)
  %802 = load double, ptr %801, align 8, !tbaa !97
  %803 = fneg double %802
  store double %803, ptr %92, align 8, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #7
  %804 = load ptr, ptr %5, align 8, !tbaa !5
  %805 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %804, i32 0, i32 7
  %806 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %805, i64 noundef 1)
  %807 = load double, ptr %806, align 8, !tbaa !97
  %808 = fneg double %807
  store double %808, ptr %93, align 8, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #7
  %809 = load ptr, ptr %5, align 8, !tbaa !5
  %810 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %809, i32 0, i32 7
  %811 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %810, i64 noundef 2)
  %812 = load double, ptr %811, align 8, !tbaa !97
  %813 = fneg double %812
  store double %813, ptr %94, align 8, !tbaa !97
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %88, ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %94)
  %814 = load ptr, ptr %5, align 8, !tbaa !5
  %815 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %814, i32 0, i32 9
  %816 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %815, i64 noundef 0) #7
  %817 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %816, ptr noundef nonnull align 16 dereferenceable(48) %88) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %88) #7
  store i32 1, ptr %9, align 4, !tbaa !89
  br label %818

818:                                              ; preds = %1145, %798
  %819 = load i32, ptr %9, align 4, !tbaa !89
  %820 = zext i32 %819 to i64
  %821 = load ptr, ptr %5, align 8, !tbaa !5
  %822 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %821, i32 0, i32 38
  %823 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %822) #7
  %824 = icmp ult i64 %820, %823
  br i1 %824, label %825, label %1148

825:                                              ; preds = %818
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #7
  %826 = load ptr, ptr %5, align 8, !tbaa !5
  %827 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %826, i32 0, i32 10
  %828 = load i32, ptr %9, align 4, !tbaa !89
  %829 = zext i32 %828 to i64
  %830 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %827, i64 noundef %829) #7
  %831 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %830, i32 0, i32 3
  %832 = load i32, ptr %831, align 8, !tbaa !92
  store i32 %832, ptr %95, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #7
  %833 = load ptr, ptr %5, align 8, !tbaa !5
  %834 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %833, i32 0, i32 0
  %835 = load i32, ptr %9, align 4, !tbaa !89
  %836 = zext i32 %835 to i64
  %837 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %834, i64 noundef %836) #7
  %838 = load i32, ptr %837, align 4, !tbaa !89
  store i32 %838, ptr %96, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 96, ptr %97) #7
  %839 = load ptr, ptr %5, align 8, !tbaa !5
  %840 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %839, i32 0, i32 34
  %841 = load i32, ptr %9, align 4, !tbaa !89
  %842 = zext i32 %841 to i64
  %843 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %840, i64 noundef %842) #7
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(96) %97, ptr noundef nonnull align 8 dereferenceable(96) %843)
  call void @llvm.lifetime.start.p0(i64 24, ptr %98) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %99) #7
  %844 = load ptr, ptr %5, align 8, !tbaa !5
  %845 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %844, i32 0, i32 9
  %846 = load i32, ptr %96, align 4, !tbaa !89
  %847 = zext i32 %846 to i64
  %848 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %845, i64 noundef %847) #7
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform5applyERK15SpatialVector_t(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %99, ptr noundef nonnull align 8 dereferenceable(96) %97, ptr noundef nonnull align 16 dereferenceable(48) %848)
  %849 = load ptr, ptr %5, align 8, !tbaa !5
  %850 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %849, i32 0, i32 23
  %851 = load i32, ptr %9, align 4, !tbaa !89
  %852 = zext i32 %851 to i64
  %853 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %850, i64 noundef %852) #7
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.701") align 8 %98, ptr noundef nonnull align 1 dereferenceable(1) %99, ptr noundef nonnull align 1 dereferenceable(1) %853)
  %854 = load ptr, ptr %5, align 8, !tbaa !5
  %855 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %854, i32 0, i32 9
  %856 = load i32, ptr %9, align 4, !tbaa !89
  %857 = zext i32 %856 to i64
  %858 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %855, i64 noundef %857) #7
  %859 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %858, ptr noundef nonnull align 1 dereferenceable(1) %98)
  call void @llvm.lifetime.end.p0(i64 48, ptr %99) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #7
  %860 = load ptr, ptr %5, align 8, !tbaa !5
  %861 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %860, i32 0, i32 10
  %862 = load i32, ptr %9, align 4, !tbaa !89
  %863 = zext i32 %862 to i64
  %864 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %861, i64 noundef %863) #7
  %865 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %864, i32 0, i32 2
  %866 = load i32, ptr %865, align 4, !tbaa !95
  %867 = icmp eq i32 %866, 3
  br i1 %867, label %868, label %946

868:                                              ; preds = %825
  %869 = load ptr, ptr %5, align 8, !tbaa !5
  %870 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %869, i32 0, i32 10
  %871 = load i32, ptr %9, align 4, !tbaa !89
  %872 = zext i32 %871 to i64
  %873 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %870, i64 noundef %872) #7
  %874 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %873, i32 0, i32 1
  %875 = load i32, ptr %874, align 8, !tbaa !96
  %876 = icmp ne i32 %875, 21
  br i1 %876, label %877, label %946

877:                                              ; preds = %868
  call void @llvm.lifetime.start.p0(i64 24, ptr %100) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %101) #7
  %878 = load ptr, ptr %5, align 8, !tbaa !5
  %879 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %878, i32 0, i32 19
  %880 = load i32, ptr %9, align 4, !tbaa !89
  %881 = zext i32 %880 to i64
  %882 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI9Matrix3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %879, i64 noundef %881) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %102) #7
  %883 = load ptr, ptr %5, align 8, !tbaa !5
  %884 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %883, i32 0, i32 20
  %885 = load i32, ptr %9, align 4, !tbaa !89
  %886 = zext i32 %885 to i64
  %887 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %884, i64 noundef %886) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %103) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #7
  %888 = load ptr, ptr %5, align 8, !tbaa !5
  %889 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %888, i32 0, i32 18
  %890 = load i32, ptr %9, align 4, !tbaa !89
  %891 = zext i32 %890 to i64
  %892 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %889, i64 noundef %891) #7
  %893 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %892)
  %894 = getelementptr inbounds %"class.Eigen::Transpose.537", ptr %104, i32 0, i32 0
  store ptr %893, ptr %894, align 8
  %895 = load ptr, ptr %5, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %895, i32 0, i32 9
  %897 = load i32, ptr %9, align 4, !tbaa !89
  %898 = zext i32 %897 to i64
  %899 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %896, i64 noundef %898) #7
  %900 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %104, ptr noundef nonnull align 1 dereferenceable(1) %899)
  %901 = getelementptr inbounds { ptr, ptr }, ptr %103, i32 0, i32 0
  %902 = extractvalue { ptr, ptr } %900, 0
  store ptr %902, ptr %901, align 8
  %903 = getelementptr inbounds { ptr, ptr }, ptr %103, i32 0, i32 1
  %904 = extractvalue { ptr, ptr } %900, 1
  store ptr %904, ptr %903, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEmiINS_7ProductINS_9TransposeINS1_IdLi6ELi3ELi0ELi6ELi3EEEEENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSC_6traitsIT_E6ScalarEEEKS2_KSF_EERKNS0_ISF_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.524") align 8 %102, ptr noundef nonnull align 1 dereferenceable(1) %887, ptr noundef nonnull align 1 dereferenceable(1) %103)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEmlINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS1_IdLi3ELi1ELi0ELi3ELi1EEEKNS_7ProductINS_9TransposeINS1_IdLi6ELi3ELi0ELi6ELi3EEEEENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEEEKNSB_IS2_T_Li0EEERKNS0_ISJ_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.708") align 8 %101, ptr noundef nonnull align 1 dereferenceable(1) %882, ptr noundef nonnull align 1 dereferenceable(1) %102)
  call void @_ZN9Vector3_tC2IN5Eigen7ProductINS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEENS1_13CwiseBinaryOpINS1_8internal20scalar_difference_opIddEEKNS3_IdLi3ELi1ELi0ELi3ELi1EEEKNS2_INS1_9TransposeINS3_IdLi6ELi3ELi0ELi6ELi3EEEEENS3_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEELi0EEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %100, ptr noundef nonnull align 1 dereferenceable(1) %101)
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %103) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %102) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %101) #7
  %905 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %100, i64 noundef 0)
  %906 = load double, ptr %905, align 8, !tbaa !97
  %907 = load ptr, ptr %8, align 8, !tbaa !5
  %908 = load i32, ptr %95, align 4, !tbaa !89
  %909 = zext i32 %908 to i64
  %910 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %907, i64 noundef %909)
  store double %906, ptr %910, align 8, !tbaa !97
  %911 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %100, i64 noundef 1)
  %912 = load double, ptr %911, align 8, !tbaa !97
  %913 = load ptr, ptr %8, align 8, !tbaa !5
  %914 = load i32, ptr %95, align 4, !tbaa !89
  %915 = add i32 %914, 1
  %916 = zext i32 %915 to i64
  %917 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %913, i64 noundef %916)
  store double %912, ptr %917, align 8, !tbaa !97
  %918 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %100, i64 noundef 2)
  %919 = load double, ptr %918, align 8, !tbaa !97
  %920 = load ptr, ptr %8, align 8, !tbaa !5
  %921 = load i32, ptr %95, align 4, !tbaa !89
  %922 = add i32 %921, 2
  %923 = zext i32 %922 to i64
  %924 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %920, i64 noundef %923)
  store double %919, ptr %924, align 8, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 32, ptr %105) #7
  %925 = load ptr, ptr %5, align 8, !tbaa !5
  %926 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %925, i32 0, i32 9
  %927 = load i32, ptr %9, align 4, !tbaa !89
  %928 = zext i32 %927 to i64
  %929 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %926, i64 noundef %928) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #7
  %930 = load ptr, ptr %5, align 8, !tbaa !5
  %931 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %930, i32 0, i32 17
  %932 = load i32, ptr %9, align 4, !tbaa !89
  %933 = zext i32 %932 to i64
  %934 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %931, i64 noundef %933) #7
  %935 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi1ELi0ELi3ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %934, ptr noundef nonnull align 1 dereferenceable(1) %100)
  %936 = getelementptr inbounds { ptr, ptr }, ptr %106, i32 0, i32 0
  %937 = extractvalue { ptr, ptr } %935, 0
  store ptr %937, ptr %936, align 8
  %938 = getelementptr inbounds { ptr, ptr }, ptr %106, i32 0, i32 1
  %939 = extractvalue { ptr, ptr } %935, 1
  store ptr %939, ptr %938, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLi6ELi3ELi0ELi6ELi3EEENS1_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS2_KSD_EERKNS0_ISD_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.715") align 8 %105, ptr noundef nonnull align 1 dereferenceable(1) %929, ptr noundef nonnull align 1 dereferenceable(1) %106)
  %940 = load ptr, ptr %5, align 8, !tbaa !5
  %941 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %940, i32 0, i32 9
  %942 = load i32, ptr %9, align 4, !tbaa !89
  %943 = zext i32 %942 to i64
  %944 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %941, i64 noundef %943) #7
  %945 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi3ELi0ELi6ELi3EEENS6_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %944, ptr noundef nonnull align 1 dereferenceable(1) %105)
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %105) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %100) #7
  br label %1144

946:                                              ; preds = %868, %825
  %947 = load ptr, ptr %5, align 8, !tbaa !5
  %948 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %947, i32 0, i32 10
  %949 = load i32, ptr %9, align 4, !tbaa !89
  %950 = zext i32 %949 to i64
  %951 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %948, i64 noundef %950) #7
  %952 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %951, i32 0, i32 2
  %953 = load i32, ptr %952, align 4, !tbaa !95
  %954 = icmp eq i32 %953, 1
  br i1 %954, label %955, label %1015

955:                                              ; preds = %946
  %956 = load ptr, ptr %5, align 8, !tbaa !5
  %957 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %956, i32 0, i32 10
  %958 = load i32, ptr %9, align 4, !tbaa !89
  %959 = zext i32 %958 to i64
  %960 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %957, i64 noundef %959) #7
  %961 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %960, i32 0, i32 1
  %962 = load i32, ptr %961, align 8, !tbaa !96
  %963 = icmp ne i32 %962, 21
  br i1 %963, label %964, label %1015

964:                                              ; preds = %955
  %965 = load ptr, ptr %5, align 8, !tbaa !5
  %966 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %965, i32 0, i32 27
  %967 = load i32, ptr %9, align 4, !tbaa !89
  %968 = zext i32 %967 to i64
  %969 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %966, i64 noundef %968)
  %970 = load double, ptr %969, align 8, !tbaa !97
  %971 = fdiv double 1.000000e+00, %970
  %972 = load ptr, ptr %5, align 8, !tbaa !5
  %973 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %972, i32 0, i32 28
  %974 = load i32, ptr %9, align 4, !tbaa !89
  %975 = zext i32 %974 to i64
  %976 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %973, i64 noundef %975)
  %977 = load double, ptr %976, align 8, !tbaa !97
  %978 = load ptr, ptr %5, align 8, !tbaa !5
  %979 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %978, i32 0, i32 26
  %980 = load i32, ptr %9, align 4, !tbaa !89
  %981 = zext i32 %980 to i64
  %982 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %979, i64 noundef %981) #7
  %983 = load ptr, ptr %5, align 8, !tbaa !5
  %984 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %983, i32 0, i32 9
  %985 = load i32, ptr %9, align 4, !tbaa !89
  %986 = zext i32 %985 to i64
  %987 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %984, i64 noundef %986) #7
  %988 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotIS2_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENS6_17scalar_product_opIdSA_EEE10ReturnTypeERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %982, ptr noundef nonnull align 1 dereferenceable(1) %987)
  %989 = fsub double %977, %988
  %990 = fmul double %971, %989
  %991 = load ptr, ptr %8, align 8, !tbaa !5
  %992 = load i32, ptr %95, align 4, !tbaa !89
  %993 = zext i32 %992 to i64
  %994 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %991, i64 noundef %993)
  store double %990, ptr %994, align 8, !tbaa !97
  call void @llvm.lifetime.start.p0(i64 48, ptr %107) #7
  %995 = load ptr, ptr %5, align 8, !tbaa !5
  %996 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %995, i32 0, i32 9
  %997 = load i32, ptr %9, align 4, !tbaa !89
  %998 = zext i32 %997 to i64
  %999 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %996, i64 noundef %998) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %108) #7
  %1000 = load ptr, ptr %5, align 8, !tbaa !5
  %1001 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1000, i32 0, i32 11
  %1002 = load i32, ptr %9, align 4, !tbaa !89
  %1003 = zext i32 %1002 to i64
  %1004 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1001, i64 noundef %1003) #7
  %1005 = load ptr, ptr %8, align 8, !tbaa !5
  %1006 = load i32, ptr %95, align 4, !tbaa !89
  %1007 = zext i32 %1006 to i64
  %1008 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %1005, i64 noundef %1007)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmlIdEEKNS_13CwiseBinaryOpINS_8internal17scalar_product_opIdNS6_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdS9_NS7_IdS9_EEEEEE5valueEE4typeEEEKS2_KNS6_19plain_constant_typeIS2_SE_E4typeEEERKS9_(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.657") align 8 %108, ptr noundef nonnull align 1 dereferenceable(1) %1004, ptr noundef nonnull align 8 dereferenceable(8) %1008)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIdEES9_EEEEEEKNS5_INS6_13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEES9_KSI_EERKNS0_ISI_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.729") align 8 %107, ptr noundef nonnull align 1 dereferenceable(1) %999, ptr noundef nonnull align 1 dereferenceable(1) %108)
  %1009 = load ptr, ptr %5, align 8, !tbaa !5
  %1010 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1009, i32 0, i32 9
  %1011 = load i32, ptr %9, align 4, !tbaa !89
  %1012 = zext i32 %1011 to i64
  %1013 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1010, i64 noundef %1012) #7
  %1014 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS2_INS3_17scalar_product_opIddEES8_KNS1_14CwiseNullaryOpINS3_18scalar_constant_opIdEES8_EEEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %1013, ptr noundef nonnull align 1 dereferenceable(1) %107)
  call void @llvm.lifetime.end.p0(i64 32, ptr %108) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %107) #7
  br label %1143

1015:                                             ; preds = %955, %946
  %1016 = load ptr, ptr %5, align 8, !tbaa !5
  %1017 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1016, i32 0, i32 10
  %1018 = load i32, ptr %9, align 4, !tbaa !89
  %1019 = zext i32 %1018 to i64
  %1020 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1017, i64 noundef %1019) #7
  %1021 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %1020, i32 0, i32 1
  %1022 = load i32, ptr %1021, align 8, !tbaa !96
  %1023 = icmp eq i32 %1022, 21
  br i1 %1023, label %1024, label %1142

1024:                                             ; preds = %1015
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #7
  %1025 = load ptr, ptr %5, align 8, !tbaa !5
  %1026 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1025, i32 0, i32 10
  %1027 = load i32, ptr %9, align 4, !tbaa !89
  %1028 = zext i32 %1027 to i64
  %1029 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1026, i64 noundef %1028) #7
  %1030 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %1029, i32 0, i32 4
  %1031 = load i32, ptr %1030, align 4, !tbaa !99
  store i32 %1031, ptr %109, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #7
  %1032 = load ptr, ptr %5, align 8, !tbaa !5
  %1033 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1032, i32 0, i32 22
  %1034 = load i32, ptr %109, align 4, !tbaa !89
  %1035 = zext i32 %1034 to i64
  %1036 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1033, i64 noundef %1035) #7
  %1037 = load ptr, ptr %1036, align 8, !tbaa !5
  %1038 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %1037, i32 0, i32 1
  %1039 = load i32, ptr %1038, align 8, !tbaa !100
  store i32 %1039, ptr %110, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 16, ptr %111) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %112) #7
  %1040 = load i32, ptr %110, align 4, !tbaa !89
  %1041 = zext i32 %1040 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.182") align 8 %112, i64 noundef %1041)
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %111, ptr noundef nonnull align 1 dereferenceable(1) %112)
  call void @llvm.lifetime.end.p0(i64 24, ptr %112) #7
  call void @llvm.lifetime.start.p0(i64 40, ptr %113) #7
  %1042 = load ptr, ptr %5, align 8, !tbaa !5
  %1043 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1042, i32 0, i32 22
  %1044 = load i32, ptr %109, align 4, !tbaa !89
  %1045 = zext i32 %1044 to i64
  %1046 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1043, i64 noundef %1045) #7
  %1047 = load ptr, ptr %1046, align 8, !tbaa !5
  %1048 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %1047, i32 0, i32 5
  call void @llvm.lifetime.start.p0(i64 32, ptr %114) #7
  %1049 = load ptr, ptr %5, align 8, !tbaa !5
  %1050 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1049, i32 0, i32 22
  %1051 = load i32, ptr %109, align 4, !tbaa !89
  %1052 = zext i32 %1051 to i64
  %1053 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1050, i64 noundef %1052) #7
  %1054 = load ptr, ptr %1053, align 8, !tbaa !5
  %1055 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %1054, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 16, ptr %115) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #7
  %1056 = load ptr, ptr %5, align 8, !tbaa !5
  %1057 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1056, i32 0, i32 22
  %1058 = load i32, ptr %109, align 4, !tbaa !89
  %1059 = zext i32 %1058 to i64
  %1060 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1057, i64 noundef %1059) #7
  %1061 = load ptr, ptr %1060, align 8, !tbaa !5
  %1062 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %1061, i32 0, i32 4
  %1063 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %1062)
          to label %1064 unwind label %1086

1064:                                             ; preds = %1024
  %1065 = getelementptr inbounds %"class.Eigen::Transpose", ptr %116, i32 0, i32 0
  store ptr %1063, ptr %1065, align 8
  %1066 = load ptr, ptr %5, align 8, !tbaa !5
  %1067 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1066, i32 0, i32 9
  %1068 = load i32, ptr %9, align 4, !tbaa !89
  %1069 = zext i32 %1068 to i64
  %1070 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1067, i64 noundef %1069) #7
  %1071 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %116, ptr noundef nonnull align 1 dereferenceable(1) %1070)
          to label %1072 unwind label %1086

1072:                                             ; preds = %1064
  %1073 = getelementptr inbounds { ptr, ptr }, ptr %115, i32 0, i32 0
  %1074 = extractvalue { ptr, ptr } %1071, 0
  store ptr %1074, ptr %1073, align 8
  %1075 = getelementptr inbounds { ptr, ptr }, ptr %115, i32 0, i32 1
  %1076 = extractvalue { ptr, ptr } %1071, 1
  store ptr %1076, ptr %1075, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEmiINS_7ProductINS_9TransposeINS1_IdLin1ELin1ELi0ELin1ELin1EEEEENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSC_6traitsIT_E6ScalarEEEKS2_KSF_EERKNS0_ISF_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.666") align 8 %114, ptr noundef nonnull align 1 dereferenceable(1) %1055, ptr noundef nonnull align 1 dereferenceable(1) %115)
          to label %1077 unwind label %1086

1077:                                             ; preds = %1072
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS1_IdLin1ELi1ELi0ELin1ELi1EEEKNS_7ProductINS_9TransposeIS2_EENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEEEKNSB_IS2_T_Li0EEERKNS0_ISI_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.736") align 8 %113, ptr noundef nonnull align 1 dereferenceable(1) %1048, ptr noundef nonnull align 1 dereferenceable(1) %114)
          to label %1078 unwind label %1086

1078:                                             ; preds = %1077
  %1079 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_7ProductINS0_IdLin1ELin1ELi0ELin1ELin1EEENS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKS1_KNS3_INS_9TransposeIS4_EENS0_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEELi0EEEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %111, ptr noundef nonnull align 1 dereferenceable(1) %113)
          to label %1080 unwind label %1086

1080:                                             ; preds = %1078
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %113) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #7
  store i32 0, ptr %117, align 4, !tbaa !89
  br label %1081

1081:                                             ; preds = %1103, %1080
  %1082 = load i32, ptr %117, align 4, !tbaa !89
  %1083 = load i32, ptr %110, align 4, !tbaa !89
  %1084 = icmp ult i32 %1082, %1083
  br i1 %1084, label %1090, label %1085

1085:                                             ; preds = %1081
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #7
  br label %1110

1086:                                             ; preds = %1078, %1077, %1072, %1064, %1024
  %1087 = landingpad { ptr, i32 }
          cleanup
  %1088 = extractvalue { ptr, i32 } %1087, 0
  store ptr %1088, ptr %65, align 8
  %1089 = extractvalue { ptr, i32 } %1087, 1
  store i32 %1089, ptr %66, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %113) #7
  br label %1141

1090:                                             ; preds = %1081
  %1091 = load i32, ptr %117, align 4, !tbaa !89
  %1092 = sext i32 %1091 to i64
  %1093 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %111, i64 noundef %1092)
          to label %1094 unwind label %1106

1094:                                             ; preds = %1090
  %1095 = load double, ptr %1093, align 8, !tbaa !97
  %1096 = load ptr, ptr %8, align 8, !tbaa !5
  %1097 = load i32, ptr %95, align 4, !tbaa !89
  %1098 = load i32, ptr %117, align 4, !tbaa !89
  %1099 = add i32 %1097, %1098
  %1100 = zext i32 %1099 to i64
  %1101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %1096, i64 noundef %1100)
          to label %1102 unwind label %1106

1102:                                             ; preds = %1094
  store double %1095, ptr %1101, align 8, !tbaa !97
  br label %1103

1103:                                             ; preds = %1102
  %1104 = load i32, ptr %117, align 4, !tbaa !89
  %1105 = add nsw i32 %1104, 1
  store i32 %1105, ptr %117, align 4, !tbaa !89
  br label %1081, !llvm.loop !113

1106:                                             ; preds = %1094, %1090
  %1107 = landingpad { ptr, i32 }
          cleanup
  %1108 = extractvalue { ptr, i32 } %1107, 0
  store ptr %1108, ptr %65, align 8
  %1109 = extractvalue { ptr, i32 } %1107, 1
  store i32 %1109, ptr %66, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #7
  br label %1141

1110:                                             ; preds = %1085
  call void @llvm.lifetime.start.p0(i64 32, ptr %118) #7
  %1111 = load ptr, ptr %5, align 8, !tbaa !5
  %1112 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1111, i32 0, i32 9
  %1113 = load i32, ptr %9, align 4, !tbaa !89
  %1114 = zext i32 %1113 to i64
  %1115 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1112, i64 noundef %1114) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %119) #7
  %1116 = load ptr, ptr %5, align 8, !tbaa !5
  %1117 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1116, i32 0, i32 22
  %1118 = load i32, ptr %109, align 4, !tbaa !89
  %1119 = zext i32 %1118 to i64
  %1120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1117, i64 noundef %1119) #7
  %1121 = load ptr, ptr %1120, align 8, !tbaa !5
  %1122 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %1121, i32 0, i32 3
  %1123 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS1_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %1122, ptr noundef nonnull align 1 dereferenceable(1) %111)
          to label %1124 unwind label %1137

1124:                                             ; preds = %1110
  %1125 = getelementptr inbounds { ptr, ptr }, ptr %119, i32 0, i32 0
  %1126 = extractvalue { ptr, ptr } %1123, 0
  store ptr %1126, ptr %1125, align 8
  %1127 = getelementptr inbounds { ptr, ptr }, ptr %119, i32 0, i32 1
  %1128 = extractvalue { ptr, ptr } %1123, 1
  store ptr %1128, ptr %1127, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLin1ELin1ELi0ELin1ELin1EEENS1_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS2_KSD_EERKNS0_ISD_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.743") align 8 %118, ptr noundef nonnull align 1 dereferenceable(1) %1115, ptr noundef nonnull align 1 dereferenceable(1) %119)
          to label %1129 unwind label %1137

1129:                                             ; preds = %1124
  %1130 = load ptr, ptr %5, align 8, !tbaa !5
  %1131 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %1130, i32 0, i32 9
  %1132 = load i32, ptr %9, align 4, !tbaa !89
  %1133 = zext i32 %1132 to i64
  %1134 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1131, i64 noundef %1133) #7
  %1135 = invoke noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLin1ELin1ELi0ELin1ELin1EEENS6_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %1134, ptr noundef nonnull align 1 dereferenceable(1) %118)
          to label %1136 unwind label %1137

1136:                                             ; preds = %1129
  call void @llvm.lifetime.end.p0(i64 16, ptr %119) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #7
  br label %1142

1137:                                             ; preds = %1129, %1124, %1110
  %1138 = landingpad { ptr, i32 }
          cleanup
  %1139 = extractvalue { ptr, i32 } %1138, 0
  store ptr %1139, ptr %65, align 8
  %1140 = extractvalue { ptr, i32 } %1138, 1
  store i32 %1140, ptr %66, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %119) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %118) #7
  br label %1141

1141:                                             ; preds = %1137, %1106, %1086
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #7
  br label %1149

1142:                                             ; preds = %1136, %1015
  br label %1143

1143:                                             ; preds = %1142, %964
  br label %1144

1144:                                             ; preds = %1143, %877
  call void @llvm.lifetime.end.p0(i64 96, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #7
  br label %1145

1145:                                             ; preds = %1144
  %1146 = load i32, ptr %9, align 4, !tbaa !89
  %1147 = add i32 %1146, 1
  store i32 %1147, ptr %9, align 4, !tbaa !89
  br label %818, !llvm.loop !114

1148:                                             ; preds = %818
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  ret void

1149:                                             ; preds = %1141, %791
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  br label %1150

1150:                                             ; preds = %1149
  %1151 = load ptr, ptr %65, align 8
  %1152 = load i32, ptr %66, align 4
  %1153 = insertvalue { ptr, i32 } poison, ptr %1151, 0
  %1154 = insertvalue { ptr, i32 } %1153, i32 %1152, 1
  resume { ptr, i32 } %1154
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics4Math23SpatialRigidBodyInertia8toMatrixEv(ptr dead_on_unwind noalias writable sret(%class.SpatialMatrix_t) align 16, ptr noundef nonnull align 8 dereferenceable(80)) #5 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(288) ptr @_ZN15SpatialMatrix_taSEOS_(ptr noundef nonnull align 16 dereferenceable(288), ptr noundef nonnull align 16 dereferenceable(288)) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math6crossfERK15SpatialVector_tS3_(ptr dead_on_unwind noalias writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 16 dereferenceable(48)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiamlERK15SpatialVector_t(ptr dead_on_unwind noalias writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 16 dereferenceable(48)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEneINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES2_EEEEbRKNS0_IT_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics4Math16SpatialTransform15toMatrixAdjointEv(ptr dead_on_unwind noalias writable sret(%class.SpatialMatrix_t) align 16, ptr noundef nonnull align 8 dereferenceable(96)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi3ELi0ELi3ELi3EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind noalias writable sret(%class.SpatialMatrix_t) align 16, ptr noundef nonnull align 8 dereferenceable(96)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics4Math16SpatialTransform8toMatrixEv(ptr dead_on_unwind noalias writable sret(%class.SpatialMatrix_t) align 16, ptr noundef nonnull align 8 dereferenceable(96)) #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERK15SpatialVector_t(ptr dead_on_unwind noalias writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 16 dereferenceable(48)) #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi1ELi0ELi3ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLin1ELin1ELi0ELin1ELin1EEENS6_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 1 dereferenceable(1)) #5 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 = { 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 #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 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 #5 = { 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 #6 = { noreturn nounwind }
attributes #7 = { 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, !19, i64 72}
!10 = !{!"_ZTSN17RigidBodyDynamics5ModelE", !11, i64 0, !11, i64 24, !15, i64 48, !19, i64 72, !19, i64 76, !19, i64 80, !19, i64 84, !20, i64 88, !25, i64 112, !25, i64 136, !30, i64 160, !25, i64 184, !25, i64 208, !25, i64 232, !11, i64 256, !35, i64 280, !11, i64 304, !40, i64 328, !40, i64 352, !45, i64 376, !49, i64 400, !11, i64 424, !53, i64 448, !25, i64 472, !57, i64 496, !25, i64 520, !25, i64 544, !62, i64 568, !62, i64 584, !25, i64 600, !66, i64 624, !66, i64 648, !25, i64 672, !25, i64 696, !35, i64 720, !35, i64 744, !71, i64 768, !19, i64 792, !76, i64 800, !81, i64 824}
!11 = !{!"_ZTSSt6vectorIjSaIjEE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!15 = !{!"_ZTSSt6vectorIS_IjSaIjEESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"int", !7, i64 0}
!20 = !{!"_ZTS9Vector3_t", !21, i64 0}
!21 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !22, i64 0}
!22 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !23, i64 0}
!23 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !24, i64 0}
!24 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !7, i64 0}
!25 = !{!"_ZTSSt6vectorI15SpatialVector_tSaIS0_EE", !26, i64 0}
!26 = !{!"_ZTSSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics5JointESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE17_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 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEESaIS2_EE", !41, i64 0}
!41 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!45 = !{!"_ZTSSt6vectorI9Matrix3_tSaIS0_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseI9Matrix3_tSaIS0_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseI9Matrix3_tSaIS0_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseI9Matrix3_tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTSSt6vectorI9Vector3_tSaIS0_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseI9Vector3_tSaIS0_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!"_ZTSSt6vectorI15SpatialMatrix_tSaIS0_EE", !58, i64 0}
!58 = !{!"_ZTSSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!62 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !63, i64 0}
!63 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !64, i64 0}
!64 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !6, i64 0, !65, i64 8}
!65 = !{!"long", !7, i64 0}
!66 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaESaIS2_EE", !67, i64 0}
!67 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE", !68, i64 0}
!68 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE", !69, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!71 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics9FixedBodyESaIS1_EE", !72, i64 0}
!72 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!76 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4BodyESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!81 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !82, i64 0}
!82 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !83, i64 0}
!83 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !84, i64 0, !86, i64 8}
!84 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !85, i64 0}
!85 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!86 = !{!"_ZTSSt15_Rb_tree_header", !87, i64 0, !65, i64 32}
!87 = !{!"_ZTSSt18_Rb_tree_node_base", !88, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!88 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!89 = !{!19, !19, i64 0}
!90 = distinct !{!90, !91}
!91 = !{!"llvm.loop.mustprogress"}
!92 = !{!93, !19, i64 16}
!93 = !{!"_ZTSN17RigidBodyDynamics5JointE", !6, i64 0, !94, i64 8, !19, i64 12, !19, i64 16, !19, i64 20}
!94 = !{!"_ZTSN17RigidBodyDynamics9JointTypeE", !7, i64 0}
!95 = !{!93, !19, i64 12}
!96 = !{!93, !94, i64 8}
!97 = !{!98, !98, i64 0}
!98 = !{!"double", !7, i64 0}
!99 = !{!93, !19, i64 20}
!100 = !{!101, !19, i64 8}
!101 = !{!"_ZTSN17RigidBodyDynamics11CustomJointE", !19, i64 8, !102, i64 16, !108, i64 112, !108, i64 136, !108, i64 160, !62, i64 184, !62, i64 200}
!102 = !{!"_ZTSN17RigidBodyDynamics4Math16SpatialTransformE", !103, i64 0, !20, i64 72}
!103 = !{!"_ZTS9Matrix3_t", !104, i64 0}
!104 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE", !105, i64 0}
!105 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEE", !106, i64 0}
!106 = !{!"_ZTSN5Eigen12DenseStorageIdLi9ELi3ELi3ELi0EEE", !107, i64 0}
!107 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi9ELi0ELi0EEE", !7, i64 0}
!108 = !{!"_ZTSN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEE", !109, i64 0}
!109 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE", !110, i64 0}
!110 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EEE", !6, i64 0, !65, i64 8, !65, i64 16}
!111 = distinct !{!111, !91}
!112 = distinct !{!112, !91}
!113 = distinct !{!113, !91}
!114 = distinct !{!114, !91}


; 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.Eigen::CwiseNullaryOp" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%"class.Eigen::CwiseNullaryOp.182" = type { %"class.Eigen::internal::variable_if_dynamic", [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"class.Eigen::Product.336" = type { %"class.Eigen::Product.303", ptr }
%"class.Eigen::Product.303" = type { ptr, ptr }
%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.SpatialMatrix_t = type { %"class.Eigen::Matrix.187" }
%"class.Eigen::Matrix.187" = type { %"class.Eigen::PlainObjectBase.188" }
%"class.Eigen::PlainObjectBase.188" = type { %"class.Eigen::DenseStorage.195" }
%"class.Eigen::DenseStorage.195" = type { %"struct.Eigen::internal::plain_array.196" }
%"struct.Eigen::internal::plain_array.196" = type { [36 x double] }
%"class.Eigen::Product.517" = type { ptr, ptr }
%"class.Eigen::CwiseBinaryOp.524" = type <{ ptr, %"class.Eigen::Product.530", [8 x i8] }>
%"class.Eigen::Product.530" = type { %"class.Eigen::Transpose.537", ptr }
%"class.Eigen::Transpose.537" = type { ptr }
%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.Eigen::CwiseBinaryOp.556" = type <{ ptr, %"class.Eigen::Product.562", [8 x i8] }>
%"class.Eigen::Product.562" = type { %"class.Eigen::Product.569", %"class.Eigen::Transpose.537" }
%"class.Eigen::Product.569" = type { ptr, ptr }
%"class.Eigen::CwiseBinaryOp.577" = type <{ [8 x i8], %"class.Eigen::CwiseBinaryOp.583", %"class.Eigen::Product.590", [8 x i8] }>
%"class.Eigen::CwiseBinaryOp.583" = type <{ ptr, %"class.Eigen::Product.517", [8 x i8] }>
%"class.Eigen::Product.590" = type { %"class.Eigen::Product.569", ptr }
%"class.Eigen::Product.598" = type { %"class.Eigen::Product.605", ptr }
%"class.Eigen::Product.605" = type { ptr, ptr }
%"class.Eigen::NoAlias" = type { ptr }
%"class.Eigen::NoAlias.612" = type { ptr }
%"class.Eigen::CwiseBinaryOp.613" = type <{ ptr, %"class.Eigen::Product.619", [8 x i8] }>
%"class.Eigen::Product.619" = type { ptr, %"class.Eigen::Transpose.626" }
%"class.Eigen::Transpose.626" = type { %"class.Eigen::CwiseBinaryOp.632" }
%"class.Eigen::CwiseBinaryOp.632" = type <{ ptr, %"class.Eigen::CwiseNullaryOp.638", [8 x i8] }>
%"class.Eigen::CwiseNullaryOp.638" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::CwiseBinaryOp.645" = type { [8 x i8], %"class.Eigen::CwiseBinaryOp.583", %"class.Eigen::CwiseBinaryOp.651", [8 x i8] }
%"class.Eigen::CwiseBinaryOp.651" = type <{ [8 x i8], %"class.Eigen::CwiseBinaryOp.657", %"class.Eigen::CwiseNullaryOp.638", [8 x i8] }>
%"class.Eigen::CwiseBinaryOp.657" = type <{ ptr, %"class.Eigen::CwiseNullaryOp.638", [8 x i8] }>
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { ptr, i64 }
%"class.Eigen::CwiseBinaryOp.666" = type <{ ptr, %"class.Eigen::Product.672", [8 x i8] }>
%"class.Eigen::Product.672" = type { %"class.Eigen::Transpose", ptr }
%"class.Eigen::Transpose" = type { ptr }
%"class.Eigen::CwiseBinaryOp.680" = type <{ ptr, %"class.Eigen::Product.686", [8 x i8] }>
%"class.Eigen::Product.686" = type { %"class.Eigen::Product.303", %"class.Eigen::Transpose" }
%"class.Eigen::CwiseBinaryOp.694" = type <{ [8 x i8], %"class.Eigen::CwiseBinaryOp.583", %"class.Eigen::Product.336", [8 x i8] }>
%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }
%class.Matrix3_t = type { %"class.Eigen::Matrix.79" }
%"class.Eigen::Matrix.79" = type { %"class.Eigen::PlainObjectBase.80" }
%"class.Eigen::PlainObjectBase.80" = type { %"class.Eigen::DenseStorage.87" }
%"class.Eigen::DenseStorage.87" = type { %"struct.Eigen::internal::plain_array.88" }
%"struct.Eigen::internal::plain_array.88" = type { [9 x double] }
%"class.Eigen::CwiseBinaryOp.701" = type <{ ptr, ptr, [8 x i8] }>
%"class.Eigen::Product.708" = type { ptr, %"class.Eigen::CwiseBinaryOp.524" }
%"class.Eigen::CwiseBinaryOp.715" = type <{ ptr, %"class.Eigen::Product.721", [8 x i8] }>
%"class.Eigen::Product.721" = type { ptr, ptr }
%"class.Eigen::CwiseBinaryOp.729" = type <{ ptr, %"class.Eigen::CwiseBinaryOp.657", [8 x i8] }>
%"class.Eigen::Product.736" = type { ptr, %"class.Eigen::CwiseBinaryOp.666" }
%"class.Eigen::CwiseBinaryOp.743" = type <{ ptr, %"class.Eigen::Product.350", [8 x i8] }>
%"class.Eigen::Product.350" = type { ptr, ptr }

@.str.4 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [32 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics36ForwardDynamicsApplyConstraintForcesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERS4_ = external hidden unnamed_addr constant [117 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

declare i32 @__gxx_personality_v0(...)

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

; 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 #2 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 #2 align 2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS1_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math16SpatialTransform5applyERK15SpatialVector_t(ptr dead_on_unwind noalias writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 16 dereferenceable(48)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 16 dereferenceable(48)) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics36ForwardDynamicsApplyConstraintForcesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERS4_(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(1160) %2, ptr noundef nonnull align 8 dereferenceable(16) %3) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %5 = alloca %class.SpatialMatrix_t, align 16
  %6 = alloca %class.SpatialVector_t, align 16
  %7 = alloca %class.SpatialVector_t, align 16
  %8 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %9 = alloca %"class.Eigen::Product.517", align 8
  %10 = alloca %class.SpatialMatrix_t, align 16
  %11 = alloca %"class.Eigen::CwiseBinaryOp.524", align 8
  %12 = alloca %class.Vector3_t, align 8
  %13 = alloca %"class.Eigen::Product.530", align 8
  %14 = alloca %"class.Eigen::Transpose.537", align 8
  %15 = alloca %class.SpatialMatrix_t, align 16
  %16 = alloca %"class.Eigen::CwiseBinaryOp.556", align 8
  %17 = alloca %"class.Eigen::Product.562", align 8
  %18 = alloca %"class.Eigen::Product.569", align 8
  %19 = alloca %"class.Eigen::Transpose.537", align 8
  %20 = alloca %class.SpatialVector_t, align 16
  %21 = alloca %"class.Eigen::CwiseBinaryOp.577", align 8
  %22 = alloca %"class.Eigen::CwiseBinaryOp.583", align 8
  %23 = alloca %"class.Eigen::Product.517", align 8
  %24 = alloca %"class.Eigen::Product.590", align 8
  %25 = alloca %"class.Eigen::Product.569", align 8
  %26 = alloca %"class.Eigen::Product.598", align 8
  %27 = alloca %"class.Eigen::Product.605", align 8
  %28 = alloca %class.SpatialMatrix_t, align 16
  %29 = alloca %class.SpatialMatrix_t, align 16
  %30 = alloca %"class.Eigen::NoAlias", align 8
  %31 = alloca %class.SpatialVector_t, align 16
  %32 = alloca %"class.Eigen::NoAlias.612", align 8
  %33 = alloca %class.SpatialMatrix_t, align 16
  %34 = alloca %"class.Eigen::CwiseBinaryOp.613", align 8
  %35 = alloca %"class.Eigen::Product.619", align 8
  %36 = alloca %"class.Eigen::Transpose.626", align 8
  %37 = alloca %"class.Eigen::CwiseBinaryOp.632", align 8
  %38 = alloca %class.SpatialVector_t, align 16
  %39 = alloca %"class.Eigen::CwiseBinaryOp.645", align 8
  %40 = alloca %"class.Eigen::CwiseBinaryOp.583", align 8
  %41 = alloca %"class.Eigen::Product.517", align 8
  %42 = alloca %"class.Eigen::CwiseBinaryOp.651", align 8
  %43 = alloca %"class.Eigen::CwiseBinaryOp.657", align 8
  %44 = alloca %"class.Eigen::Product.598", align 8
  %45 = alloca %"class.Eigen::Product.605", align 8
  %46 = alloca %class.SpatialMatrix_t, align 16
  %47 = alloca %class.SpatialMatrix_t, align 16
  %48 = alloca %"class.Eigen::NoAlias", align 8
  %49 = alloca %class.SpatialVector_t, align 16
  %50 = alloca %"class.Eigen::NoAlias.612", align 8
  %51 = alloca %"class.Eigen::Matrix", align 8
  %52 = alloca %"class.Eigen::CwiseNullaryOp.182", align 8
  %53 = alloca %"class.Eigen::CwiseBinaryOp.666", align 8
  %54 = alloca %"class.Eigen::Product.672", align 8
  %55 = alloca %"class.Eigen::Transpose", align 8
  %56 = alloca %class.SpatialMatrix_t, align 16
  %57 = alloca %"class.Eigen::CwiseBinaryOp.680", align 8
  %58 = alloca %"class.Eigen::Product.686", align 8
  %59 = alloca %"class.Eigen::Product.303", align 8
  %60 = alloca %"class.Eigen::Transpose", align 8
  %61 = alloca %class.SpatialVector_t, align 16
  %62 = alloca %"class.Eigen::CwiseBinaryOp.694", align 8
  %63 = alloca %"class.Eigen::CwiseBinaryOp.583", align 8
  %64 = alloca %"class.Eigen::Product.517", align 8
  %65 = alloca %"class.Eigen::Product.336", align 8
  %66 = alloca %"class.Eigen::Product.303", align 8
  %67 = alloca %"class.Eigen::Product.598", align 8
  %68 = alloca %"class.Eigen::Product.605", align 8
  %69 = alloca %class.SpatialMatrix_t, align 16
  %70 = alloca %class.SpatialMatrix_t, align 16
  %71 = alloca %"class.Eigen::NoAlias", align 8
  %72 = alloca %class.SpatialVector_t, align 16
  %73 = alloca %"class.Eigen::NoAlias.612", align 8
  %74 = alloca %class.SpatialVector_t, align 16
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %82 = alloca %"class.Eigen::CwiseBinaryOp.701", align 8
  %83 = alloca %class.SpatialVector_t, align 16
  %84 = alloca %class.Vector3_t, align 8
  %85 = alloca %"class.Eigen::Product.708", align 8
  %86 = alloca %"class.Eigen::CwiseBinaryOp.524", align 8
  %87 = alloca %"class.Eigen::Product.530", align 8
  %88 = alloca %"class.Eigen::Transpose.537", align 8
  %89 = alloca %"class.Eigen::CwiseBinaryOp.715", align 8
  %90 = alloca %"class.Eigen::Product.721", align 8
  %91 = alloca %"class.Eigen::CwiseBinaryOp.729", align 8
  %92 = alloca %"class.Eigen::CwiseBinaryOp.657", align 8
  %93 = alloca %"class.Eigen::Matrix", align 8
  %94 = alloca %"class.Eigen::CwiseNullaryOp.182", align 8
  %95 = alloca %"class.Eigen::Product.736", align 8
  %96 = alloca %"class.Eigen::CwiseBinaryOp.666", align 8
  %97 = alloca %"class.Eigen::Product.672", align 8
  %98 = alloca %"class.Eigen::Transpose", align 8
  %99 = alloca %"class.Eigen::CwiseBinaryOp.743", align 8
  %100 = alloca %"class.Eigen::Product.350", align 8
  %101 = tail call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %3)
  %102 = getelementptr inbounds i8, ptr %0, i64 72
  %103 = load i32, ptr %102, align 8, !tbaa !5
  %104 = zext i32 %103 to i64
  %105 = icmp eq i64 %101, %104
  br i1 %105, label %.preheader, label %116

.preheader:                                       ; preds = %4
  %106 = getelementptr inbounds i8, ptr %0, i64 800
  %107 = tail call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %106) #6
  %108 = icmp ugt i64 %107, 1
  br i1 %108, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader
  %109 = getelementptr inbounds i8, ptr %0, i64 624
  %110 = getelementptr inbounds i8, ptr %0, i64 496
  %111 = getelementptr inbounds i8, ptr %0, i64 112
  %112 = getelementptr inbounds i8, ptr %0, i64 520
  %113 = getelementptr inbounds i8, ptr %2, i64 960
  %114 = getelementptr inbounds i8, ptr %0, i64 744
  %115 = getelementptr inbounds i8, ptr %9, i64 8
  br label %117

116:                                              ; preds = %4
  tail call void @__assert_fail(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.4, i32 noundef 1131, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics36ForwardDynamicsApplyConstraintForcesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERS4_) #7
  unreachable

117:                                              ; preds = %.lr.ph, %137
  %118 = phi i64 [ 1, %.lr.ph ], [ %139, %137 ]
  %.0265307 = phi i32 [ 1, %.lr.ph ], [ %138, %137 ]
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %5) #6
  %119 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %109, i64 noundef %118) #6
  call void @_ZNK17RigidBodyDynamics4Math23SpatialRigidBodyInertia8toMatrixEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %5, ptr noundef nonnull align 8 dereferenceable(80) %119)
  %120 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %110, i64 noundef %118) #6
  %121 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZN15SpatialMatrix_taSEOS_(ptr noundef nonnull align 16 dereferenceable(288) %120, ptr noundef nonnull align 16 dereferenceable(288) %5) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) #6
  %122 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %111, i64 noundef %118) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) #6
  %123 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %109, i64 noundef %118) #6
  %124 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %111, i64 noundef %118) #6
  call void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiamlERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %7, ptr noundef nonnull align 8 dereferenceable(80) %123, ptr noundef nonnull align 16 dereferenceable(48) %124)
  call void @_ZN17RigidBodyDynamics4Math6crossfERK15SpatialVector_tS3_(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %6, ptr noundef nonnull align 16 dereferenceable(48) %122, ptr noundef nonnull align 16 dereferenceable(48) %7)
  %125 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %112, i64 noundef %118) #6
  %126 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %125, ptr noundef nonnull align 16 dereferenceable(48) %6) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) #6
  %127 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %113, i64 noundef %118) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) #6
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %8)
  %128 = call noundef zeroext i1 @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEneINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES2_EEEEbRKNS0_IT_EE(ptr noundef nonnull align 1 dereferenceable(1) %127, ptr noundef nonnull align 1 dereferenceable(1) %8)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #6
  br i1 %128, label %129, label %137

129:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %10) #6
  %130 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %114, i64 noundef %118) #6
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform15toMatrixAdjointEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %10, ptr noundef nonnull align 8 dereferenceable(96) %130)
  %131 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %113, i64 noundef %118) #6
  %132 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 1 dereferenceable(1) %131)
  %133 = extractvalue { ptr, ptr } %132, 0
  store ptr %133, ptr %9, align 8
  %134 = extractvalue { ptr, ptr } %132, 1
  store ptr %134, ptr %115, align 8
  %135 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %112, i64 noundef %118) #6
  %136 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmIINS_7ProductINS1_IdLi6ELi6ELi0ELi6ELi6EEES2_Li0EEEEERS2_RKNS0_IT_EE(ptr noundef nonnull align 1 dereferenceable(1) %135, ptr noundef nonnull align 1 dereferenceable(1) %9)
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #6
  br label %137

137:                                              ; preds = %117, %129
  %138 = add i32 %.0265307, 1
  %139 = zext i32 %138 to i64
  %140 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %106) #6
  %141 = icmp ugt i64 %140, %139
  br i1 %141, label %117, label %._crit_edge, !llvm.loop !88

._crit_edge:                                      ; preds = %137, %.preheader
  %142 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %106) #6
  %143 = trunc i64 %142 to i32
  %.1312 = add i32 %143, -1
  %.not313 = icmp eq i32 %.1312, 0
  br i1 %.not313, label %._crit_edge317, label %.lr.ph316

.lr.ph316:                                        ; preds = %._crit_edge
  %144 = getelementptr inbounds i8, ptr %0, i64 160
  %145 = getelementptr inbounds i8, ptr %0, i64 328
  %146 = getelementptr inbounds i8, ptr %0, i64 520
  %147 = getelementptr inbounds i8, ptr %13, i64 8
  %148 = getelementptr inbounds i8, ptr %0, i64 400
  %149 = getelementptr inbounds i8, ptr %0, i64 496
  %150 = getelementptr inbounds i8, ptr %0, i64 352
  %151 = getelementptr inbounds i8, ptr %0, i64 376
  %152 = getelementptr inbounds i8, ptr %18, i64 8
  %153 = getelementptr inbounds i8, ptr %0, i64 472
  %154 = getelementptr inbounds i8, ptr %23, i64 8
  %155 = getelementptr inbounds i8, ptr %25, i64 8
  %156 = getelementptr inbounds i8, ptr %0, i64 720
  %157 = getelementptr inbounds i8, ptr %27, i64 8
  %158 = getelementptr inbounds i8, ptr %0, i64 184
  %159 = getelementptr inbounds i8, ptr %0, i64 584
  %160 = getelementptr inbounds i8, ptr %0, i64 544
  %161 = getelementptr inbounds i8, ptr %0, i64 568
  %162 = getelementptr inbounds i8, ptr %41, i64 8
  %163 = getelementptr inbounds i8, ptr %45, i64 8
  %164 = getelementptr inbounds i8, ptr %0, i64 448
  %165 = getelementptr inbounds i8, ptr %54, i64 8
  %166 = getelementptr inbounds i8, ptr %59, i64 8
  %167 = getelementptr inbounds i8, ptr %64, i64 8
  %168 = getelementptr inbounds i8, ptr %66, i64 8
  %169 = getelementptr inbounds i8, ptr %68, i64 8
  %170 = zext i32 %.1312 to i64
  br label %171

171:                                              ; preds = %.lr.ph316, %418
  %indvars.iv329 = phi i64 [ %170, %.lr.ph316 ], [ %indvars.iv.next330, %418 ]
  %172 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %indvars.iv329) #6
  %173 = getelementptr inbounds i8, ptr %172, i64 16
  %174 = load i32, ptr %173, align 8, !tbaa !90
  %175 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %indvars.iv329) #6
  %176 = getelementptr inbounds i8, ptr %175, i64 12
  %177 = load i32, ptr %176, align 4, !tbaa !93
  %178 = icmp eq i32 %177, 3
  br i1 %178, label %179, label %235

179:                                              ; preds = %171
  %180 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %indvars.iv329) #6
  %181 = getelementptr inbounds i8, ptr %180, i64 8
  %182 = load i32, ptr %181, align 8, !tbaa !94
  %.not288 = icmp eq i32 %182, 21
  br i1 %.not288, label %235, label %183

183:                                              ; preds = %179
  %184 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv329) #6
  %185 = load i32, ptr %184, align 4, !tbaa !95
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #6
  %186 = zext i32 %174 to i64
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %186)
  %188 = add i32 %174, 1
  %189 = zext i32 %188 to i64
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %189)
  %191 = add i32 %174, 2
  %192 = zext i32 %191 to i64
  %193 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %192)
  call void @_ZN9Vector3_tC2ERKdS1_S1_(ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef nonnull align 8 dereferenceable(8) %193)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  %194 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %145, i64 noundef %indvars.iv329) #6
  %195 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %194)
  store ptr %195, ptr %14, align 8
  %196 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %indvars.iv329) #6
  %197 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 1 dereferenceable(1) %196)
  %198 = extractvalue { ptr, ptr } %197, 0
  store ptr %198, ptr %13, align 8
  %199 = extractvalue { ptr, ptr } %197, 1
  store ptr %199, ptr %147, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEmiINS_7ProductINS_9TransposeINS1_IdLi6ELi3ELi0ELi6ELi3EEEEENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSC_6traitsIT_E6ScalarEEEKS2_KSF_EERKNS0_ISF_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.524") align 8 %11, ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 1 dereferenceable(1) %13)
  %200 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %148, i64 noundef %indvars.iv329) #6
  %201 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN9Vector3_taSIN5Eigen13CwiseBinaryOpINS1_8internal20scalar_difference_opIddEEKNS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEKNS1_7ProductINS1_9TransposeINS6_IdLi6ELi3ELi0ELi6ELi3EEEEENS6_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %200, ptr noundef nonnull align 1 dereferenceable(1) %11)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  %.not306 = icmp eq i32 %185, 0
  br i1 %.not306, label %418, label %202

202:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %16) #6
  %203 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %indvars.iv329) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #6
  %204 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %indvars.iv329) #6
  %205 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI9Matrix3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %indvars.iv329) #6
  %206 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi3ELi0ELi3ELi3EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %204, ptr noundef nonnull align 1 dereferenceable(1) %205)
  %207 = extractvalue { ptr, ptr } %206, 0
  store ptr %207, ptr %18, align 8
  %208 = extractvalue { ptr, ptr } %206, 1
  store ptr %208, ptr %152, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  %209 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %indvars.iv329) #6
  %210 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %209)
  store ptr %210, ptr %19, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS2_IdLi3ELi3ELi0ELi3ELi3EEELi0EEEEmlINS_9TransposeIS3_EEEEKNS1_IS5_T_Li0EEERKNS0_ISA_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.562") align 8 %17, ptr noundef nonnull align 1 dereferenceable(1) %18, ptr noundef nonnull align 1 dereferenceable(1) %19)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmiINS_7ProductINS5_INS1_IdLi6ELi3ELi0ELi6ELi3EEENS1_IdLi3ELi3ELi0ELi3ELi3EEELi0EEENS_9TransposeIS6_EELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSD_6traitsIT_E6ScalarEEEKS2_KSG_EERKNS0_ISG_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.556") align 8 %16, ptr noundef nonnull align 1 dereferenceable(1) %203, ptr noundef nonnull align 1 dereferenceable(1) %17)
  call void @_ZN15SpatialMatrix_tC2IN5Eigen13CwiseBinaryOpINS1_8internal20scalar_difference_opIddEEKNS1_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEKNS1_7ProductINS9_INS6_IdLi6ELi3ELi0ELi6ELi3EEENS6_IdLi3ELi3ELi0ELi3ELi3EEELi0EEENS1_9TransposeISA_EELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(288) %15, ptr noundef nonnull align 1 dereferenceable(1) %16)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) #6
  %211 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %indvars.iv329) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #6
  %212 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %indvars.iv329) #6
  %213 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 1 dereferenceable(1) %212)
  %214 = extractvalue { ptr, ptr } %213, 0
  store ptr %214, ptr %23, align 8
  %215 = extractvalue { ptr, ptr } %213, 1
  store ptr %215, ptr %154, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLi6ELi6ELi0ELi6ELi6EEES2_Li0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS9_6traitsIT_E6ScalarEEEKS2_KSC_EERKNS0_ISC_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.583") align 8 %22, ptr noundef nonnull align 1 dereferenceable(1) %211, ptr noundef nonnull align 1 dereferenceable(1) %23)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #6
  %216 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %indvars.iv329) #6
  %217 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI9Matrix3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %indvars.iv329) #6
  %218 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi3ELi0ELi3ELi3EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %216, ptr noundef nonnull align 1 dereferenceable(1) %217)
  %219 = extractvalue { ptr, ptr } %218, 0
  store ptr %219, ptr %25, align 8
  %220 = extractvalue { ptr, ptr } %218, 1
  store ptr %220, ptr %155, align 8
  %221 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %148, i64 noundef %indvars.iv329) #6
  call void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS2_IdLi3ELi3ELi0ELi3ELi3EEELi0EEEEmlINS2_IdLi3ELi1ELi0ELi3ELi1EEEEEKNS1_IS5_T_Li0EEERKNS0_IS9_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.590") align 8 %24, ptr noundef nonnull align 1 dereferenceable(1) %25, ptr noundef nonnull align 1 dereferenceable(1) %221)
  call void @_ZNK5Eigen10MatrixBaseINS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKNS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS_7ProductINS5_IdLi6ELi6ELi0ELi6ELi6EEES6_Li0EEEEEEplINS8_INS8_INS5_IdLi6ELi3ELi0ELi6ELi3EEENS5_IdLi3ELi3ELi0ELi3ELi3EEELi0EEENS5_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEKNS1_INS3_IdNS2_6traitsIT_E6ScalarEEEKSC_KSL_EERKNS0_ISL_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.577") align 8 %21, ptr noundef nonnull align 1 dereferenceable(1) %22, ptr noundef nonnull align 1 dereferenceable(1) %24)
  call void @_ZN15SpatialVector_tC2IN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS2_IS5_KNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi6ELi0ELi6ELi6EEES7_Li0EEEEEKNS9_INS9_INS6_IdLi6ELi3ELi0ELi6ELi3EEENS6_IdLi3ELi3ELi0ELi3ELi3EEELi0EEENS6_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %20, ptr noundef nonnull align 1 dereferenceable(1) %21)
  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.end.p0(i64 16, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %21) #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
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %28) #6
  %222 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv329) #6
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %28, ptr noundef nonnull align 8 dereferenceable(96) %222)
  %223 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1) %28, ptr noundef nonnull align 1 dereferenceable(1) %15)
  %224 = extractvalue { ptr, ptr } %223, 0
  store ptr %224, ptr %27, align 8
  %225 = extractvalue { ptr, ptr } %223, 1
  store ptr %225, ptr %157, align 8
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %29) #6
  %226 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv329) #6
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform8toMatrixEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %29, ptr noundef nonnull align 8 dereferenceable(96) %226)
  call void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEES3_Li0EEEEmlIS3_EEKNS1_IS4_T_Li0EEERKNS0_IS7_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.598") align 8 %26, ptr noundef nonnull align 1 dereferenceable(1) %27, ptr noundef nonnull align 1 dereferenceable(1) %29)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  %227 = zext i32 %185 to i64
  %228 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %227) #6
  %229 = call ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %228)
  store ptr %229, ptr %30, align 8
  %230 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEENS_10MatrixBaseEEpLINS_7ProductINS6_IS2_S2_Li0EEES2_Li0EEEEERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 1 dereferenceable(1) %26)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %28) #6
  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.start.p0(i64 48, ptr nonnull %31) #6
  %231 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv329) #6
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %31, ptr noundef nonnull align 8 dereferenceable(96) %231, ptr noundef nonnull align 16 dereferenceable(48) %20)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  %232 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %227) #6
  %233 = call ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %232)
  store ptr %233, ptr %32, align 8
  %234 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEENS_10MatrixBaseEEpLIS2_EERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 1 dereferenceable(1) %31)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %15) #6
  br label %418

235:                                              ; preds = %179, %171
  %236 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %indvars.iv329) #6
  %237 = getelementptr inbounds i8, ptr %236, i64 12
  %238 = load i32, ptr %237, align 4, !tbaa !93
  %239 = icmp eq i32 %238, 1
  br i1 %239, label %240, label %281

240:                                              ; preds = %235
  %241 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %indvars.iv329) #6
  %242 = getelementptr inbounds i8, ptr %241, i64 8
  %243 = load i32, ptr %242, align 8, !tbaa !94
  %.not289 = icmp eq i32 %243, 21
  br i1 %.not289, label %281, label %244

244:                                              ; preds = %240
  %245 = zext i32 %174 to i64
  %246 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %245)
  %247 = load double, ptr %246, align 8, !tbaa !96
  %248 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %158, i64 noundef %indvars.iv329) #6
  %249 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %indvars.iv329) #6
  %250 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotIS2_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENS6_17scalar_product_opIdSA_EEE10ReturnTypeERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %248, ptr noundef nonnull align 1 dereferenceable(1) %249)
  %251 = fsub double %247, %250
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %159, i64 noundef %indvars.iv329)
  store double %251, ptr %252, align 8, !tbaa !96
  %253 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv329) #6
  %254 = load i32, ptr %253, align 4, !tbaa !95
  %.not305 = icmp eq i32 %254, 0
  br i1 %.not305, label %418, label %255

255:                                              ; preds = %244
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %34) #6
  %256 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %indvars.iv329) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %35) #6
  %257 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %indvars.iv329) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #6
  %258 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %indvars.iv329) #6
  %259 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %161, i64 noundef %indvars.iv329)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEdvIdEEKNS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIdNS6_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdS9_NS7_IdS9_EEEEEE5valueEE4typeEEEKS2_KNS6_19plain_constant_typeIS2_SE_E4typeEEERKS9_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.632") align 8 %37, ptr noundef nonnull align 1 dereferenceable(1) %258, ptr noundef nonnull align 8 dereferenceable(8) %259)
  call void @_ZNK5Eigen9DenseBaseINS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIddEEKNS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEES7_EEEEE9transposeEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Transpose.626") align 8 %36, ptr noundef nonnull align 1 dereferenceable(1) %37)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmlINS_9TransposeIKNS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIddEEKS2_KNS_14CwiseNullaryOpINS7_18scalar_constant_opIdEESA_EEEEEEEEKNS_7ProductIS2_T_Li0EEERKNS0_ISK_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.619") align 8 %35, ptr noundef nonnull align 1 dereferenceable(1) %257, ptr noundef nonnull align 1 dereferenceable(1) %36)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmiINS_7ProductINS1_IdLi6ELi1ELi0ELi6ELi1EEENS_9TransposeIKNS_13CwiseBinaryOpINS_8internal18scalar_quotient_opIddEEKS6_KNS_14CwiseNullaryOpINS9_18scalar_constant_opIdEESC_EEEEEELi0EEEEEKNS8_INS9_20scalar_difference_opIdNS9_6traitsIT_E6ScalarEEEKS2_KSO_EERKNS0_ISO_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.613") align 8 %34, ptr noundef nonnull align 1 dereferenceable(1) %256, ptr noundef nonnull align 1 dereferenceable(1) %35)
  call void @_ZN15SpatialMatrix_tC2IN5Eigen13CwiseBinaryOpINS1_8internal20scalar_difference_opIddEEKNS1_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEKNS1_7ProductINS6_IdLi6ELi1ELi0ELi6ELi1EEENS1_9TransposeIKNS2_INS3_18scalar_quotient_opIddEEKSA_KNS1_14CwiseNullaryOpINS3_18scalar_constant_opIdEESE_EEEEEELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(288) %33, ptr noundef nonnull align 1 dereferenceable(1) %34)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40) #6
  %260 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %indvars.iv329) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #6
  %261 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %indvars.iv329) #6
  %262 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %33, ptr noundef nonnull align 1 dereferenceable(1) %261)
  %263 = extractvalue { ptr, ptr } %262, 0
  store ptr %263, ptr %41, align 8
  %264 = extractvalue { ptr, ptr } %262, 1
  store ptr %264, ptr %162, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLi6ELi6ELi0ELi6ELi6EEES2_Li0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS9_6traitsIT_E6ScalarEEEKS2_KSC_EERKNS0_ISC_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.583") align 8 %40, ptr noundef nonnull align 1 dereferenceable(1) %260, ptr noundef nonnull align 1 dereferenceable(1) %41)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #6
  %265 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %indvars.iv329) #6
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %159, i64 noundef %indvars.iv329)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmlIdEEKNS_13CwiseBinaryOpINS_8internal17scalar_product_opIdNS6_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdS9_NS7_IdS9_EEEEEE5valueEE4typeEEEKS2_KNS6_19plain_constant_typeIS2_SE_E4typeEEERKS9_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.657") align 8 %43, ptr noundef nonnull align 1 dereferenceable(1) %265, ptr noundef nonnull align 8 dereferenceable(8) %266)
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %161, i64 noundef %indvars.iv329)
  call void @_ZNK5Eigen10MatrixBaseINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEES7_EEEEEdvIdEEKNS1_INS2_18scalar_quotient_opIdNS2_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdSI_NSG_IdSI_EEEEEE5valueEE4typeEEEKSD_KNS2_19plain_constant_typeISD_SN_E4typeEEERKSI_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.651") align 8 %42, ptr noundef nonnull align 1 dereferenceable(1) %43, ptr noundef nonnull align 8 dereferenceable(8) %267)
  call void @_ZNK5Eigen10MatrixBaseINS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKNS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS_7ProductINS5_IdLi6ELi6ELi0ELi6ELi6EEES6_Li0EEEEEEplINS1_INS2_18scalar_quotient_opIddEEKNS1_INS2_17scalar_product_opIddEES7_KNS_14CwiseNullaryOpINS2_18scalar_constant_opIdEES7_EEEESN_EEEEKNS1_INS3_IdNS2_6traitsIT_E6ScalarEEEKSC_KSS_EERKNS0_ISS_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.645") align 8 %39, ptr noundef nonnull align 1 dereferenceable(1) %40, ptr noundef nonnull align 1 dereferenceable(1) %42)
  call void @_ZN15SpatialVector_tC2IN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS2_IS5_KNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi6ELi0ELi6ELi6EEES7_Li0EEEEEKNS2_INS3_18scalar_quotient_opIddEEKNS2_INS3_17scalar_product_opIddEES8_KNS1_14CwiseNullaryOpINS3_18scalar_constant_opIdEES8_EEEESN_EEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %38, ptr noundef nonnull align 1 dereferenceable(1) %39)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %46) #6
  %268 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv329) #6
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %46, ptr noundef nonnull align 8 dereferenceable(96) %268)
  %269 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 1 dereferenceable(1) %33)
  %270 = extractvalue { ptr, ptr } %269, 0
  store ptr %270, ptr %45, align 8
  %271 = extractvalue { ptr, ptr } %269, 1
  store ptr %271, ptr %163, align 8
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %47) #6
  %272 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv329) #6
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform8toMatrixEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %47, ptr noundef nonnull align 8 dereferenceable(96) %272)
  call void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEES3_Li0EEEEmlIS3_EEKNS1_IS4_T_Li0EEERKNS0_IS7_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.598") align 8 %44, ptr noundef nonnull align 1 dereferenceable(1) %45, ptr noundef nonnull align 1 dereferenceable(1) %47)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #6
  %273 = zext i32 %254 to i64
  %274 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %273) #6
  %275 = call ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %274)
  store ptr %275, ptr %48, align 8
  %276 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEENS_10MatrixBaseEEpLINS_7ProductINS6_IS2_S2_Li0EEES2_Li0EEEEERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 1 dereferenceable(1) %44)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %47) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %49) #6
  %277 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv329) #6
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %49, ptr noundef nonnull align 8 dereferenceable(96) %277, ptr noundef nonnull align 16 dereferenceable(48) %38)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #6
  %278 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %273) #6
  %279 = call ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %278)
  store ptr %279, ptr %50, align 8
  %280 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEENS_10MatrixBaseEEpLIS2_EERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 1 dereferenceable(1) %49)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %49) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %33) #6
  br label %418

281:                                              ; preds = %240, %235
  %282 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %indvars.iv329) #6
  %283 = getelementptr inbounds i8, ptr %282, i64 8
  %284 = load i32, ptr %283, align 8, !tbaa !94
  %285 = icmp eq i32 %284, 21
  br i1 %285, label %286, label %418

286:                                              ; preds = %281
  %287 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %indvars.iv329) #6
  %288 = getelementptr inbounds i8, ptr %287, i64 20
  %289 = load i32, ptr %288, align 4, !tbaa !98
  %290 = zext i32 %289 to i64
  %291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %290) #6
  %292 = load ptr, ptr %291, align 8, !tbaa !99
  %293 = getelementptr inbounds i8, ptr %292, i64 8
  %294 = load i32, ptr %293, align 8, !tbaa !100
  %295 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv329) #6
  %296 = load i32, ptr %295, align 4, !tbaa !95
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %52) #6
  %297 = zext i32 %294 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.182") align 8 %52, i64 noundef %297)
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 1 dereferenceable(1) %52)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %52) #6
  %.not326 = icmp eq i32 %294, 0
  br i1 %.not326, label %._crit_edge311, label %.lr.ph310

._crit_edge311:                                   ; preds = %309, %286
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #6
  %298 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %290) #6
  %299 = load ptr, ptr %298, align 8, !tbaa !99
  %300 = getelementptr inbounds i8, ptr %299, i64 112
  %301 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %300)
          to label %312 unwind label %389

.lr.ph310:                                        ; preds = %286, %309
  %indvars.iv = phi i64 [ %indvars.iv.next, %309 ], [ 0, %286 ]
  %302 = trunc nuw nsw i64 %indvars.iv to i32
  %303 = add i32 %174, %302
  %304 = zext i32 %303 to i64
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %1, i64 noundef %304)
          to label %306 unwind label %310

306:                                              ; preds = %.lr.ph310
  %307 = load double, ptr %305, align 8, !tbaa !96
  %308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %51, i64 noundef %indvars.iv)
          to label %309 unwind label %310

309:                                              ; preds = %306
  store double %307, ptr %308, align 8, !tbaa !96
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %297
  br i1 %exitcond.not, label %._crit_edge311, label %.lr.ph310, !llvm.loop !111

310:                                              ; preds = %306, %.lr.ph310
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %417

312:                                              ; preds = %._crit_edge311
  store ptr %301, ptr %55, align 8
  %313 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %indvars.iv329) #6
  %314 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %55, ptr noundef nonnull align 1 dereferenceable(1) %313)
          to label %315 unwind label %389

315:                                              ; preds = %312
  %316 = extractvalue { ptr, ptr } %314, 0
  store ptr %316, ptr %54, align 8
  %317 = extractvalue { ptr, ptr } %314, 1
  store ptr %317, ptr %165, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEmiINS_7ProductINS_9TransposeINS1_IdLin1ELin1ELi0ELin1ELin1EEEEENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSC_6traitsIT_E6ScalarEEEKS2_KSF_EERKNS0_ISF_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.666") align 8 %53, ptr noundef nonnull align 1 dereferenceable(1) %51, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %318 unwind label %389

318:                                              ; preds = %315
  %319 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %290) #6
  %320 = load ptr, ptr %319, align 8, !tbaa !99
  %321 = getelementptr inbounds i8, ptr %320, i64 184
  %322 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKS1_KNS_7ProductINS_9TransposeINS0_IdLin1ELin1ELi0ELin1ELin1EEEEENS0_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %321, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %323 unwind label %389

323:                                              ; preds = %318
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #6
  %.not290 = icmp eq i32 %296, 0
  br i1 %.not290, label %416, label %324

324:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %56) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %57) #6
  %325 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %indvars.iv329) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %58) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %59) #6
  %326 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %290) #6
  %327 = load ptr, ptr %326, align 8, !tbaa !99
  %328 = getelementptr inbounds i8, ptr %327, i64 136
  %329 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %290) #6
  %330 = load ptr, ptr %329, align 8, !tbaa !99
  %331 = getelementptr inbounds i8, ptr %330, i64 160
  %332 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1) %328, ptr noundef nonnull align 1 dereferenceable(1) %331)
          to label %333 unwind label %391

333:                                              ; preds = %324
  %334 = extractvalue { ptr, ptr } %332, 0
  store ptr %334, ptr %59, align 8
  %335 = extractvalue { ptr, ptr } %332, 1
  store ptr %335, ptr %166, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #6
  %336 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %290) #6
  %337 = load ptr, ptr %336, align 8, !tbaa !99
  %338 = getelementptr inbounds i8, ptr %337, i64 136
  %339 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %338)
          to label %340 unwind label %393

340:                                              ; preds = %333
  store ptr %339, ptr %60, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEES3_Li0EEEEmlINS_9TransposeIS3_EEEEKNS1_IS4_T_Li0EEERKNS0_IS9_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.686") align 8 %58, ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %341 unwind label %393

341:                                              ; preds = %340
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmiINS_7ProductINS5_INS1_IdLin1ELin1ELi0ELin1ELin1EEES6_Li0EEENS_9TransposeIS6_EELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSC_6traitsIT_E6ScalarEEEKS2_KSF_EERKNS0_ISF_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.680") align 8 %57, ptr noundef nonnull align 1 dereferenceable(1) %325, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %342 unwind label %393

342:                                              ; preds = %341
  invoke void @_ZN15SpatialMatrix_tC2IN5Eigen13CwiseBinaryOpINS1_8internal20scalar_difference_opIddEEKNS1_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEKNS1_7ProductINS9_INS6_IdLin1ELin1ELi0ELin1ELin1EEESA_Li0EEENS1_9TransposeISA_EELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(288) %56, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %343 unwind label %393

343:                                              ; preds = %342
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %57) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %61) #6
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %62) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %63) #6
  %344 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %indvars.iv329) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %64) #6
  %345 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %indvars.iv329) #6
  %346 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %56, ptr noundef nonnull align 1 dereferenceable(1) %345)
          to label %347 unwind label %396

347:                                              ; preds = %343
  %348 = extractvalue { ptr, ptr } %346, 0
  store ptr %348, ptr %64, align 8
  %349 = extractvalue { ptr, ptr } %346, 1
  store ptr %349, ptr %167, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLi6ELi6ELi0ELi6ELi6EEES2_Li0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS9_6traitsIT_E6ScalarEEEKS2_KSC_EERKNS0_ISC_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.583") align 8 %63, ptr noundef nonnull align 1 dereferenceable(1) %344, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %350 unwind label %396

350:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %65) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #6
  %351 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %290) #6
  %352 = load ptr, ptr %351, align 8, !tbaa !99
  %353 = getelementptr inbounds i8, ptr %352, i64 136
  %354 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %290) #6
  %355 = load ptr, ptr %354, align 8, !tbaa !99
  %356 = getelementptr inbounds i8, ptr %355, i64 160
  %357 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1) %353, ptr noundef nonnull align 1 dereferenceable(1) %356)
          to label %358 unwind label %398

358:                                              ; preds = %350
  %359 = extractvalue { ptr, ptr } %357, 0
  store ptr %359, ptr %66, align 8
  %360 = extractvalue { ptr, ptr } %357, 1
  store ptr %360, ptr %168, align 8
  %361 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %164, i64 noundef %290) #6
  %362 = load ptr, ptr %361, align 8, !tbaa !99
  %363 = getelementptr inbounds i8, ptr %362, i64 184
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEES3_Li0EEEEmlINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS1_IS4_T_Li0EEERKNS0_IS8_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.336") align 8 %65, ptr noundef nonnull align 1 dereferenceable(1) %66, ptr noundef nonnull align 1 dereferenceable(1) %363)
          to label %364 unwind label %398

364:                                              ; preds = %358
  invoke void @_ZNK5Eigen10MatrixBaseINS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKNS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS_7ProductINS5_IdLi6ELi6ELi0ELi6ELi6EEES6_Li0EEEEEEplINS8_INS8_INS5_IdLin1ELin1ELi0ELin1ELin1EEESF_Li0EEENS5_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEKNS1_INS3_IdNS2_6traitsIT_E6ScalarEEEKSC_KSK_EERKNS0_ISK_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.694") align 8 %62, ptr noundef nonnull align 1 dereferenceable(1) %63, ptr noundef nonnull align 1 dereferenceable(1) %65)
          to label %365 unwind label %398

365:                                              ; preds = %364
  invoke void @_ZN15SpatialVector_tC2IN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS2_IS5_KNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi6ELi0ELi6ELi6EEES7_Li0EEEEEKNS9_INS9_INS6_IdLin1ELin1ELi0ELin1ELin1EEESF_Li0EEENS6_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %61, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %366 unwind label %398

366:                                              ; preds = %365
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %65) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %62) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %67) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %68) #6
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %69) #6
  %367 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv329) #6
  invoke void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %69, ptr noundef nonnull align 8 dereferenceable(96) %367)
          to label %368 unwind label %401

368:                                              ; preds = %366
  %369 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1) %69, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %370 unwind label %401

370:                                              ; preds = %368
  %371 = extractvalue { ptr, ptr } %369, 0
  store ptr %371, ptr %68, align 8
  %372 = extractvalue { ptr, ptr } %369, 1
  store ptr %372, ptr %169, align 8
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %70) #6
  %373 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv329) #6
  invoke void @_ZNK17RigidBodyDynamics4Math16SpatialTransform8toMatrixEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %70, ptr noundef nonnull align 8 dereferenceable(96) %373)
          to label %374 unwind label %403

374:                                              ; preds = %370
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEES3_Li0EEEEmlIS3_EEKNS1_IS4_T_Li0EEERKNS0_IS7_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.598") align 8 %67, ptr noundef nonnull align 1 dereferenceable(1) %68, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %375 unwind label %403

375:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #6
  %376 = zext i32 %296 to i64
  %377 = call noundef nonnull align 16 dereferenceable(288) ptr @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %376) #6
  %378 = invoke ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %377)
          to label %379 unwind label %405

379:                                              ; preds = %375
  store ptr %378, ptr %71, align 8
  %380 = invoke noundef nonnull align 16 dereferenceable(288) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEENS_10MatrixBaseEEpLINS_7ProductINS6_IS2_S2_Li0EEES2_Li0EEEEERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %381 unwind label %405

381:                                              ; preds = %379
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %70) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %69) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %67) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %72) #6
  %382 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %indvars.iv329) #6
  invoke void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %72, ptr noundef nonnull align 8 dereferenceable(96) %382, ptr noundef nonnull align 16 dereferenceable(48) %61)
          to label %383 unwind label %409

383:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #6
  %384 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %376) #6
  %385 = invoke ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE7noaliasEv(ptr noundef nonnull align 1 dereferenceable(1) %384)
          to label %386 unwind label %411

386:                                              ; preds = %383
  store ptr %385, ptr %73, align 8
  %387 = invoke noundef nonnull align 16 dereferenceable(48) ptr @_ZN5Eigen7NoAliasINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEENS_10MatrixBaseEEpLIS2_EERS2_RKNS3_IT_EE(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 1 dereferenceable(1) %72)
          to label %388 unwind label %411

388:                                              ; preds = %386
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %72) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %56) #6
  br label %416

389:                                              ; preds = %318, %315, %312, %._crit_edge311
  %390 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) #6
  br label %417

391:                                              ; preds = %324
  %392 = landingpad { ptr, i32 }
          cleanup
  br label %395

393:                                              ; preds = %342, %341, %340, %333
  %394 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #6
  br label %395

395:                                              ; preds = %393, %391
  %.pn291 = phi { ptr, i32 } [ %394, %393 ], [ %392, %391 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %57) #6
  br label %415

396:                                              ; preds = %347, %343
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %400

398:                                              ; preds = %365, %364, %358, %350
  %399 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %65) #6
  br label %400

400:                                              ; preds = %398, %396
  %.pn293 = phi { ptr, i32 } [ %399, %398 ], [ %397, %396 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %62) #6
  br label %414

401:                                              ; preds = %368, %366
  %402 = landingpad { ptr, i32 }
          cleanup
  br label %408

403:                                              ; preds = %374, %370
  %404 = landingpad { ptr, i32 }
          cleanup
  br label %407

405:                                              ; preds = %379, %375
  %406 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #6
  br label %407

407:                                              ; preds = %405, %403
  %.pn295 = phi { ptr, i32 } [ %406, %405 ], [ %404, %403 ]
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %70) #6
  br label %408

408:                                              ; preds = %407, %401
  %.pn295.pn = phi { ptr, i32 } [ %.pn295, %407 ], [ %402, %401 ]
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %69) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %68) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %67) #6
  br label %414

409:                                              ; preds = %381
  %410 = landingpad { ptr, i32 }
          cleanup
  br label %413

411:                                              ; preds = %386, %383
  %412 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #6
  br label %413

413:                                              ; preds = %411, %409
  %.pn298 = phi { ptr, i32 } [ %412, %411 ], [ %410, %409 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %72) #6
  br label %414

414:                                              ; preds = %413, %408, %400
  %.pn298.pn = phi { ptr, i32 } [ %.pn298, %413 ], [ %.pn295.pn, %408 ], [ %.pn293, %400 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %61) #6
  br label %415

415:                                              ; preds = %414, %395
  %.pn298.pn.pn = phi { ptr, i32 } [ %.pn298.pn, %414 ], [ %.pn291, %395 ]
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %56) #6
  br label %417

416:                                              ; preds = %388, %323
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #6
  br label %418

417:                                              ; preds = %415, %389, %310
  %.pn302 = phi { ptr, i32 } [ %311, %310 ], [ %.pn298.pn.pn, %415 ], [ %390, %389 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #6
  br label %596

418:                                              ; preds = %244, %255, %183, %202, %416, %281
  %indvars.iv.next330 = add nsw i64 %indvars.iv329, -1
  %419 = and i64 %indvars.iv.next330, 4294967295
  %.not = icmp eq i64 %419, 0
  br i1 %.not, label %._crit_edge317, label %171, !llvm.loop !112

._crit_edge317:                                   ; preds = %418, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %74) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #6
  store double 0.000000e+00, ptr %75, align 8, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #6
  store double 0.000000e+00, ptr %76, align 8, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #6
  store double 0.000000e+00, ptr %77, align 8, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #6
  %420 = getelementptr inbounds i8, ptr %0, i64 88
  %421 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %420, i64 noundef 0)
  %422 = load double, ptr %421, align 8, !tbaa !96
  %423 = fneg double %422
  store double %423, ptr %78, align 8, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #6
  %424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %420, i64 noundef 1)
  %425 = load double, ptr %424, align 8, !tbaa !96
  %426 = fneg double %425
  store double %426, ptr %79, align 8, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #6
  %427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %420, i64 noundef 2)
  %428 = load double, ptr %427, align 8, !tbaa !96
  %429 = fneg double %428
  store double %429, ptr %80, align 8, !tbaa !96
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %74, ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %80)
  %430 = getelementptr inbounds i8, ptr %0, i64 136
  %431 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef 0) #6
  %432 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %431, ptr noundef nonnull align 16 dereferenceable(48) %74) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %74) #6
  %433 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %106) #6
  %434 = icmp ugt i64 %433, 1
  br i1 %434, label %.lr.ph324, label %._crit_edge325

.lr.ph324:                                        ; preds = %._crit_edge317
  %435 = getelementptr inbounds i8, ptr %0, i64 160
  %436 = getelementptr inbounds i8, ptr %0, i64 720
  %437 = getelementptr inbounds i8, ptr %0, i64 472
  %438 = getelementptr inbounds i8, ptr %0, i64 376
  %439 = getelementptr inbounds i8, ptr %0, i64 400
  %440 = getelementptr inbounds i8, ptr %0, i64 352
  %441 = getelementptr inbounds i8, ptr %87, i64 8
  %442 = getelementptr inbounds i8, ptr %0, i64 328
  %443 = getelementptr inbounds i8, ptr %90, i64 8
  %444 = getelementptr inbounds i8, ptr %0, i64 568
  %445 = getelementptr inbounds i8, ptr %0, i64 584
  %446 = getelementptr inbounds i8, ptr %0, i64 544
  %447 = getelementptr inbounds i8, ptr %0, i64 184
  %448 = getelementptr inbounds i8, ptr %0, i64 448
  %449 = getelementptr inbounds i8, ptr %97, i64 8
  %450 = getelementptr inbounds i8, ptr %100, i64 8
  br label %451

451:                                              ; preds = %.lr.ph324, %591
  %452 = phi i64 [ 1, %.lr.ph324 ], [ %593, %591 ]
  %.2322 = phi i32 [ 1, %.lr.ph324 ], [ %592, %591 ]
  %453 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %435, i64 noundef %452) #6
  %454 = getelementptr inbounds i8, ptr %453, i64 16
  %455 = load i32, ptr %454, align 8, !tbaa !90
  %456 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %452) #6
  %457 = load i32, ptr %456, align 4, !tbaa !95
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %81) #6
  %458 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %436, i64 noundef %452) #6
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(96) %81, ptr noundef nonnull align 8 dereferenceable(96) %458)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %82) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %83) #6
  %459 = zext i32 %457 to i64
  %460 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %459) #6
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform5applyERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %83, ptr noundef nonnull align 8 dereferenceable(96) %81, ptr noundef nonnull align 16 dereferenceable(48) %460)
  %461 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %437, i64 noundef %452) #6
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.701") align 8 %82, ptr noundef nonnull align 1 dereferenceable(1) %83, ptr noundef nonnull align 1 dereferenceable(1) %461)
  %462 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %452) #6
  %463 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %462, ptr noundef nonnull align 1 dereferenceable(1) %82)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %83) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %82) #6
  %464 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %435, i64 noundef %452) #6
  %465 = getelementptr inbounds i8, ptr %464, i64 12
  %466 = load i32, ptr %465, align 4, !tbaa !93
  %467 = icmp eq i32 %466, 3
  br i1 %467, label %468, label %502

468:                                              ; preds = %451
  %469 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %435, i64 noundef %452) #6
  %470 = getelementptr inbounds i8, ptr %469, i64 8
  %471 = load i32, ptr %470, align 8, !tbaa !94
  %.not285 = icmp eq i32 %471, 21
  br i1 %.not285, label %502, label %472

472:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %84) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %85) #6
  %473 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI9Matrix3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %438, i64 noundef %452) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %86) #6
  %474 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %439, i64 noundef %452) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %87) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #6
  %475 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %440, i64 noundef %452) #6
  %476 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %475)
  store ptr %476, ptr %88, align 8
  %477 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %452) #6
  %478 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %88, ptr noundef nonnull align 1 dereferenceable(1) %477)
  %479 = extractvalue { ptr, ptr } %478, 0
  store ptr %479, ptr %87, align 8
  %480 = extractvalue { ptr, ptr } %478, 1
  store ptr %480, ptr %441, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEmiINS_7ProductINS_9TransposeINS1_IdLi6ELi3ELi0ELi6ELi3EEEEENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSC_6traitsIT_E6ScalarEEEKS2_KSF_EERKNS0_ISF_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.524") align 8 %86, ptr noundef nonnull align 1 dereferenceable(1) %474, ptr noundef nonnull align 1 dereferenceable(1) %87)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEmlINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS1_IdLi3ELi1ELi0ELi3ELi1EEEKNS_7ProductINS_9TransposeINS1_IdLi6ELi3ELi0ELi6ELi3EEEEENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEEEKNSB_IS2_T_Li0EEERKNS0_ISJ_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.708") align 8 %85, ptr noundef nonnull align 1 dereferenceable(1) %473, ptr noundef nonnull align 1 dereferenceable(1) %86)
  call void @_ZN9Vector3_tC2IN5Eigen7ProductINS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEENS1_13CwiseBinaryOpINS1_8internal20scalar_difference_opIddEEKNS3_IdLi3ELi1ELi0ELi3ELi1EEEKNS2_INS1_9TransposeINS3_IdLi6ELi3ELi0ELi6ELi3EEEEENS3_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEELi0EEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 1 dereferenceable(1) %85)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %87) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %86) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %85) #6
  %481 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %84, i64 noundef 0)
  %482 = load double, ptr %481, align 8, !tbaa !96
  %483 = zext i32 %455 to i64
  %484 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %483)
  store double %482, ptr %484, align 8, !tbaa !96
  %485 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %84, i64 noundef 1)
  %486 = load double, ptr %485, align 8, !tbaa !96
  %487 = add i32 %455, 1
  %488 = zext i32 %487 to i64
  %489 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %488)
  store double %486, ptr %489, align 8, !tbaa !96
  %490 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %84, i64 noundef 2)
  %491 = load double, ptr %490, align 8, !tbaa !96
  %492 = add i32 %455, 2
  %493 = zext i32 %492 to i64
  %494 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %493)
  store double %491, ptr %494, align 8, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %89) #6
  %495 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %452) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %90) #6
  %496 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %442, i64 noundef %452) #6
  %497 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi1ELi0ELi3ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %496, ptr noundef nonnull align 1 dereferenceable(1) %84)
  %498 = extractvalue { ptr, ptr } %497, 0
  store ptr %498, ptr %90, align 8
  %499 = extractvalue { ptr, ptr } %497, 1
  store ptr %499, ptr %443, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLi6ELi3ELi0ELi6ELi3EEENS1_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS2_KSD_EERKNS0_ISD_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.715") align 8 %89, ptr noundef nonnull align 1 dereferenceable(1) %495, ptr noundef nonnull align 1 dereferenceable(1) %90)
  %500 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %452) #6
  %501 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi3ELi0ELi6ELi3EEENS6_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %500, ptr noundef nonnull align 1 dereferenceable(1) %89)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %90) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %89) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %84) #6
  br label %591

502:                                              ; preds = %468, %451
  %503 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %435, i64 noundef %452) #6
  %504 = getelementptr inbounds i8, ptr %503, i64 12
  %505 = load i32, ptr %504, align 4, !tbaa !93
  %506 = icmp eq i32 %505, 1
  br i1 %506, label %507, label %529

507:                                              ; preds = %502
  %508 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %435, i64 noundef %452) #6
  %509 = getelementptr inbounds i8, ptr %508, i64 8
  %510 = load i32, ptr %509, align 8, !tbaa !94
  %.not286 = icmp eq i32 %510, 21
  br i1 %.not286, label %529, label %511

511:                                              ; preds = %507
  %512 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %444, i64 noundef %452)
  %513 = load double, ptr %512, align 8, !tbaa !96
  %514 = fdiv double 1.000000e+00, %513
  %515 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %445, i64 noundef %452)
  %516 = load double, ptr %515, align 8, !tbaa !96
  %517 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %446, i64 noundef %452) #6
  %518 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %452) #6
  %519 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotIS2_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENS6_17scalar_product_opIdSA_EEE10ReturnTypeERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %517, ptr noundef nonnull align 1 dereferenceable(1) %518)
  %520 = fsub double %516, %519
  %521 = fmul double %514, %520
  %522 = zext i32 %455 to i64
  %523 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %522)
  store double %521, ptr %523, align 8, !tbaa !96
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %91) #6
  %524 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %452) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %92) #6
  %525 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %447, i64 noundef %452) #6
  %526 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %522)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmlIdEEKNS_13CwiseBinaryOpINS_8internal17scalar_product_opIdNS6_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdS9_NS7_IdS9_EEEEEE5valueEE4typeEEEKS2_KNS6_19plain_constant_typeIS2_SE_E4typeEEERKS9_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.657") align 8 %92, ptr noundef nonnull align 1 dereferenceable(1) %525, ptr noundef nonnull align 8 dereferenceable(8) %526)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIdEES9_EEEEEEKNS5_INS6_13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEES9_KSI_EERKNS0_ISI_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.729") align 8 %91, ptr noundef nonnull align 1 dereferenceable(1) %524, ptr noundef nonnull align 1 dereferenceable(1) %92)
  %527 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %452) #6
  %528 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS2_INS3_17scalar_product_opIddEES8_KNS1_14CwiseNullaryOpINS3_18scalar_constant_opIdEES8_EEEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %527, ptr noundef nonnull align 1 dereferenceable(1) %91)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %92) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %91) #6
  br label %591

529:                                              ; preds = %507, %502
  %530 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %435, i64 noundef %452) #6
  %531 = getelementptr inbounds i8, ptr %530, i64 8
  %532 = load i32, ptr %531, align 8, !tbaa !94
  %533 = icmp eq i32 %532, 21
  br i1 %533, label %534, label %591

534:                                              ; preds = %529
  %535 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %435, i64 noundef %452) #6
  %536 = getelementptr inbounds i8, ptr %535, i64 20
  %537 = load i32, ptr %536, align 4, !tbaa !98
  %538 = zext i32 %537 to i64
  %539 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %448, i64 noundef %538) #6
  %540 = load ptr, ptr %539, align 8, !tbaa !99
  %541 = getelementptr inbounds i8, ptr %540, i64 8
  %542 = load i32, ptr %541, align 8, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %93) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %94) #6
  %543 = zext i32 %542 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.182") align 8 %94, i64 noundef %543)
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %93, ptr noundef nonnull align 1 dereferenceable(1) %94)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %94) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %95) #6
  %544 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %448, i64 noundef %538) #6
  %545 = load ptr, ptr %544, align 8, !tbaa !99
  %546 = getelementptr inbounds i8, ptr %545, i64 160
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %96) #6
  %547 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %448, i64 noundef %538) #6
  %548 = load ptr, ptr %547, align 8, !tbaa !99
  %549 = getelementptr inbounds i8, ptr %548, i64 184
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %97) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #6
  %550 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %448, i64 noundef %538) #6
  %551 = load ptr, ptr %550, align 8, !tbaa !99
  %552 = getelementptr inbounds i8, ptr %551, i64 136
  %553 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %552)
          to label %554 unwind label %569

554:                                              ; preds = %534
  store ptr %553, ptr %98, align 8
  %555 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %452) #6
  %556 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %98, ptr noundef nonnull align 1 dereferenceable(1) %555)
          to label %557 unwind label %569

557:                                              ; preds = %554
  %558 = extractvalue { ptr, ptr } %556, 0
  store ptr %558, ptr %97, align 8
  %559 = extractvalue { ptr, ptr } %556, 1
  store ptr %559, ptr %449, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEmiINS_7ProductINS_9TransposeINS1_IdLin1ELin1ELi0ELin1ELin1EEEEENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNSC_6traitsIT_E6ScalarEEEKS2_KSF_EERKNS0_ISF_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.666") align 8 %96, ptr noundef nonnull align 1 dereferenceable(1) %549, ptr noundef nonnull align 1 dereferenceable(1) %97)
          to label %560 unwind label %569

560:                                              ; preds = %557
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKNS1_IdLin1ELi1ELi0ELin1ELi1EEEKNS_7ProductINS_9TransposeIS2_EENS1_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEEEEKNSB_IS2_T_Li0EEERKNS0_ISI_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.736") align 8 %95, ptr noundef nonnull align 1 dereferenceable(1) %546, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %561 unwind label %569

561:                                              ; preds = %560
  %562 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_7ProductINS0_IdLin1ELin1ELi0ELin1ELin1EEENS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKS1_KNS3_INS_9TransposeIS4_EENS0_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEELi0EEEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %93, ptr noundef nonnull align 1 dereferenceable(1) %95)
          to label %563 unwind label %569

563:                                              ; preds = %561
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %97) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %95) #6
  %.not327 = icmp eq i32 %542, 0
  br i1 %.not327, label %._crit_edge321, label %.lr.ph320

._crit_edge321:                                   ; preds = %578, %563
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %99) #6
  %564 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %452) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %100) #6
  %565 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %448, i64 noundef %538) #6
  %566 = load ptr, ptr %565, align 8, !tbaa !99
  %567 = getelementptr inbounds i8, ptr %566, i64 112
  %568 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS1_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %567, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %581 unwind label %588

569:                                              ; preds = %561, %560, %557, %554, %534
  %570 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %97) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %96) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %95) #6
  br label %590

.lr.ph320:                                        ; preds = %563, %578
  %indvars.iv332 = phi i64 [ %indvars.iv.next333, %578 ], [ 0, %563 ]
  %571 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %93, i64 noundef %indvars.iv332)
          to label %572 unwind label %579

572:                                              ; preds = %.lr.ph320
  %573 = load double, ptr %571, align 8, !tbaa !96
  %574 = trunc nuw nsw i64 %indvars.iv332 to i32
  %575 = add i32 %455, %574
  %576 = zext i32 %575 to i64
  %577 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %576)
          to label %578 unwind label %579

578:                                              ; preds = %572
  store double %573, ptr %577, align 8, !tbaa !96
  %indvars.iv.next333 = add nuw nsw i64 %indvars.iv332, 1
  %exitcond337.not = icmp eq i64 %indvars.iv.next333, %543
  br i1 %exitcond337.not, label %._crit_edge321, label %.lr.ph320, !llvm.loop !113

579:                                              ; preds = %572, %.lr.ph320
  %580 = landingpad { ptr, i32 }
          cleanup
  br label %590

581:                                              ; preds = %._crit_edge321
  %582 = extractvalue { ptr, ptr } %568, 0
  store ptr %582, ptr %100, align 8
  %583 = extractvalue { ptr, ptr } %568, 1
  store ptr %583, ptr %450, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLin1ELin1ELi0ELin1ELin1EEENS1_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS2_KSD_EERKNS0_ISD_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.743") align 8 %99, ptr noundef nonnull align 1 dereferenceable(1) %564, ptr noundef nonnull align 1 dereferenceable(1) %100)
          to label %584 unwind label %588

584:                                              ; preds = %581
  %585 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %430, i64 noundef %452) #6
  %586 = invoke noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLin1ELin1ELi0ELin1ELin1EEENS6_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %585, ptr noundef nonnull align 1 dereferenceable(1) %99)
          to label %587 unwind label %588

587:                                              ; preds = %584
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #6
  br label %591

588:                                              ; preds = %584, %581, %._crit_edge321
  %589 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %100) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %99) #6
  br label %590

590:                                              ; preds = %588, %579, %569
  %.pn = phi { ptr, i32 } [ %580, %579 ], [ %589, %588 ], [ %570, %569 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %93) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %93) #6
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %81) #6
  br label %596

591:                                              ; preds = %511, %587, %529, %472
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %81) #6
  %592 = add i32 %.2322, 1
  %593 = zext i32 %592 to i64
  %594 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %106) #6
  %595 = icmp ugt i64 %594, %593
  br i1 %595, label %451, label %._crit_edge325, !llvm.loop !114

._crit_edge325:                                   ; preds = %591, %._crit_edge317
  ret void

596:                                              ; preds = %590, %417
  %.pn302.pn = phi { ptr, i32 } [ %.pn302, %417 ], [ %.pn, %590 ]
  resume { ptr, i32 } %.pn302.pn
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics4Math23SpatialRigidBodyInertia8toMatrixEv(ptr dead_on_unwind noalias writable sret(%class.SpatialMatrix_t) align 16, ptr noundef nonnull align 8 dereferenceable(80)) local_unnamed_addr #5 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(288) ptr @_ZN15SpatialMatrix_taSEOS_(ptr noundef nonnull align 16 dereferenceable(288), ptr noundef nonnull align 16 dereferenceable(288)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math6crossfERK15SpatialVector_tS3_(ptr dead_on_unwind noalias writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 16 dereferenceable(48)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiamlERK15SpatialVector_t(ptr dead_on_unwind noalias writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 8 dereferenceable(80), ptr noundef nonnull align 16 dereferenceable(48)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEneINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES2_EEEEbRKNS0_IT_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics4Math16SpatialTransform15toMatrixAdjointEv(ptr dead_on_unwind noalias writable sret(%class.SpatialMatrix_t) align 16, ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(48) ptr @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmIINS_7ProductINS1_IdLi6ELi6ELi0ELi6ELi6EEES2_Li0EEEEERS2_RKNS0_IT_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi3ELi0ELi3ELi3EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind noalias writable sret(%class.SpatialMatrix_t) align 16, ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlIS2_EEKNS_7ProductIS2_T_Li0EEERKNS0_IS6_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics4Math16SpatialTransform8toMatrixEv(ptr dead_on_unwind noalias writable sret(%class.SpatialMatrix_t) align 16, ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERK15SpatialVector_t(ptr dead_on_unwind noalias writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 16 dereferenceable(48)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi1ELi0ELi3ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi3ELi0ELi6ELi3EEENS6_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS2_INS3_17scalar_product_opIddEES8_KNS1_14CwiseNullaryOpINS3_18scalar_constant_opIdEES8_EEEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLin1ELin1ELi0ELin1ELin1EEENS6_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #5 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 = { 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 #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 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 #5 = { 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 #6 = { nounwind }
attributes #7 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !18, i64 72}
!6 = !{!"_ZTSN17RigidBodyDynamics5ModelE", !7, i64 0, !7, i64 24, !14, i64 48, !18, i64 72, !18, i64 76, !18, i64 80, !18, i64 84, !19, i64 88, !24, i64 112, !24, i64 136, !29, i64 160, !24, i64 184, !24, i64 208, !24, i64 232, !7, i64 256, !34, i64 280, !7, i64 304, !39, i64 328, !39, i64 352, !44, i64 376, !48, i64 400, !7, i64 424, !52, i64 448, !24, i64 472, !56, i64 496, !24, i64 520, !24, i64 544, !61, i64 568, !61, i64 584, !24, i64 600, !65, i64 624, !65, i64 648, !24, i64 672, !24, i64 696, !34, i64 720, !34, i64 744, !70, i64 768, !18, i64 792, !75, i64 800, !80, i64 824}
!7 = !{!"_ZTSSt6vectorIjSaIjEE", !8, i64 0}
!8 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !9, i64 0}
!9 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !10, i64 0}
!10 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!11 = !{!"any pointer", !12, i64 0}
!12 = !{!"omnipotent char", !13, i64 0}
!13 = !{!"Simple C++ TBAA"}
!14 = !{!"_ZTSSt6vectorIS_IjSaIjEESaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!18 = !{!"int", !12, i64 0}
!19 = !{!"_ZTS9Vector3_t", !20, i64 0}
!20 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !21, i64 0}
!21 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !22, i64 0}
!22 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !23, i64 0}
!23 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !12, i64 0}
!24 = !{!"_ZTSSt6vectorI15SpatialVector_tSaIS0_EE", !25, i64 0}
!25 = !{!"_ZTSSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!29 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics5JointESaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!34 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EE", !35, i64 0}
!35 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!39 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEESaIS2_EE", !40, i64 0}
!40 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!44 = !{!"_ZTSSt6vectorI9Matrix3_tSaIS0_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseI9Matrix3_tSaIS0_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseI9Matrix3_tSaIS0_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseI9Matrix3_tSaIS0_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!48 = !{!"_ZTSSt6vectorI9Vector3_tSaIS0_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseI9Vector3_tSaIS0_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!52 = !{!"_ZTSSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!56 = !{!"_ZTSSt6vectorI15SpatialMatrix_tSaIS0_EE", !57, i64 0}
!57 = !{!"_ZTSSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!61 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !62, i64 0}
!62 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !63, i64 0}
!63 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !11, i64 0, !64, i64 8}
!64 = !{!"long", !12, i64 0}
!65 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaESaIS2_EE", !66, i64 0}
!66 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE", !67, i64 0}
!67 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !69, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!70 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics9FixedBodyESaIS1_EE", !71, i64 0}
!71 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!75 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4BodyESaIS1_EE", !76, i64 0}
!76 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE", !77, i64 0}
!77 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!80 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !81, i64 0}
!81 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !82, i64 0}
!82 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !83, i64 0, !85, i64 8}
!83 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !84, i64 0}
!84 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!85 = !{!"_ZTSSt15_Rb_tree_header", !86, i64 0, !64, i64 32}
!86 = !{!"_ZTSSt18_Rb_tree_node_base", !87, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!87 = !{!"_ZTSSt14_Rb_tree_color", !12, i64 0}
!88 = distinct !{!88, !89}
!89 = !{!"llvm.loop.mustprogress"}
!90 = !{!91, !18, i64 16}
!91 = !{!"_ZTSN17RigidBodyDynamics5JointE", !11, i64 0, !92, i64 8, !18, i64 12, !18, i64 16, !18, i64 20}
!92 = !{!"_ZTSN17RigidBodyDynamics9JointTypeE", !12, i64 0}
!93 = !{!91, !18, i64 12}
!94 = !{!91, !92, i64 8}
!95 = !{!18, !18, i64 0}
!96 = !{!97, !97, i64 0}
!97 = !{!"double", !12, i64 0}
!98 = !{!91, !18, i64 20}
!99 = !{!11, !11, i64 0}
!100 = !{!101, !18, i64 8}
!101 = !{!"_ZTSN17RigidBodyDynamics11CustomJointE", !18, i64 8, !102, i64 16, !108, i64 112, !108, i64 136, !108, i64 160, !61, i64 184, !61, i64 200}
!102 = !{!"_ZTSN17RigidBodyDynamics4Math16SpatialTransformE", !103, i64 0, !19, i64 72}
!103 = !{!"_ZTS9Matrix3_t", !104, i64 0}
!104 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE", !105, i64 0}
!105 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEE", !106, i64 0}
!106 = !{!"_ZTSN5Eigen12DenseStorageIdLi9ELi3ELi3ELi0EEE", !107, i64 0}
!107 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi9ELi0ELi0EEE", !12, i64 0}
!108 = !{!"_ZTSN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEE", !109, i64 0}
!109 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE", !110, i64 0}
!110 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EEE", !11, i64 0, !64, i64 8, !64, i64 16}
!111 = distinct !{!111, !89}
!112 = distinct !{!112, !89}
!113 = distinct !{!113, !89}
!114 = distinct !{!114, !89}


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