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

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

%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }
%class.Matrix3_t = type { %"class.Eigen::Matrix.100" }
%"class.Eigen::Matrix.100" = type { %"class.Eigen::PlainObjectBase.101" }
%"class.Eigen::PlainObjectBase.101" = type { %"class.Eigen::DenseStorage.108" }
%"class.Eigen::DenseStorage.108" = type { %"struct.Eigen::internal::plain_array.109" }
%"struct.Eigen::internal::plain_array.109" = type { [9 x double] }
%class.Vector3_t = type { %"class.Eigen::Matrix" }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%class.SpatialVector_t = type { %"class.Eigen::Matrix.90" }
%"class.Eigen::Matrix.90" = type { %"class.Eigen::PlainObjectBase.91" }
%"class.Eigen::PlainObjectBase.91" = type { %"class.Eigen::DenseStorage.98" }
%"class.Eigen::DenseStorage.98" = type { %"struct.Eigen::internal::plain_array.99" }
%"struct.Eigen::internal::plain_array.99" = type { [6 x double] }
%"class.Eigen::CwiseBinaryOp" = type <{ ptr, ptr, [8 x i8] }>
%"class.Eigen::CwiseBinaryOp.114" = type <{ ptr, %"class.Eigen::CwiseBinaryOp.120", [8 x i8] }>
%"class.Eigen::CwiseBinaryOp.120" = type <{ ptr, %"class.Eigen::CwiseNullaryOp", [8 x i8] }>
%"class.Eigen::CwiseNullaryOp" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%"class.Eigen::CwiseBinaryOp.132" = type <{ ptr, %"class.Eigen::Product", [8 x i8] }>
%"class.Eigen::Product" = type { ptr, ptr }
%"class.Eigen::CwiseBinaryOp.162" = type <{ ptr, %"class.Eigen::Product.168", [8 x i8] }>
%"class.Eigen::Product.168" = type { ptr, %"class.Eigen::Block" }
%"class.Eigen::Block" = type { %"class.Eigen::BlockImpl" }
%"class.Eigen::BlockImpl" = type { %"class.Eigen::internal::BlockImpl_dense" }
%"class.Eigen::internal::BlockImpl_dense" = type { %"class.Eigen::MapBase", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase" = type { ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic" }
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"class.Eigen::Matrix.57" = type { %"class.Eigen::PlainObjectBase.58" }
%"class.Eigen::PlainObjectBase.58" = type { %"class.Eigen::DenseStorage.65" }
%"class.Eigen::DenseStorage.65" = type { ptr, i64 }
%"class.Eigen::CwiseNullaryOp.181" = type { %"class.Eigen::internal::variable_if_dynamic", [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.RigidBodyDynamics::Model" = type { %"class.std::vector", %"class.std::vector", %"class.std::vector.1", i32, i32, i32, i32, %class.Vector3_t, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.14", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector", %"class.std::vector.21", %"class.std::vector", %"class.std::vector.28", %"class.std::vector.28", %"class.std::vector.35", %"class.std::vector.40", %"class.std::vector", %"class.std::vector.45", %"class.std::vector.8", %"class.std::vector.50", %"class.std::vector.8", %"class.std::vector.8", %"class.Eigen::Matrix.57", %"class.Eigen::Matrix.57", %"class.std::vector.8", %"class.std::vector.66", %"class.std::vector.66", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.21", %"class.std::vector.21", %"class.std::vector.73", i32, %"class.std::vector.80", %"class.std::map" }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = 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.14" = type { %"class.std::vector.15" }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = 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.28" = type { %"class.std::vector.29" }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = 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.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = 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.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = 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.50" = type { %"class.std::vector.51" }
%"class.std::vector.51" = type { %"struct.std::_Vector_base.52" }
%"struct.std::_Vector_base.52" = 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.66" = type { %"class.std::vector.67" }
%"class.std::vector.67" = type { %"struct.std::_Vector_base.68" }
%"struct.std::_Vector_base.68" = 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.8" = type { %"class.std::vector.9" }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl" }
%"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.21" = type { %"class.std::vector.22" }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.73" = type { %"class.std::vector.74" }
%"class.std::vector.74" = type { %"struct.std::_Vector_base.75" }
%"struct.std::_Vector_base.75" = 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.80" = type { %"class.std::vector.81" }
%"class.std::vector.81" = type { %"struct.std::_Vector_base.82" }
%"struct.std::_Vector_base.82" = 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::Joint" = type { ptr, i32, i32, i32, i32 }
%"struct.RigidBodyDynamics::CustomJoint" = type { ptr, i32, %"struct.RigidBodyDynamics::Math::SpatialTransform", %"class.Eigen::Matrix.153", %"class.Eigen::Matrix.153", %"class.Eigen::Matrix.153", %"class.Eigen::Matrix.57", %"class.Eigen::Matrix.57" }
%"class.Eigen::Matrix.153" = type { %"class.Eigen::PlainObjectBase.154" }
%"class.Eigen::PlainObjectBase.154" = type { %"class.Eigen::DenseStorage.161" }
%"class.Eigen::DenseStorage.161" = type { ptr, i64, i64 }

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

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

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

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

declare void @_ZN17RigidBodyDynamics5jcalcERNS_5ModelEjRKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_(ptr noundef nonnull align 8 dereferenceable(872), i32 noundef, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #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) #1 align 2

; 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

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

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

; 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 uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseBinaryOp") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #5 align 2

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

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

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

; 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)) #5

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE5blockIjiEEKNS3_18ConstFixedBlockXprIXsr8internal15get_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) #5 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) #3 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"class.Eigen::Matrix.57", align 8
  %12 = alloca %"class.Eigen::CwiseNullaryOp.181", align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.Eigen::CwiseBinaryOp", align 8
  %18 = alloca %class.SpatialVector_t, align 16
  %19 = alloca %"class.Eigen::CwiseBinaryOp", align 8
  %20 = alloca %class.SpatialVector_t, align 16
  %21 = alloca %"class.Eigen::CwiseBinaryOp", align 8
  %22 = alloca %class.SpatialVector_t, align 16
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %"class.Eigen::CwiseBinaryOp", align 8
  %26 = alloca %class.SpatialVector_t, align 16
  %27 = alloca %"class.Eigen::CwiseBinaryOp.114", align 8
  %28 = alloca %"class.Eigen::CwiseBinaryOp.120", align 8
  %29 = alloca %class.Vector3_t, align 8
  %30 = alloca %"class.Eigen::CwiseBinaryOp.132", align 8
  %31 = alloca %"class.Eigen::Product", align 8
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca %"class.Eigen::CwiseBinaryOp.162", align 8
  %36 = alloca %"class.Eigen::Product.168", align 8
  %37 = alloca %"class.Eigen::Block", align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  %38 = load ptr, ptr %6, align 8, !tbaa !5
  %39 = icmp ne ptr %38, null
  br i1 %39, label %40, label %110

40:                                               ; preds = %4
  store i32 1, ptr %9, align 4, !tbaa !9
  br label %41

41:                                               ; preds = %105, %40
  %42 = load i32, ptr %9, align 4, !tbaa !9
  %43 = zext i32 %42 to i64
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %44, i32 0, i32 38
  %46 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %45) #6
  %47 = icmp ult i64 %43, %46
  br i1 %47, label %48, label %109

48:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  %49 = load ptr, ptr %5, align 8, !tbaa !5
  %50 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %49, i32 0, i32 0
  %51 = load i32, ptr %9, align 4, !tbaa !9
  %52 = zext i32 %51 to i64
  %53 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %50, i64 noundef %52) #6
  %54 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %54, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %12) #6
  %55 = load ptr, ptr %5, align 8, !tbaa !5
  %56 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %55, i32 0, i32 4
  %57 = load i32, ptr %56, align 4, !tbaa !11
  %58 = zext i32 %57 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.181") align 8 %12, i64 noundef %58)
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKT_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(24) %12)
  call void @llvm.lifetime.end.p0(i64 24, ptr %12) #6
  %59 = load ptr, ptr %5, align 8, !tbaa !5
  %60 = load i32, ptr %9, align 4, !tbaa !9
  %61 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN17RigidBodyDynamics5jcalcERNS_5ModelEjRKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_(ptr noundef nonnull align 8 dereferenceable(872) %59, i32 noundef %60, ptr noundef nonnull align 8 dereferenceable(16) %61, ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %62 unwind label %83

62:                                               ; preds = %48
  %63 = load i32, ptr %10, align 4, !tbaa !9
  %64 = icmp ne i32 %63, 0
  br i1 %64, label %65, label %91

65:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 96, ptr %15) #6
  %66 = load ptr, ptr %5, align 8, !tbaa !5
  %67 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %66, i32 0, i32 34
  %68 = load i32, ptr %9, align 4, !tbaa !9
  %69 = zext i32 %68 to i64
  %70 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %69) #6
  %71 = load ptr, ptr %5, align 8, !tbaa !5
  %72 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %71, i32 0, i32 35
  %73 = load i32, ptr %10, align 4, !tbaa !9
  %74 = zext i32 %73 to i64
  %75 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %72, i64 noundef %74) #6
  invoke void @_ZNK17RigidBodyDynamics4Math16SpatialTransformmlERKS1_(ptr dead_on_unwind writable sret(%"struct.RigidBodyDynamics::Math::SpatialTransform") align 8 %15, ptr noundef nonnull align 8 dereferenceable(96) %70, ptr noundef nonnull align 8 dereferenceable(96) %75)
          to label %76 unwind label %87

76:                                               ; preds = %65
  %77 = load ptr, ptr %5, align 8, !tbaa !5
  %78 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %77, i32 0, i32 35
  %79 = load i32, ptr %9, align 4, !tbaa !9
  %80 = zext i32 %79 to i64
  %81 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %78, i64 noundef %80) #6
  %82 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN17RigidBodyDynamics4Math16SpatialTransformaSEOS1_(ptr noundef nonnull align 8 dereferenceable(96) %81, ptr noundef nonnull align 8 dereferenceable(96) %15) #6
  call void @llvm.lifetime.end.p0(i64 96, ptr %15) #6
  br label %104

83:                                               ; preds = %91, %48
  %84 = landingpad { ptr, i32 }
          cleanup
  %85 = extractvalue { ptr, i32 } %84, 0
  store ptr %85, ptr %13, align 8
  %86 = extractvalue { ptr, i32 } %84, 1
  store i32 %86, ptr %14, align 4
  br label %108

87:                                               ; preds = %65
  %88 = landingpad { ptr, i32 }
          cleanup
  %89 = extractvalue { ptr, i32 } %88, 0
  store ptr %89, ptr %13, align 8
  %90 = extractvalue { ptr, i32 } %88, 1
  store i32 %90, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 96, ptr %15) #6
  br label %108

91:                                               ; preds = %62
  %92 = load ptr, ptr %5, align 8, !tbaa !5
  %93 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %92, i32 0, i32 34
  %94 = load i32, ptr %9, align 4, !tbaa !9
  %95 = zext i32 %94 to i64
  %96 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %95) #6
  %97 = load ptr, ptr %5, align 8, !tbaa !5
  %98 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %97, i32 0, i32 35
  %99 = load i32, ptr %9, align 4, !tbaa !9
  %100 = zext i32 %99 to i64
  %101 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %98, i64 noundef %100) #6
  %102 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN17RigidBodyDynamics4Math16SpatialTransformaSERKS1_(ptr noundef nonnull align 8 dereferenceable(96) %101, ptr noundef nonnull align 8 dereferenceable(96) %96)
          to label %103 unwind label %83

103:                                              ; preds = %91
  br label %104

104:                                              ; preds = %103, %76
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  br label %105

105:                                              ; preds = %104
  %106 = load i32, ptr %9, align 4, !tbaa !9
  %107 = add i32 %106, 1
  store i32 %107, ptr %9, align 4, !tbaa !9
  br label %41, !llvm.loop !90

108:                                              ; preds = %87, %83
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %407

109:                                              ; preds = %41
  br label %110

110:                                              ; preds = %109, %4
  %111 = load ptr, ptr %7, align 8, !tbaa !5
  %112 = icmp ne ptr %111, null
  br i1 %112, label %113, label %215

113:                                              ; preds = %110
  store i32 1, ptr %9, align 4, !tbaa !9
  br label %114

114:                                              ; preds = %211, %113
  %115 = load i32, ptr %9, align 4, !tbaa !9
  %116 = zext i32 %115 to i64
  %117 = load ptr, ptr %5, align 8, !tbaa !5
  %118 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %117, i32 0, i32 38
  %119 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %118) #6
  %120 = icmp ult i64 %116, %119
  br i1 %120, label %121, label %214

121:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %122 = load ptr, ptr %5, align 8, !tbaa !5
  %123 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 0
  %124 = load i32, ptr %9, align 4, !tbaa !9
  %125 = zext i32 %124 to i64
  %126 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef %125) #6
  %127 = load i32, ptr %126, align 4, !tbaa !9
  store i32 %127, ptr %16, align 4, !tbaa !9
  %128 = load ptr, ptr %5, align 8, !tbaa !5
  %129 = load i32, ptr %9, align 4, !tbaa !9
  %130 = load ptr, ptr %6, align 8, !tbaa !5
  %131 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN17RigidBodyDynamics5jcalcERNS_5ModelEjRKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_(ptr noundef nonnull align 8 dereferenceable(872) %128, i32 noundef %129, ptr noundef nonnull align 8 dereferenceable(16) %130, ptr noundef nonnull align 8 dereferenceable(16) %131)
  %132 = load i32, ptr %16, align 4, !tbaa !9
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %177

134:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %18) #6
  %135 = load ptr, ptr %5, align 8, !tbaa !5
  %136 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %135, i32 0, i32 34
  %137 = load i32, ptr %9, align 4, !tbaa !9
  %138 = zext i32 %137 to i64
  %139 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %136, i64 noundef %138) #6
  %140 = load ptr, ptr %5, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %140, i32 0, i32 8
  %142 = load i32, ptr %16, align 4, !tbaa !9
  %143 = zext i32 %142 to i64
  %144 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %141, i64 noundef %143) #6
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform5applyERK15SpatialVector_t(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %18, ptr noundef nonnull align 8 dereferenceable(96) %139, ptr noundef nonnull align 16 dereferenceable(48) %144)
  %145 = load ptr, ptr %5, align 8, !tbaa !5
  %146 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %145, i32 0, i32 12
  %147 = load i32, ptr %9, align 4, !tbaa !9
  %148 = zext i32 %147 to i64
  %149 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %148) #6
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp") align 8 %17, ptr noundef nonnull align 1 dereferenceable(1) %18, ptr noundef nonnull align 1 dereferenceable(1) %149)
  %150 = load ptr, ptr %5, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %150, i32 0, i32 8
  %152 = load i32, ptr %9, align 4, !tbaa !9
  %153 = zext i32 %152 to i64
  %154 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %151, i64 noundef %153) #6
  %155 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %154, ptr noundef nonnull align 1 dereferenceable(1) %17)
  call void @llvm.lifetime.end.p0(i64 48, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #6
  %156 = load ptr, ptr %5, align 8, !tbaa !5
  %157 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %156, i32 0, i32 13
  %158 = load i32, ptr %9, align 4, !tbaa !9
  %159 = zext i32 %158 to i64
  %160 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %157, i64 noundef %159) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %20) #6
  %161 = load ptr, ptr %5, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %161, i32 0, i32 8
  %163 = load i32, ptr %9, align 4, !tbaa !9
  %164 = zext i32 %163 to i64
  %165 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %162, i64 noundef %164) #6
  %166 = load ptr, ptr %5, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %166, i32 0, i32 12
  %168 = load i32, ptr %9, align 4, !tbaa !9
  %169 = zext i32 %168 to i64
  %170 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %167, i64 noundef %169) #6
  call void @_ZN17RigidBodyDynamics4Math6crossmERK15SpatialVector_tS3_(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %20, ptr noundef nonnull align 16 dereferenceable(48) %165, ptr noundef nonnull align 16 dereferenceable(48) %170)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp") align 8 %19, ptr noundef nonnull align 1 dereferenceable(1) %160, ptr noundef nonnull align 1 dereferenceable(1) %20)
  %171 = load ptr, ptr %5, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %171, i32 0, i32 23
  %173 = load i32, ptr %9, align 4, !tbaa !9
  %174 = zext i32 %173 to i64
  %175 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %172, i64 noundef %174) #6
  %176 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %175, ptr noundef nonnull align 1 dereferenceable(1) %19)
  call void @llvm.lifetime.end.p0(i64 48, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #6
  br label %210

177:                                              ; preds = %121
  %178 = load ptr, ptr %5, align 8, !tbaa !5
  %179 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %178, i32 0, i32 12
  %180 = load i32, ptr %9, align 4, !tbaa !9
  %181 = zext i32 %180 to i64
  %182 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %179, i64 noundef %181) #6
  %183 = load ptr, ptr %5, align 8, !tbaa !5
  %184 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %183, i32 0, i32 8
  %185 = load i32, ptr %9, align 4, !tbaa !9
  %186 = zext i32 %185 to i64
  %187 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %184, i64 noundef %186) #6
  %188 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSERKS_(ptr noundef nonnull align 16 dereferenceable(48) %187, ptr noundef nonnull align 16 dereferenceable(48) %182)
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #6
  %189 = load ptr, ptr %5, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %189, i32 0, i32 13
  %191 = load i32, ptr %9, align 4, !tbaa !9
  %192 = zext i32 %191 to i64
  %193 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %190, i64 noundef %192) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %22) #6
  %194 = load ptr, ptr %5, align 8, !tbaa !5
  %195 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %194, i32 0, i32 8
  %196 = load i32, ptr %9, align 4, !tbaa !9
  %197 = zext i32 %196 to i64
  %198 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %195, i64 noundef %197) #6
  %199 = load ptr, ptr %5, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %199, i32 0, i32 12
  %201 = load i32, ptr %9, align 4, !tbaa !9
  %202 = zext i32 %201 to i64
  %203 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %200, i64 noundef %202) #6
  call void @_ZN17RigidBodyDynamics4Math6crossmERK15SpatialVector_tS3_(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %22, ptr noundef nonnull align 16 dereferenceable(48) %198, ptr noundef nonnull align 16 dereferenceable(48) %203)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp") align 8 %21, ptr noundef nonnull align 1 dereferenceable(1) %193, ptr noundef nonnull align 1 dereferenceable(1) %22)
  %204 = load ptr, ptr %5, align 8, !tbaa !5
  %205 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %204, i32 0, i32 23
  %206 = load i32, ptr %9, align 4, !tbaa !9
  %207 = zext i32 %206 to i64
  %208 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %205, i64 noundef %207) #6
  %209 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %208, ptr noundef nonnull align 1 dereferenceable(1) %21)
  call void @llvm.lifetime.end.p0(i64 48, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #6
  br label %210

210:                                              ; preds = %177, %134
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %211

211:                                              ; preds = %210
  %212 = load i32, ptr %9, align 4, !tbaa !9
  %213 = add i32 %212, 1
  store i32 %213, ptr %9, align 4, !tbaa !9
  br label %114, !llvm.loop !92

214:                                              ; preds = %114
  br label %215

215:                                              ; preds = %214, %110
  %216 = load ptr, ptr %8, align 8, !tbaa !5
  %217 = icmp ne ptr %216, null
  br i1 %217, label %218, label %406

218:                                              ; preds = %215
  store i32 1, ptr %9, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %402, %218
  %220 = load i32, ptr %9, align 4, !tbaa !9
  %221 = zext i32 %220 to i64
  %222 = load ptr, ptr %5, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %222, i32 0, i32 38
  %224 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %223) #6
  %225 = icmp ult i64 %221, %224
  br i1 %225, label %226, label %405

226:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %227 = load ptr, ptr %5, align 8, !tbaa !5
  %228 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %227, i32 0, i32 10
  %229 = load i32, ptr %9, align 4, !tbaa !9
  %230 = zext i32 %229 to i64
  %231 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %228, i64 noundef %230) #6
  %232 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %231, i32 0, i32 3
  %233 = load i32, ptr %232, align 8, !tbaa !93
  store i32 %233, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  %234 = load ptr, ptr %5, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %234, i32 0, i32 0
  %236 = load i32, ptr %9, align 4, !tbaa !9
  %237 = zext i32 %236 to i64
  %238 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %235, i64 noundef %237) #6
  %239 = load i32, ptr %238, align 4, !tbaa !9
  store i32 %239, ptr %24, align 4, !tbaa !9
  %240 = load i32, ptr %24, align 4, !tbaa !9
  %241 = icmp ne i32 %240, 0
  br i1 %241, label %242, label %264

242:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %26) #6
  %243 = load ptr, ptr %5, align 8, !tbaa !5
  %244 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %243, i32 0, i32 34
  %245 = load i32, ptr %9, align 4, !tbaa !9
  %246 = zext i32 %245 to i64
  %247 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %244, i64 noundef %246) #6
  %248 = load ptr, ptr %5, align 8, !tbaa !5
  %249 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %248, i32 0, i32 9
  %250 = load i32, ptr %24, align 4, !tbaa !9
  %251 = zext i32 %250 to i64
  %252 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef %251) #6
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform5applyERK15SpatialVector_t(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %26, ptr noundef nonnull align 8 dereferenceable(96) %247, ptr noundef nonnull align 16 dereferenceable(48) %252)
  %253 = load ptr, ptr %5, align 8, !tbaa !5
  %254 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %253, i32 0, i32 23
  %255 = load i32, ptr %9, align 4, !tbaa !9
  %256 = zext i32 %255 to i64
  %257 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %254, i64 noundef %256) #6
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp") align 8 %25, ptr noundef nonnull align 1 dereferenceable(1) %26, ptr noundef nonnull align 1 dereferenceable(1) %257)
  %258 = load ptr, ptr %5, align 8, !tbaa !5
  %259 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %258, i32 0, i32 9
  %260 = load i32, ptr %9, align 4, !tbaa !9
  %261 = zext i32 %260 to i64
  %262 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %259, i64 noundef %261) #6
  %263 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %262, ptr noundef nonnull align 1 dereferenceable(1) %25)
  call void @llvm.lifetime.end.p0(i64 48, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #6
  br label %276

264:                                              ; preds = %226
  %265 = load ptr, ptr %5, align 8, !tbaa !5
  %266 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %265, i32 0, i32 23
  %267 = load i32, ptr %9, align 4, !tbaa !9
  %268 = zext i32 %267 to i64
  %269 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %266, i64 noundef %268) #6
  %270 = load ptr, ptr %5, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %270, i32 0, i32 9
  %272 = load i32, ptr %9, align 4, !tbaa !9
  %273 = zext i32 %272 to i64
  %274 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %271, i64 noundef %273) #6
  %275 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSERKS_(ptr noundef nonnull align 16 dereferenceable(48) %274, ptr noundef nonnull align 16 dereferenceable(48) %269)
  br label %276

276:                                              ; preds = %264, %242
  %277 = load ptr, ptr %5, align 8, !tbaa !5
  %278 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %277, i32 0, i32 10
  %279 = load i32, ptr %9, align 4, !tbaa !9
  %280 = zext i32 %279 to i64
  %281 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %278, i64 noundef %280) #6
  %282 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %281, i32 0, i32 1
  %283 = load i32, ptr %282, align 8, !tbaa !96
  %284 = icmp ne i32 %283, 21
  br i1 %284, label %285, label %362

285:                                              ; preds = %276
  %286 = load ptr, ptr %5, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %286, i32 0, i32 10
  %288 = load i32, ptr %9, align 4, !tbaa !9
  %289 = zext i32 %288 to i64
  %290 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %287, i64 noundef %289) #6
  %291 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %290, i32 0, i32 2
  %292 = load i32, ptr %291, align 4, !tbaa !97
  %293 = icmp eq i32 %292, 1
  br i1 %293, label %294, label %315

294:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 48, ptr %27) #6
  %295 = load ptr, ptr %5, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %295, i32 0, i32 9
  %297 = load i32, ptr %9, align 4, !tbaa !9
  %298 = zext i32 %297 to i64
  %299 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %296, i64 noundef %298) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #6
  %300 = load ptr, ptr %5, align 8, !tbaa !5
  %301 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %300, i32 0, i32 11
  %302 = load i32, ptr %9, align 4, !tbaa !9
  %303 = zext i32 %302 to i64
  %304 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %301, i64 noundef %303) #6
  %305 = load ptr, ptr %8, align 8, !tbaa !5
  %306 = load i32, ptr %23, align 4, !tbaa !9
  %307 = zext i32 %306 to i64
  %308 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %305, i64 noundef %307)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmlIdEEKNS_13CwiseBinaryOpINS_8internal17scalar_product_opIdNS6_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdS9_NS7_IdS9_EEEEEE5valueEE4typeEEEKS2_KNS6_19plain_constant_typeIS2_SE_E4typeEEERKS9_(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.120") align 8 %28, ptr noundef nonnull align 1 dereferenceable(1) %304, ptr noundef nonnull align 8 dereferenceable(8) %308)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIdEES9_EEEEEEKNS5_INS6_13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEES9_KSI_EERKNS0_ISI_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.114") align 8 %27, ptr noundef nonnull align 1 dereferenceable(1) %299, ptr noundef nonnull align 1 dereferenceable(1) %28)
  %309 = load ptr, ptr %5, align 8, !tbaa !5
  %310 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %309, i32 0, i32 9
  %311 = load i32, ptr %9, align 4, !tbaa !9
  %312 = zext i32 %311 to i64
  %313 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %310, i64 noundef %312) #6
  %314 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS2_INS3_17scalar_product_opIddEES8_KNS1_14CwiseNullaryOpINS3_18scalar_constant_opIdEES8_EEEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %313, ptr noundef nonnull align 1 dereferenceable(1) %27)
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %27) #6
  br label %361

315:                                              ; preds = %285
  %316 = load ptr, ptr %5, align 8, !tbaa !5
  %317 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %316, i32 0, i32 10
  %318 = load i32, ptr %9, align 4, !tbaa !9
  %319 = zext i32 %318 to i64
  %320 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %317, i64 noundef %319) #6
  %321 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %320, i32 0, i32 2
  %322 = load i32, ptr %321, align 4, !tbaa !97
  %323 = icmp eq i32 %322, 3
  br i1 %323, label %324, label %360

324:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #6
  %325 = load ptr, ptr %8, align 8, !tbaa !5
  %326 = load i32, ptr %23, align 4, !tbaa !9
  %327 = zext i32 %326 to i64
  %328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %325, i64 noundef %327)
  %329 = load ptr, ptr %8, align 8, !tbaa !5
  %330 = load i32, ptr %23, align 4, !tbaa !9
  %331 = add i32 %330, 1
  %332 = zext i32 %331 to i64
  %333 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %329, i64 noundef %332)
  %334 = load ptr, ptr %8, align 8, !tbaa !5
  %335 = load i32, ptr %23, align 4, !tbaa !9
  %336 = add i32 %335, 2
  %337 = zext i32 %336 to i64
  %338 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %334, i64 noundef %337)
  call void @_ZN9Vector3_tC2ERKdS1_S1_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(8) %328, ptr noundef nonnull align 8 dereferenceable(8) %333, ptr noundef nonnull align 8 dereferenceable(8) %338)
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #6
  %339 = load ptr, ptr %5, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %339, i32 0, i32 9
  %341 = load i32, ptr %9, align 4, !tbaa !9
  %342 = zext i32 %341 to i64
  %343 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %340, i64 noundef %342) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #6
  %344 = load ptr, ptr %5, align 8, !tbaa !5
  %345 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %344, i32 0, i32 17
  %346 = load i32, ptr %9, align 4, !tbaa !9
  %347 = zext i32 %346 to i64
  %348 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %345, i64 noundef %347) #6
  %349 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi1ELi0ELi3ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %348, ptr noundef nonnull align 1 dereferenceable(1) %29)
  %350 = getelementptr inbounds { ptr, ptr }, ptr %31, i32 0, i32 0
  %351 = extractvalue { ptr, ptr } %349, 0
  store ptr %351, ptr %350, align 8
  %352 = getelementptr inbounds { ptr, ptr }, ptr %31, i32 0, i32 1
  %353 = extractvalue { ptr, ptr } %349, 1
  store ptr %353, ptr %352, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLi6ELi3ELi0ELi6ELi3EEENS1_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS2_KSD_EERKNS0_ISD_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.132") align 8 %30, ptr noundef nonnull align 1 dereferenceable(1) %343, ptr noundef nonnull align 1 dereferenceable(1) %31)
  %354 = load ptr, ptr %5, align 8, !tbaa !5
  %355 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %354, i32 0, i32 9
  %356 = load i32, ptr %9, align 4, !tbaa !9
  %357 = zext i32 %356 to i64
  %358 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %357) #6
  %359 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi3ELi0ELi6ELi3EEENS6_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %358, ptr noundef nonnull align 1 dereferenceable(1) %30)
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #6
  br label %360

360:                                              ; preds = %324, %315
  br label %361

361:                                              ; preds = %360, %294
  br label %401

362:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  %363 = load ptr, ptr %5, align 8, !tbaa !5
  %364 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %363, i32 0, i32 10
  %365 = load i32, ptr %9, align 4, !tbaa !9
  %366 = zext i32 %365 to i64
  %367 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %364, i64 noundef %366) #6
  %368 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %367, i32 0, i32 4
  %369 = load i32, ptr %368, align 4, !tbaa !98
  store i32 %369, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %370 = load ptr, ptr %5, align 8, !tbaa !5
  %371 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %370, i32 0, i32 22
  %372 = load i32, ptr %32, align 4, !tbaa !9
  %373 = zext i32 %372 to i64
  %374 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %371, i64 noundef %373) #6
  %375 = load ptr, ptr %374, align 8, !tbaa !5
  store ptr %375, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %376 = load ptr, ptr %33, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %376, i32 0, i32 1
  %378 = load i32, ptr %377, align 8, !tbaa !99
  store i32 %378, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 80, ptr %35) #6
  %379 = load ptr, ptr %5, align 8, !tbaa !5
  %380 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %379, i32 0, i32 9
  %381 = load i32, ptr %9, align 4, !tbaa !9
  %382 = zext i32 %381 to i64
  %383 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %380, i64 noundef %382) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr %36) #6
  %384 = load ptr, ptr %5, align 8, !tbaa !5
  %385 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %384, i32 0, i32 22
  %386 = load i32, ptr %32, align 4, !tbaa !9
  %387 = zext i32 %386 to i64
  %388 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %385, i64 noundef %387) #6
  %389 = load ptr, ptr %388, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %389, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 56, ptr %37) #6
  %391 = load ptr, ptr %8, align 8, !tbaa !5
  %392 = load i32, ptr %23, align 4, !tbaa !9
  %393 = zext i32 %392 to i64
  %394 = load i32, ptr %34, align 4, !tbaa !9
  call void @_ZNK5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE5blockIjiEEKNS3_18ConstFixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block") align 8 %37, ptr noundef nonnull align 1 dereferenceable(1) %391, i64 noundef %393, i64 noundef 0, i32 noundef %394, i32 noundef 1)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS_5BlockIKNS1_IdLin1ELi1ELi0ELin1ELi1EEELin1ELin1ELb0EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_ISA_EE(ptr dead_on_unwind writable sret(%"class.Eigen::Product.168") align 8 %36, ptr noundef nonnull align 1 dereferenceable(1) %390, ptr noundef nonnull align 1 dereferenceable(1) %37)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLin1ELin1ELi0ELin1ELin1EEENS_5BlockIKNS1_IdLin1ELi1ELi0ELin1ELi1EEELin1ELin1ELb0EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSD_6traitsIT_E6ScalarEEEKS2_KSG_EERKNS0_ISG_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.162") align 8 %35, ptr noundef nonnull align 1 dereferenceable(1) %383, ptr noundef nonnull align 1 dereferenceable(1) %36)
  %395 = load ptr, ptr %5, align 8, !tbaa !5
  %396 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %395, i32 0, i32 9
  %397 = load i32, ptr %9, align 4, !tbaa !9
  %398 = zext i32 %397 to i64
  %399 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %396, i64 noundef %398) #6
  %400 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLin1ELin1ELi0ELin1ELin1EEENS1_5BlockIKNS6_IdLin1ELi1ELi0ELin1ELi1EEELin1ELin1ELb0EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %399, ptr noundef nonnull align 1 dereferenceable(1) %35)
  call void @llvm.lifetime.end.p0(i64 56, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  br label %401

401:                                              ; preds = %362, %361
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %402

402:                                              ; preds = %401
  %403 = load i32, ptr %9, align 4, !tbaa !9
  %404 = add i32 %403, 1
  store i32 %404, ptr %9, align 4, !tbaa !9
  br label %219, !llvm.loop !110

405:                                              ; preds = %219
  br label %406

406:                                              ; preds = %405, %215
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  ret void

407:                                              ; preds = %108
  %408 = load ptr, ptr %13, align 8
  %409 = load i32, ptr %14, align 4
  %410 = insertvalue { ptr, i32 } poison, ptr %408, 0
  %411 = insertvalue { ptr, i32 } %410, i32 %409, 1
  resume { ptr, i32 } %411
}

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }
%class.Matrix3_t = type { %"class.Eigen::Matrix.100" }
%"class.Eigen::Matrix.100" = type { %"class.Eigen::PlainObjectBase.101" }
%"class.Eigen::PlainObjectBase.101" = type { %"class.Eigen::DenseStorage.108" }
%"class.Eigen::DenseStorage.108" = type { %"struct.Eigen::internal::plain_array.109" }
%"struct.Eigen::internal::plain_array.109" = type { [9 x double] }
%class.Vector3_t = type { %"class.Eigen::Matrix" }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%class.SpatialVector_t = type { %"class.Eigen::Matrix.90" }
%"class.Eigen::Matrix.90" = type { %"class.Eigen::PlainObjectBase.91" }
%"class.Eigen::PlainObjectBase.91" = type { %"class.Eigen::DenseStorage.98" }
%"class.Eigen::DenseStorage.98" = type { %"struct.Eigen::internal::plain_array.99" }
%"struct.Eigen::internal::plain_array.99" = type { [6 x double] }
%"class.Eigen::CwiseBinaryOp" = type <{ ptr, ptr, [8 x i8] }>
%"class.Eigen::CwiseBinaryOp.114" = type <{ ptr, %"class.Eigen::CwiseBinaryOp.120", [8 x i8] }>
%"class.Eigen::CwiseBinaryOp.120" = type <{ ptr, %"class.Eigen::CwiseNullaryOp", [8 x i8] }>
%"class.Eigen::CwiseNullaryOp" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%"class.Eigen::CwiseBinaryOp.132" = type <{ ptr, %"class.Eigen::Product", [8 x i8] }>
%"class.Eigen::Product" = type { ptr, ptr }
%"class.Eigen::CwiseBinaryOp.162" = type <{ ptr, %"class.Eigen::Product.168", [8 x i8] }>
%"class.Eigen::Product.168" = type { ptr, %"class.Eigen::Block" }
%"class.Eigen::Block" = type { %"class.Eigen::BlockImpl" }
%"class.Eigen::BlockImpl" = type { %"class.Eigen::internal::BlockImpl_dense" }
%"class.Eigen::internal::BlockImpl_dense" = type { %"class.Eigen::MapBase", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase" = type { ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic" }
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"class.Eigen::Matrix.57" = type { %"class.Eigen::PlainObjectBase.58" }
%"class.Eigen::PlainObjectBase.58" = type { %"class.Eigen::DenseStorage.65" }
%"class.Eigen::DenseStorage.65" = type { ptr, i64 }
%"class.Eigen::CwiseNullaryOp.181" = type { %"class.Eigen::internal::variable_if_dynamic", [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }

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

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

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

declare void @_ZN17RigidBodyDynamics5jcalcERNS_5ModelEjRKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_(ptr noundef nonnull align 8 dereferenceable(872), i32 noundef, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #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 #1 align 2

; 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

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

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

; Function Attrs: mustprogress 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 uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseBinaryOp") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #5 align 2

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

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

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

; 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 #5

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE5blockIjiEEKNS3_18ConstFixedBlockXprIXsr8internal15get_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 #5 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.Eigen::Matrix.57", align 8
  %6 = alloca %"class.Eigen::CwiseNullaryOp.181", align 8
  %7 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %8 = alloca %"class.Eigen::CwiseBinaryOp", align 8
  %9 = alloca %class.SpatialVector_t, align 16
  %10 = alloca %"class.Eigen::CwiseBinaryOp", align 8
  %11 = alloca %class.SpatialVector_t, align 16
  %12 = alloca %"class.Eigen::CwiseBinaryOp", align 8
  %13 = alloca %class.SpatialVector_t, align 16
  %14 = alloca %"class.Eigen::CwiseBinaryOp", align 8
  %15 = alloca %class.SpatialVector_t, align 16
  %16 = alloca %"class.Eigen::CwiseBinaryOp.114", align 8
  %17 = alloca %"class.Eigen::CwiseBinaryOp.120", align 8
  %18 = alloca %class.Vector3_t, align 8
  %19 = alloca %"class.Eigen::CwiseBinaryOp.132", align 8
  %20 = alloca %"class.Eigen::Product", align 8
  %21 = alloca %"class.Eigen::CwiseBinaryOp.162", align 8
  %22 = alloca %"class.Eigen::Product.168", align 8
  %23 = alloca %"class.Eigen::Block", align 8
  %.not = icmp eq ptr %1, null
  br i1 %.not, label %.loopexit143, label %.preheader142

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

.lr.ph:                                           ; preds = %.preheader142
  %27 = getelementptr inbounds i8, ptr %0, i64 76
  %28 = getelementptr inbounds i8, ptr %0, i64 720
  %29 = getelementptr inbounds i8, ptr %0, i64 744
  br label %30

30:                                               ; preds = %.lr.ph, %52
  %31 = phi i64 [ 1, %.lr.ph ], [ %54, %52 ]
  %.0144 = phi i32 [ 1, %.lr.ph ], [ %53, %52 ]
  %32 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %31) #6
  %33 = load i32, ptr %32, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #6
  %34 = load i32, ptr %27, align 4, !tbaa !9
  %35 = zext i32 %34 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.181") align 8 %6, i64 noundef %35)
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKT_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(24) %6)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #6
  invoke void @_ZN17RigidBodyDynamics5jcalcERNS_5ModelEjRKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_(ptr noundef nonnull align 8 dereferenceable(872) %0, i32 noundef %.0144, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %5)
          to label %36 unwind label %44

36:                                               ; preds = %30
  %.not138 = icmp eq i32 %33, 0
  br i1 %.not138, label %48, label %37

37:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7) #6
  %38 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %31) #6
  %39 = zext i32 %33 to i64
  %40 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %39) #6
  invoke void @_ZNK17RigidBodyDynamics4Math16SpatialTransformmlERKS1_(ptr dead_on_unwind nonnull writable sret(%"struct.RigidBodyDynamics::Math::SpatialTransform") align 8 %7, ptr noundef nonnull align 8 dereferenceable(96) %38, ptr noundef nonnull align 8 dereferenceable(96) %40)
          to label %41 unwind label %46

41:                                               ; preds = %37
  %42 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %31) #6
  %43 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN17RigidBodyDynamics4Math16SpatialTransformaSEOS1_(ptr noundef nonnull align 8 dereferenceable(96) %42, ptr noundef nonnull align 8 dereferenceable(96) %7) #6
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #6
  br label %52

44:                                               ; preds = %48, %30
  %45 = landingpad { ptr, i32 }
          cleanup
  br label %57

46:                                               ; preds = %37
  %47 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) #6
  br label %57

48:                                               ; preds = %36
  %49 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %28, i64 noundef %31) #6
  %50 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %31) #6
  %51 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN17RigidBodyDynamics4Math16SpatialTransformaSERKS1_(ptr noundef nonnull align 8 dereferenceable(96) %50, ptr noundef nonnull align 8 dereferenceable(96) %49)
          to label %52 unwind label %44

52:                                               ; preds = %48, %41
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  %53 = add i32 %.0144, 1
  %54 = zext i32 %53 to i64
  %55 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %24) #6
  %56 = icmp ugt i64 %55, %54
  br i1 %56, label %30, label %.loopexit143, !llvm.loop !89

57:                                               ; preds = %46, %44
  %.pn = phi { ptr, i32 } [ %47, %46 ], [ %45, %44 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  resume { ptr, i32 } %.pn

.loopexit143:                                     ; preds = %52, %.preheader142, %4
  %.not133 = icmp eq ptr %2, null
  br i1 %.not133, label %.loopexit141, label %.preheader140

.preheader140:                                    ; preds = %.loopexit143
  %58 = getelementptr inbounds i8, ptr %0, i64 800
  %59 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %58) #6
  %60 = icmp ugt i64 %59, 1
  br i1 %60, label %.lr.ph146, label %.loopexit141

.lr.ph146:                                        ; preds = %.preheader140
  %61 = getelementptr inbounds i8, ptr %0, i64 720
  %62 = getelementptr inbounds i8, ptr %0, i64 112
  %63 = getelementptr inbounds i8, ptr %0, i64 208
  %64 = getelementptr inbounds i8, ptr %0, i64 232
  %65 = getelementptr inbounds i8, ptr %0, i64 472
  br label %66

66:                                               ; preds = %.lr.ph146, %91
  %67 = phi i64 [ 1, %.lr.ph146 ], [ %93, %91 ]
  %.1145 = phi i32 [ 1, %.lr.ph146 ], [ %92, %91 ]
  %68 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %67) #6
  %69 = load i32, ptr %68, align 4, !tbaa !5
  call void @_ZN17RigidBodyDynamics5jcalcERNS_5ModelEjRKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_(ptr noundef nonnull align 8 dereferenceable(872) %0, i32 noundef %.1145, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2)
  %.not137 = icmp eq i32 %69, 0
  br i1 %.not137, label %82, label %70

70:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) #6
  %71 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %67) #6
  %72 = zext i32 %69 to i64
  %73 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %72) #6
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform5applyERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %9, ptr noundef nonnull align 8 dereferenceable(96) %71, ptr noundef nonnull align 16 dereferenceable(48) %73)
  %74 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %67) #6
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp") align 8 %8, ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 1 dereferenceable(1) %74)
  %75 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %67) #6
  %76 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %75, ptr noundef nonnull align 1 dereferenceable(1) %8)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #6
  %77 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %67) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %11) #6
  %78 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %67) #6
  %79 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %67) #6
  call void @_ZN17RigidBodyDynamics4Math6crossmERK15SpatialVector_tS3_(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %11, ptr noundef nonnull align 16 dereferenceable(48) %78, ptr noundef nonnull align 16 dereferenceable(48) %79)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp") align 8 %10, ptr noundef nonnull align 1 dereferenceable(1) %77, ptr noundef nonnull align 1 dereferenceable(1) %11)
  %80 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %67) #6
  %81 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %80, ptr noundef nonnull align 1 dereferenceable(1) %10)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  br label %91

82:                                               ; preds = %66
  %83 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %67) #6
  %84 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %67) #6
  %85 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSERKS_(ptr noundef nonnull align 16 dereferenceable(48) %84, ptr noundef nonnull align 16 dereferenceable(48) %83)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #6
  %86 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %67) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %13) #6
  %87 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %67) #6
  %88 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef %67) #6
  call void @_ZN17RigidBodyDynamics4Math6crossmERK15SpatialVector_tS3_(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %13, ptr noundef nonnull align 16 dereferenceable(48) %87, ptr noundef nonnull align 16 dereferenceable(48) %88)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp") align 8 %12, ptr noundef nonnull align 1 dereferenceable(1) %86, ptr noundef nonnull align 1 dereferenceable(1) %13)
  %89 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %67) #6
  %90 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %89, ptr noundef nonnull align 1 dereferenceable(1) %12)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #6
  br label %91

91:                                               ; preds = %82, %70
  %92 = add i32 %.1145, 1
  %93 = zext i32 %92 to i64
  %94 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %58) #6
  %95 = icmp ugt i64 %94, %93
  br i1 %95, label %66, label %.loopexit141, !llvm.loop !91

.loopexit141:                                     ; preds = %91, %.preheader140, %.loopexit143
  %.not134 = icmp eq ptr %3, null
  br i1 %.not134, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %.loopexit141
  %96 = getelementptr inbounds i8, ptr %0, i64 800
  %97 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #6
  %98 = icmp ugt i64 %97, 1
  br i1 %98, label %.lr.ph148, label %.loopexit

.lr.ph148:                                        ; preds = %.preheader
  %99 = getelementptr inbounds i8, ptr %0, i64 160
  %100 = getelementptr inbounds i8, ptr %0, i64 720
  %101 = getelementptr inbounds i8, ptr %0, i64 136
  %102 = getelementptr inbounds i8, ptr %0, i64 472
  %103 = getelementptr inbounds i8, ptr %0, i64 328
  %104 = getelementptr inbounds i8, ptr %20, i64 8
  %105 = getelementptr inbounds i8, ptr %0, i64 184
  %106 = getelementptr inbounds i8, ptr %0, i64 448
  br label %107

107:                                              ; preds = %.lr.ph148, %177
  %108 = phi i64 [ 1, %.lr.ph148 ], [ %179, %177 ]
  %.2147 = phi i32 [ 1, %.lr.ph148 ], [ %178, %177 ]
  %109 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %99, i64 noundef %108) #6
  %110 = getelementptr inbounds i8, ptr %109, i64 16
  %111 = load i32, ptr %110, align 8, !tbaa !92
  %112 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %108) #6
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %.not135 = icmp eq i32 %113, 0
  br i1 %.not135, label %121, label %114

114:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #6
  %115 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef %108) #6
  %116 = zext i32 %113 to i64
  %117 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %116) #6
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform5applyERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %15, ptr noundef nonnull align 8 dereferenceable(96) %115, ptr noundef nonnull align 16 dereferenceable(48) %117)
  %118 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %108) #6
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp") align 8 %14, ptr noundef nonnull align 1 dereferenceable(1) %15, ptr noundef nonnull align 1 dereferenceable(1) %118)
  %119 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %108) #6
  %120 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEES8_EEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %119, ptr noundef nonnull align 1 dereferenceable(1) %14)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #6
  br label %125

121:                                              ; preds = %107
  %122 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %108) #6
  %123 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %108) #6
  %124 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSERKS_(ptr noundef nonnull align 16 dereferenceable(48) %123, ptr noundef nonnull align 16 dereferenceable(48) %122)
  br label %125

125:                                              ; preds = %121, %114
  %126 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %99, i64 noundef %108) #6
  %127 = getelementptr inbounds i8, ptr %126, i64 8
  %128 = load i32, ptr %127, align 8, !tbaa !95
  %.not136 = icmp eq i32 %128, 21
  %129 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %99, i64 noundef %108) #6
  br i1 %.not136, label %162, label %130

130:                                              ; preds = %125
  %131 = getelementptr inbounds i8, ptr %129, i64 12
  %132 = load i32, ptr %131, align 4, !tbaa !96
  %133 = icmp eq i32 %132, 1
  br i1 %133, label %134, label %141

134:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %16) #6
  %135 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %108) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #6
  %136 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %105, i64 noundef %108) #6
  %137 = zext i32 %111 to i64
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %137)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEmlIdEEKNS_13CwiseBinaryOpINS_8internal17scalar_product_opIdNS6_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIdS9_NS7_IdS9_EEEEEE5valueEE4typeEEEKS2_KNS6_19plain_constant_typeIS2_SE_E4typeEEERKS9_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.120") align 8 %17, ptr noundef nonnull align 1 dereferenceable(1) %136, ptr noundef nonnull align 8 dereferenceable(8) %138)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKS2_KNS_14CwiseNullaryOpINS6_18scalar_constant_opIdEES9_EEEEEEKNS5_INS6_13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEES9_KSI_EERKNS0_ISI_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.114") align 8 %16, ptr noundef nonnull align 1 dereferenceable(1) %135, ptr noundef nonnull align 1 dereferenceable(1) %17)
  %139 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %108) #6
  %140 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS2_INS3_17scalar_product_opIddEES8_KNS1_14CwiseNullaryOpINS3_18scalar_constant_opIdEES8_EEEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %139, ptr noundef nonnull align 1 dereferenceable(1) %16)
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #6
  br label %177

141:                                              ; preds = %130
  %142 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %99, i64 noundef %108) #6
  %143 = getelementptr inbounds i8, ptr %142, i64 12
  %144 = load i32, ptr %143, align 4, !tbaa !96
  %145 = icmp eq i32 %144, 3
  br i1 %145, label %146, label %177

146:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #6
  %147 = zext i32 %111 to i64
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %147)
  %149 = add i32 %111, 1
  %150 = zext i32 %149 to i64
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %150)
  %152 = add i32 %111, 2
  %153 = zext i32 %152 to i64
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %153)
  call void @_ZN9Vector3_tC2ERKdS1_S1_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(8) %154)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #6
  %155 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %108) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #6
  %156 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %108) #6
  %157 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEmlINS1_IdLi3ELi1ELi0ELi3ELi1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %156, ptr noundef nonnull align 1 dereferenceable(1) %18)
  %158 = extractvalue { ptr, ptr } %157, 0
  store ptr %158, ptr %20, align 8
  %159 = extractvalue { ptr, ptr } %157, 1
  store ptr %159, ptr %104, align 8
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLi6ELi3ELi0ELi6ELi3EEENS1_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS2_KSD_EERKNS0_ISD_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.132") align 8 %19, ptr noundef nonnull align 1 dereferenceable(1) %155, ptr noundef nonnull align 1 dereferenceable(1) %20)
  %160 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %108) #6
  %161 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLi6ELi3ELi0ELi6ELi3EEENS6_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %160, ptr noundef nonnull align 1 dereferenceable(1) %19)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #6
  br label %177

162:                                              ; preds = %125
  %163 = getelementptr inbounds i8, ptr %129, i64 20
  %164 = load i32, ptr %163, align 4, !tbaa !97
  %165 = zext i32 %164 to i64
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %106, i64 noundef %165) #6
  %167 = load ptr, ptr %166, align 8, !tbaa !98
  %168 = getelementptr inbounds i8, ptr %167, i64 8
  %169 = load i32, ptr %168, align 8, !tbaa !99
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %21) #6
  %170 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %108) #6
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %22) #6
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %106, i64 noundef %165) #6
  %172 = load ptr, ptr %171, align 8, !tbaa !98
  %173 = getelementptr inbounds i8, ptr %172, i64 112
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %23) #6
  %174 = zext i32 %111 to i64
  call void @_ZNK5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE5blockIjiEEKNS3_18ConstFixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block") align 8 %23, ptr noundef nonnull align 1 dereferenceable(1) %3, i64 noundef %174, i64 noundef 0, i32 noundef %169, i32 noundef 1)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS_5BlockIKNS1_IdLin1ELi1ELi0ELin1ELi1EEELin1ELin1ELb0EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_ISA_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Product.168") align 8 %22, ptr noundef nonnull align 1 dereferenceable(1) %173, ptr noundef nonnull align 1 dereferenceable(1) %23)
  call void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEplINS_7ProductINS1_IdLin1ELin1ELi0ELin1ELin1EEENS_5BlockIKNS1_IdLin1ELi1ELi0ELin1ELi1EEELin1ELin1ELb0EEELi0EEEEEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSD_6traitsIT_E6ScalarEEEKS2_KSG_EERKNS0_ISG_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.162") align 8 %21, ptr noundef nonnull align 1 dereferenceable(1) %170, ptr noundef nonnull align 1 dereferenceable(1) %22)
  %175 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %108) #6
  %176 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSIN5Eigen13CwiseBinaryOpINS1_8internal13scalar_sum_opIddEEKNS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEKNS1_7ProductINS6_IdLin1ELin1ELi0ELin1ELin1EEENS1_5BlockIKNS6_IdLin1ELi1ELi0ELin1ELi1EEELin1ELin1ELb0EEELi0EEEEEEERS_RKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(48) %175, ptr noundef nonnull align 1 dereferenceable(1) %21)
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %21) #6
  br label %177

177:                                              ; preds = %134, %146, %141, %162
  %178 = add i32 %.2147, 1
  %179 = zext i32 %178 to i64
  %180 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #6
  %181 = icmp ugt i64 %180, %179
  br i1 %181, label %107, label %.loopexit, !llvm.loop !110

.loopexit:                                        ; preds = %177, %.preheader, %.loopexit141
  ret void
}

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 76}
!10 = !{!"_ZTSN17RigidBodyDynamics5ModelE", !11, i64 0, !11, i64 24, !16, i64 48, !6, i64 72, !6, i64 76, !6, i64 80, !6, 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, !6, 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", !15, i64 0, !15, i64 8, !15, i64 16}
!15 = !{!"any pointer", !7, i64 0}
!16 = !{!"_ZTSSt6vectorIS_IjSaIjEESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!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", !15, i64 0, !15, i64 8, !15, 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", !15, i64 0, !15, i64 8, !15, 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", !15, i64 0, !15, i64 8, !15, 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", !15, i64 0, !15, i64 8, !15, 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", !15, i64 0, !15, i64 8, !15, 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", !15, i64 0, !15, i64 8, !15, 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", !15, i64 0, !15, i64 8, !15, 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", !15, i64 0, !15, i64 8, !15, i64 16}
!62 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !63, i64 0}
!63 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !64, i64 0}
!64 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !15, 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", !15, i64 0, !15, i64 8, !15, 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", !15, i64 0, !15, i64 8, !15, 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", !15, i64 0, !15, i64 8, !15, 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, !15, i64 8, !15, i64 16, !15, i64 24}
!88 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!89 = distinct !{!89, !90}
!90 = !{!"llvm.loop.mustprogress"}
!91 = distinct !{!91, !90}
!92 = !{!93, !6, i64 16}
!93 = !{!"_ZTSN17RigidBodyDynamics5JointE", !15, i64 0, !94, i64 8, !6, i64 12, !6, i64 16, !6, i64 20}
!94 = !{!"_ZTSN17RigidBodyDynamics9JointTypeE", !7, i64 0}
!95 = !{!93, !94, i64 8}
!96 = !{!93, !6, i64 12}
!97 = !{!93, !6, i64 20}
!98 = !{!15, !15, i64 0}
!99 = !{!100, !6, i64 8}
!100 = !{!"_ZTSN17RigidBodyDynamics11CustomJointE", !6, i64 8, !101, i64 16, !107, i64 112, !107, i64 136, !107, i64 160, !62, i64 184, !62, i64 200}
!101 = !{!"_ZTSN17RigidBodyDynamics4Math16SpatialTransformE", !102, i64 0, !20, i64 72}
!102 = !{!"_ZTS9Matrix3_t", !103, i64 0}
!103 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE", !104, i64 0}
!104 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEE", !105, i64 0}
!105 = !{!"_ZTSN5Eigen12DenseStorageIdLi9ELi3ELi3ELi0EEE", !106, i64 0}
!106 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi9ELi0ELi0EEE", !7, i64 0}
!107 = !{!"_ZTSN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEE", !108, i64 0}
!108 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE", !109, i64 0}
!109 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EEE", !15, i64 0, !65, i64 8, !65, i64 16}
!110 = distinct !{!110, !90}


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