; 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.113" = 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.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.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.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.Eigen::Block" = type { %"class.Eigen::BlockImpl" }
%"class.Eigen::BlockImpl" = type { %"class.Eigen::internal::BlockImpl_dense" }
%"class.Eigen::internal::BlockImpl_dense" = type { %"class.Eigen::MapBase", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase" = type { %"class.Eigen::MapBase.202" }
%"class.Eigen::MapBase.202" = type { ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic" }
%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }
%"class.Eigen::Product.390" = type { %"class.Eigen::Transpose.397", ptr }
%"class.Eigen::Transpose.397" = type { ptr }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { ptr, i64 }
%"class.Eigen::CwiseBinaryOp.475" = type <{ ptr, ptr, [8 x i8] }>
%"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::ConstraintSet" = type { i32, i8, %"class.std::vector", %"class.std::vector.1", %"class.std::vector.6", %"class.std::vector.6", %"class.std::vector.6", %"class.std::vector.11", %"class.std::vector.6", %"class.std::vector.16", %"class.std::vector.16", %"class.std::vector.6", %"class.std::vector.6", %"class.std::vector.21", %"class.std::vector.21", %"class.std::vector.27", %"class.std::vector.34", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::HouseholderQR", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.16", %"class.std::vector.27", %"class.std::vector.27", %"class.Eigen::Matrix", %"class.std::vector.60", %"class.std::vector.27", %"class.Eigen::Matrix", %"class.std::vector.16" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<RigidBodyDynamics::ConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::ConstraintSet::ConstraintType>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::ConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::ConstraintSet::ConstraintType>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::ConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::ConstraintSet::ConstraintType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::ConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::ConstraintSet::ConstraintType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<RigidBodyDynamics::CustomConstraint *, std::allocator<RigidBodyDynamics::CustomConstraint *>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::CustomConstraint *, std::allocator<RigidBodyDynamics::CustomConstraint *>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::CustomConstraint *, std::allocator<RigidBodyDynamics::CustomConstraint *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::CustomConstraint *, std::allocator<RigidBodyDynamics::CustomConstraint *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.6" = type { %"struct.std::_Vector_base.7" }
%"struct.std::_Vector_base.7" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.21" = type { %"class.std::vector.22" }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = type { %"struct.std::_Vector_base<Vector2_t, std::allocator<Vector2_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector2_t, std::allocator<Vector2_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector2_t, std::allocator<Vector2_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector2_t, std::allocator<Vector2_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Eigen::HouseholderQR" = type <{ %"class.Eigen::Matrix.41", %"class.Eigen::Matrix", %"class.Eigen::Matrix.51", i8, [7 x i8] }>
%"class.Eigen::Matrix.51" = type { %"class.Eigen::PlainObjectBase.52" }
%"class.Eigen::PlainObjectBase.52" = type { %"class.Eigen::DenseStorage.59" }
%"class.Eigen::DenseStorage.59" = type { ptr, i64 }
%"class.std::vector.60" = type { %"class.std::vector.61" }
%"class.std::vector.61" = type { %"struct.std::_Vector_base.62" }
%"struct.std::_Vector_base.62" = type { %"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl" }
%"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.27" = type { %"class.std::vector.28" }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl" }
%"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.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 }
%"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.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.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.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::CustomConstraint" = type <{ ptr, i32, [4 x i8] }>

@.str.4 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [65 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics30CalcConstrainedSystemVariablesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_RNS_13ConstraintSetEPSt6vectorI15SpatialVector_tSaISA_EE = external hidden unnamed_addr constant [189 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 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 void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8) #2 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(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 @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1)) #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics28CalcConstraintsPositionErrorERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERS4_b(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(1160), ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) #3

declare void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef, ptr noundef, ptr noundef) #6

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

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

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

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

declare void @_ZN17RigidBodyDynamics24CalcBodyWorldOrientationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjb(ptr dead_on_unwind writable sret(%class.Matrix3_t) align 8, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i1 noundef zeroext) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_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(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZN9Matrix3_taSIN5Eigen7ProductINS1_9TransposeINS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEES5_Li0EEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 1 dereferenceable(1)) #3 align 2

declare void @_ZN17RigidBodyDynamics25CalcBodyToBaseCoordinatesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.Vector3_t) align 8, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #6

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics23CalcConstraintsJacobianERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(1160), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #3

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZN17RigidBodyDynamics4Math16SpatialTransformaSEOS1_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2ERK9Matrix3_tRK9Vector3_t(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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)) #3 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)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics28CalcConstraintsVelocityErrorERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_RNS_13ConstraintSetERS4_b(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(1160), ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) #3

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics30CalcConstrainedSystemVariablesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_RNS_13ConstraintSetEPSt6vectorI15SpatialVector_tSaISA_EE(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(1160) %4, ptr noundef %5) #3 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %15 = alloca i32, align 4
  %16 = alloca %class.Vector3_t, align 8
  %17 = alloca %"class.Eigen::CwiseNullaryOp.113", align 8
  %18 = alloca %class.Vector3_t, align 8
  %19 = alloca %"class.Eigen::CwiseNullaryOp.113", align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %class.Vector3_t, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %class.Vector3_t, align 8
  %26 = alloca %class.Matrix3_t, align 8
  %27 = alloca %class.SpatialVector_t, align 16
  %28 = alloca %class.SpatialVector_t, align 16
  %29 = alloca %class.SpatialVector_t, align 16
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca %class.Vector3_t, align 8
  %33 = alloca %"class.Eigen::Product.390", align 8
  %34 = alloca %"class.Eigen::Transpose.397", align 8
  %35 = alloca %class.Matrix3_t, align 8
  %36 = alloca %class.SpatialVector_t, align 16
  %37 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %38 = alloca %class.SpatialVector_t, align 16
  %39 = alloca %class.SpatialVector_t, align 16
  %40 = alloca %class.SpatialVector_t, align 16
  %41 = alloca %class.SpatialVector_t, align 16
  %42 = alloca %"class.Eigen::Matrix", align 8
  %43 = alloca %"class.Eigen::CwiseNullaryOp.182", align 8
  %44 = alloca ptr, align 8
  %45 = alloca i32, align 4
  %46 = alloca %class.SpatialVector_t, align 16
  %47 = alloca %"class.Eigen::Matrix", align 8
  %48 = alloca %"class.Eigen::CwiseNullaryOp.182", align 8
  %49 = alloca %"class.Eigen::CwiseBinaryOp.475", align 8
  %50 = alloca %"class.Eigen::CwiseBinaryOp.475", align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca %"class.Eigen::Matrix.41", align 8
  %58 = alloca %"class.Eigen::Block", align 8
  %59 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  %60 = load ptr, ptr %7, align 8, !tbaa !5
  %61 = load ptr, ptr %8, align 8, !tbaa !5
  %62 = load ptr, ptr %9, align 8, !tbaa !5
  %63 = load ptr, ptr %11, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %63, i32 0, i32 24
  %65 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZN17RigidBodyDynamics16NonlinearEffectsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_RS4_PSt6vectorI15SpatialVector_tSaIS9_EE(ptr noundef nonnull align 8 dereferenceable(872) %60, ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef nonnull align 8 dereferenceable(16) %62, ptr noundef nonnull align 8 dereferenceable(16) %64, ptr noundef %65)
  %66 = load ptr, ptr %11, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %66, i32 0, i32 23
  %68 = call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %67)
  %69 = load ptr, ptr %7, align 8, !tbaa !5
  %70 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %69, i32 0, i32 3
  %71 = load i32, ptr %70, align 8, !tbaa !9
  %72 = zext i32 %71 to i64
  %73 = icmp eq i64 %68, %72
  br i1 %73, label %74, label %83

74:                                               ; preds = %6
  %75 = load ptr, ptr %11, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %75, i32 0, i32 23
  %77 = call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %76)
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %78, i32 0, i32 3
  %80 = load i32, ptr %79, align 8, !tbaa !9
  %81 = zext i32 %80 to i64
  %82 = icmp eq i64 %77, %81
  br label %83

83:                                               ; preds = %74, %6
  %84 = phi i1 [ false, %6 ], [ %82, %74 ]
  br i1 %84, label %85, label %86

85:                                               ; preds = %83
  br label %88

86:                                               ; preds = %83
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.4, i32 noundef 691, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics30CalcConstrainedSystemVariablesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_RNS_13ConstraintSetEPSt6vectorI15SpatialVector_tSaISA_EE) #8
  unreachable

87:                                               ; No predecessors!
  br label %88

88:                                               ; preds = %87, %85
  %89 = load ptr, ptr %11, align 8, !tbaa !5
  %90 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %89, i32 0, i32 23
  %91 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %90)
  %92 = load ptr, ptr %7, align 8, !tbaa !5
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = load ptr, ptr %11, align 8, !tbaa !5
  %95 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %94, i32 0, i32 23
  call void @_ZN17RigidBodyDynamics27CompositeRigidBodyAlgorithmERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872) %92, ptr noundef nonnull align 8 dereferenceable(16) %93, ptr noundef nonnull align 8 dereferenceable(24) %95, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  store i32 1, ptr %13, align 4, !tbaa !89
  br label %96

96:                                               ; preds = %126, %88
  %97 = load i32, ptr %13, align 4, !tbaa !89
  %98 = zext i32 %97 to i64
  %99 = load ptr, ptr %7, align 8, !tbaa !5
  %100 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %99, i32 0, i32 38
  %101 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %100) #9
  %102 = icmp ult i64 %98, %101
  br i1 %102, label %104, label %103

103:                                              ; preds = %96
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  br label %129

104:                                              ; preds = %96
  call void @llvm.lifetime.start.p0(i64 96, ptr %14) #9
  %105 = load ptr, ptr %7, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %105, i32 0, i32 34
  %107 = load i32, ptr %13, align 4, !tbaa !89
  %108 = zext i32 %107 to i64
  %109 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %106, i64 noundef %108) #9
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %110, i32 0, i32 35
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %112, i32 0, i32 0
  %114 = load i32, ptr %13, align 4, !tbaa !89
  %115 = zext i32 %114 to i64
  %116 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %113, i64 noundef %115) #9
  %117 = load i32, ptr %116, align 4, !tbaa !89
  %118 = zext i32 %117 to i64
  %119 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %111, i64 noundef %118) #9
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransformmlERKS1_(ptr dead_on_unwind writable sret(%"struct.RigidBodyDynamics::Math::SpatialTransform") align 8 %14, ptr noundef nonnull align 8 dereferenceable(96) %109, ptr noundef nonnull align 8 dereferenceable(96) %119)
  %120 = load ptr, ptr %7, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %120, i32 0, i32 35
  %122 = load i32, ptr %13, align 4, !tbaa !89
  %123 = zext i32 %122 to i64
  %124 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %123) #9
  %125 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN17RigidBodyDynamics4Math16SpatialTransformaSEOS1_(ptr noundef nonnull align 8 dereferenceable(96) %124, ptr noundef nonnull align 8 dereferenceable(96) %14) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr %14) #9
  br label %126

126:                                              ; preds = %104
  %127 = load i32, ptr %13, align 4, !tbaa !89
  %128 = add i32 %127, 1
  store i32 %128, ptr %13, align 4, !tbaa !89
  br label %96, !llvm.loop !90

129:                                              ; preds = %103
  %130 = load ptr, ptr %7, align 8, !tbaa !5
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  %132 = load ptr, ptr %11, align 8, !tbaa !5
  %133 = load ptr, ptr %11, align 8, !tbaa !5
  %134 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %133, i32 0, i32 26
  call void @_ZN17RigidBodyDynamics23CalcConstraintsJacobianERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872) %130, ptr noundef nonnull align 8 dereferenceable(16) %131, ptr noundef nonnull align 8 dereferenceable(1160) %132, ptr noundef nonnull align 8 dereferenceable(24) %134, i1 noundef zeroext false)
  %135 = load ptr, ptr %7, align 8, !tbaa !5
  %136 = load ptr, ptr %8, align 8, !tbaa !5
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  %138 = load ptr, ptr %11, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %138, i32 0, i32 17
  call void @_ZN17RigidBodyDynamics28CalcConstraintsPositionErrorERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERS4_b(ptr noundef nonnull align 8 dereferenceable(872) %135, ptr noundef nonnull align 8 dereferenceable(16) %136, ptr noundef nonnull align 8 dereferenceable(1160) %137, ptr noundef nonnull align 8 dereferenceable(16) %139, i1 noundef zeroext false)
  %140 = load ptr, ptr %7, align 8, !tbaa !5
  %141 = load ptr, ptr %8, align 8, !tbaa !5
  %142 = load ptr, ptr %9, align 8, !tbaa !5
  %143 = load ptr, ptr %11, align 8, !tbaa !5
  %144 = load ptr, ptr %11, align 8, !tbaa !5
  %145 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %144, i32 0, i32 18
  call void @_ZN17RigidBodyDynamics28CalcConstraintsVelocityErrorERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_RNS_13ConstraintSetERS4_b(ptr noundef nonnull align 8 dereferenceable(872) %140, ptr noundef nonnull align 8 dereferenceable(16) %141, ptr noundef nonnull align 8 dereferenceable(16) %142, ptr noundef nonnull align 8 dereferenceable(1160) %143, ptr noundef nonnull align 8 dereferenceable(16) %145, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  store i32 0, ptr %15, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #9
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %17)
  call void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 1 dereferenceable(1) %17)
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #9
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %19)
  call void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 1 dereferenceable(1) %19)
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #9
  %146 = load ptr, ptr %11, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %146, i32 0, i32 43
  %148 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %147)
  %149 = load ptr, ptr %7, align 8, !tbaa !5
  %150 = load ptr, ptr %11, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %150, i32 0, i32 43
  call void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872) %149, ptr noundef null, ptr noundef null, ptr noundef %151)
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  store i32 0, ptr %20, align 4, !tbaa !89
  br label %152

152:                                              ; preds = %231, %129
  %153 = load i32, ptr %20, align 4, !tbaa !89
  %154 = zext i32 %153 to i64
  %155 = load ptr, ptr %11, align 8, !tbaa !5
  %156 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %155, i32 0, i32 4
  %157 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %156) #9
  %158 = icmp ult i64 %154, %157
  br i1 %158, label %160, label %159

159:                                              ; preds = %152
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  br label %234

160:                                              ; preds = %152
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  %161 = load ptr, ptr %11, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %161, i32 0, i32 4
  %163 = load i32, ptr %20, align 4, !tbaa !89
  %164 = zext i32 %163 to i64
  %165 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %162, i64 noundef %164) #9
  %166 = load i32, ptr %165, align 4, !tbaa !89
  store i32 %166, ptr %21, align 4, !tbaa !89
  %167 = load i32, ptr %15, align 4, !tbaa !89
  %168 = load ptr, ptr %11, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %168, i32 0, i32 8
  %170 = load i32, ptr %21, align 4, !tbaa !89
  %171 = zext i32 %170 to i64
  %172 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %169, i64 noundef %171) #9
  %173 = load i32, ptr %172, align 4, !tbaa !89
  %174 = icmp ne i32 %167, %173
  br i1 %174, label %182, label %175

175:                                              ; preds = %160
  %176 = load ptr, ptr %11, align 8, !tbaa !5
  %177 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %176, i32 0, i32 9
  %178 = load i32, ptr %21, align 4, !tbaa !89
  %179 = zext i32 %178 to i64
  %180 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %177, i64 noundef %179) #9
  %181 = call noundef zeroext i1 @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEneIS2_EEbRKNS0_IT_EE(ptr noundef nonnull align 1 dereferenceable(1) %16, ptr noundef nonnull align 1 dereferenceable(1) %180)
  br i1 %181, label %182, label %212

182:                                              ; preds = %175, %160
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #9
  %183 = load ptr, ptr %7, align 8, !tbaa !5
  %184 = load ptr, ptr %8, align 8, !tbaa !5
  %185 = load ptr, ptr %9, align 8, !tbaa !5
  %186 = load ptr, ptr %11, align 8, !tbaa !5
  %187 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %186, i32 0, i32 43
  %188 = load ptr, ptr %11, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %188, i32 0, i32 8
  %190 = load i32, ptr %21, align 4, !tbaa !89
  %191 = zext i32 %190 to i64
  %192 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %189, i64 noundef %191) #9
  %193 = load i32, ptr %192, align 4, !tbaa !89
  %194 = load ptr, ptr %11, align 8, !tbaa !5
  %195 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %194, i32 0, i32 9
  %196 = load i32, ptr %21, align 4, !tbaa !89
  %197 = zext i32 %196 to i64
  %198 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %195, i64 noundef %197) #9
  call void @_ZN17RigidBodyDynamics21CalcPointAccelerationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.Vector3_t) align 8 %22, ptr noundef nonnull align 8 dereferenceable(872) %183, ptr noundef nonnull align 8 dereferenceable(16) %184, ptr noundef nonnull align 8 dereferenceable(16) %185, ptr noundef nonnull align 8 dereferenceable(16) %187, i32 noundef %193, ptr noundef nonnull align 8 dereferenceable(24) %198, i1 noundef zeroext false)
  %199 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN9Vector3_taSEOS_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #9
  %200 = load ptr, ptr %11, align 8, !tbaa !5
  %201 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %200, i32 0, i32 8
  %202 = load i32, ptr %21, align 4, !tbaa !89
  %203 = zext i32 %202 to i64
  %204 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %201, i64 noundef %203) #9
  %205 = load i32, ptr %204, align 4, !tbaa !89
  store i32 %205, ptr %15, align 4, !tbaa !89
  %206 = load ptr, ptr %11, align 8, !tbaa !5
  %207 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %206, i32 0, i32 9
  %208 = load i32, ptr %21, align 4, !tbaa !89
  %209 = zext i32 %208 to i64
  %210 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %207, i64 noundef %209) #9
  %211 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN9Vector3_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %210)
  br label %212

212:                                              ; preds = %182, %175
  %213 = load ptr, ptr %11, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %213, i32 0, i32 19
  %215 = load i32, ptr %21, align 4, !tbaa !89
  %216 = zext i32 %215 to i64
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %214, i64 noundef %216)
  %218 = load double, ptr %217, align 8, !tbaa !92
  %219 = load ptr, ptr %11, align 8, !tbaa !5
  %220 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %219, i32 0, i32 10
  %221 = load i32, ptr %21, align 4, !tbaa !89
  %222 = zext i32 %221 to i64
  %223 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %220, i64 noundef %222) #9
  %224 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE3dotIS2_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENS6_17scalar_product_opIdSA_EEE10ReturnTypeERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %223, ptr noundef nonnull align 1 dereferenceable(1) %18)
  %225 = fsub double %218, %224
  %226 = load ptr, ptr %11, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %226, i32 0, i32 25
  %228 = load i32, ptr %21, align 4, !tbaa !89
  %229 = zext i32 %228 to i64
  %230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %227, i64 noundef %229)
  store double %225, ptr %230, align 8, !tbaa !92
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  br label %231

231:                                              ; preds = %212
  %232 = load i32, ptr %20, align 4, !tbaa !89
  %233 = add i32 %232, 1
  store i32 %233, ptr %20, align 4, !tbaa !89
  br label %152, !llvm.loop !94

234:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  store i32 0, ptr %23, align 4, !tbaa !89
  br label %235

235:                                              ; preds = %413, %234
  %236 = load i32, ptr %23, align 4, !tbaa !89
  %237 = zext i32 %236 to i64
  %238 = load ptr, ptr %11, align 8, !tbaa !5
  %239 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %238, i32 0, i32 5
  %240 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %239) #9
  %241 = icmp ult i64 %237, %240
  br i1 %241, label %243, label %242

242:                                              ; preds = %235
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %425

243:                                              ; preds = %235
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  %244 = load ptr, ptr %11, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %244, i32 0, i32 5
  %246 = load i32, ptr %23, align 4, !tbaa !89
  %247 = zext i32 %246 to i64
  %248 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %245, i64 noundef %247) #9
  %249 = load i32, ptr %248, align 4, !tbaa !89
  store i32 %249, ptr %24, align 4, !tbaa !89
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #9
  call void @_ZN9Vector3_tC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25)
  call void @llvm.lifetime.start.p0(i64 72, ptr %26) #9
  call void @_ZN9Matrix3_tC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %26)
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #9
  call void @_ZN15SpatialVector_tC2Ev(ptr noundef nonnull align 16 dereferenceable(48) %27)
  call void @llvm.lifetime.start.p0(i64 48, ptr %28) #9
  call void @_ZN15SpatialVector_tC2Ev(ptr noundef nonnull align 16 dereferenceable(48) %28)
  call void @llvm.lifetime.start.p0(i64 48, ptr %29) #9
  call void @_ZN15SpatialVector_tC2Ev(ptr noundef nonnull align 16 dereferenceable(48) %29)
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #9
  %250 = load ptr, ptr %7, align 8, !tbaa !5
  %251 = load ptr, ptr %8, align 8, !tbaa !5
  %252 = load ptr, ptr %11, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %252, i32 0, i32 11
  %254 = load i32, ptr %24, align 4, !tbaa !89
  %255 = zext i32 %254 to i64
  %256 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %253, i64 noundef %255) #9
  %257 = load i32, ptr %256, align 4, !tbaa !89
  %258 = load ptr, ptr %11, align 8, !tbaa !5
  %259 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %258, i32 0, i32 13
  %260 = load i32, ptr %24, align 4, !tbaa !89
  %261 = zext i32 %260 to i64
  %262 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %259, i64 noundef %261) #9
  %263 = getelementptr inbounds %"struct.RigidBodyDynamics::Math::SpatialTransform", ptr %262, i32 0, i32 1
  call void @_ZN17RigidBodyDynamics25CalcBodyToBaseCoordinatesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.Vector3_t) align 8 %32, ptr noundef nonnull align 8 dereferenceable(872) %250, ptr noundef nonnull align 8 dereferenceable(16) %251, i32 noundef %257, ptr noundef nonnull align 8 dereferenceable(24) %263, i1 noundef zeroext false)
  %264 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN9Vector3_taSEOS_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %32) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.start.p0(i64 72, ptr %35) #9
  %265 = load ptr, ptr %7, align 8, !tbaa !5
  %266 = load ptr, ptr %8, align 8, !tbaa !5
  %267 = load ptr, ptr %11, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %267, i32 0, i32 11
  %269 = load i32, ptr %24, align 4, !tbaa !89
  %270 = zext i32 %269 to i64
  %271 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %268, i64 noundef %270) #9
  %272 = load i32, ptr %271, align 4, !tbaa !89
  call void @_ZN17RigidBodyDynamics24CalcBodyWorldOrientationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjb(ptr dead_on_unwind writable sret(%class.Matrix3_t) align 8 %35, ptr noundef nonnull align 8 dereferenceable(872) %265, ptr noundef nonnull align 8 dereferenceable(16) %266, i32 noundef %272, i1 noundef zeroext false)
  %273 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %35)
  %274 = getelementptr inbounds %"class.Eigen::Transpose.397", ptr %34, i32 0, i32 0
  store ptr %273, ptr %274, align 8
  %275 = load ptr, ptr %11, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %275, i32 0, i32 13
  %277 = load i32, ptr %24, align 4, !tbaa !89
  %278 = zext i32 %277 to i64
  %279 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %276, i64 noundef %278) #9
  %280 = getelementptr inbounds %"struct.RigidBodyDynamics::Math::SpatialTransform", ptr %279, i32 0, i32 0
  %281 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %34, ptr noundef nonnull align 1 dereferenceable(1) %280)
  %282 = getelementptr inbounds { ptr, ptr }, ptr %33, i32 0, i32 0
  %283 = extractvalue { ptr, ptr } %281, 0
  store ptr %283, ptr %282, align 8
  %284 = getelementptr inbounds { ptr, ptr }, ptr %33, i32 0, i32 1
  %285 = extractvalue { ptr, ptr } %281, 1
  store ptr %285, ptr %284, align 8
  %286 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN9Matrix3_taSIN5Eigen7ProductINS1_9TransposeINS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEES5_Li0EEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %26, ptr noundef nonnull align 1 dereferenceable(1) %33)
  call void @llvm.lifetime.end.p0(i64 72, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 96, ptr %37) #9
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2ERK9Matrix3_tRK9Vector3_t(ptr noundef nonnull align 8 dereferenceable(96) %37, ptr noundef nonnull align 8 dereferenceable(72) %26, ptr noundef nonnull align 8 dereferenceable(24) %25)
  %287 = load ptr, ptr %11, align 8, !tbaa !5
  %288 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %287, i32 0, i32 15
  %289 = load i32, ptr %24, align 4, !tbaa !89
  %290 = zext i32 %289 to i64
  %291 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %288, i64 noundef %290) #9
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform5applyERK15SpatialVector_t(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %36, ptr noundef nonnull align 8 dereferenceable(96) %37, ptr noundef nonnull align 16 dereferenceable(48) %291)
  %292 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %29, ptr noundef nonnull align 16 dereferenceable(48) %36) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %38) #9
  %293 = load ptr, ptr %7, align 8, !tbaa !5
  %294 = load ptr, ptr %8, align 8, !tbaa !5
  %295 = load ptr, ptr %9, align 8, !tbaa !5
  %296 = load ptr, ptr %11, align 8, !tbaa !5
  %297 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %296, i32 0, i32 11
  %298 = load i32, ptr %24, align 4, !tbaa !89
  %299 = zext i32 %298 to i64
  %300 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %297, i64 noundef %299) #9
  %301 = load i32, ptr %300, align 4, !tbaa !89
  %302 = load ptr, ptr %11, align 8, !tbaa !5
  %303 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %302, i32 0, i32 13
  %304 = load i32, ptr %24, align 4, !tbaa !89
  %305 = zext i32 %304 to i64
  %306 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %303, i64 noundef %305) #9
  %307 = getelementptr inbounds %"struct.RigidBodyDynamics::Math::SpatialTransform", ptr %306, i32 0, i32 1
  call void @_ZN17RigidBodyDynamics19CalcPointVelocity6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %38, ptr noundef nonnull align 8 dereferenceable(872) %293, ptr noundef nonnull align 8 dereferenceable(16) %294, ptr noundef nonnull align 8 dereferenceable(16) %295, i32 noundef %301, ptr noundef nonnull align 8 dereferenceable(24) %307, i1 noundef zeroext false)
  %308 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %27, ptr noundef nonnull align 16 dereferenceable(48) %38) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %38) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %39) #9
  %309 = load ptr, ptr %7, align 8, !tbaa !5
  %310 = load ptr, ptr %8, align 8, !tbaa !5
  %311 = load ptr, ptr %9, align 8, !tbaa !5
  %312 = load ptr, ptr %11, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %312, i32 0, i32 12
  %314 = load i32, ptr %24, align 4, !tbaa !89
  %315 = zext i32 %314 to i64
  %316 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %313, i64 noundef %315) #9
  %317 = load i32, ptr %316, align 4, !tbaa !89
  %318 = load ptr, ptr %11, align 8, !tbaa !5
  %319 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %318, i32 0, i32 14
  %320 = load i32, ptr %24, align 4, !tbaa !89
  %321 = zext i32 %320 to i64
  %322 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %319, i64 noundef %321) #9
  %323 = getelementptr inbounds %"struct.RigidBodyDynamics::Math::SpatialTransform", ptr %322, i32 0, i32 1
  call void @_ZN17RigidBodyDynamics19CalcPointVelocity6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %39, ptr noundef nonnull align 8 dereferenceable(872) %309, ptr noundef nonnull align 8 dereferenceable(16) %310, ptr noundef nonnull align 8 dereferenceable(16) %311, i32 noundef %317, ptr noundef nonnull align 8 dereferenceable(24) %323, i1 noundef zeroext false)
  %324 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %28, ptr noundef nonnull align 16 dereferenceable(48) %39) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %39) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %40) #9
  call void @_ZN17RigidBodyDynamics4Math6crossmERK15SpatialVector_tS3_(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %40, ptr noundef nonnull align 16 dereferenceable(48) %27, ptr noundef nonnull align 16 dereferenceable(48) %29)
  call void @llvm.lifetime.start.p0(i64 48, ptr %41) #9
  %325 = load ptr, ptr %7, align 8, !tbaa !5
  %326 = load ptr, ptr %8, align 8, !tbaa !5
  %327 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #9
  %328 = load ptr, ptr %7, align 8, !tbaa !5
  %329 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %328, i32 0, i32 3
  %330 = load i32, ptr %329, align 8, !tbaa !9
  %331 = zext i32 %330 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.182") align 8 %43, i64 noundef %331)
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 1 dereferenceable(1) %43)
  %332 = load ptr, ptr %11, align 8, !tbaa !5
  %333 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %332, i32 0, i32 11
  %334 = load i32, ptr %24, align 4, !tbaa !89
  %335 = zext i32 %334 to i64
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %333, i64 noundef %335) #9
  %337 = load i32, ptr %336, align 4, !tbaa !89
  %338 = load ptr, ptr %11, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %338, i32 0, i32 13
  %340 = load i32, ptr %24, align 4, !tbaa !89
  %341 = zext i32 %340 to i64
  %342 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %339, i64 noundef %341) #9
  %343 = getelementptr inbounds %"struct.RigidBodyDynamics::Math::SpatialTransform", ptr %342, i32 0, i32 1
  invoke void @_ZN17RigidBodyDynamics23CalcPointAcceleration6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %41, ptr noundef nonnull align 8 dereferenceable(872) %325, ptr noundef nonnull align 8 dereferenceable(16) %326, ptr noundef nonnull align 8 dereferenceable(16) %327, ptr noundef nonnull align 8 dereferenceable(16) %42, i32 noundef %337, ptr noundef nonnull align 8 dereferenceable(24) %343, i1 noundef zeroext false)
          to label %344 unwind label %416

344:                                              ; preds = %243
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %46) #9
  %345 = load ptr, ptr %7, align 8, !tbaa !5
  %346 = load ptr, ptr %8, align 8, !tbaa !5
  %347 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #9
  %348 = load ptr, ptr %7, align 8, !tbaa !5
  %349 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %348, i32 0, i32 3
  %350 = load i32, ptr %349, align 8, !tbaa !9
  %351 = zext i32 %350 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.182") align 8 %48, i64 noundef %351)
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 1 dereferenceable(1) %48)
  %352 = load ptr, ptr %11, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %352, i32 0, i32 12
  %354 = load i32, ptr %24, align 4, !tbaa !89
  %355 = zext i32 %354 to i64
  %356 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %353, i64 noundef %355) #9
  %357 = load i32, ptr %356, align 4, !tbaa !89
  %358 = load ptr, ptr %11, align 8, !tbaa !5
  %359 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %358, i32 0, i32 14
  %360 = load i32, ptr %24, align 4, !tbaa !89
  %361 = zext i32 %360 to i64
  %362 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %359, i64 noundef %361) #9
  %363 = getelementptr inbounds %"struct.RigidBodyDynamics::Math::SpatialTransform", ptr %362, i32 0, i32 1
  invoke void @_ZN17RigidBodyDynamics23CalcPointAcceleration6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %46, ptr noundef nonnull align 8 dereferenceable(872) %345, ptr noundef nonnull align 8 dereferenceable(16) %346, ptr noundef nonnull align 8 dereferenceable(16) %347, ptr noundef nonnull align 8 dereferenceable(16) %47, i32 noundef %357, ptr noundef nonnull align 8 dereferenceable(24) %363, i1 noundef zeroext false)
          to label %364 unwind label %420

364:                                              ; preds = %344
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #9
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmiIS2_EEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.475") align 8 %49, ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 1 dereferenceable(1) %41)
  %365 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKS2_S9_EEEENS_20ScalarBinaryOpTraitsIdNS6_6traitsIT_E6ScalarENS6_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE(ptr noundef nonnull align 1 dereferenceable(1) %29, ptr noundef nonnull align 1 dereferenceable(1) %49)
  %366 = fneg double %365
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #9
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmiIS2_EEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.475") align 8 %50, ptr noundef nonnull align 1 dereferenceable(1) %28, ptr noundef nonnull align 1 dereferenceable(1) %27)
  %367 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKS2_S9_EEEENS_20ScalarBinaryOpTraitsIdNS6_6traitsIT_E6ScalarENS6_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE(ptr noundef nonnull align 1 dereferenceable(1) %40, ptr noundef nonnull align 1 dereferenceable(1) %50)
  %368 = fsub double %366, %367
  %369 = load ptr, ptr %11, align 8, !tbaa !5
  %370 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %369, i32 0, i32 16
  %371 = load i32, ptr %24, align 4, !tbaa !89
  %372 = zext i32 %371 to i64
  %373 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %370, i64 noundef %372) #9
  %374 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %373, i64 noundef 0)
  %375 = load double, ptr %374, align 8, !tbaa !92
  %376 = fmul double 2.000000e+00, %375
  %377 = load ptr, ptr %11, align 8, !tbaa !5
  %378 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %377, i32 0, i32 18
  %379 = load i32, ptr %24, align 4, !tbaa !89
  %380 = zext i32 %379 to i64
  %381 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %378, i64 noundef %380)
  %382 = load double, ptr %381, align 8, !tbaa !92
  %383 = fneg double %376
  %384 = call double @llvm.fmuladd.f64(double %383, double %382, double %368)
  %385 = load ptr, ptr %11, align 8, !tbaa !5
  %386 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %385, i32 0, i32 16
  %387 = load i32, ptr %24, align 4, !tbaa !89
  %388 = zext i32 %387 to i64
  %389 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %386, i64 noundef %388) #9
  %390 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %389, i64 noundef 1)
  %391 = load double, ptr %390, align 8, !tbaa !92
  %392 = load ptr, ptr %11, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %392, i32 0, i32 16
  %394 = load i32, ptr %24, align 4, !tbaa !89
  %395 = zext i32 %394 to i64
  %396 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %393, i64 noundef %395) #9
  %397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %396, i64 noundef 1)
  %398 = load double, ptr %397, align 8, !tbaa !92
  %399 = fmul double %391, %398
  %400 = load ptr, ptr %11, align 8, !tbaa !5
  %401 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %400, i32 0, i32 17
  %402 = load i32, ptr %24, align 4, !tbaa !89
  %403 = zext i32 %402 to i64
  %404 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %401, i64 noundef %403)
  %405 = load double, ptr %404, align 8, !tbaa !92
  %406 = fneg double %399
  %407 = call double @llvm.fmuladd.f64(double %406, double %405, double %384)
  %408 = load ptr, ptr %11, align 8, !tbaa !5
  %409 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %408, i32 0, i32 25
  %410 = load i32, ptr %24, align 4, !tbaa !89
  %411 = zext i32 %410 to i64
  %412 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %409, i64 noundef %411)
  store double %407, ptr %412, align 8, !tbaa !92
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 72, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  br label %413

413:                                              ; preds = %364
  %414 = load i32, ptr %23, align 4, !tbaa !89
  %415 = add i32 %414, 1
  store i32 %415, ptr %23, align 4, !tbaa !89
  br label %235, !llvm.loop !95

416:                                              ; preds = %243
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %44, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %45, align 4
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #9
  br label %424

420:                                              ; preds = %344
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %44, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %45, align 4
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #9
  br label %424

424:                                              ; preds = %420, %416
  call void @llvm.lifetime.end.p0(i64 48, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 72, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %550

425:                                              ; preds = %242
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #9
  store i32 0, ptr %55, align 4, !tbaa !89
  br label %426

426:                                              ; preds = %546, %425
  %427 = load i32, ptr %55, align 4, !tbaa !89
  %428 = zext i32 %427 to i64
  %429 = load ptr, ptr %11, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %429, i32 0, i32 6
  %431 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %430) #9
  %432 = icmp ult i64 %428, %431
  br i1 %432, label %434, label %433

433:                                              ; preds = %426
  store i32 11, ptr %56, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  br label %549

434:                                              ; preds = %426
  %435 = load ptr, ptr %11, align 8, !tbaa !5
  %436 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %435, i32 0, i32 6
  %437 = load i32, ptr %55, align 4, !tbaa !89
  %438 = zext i32 %437 to i64
  %439 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %436, i64 noundef %438) #9
  %440 = load i32, ptr %439, align 4, !tbaa !89
  store i32 %440, ptr %51, align 4, !tbaa !89
  %441 = load ptr, ptr %11, align 8, !tbaa !5
  %442 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %441, i32 0, i32 7
  %443 = load i32, ptr %55, align 4, !tbaa !89
  %444 = zext i32 %443 to i64
  %445 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %442, i64 noundef %444) #9
  %446 = load ptr, ptr %445, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomConstraint", ptr %446, i32 0, i32 1
  %448 = load i32, ptr %447, align 8, !tbaa !96
  store i32 %448, ptr %52, align 4, !tbaa !89
  %449 = load ptr, ptr %11, align 8, !tbaa !5
  %450 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %449, i32 0, i32 26
  %451 = call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %450)
  %452 = trunc i64 %451 to i32
  store i32 %452, ptr %53, align 4, !tbaa !89
  %453 = load ptr, ptr %11, align 8, !tbaa !5
  %454 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %453, i32 0, i32 7
  %455 = load i32, ptr %55, align 4, !tbaa !89
  %456 = zext i32 %455 to i64
  %457 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %454, i64 noundef %456) #9
  %458 = load ptr, ptr %457, align 8, !tbaa !5
  %459 = load ptr, ptr %7, align 8, !tbaa !5
  %460 = load i32, ptr %51, align 4, !tbaa !89
  %461 = load ptr, ptr %8, align 8, !tbaa !5
  %462 = load ptr, ptr %9, align 8, !tbaa !5
  %463 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr %58) #9
  %464 = load ptr, ptr %11, align 8, !tbaa !5
  %465 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %464, i32 0, i32 26
  %466 = load i32, ptr %51, align 4, !tbaa !89
  %467 = zext i32 %466 to i64
  %468 = load i32, ptr %52, align 4, !tbaa !89
  %469 = load i32, ptr %53, align 4, !tbaa !89
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIjjEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block") align 8 %58, ptr noundef nonnull align 1 dereferenceable(1) %465, i64 noundef %467, i64 noundef 0, i32 noundef %468, i32 noundef %469)
  call void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_5BlockIS1_Lin1ELin1ELb0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 1 dereferenceable(1) %58)
  %470 = load ptr, ptr %11, align 8, !tbaa !5
  %471 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %470, i32 0, i32 25
  %472 = load i32, ptr %51, align 4, !tbaa !89
  %473 = load ptr, ptr %458, align 8, !tbaa !98
  %474 = getelementptr inbounds ptr, ptr %473, i64 3
  %475 = load ptr, ptr %474, align 8
  invoke void %475(ptr noundef nonnull align 8 dereferenceable(12) %458, ptr noundef nonnull align 8 dereferenceable(872) %459, i32 noundef %460, ptr noundef nonnull align 8 dereferenceable(16) %461, ptr noundef nonnull align 8 dereferenceable(16) %462, ptr noundef nonnull align 8 dereferenceable(1160) %463, ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 8 dereferenceable(16) %471, i32 noundef %472)
          to label %476 unwind label %489

476:                                              ; preds = %434
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #9
  store i32 0, ptr %59, align 4, !tbaa !89
  br label %477

477:                                              ; preds = %542, %476
  %478 = load i32, ptr %59, align 4, !tbaa !89
  %479 = load ptr, ptr %11, align 8, !tbaa !5
  %480 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %479, i32 0, i32 7
  %481 = load i32, ptr %55, align 4, !tbaa !89
  %482 = zext i32 %481 to i64
  %483 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %480, i64 noundef %482) #9
  %484 = load ptr, ptr %483, align 8, !tbaa !5
  %485 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomConstraint", ptr %484, i32 0, i32 1
  %486 = load i32, ptr %485, align 8, !tbaa !96
  %487 = icmp ult i32 %478, %486
  br i1 %487, label %493, label %488

488:                                              ; preds = %477
  store i32 14, ptr %56, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #9
  br label %545

489:                                              ; preds = %434
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %44, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %45, align 4
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %58) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  br label %550

493:                                              ; preds = %477
  %494 = load i32, ptr %51, align 4, !tbaa !89
  %495 = load i32, ptr %59, align 4, !tbaa !89
  %496 = add i32 %494, %495
  store i32 %496, ptr %54, align 4, !tbaa !89
  %497 = load ptr, ptr %11, align 8, !tbaa !5
  %498 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %497, i32 0, i32 16
  %499 = load i32, ptr %54, align 4, !tbaa !89
  %500 = zext i32 %499 to i64
  %501 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %498, i64 noundef %500) #9
  %502 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %501, i64 noundef 0)
  %503 = load double, ptr %502, align 8, !tbaa !92
  %504 = fmul double -2.000000e+00, %503
  %505 = load ptr, ptr %11, align 8, !tbaa !5
  %506 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %505, i32 0, i32 18
  %507 = load i32, ptr %54, align 4, !tbaa !89
  %508 = zext i32 %507 to i64
  %509 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %506, i64 noundef %508)
  %510 = load double, ptr %509, align 8, !tbaa !92
  %511 = load ptr, ptr %11, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %511, i32 0, i32 16
  %513 = load i32, ptr %54, align 4, !tbaa !89
  %514 = zext i32 %513 to i64
  %515 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %512, i64 noundef %514) #9
  %516 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %515, i64 noundef 1)
  %517 = load double, ptr %516, align 8, !tbaa !92
  %518 = load ptr, ptr %11, align 8, !tbaa !5
  %519 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %518, i32 0, i32 16
  %520 = load i32, ptr %54, align 4, !tbaa !89
  %521 = zext i32 %520 to i64
  %522 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %519, i64 noundef %521) #9
  %523 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %522, i64 noundef 1)
  %524 = load double, ptr %523, align 8, !tbaa !92
  %525 = fmul double %517, %524
  %526 = load ptr, ptr %11, align 8, !tbaa !5
  %527 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %526, i32 0, i32 17
  %528 = load i32, ptr %54, align 4, !tbaa !89
  %529 = zext i32 %528 to i64
  %530 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %527, i64 noundef %529)
  %531 = load double, ptr %530, align 8, !tbaa !92
  %532 = fmul double %525, %531
  %533 = fneg double %532
  %534 = call double @llvm.fmuladd.f64(double %504, double %510, double %533)
  %535 = load ptr, ptr %11, align 8, !tbaa !5
  %536 = getelementptr inbounds %"struct.RigidBodyDynamics::ConstraintSet", ptr %535, i32 0, i32 25
  %537 = load i32, ptr %54, align 4, !tbaa !89
  %538 = zext i32 %537 to i64
  %539 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %536, i64 noundef %538)
  %540 = load double, ptr %539, align 8, !tbaa !92
  %541 = fadd double %540, %534
  store double %541, ptr %539, align 8, !tbaa !92
  br label %542

542:                                              ; preds = %493
  %543 = load i32, ptr %59, align 4, !tbaa !89
  %544 = add i32 %543, 1
  store i32 %544, ptr %59, align 4, !tbaa !89
  br label %477, !llvm.loop !100

545:                                              ; preds = %488
  br label %546

546:                                              ; preds = %545
  %547 = load i32, ptr %55, align 4, !tbaa !89
  %548 = add i32 %547, 1
  store i32 %548, ptr %55, align 4, !tbaa !89
  br label %426, !llvm.loop !101

549:                                              ; preds = %433
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  ret void

550:                                              ; preds = %489, %424
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  br label %551

551:                                              ; preds = %550
  %552 = load ptr, ptr %44, align 8
  %553 = load i32, ptr %45, align 4
  %554 = insertvalue { ptr, i32 } poison, ptr %552, 0
  %555 = insertvalue { ptr, i32 } %554, i32 %553, 1
  resume { ptr, i32 } %555
}

declare void @_ZN17RigidBodyDynamics16NonlinearEffectsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_RS4_PSt6vectorI15SpatialVector_tSaIS9_EE(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) #6

declare void @_ZN17RigidBodyDynamics27CompositeRigidBodyAlgorithmERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics4Math16SpatialTransformmlERKS1_(ptr dead_on_unwind noalias writable sret(%"struct.RigidBodyDynamics::Math::SpatialTransform") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) #3 align 2

declare void @_ZN17RigidBodyDynamics21CalcPointAccelerationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.Vector3_t) align 8, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE3dotIS2_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

declare void @_ZN17RigidBodyDynamics19CalcPointVelocity6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math6crossmERK15SpatialVector_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

declare void @_ZN17RigidBodyDynamics23CalcPointAcceleration6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #6

; 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 double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKS2_S9_EEEENS_20ScalarBinaryOpTraitsIdNS6_6traitsIT_E6ScalarENS6_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_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_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmiIS2_EEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseBinaryOp.475") 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(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

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

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

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 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 = { 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 = { 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 #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { noreturn nounwind }
attributes #9 = { 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, !93, i64 0}
!93 = !{!"double", !7, i64 0}
!94 = distinct !{!94, !91}
!95 = distinct !{!95, !91}
!96 = !{!97, !19, i64 8}
!97 = !{!"_ZTSN17RigidBodyDynamics16CustomConstraintE", !19, i64 8}
!98 = !{!99, !99, i64 0}
!99 = !{!"vtable pointer", !8, i64 0}
!100 = distinct !{!100, !91}
!101 = distinct !{!101, !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.113" = 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.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.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.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.Eigen::Block" = type { %"class.Eigen::BlockImpl" }
%"class.Eigen::BlockImpl" = type { %"class.Eigen::internal::BlockImpl_dense" }
%"class.Eigen::internal::BlockImpl_dense" = type { %"class.Eigen::MapBase", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase" = type { %"class.Eigen::MapBase.202" }
%"class.Eigen::MapBase.202" = type { ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic" }
%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }
%"class.Eigen::Product.390" = type { %"class.Eigen::Transpose.397", ptr }
%"class.Eigen::Transpose.397" = type { ptr }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { ptr, i64 }
%"class.Eigen::CwiseBinaryOp.475" = type <{ ptr, ptr, [8 x i8] }>
%"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 }

@.str.4 = external hidden unnamed_addr constant [112 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [65 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics30CalcConstrainedSystemVariablesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_RNS_13ConstraintSetEPSt6vectorI15SpatialVector_tSaISA_EE = external hidden unnamed_addr constant [189 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 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 void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8) local_unnamed_addr #2 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(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 @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #2 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics28CalcConstraintsPositionErrorERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERS4_b(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(1160), ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) local_unnamed_addr #3

declare void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #6

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

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

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

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

declare void @_ZN17RigidBodyDynamics24CalcBodyWorldOrientationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjb(ptr dead_on_unwind writable sret(%class.Matrix3_t) align 8, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i1 noundef zeroext) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE9transposeEv(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_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_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(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(72) ptr @_ZN9Matrix3_taSIN5Eigen7ProductINS1_9TransposeINS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEES5_Li0EEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3 align 2

declare void @_ZN17RigidBodyDynamics25CalcBodyToBaseCoordinatesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.Vector3_t) align 8, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics23CalcConstraintsJacobianERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(1160), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEneIS2_EEbRKNS0_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 nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZN17RigidBodyDynamics4Math16SpatialTransformaSEOS1_(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2ERK9Matrix3_tRK9Vector3_t(ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 #3 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 #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics28CalcConstraintsVelocityErrorERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_RNS_13ConstraintSetERS4_b(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(1160), ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics30CalcConstrainedSystemVariablesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_RNS_13ConstraintSetEPSt6vectorI15SpatialVector_tSaISA_EE(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr nocapture noundef nonnull readnone align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(1160) %4, ptr noundef %5) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %8 = alloca %class.Vector3_t, align 8
  %9 = alloca %"class.Eigen::CwiseNullaryOp.113", align 8
  %10 = alloca %class.Vector3_t, align 8
  %11 = alloca %"class.Eigen::CwiseNullaryOp.113", align 8
  %12 = alloca %class.Vector3_t, align 8
  %13 = alloca %class.Vector3_t, align 8
  %14 = alloca %class.Matrix3_t, align 8
  %15 = alloca %class.SpatialVector_t, align 16
  %16 = alloca %class.SpatialVector_t, align 16
  %17 = alloca %class.SpatialVector_t, align 16
  %18 = alloca %class.Vector3_t, align 8
  %19 = alloca %"class.Eigen::Product.390", align 8
  %20 = alloca %"class.Eigen::Transpose.397", align 8
  %21 = alloca %class.Matrix3_t, align 8
  %22 = alloca %class.SpatialVector_t, align 16
  %23 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %24 = alloca %class.SpatialVector_t, align 16
  %25 = alloca %class.SpatialVector_t, align 16
  %26 = alloca %class.SpatialVector_t, align 16
  %27 = alloca %class.SpatialVector_t, align 16
  %28 = alloca %"class.Eigen::Matrix", align 8
  %29 = alloca %"class.Eigen::CwiseNullaryOp.182", align 8
  %30 = alloca %class.SpatialVector_t, align 16
  %31 = alloca %"class.Eigen::Matrix", align 8
  %32 = alloca %"class.Eigen::CwiseNullaryOp.182", align 8
  %33 = alloca %"class.Eigen::CwiseBinaryOp.475", align 8
  %34 = alloca %"class.Eigen::CwiseBinaryOp.475", align 8
  %35 = alloca %"class.Eigen::Matrix.41", align 8
  %36 = alloca %"class.Eigen::Block", align 8
  %37 = getelementptr inbounds i8, ptr %4, i64 488
  tail call void @_ZN17RigidBodyDynamics16NonlinearEffectsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_RS4_PSt6vectorI15SpatialVector_tSaIS9_EE(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %37, ptr noundef %5)
  %38 = getelementptr inbounds i8, ptr %4, i64 464
  %39 = tail call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %38)
  %40 = getelementptr inbounds i8, ptr %0, i64 72
  %41 = load i32, ptr %40, align 8, !tbaa !5
  %42 = zext i32 %41 to i64
  %43 = icmp eq i64 %39, %42
  br i1 %43, label %44, label %.critedge

44:                                               ; preds = %6
  %45 = tail call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %38)
  %46 = load i32, ptr %40, align 8, !tbaa !5
  %47 = zext i32 %46 to i64
  %48 = icmp eq i64 %45, %47
  br i1 %48, label %49, label %.critedge

.critedge:                                        ; preds = %6, %44
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.4, i32 noundef 691, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics30CalcConstrainedSystemVariablesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_RNS_13ConstraintSetEPSt6vectorI15SpatialVector_tSaISA_EE) #8
  unreachable

49:                                               ; preds = %44
  %50 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %38)
  tail call void @_ZN17RigidBodyDynamics27CompositeRigidBodyAlgorithmERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(24) %38, i1 noundef zeroext false)
  %51 = getelementptr inbounds i8, ptr %0, i64 800
  %52 = tail call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %51) #9
  %53 = icmp ugt i64 %52, 1
  br i1 %53, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %49
  %54 = getelementptr inbounds i8, ptr %0, i64 720
  %55 = getelementptr inbounds i8, ptr %0, i64 744
  br label %68

._crit_edge:                                      ; preds = %68, %49
  %56 = getelementptr inbounds i8, ptr %4, i64 520
  call void @_ZN17RigidBodyDynamics23CalcConstraintsJacobianERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(1160) %4, ptr noundef nonnull align 8 dereferenceable(24) %56, i1 noundef zeroext false)
  %57 = getelementptr inbounds i8, ptr %4, i64 368
  call void @_ZN17RigidBodyDynamics28CalcConstraintsPositionErrorERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_13ConstraintSetERS4_b(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(1160) %4, ptr noundef nonnull align 8 dereferenceable(16) %57, i1 noundef zeroext false)
  %58 = getelementptr inbounds i8, ptr %4, i64 384
  call void @_ZN17RigidBodyDynamics28CalcConstraintsVelocityErrorERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_RNS_13ConstraintSetERS4_b(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(1160) %4, ptr noundef nonnull align 8 dereferenceable(16) %58, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #9
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %9)
  call void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 1 dereferenceable(1) %9)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #9
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.113") align 8 %11)
  call void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 1 dereferenceable(1) %11)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #9
  %59 = getelementptr inbounds i8, ptr %4, i64 920
  %60 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %59)
  call void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef null, ptr noundef null, ptr noundef nonnull %59)
  %61 = getelementptr inbounds i8, ptr %4, i64 56
  %62 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  %.not198 = icmp eq i64 %62, 0
  br i1 %.not198, label %.preheader183, label %.lr.ph188

.lr.ph188:                                        ; preds = %._crit_edge
  %63 = getelementptr inbounds i8, ptr %4, i64 152
  %64 = getelementptr inbounds i8, ptr %4, i64 176
  %65 = getelementptr inbounds i8, ptr %4, i64 400
  %66 = getelementptr inbounds i8, ptr %4, i64 200
  %67 = getelementptr inbounds i8, ptr %4, i64 504
  br label %91

68:                                               ; preds = %.lr.ph, %68
  %69 = phi i64 [ 1, %.lr.ph ], [ %78, %68 ]
  %.0169184 = phi i32 [ 1, %.lr.ph ], [ %77, %68 ]
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7) #9
  %70 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %69) #9
  %71 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %69) #9
  %72 = load i32, ptr %71, align 4, !tbaa !88
  %73 = zext i32 %72 to i64
  %74 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %73) #9
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransformmlERKS1_(ptr dead_on_unwind nonnull writable sret(%"struct.RigidBodyDynamics::Math::SpatialTransform") align 8 %7, ptr noundef nonnull align 8 dereferenceable(96) %70, ptr noundef nonnull align 8 dereferenceable(96) %74)
  %75 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %69) #9
  %76 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN17RigidBodyDynamics4Math16SpatialTransformaSEOS1_(ptr noundef nonnull align 8 dereferenceable(96) %75, ptr noundef nonnull align 8 dereferenceable(96) %7) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #9
  %77 = add i32 %.0169184, 1
  %78 = zext i32 %77 to i64
  %79 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %51) #9
  %80 = icmp ugt i64 %79, %78
  br i1 %80, label %68, label %._crit_edge, !llvm.loop !89

.preheader183:                                    ; preds = %110, %._crit_edge
  %81 = getelementptr inbounds i8, ptr %4, i64 80
  %82 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %81) #9
  %.not199 = icmp eq i64 %82, 0
  br i1 %.not199, label %.preheader, label %.lr.ph190

.lr.ph190:                                        ; preds = %.preheader183
  %83 = getelementptr inbounds i8, ptr %4, i64 224
  %84 = getelementptr inbounds i8, ptr %4, i64 272
  %85 = getelementptr inbounds i8, ptr %19, i64 8
  %86 = getelementptr inbounds i8, ptr %4, i64 320
  %87 = getelementptr inbounds i8, ptr %4, i64 248
  %88 = getelementptr inbounds i8, ptr %4, i64 296
  %89 = getelementptr inbounds i8, ptr %4, i64 344
  %90 = getelementptr inbounds i8, ptr %4, i64 504
  br label %126

91:                                               ; preds = %.lr.ph188, %110
  %92 = phi i64 [ 0, %.lr.ph188 ], [ %118, %110 ]
  %.0170186 = phi i32 [ 0, %.lr.ph188 ], [ %.1, %110 ]
  %.0171185 = phi i32 [ 0, %.lr.ph188 ], [ %117, %110 ]
  %93 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %92) #9
  %94 = load i32, ptr %93, align 4, !tbaa !88
  %95 = zext i32 %94 to i64
  %96 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %95) #9
  %97 = load i32, ptr %96, align 4, !tbaa !88
  %.not = icmp eq i32 %.0170186, %97
  br i1 %.not, label %98, label %101

98:                                               ; preds = %91
  %99 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %95) #9
  %100 = call noundef zeroext i1 @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEneIS2_EEbRKNS0_IT_EE(ptr noundef nonnull align 1 dereferenceable(1) %8, ptr noundef nonnull align 1 dereferenceable(1) %99)
  br i1 %100, label %101, label %110

101:                                              ; preds = %98, %91
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #9
  %102 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %95) #9
  %103 = load i32, ptr %102, align 4, !tbaa !88
  %104 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %95) #9
  call void @_ZN17RigidBodyDynamics21CalcPointAccelerationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_jRK9Vector3_tb(ptr dead_on_unwind nonnull writable sret(%class.Vector3_t) align 8 %12, ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %59, i32 noundef %103, ptr noundef nonnull align 8 dereferenceable(24) %104, i1 noundef zeroext false)
  %105 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN9Vector3_taSEOS_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %12) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #9
  %106 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %95) #9
  %107 = load i32, ptr %106, align 4, !tbaa !88
  %108 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %95) #9
  %109 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN9Vector3_taSERKS_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %108)
  br label %110

110:                                              ; preds = %101, %98
  %.1 = phi i32 [ %107, %101 ], [ %.0170186, %98 ]
  %111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %65, i64 noundef %95)
  %112 = load double, ptr %111, align 8, !tbaa !91
  %113 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %95) #9
  %114 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE3dotIS2_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENS6_17scalar_product_opIdSA_EEE10ReturnTypeERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %113, ptr noundef nonnull align 1 dereferenceable(1) %10)
  %115 = fsub double %112, %114
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %67, i64 noundef %95)
  store double %115, ptr %116, align 8, !tbaa !91
  %117 = add i32 %.0171185, 1
  %118 = zext i32 %117 to i64
  %119 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  %120 = icmp ugt i64 %119, %118
  br i1 %120, label %91, label %.preheader183, !llvm.loop !93

.preheader:                                       ; preds = %169, %.preheader183
  %121 = getelementptr inbounds i8, ptr %4, i64 104
  %122 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %121) #9
  %.not200 = icmp eq i64 %122, 0
  br i1 %.not200, label %._crit_edge197, label %.lr.ph196

.lr.ph196:                                        ; preds = %.preheader
  %123 = getelementptr inbounds i8, ptr %4, i64 128
  %124 = getelementptr inbounds i8, ptr %4, i64 504
  %125 = getelementptr inbounds i8, ptr %4, i64 344
  br label %202

126:                                              ; preds = %.lr.ph190, %169
  %127 = phi i64 [ 0, %.lr.ph190 ], [ %194, %169 ]
  %.0172189 = phi i32 [ 0, %.lr.ph190 ], [ %193, %169 ]
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %81, i64 noundef %127) #9
  %129 = load i32, ptr %128, align 4, !tbaa !88
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #9
  call void @_ZN9Vector3_tC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13)
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %14) #9
  call void @_ZN9Matrix3_tC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %14)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #9
  call void @_ZN15SpatialVector_tC2Ev(ptr noundef nonnull align 16 dereferenceable(48) %15)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %16) #9
  call void @_ZN15SpatialVector_tC2Ev(ptr noundef nonnull align 16 dereferenceable(48) %16)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #9
  call void @_ZN15SpatialVector_tC2Ev(ptr noundef nonnull align 16 dereferenceable(48) %17)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #9
  %130 = zext i32 %129 to i64
  %131 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %130) #9
  %132 = load i32, ptr %131, align 4, !tbaa !88
  %133 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %130) #9
  %134 = getelementptr inbounds i8, ptr %133, i64 72
  call void @_ZN17RigidBodyDynamics25CalcBodyToBaseCoordinatesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tb(ptr dead_on_unwind nonnull writable sret(%class.Vector3_t) align 8 %18, ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef %132, ptr noundef nonnull align 8 dereferenceable(24) %134, i1 noundef zeroext false)
  %135 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN9Vector3_taSEOS_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %21) #9
  %136 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %130) #9
  %137 = load i32, ptr %136, align 4, !tbaa !88
  call void @_ZN17RigidBodyDynamics24CalcBodyWorldOrientationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjb(ptr dead_on_unwind nonnull writable sret(%class.Matrix3_t) align 8 %21, ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, i32 noundef %137, i1 noundef zeroext false)
  %138 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %21)
  store ptr %138, ptr %20, align 8
  %139 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %130) #9
  %140 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %20, ptr noundef nonnull align 1 dereferenceable(1) %139)
  %141 = extractvalue { ptr, ptr } %140, 0
  store ptr %141, ptr %19, align 8
  %142 = extractvalue { ptr, ptr } %140, 1
  store ptr %142, ptr %85, align 8
  %143 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZN9Matrix3_taSIN5Eigen7ProductINS1_9TransposeINS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEES5_Li0EEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %14, ptr noundef nonnull align 1 dereferenceable(1) %19)
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %22) #9
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %23) #9
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2ERK9Matrix3_tRK9Vector3_t(ptr noundef nonnull align 8 dereferenceable(96) %23, ptr noundef nonnull align 8 dereferenceable(72) %14, ptr noundef nonnull align 8 dereferenceable(24) %13)
  %144 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %86, i64 noundef %130) #9
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform5applyERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %22, ptr noundef nonnull align 8 dereferenceable(96) %23, ptr noundef nonnull align 16 dereferenceable(48) %144)
  %145 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %17, ptr noundef nonnull align 16 dereferenceable(48) %22) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %22) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %24) #9
  %146 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %130) #9
  %147 = load i32, ptr %146, align 4, !tbaa !88
  %148 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %130) #9
  %149 = getelementptr inbounds i8, ptr %148, i64 72
  call void @_ZN17RigidBodyDynamics19CalcPointVelocity6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_jRK9Vector3_tb(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %24, ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, i32 noundef %147, ptr noundef nonnull align 8 dereferenceable(24) %149, i1 noundef zeroext false)
  %150 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %15, ptr noundef nonnull align 16 dereferenceable(48) %24) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %24) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %25) #9
  %151 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %130) #9
  %152 = load i32, ptr %151, align 4, !tbaa !88
  %153 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %130) #9
  %154 = getelementptr inbounds i8, ptr %153, i64 72
  call void @_ZN17RigidBodyDynamics19CalcPointVelocity6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_jRK9Vector3_tb(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %25, ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, i32 noundef %152, ptr noundef nonnull align 8 dereferenceable(24) %154, i1 noundef zeroext false)
  %155 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %16, ptr noundef nonnull align 16 dereferenceable(48) %25) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #9
  call void @_ZN17RigidBodyDynamics4Math6crossmERK15SpatialVector_tS3_(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %26, ptr noundef nonnull align 16 dereferenceable(48) %15, ptr noundef nonnull align 16 dereferenceable(48) %17)
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %27) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #9
  %156 = load i32, ptr %40, align 8, !tbaa !5
  %157 = zext i32 %156 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.182") align 8 %29, i64 noundef %157)
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 1 dereferenceable(1) %29)
  %158 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %130) #9
  %159 = load i32, ptr %158, align 4, !tbaa !88
  %160 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %84, i64 noundef %130) #9
  %161 = getelementptr inbounds i8, ptr %160, i64 72
  invoke void @_ZN17RigidBodyDynamics23CalcPointAcceleration6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_jRK9Vector3_tb(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %27, ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %28, i32 noundef %159, ptr noundef nonnull align 8 dereferenceable(24) %161, i1 noundef zeroext false)
          to label %162 unwind label %197

162:                                              ; preds = %126
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %30) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #9
  %163 = load i32, ptr %40, align 8, !tbaa !5
  %164 = zext i32 %163 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.182") align 8 %32, i64 noundef %164)
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull align 1 dereferenceable(1) %32)
  %165 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %130) #9
  %166 = load i32, ptr %165, align 4, !tbaa !88
  %167 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %130) #9
  %168 = getelementptr inbounds i8, ptr %167, i64 72
  invoke void @_ZN17RigidBodyDynamics23CalcPointAcceleration6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_jRK9Vector3_tb(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %30, ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(16) %31, i32 noundef %166, ptr noundef nonnull align 8 dereferenceable(24) %168, i1 noundef zeroext false)
          to label %169 unwind label %199

169:                                              ; preds = %162
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #9
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmiIS2_EEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.475") align 8 %33, ptr noundef nonnull align 1 dereferenceable(1) %30, ptr noundef nonnull align 1 dereferenceable(1) %27)
  %170 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKS2_S9_EEEENS_20ScalarBinaryOpTraitsIdNS6_6traitsIT_E6ScalarENS6_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE(ptr noundef nonnull align 1 dereferenceable(1) %17, ptr noundef nonnull align 1 dereferenceable(1) %33)
  %171 = fneg double %170
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #9
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmiIS2_EEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.475") align 8 %34, ptr noundef nonnull align 1 dereferenceable(1) %16, ptr noundef nonnull align 1 dereferenceable(1) %15)
  %172 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKS2_S9_EEEENS_20ScalarBinaryOpTraitsIdNS6_6traitsIT_E6ScalarENS6_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_EE(ptr noundef nonnull align 1 dereferenceable(1) %26, ptr noundef nonnull align 1 dereferenceable(1) %34)
  %173 = fsub double %171, %172
  %174 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %130) #9
  %175 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %174, i64 noundef 0)
  %176 = load double, ptr %175, align 8, !tbaa !91
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %58, i64 noundef %130)
  %178 = load double, ptr %177, align 8, !tbaa !91
  %179 = fmul double %176, -2.000000e+00
  %180 = call double @llvm.fmuladd.f64(double %179, double %178, double %173)
  %181 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %130) #9
  %182 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %181, i64 noundef 1)
  %183 = load double, ptr %182, align 8, !tbaa !91
  %184 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %130) #9
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %184, i64 noundef 1)
  %186 = load double, ptr %185, align 8, !tbaa !91
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %57, i64 noundef %130)
  %188 = load double, ptr %187, align 8, !tbaa !91
  %189 = fneg double %183
  %190 = fmul double %186, %189
  %191 = call double @llvm.fmuladd.f64(double %190, double %188, double %180)
  %192 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %90, i64 noundef %130)
  store double %191, ptr %192, align 8, !tbaa !91
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #9
  %193 = add i32 %.0172189, 1
  %194 = zext i32 %193 to i64
  %195 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %81) #9
  %196 = icmp ugt i64 %195, %194
  br i1 %196, label %126, label %.preheader, !llvm.loop !94

197:                                              ; preds = %126
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #9
  br label %201

199:                                              ; preds = %162
  %200 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #9
  br label %201

201:                                              ; preds = %199, %197
  %.pn = phi { ptr, i32 } [ %200, %199 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #9
  br label %259

._crit_edge197:                                   ; preds = %._crit_edge194, %.preheader
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #9
  ret void

202:                                              ; preds = %.lr.ph196, %._crit_edge194
  %203 = phi i64 [ 0, %.lr.ph196 ], [ %224, %._crit_edge194 ]
  %.0168195 = phi i32 [ 0, %.lr.ph196 ], [ %223, %._crit_edge194 ]
  %204 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef %203) #9
  %205 = load i32, ptr %204, align 4, !tbaa !88
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %203) #9
  %207 = load ptr, ptr %206, align 8, !tbaa !95
  %208 = getelementptr inbounds i8, ptr %207, i64 8
  %209 = load i32, ptr %208, align 8, !tbaa !96
  %210 = call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %56)
  %211 = trunc i64 %210 to i32
  %212 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %203) #9
  %213 = load ptr, ptr %212, align 8, !tbaa !95
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %35) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %36) #9
  %214 = zext i32 %205 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIjjEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block") align 8 %36, ptr noundef nonnull align 1 dereferenceable(1) %56, i64 noundef %214, i64 noundef 0, i32 noundef %209, i32 noundef %211)
  call void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_5BlockIS1_Lin1ELin1ELb0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef nonnull align 1 dereferenceable(1) %36)
  %215 = load ptr, ptr %213, align 8, !tbaa !98
  %216 = getelementptr inbounds i8, ptr %215, i64 24
  %217 = load ptr, ptr %216, align 8
  invoke void %217(ptr noundef nonnull align 8 dereferenceable(12) %213, ptr noundef nonnull align 8 dereferenceable(872) %0, i32 noundef %205, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 8 dereferenceable(1160) %4, ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef nonnull align 8 dereferenceable(16) %124, i32 noundef %205)
          to label %218 unwind label %227

218:                                              ; preds = %202
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #9
  %219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %203) #9
  %220 = load ptr, ptr %219, align 8, !tbaa !95
  %221 = getelementptr inbounds i8, ptr %220, i64 8
  %222 = load i32, ptr %221, align 8, !tbaa !96
  %.not201 = icmp eq i32 %222, 0
  br i1 %.not201, label %._crit_edge194, label %.lr.ph193

._crit_edge194:                                   ; preds = %.lr.ph193, %218
  %223 = add i32 %.0168195, 1
  %224 = zext i32 %223 to i64
  %225 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %121) #9
  %226 = icmp ugt i64 %225, %224
  br i1 %226, label %202, label %._crit_edge197, !llvm.loop !100

227:                                              ; preds = %202
  %228 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %36) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #9
  br label %259

.lr.ph193:                                        ; preds = %218, %.lr.ph193
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph193 ], [ 0, %218 ]
  %229 = trunc nuw i64 %indvars.iv to i32
  %230 = add i32 %205, %229
  %231 = zext i32 %230 to i64
  %232 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef %231) #9
  %233 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %232, i64 noundef 0)
  %234 = load double, ptr %233, align 8, !tbaa !91
  %235 = fmul double %234, -2.000000e+00
  %236 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %58, i64 noundef %231)
  %237 = load double, ptr %236, align 8, !tbaa !91
  %238 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef %231) #9
  %239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %238, i64 noundef 1)
  %240 = load double, ptr %239, align 8, !tbaa !91
  %241 = call noundef nonnull align 16 dereferenceable(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef %231) #9
  %242 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi2ELi1ELi0ELi2ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %241, i64 noundef 1)
  %243 = load double, ptr %242, align 8, !tbaa !91
  %244 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %57, i64 noundef %231)
  %245 = load double, ptr %244, align 8, !tbaa !91
  %246 = fneg double %240
  %247 = fmul double %243, %246
  %248 = fmul double %247, %245
  %249 = call double @llvm.fmuladd.f64(double %235, double %237, double %248)
  %250 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %124, i64 noundef %231)
  %251 = load double, ptr %250, align 8, !tbaa !91
  %252 = fadd double %251, %249
  store double %252, ptr %250, align 8, !tbaa !91
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics16CustomConstraintESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %203) #9
  %254 = load ptr, ptr %253, align 8, !tbaa !95
  %255 = getelementptr inbounds i8, ptr %254, i64 8
  %256 = load i32, ptr %255, align 8, !tbaa !96
  %257 = zext i32 %256 to i64
  %258 = icmp ult i64 %indvars.iv.next, %257
  br i1 %258, label %.lr.ph193, label %._crit_edge194, !llvm.loop !101

259:                                              ; preds = %227, %201
  %.pn.pn = phi { ptr, i32 } [ %.pn, %201 ], [ %228, %227 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #9
  resume { ptr, i32 } %.pn.pn
}

declare void @_ZN17RigidBodyDynamics16NonlinearEffectsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_RS4_PSt6vectorI15SpatialVector_tSaIS9_EE(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #6

declare void @_ZN17RigidBodyDynamics27CompositeRigidBodyAlgorithmERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics4Math16SpatialTransformmlERKS1_(ptr dead_on_unwind noalias writable sret(%"struct.RigidBodyDynamics::Math::SpatialTransform") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #3 align 2

declare void @_ZN17RigidBodyDynamics21CalcPointAccelerationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.Vector3_t) align 8, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE3dotIS2_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

declare void @_ZN17RigidBodyDynamics19CalcPointVelocity6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math6crossmERK15SpatialVector_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

declare void @_ZN17RigidBodyDynamics23CalcPointAcceleration6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_jRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #6

; 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 double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotINS_13CwiseBinaryOpINS_8internal20scalar_difference_opIddEEKS2_S9_EEEENS_20ScalarBinaryOpTraitsIdNS6_6traitsIT_E6ScalarENS6_17scalar_product_opIdSF_EEE10ReturnTypeERKNS0_ISD_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_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmiIS2_EEKNS_13CwiseBinaryOpINS_8internal20scalar_difference_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseBinaryOp.475") 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(16) ptr @_ZNSt6vectorI9Vector2_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

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

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

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 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 = { 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 = { 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 #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { noreturn nounwind }
attributes #9 = { 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 = !{!18, !18, i64 0}
!89 = distinct !{!89, !90}
!90 = !{!"llvm.loop.mustprogress"}
!91 = !{!92, !92, i64 0}
!92 = !{!"double", !12, i64 0}
!93 = distinct !{!93, !90}
!94 = distinct !{!94, !90}
!95 = !{!11, !11, i64 0}
!96 = !{!97, !18, i64 8}
!97 = !{!"_ZTSN17RigidBodyDynamics16CustomConstraintE", !18, i64 8}
!98 = !{!99, !99, i64 0}
!99 = !{!"vtable pointer", !13, i64 0}
!100 = distinct !{!100, !90}
!101 = distinct !{!101, !90}


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