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

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

%class.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] }
%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia" = type { double, %class.Vector3_t, double, double, double, double, double, 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.Eigen::Transpose.245" = type { %"class.Eigen::Product.251" }
%"class.Eigen::Product.251" = type { %"class.Eigen::Transpose.258", ptr }
%"class.Eigen::Transpose.258" = type { ptr }
%"class.Eigen::Transpose.266" = type { ptr }
%"class.Eigen::Block.274" = type { %"class.Eigen::BlockImpl.275" }
%"class.Eigen::BlockImpl.275" = type { %"class.Eigen::internal::BlockImpl_dense.276" }
%"class.Eigen::internal::BlockImpl_dense.276" = type { %"class.Eigen::MapBase.base.286", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase.base.286" = type { %"class.Eigen::MapBase.base.285" }
%"class.Eigen::MapBase.base.285" = type <{ ptr, [2 x i8] }>
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"class.Eigen::Block.287" = type { %"class.Eigen::BlockImpl.288" }
%"class.Eigen::BlockImpl.288" = type { %"class.Eigen::internal::BlockImpl_dense.289" }
%"class.Eigen::internal::BlockImpl_dense.289" = type { %"class.Eigen::MapBase.base.299", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase.base.299" = type { %"class.Eigen::MapBase.base.298" }
%"class.Eigen::MapBase.base.298" = type <{ ptr, [2 x i8] }>
%"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::Transpose.300" = type { %"class.Eigen::Product.306" }
%"class.Eigen::Product.306" = type { %"class.Eigen::Transpose.258", ptr }
%"class.Eigen::Transpose.313" = type { ptr }
%"class.Eigen::Block.321" = type { %"class.Eigen::BlockImpl.322" }
%"class.Eigen::BlockImpl.322" = type { %"class.Eigen::internal::BlockImpl_dense.323" }
%"class.Eigen::internal::BlockImpl_dense.323" = type { %"class.Eigen::MapBase.324", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase.324" = type { %"class.Eigen::MapBase.325" }
%"class.Eigen::MapBase.325" = type { ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic" }
%"class.Eigen::Matrix.143" = type { %"class.Eigen::PlainObjectBase.144" }
%"class.Eigen::PlainObjectBase.144" = type { %"class.Eigen::DenseStorage.151" }
%"class.Eigen::DenseStorage.151" = type { %"struct.Eigen::internal::plain_array.152" }
%"struct.Eigen::internal::plain_array.152" = type { [18 x double] }
%"class.Eigen::Product.332" = type { ptr, ptr }
%class.SpatialMatrix_t = type { %"class.Eigen::Matrix.183" }
%"class.Eigen::Matrix.183" = type { %"class.Eigen::PlainObjectBase.184" }
%"class.Eigen::PlainObjectBase.184" = type { %"class.Eigen::DenseStorage.191" }
%"class.Eigen::DenseStorage.191" = type { %"struct.Eigen::internal::plain_array.192" }
%"struct.Eigen::internal::plain_array.192" = type { [36 x double] }
%"class.Eigen::Product.339" = type { %"class.Eigen::Transpose", ptr }
%"class.Eigen::Transpose" = type { ptr }
%"class.Eigen::Block.346" = type { %"class.Eigen::BlockImpl.347" }
%"class.Eigen::BlockImpl.347" = type { %"class.Eigen::internal::BlockImpl_dense.348" }
%"class.Eigen::internal::BlockImpl_dense.348" = type { %"class.Eigen::MapBase.base.358", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase.base.358" = type { %"class.Eigen::MapBase.base.357" }
%"class.Eigen::MapBase.base.357" = type <{ ptr, [2 x i8] }>
%"class.Eigen::Product.193" = type { %"class.Eigen::Transpose", ptr }
%class.Matrix3_t = type { %"class.Eigen::Matrix.104" }
%"class.Eigen::Matrix.104" = type { %"class.Eigen::PlainObjectBase.105" }
%"class.Eigen::PlainObjectBase.105" = type { %"class.Eigen::DenseStorage.112" }
%"class.Eigen::DenseStorage.112" = type { %"struct.Eigen::internal::plain_array.113" }
%"struct.Eigen::internal::plain_array.113" = type { [9 x double] }
%"class.Eigen::Transpose.359" = type { ptr }
%"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 }
%"class.Eigen::Product.367" = type { %"class.Eigen::Transpose", ptr }
%"class.Eigen::Transpose.221" = type { ptr }
%"class.Eigen::Product.374" = type { ptr, ptr }
%"class.Eigen::Product.381" = type { %"class.Eigen::Transpose.221", ptr }
%"class.Eigen::Product.214" = type { %"class.Eigen::Transpose.221", ptr }
%"class.Eigen::Product.388" = type { %"class.Eigen::Transpose.221", ptr }
%"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" }
%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }

@.str = external hidden unnamed_addr constant [59 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [109 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics27CompositeRigidBodyAlgorithmERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb = external hidden unnamed_addr constant [97 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics27CompositeRigidBodyAlgorithmERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, i1 noundef zeroext %3) #3 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia", align 8
  %12 = alloca %"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia", align 8
  %13 = alloca i32, align 4
  %14 = alloca %class.SpatialVector_t, align 16
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %class.SpatialVector_t, align 16
  %18 = alloca %class.Vector3_t, align 8
  %19 = alloca %"class.Eigen::Transpose.245", align 8
  %20 = alloca %"class.Eigen::Product.251", align 8
  %21 = alloca %"class.Eigen::Transpose.258", align 8
  %22 = alloca %"class.Eigen::Transpose.266", align 8
  %23 = alloca %"class.Eigen::Block.274", align 8
  %24 = alloca %"class.Eigen::Block.287", align 8
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %"class.Eigen::Matrix.57", align 8
  %28 = alloca %"class.Eigen::Transpose.300", align 8
  %29 = alloca %"class.Eigen::Product.306", align 8
  %30 = alloca %"class.Eigen::Transpose.258", align 8
  %31 = alloca %"class.Eigen::Transpose.313", align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca %"class.Eigen::Block.321", align 8
  %35 = alloca %"class.Eigen::Block.321", align 8
  %36 = alloca %"class.Eigen::Matrix.143", align 16
  %37 = alloca %"class.Eigen::Product.332", align 8
  %38 = alloca %class.SpatialMatrix_t, align 16
  %39 = alloca %"class.Eigen::Product.339", align 8
  %40 = alloca %"class.Eigen::Transpose", align 8
  %41 = alloca %"class.Eigen::Block.346", align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca %"class.Eigen::Product.332", align 8
  %45 = alloca %class.SpatialMatrix_t, align 16
  %46 = alloca %class.Vector3_t, align 8
  %47 = alloca %"class.Eigen::Product.193", align 8
  %48 = alloca %"class.Eigen::Transpose", align 8
  %49 = alloca %"class.Eigen::Block.287", align 8
  %50 = alloca %"class.Eigen::Transpose.266", align 8
  %51 = alloca %"class.Eigen::Block.274", align 8
  %52 = alloca %class.Matrix3_t, align 8
  %53 = alloca %"class.Eigen::Product.339", align 8
  %54 = alloca %"class.Eigen::Transpose", align 8
  %55 = alloca %"class.Eigen::Block.346", align 8
  %56 = alloca %"class.Eigen::Transpose.359", align 8
  %57 = alloca %"class.Eigen::Block.346", align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca %"class.Eigen::Matrix.153", align 8
  %61 = alloca %"class.Eigen::Product.367", align 8
  %62 = alloca %"class.Eigen::Transpose", align 8
  %63 = alloca %"class.Eigen::Block.321", align 8
  %64 = alloca %"class.Eigen::Transpose.221", align 8
  %65 = alloca %"class.Eigen::Block.321", align 8
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca %"class.Eigen::Matrix.153", align 8
  %69 = alloca %"class.Eigen::Product.374", align 8
  %70 = alloca %class.SpatialMatrix_t, align 16
  %71 = alloca %"class.Eigen::Product.381", align 8
  %72 = alloca %"class.Eigen::Transpose.221", align 8
  %73 = alloca %"class.Eigen::Block.321", align 8
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca %"class.Eigen::Product.374", align 8
  %77 = alloca %class.SpatialMatrix_t, align 16
  %78 = alloca %"class.Eigen::Matrix.153", align 8
  %79 = alloca %"class.Eigen::Product.214", align 8
  %80 = alloca %"class.Eigen::Transpose.221", align 8
  %81 = alloca %"class.Eigen::Block.321", align 8
  %82 = alloca %"class.Eigen::Transpose.221", align 8
  %83 = alloca %"class.Eigen::Block.321", align 8
  %84 = alloca %"class.Eigen::Matrix.153", align 8
  %85 = alloca %"class.Eigen::Product.388", align 8
  %86 = alloca %"class.Eigen::Transpose.221", align 8
  %87 = alloca %"class.Eigen::Block.321", align 8
  %88 = alloca %"class.Eigen::Transpose.221", align 8
  %89 = alloca %"class.Eigen::Block.321", align 8
  %90 = alloca i32, align 4
  %91 = alloca i32, align 4
  %92 = alloca %"class.Eigen::Matrix.153", align 8
  %93 = alloca %"class.Eigen::Product.381", align 8
  %94 = alloca %"class.Eigen::Transpose.221", align 8
  %95 = alloca %"class.Eigen::Block.321", align 8
  %96 = alloca %"class.Eigen::Transpose.221", align 8
  %97 = alloca %"class.Eigen::Block.321", 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
  %98 = zext i1 %3 to i8
  store i8 %98, ptr %8, align 1, !tbaa !9
  %99 = load ptr, ptr %7, align 8, !tbaa !5
  %100 = call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %99)
  %101 = load ptr, ptr %5, align 8, !tbaa !5
  %102 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %101, i32 0, i32 3
  %103 = load i32, ptr %102, align 8, !tbaa !11
  %104 = zext i32 %103 to i64
  %105 = icmp eq i64 %100, %104
  br i1 %105, label %106, label %114

106:                                              ; preds = %4
  %107 = load ptr, ptr %7, align 8, !tbaa !5
  %108 = call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %107)
  %109 = load ptr, ptr %5, align 8, !tbaa !5
  %110 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %109, i32 0, i32 3
  %111 = load i32, ptr %110, align 8, !tbaa !11
  %112 = zext i32 %111 to i64
  %113 = icmp eq i64 %108, %112
  br label %114

114:                                              ; preds = %106, %4
  %115 = phi i1 [ false, %4 ], [ %113, %106 ]
  br i1 %115, label %116, label %117

116:                                              ; preds = %114
  br label %119

117:                                              ; preds = %114
  call void @__assert_fail(ptr noundef @.str, ptr noundef @.str.4, i32 noundef 174, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics27CompositeRigidBodyAlgorithmERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb) #7
  unreachable

118:                                              ; No predecessors!
  br label %119

119:                                              ; preds = %118, %116
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  store i32 1, ptr %9, align 4, !tbaa !91
  br label %120

120:                                              ; preds = %147, %119
  %121 = load i32, ptr %9, align 4, !tbaa !91
  %122 = zext i32 %121 to i64
  %123 = load ptr, ptr %5, align 8, !tbaa !5
  %124 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %123, i32 0, i32 38
  %125 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #8
  %126 = icmp ult i64 %122, %125
  br i1 %126, label %128, label %127

127:                                              ; preds = %120
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  br label %150

128:                                              ; preds = %120
  %129 = load i8, ptr %8, align 1, !tbaa !9, !range !92, !noundef !93
  %130 = trunc i8 %129 to i1
  br i1 %130, label %131, label %135

131:                                              ; preds = %128
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = load i32, ptr %9, align 4, !tbaa !91
  %134 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN17RigidBodyDynamics16jcalc_X_lambda_SERNS_5ModelEjRKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE(ptr noundef nonnull align 8 dereferenceable(872) %132, i32 noundef %133, ptr noundef nonnull align 8 dereferenceable(16) %134)
  br label %135

135:                                              ; preds = %131, %128
  %136 = load ptr, ptr %5, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %136, i32 0, i32 30
  %138 = load i32, ptr %9, align 4, !tbaa !91
  %139 = zext i32 %138 to i64
  %140 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %137, i64 noundef %139) #8
  %141 = load ptr, ptr %5, align 8, !tbaa !5
  %142 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %141, i32 0, i32 31
  %143 = load i32, ptr %9, align 4, !tbaa !91
  %144 = zext i32 %143 to i64
  %145 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %142, i64 noundef %144) #8
  %146 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaaSERKS1_(ptr noundef nonnull align 8 dereferenceable(80) %145, ptr noundef nonnull align 8 dereferenceable(80) %140)
  br label %147

147:                                              ; preds = %135
  %148 = load i32, ptr %9, align 4, !tbaa !91
  %149 = add i32 %148, 1
  store i32 %149, ptr %9, align 4, !tbaa !91
  br label %120, !llvm.loop !94

150:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  %151 = load ptr, ptr %5, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %151, i32 0, i32 38
  %153 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #8
  %154 = sub i64 %153, 1
  %155 = trunc i64 %154 to i32
  store i32 %155, ptr %10, align 4, !tbaa !91
  br label %156

156:                                              ; preds = %1055, %150
  %157 = load i32, ptr %10, align 4, !tbaa !91
  %158 = icmp ugt i32 %157, 0
  br i1 %158, label %160, label %159

159:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  br label %1059

160:                                              ; preds = %156
  %161 = load ptr, ptr %5, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %161, i32 0, i32 0
  %163 = load i32, ptr %10, align 4, !tbaa !91
  %164 = zext i32 %163 to i64
  %165 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %162, i64 noundef %164) #8
  %166 = load i32, ptr %165, align 4, !tbaa !91
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %200

168:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 80, ptr %11) #8
  %169 = load ptr, ptr %5, align 8, !tbaa !5
  %170 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %169, i32 0, i32 31
  %171 = load ptr, ptr %5, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %171, i32 0, i32 0
  %173 = load i32, ptr %10, align 4, !tbaa !91
  %174 = zext i32 %173 to i64
  %175 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %172, i64 noundef %174) #8
  %176 = load i32, ptr %175, align 4, !tbaa !91
  %177 = zext i32 %176 to i64
  %178 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %170, i64 noundef %177) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr %12) #8
  %179 = load ptr, ptr %5, align 8, !tbaa !5
  %180 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %179, i32 0, i32 34
  %181 = load i32, ptr %10, align 4, !tbaa !91
  %182 = zext i32 %181 to i64
  %183 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %180, i64 noundef %182) #8
  %184 = load ptr, ptr %5, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %184, i32 0, i32 31
  %186 = load i32, ptr %10, align 4, !tbaa !91
  %187 = zext i32 %186 to i64
  %188 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %185, i64 noundef %187) #8
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERKNS0_23SpatialRigidBodyInertiaE(ptr dead_on_unwind writable sret(%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia") align 8 %12, ptr noundef nonnull align 8 dereferenceable(96) %183, ptr noundef nonnull align 8 dereferenceable(80) %188)
  call void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaplERKS1_(ptr dead_on_unwind writable sret(%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia") align 8 %11, ptr noundef nonnull align 8 dereferenceable(80) %178, ptr noundef nonnull align 8 dereferenceable(80) %12)
  %189 = load ptr, ptr %5, align 8, !tbaa !5
  %190 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %189, i32 0, i32 31
  %191 = load ptr, ptr %5, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %191, i32 0, i32 0
  %193 = load i32, ptr %10, align 4, !tbaa !91
  %194 = zext i32 %193 to i64
  %195 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %192, i64 noundef %194) #8
  %196 = load i32, ptr %195, align 4, !tbaa !91
  %197 = zext i32 %196 to i64
  %198 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %190, i64 noundef %197) #8
  %199 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaaSEOS1_(ptr noundef nonnull align 8 dereferenceable(80) %198, ptr noundef nonnull align 8 dereferenceable(80) %11) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %11) #8
  br label %200

200:                                              ; preds = %168, %160
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  %201 = load ptr, ptr %5, align 8, !tbaa !5
  %202 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %201, i32 0, i32 10
  %203 = load i32, ptr %10, align 4, !tbaa !91
  %204 = zext i32 %203 to i64
  %205 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %202, i64 noundef %204) #8
  %206 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %205, i32 0, i32 3
  %207 = load i32, ptr %206, align 8, !tbaa !96
  store i32 %207, ptr %13, align 4, !tbaa !91
  %208 = load ptr, ptr %5, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %208, i32 0, i32 10
  %210 = load i32, ptr %10, align 4, !tbaa !91
  %211 = zext i32 %210 to i64
  %212 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %209, i64 noundef %211) #8
  %213 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %212, i32 0, i32 2
  %214 = load i32, ptr %213, align 4, !tbaa !99
  %215 = icmp eq i32 %214, 1
  br i1 %215, label %216, label %448

216:                                              ; preds = %200
  %217 = load ptr, ptr %5, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %217, i32 0, i32 10
  %219 = load i32, ptr %10, align 4, !tbaa !91
  %220 = zext i32 %219 to i64
  %221 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %218, i64 noundef %220) #8
  %222 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %221, i32 0, i32 1
  %223 = load i32, ptr %222, align 8, !tbaa !100
  %224 = icmp ne i32 %223, 21
  br i1 %224, label %225, label %448

225:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 48, ptr %14) #8
  %226 = load ptr, ptr %5, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %226, i32 0, i32 31
  %228 = load i32, ptr %10, align 4, !tbaa !91
  %229 = zext i32 %228 to i64
  %230 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %227, i64 noundef %229) #8
  %231 = load ptr, ptr %5, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %231, i32 0, i32 11
  %233 = load i32, ptr %10, align 4, !tbaa !91
  %234 = zext i32 %233 to i64
  %235 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %232, i64 noundef %234) #8
  call void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiamlERK15SpatialVector_t(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %14, ptr noundef nonnull align 8 dereferenceable(80) %230, ptr noundef nonnull align 16 dereferenceable(48) %235)
  %236 = load ptr, ptr %5, align 8, !tbaa !5
  %237 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %236, i32 0, i32 11
  %238 = load i32, ptr %10, align 4, !tbaa !91
  %239 = zext i32 %238 to i64
  %240 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %237, i64 noundef %239) #8
  %241 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotIS2_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENS6_17scalar_product_opIdSA_EEE10ReturnTypeERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %240, ptr noundef nonnull align 1 dereferenceable(1) %14)
  %242 = load ptr, ptr %7, align 8, !tbaa !5
  %243 = load i32, ptr %13, align 4, !tbaa !91
  %244 = zext i32 %243 to i64
  %245 = load i32, ptr %13, align 4, !tbaa !91
  %246 = zext i32 %245 to i64
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %242, i64 noundef %244, i64 noundef %246)
  store double %241, ptr %247, align 8, !tbaa !101
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  %248 = load i32, ptr %10, align 4, !tbaa !91
  store i32 %248, ptr %15, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %249 = load i32, ptr %13, align 4, !tbaa !91
  store i32 %249, ptr %16, align 4, !tbaa !91
  br label %250

250:                                              ; preds = %446, %225
  %251 = load ptr, ptr %5, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %251, i32 0, i32 0
  %253 = load i32, ptr %15, align 4, !tbaa !91
  %254 = zext i32 %253 to i64
  %255 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %252, i64 noundef %254) #8
  %256 = load i32, ptr %255, align 4, !tbaa !91
  %257 = icmp ne i32 %256, 0
  br i1 %257, label %258, label %447

258:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 48, ptr %17) #8
  %259 = load ptr, ptr %5, align 8, !tbaa !5
  %260 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %259, i32 0, i32 34
  %261 = load i32, ptr %15, align 4, !tbaa !91
  %262 = zext i32 %261 to i64
  %263 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %260, i64 noundef %262) #8
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERK15SpatialVector_t(ptr dead_on_unwind writable sret(%class.SpatialVector_t) align 16 %17, ptr noundef nonnull align 8 dereferenceable(96) %263, ptr noundef nonnull align 16 dereferenceable(48) %14)
  %264 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %14, ptr noundef nonnull align 16 dereferenceable(48) %17) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %17) #8
  %265 = load ptr, ptr %5, align 8, !tbaa !5
  %266 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %265, i32 0, i32 0
  %267 = load i32, ptr %15, align 4, !tbaa !91
  %268 = zext i32 %267 to i64
  %269 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %266, i64 noundef %268) #8
  %270 = load i32, ptr %269, align 4, !tbaa !91
  store i32 %270, ptr %15, align 4, !tbaa !91
  %271 = load ptr, ptr %5, align 8, !tbaa !5
  %272 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %271, i32 0, i32 10
  %273 = load i32, ptr %15, align 4, !tbaa !91
  %274 = zext i32 %273 to i64
  %275 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %272, i64 noundef %274) #8
  %276 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %275, i32 0, i32 3
  %277 = load i32, ptr %276, align 8, !tbaa !96
  store i32 %277, ptr %16, align 4, !tbaa !91
  %278 = load ptr, ptr %5, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %278, i32 0, i32 10
  %280 = load i32, ptr %15, align 4, !tbaa !91
  %281 = zext i32 %280 to i64
  %282 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %279, i64 noundef %281) #8
  %283 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %282, i32 0, i32 1
  %284 = load i32, ptr %283, align 8, !tbaa !100
  %285 = icmp ne i32 %284, 21
  br i1 %285, label %286, label %365

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

295:                                              ; preds = %286
  %296 = load ptr, ptr %5, align 8, !tbaa !5
  %297 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %296, i32 0, i32 11
  %298 = load i32, ptr %15, align 4, !tbaa !91
  %299 = zext i32 %298 to i64
  %300 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %297, i64 noundef %299) #8
  %301 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotIS2_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENS6_17scalar_product_opIdSA_EEE10ReturnTypeERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %14, ptr noundef nonnull align 1 dereferenceable(1) %300)
  %302 = load ptr, ptr %7, align 8, !tbaa !5
  %303 = load i32, ptr %13, align 4, !tbaa !91
  %304 = zext i32 %303 to i64
  %305 = load i32, ptr %16, align 4, !tbaa !91
  %306 = zext i32 %305 to i64
  %307 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %302, i64 noundef %304, i64 noundef %306)
  store double %301, ptr %307, align 8, !tbaa !101
  %308 = load ptr, ptr %7, align 8, !tbaa !5
  %309 = load i32, ptr %13, align 4, !tbaa !91
  %310 = zext i32 %309 to i64
  %311 = load i32, ptr %16, align 4, !tbaa !91
  %312 = zext i32 %311 to i64
  %313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %308, i64 noundef %310, i64 noundef %312)
  %314 = load double, ptr %313, align 8, !tbaa !101
  %315 = load ptr, ptr %7, align 8, !tbaa !5
  %316 = load i32, ptr %16, align 4, !tbaa !91
  %317 = zext i32 %316 to i64
  %318 = load i32, ptr %13, align 4, !tbaa !91
  %319 = zext i32 %318 to i64
  %320 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %315, i64 noundef %317, i64 noundef %319)
  store double %314, ptr %320, align 8, !tbaa !101
  br label %364

321:                                              ; preds = %286
  %322 = load ptr, ptr %5, align 8, !tbaa !5
  %323 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %322, i32 0, i32 10
  %324 = load i32, ptr %15, align 4, !tbaa !91
  %325 = zext i32 %324 to i64
  %326 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %323, i64 noundef %325) #8
  %327 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %326, i32 0, i32 2
  %328 = load i32, ptr %327, align 4, !tbaa !99
  %329 = icmp eq i32 %328, 3
  br i1 %329, label %330, label %363

330:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %331 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %14)
  %332 = getelementptr inbounds %"class.Eigen::Transpose.258", ptr %21, i32 0, i32 0
  store ptr %331, ptr %332, align 8
  %333 = load ptr, ptr %5, align 8, !tbaa !5
  %334 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %333, i32 0, i32 17
  %335 = load i32, ptr %15, align 4, !tbaa !91
  %336 = zext i32 %335 to i64
  %337 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %334, i64 noundef %336) #8
  %338 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEEEmlINS2_IdLi6ELi3ELi0ELi6ELi3EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %21, ptr noundef nonnull align 1 dereferenceable(1) %337)
  %339 = getelementptr inbounds { ptr, ptr }, ptr %20, i32 0, i32 0
  %340 = extractvalue { ptr, ptr } %338, 0
  store ptr %340, ptr %339, align 8
  %341 = getelementptr inbounds { ptr, ptr }, ptr %20, i32 0, i32 1
  %342 = extractvalue { ptr, ptr } %338, 1
  store ptr %342, ptr %341, align 8
  %343 = call { ptr, ptr } @_ZNK5Eigen9DenseBaseINS_7ProductINS_9TransposeINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEENS3_IdLi6ELi3ELi0ELi6ELi3EEELi0EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %20)
  %344 = getelementptr inbounds %"class.Eigen::Transpose.245", ptr %19, i32 0, i32 0
  %345 = getelementptr inbounds { ptr, ptr }, ptr %344, i32 0, i32 0
  %346 = extractvalue { ptr, ptr } %343, 0
  store ptr %346, ptr %345, align 8
  %347 = getelementptr inbounds { ptr, ptr }, ptr %344, i32 0, i32 1
  %348 = extractvalue { ptr, ptr } %343, 1
  store ptr %348, ptr %347, align 8
  call void @_ZN9Vector3_tC2IN5Eigen9TransposeIKNS1_7ProductINS2_INS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEENS4_IdLi6ELi3ELi0ELi6ELi3EEELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 1 dereferenceable(1) %19)
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %349 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %18)
  %350 = getelementptr inbounds %"class.Eigen::Transpose.266", ptr %22, i32 0, i32 0
  store ptr %349, ptr %350, align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr %23) #8
  %351 = load ptr, ptr %7, align 8, !tbaa !5
  %352 = load i32, ptr %13, align 4, !tbaa !91
  %353 = zext i32 %352 to i64
  %354 = load i32, ptr %16, align 4, !tbaa !91
  %355 = zext i32 %354 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi1ELi3EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind writable sret(%"class.Eigen::Block.274") align 8 %23, ptr noundef nonnull align 1 dereferenceable(1) %351, i64 noundef %353, i64 noundef %355)
  %356 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1ELi3ELb0EEaSINS_9TransposeINS1_IdLi3ELi1ELi0ELi3ELi1EEEEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %23, ptr noundef nonnull align 1 dereferenceable(1) %22)
  call void @llvm.lifetime.end.p0(i64 48, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %24) #8
  %357 = load ptr, ptr %7, align 8, !tbaa !5
  %358 = load i32, ptr %16, align 4, !tbaa !91
  %359 = zext i32 %358 to i64
  %360 = load i32, ptr %13, align 4, !tbaa !91
  %361 = zext i32 %360 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi3ELi1EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind writable sret(%"class.Eigen::Block.287") align 8 %24, ptr noundef nonnull align 1 dereferenceable(1) %357, i64 noundef %359, i64 noundef %361)
  %362 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3ELi1ELb0EEaSINS1_IdLi3ELi1ELi0ELi3ELi1EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %24, ptr noundef nonnull align 1 dereferenceable(1) %18)
  call void @llvm.lifetime.end.p0(i64 48, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #8
  br label %363

363:                                              ; preds = %330, %321
  br label %364

364:                                              ; preds = %363, %295
  br label %446

365:                                              ; preds = %258
  %366 = load ptr, ptr %5, align 8, !tbaa !5
  %367 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %366, i32 0, i32 10
  %368 = load i32, ptr %15, align 4, !tbaa !91
  %369 = zext i32 %368 to i64
  %370 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %369) #8
  %371 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %370, i32 0, i32 1
  %372 = load i32, ptr %371, align 8, !tbaa !100
  %373 = icmp eq i32 %372, 21
  br i1 %373, label %374, label %445

374:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %375 = load ptr, ptr %5, align 8, !tbaa !5
  %376 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %375, i32 0, i32 10
  %377 = load i32, ptr %15, align 4, !tbaa !91
  %378 = zext i32 %377 to i64
  %379 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %376, i64 noundef %378) #8
  %380 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %379, i32 0, i32 4
  %381 = load i32, ptr %380, align 4, !tbaa !103
  store i32 %381, ptr %25, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  %382 = load ptr, ptr %5, align 8, !tbaa !5
  %383 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %382, i32 0, i32 22
  %384 = load i32, ptr %25, align 4, !tbaa !91
  %385 = zext i32 %384 to i64
  %386 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %383, i64 noundef %385) #8
  %387 = load ptr, ptr %386, align 8, !tbaa !5
  %388 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %387, i32 0, i32 1
  %389 = load i32, ptr %388, align 8, !tbaa !104
  store i32 %389, ptr %26, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %29) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %390 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %14)
  %391 = getelementptr inbounds %"class.Eigen::Transpose.258", ptr %30, i32 0, i32 0
  store ptr %390, ptr %391, align 8
  %392 = load ptr, ptr %5, align 8, !tbaa !5
  %393 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %392, i32 0, i32 22
  %394 = load i32, ptr %25, align 4, !tbaa !91
  %395 = zext i32 %394 to i64
  %396 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %393, i64 noundef %395) #8
  %397 = load ptr, ptr %396, align 8, !tbaa !5
  %398 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %397, i32 0, i32 3
  %399 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEEEmlINS2_IdLin1ELin1ELi0ELin1ELin1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %30, ptr noundef nonnull align 1 dereferenceable(1) %398)
  %400 = getelementptr inbounds { ptr, ptr }, ptr %29, i32 0, i32 0
  %401 = extractvalue { ptr, ptr } %399, 0
  store ptr %401, ptr %400, align 8
  %402 = getelementptr inbounds { ptr, ptr }, ptr %29, i32 0, i32 1
  %403 = extractvalue { ptr, ptr } %399, 1
  store ptr %403, ptr %402, align 8
  %404 = call { ptr, ptr } @_ZNK5Eigen9DenseBaseINS_7ProductINS_9TransposeINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEENS3_IdLin1ELin1ELi0ELin1ELin1EEELi0EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %29)
  %405 = getelementptr inbounds %"class.Eigen::Transpose.300", ptr %28, i32 0, i32 0
  %406 = getelementptr inbounds { ptr, ptr }, ptr %405, i32 0, i32 0
  %407 = extractvalue { ptr, ptr } %404, 0
  store ptr %407, ptr %406, align 8
  %408 = getelementptr inbounds { ptr, ptr }, ptr %405, i32 0, i32 1
  %409 = extractvalue { ptr, ptr } %404, 1
  store ptr %409, ptr %408, align 8
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_9TransposeIKNS_7ProductINS3_INS0_IdLi6ELi1ELi0ELi6ELi1EEEEENS0_IdLin1ELin1ELi0ELin1ELin1EEELi0EEEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 1 dereferenceable(1) %28)
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %410 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %411 unwind label %431

411:                                              ; preds = %374
  %412 = getelementptr inbounds %"class.Eigen::Transpose.313", ptr %31, i32 0, i32 0
  store ptr %410, ptr %412, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr %34) #8
  %413 = load ptr, ptr %7, align 8, !tbaa !5
  %414 = load i32, ptr %13, align 4, !tbaa !91
  %415 = zext i32 %414 to i64
  %416 = load i32, ptr %16, align 4, !tbaa !91
  %417 = zext i32 %416 to i64
  %418 = load i32, ptr %26, align 4, !tbaa !91
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIijEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %34, ptr noundef nonnull align 1 dereferenceable(1) %413, i64 noundef %415, i64 noundef %417, i32 noundef 1, i32 noundef %418)
          to label %419 unwind label %435

419:                                              ; preds = %411
  %420 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_9TransposeINS1_IdLin1ELi1ELi0ELin1ELi1EEEEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %34, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %421 unwind label %435

421:                                              ; preds = %419
  call void @llvm.lifetime.end.p0(i64 56, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr %35) #8
  %422 = load ptr, ptr %7, align 8, !tbaa !5
  %423 = load i32, ptr %16, align 4, !tbaa !91
  %424 = zext i32 %423 to i64
  %425 = load i32, ptr %13, align 4, !tbaa !91
  %426 = zext i32 %425 to i64
  %427 = load i32, ptr %26, align 4, !tbaa !91
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIjiEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %35, ptr noundef nonnull align 1 dereferenceable(1) %422, i64 noundef %424, i64 noundef %426, i32 noundef %427, i32 noundef 1)
          to label %428 unwind label %440

428:                                              ; preds = %421
  %429 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS1_IdLin1ELi1ELi0ELin1ELi1EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %35, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %430 unwind label %440

430:                                              ; preds = %428
  call void @llvm.lifetime.end.p0(i64 56, ptr %35) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %445

431:                                              ; preds = %374
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %32, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %33, align 4
  br label %439

435:                                              ; preds = %419, %411
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %32, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %34) #8
  br label %439

439:                                              ; preds = %435, %431
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %444

440:                                              ; preds = %428, %421
  %441 = landingpad { ptr, i32 }
          cleanup
  %442 = extractvalue { ptr, i32 } %441, 0
  store ptr %442, ptr %32, align 8
  %443 = extractvalue { ptr, i32 } %441, 1
  store i32 %443, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %35) #8
  br label %444

444:                                              ; preds = %440, %439
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %27) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #8
  br label %1058

445:                                              ; preds = %430, %365
  br label %446

446:                                              ; preds = %445, %364
  br label %250, !llvm.loop !115

447:                                              ; preds = %250
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %14) #8
  br label %1054

448:                                              ; preds = %216, %200
  %449 = load ptr, ptr %5, align 8, !tbaa !5
  %450 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %449, i32 0, i32 10
  %451 = load i32, ptr %10, align 4, !tbaa !91
  %452 = zext i32 %451 to i64
  %453 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %450, i64 noundef %452) #8
  %454 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %453, i32 0, i32 2
  %455 = load i32, ptr %454, align 4, !tbaa !99
  %456 = icmp eq i32 %455, 3
  br i1 %456, label %457, label %694

457:                                              ; preds = %448
  %458 = load ptr, ptr %5, align 8, !tbaa !5
  %459 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %458, i32 0, i32 10
  %460 = load i32, ptr %10, align 4, !tbaa !91
  %461 = zext i32 %460 to i64
  %462 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %459, i64 noundef %461) #8
  %463 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %462, i32 0, i32 1
  %464 = load i32, ptr %463, align 8, !tbaa !100
  %465 = icmp ne i32 %464, 21
  br i1 %465, label %466, label %694

466:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 144, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 288, ptr %38) #8
  %467 = load ptr, ptr %5, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %467, i32 0, i32 31
  %469 = load i32, ptr %10, align 4, !tbaa !91
  %470 = zext i32 %469 to i64
  %471 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %468, i64 noundef %470) #8
  call void @_ZNK17RigidBodyDynamics4Math23SpatialRigidBodyInertia8toMatrixEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %38, ptr noundef nonnull align 8 dereferenceable(80) %471)
  %472 = load ptr, ptr %5, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %472, i32 0, i32 17
  %474 = load i32, ptr %10, align 4, !tbaa !91
  %475 = zext i32 %474 to i64
  %476 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %473, i64 noundef %475) #8
  %477 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi3ELi0ELi6ELi3EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %38, ptr noundef nonnull align 1 dereferenceable(1) %476)
  %478 = getelementptr inbounds { ptr, ptr }, ptr %37, i32 0, i32 0
  %479 = extractvalue { ptr, ptr } %477, 0
  store ptr %479, ptr %478, align 8
  %480 = getelementptr inbounds { ptr, ptr }, ptr %37, i32 0, i32 1
  %481 = extractvalue { ptr, ptr } %477, 1
  store ptr %481, ptr %480, align 8
  call void @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEC2INS_7ProductINS0_IdLi6ELi6ELi0ELi6ELi6EEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %36, ptr noundef nonnull align 1 dereferenceable(1) %37)
  call void @llvm.lifetime.end.p0(i64 288, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %482 = load ptr, ptr %5, align 8, !tbaa !5
  %483 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %482, i32 0, i32 17
  %484 = load i32, ptr %10, align 4, !tbaa !91
  %485 = zext i32 %484 to i64
  %486 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %483, i64 noundef %485) #8
  %487 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %486)
  %488 = getelementptr inbounds %"class.Eigen::Transpose", ptr %40, i32 0, i32 0
  store ptr %487, ptr %488, align 8
  %489 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %40, ptr noundef nonnull align 1 dereferenceable(1) %36)
  %490 = getelementptr inbounds { ptr, ptr }, ptr %39, i32 0, i32 0
  %491 = extractvalue { ptr, ptr } %489, 0
  store ptr %491, ptr %490, align 8
  %492 = getelementptr inbounds { ptr, ptr }, ptr %39, i32 0, i32 1
  %493 = extractvalue { ptr, ptr } %489, 1
  store ptr %493, ptr %492, align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr %41) #8
  %494 = load ptr, ptr %7, align 8, !tbaa !5
  %495 = load i32, ptr %13, align 4, !tbaa !91
  %496 = zext i32 %495 to i64
  %497 = load i32, ptr %13, align 4, !tbaa !91
  %498 = zext i32 %497 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi3ELi3EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind writable sret(%"class.Eigen::Block.346") align 8 %41, ptr noundef nonnull align 1 dereferenceable(1) %494, i64 noundef %496, i64 noundef %498)
  %499 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3ELi3ELb0EEaSINS_7ProductINS_9TransposeINS1_IdLi6ELi3ELi0ELi6ELi3EEEEES7_Li0EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %41, ptr noundef nonnull align 1 dereferenceable(1) %39)
  call void @llvm.lifetime.end.p0(i64 48, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #8
  %500 = load i32, ptr %10, align 4, !tbaa !91
  store i32 %500, ptr %42, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  %501 = load i32, ptr %13, align 4, !tbaa !91
  store i32 %501, ptr %43, align 4, !tbaa !91
  br label %502

502:                                              ; preds = %692, %466
  %503 = load ptr, ptr %5, align 8, !tbaa !5
  %504 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %503, i32 0, i32 0
  %505 = load i32, ptr %42, align 4, !tbaa !91
  %506 = zext i32 %505 to i64
  %507 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %504, i64 noundef %506) #8
  %508 = load i32, ptr %507, align 4, !tbaa !91
  %509 = icmp ne i32 %508, 0
  br i1 %509, label %510, label %693

510:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 288, ptr %45) #8
  %511 = load ptr, ptr %5, align 8, !tbaa !5
  %512 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %511, i32 0, i32 34
  %513 = load i32, ptr %42, align 4, !tbaa !91
  %514 = zext i32 %513 to i64
  %515 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %512, i64 noundef %514) #8
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %45, ptr noundef nonnull align 8 dereferenceable(96) %515)
  %516 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi3ELi0ELi6ELi3EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %45, ptr noundef nonnull align 1 dereferenceable(1) %36)
  %517 = getelementptr inbounds { ptr, ptr }, ptr %44, i32 0, i32 0
  %518 = extractvalue { ptr, ptr } %516, 0
  store ptr %518, ptr %517, align 8
  %519 = getelementptr inbounds { ptr, ptr }, ptr %44, i32 0, i32 1
  %520 = extractvalue { ptr, ptr } %516, 1
  store ptr %520, ptr %519, align 8
  %521 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEaSINS_7ProductINS0_IdLi6ELi6ELi0ELi6ELi6EEES1_Li0EEEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %36, ptr noundef nonnull align 1 dereferenceable(1) %44)
  call void @llvm.lifetime.end.p0(i64 288, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #8
  %522 = load ptr, ptr %5, align 8, !tbaa !5
  %523 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %522, i32 0, i32 0
  %524 = load i32, ptr %42, align 4, !tbaa !91
  %525 = zext i32 %524 to i64
  %526 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %523, i64 noundef %525) #8
  %527 = load i32, ptr %526, align 4, !tbaa !91
  store i32 %527, ptr %42, align 4, !tbaa !91
  %528 = load ptr, ptr %5, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %528, i32 0, i32 10
  %530 = load i32, ptr %42, align 4, !tbaa !91
  %531 = zext i32 %530 to i64
  %532 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %529, i64 noundef %531) #8
  %533 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %532, i32 0, i32 3
  %534 = load i32, ptr %533, align 8, !tbaa !96
  store i32 %534, ptr %43, align 4, !tbaa !91
  %535 = load ptr, ptr %5, align 8, !tbaa !5
  %536 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %535, i32 0, i32 10
  %537 = load i32, ptr %42, align 4, !tbaa !91
  %538 = zext i32 %537 to i64
  %539 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %536, i64 noundef %538) #8
  %540 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %539, i32 0, i32 1
  %541 = load i32, ptr %540, align 8, !tbaa !100
  %542 = icmp ne i32 %541, 21
  br i1 %542, label %543, label %617

543:                                              ; preds = %510
  %544 = load ptr, ptr %5, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %544, i32 0, i32 10
  %546 = load i32, ptr %42, align 4, !tbaa !91
  %547 = zext i32 %546 to i64
  %548 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %545, i64 noundef %547) #8
  %549 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %548, i32 0, i32 2
  %550 = load i32, ptr %549, align 4, !tbaa !99
  %551 = icmp eq i32 %550, 1
  br i1 %551, label %552, label %579

552:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %553 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %36)
  %554 = getelementptr inbounds %"class.Eigen::Transpose", ptr %48, i32 0, i32 0
  store ptr %553, ptr %554, align 8
  %555 = load ptr, ptr %5, align 8, !tbaa !5
  %556 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %555, i32 0, i32 11
  %557 = load i32, ptr %42, align 4, !tbaa !91
  %558 = zext i32 %557 to i64
  %559 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %556, i64 noundef %558) #8
  %560 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %48, ptr noundef nonnull align 1 dereferenceable(1) %559)
  %561 = getelementptr inbounds { ptr, ptr }, ptr %47, i32 0, i32 0
  %562 = extractvalue { ptr, ptr } %560, 0
  store ptr %562, ptr %561, align 8
  %563 = getelementptr inbounds { ptr, ptr }, ptr %47, i32 0, i32 1
  %564 = extractvalue { ptr, ptr } %560, 1
  store ptr %564, ptr %563, align 8
  call void @_ZN9Vector3_tC2IN5Eigen7ProductINS1_9TransposeINS1_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEENS4_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %46, ptr noundef nonnull align 1 dereferenceable(1) %47)
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %49) #8
  %565 = load ptr, ptr %7, align 8, !tbaa !5
  %566 = load i32, ptr %13, align 4, !tbaa !91
  %567 = zext i32 %566 to i64
  %568 = load i32, ptr %43, align 4, !tbaa !91
  %569 = zext i32 %568 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi3ELi1EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind writable sret(%"class.Eigen::Block.287") align 8 %49, ptr noundef nonnull align 1 dereferenceable(1) %565, i64 noundef %567, i64 noundef %569)
  %570 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3ELi1ELb0EEaSINS1_IdLi3ELi1ELi0ELi3ELi1EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %49, ptr noundef nonnull align 1 dereferenceable(1) %46)
  call void @llvm.lifetime.end.p0(i64 48, ptr %49) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %571 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %46)
  %572 = getelementptr inbounds %"class.Eigen::Transpose.266", ptr %50, i32 0, i32 0
  store ptr %571, ptr %572, align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr %51) #8
  %573 = load ptr, ptr %7, align 8, !tbaa !5
  %574 = load i32, ptr %43, align 4, !tbaa !91
  %575 = zext i32 %574 to i64
  %576 = load i32, ptr %13, align 4, !tbaa !91
  %577 = zext i32 %576 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi1ELi3EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind writable sret(%"class.Eigen::Block.274") align 8 %51, ptr noundef nonnull align 1 dereferenceable(1) %573, i64 noundef %575, i64 noundef %577)
  %578 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1ELi3ELb0EEaSINS_9TransposeINS1_IdLi3ELi1ELi0ELi3ELi1EEEEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %51, ptr noundef nonnull align 1 dereferenceable(1) %50)
  call void @llvm.lifetime.end.p0(i64 48, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #8
  br label %616

579:                                              ; preds = %543
  %580 = load ptr, ptr %5, align 8, !tbaa !5
  %581 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %580, i32 0, i32 10
  %582 = load i32, ptr %42, align 4, !tbaa !91
  %583 = zext i32 %582 to i64
  %584 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %581, i64 noundef %583) #8
  %585 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %584, i32 0, i32 2
  %586 = load i32, ptr %585, align 4, !tbaa !99
  %587 = icmp eq i32 %586, 3
  br i1 %587, label %588, label %615

588:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 72, ptr %52) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %589 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %36)
  %590 = getelementptr inbounds %"class.Eigen::Transpose", ptr %54, i32 0, i32 0
  store ptr %589, ptr %590, align 8
  %591 = load ptr, ptr %5, align 8, !tbaa !5
  %592 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %591, i32 0, i32 17
  %593 = load i32, ptr %42, align 4, !tbaa !91
  %594 = zext i32 %593 to i64
  %595 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %592, i64 noundef %594) #8
  %596 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %54, ptr noundef nonnull align 1 dereferenceable(1) %595)
  %597 = getelementptr inbounds { ptr, ptr }, ptr %53, i32 0, i32 0
  %598 = extractvalue { ptr, ptr } %596, 0
  store ptr %598, ptr %597, align 8
  %599 = getelementptr inbounds { ptr, ptr }, ptr %53, i32 0, i32 1
  %600 = extractvalue { ptr, ptr } %596, 1
  store ptr %600, ptr %599, align 8
  call void @_ZN9Matrix3_tC2IN5Eigen7ProductINS1_9TransposeINS1_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEES5_Li0EEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %52, ptr noundef nonnull align 1 dereferenceable(1) %53)
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %55) #8
  %601 = load ptr, ptr %7, align 8, !tbaa !5
  %602 = load i32, ptr %13, align 4, !tbaa !91
  %603 = zext i32 %602 to i64
  %604 = load i32, ptr %43, align 4, !tbaa !91
  %605 = zext i32 %604 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi3ELi3EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind writable sret(%"class.Eigen::Block.346") align 8 %55, ptr noundef nonnull align 1 dereferenceable(1) %601, i64 noundef %603, i64 noundef %605)
  %606 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3ELi3ELb0EEaSINS1_IdLi3ELi3ELi0ELi3ELi3EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %55, ptr noundef nonnull align 1 dereferenceable(1) %52)
  call void @llvm.lifetime.end.p0(i64 48, ptr %55) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %607 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %52)
  %608 = getelementptr inbounds %"class.Eigen::Transpose.359", ptr %56, i32 0, i32 0
  store ptr %607, ptr %608, align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr %57) #8
  %609 = load ptr, ptr %7, align 8, !tbaa !5
  %610 = load i32, ptr %43, align 4, !tbaa !91
  %611 = zext i32 %610 to i64
  %612 = load i32, ptr %13, align 4, !tbaa !91
  %613 = zext i32 %612 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi3ELi3EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind writable sret(%"class.Eigen::Block.346") align 8 %57, ptr noundef nonnull align 1 dereferenceable(1) %609, i64 noundef %611, i64 noundef %613)
  %614 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3ELi3ELb0EEaSINS_9TransposeINS1_IdLi3ELi3ELi0ELi3ELi3EEEEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %57, ptr noundef nonnull align 1 dereferenceable(1) %56)
  call void @llvm.lifetime.end.p0(i64 48, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr %52) #8
  br label %615

615:                                              ; preds = %588, %579
  br label %616

616:                                              ; preds = %615, %552
  br label %692

617:                                              ; preds = %510
  %618 = load ptr, ptr %5, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %618, i32 0, i32 10
  %620 = load i32, ptr %42, align 4, !tbaa !91
  %621 = zext i32 %620 to i64
  %622 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %619, i64 noundef %621) #8
  %623 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %622, i32 0, i32 1
  %624 = load i32, ptr %623, align 8, !tbaa !100
  %625 = icmp eq i32 %624, 21
  br i1 %625, label %626, label %691

626:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  %627 = load ptr, ptr %5, align 8, !tbaa !5
  %628 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %627, i32 0, i32 10
  %629 = load i32, ptr %42, align 4, !tbaa !91
  %630 = zext i32 %629 to i64
  %631 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %628, i64 noundef %630) #8
  %632 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %631, i32 0, i32 4
  %633 = load i32, ptr %632, align 4, !tbaa !103
  store i32 %633, ptr %58, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #8
  %634 = load ptr, ptr %5, align 8, !tbaa !5
  %635 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %634, i32 0, i32 22
  %636 = load i32, ptr %58, align 4, !tbaa !91
  %637 = zext i32 %636 to i64
  %638 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %635, i64 noundef %637) #8
  %639 = load ptr, ptr %638, align 8, !tbaa !5
  %640 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %639, i32 0, i32 1
  %641 = load i32, ptr %640, align 8, !tbaa !104
  store i32 %641, ptr %59, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 24, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %61) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %642 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %36)
  %643 = getelementptr inbounds %"class.Eigen::Transpose", ptr %62, i32 0, i32 0
  store ptr %642, ptr %643, align 8
  %644 = load ptr, ptr %5, align 8, !tbaa !5
  %645 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %644, i32 0, i32 22
  %646 = load i32, ptr %58, align 4, !tbaa !91
  %647 = zext i32 %646 to i64
  %648 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %645, i64 noundef %647) #8
  %649 = load ptr, ptr %648, align 8, !tbaa !5
  %650 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %649, i32 0, i32 3
  %651 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlINS2_IdLin1ELin1ELi0ELin1ELin1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %62, ptr noundef nonnull align 1 dereferenceable(1) %650)
  %652 = getelementptr inbounds { ptr, ptr }, ptr %61, i32 0, i32 0
  %653 = extractvalue { ptr, ptr } %651, 0
  store ptr %653, ptr %652, align 8
  %654 = getelementptr inbounds { ptr, ptr }, ptr %61, i32 0, i32 1
  %655 = extractvalue { ptr, ptr } %651, 1
  store ptr %655, ptr %654, align 8
  call void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_7ProductINS_9TransposeINS0_IdLi6ELi3ELi0ELi6ELi3EEEEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %60, ptr noundef nonnull align 1 dereferenceable(1) %61)
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr %63) #8
  %656 = load ptr, ptr %7, align 8, !tbaa !5
  %657 = load i32, ptr %13, align 4, !tbaa !91
  %658 = zext i32 %657 to i64
  %659 = load i32, ptr %43, align 4, !tbaa !91
  %660 = zext i32 %659 to i64
  %661 = load i32, ptr %59, align 4, !tbaa !91
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIijEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %63, ptr noundef nonnull align 1 dereferenceable(1) %656, i64 noundef %658, i64 noundef %660, i32 noundef 3, i32 noundef %661)
          to label %662 unwind label %677

662:                                              ; preds = %626
  %663 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSIS2_EERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %63, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %664 unwind label %677

664:                                              ; preds = %662
  call void @llvm.lifetime.end.p0(i64 56, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %665 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %666 unwind label %681

666:                                              ; preds = %664
  %667 = getelementptr inbounds %"class.Eigen::Transpose.221", ptr %64, i32 0, i32 0
  store ptr %665, ptr %667, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr %65) #8
  %668 = load ptr, ptr %7, align 8, !tbaa !5
  %669 = load i32, ptr %43, align 4, !tbaa !91
  %670 = zext i32 %669 to i64
  %671 = load i32, ptr %13, align 4, !tbaa !91
  %672 = zext i32 %671 to i64
  %673 = load i32, ptr %59, align 4, !tbaa !91
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIjiEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %65, ptr noundef nonnull align 1 dereferenceable(1) %668, i64 noundef %670, i64 noundef %672, i32 noundef %673, i32 noundef 3)
          to label %674 unwind label %685

674:                                              ; preds = %666
  %675 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_9TransposeIS2_EEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %65, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %676 unwind label %685

676:                                              ; preds = %674
  call void @llvm.lifetime.end.p0(i64 56, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %691

677:                                              ; preds = %662, %626
  %678 = landingpad { ptr, i32 }
          cleanup
  %679 = extractvalue { ptr, i32 } %678, 0
  store ptr %679, ptr %32, align 8
  %680 = extractvalue { ptr, i32 } %678, 1
  store i32 %680, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %63) #8
  br label %690

681:                                              ; preds = %664
  %682 = landingpad { ptr, i32 }
          cleanup
  %683 = extractvalue { ptr, i32 } %682, 0
  store ptr %683, ptr %32, align 8
  %684 = extractvalue { ptr, i32 } %682, 1
  store i32 %684, ptr %33, align 4
  br label %689

685:                                              ; preds = %674, %666
  %686 = landingpad { ptr, i32 }
          cleanup
  %687 = extractvalue { ptr, i32 } %686, 0
  store ptr %687, ptr %32, align 8
  %688 = extractvalue { ptr, i32 } %686, 1
  store i32 %688, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %65) #8
  br label %689

689:                                              ; preds = %685, %681
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %690

690:                                              ; preds = %689, %677
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %36) #8
  br label %1058

691:                                              ; preds = %676, %617
  br label %692

692:                                              ; preds = %691, %616
  br label %502, !llvm.loop !116

693:                                              ; preds = %502
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %36) #8
  br label %1053

694:                                              ; preds = %457, %448
  %695 = load ptr, ptr %5, align 8, !tbaa !5
  %696 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %695, i32 0, i32 10
  %697 = load i32, ptr %10, align 4, !tbaa !91
  %698 = zext i32 %697 to i64
  %699 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %696, i64 noundef %698) #8
  %700 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %699, i32 0, i32 1
  %701 = load i32, ptr %700, align 8, !tbaa !100
  %702 = icmp eq i32 %701, 21
  br i1 %702, label %703, label %1052

703:                                              ; preds = %694
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #8
  %704 = load ptr, ptr %5, align 8, !tbaa !5
  %705 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %704, i32 0, i32 10
  %706 = load i32, ptr %10, align 4, !tbaa !91
  %707 = zext i32 %706 to i64
  %708 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %705, i64 noundef %707) #8
  %709 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %708, i32 0, i32 4
  %710 = load i32, ptr %709, align 4, !tbaa !103
  store i32 %710, ptr %66, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #8
  %711 = load ptr, ptr %5, align 8, !tbaa !5
  %712 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %711, i32 0, i32 22
  %713 = load i32, ptr %66, align 4, !tbaa !91
  %714 = zext i32 %713 to i64
  %715 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %712, i64 noundef %714) #8
  %716 = load ptr, ptr %715, align 8, !tbaa !5
  %717 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %716, i32 0, i32 1
  %718 = load i32, ptr %717, align 8, !tbaa !104
  store i32 %718, ptr %67, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 24, ptr %68) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #8
  call void @llvm.lifetime.start.p0(i64 288, ptr %70) #8
  %719 = load ptr, ptr %5, align 8, !tbaa !5
  %720 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %719, i32 0, i32 31
  %721 = load i32, ptr %10, align 4, !tbaa !91
  %722 = zext i32 %721 to i64
  %723 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %720, i64 noundef %722) #8
  call void @_ZNK17RigidBodyDynamics4Math23SpatialRigidBodyInertia8toMatrixEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %70, ptr noundef nonnull align 8 dereferenceable(80) %723)
  %724 = load ptr, ptr %5, align 8, !tbaa !5
  %725 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %724, i32 0, i32 22
  %726 = load i32, ptr %66, align 4, !tbaa !91
  %727 = zext i32 %726 to i64
  %728 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %725, i64 noundef %727) #8
  %729 = load ptr, ptr %728, align 8, !tbaa !5
  %730 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %729, i32 0, i32 3
  %731 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLin1ELin1ELi0ELin1ELin1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %70, ptr noundef nonnull align 1 dereferenceable(1) %730)
  %732 = getelementptr inbounds { ptr, ptr }, ptr %69, i32 0, i32 0
  %733 = extractvalue { ptr, ptr } %731, 0
  store ptr %733, ptr %732, align 8
  %734 = getelementptr inbounds { ptr, ptr }, ptr %69, i32 0, i32 1
  %735 = extractvalue { ptr, ptr } %731, 1
  store ptr %735, ptr %734, align 8
  call void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_7ProductINS0_IdLi6ELi6ELi0ELi6ELi6EEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %68, ptr noundef nonnull align 1 dereferenceable(1) %69)
  call void @llvm.lifetime.end.p0(i64 288, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  %736 = load ptr, ptr %5, align 8, !tbaa !5
  %737 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %736, i32 0, i32 22
  %738 = load i32, ptr %66, align 4, !tbaa !91
  %739 = zext i32 %738 to i64
  %740 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %737, i64 noundef %739) #8
  %741 = load ptr, ptr %740, align 8, !tbaa !5
  %742 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %741, i32 0, i32 3
  %743 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %742)
          to label %744 unwind label %860

744:                                              ; preds = %703
  %745 = getelementptr inbounds %"class.Eigen::Transpose.221", ptr %72, i32 0, i32 0
  store ptr %743, ptr %745, align 8
  %746 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %72, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %747 unwind label %860

747:                                              ; preds = %744
  %748 = getelementptr inbounds { ptr, ptr }, ptr %71, i32 0, i32 0
  %749 = extractvalue { ptr, ptr } %746, 0
  store ptr %749, ptr %748, align 8
  %750 = getelementptr inbounds { ptr, ptr }, ptr %71, i32 0, i32 1
  %751 = extractvalue { ptr, ptr } %746, 1
  store ptr %751, ptr %750, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr %73) #8
  %752 = load ptr, ptr %7, align 8, !tbaa !5
  %753 = load i32, ptr %13, align 4, !tbaa !91
  %754 = zext i32 %753 to i64
  %755 = load i32, ptr %13, align 4, !tbaa !91
  %756 = zext i32 %755 to i64
  %757 = load i32, ptr %67, align 4, !tbaa !91
  %758 = load i32, ptr %67, align 4, !tbaa !91
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIjjEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %73, ptr noundef nonnull align 1 dereferenceable(1) %752, i64 noundef %754, i64 noundef %756, i32 noundef %757, i32 noundef %758)
          to label %759 unwind label %864

759:                                              ; preds = %747
  %760 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_7ProductINS_9TransposeIS2_EES2_Li0EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %73, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %761 unwind label %864

761:                                              ; preds = %759
  call void @llvm.lifetime.end.p0(i64 56, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #8
  %762 = load i32, ptr %10, align 4, !tbaa !91
  store i32 %762, ptr %74, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #8
  %763 = load i32, ptr %13, align 4, !tbaa !91
  store i32 %763, ptr %75, align 4, !tbaa !91
  br label %764

764:                                              ; preds = %1048, %761
  %765 = load ptr, ptr %5, align 8, !tbaa !5
  %766 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %765, i32 0, i32 0
  %767 = load i32, ptr %74, align 4, !tbaa !91
  %768 = zext i32 %767 to i64
  %769 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %766, i64 noundef %768) #8
  %770 = load i32, ptr %769, align 4, !tbaa !91
  %771 = icmp ne i32 %770, 0
  br i1 %771, label %772, label %1049

772:                                              ; preds = %764
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #8
  call void @llvm.lifetime.start.p0(i64 288, ptr %77) #8
  %773 = load ptr, ptr %5, align 8, !tbaa !5
  %774 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %773, i32 0, i32 34
  %775 = load i32, ptr %74, align 4, !tbaa !91
  %776 = zext i32 %775 to i64
  %777 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %774, i64 noundef %776) #8
  invoke void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind writable sret(%class.SpatialMatrix_t) align 16 %77, ptr noundef nonnull align 8 dereferenceable(96) %777)
          to label %778 unwind label %869

778:                                              ; preds = %772
  %779 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLin1ELin1ELi0ELin1ELin1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %77, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %780 unwind label %869

780:                                              ; preds = %778
  %781 = getelementptr inbounds { ptr, ptr }, ptr %76, i32 0, i32 0
  %782 = extractvalue { ptr, ptr } %779, 0
  store ptr %782, ptr %781, align 8
  %783 = getelementptr inbounds { ptr, ptr }, ptr %76, i32 0, i32 1
  %784 = extractvalue { ptr, ptr } %779, 1
  store ptr %784, ptr %783, align 8
  %785 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_7ProductINS0_IdLi6ELi6ELi0ELi6ELi6EEES1_Li0EEEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %68, ptr noundef nonnull align 1 dereferenceable(1) %76)
          to label %786 unwind label %869

786:                                              ; preds = %780
  call void @llvm.lifetime.end.p0(i64 288, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #8
  %787 = load ptr, ptr %5, align 8, !tbaa !5
  %788 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %787, i32 0, i32 0
  %789 = load i32, ptr %74, align 4, !tbaa !91
  %790 = zext i32 %789 to i64
  %791 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %788, i64 noundef %790) #8
  %792 = load i32, ptr %791, align 4, !tbaa !91
  store i32 %792, ptr %74, align 4, !tbaa !91
  %793 = load ptr, ptr %5, align 8, !tbaa !5
  %794 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %793, i32 0, i32 10
  %795 = load i32, ptr %74, align 4, !tbaa !91
  %796 = zext i32 %795 to i64
  %797 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %794, i64 noundef %796) #8
  %798 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %797, i32 0, i32 3
  %799 = load i32, ptr %798, align 8, !tbaa !96
  store i32 %799, ptr %75, align 4, !tbaa !91
  %800 = load ptr, ptr %5, align 8, !tbaa !5
  %801 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %800, i32 0, i32 10
  %802 = load i32, ptr %74, align 4, !tbaa !91
  %803 = zext i32 %802 to i64
  %804 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %801, i64 noundef %803) #8
  %805 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %804, i32 0, i32 1
  %806 = load i32, ptr %805, align 8, !tbaa !100
  %807 = icmp ne i32 %806, 21
  br i1 %807, label %808, label %965

808:                                              ; preds = %786
  %809 = load ptr, ptr %5, align 8, !tbaa !5
  %810 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %809, i32 0, i32 10
  %811 = load i32, ptr %74, align 4, !tbaa !91
  %812 = zext i32 %811 to i64
  %813 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %810, i64 noundef %812) #8
  %814 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %813, i32 0, i32 2
  %815 = load i32, ptr %814, align 4, !tbaa !99
  %816 = icmp eq i32 %815, 1
  br i1 %816, label %817, label %892

817:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 24, ptr %78) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %818 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %819 unwind label %873

819:                                              ; preds = %817
  %820 = getelementptr inbounds %"class.Eigen::Transpose.221", ptr %80, i32 0, i32 0
  store ptr %818, ptr %820, align 8
  %821 = load ptr, ptr %5, align 8, !tbaa !5
  %822 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %821, i32 0, i32 11
  %823 = load i32, ptr %74, align 4, !tbaa !91
  %824 = zext i32 %823 to i64
  %825 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %822, i64 noundef %824) #8
  %826 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %80, ptr noundef nonnull align 1 dereferenceable(1) %825)
          to label %827 unwind label %873

827:                                              ; preds = %819
  %828 = getelementptr inbounds { ptr, ptr }, ptr %79, i32 0, i32 0
  %829 = extractvalue { ptr, ptr } %826, 0
  store ptr %829, ptr %828, align 8
  %830 = getelementptr inbounds { ptr, ptr }, ptr %79, i32 0, i32 1
  %831 = extractvalue { ptr, ptr } %826, 1
  store ptr %831, ptr %830, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_7ProductINS_9TransposeIS1_EENS0_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr noundef nonnull align 1 dereferenceable(1) %79)
          to label %832 unwind label %873

832:                                              ; preds = %827
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr %81) #8
  %833 = load ptr, ptr %7, align 8, !tbaa !5
  %834 = load i32, ptr %13, align 4, !tbaa !91
  %835 = zext i32 %834 to i64
  %836 = load i32, ptr %75, align 4, !tbaa !91
  %837 = zext i32 %836 to i64
  %838 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %78)
          to label %839 unwind label %877

839:                                              ; preds = %832
  %840 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %78)
          to label %841 unwind label %877

841:                                              ; preds = %839
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIllEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %81, ptr noundef nonnull align 1 dereferenceable(1) %833, i64 noundef %835, i64 noundef %837, i64 noundef %838, i64 noundef %840)
          to label %842 unwind label %877

842:                                              ; preds = %841
  %843 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSIS2_EERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %81, ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %844 unwind label %877

844:                                              ; preds = %842
  call void @llvm.lifetime.end.p0(i64 56, ptr %81) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  %845 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %78)
          to label %846 unwind label %881

846:                                              ; preds = %844
  %847 = getelementptr inbounds %"class.Eigen::Transpose.221", ptr %82, i32 0, i32 0
  store ptr %845, ptr %847, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr %83) #8
  %848 = load ptr, ptr %7, align 8, !tbaa !5
  %849 = load i32, ptr %75, align 4, !tbaa !91
  %850 = zext i32 %849 to i64
  %851 = load i32, ptr %13, align 4, !tbaa !91
  %852 = zext i32 %851 to i64
  %853 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %78)
          to label %854 unwind label %885

854:                                              ; preds = %846
  %855 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %78)
          to label %856 unwind label %885

856:                                              ; preds = %854
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIllEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %83, ptr noundef nonnull align 1 dereferenceable(1) %848, i64 noundef %850, i64 noundef %852, i64 noundef %853, i64 noundef %855)
          to label %857 unwind label %885

857:                                              ; preds = %856
  %858 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_9TransposeIS2_EEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %83, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %859 unwind label %885

859:                                              ; preds = %857
  call void @llvm.lifetime.end.p0(i64 56, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #8
  br label %964

860:                                              ; preds = %744, %703
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %32, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %33, align 4
  br label %868

864:                                              ; preds = %759, %747
  %865 = landingpad { ptr, i32 }
          cleanup
  %866 = extractvalue { ptr, i32 } %865, 0
  store ptr %866, ptr %32, align 8
  %867 = extractvalue { ptr, i32 } %865, 1
  store i32 %867, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %73) #8
  br label %868

868:                                              ; preds = %864, %860
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #8
  br label %1051

869:                                              ; preds = %780, %778, %772
  %870 = landingpad { ptr, i32 }
          cleanup
  %871 = extractvalue { ptr, i32 } %870, 0
  store ptr %871, ptr %32, align 8
  %872 = extractvalue { ptr, i32 } %870, 1
  store i32 %872, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 288, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #8
  br label %1050

873:                                              ; preds = %827, %819, %817
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %32, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #8
  br label %891

877:                                              ; preds = %842, %841, %839, %832
  %878 = landingpad { ptr, i32 }
          cleanup
  %879 = extractvalue { ptr, i32 } %878, 0
  store ptr %879, ptr %32, align 8
  %880 = extractvalue { ptr, i32 } %878, 1
  store i32 %880, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %81) #8
  br label %890

881:                                              ; preds = %844
  %882 = landingpad { ptr, i32 }
          cleanup
  %883 = extractvalue { ptr, i32 } %882, 0
  store ptr %883, ptr %32, align 8
  %884 = extractvalue { ptr, i32 } %882, 1
  store i32 %884, ptr %33, align 4
  br label %889

885:                                              ; preds = %857, %856, %854, %846
  %886 = landingpad { ptr, i32 }
          cleanup
  %887 = extractvalue { ptr, i32 } %886, 0
  store ptr %887, ptr %32, align 8
  %888 = extractvalue { ptr, i32 } %886, 1
  store i32 %888, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %83) #8
  br label %889

889:                                              ; preds = %885, %881
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %890

890:                                              ; preds = %889, %877
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #8
  br label %891

891:                                              ; preds = %890, %873
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #8
  br label %1050

892:                                              ; preds = %808
  %893 = load ptr, ptr %5, align 8, !tbaa !5
  %894 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %893, i32 0, i32 10
  %895 = load i32, ptr %74, align 4, !tbaa !91
  %896 = zext i32 %895 to i64
  %897 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %894, i64 noundef %896) #8
  %898 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %897, i32 0, i32 2
  %899 = load i32, ptr %898, align 4, !tbaa !99
  %900 = icmp eq i32 %899, 3
  br i1 %900, label %901, label %963

901:                                              ; preds = %892
  call void @llvm.lifetime.start.p0(i64 24, ptr %84) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %85) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  %902 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %903 unwind label %944

903:                                              ; preds = %901
  %904 = getelementptr inbounds %"class.Eigen::Transpose.221", ptr %86, i32 0, i32 0
  store ptr %902, ptr %904, align 8
  %905 = load ptr, ptr %5, align 8, !tbaa !5
  %906 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %905, i32 0, i32 17
  %907 = load i32, ptr %74, align 4, !tbaa !91
  %908 = zext i32 %907 to i64
  %909 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %906, i64 noundef %908) #8
  %910 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLi6ELi3ELi0ELi6ELi3EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %86, ptr noundef nonnull align 1 dereferenceable(1) %909)
          to label %911 unwind label %944

911:                                              ; preds = %903
  %912 = getelementptr inbounds { ptr, ptr }, ptr %85, i32 0, i32 0
  %913 = extractvalue { ptr, ptr } %910, 0
  store ptr %913, ptr %912, align 8
  %914 = getelementptr inbounds { ptr, ptr }, ptr %85, i32 0, i32 1
  %915 = extractvalue { ptr, ptr } %910, 1
  store ptr %915, ptr %914, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_7ProductINS_9TransposeIS1_EENS0_IdLi6ELi3ELi0ELi6ELi3EEELi0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %916 unwind label %944

916:                                              ; preds = %911
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr %87) #8
  %917 = load ptr, ptr %7, align 8, !tbaa !5
  %918 = load i32, ptr %13, align 4, !tbaa !91
  %919 = zext i32 %918 to i64
  %920 = load i32, ptr %75, align 4, !tbaa !91
  %921 = zext i32 %920 to i64
  %922 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %84)
          to label %923 unwind label %948

923:                                              ; preds = %916
  %924 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %84)
          to label %925 unwind label %948

925:                                              ; preds = %923
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIllEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %87, ptr noundef nonnull align 1 dereferenceable(1) %917, i64 noundef %919, i64 noundef %921, i64 noundef %922, i64 noundef %924)
          to label %926 unwind label %948

926:                                              ; preds = %925
  %927 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSIS2_EERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %87, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %928 unwind label %948

928:                                              ; preds = %926
  call void @llvm.lifetime.end.p0(i64 56, ptr %87) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  %929 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %930 unwind label %952

930:                                              ; preds = %928
  %931 = getelementptr inbounds %"class.Eigen::Transpose.221", ptr %88, i32 0, i32 0
  store ptr %929, ptr %931, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr %89) #8
  %932 = load ptr, ptr %7, align 8, !tbaa !5
  %933 = load i32, ptr %75, align 4, !tbaa !91
  %934 = zext i32 %933 to i64
  %935 = load i32, ptr %13, align 4, !tbaa !91
  %936 = zext i32 %935 to i64
  %937 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %84)
          to label %938 unwind label %956

938:                                              ; preds = %930
  %939 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %84)
          to label %940 unwind label %956

940:                                              ; preds = %938
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIllEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %89, ptr noundef nonnull align 1 dereferenceable(1) %932, i64 noundef %934, i64 noundef %936, i64 noundef %937, i64 noundef %939)
          to label %941 unwind label %956

941:                                              ; preds = %940
  %942 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_9TransposeIS2_EEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %89, ptr noundef nonnull align 1 dereferenceable(1) %88)
          to label %943 unwind label %956

943:                                              ; preds = %941
  call void @llvm.lifetime.end.p0(i64 56, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %84) #8
  br label %963

944:                                              ; preds = %911, %903, %901
  %945 = landingpad { ptr, i32 }
          cleanup
  %946 = extractvalue { ptr, i32 } %945, 0
  store ptr %946, ptr %32, align 8
  %947 = extractvalue { ptr, i32 } %945, 1
  store i32 %947, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %85) #8
  br label %962

948:                                              ; preds = %926, %925, %923, %916
  %949 = landingpad { ptr, i32 }
          cleanup
  %950 = extractvalue { ptr, i32 } %949, 0
  store ptr %950, ptr %32, align 8
  %951 = extractvalue { ptr, i32 } %949, 1
  store i32 %951, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %87) #8
  br label %961

952:                                              ; preds = %928
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %32, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %33, align 4
  br label %960

956:                                              ; preds = %941, %940, %938, %930
  %957 = landingpad { ptr, i32 }
          cleanup
  %958 = extractvalue { ptr, i32 } %957, 0
  store ptr %958, ptr %32, align 8
  %959 = extractvalue { ptr, i32 } %957, 1
  store i32 %959, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %89) #8
  br label %960

960:                                              ; preds = %956, %952
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %961

961:                                              ; preds = %960, %948
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #8
  br label %962

962:                                              ; preds = %961, %944
  call void @llvm.lifetime.end.p0(i64 24, ptr %84) #8
  br label %1050

963:                                              ; preds = %943, %892
  br label %964

964:                                              ; preds = %963, %859
  br label %1048

965:                                              ; preds = %786
  %966 = load ptr, ptr %5, align 8, !tbaa !5
  %967 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %966, i32 0, i32 10
  %968 = load i32, ptr %74, align 4, !tbaa !91
  %969 = zext i32 %968 to i64
  %970 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %967, i64 noundef %969) #8
  %971 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %970, i32 0, i32 1
  %972 = load i32, ptr %971, align 8, !tbaa !100
  %973 = icmp eq i32 %972, 21
  br i1 %973, label %974, label %1047

974:                                              ; preds = %965
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #8
  %975 = load ptr, ptr %5, align 8, !tbaa !5
  %976 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %975, i32 0, i32 10
  %977 = load i32, ptr %74, align 4, !tbaa !91
  %978 = zext i32 %977 to i64
  %979 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %976, i64 noundef %978) #8
  %980 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %979, i32 0, i32 4
  %981 = load i32, ptr %980, align 4, !tbaa !103
  store i32 %981, ptr %90, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #8
  %982 = load ptr, ptr %5, align 8, !tbaa !5
  %983 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %982, i32 0, i32 22
  %984 = load i32, ptr %90, align 4, !tbaa !91
  %985 = zext i32 %984 to i64
  %986 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %983, i64 noundef %985) #8
  %987 = load ptr, ptr %986, align 8, !tbaa !5
  %988 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %987, i32 0, i32 1
  %989 = load i32, ptr %988, align 8, !tbaa !104
  store i32 %989, ptr %91, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 24, ptr %92) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  %990 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %991 unwind label %1028

991:                                              ; preds = %974
  %992 = getelementptr inbounds %"class.Eigen::Transpose.221", ptr %94, i32 0, i32 0
  store ptr %990, ptr %992, align 8
  %993 = load ptr, ptr %5, align 8, !tbaa !5
  %994 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %993, i32 0, i32 22
  %995 = load i32, ptr %90, align 4, !tbaa !91
  %996 = zext i32 %995 to i64
  %997 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %994, i64 noundef %996) #8
  %998 = load ptr, ptr %997, align 8, !tbaa !5
  %999 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %998, i32 0, i32 3
  %1000 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %94, ptr noundef nonnull align 1 dereferenceable(1) %999)
          to label %1001 unwind label %1028

1001:                                             ; preds = %991
  %1002 = getelementptr inbounds { ptr, ptr }, ptr %93, i32 0, i32 0
  %1003 = extractvalue { ptr, ptr } %1000, 0
  store ptr %1003, ptr %1002, align 8
  %1004 = getelementptr inbounds { ptr, ptr }, ptr %93, i32 0, i32 1
  %1005 = extractvalue { ptr, ptr } %1000, 1
  store ptr %1005, ptr %1004, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_7ProductINS_9TransposeIS1_EES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %92, ptr noundef nonnull align 1 dereferenceable(1) %93)
          to label %1006 unwind label %1028

1006:                                             ; preds = %1001
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr %95) #8
  %1007 = load ptr, ptr %7, align 8, !tbaa !5
  %1008 = load i32, ptr %13, align 4, !tbaa !91
  %1009 = zext i32 %1008 to i64
  %1010 = load i32, ptr %75, align 4, !tbaa !91
  %1011 = zext i32 %1010 to i64
  %1012 = load i32, ptr %91, align 4, !tbaa !91
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIijEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %95, ptr noundef nonnull align 1 dereferenceable(1) %1007, i64 noundef %1009, i64 noundef %1011, i32 noundef 3, i32 noundef %1012)
          to label %1013 unwind label %1032

1013:                                             ; preds = %1006
  %1014 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSIS2_EERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %95, ptr noundef nonnull align 1 dereferenceable(1) %92)
          to label %1015 unwind label %1032

1015:                                             ; preds = %1013
  call void @llvm.lifetime.end.p0(i64 56, ptr %95) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %1016 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %92)
          to label %1017 unwind label %1036

1017:                                             ; preds = %1015
  %1018 = getelementptr inbounds %"class.Eigen::Transpose.221", ptr %96, i32 0, i32 0
  store ptr %1016, ptr %1018, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr %97) #8
  %1019 = load ptr, ptr %7, align 8, !tbaa !5
  %1020 = load i32, ptr %75, align 4, !tbaa !91
  %1021 = zext i32 %1020 to i64
  %1022 = load i32, ptr %13, align 4, !tbaa !91
  %1023 = zext i32 %1022 to i64
  %1024 = load i32, ptr %91, align 4, !tbaa !91
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIjiEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind writable sret(%"class.Eigen::Block.321") align 8 %97, ptr noundef nonnull align 1 dereferenceable(1) %1019, i64 noundef %1021, i64 noundef %1023, i32 noundef %1024, i32 noundef 3)
          to label %1025 unwind label %1040

1025:                                             ; preds = %1017
  %1026 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_9TransposeIS2_EEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %97, ptr noundef nonnull align 1 dereferenceable(1) %96)
          to label %1027 unwind label %1040

1027:                                             ; preds = %1025
  call void @llvm.lifetime.end.p0(i64 56, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #8
  br label %1047

1028:                                             ; preds = %1001, %991, %974
  %1029 = landingpad { ptr, i32 }
          cleanup
  %1030 = extractvalue { ptr, i32 } %1029, 0
  store ptr %1030, ptr %32, align 8
  %1031 = extractvalue { ptr, i32 } %1029, 1
  store i32 %1031, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #8
  br label %1046

1032:                                             ; preds = %1013, %1006
  %1033 = landingpad { ptr, i32 }
          cleanup
  %1034 = extractvalue { ptr, i32 } %1033, 0
  store ptr %1034, ptr %32, align 8
  %1035 = extractvalue { ptr, i32 } %1033, 1
  store i32 %1035, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %95) #8
  br label %1045

1036:                                             ; preds = %1015
  %1037 = landingpad { ptr, i32 }
          cleanup
  %1038 = extractvalue { ptr, i32 } %1037, 0
  store ptr %1038, ptr %32, align 8
  %1039 = extractvalue { ptr, i32 } %1037, 1
  store i32 %1039, ptr %33, align 4
  br label %1044

1040:                                             ; preds = %1025, %1017
  %1041 = landingpad { ptr, i32 }
          cleanup
  %1042 = extractvalue { ptr, i32 } %1041, 0
  store ptr %1042, ptr %32, align 8
  %1043 = extractvalue { ptr, i32 } %1041, 1
  store i32 %1043, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 56, ptr %97) #8
  br label %1044

1044:                                             ; preds = %1040, %1036
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %1045

1045:                                             ; preds = %1044, %1032
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #8
  br label %1046

1046:                                             ; preds = %1045, %1028
  call void @llvm.lifetime.end.p0(i64 24, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #8
  br label %1050

1047:                                             ; preds = %1027, %965
  br label %1048

1048:                                             ; preds = %1047, %964
  br label %764, !llvm.loop !117

1049:                                             ; preds = %764
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #8
  br label %1052

1050:                                             ; preds = %1046, %962, %891, %869
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #8
  br label %1051

1051:                                             ; preds = %1050, %868
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #8
  br label %1058

1052:                                             ; preds = %1049, %694
  br label %1053

1053:                                             ; preds = %1052, %693
  br label %1054

1054:                                             ; preds = %1053, %447
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %1055

1055:                                             ; preds = %1054
  %1056 = load i32, ptr %10, align 4, !tbaa !91
  %1057 = add i32 %1056, -1
  store i32 %1057, ptr %10, align 4, !tbaa !91
  br label %156, !llvm.loop !118

1058:                                             ; preds = %1051, %690, %444
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  br label %1060

1059:                                             ; preds = %159
  ret void

1060:                                             ; preds = %1058
  %1061 = load ptr, ptr %32, align 8
  %1062 = load i32, ptr %33, align 4
  %1063 = insertvalue { ptr, i32 } poison, ptr %1061, 0
  %1064 = insertvalue { ptr, i32 } %1063, i32 %1062, 1
  resume { ptr, i32 } %1064
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { noreturn nounwind }
attributes #8 = { 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 = !{!"bool", !7, i64 0}
!11 = !{!12, !21, i64 72}
!12 = !{!"_ZTSN17RigidBodyDynamics5ModelE", !13, i64 0, !13, i64 24, !17, i64 48, !21, i64 72, !21, i64 76, !21, i64 80, !21, i64 84, !22, i64 88, !27, i64 112, !27, i64 136, !32, i64 160, !27, i64 184, !27, i64 208, !27, i64 232, !13, i64 256, !37, i64 280, !13, i64 304, !42, i64 328, !42, i64 352, !47, i64 376, !51, i64 400, !13, i64 424, !55, i64 448, !27, i64 472, !59, i64 496, !27, i64 520, !27, i64 544, !64, i64 568, !64, i64 584, !27, i64 600, !68, i64 624, !68, i64 648, !27, i64 672, !27, i64 696, !37, i64 720, !37, i64 744, !73, i64 768, !21, i64 792, !78, i64 800, !83, 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 = !{!"int", !7, i64 0}
!22 = !{!"_ZTS9Vector3_t", !23, i64 0}
!23 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !24, i64 0}
!24 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !25, i64 0}
!25 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !26, i64 0}
!26 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !7, i64 0}
!27 = !{!"_ZTSSt6vectorI15SpatialVector_tSaIS0_EE", !28, i64 0}
!28 = !{!"_ZTSSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics5JointESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EE", !38, i64 0}
!38 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEESaIS2_EE", !43, i64 0}
!43 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!47 = !{!"_ZTSSt6vectorI9Matrix3_tSaIS0_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseI9Matrix3_tSaIS0_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseI9Matrix3_tSaIS0_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseI9Matrix3_tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!"_ZTSSt6vectorI9Vector3_tSaIS0_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseI9Vector3_tSaIS0_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"_ZTSSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!59 = !{!"_ZTSSt6vectorI15SpatialMatrix_tSaIS0_EE", !60, i64 0}
!60 = !{!"_ZTSSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!64 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !65, i64 0}
!65 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !66, i64 0}
!66 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !6, i64 0, !67, i64 8}
!67 = !{!"long", !7, i64 0}
!68 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaESaIS2_EE", !69, i64 0}
!69 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!73 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics9FixedBodyESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE", !75, i64 0}
!75 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!78 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4BodyESaIS1_EE", !79, i64 0}
!79 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!83 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !84, i64 0}
!84 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !85, i64 0}
!85 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !86, i64 0, !88, i64 8}
!86 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !87, i64 0}
!87 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!88 = !{!"_ZTSSt15_Rb_tree_header", !89, i64 0, !67, i64 32}
!89 = !{!"_ZTSSt18_Rb_tree_node_base", !90, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!90 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!91 = !{!21, !21, i64 0}
!92 = !{i8 0, i8 2}
!93 = !{}
!94 = distinct !{!94, !95}
!95 = !{!"llvm.loop.mustprogress"}
!96 = !{!97, !21, i64 16}
!97 = !{!"_ZTSN17RigidBodyDynamics5JointE", !6, i64 0, !98, i64 8, !21, i64 12, !21, i64 16, !21, i64 20}
!98 = !{!"_ZTSN17RigidBodyDynamics9JointTypeE", !7, i64 0}
!99 = !{!97, !21, i64 12}
!100 = !{!97, !98, i64 8}
!101 = !{!102, !102, i64 0}
!102 = !{!"double", !7, i64 0}
!103 = !{!97, !21, i64 20}
!104 = !{!105, !21, i64 8}
!105 = !{!"_ZTSN17RigidBodyDynamics11CustomJointE", !21, i64 8, !106, i64 16, !112, i64 112, !112, i64 136, !112, i64 160, !64, i64 184, !64, i64 200}
!106 = !{!"_ZTSN17RigidBodyDynamics4Math16SpatialTransformE", !107, i64 0, !22, i64 72}
!107 = !{!"_ZTS9Matrix3_t", !108, i64 0}
!108 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE", !109, i64 0}
!109 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEE", !110, i64 0}
!110 = !{!"_ZTSN5Eigen12DenseStorageIdLi9ELi3ELi3ELi0EEE", !111, i64 0}
!111 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi9ELi0ELi0EEE", !7, i64 0}
!112 = !{!"_ZTSN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEE", !113, i64 0}
!113 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE", !114, i64 0}
!114 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EEE", !6, i64 0, !67, i64 8, !67, i64 16}
!115 = distinct !{!115, !95}
!116 = distinct !{!116, !95}
!117 = distinct !{!117, !95}
!118 = distinct !{!118, !95}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%class.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] }
%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia" = type { double, %class.Vector3_t, double, double, double, double, double, 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.Eigen::Transpose.245" = type { %"class.Eigen::Product.251" }
%"class.Eigen::Product.251" = type { %"class.Eigen::Transpose.258", ptr }
%"class.Eigen::Transpose.258" = type { ptr }
%"class.Eigen::Transpose.266" = type { ptr }
%"class.Eigen::Block.274" = type { %"class.Eigen::BlockImpl.275" }
%"class.Eigen::BlockImpl.275" = type { %"class.Eigen::internal::BlockImpl_dense.276" }
%"class.Eigen::internal::BlockImpl_dense.276" = type { %"class.Eigen::MapBase.base.286", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase.base.286" = type { %"class.Eigen::MapBase.base.285" }
%"class.Eigen::MapBase.base.285" = type <{ ptr, [2 x i8] }>
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"class.Eigen::Block.287" = type { %"class.Eigen::BlockImpl.288" }
%"class.Eigen::BlockImpl.288" = type { %"class.Eigen::internal::BlockImpl_dense.289" }
%"class.Eigen::internal::BlockImpl_dense.289" = type { %"class.Eigen::MapBase.base.299", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase.base.299" = type { %"class.Eigen::MapBase.base.298" }
%"class.Eigen::MapBase.base.298" = type <{ ptr, [2 x i8] }>
%"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::Transpose.300" = type { %"class.Eigen::Product.306" }
%"class.Eigen::Product.306" = type { %"class.Eigen::Transpose.258", ptr }
%"class.Eigen::Transpose.313" = type { ptr }
%"class.Eigen::Block.321" = type { %"class.Eigen::BlockImpl.322" }
%"class.Eigen::BlockImpl.322" = type { %"class.Eigen::internal::BlockImpl_dense.323" }
%"class.Eigen::internal::BlockImpl_dense.323" = type { %"class.Eigen::MapBase.324", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase.324" = type { %"class.Eigen::MapBase.325" }
%"class.Eigen::MapBase.325" = type { ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic" }
%"class.Eigen::Matrix.143" = type { %"class.Eigen::PlainObjectBase.144" }
%"class.Eigen::PlainObjectBase.144" = type { %"class.Eigen::DenseStorage.151" }
%"class.Eigen::DenseStorage.151" = type { %"struct.Eigen::internal::plain_array.152" }
%"struct.Eigen::internal::plain_array.152" = type { [18 x double] }
%"class.Eigen::Product.332" = type { ptr, ptr }
%class.SpatialMatrix_t = type { %"class.Eigen::Matrix.183" }
%"class.Eigen::Matrix.183" = type { %"class.Eigen::PlainObjectBase.184" }
%"class.Eigen::PlainObjectBase.184" = type { %"class.Eigen::DenseStorage.191" }
%"class.Eigen::DenseStorage.191" = type { %"struct.Eigen::internal::plain_array.192" }
%"struct.Eigen::internal::plain_array.192" = type { [36 x double] }
%"class.Eigen::Product.339" = type { %"class.Eigen::Transpose", ptr }
%"class.Eigen::Transpose" = type { ptr }
%"class.Eigen::Block.346" = type { %"class.Eigen::BlockImpl.347" }
%"class.Eigen::BlockImpl.347" = type { %"class.Eigen::internal::BlockImpl_dense.348" }
%"class.Eigen::internal::BlockImpl_dense.348" = type { %"class.Eigen::MapBase.base.358", ptr, %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", i64 }
%"class.Eigen::MapBase.base.358" = type { %"class.Eigen::MapBase.base.357" }
%"class.Eigen::MapBase.base.357" = type <{ ptr, [2 x i8] }>
%"class.Eigen::Product.193" = type { %"class.Eigen::Transpose", ptr }
%class.Matrix3_t = type { %"class.Eigen::Matrix.104" }
%"class.Eigen::Matrix.104" = type { %"class.Eigen::PlainObjectBase.105" }
%"class.Eigen::PlainObjectBase.105" = type { %"class.Eigen::DenseStorage.112" }
%"class.Eigen::DenseStorage.112" = type { %"struct.Eigen::internal::plain_array.113" }
%"struct.Eigen::internal::plain_array.113" = type { [9 x double] }
%"class.Eigen::Transpose.359" = type { ptr }
%"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 }
%"class.Eigen::Product.367" = type { %"class.Eigen::Transpose", ptr }
%"class.Eigen::Transpose.221" = type { ptr }
%"class.Eigen::Product.374" = type { ptr, ptr }
%"class.Eigen::Product.381" = type { %"class.Eigen::Transpose.221", ptr }
%"class.Eigen::Product.214" = type { %"class.Eigen::Transpose.221", ptr }
%"class.Eigen::Product.388" = type { %"class.Eigen::Transpose.221", ptr }

@.str = external hidden unnamed_addr constant [59 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [109 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics27CompositeRigidBodyAlgorithmERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb = external hidden unnamed_addr constant [97 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics27CompositeRigidBodyAlgorithmERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, i1 noundef zeroext %3) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia", align 8
  %6 = alloca %"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia", align 8
  %7 = alloca %class.SpatialVector_t, align 16
  %8 = alloca %class.SpatialVector_t, align 16
  %9 = alloca %class.Vector3_t, align 8
  %10 = alloca %"class.Eigen::Transpose.245", align 8
  %11 = alloca %"class.Eigen::Product.251", align 8
  %12 = alloca %"class.Eigen::Transpose.258", align 8
  %13 = alloca %"class.Eigen::Transpose.266", align 8
  %14 = alloca %"class.Eigen::Block.274", align 8
  %15 = alloca %"class.Eigen::Block.287", align 8
  %16 = alloca %"class.Eigen::Matrix.57", align 8
  %17 = alloca %"class.Eigen::Transpose.300", align 8
  %18 = alloca %"class.Eigen::Product.306", align 8
  %19 = alloca %"class.Eigen::Transpose.258", align 8
  %20 = alloca %"class.Eigen::Transpose.313", align 8
  %21 = alloca %"class.Eigen::Block.321", align 8
  %22 = alloca %"class.Eigen::Block.321", align 8
  %23 = alloca %"class.Eigen::Matrix.143", align 16
  %24 = alloca %"class.Eigen::Product.332", align 8
  %25 = alloca %class.SpatialMatrix_t, align 16
  %26 = alloca %"class.Eigen::Product.339", align 8
  %27 = alloca %"class.Eigen::Transpose", align 8
  %28 = alloca %"class.Eigen::Block.346", align 8
  %29 = alloca %"class.Eigen::Product.332", align 8
  %30 = alloca %class.SpatialMatrix_t, align 16
  %31 = alloca %class.Vector3_t, align 8
  %32 = alloca %"class.Eigen::Product.193", align 8
  %33 = alloca %"class.Eigen::Transpose", align 8
  %34 = alloca %"class.Eigen::Block.287", align 8
  %35 = alloca %"class.Eigen::Transpose.266", align 8
  %36 = alloca %"class.Eigen::Block.274", align 8
  %37 = alloca %class.Matrix3_t, align 8
  %38 = alloca %"class.Eigen::Product.339", align 8
  %39 = alloca %"class.Eigen::Transpose", align 8
  %40 = alloca %"class.Eigen::Block.346", align 8
  %41 = alloca %"class.Eigen::Transpose.359", align 8
  %42 = alloca %"class.Eigen::Block.346", align 8
  %43 = alloca %"class.Eigen::Matrix.153", align 8
  %44 = alloca %"class.Eigen::Product.367", align 8
  %45 = alloca %"class.Eigen::Transpose", align 8
  %46 = alloca %"class.Eigen::Block.321", align 8
  %47 = alloca %"class.Eigen::Transpose.221", align 8
  %48 = alloca %"class.Eigen::Block.321", align 8
  %49 = alloca %"class.Eigen::Matrix.153", align 8
  %50 = alloca %"class.Eigen::Product.374", align 8
  %51 = alloca %class.SpatialMatrix_t, align 16
  %52 = alloca %"class.Eigen::Product.381", align 8
  %53 = alloca %"class.Eigen::Transpose.221", align 8
  %54 = alloca %"class.Eigen::Block.321", align 8
  %55 = alloca %"class.Eigen::Product.374", align 8
  %56 = alloca %class.SpatialMatrix_t, align 16
  %57 = alloca %"class.Eigen::Matrix.153", align 8
  %58 = alloca %"class.Eigen::Product.214", align 8
  %59 = alloca %"class.Eigen::Transpose.221", align 8
  %60 = alloca %"class.Eigen::Block.321", align 8
  %61 = alloca %"class.Eigen::Transpose.221", align 8
  %62 = alloca %"class.Eigen::Block.321", align 8
  %63 = alloca %"class.Eigen::Matrix.153", align 8
  %64 = alloca %"class.Eigen::Product.388", align 8
  %65 = alloca %"class.Eigen::Transpose.221", align 8
  %66 = alloca %"class.Eigen::Block.321", align 8
  %67 = alloca %"class.Eigen::Transpose.221", align 8
  %68 = alloca %"class.Eigen::Block.321", align 8
  %69 = alloca %"class.Eigen::Matrix.153", align 8
  %70 = alloca %"class.Eigen::Product.381", align 8
  %71 = alloca %"class.Eigen::Transpose.221", align 8
  %72 = alloca %"class.Eigen::Block.321", align 8
  %73 = alloca %"class.Eigen::Transpose.221", align 8
  %74 = alloca %"class.Eigen::Block.321", align 8
  %75 = tail call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %2)
  %76 = getelementptr inbounds i8, ptr %0, i64 72
  %77 = load i32, ptr %76, align 8, !tbaa !5
  %78 = zext i32 %77 to i64
  %79 = icmp eq i64 %75, %78
  br i1 %79, label %80, label %.critedge

80:                                               ; preds = %4
  %81 = tail call noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %2)
  %82 = load i32, ptr %76, align 8, !tbaa !5
  %83 = zext i32 %82 to i64
  %84 = icmp eq i64 %81, %83
  br i1 %84, label %.preheader, label %.critedge

.preheader:                                       ; preds = %80
  %85 = getelementptr inbounds i8, ptr %0, i64 800
  %86 = tail call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #7
  %87 = icmp ugt i64 %86, 1
  br i1 %87, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader
  %88 = getelementptr inbounds i8, ptr %0, i64 624
  %89 = getelementptr inbounds i8, ptr %0, i64 648
  br i1 %3, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %.lr.ph.split.us
  %90 = phi i64 [ %95, %.lr.ph.split.us ], [ 1, %.lr.ph ]
  %.0278.us = phi i32 [ %94, %.lr.ph.split.us ], [ 1, %.lr.ph ]
  tail call void @_ZN17RigidBodyDynamics16jcalc_X_lambda_SERNS_5ModelEjRKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE(ptr noundef nonnull align 8 dereferenceable(872) %0, i32 noundef %.0278.us, ptr noundef nonnull align 8 dereferenceable(16) %1)
  %91 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %90) #7
  %92 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %90) #7
  %93 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaaSERKS1_(ptr noundef nonnull align 8 dereferenceable(80) %92, ptr noundef nonnull align 8 dereferenceable(80) %91)
  %94 = add i32 %.0278.us, 1
  %95 = zext i32 %94 to i64
  %96 = tail call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #7
  %97 = icmp ugt i64 %96, %95
  br i1 %97, label %.lr.ph.split.us, label %._crit_edge, !llvm.loop !88

.critedge:                                        ; preds = %4, %80
  tail call void @__assert_fail(ptr noundef nonnull @.str, ptr noundef nonnull @.str.4, i32 noundef 174, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics27CompositeRigidBodyAlgorithmERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS3_IdLin1ELin1ELi0ELin1ELin1EEEb) #8
  unreachable

._crit_edge:                                      ; preds = %.lr.ph.split, %.lr.ph.split.us, %.preheader
  %98 = tail call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #7
  %99 = trunc i64 %98 to i32
  %.0223291 = add i32 %99, -1
  %.not292 = icmp eq i32 %.0223291, 0
  br i1 %.not292, label %._crit_edge296, label %.lr.ph295

.lr.ph295:                                        ; preds = %._crit_edge
  %100 = getelementptr inbounds i8, ptr %0, i64 648
  %101 = getelementptr inbounds i8, ptr %0, i64 720
  %102 = getelementptr inbounds i8, ptr %0, i64 160
  %103 = getelementptr inbounds i8, ptr %0, i64 184
  %104 = getelementptr inbounds i8, ptr %0, i64 328
  %105 = getelementptr inbounds i8, ptr %11, i64 8
  %106 = getelementptr inbounds i8, ptr %10, i64 8
  %107 = getelementptr inbounds i8, ptr %0, i64 448
  %108 = getelementptr inbounds i8, ptr %18, i64 8
  %109 = getelementptr inbounds i8, ptr %17, i64 8
  %110 = getelementptr inbounds i8, ptr %24, i64 8
  %111 = getelementptr inbounds i8, ptr %26, i64 8
  %112 = getelementptr inbounds i8, ptr %29, i64 8
  %113 = getelementptr inbounds i8, ptr %38, i64 8
  %114 = getelementptr inbounds i8, ptr %32, i64 8
  %115 = getelementptr inbounds i8, ptr %44, i64 8
  %116 = getelementptr inbounds i8, ptr %50, i64 8
  %117 = getelementptr inbounds i8, ptr %52, i64 8
  %118 = getelementptr inbounds i8, ptr %55, i64 8
  %119 = getelementptr inbounds i8, ptr %64, i64 8
  %120 = getelementptr inbounds i8, ptr %58, i64 8
  %121 = getelementptr inbounds i8, ptr %70, i64 8
  %122 = zext i32 %.0223291 to i64
  br label %131

.lr.ph.split:                                     ; preds = %.lr.ph, %.lr.ph.split
  %123 = phi i64 [ %128, %.lr.ph.split ], [ 1, %.lr.ph ]
  %.0278 = phi i32 [ %127, %.lr.ph.split ], [ 1, %.lr.ph ]
  %124 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %123) #7
  %125 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef %123) #7
  %126 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaaSERKS1_(ptr noundef nonnull align 8 dereferenceable(80) %125, ptr noundef nonnull align 8 dereferenceable(80) %124)
  %127 = add i32 %.0278, 1
  %128 = zext i32 %127 to i64
  %129 = tail call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %85) #7
  %130 = icmp ugt i64 %129, %128
  br i1 %130, label %.lr.ph.split, label %._crit_edge, !llvm.loop !88

._crit_edge296:                                   ; preds = %554, %._crit_edge
  ret void

131:                                              ; preds = %.lr.ph295, %554
  %indvars.iv = phi i64 [ %122, %.lr.ph295 ], [ %indvars.iv.next, %554 ]
  %132 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv) #7
  %133 = load i32, ptr %132, align 4, !tbaa !90
  %.not246 = icmp eq i32 %133, 0
  br i1 %.not246, label %146, label %134

134:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %5) #7
  %135 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv) #7
  %136 = load i32, ptr %135, align 4, !tbaa !90
  %137 = zext i32 %136 to i64
  %138 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef %137) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %6) #7
  %139 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %indvars.iv) #7
  %140 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef %indvars.iv) #7
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERKNS0_23SpatialRigidBodyInertiaE(ptr dead_on_unwind nonnull writable sret(%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia") align 8 %6, ptr noundef nonnull align 8 dereferenceable(96) %139, ptr noundef nonnull align 8 dereferenceable(80) %140)
  call void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaplERKS1_(ptr dead_on_unwind nonnull writable sret(%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia") align 8 %5, ptr noundef nonnull align 8 dereferenceable(80) %138, ptr noundef nonnull align 8 dereferenceable(80) %6)
  %141 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv) #7
  %142 = load i32, ptr %141, align 4, !tbaa !90
  %143 = zext i32 %142 to i64
  %144 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef %143) #7
  %145 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaaSEOS1_(ptr noundef nonnull align 8 dereferenceable(80) %144, ptr noundef nonnull align 8 dereferenceable(80) %5) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %5) #7
  br label %146

146:                                              ; preds = %134, %131
  %147 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %indvars.iv) #7
  %148 = getelementptr inbounds i8, ptr %147, i64 16
  %149 = load i32, ptr %148, align 8, !tbaa !91
  %150 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %indvars.iv) #7
  %151 = getelementptr inbounds i8, ptr %150, i64 12
  %152 = load i32, ptr %151, align 4, !tbaa !94
  %153 = icmp eq i32 %152, 1
  br i1 %153, label %154, label %253

154:                                              ; preds = %146
  %155 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %indvars.iv) #7
  %156 = getelementptr inbounds i8, ptr %155, i64 8
  %157 = load i32, ptr %156, align 8, !tbaa !95
  %.not247 = icmp eq i32 %157, 21
  br i1 %.not247, label %253, label %158

158:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) #7
  %159 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef %indvars.iv) #7
  %160 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %indvars.iv) #7
  call void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiamlERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %7, ptr noundef nonnull align 8 dereferenceable(80) %159, ptr noundef nonnull align 16 dereferenceable(48) %160)
  %161 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %indvars.iv) #7
  %162 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotIS2_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENS6_17scalar_product_opIdSA_EEE10ReturnTypeERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %161, ptr noundef nonnull align 1 dereferenceable(1) %7)
  %163 = zext i32 %149 to i64
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %163, i64 noundef %163)
  store double %162, ptr %164, align 8, !tbaa !96
  %165 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv) #7
  %166 = load i32, ptr %165, align 4, !tbaa !90
  %.not271279 = icmp eq i32 %166, 0
  br i1 %.not271279, label %._crit_edge282, label %.lr.ph281

.lr.ph281:                                        ; preds = %158, %250
  %167 = phi i64 [ %172, %250 ], [ %indvars.iv, %158 ]
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %8) #7
  %168 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %167) #7
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransform14applyTransposeERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%class.SpatialVector_t) align 16 %8, ptr noundef nonnull align 8 dereferenceable(96) %168, ptr noundef nonnull align 16 dereferenceable(48) %7)
  %169 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZN15SpatialVector_taSEOS_(ptr noundef nonnull align 16 dereferenceable(48) %7, ptr noundef nonnull align 16 dereferenceable(48) %8) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) #7
  %170 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %167) #7
  %171 = load i32, ptr %170, align 4, !tbaa !90
  %172 = zext i32 %171 to i64
  %173 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %172) #7
  %174 = getelementptr inbounds i8, ptr %173, i64 16
  %175 = load i32, ptr %174, align 8, !tbaa !91
  %176 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %172) #7
  %177 = getelementptr inbounds i8, ptr %176, i64 8
  %178 = load i32, ptr %177, align 8, !tbaa !95
  %.not272 = icmp eq i32 %178, 21
  %179 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %172) #7
  br i1 %.not272, label %210, label %180

180:                                              ; preds = %.lr.ph281
  %181 = getelementptr inbounds i8, ptr %179, i64 12
  %182 = load i32, ptr %181, align 4, !tbaa !94
  %183 = icmp eq i32 %182, 1
  br i1 %183, label %184, label %192

184:                                              ; preds = %180
  %185 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %172) #7
  %186 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE3dotIS2_EENS_20ScalarBinaryOpTraitsIdNS_8internal6traitsIT_E6ScalarENS6_17scalar_product_opIdSA_EEE10ReturnTypeERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %7, ptr noundef nonnull align 1 dereferenceable(1) %185)
  %187 = zext i32 %175 to i64
  %188 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %163, i64 noundef %187)
  store double %186, ptr %188, align 8, !tbaa !96
  %189 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %163, i64 noundef %187)
  %190 = load double, ptr %189, align 8, !tbaa !96
  %191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %187, i64 noundef %163)
  store double %190, ptr %191, align 8, !tbaa !96
  br label %250

192:                                              ; preds = %180
  %193 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %172) #7
  %194 = getelementptr inbounds i8, ptr %193, i64 12
  %195 = load i32, ptr %194, align 4, !tbaa !94
  %196 = icmp eq i32 %195, 3
  br i1 %196, label %197, label %250

197:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %198 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %7)
  store ptr %198, ptr %12, align 8
  %199 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %172) #7
  %200 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEEEmlINS2_IdLi6ELi3ELi0ELi6ELi3EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 1 dereferenceable(1) %199)
  %201 = extractvalue { ptr, ptr } %200, 0
  store ptr %201, ptr %11, align 8
  %202 = extractvalue { ptr, ptr } %200, 1
  store ptr %202, ptr %105, align 8
  %203 = call { ptr, ptr } @_ZNK5Eigen9DenseBaseINS_7ProductINS_9TransposeINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEENS3_IdLi6ELi3ELi0ELi6ELi3EEELi0EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %11)
  %204 = extractvalue { ptr, ptr } %203, 0
  store ptr %204, ptr %10, align 8
  %205 = extractvalue { ptr, ptr } %203, 1
  store ptr %205, ptr %106, align 8
  call void @_ZN9Vector3_tC2IN5Eigen9TransposeIKNS1_7ProductINS2_INS1_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEENS4_IdLi6ELi3ELi0ELi6ELi3EEELi0EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 1 dereferenceable(1) %10)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  %206 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %9)
  store ptr %206, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %14) #7
  %207 = zext i32 %175 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi1ELi3EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.274") align 8 %14, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %163, i64 noundef %207)
  %208 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1ELi3ELb0EEaSINS_9TransposeINS1_IdLi3ELi1ELi0ELi3ELi1EEEEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 1 dereferenceable(1) %13)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi3ELi1EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.287") align 8 %15, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %207, i64 noundef %163)
  %209 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3ELi1ELb0EEaSINS1_IdLi3ELi1ELi0ELi3ELi1EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 1 dereferenceable(1) %9)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #7
  br label %250

210:                                              ; preds = %.lr.ph281
  %211 = getelementptr inbounds i8, ptr %179, i64 8
  %212 = load i32, ptr %211, align 8, !tbaa !95
  %213 = icmp eq i32 %212, 21
  br i1 %213, label %214, label %250

214:                                              ; preds = %210
  %215 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %172) #7
  %216 = getelementptr inbounds i8, ptr %215, i64 20
  %217 = load i32, ptr %216, align 4, !tbaa !98
  %218 = zext i32 %217 to i64
  %219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %218) #7
  %220 = load ptr, ptr %219, align 8, !tbaa !99
  %221 = getelementptr inbounds i8, ptr %220, i64 8
  %222 = load i32, ptr %221, align 8, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %223 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %7)
  store ptr %223, ptr %19, align 8
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %218) #7
  %225 = load ptr, ptr %224, align 8, !tbaa !99
  %226 = getelementptr inbounds i8, ptr %225, i64 112
  %227 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEEEmlINS2_IdLin1ELin1ELi0ELin1ELin1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %19, ptr noundef nonnull align 1 dereferenceable(1) %226)
  %228 = extractvalue { ptr, ptr } %227, 0
  store ptr %228, ptr %18, align 8
  %229 = extractvalue { ptr, ptr } %227, 1
  store ptr %229, ptr %108, align 8
  %230 = call { ptr, ptr } @_ZNK5Eigen9DenseBaseINS_7ProductINS_9TransposeINS_6MatrixIdLi6ELi1ELi0ELi6ELi1EEEEENS3_IdLin1ELin1ELi0ELin1ELin1EEELi0EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %18)
  %231 = extractvalue { ptr, ptr } %230, 0
  store ptr %231, ptr %17, align 8
  %232 = extractvalue { ptr, ptr } %230, 1
  store ptr %232, ptr %109, align 8
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_9TransposeIKNS_7ProductINS3_INS0_IdLi6ELi1ELi0ELi6ELi1EEEEENS0_IdLin1ELin1ELi0ELin1ELin1EEELi0EEEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 1 dereferenceable(1) %17)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  %233 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %234 unwind label %242

234:                                              ; preds = %214
  store ptr %233, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %21) #7
  %235 = zext i32 %175 to i64
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIijEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %21, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %163, i64 noundef %235, i32 noundef 1, i32 noundef %222)
          to label %236 unwind label %244

236:                                              ; preds = %234
  %237 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_9TransposeINS1_IdLin1ELi1ELi0ELin1ELi1EEEEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %21, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %238 unwind label %244

238:                                              ; preds = %236
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %22) #7
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIjiEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %22, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %235, i64 noundef %163, i32 noundef %222, i32 noundef 1)
          to label %239 unwind label %247

239:                                              ; preds = %238
  %240 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS1_IdLin1ELi1ELi0ELin1ELi1EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %22, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %241 unwind label %247

241:                                              ; preds = %239
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %22) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  br label %250

242:                                              ; preds = %214
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %246

244:                                              ; preds = %236, %234
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %21) #7
  br label %246

246:                                              ; preds = %244, %242
  %.pn273 = phi { ptr, i32 } [ %245, %244 ], [ %243, %242 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %249

247:                                              ; preds = %239, %238
  %248 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %22) #7
  br label %249

249:                                              ; preds = %247, %246
  %.pn275 = phi { ptr, i32 } [ %248, %247 ], [ %.pn273, %246 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #7
  br label %556

250:                                              ; preds = %210, %241, %184, %197, %192
  %251 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %172) #7
  %252 = load i32, ptr %251, align 4, !tbaa !90
  %.not271 = icmp eq i32 %252, 0
  br i1 %.not271, label %._crit_edge282, label %.lr.ph281, !llvm.loop !111

._crit_edge282:                                   ; preds = %250, %158
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) #7
  br label %554

253:                                              ; preds = %154, %146
  %254 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %indvars.iv) #7
  %255 = getelementptr inbounds i8, ptr %254, i64 12
  %256 = load i32, ptr %255, align 4, !tbaa !94
  %257 = icmp eq i32 %256, 3
  br i1 %257, label %258, label %362

258:                                              ; preds = %253
  %259 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %indvars.iv) #7
  %260 = getelementptr inbounds i8, ptr %259, i64 8
  %261 = load i32, ptr %260, align 8, !tbaa !95
  %.not248 = icmp eq i32 %261, 21
  br i1 %.not248, label %362, label %262

262:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %25) #7
  %263 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef %indvars.iv) #7
  call void @_ZNK17RigidBodyDynamics4Math23SpatialRigidBodyInertia8toMatrixEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %25, ptr noundef nonnull align 8 dereferenceable(80) %263)
  %264 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %indvars.iv) #7
  %265 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi3ELi0ELi6ELi3EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %25, ptr noundef nonnull align 1 dereferenceable(1) %264)
  %266 = extractvalue { ptr, ptr } %265, 0
  store ptr %266, ptr %24, align 8
  %267 = extractvalue { ptr, ptr } %265, 1
  store ptr %267, ptr %110, align 8
  call void @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEC2INS_7ProductINS0_IdLi6ELi6ELi0ELi6ELi6EEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %23, ptr noundef nonnull align 1 dereferenceable(1) %24)
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %268 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %indvars.iv) #7
  %269 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %268)
  store ptr %269, ptr %27, align 8
  %270 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %27, ptr noundef nonnull align 1 dereferenceable(1) %23)
  %271 = extractvalue { ptr, ptr } %270, 0
  store ptr %271, ptr %26, align 8
  %272 = extractvalue { ptr, ptr } %270, 1
  store ptr %272, ptr %111, align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %28) #7
  %273 = zext i32 %149 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi3ELi3EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.346") align 8 %28, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %273, i64 noundef %273)
  %274 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3ELi3ELb0EEaSINS_7ProductINS_9TransposeINS1_IdLi6ELi3ELi0ELi6ELi3EEEEES7_Li0EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %28, ptr noundef nonnull align 1 dereferenceable(1) %26)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #7
  %275 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv) #7
  %276 = load i32, ptr %275, align 4, !tbaa !90
  %.not266283 = icmp eq i32 %276, 0
  br i1 %.not266283, label %._crit_edge286, label %.lr.ph285

.lr.ph285:                                        ; preds = %262, %359
  %277 = phi i64 [ %285, %359 ], [ %indvars.iv, %262 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %30) #7
  %278 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %277) #7
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %30, ptr noundef nonnull align 8 dereferenceable(96) %278)
  %279 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLi6ELi3ELi0ELi6ELi3EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %30, ptr noundef nonnull align 1 dereferenceable(1) %23)
  %280 = extractvalue { ptr, ptr } %279, 0
  store ptr %280, ptr %29, align 8
  %281 = extractvalue { ptr, ptr } %279, 1
  store ptr %281, ptr %112, align 8
  %282 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEaSINS_7ProductINS0_IdLi6ELi6ELi0ELi6ELi6EEES1_Li0EEEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %23, ptr noundef nonnull align 1 dereferenceable(1) %29)
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #7
  %283 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %277) #7
  %284 = load i32, ptr %283, align 4, !tbaa !90
  %285 = zext i32 %284 to i64
  %286 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %285) #7
  %287 = getelementptr inbounds i8, ptr %286, i64 16
  %288 = load i32, ptr %287, align 8, !tbaa !91
  %289 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %285) #7
  %290 = getelementptr inbounds i8, ptr %289, i64 8
  %291 = load i32, ptr %290, align 8, !tbaa !95
  %.not267 = icmp eq i32 %291, 21
  %292 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %285) #7
  br i1 %.not267, label %322, label %293

293:                                              ; preds = %.lr.ph285
  %294 = getelementptr inbounds i8, ptr %292, i64 12
  %295 = load i32, ptr %294, align 4, !tbaa !94
  %296 = icmp eq i32 %295, 1
  br i1 %296, label %297, label %307

297:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #7
  %298 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %23)
  store ptr %298, ptr %33, align 8
  %299 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %285) #7
  %300 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %33, ptr noundef nonnull align 1 dereferenceable(1) %299)
  %301 = extractvalue { ptr, ptr } %300, 0
  store ptr %301, ptr %32, align 8
  %302 = extractvalue { ptr, ptr } %300, 1
  store ptr %302, ptr %114, align 8
  call void @_ZN9Vector3_tC2IN5Eigen7ProductINS1_9TransposeINS1_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEENS4_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 1 dereferenceable(1) %32)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %34) #7
  %303 = zext i32 %288 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi3ELi1EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.287") align 8 %34, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %273, i64 noundef %303)
  %304 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3ELi1ELb0EEaSINS1_IdLi3ELi1ELi0ELi3ELi1EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %34, ptr noundef nonnull align 1 dereferenceable(1) %31)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  %305 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %31)
  store ptr %305, ptr %35, align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %36) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi1ELi3EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.274") align 8 %36, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %303, i64 noundef %273)
  %306 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1ELi3ELb0EEaSINS_9TransposeINS1_IdLi3ELi1ELi0ELi3ELi1EEEEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %36, ptr noundef nonnull align 1 dereferenceable(1) %35)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #7
  br label %359

307:                                              ; preds = %293
  %308 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %285) #7
  %309 = getelementptr inbounds i8, ptr %308, i64 12
  %310 = load i32, ptr %309, align 4, !tbaa !94
  %311 = icmp eq i32 %310, 3
  br i1 %311, label %312, label %359

312:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  %313 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %23)
  store ptr %313, ptr %39, align 8
  %314 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %285) #7
  %315 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %39, ptr noundef nonnull align 1 dereferenceable(1) %314)
  %316 = extractvalue { ptr, ptr } %315, 0
  store ptr %316, ptr %38, align 8
  %317 = extractvalue { ptr, ptr } %315, 1
  store ptr %317, ptr %113, align 8
  call void @_ZN9Matrix3_tC2IN5Eigen7ProductINS1_9TransposeINS1_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEES5_Li0EEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %37, ptr noundef nonnull align 1 dereferenceable(1) %38)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %40) #7
  %318 = zext i32 %288 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi3ELi3EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.346") align 8 %40, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %273, i64 noundef %318)
  %319 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3ELi3ELb0EEaSINS1_IdLi3ELi3ELi0ELi3ELi3EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %40, ptr noundef nonnull align 1 dereferenceable(1) %37)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #7
  %320 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %37)
  store ptr %320, ptr %41, align 8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %42) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockILi3ELi3EEENS3_13FixedBlockXprIXT_EXT0_EE4TypeEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.346") align 8 %42, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %318, i64 noundef %273)
  %321 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi3ELi3ELb0EEaSINS_9TransposeINS1_IdLi3ELi3ELi0ELi3ELi3EEEEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(48) %42, ptr noundef nonnull align 1 dereferenceable(1) %41)
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %37) #7
  br label %359

322:                                              ; preds = %.lr.ph285
  %323 = getelementptr inbounds i8, ptr %292, i64 8
  %324 = load i32, ptr %323, align 8, !tbaa !95
  %325 = icmp eq i32 %324, 21
  br i1 %325, label %326, label %359

326:                                              ; preds = %322
  %327 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %285) #7
  %328 = getelementptr inbounds i8, ptr %327, i64 20
  %329 = load i32, ptr %328, align 4, !tbaa !98
  %330 = zext i32 %329 to i64
  %331 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %330) #7
  %332 = load ptr, ptr %331, align 8, !tbaa !99
  %333 = getelementptr inbounds i8, ptr %332, i64 8
  %334 = load i32, ptr %333, align 8, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #7
  %335 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %23)
  store ptr %335, ptr %45, align 8
  %336 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %330) #7
  %337 = load ptr, ptr %336, align 8, !tbaa !99
  %338 = getelementptr inbounds i8, ptr %337, i64 112
  %339 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEEEmlINS2_IdLin1ELin1ELi0ELin1ELin1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %45, ptr noundef nonnull align 1 dereferenceable(1) %338)
  %340 = extractvalue { ptr, ptr } %339, 0
  store ptr %340, ptr %44, align 8
  %341 = extractvalue { ptr, ptr } %339, 1
  store ptr %341, ptr %115, align 8
  call void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_7ProductINS_9TransposeINS0_IdLi6ELi3ELi0ELi6ELi3EEEEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 1 dereferenceable(1) %44)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %46) #7
  %342 = zext i32 %288 to i64
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIijEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %46, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %273, i64 noundef %342, i32 noundef 3, i32 noundef %334)
          to label %343 unwind label %351

343:                                              ; preds = %326
  %344 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSIS2_EERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %46, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %345 unwind label %351

345:                                              ; preds = %343
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %46) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #7
  %346 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %347 unwind label %353

347:                                              ; preds = %345
  store ptr %346, ptr %47, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %48) #7
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIjiEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %48, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %342, i64 noundef %273, i32 noundef %334, i32 noundef 3)
          to label %348 unwind label %355

348:                                              ; preds = %347
  %349 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_9TransposeIS2_EEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %48, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %350 unwind label %355

350:                                              ; preds = %348
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #7
  br label %359

351:                                              ; preds = %343, %326
  %352 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %46) #7
  br label %358

353:                                              ; preds = %345
  %354 = landingpad { ptr, i32 }
          cleanup
  br label %357

355:                                              ; preds = %348, %347
  %356 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %48) #7
  br label %357

357:                                              ; preds = %355, %353
  %.pn268 = phi { ptr, i32 } [ %356, %355 ], [ %354, %353 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #7
  br label %358

358:                                              ; preds = %357, %351
  %.pn268.pn = phi { ptr, i32 } [ %.pn268, %357 ], [ %352, %351 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %23) #7
  br label %556

359:                                              ; preds = %322, %350, %297, %312, %307
  %360 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %285) #7
  %361 = load i32, ptr %360, align 4, !tbaa !90
  %.not266 = icmp eq i32 %361, 0
  br i1 %.not266, label %._crit_edge286, label %.lr.ph285, !llvm.loop !112

._crit_edge286:                                   ; preds = %359, %262
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %23) #7
  br label %554

362:                                              ; preds = %258, %253
  %363 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %indvars.iv) #7
  %364 = getelementptr inbounds i8, ptr %363, i64 8
  %365 = load i32, ptr %364, align 8, !tbaa !95
  %366 = icmp eq i32 %365, 21
  br i1 %366, label %367, label %554

367:                                              ; preds = %362
  %368 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %indvars.iv) #7
  %369 = getelementptr inbounds i8, ptr %368, i64 20
  %370 = load i32, ptr %369, align 4, !tbaa !98
  %371 = zext i32 %370 to i64
  %372 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %371) #7
  %373 = load ptr, ptr %372, align 8, !tbaa !99
  %374 = getelementptr inbounds i8, ptr %373, i64 8
  %375 = load i32, ptr %374, align 8, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %51) #7
  %376 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef %indvars.iv) #7
  call void @_ZNK17RigidBodyDynamics4Math23SpatialRigidBodyInertia8toMatrixEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %51, ptr noundef nonnull align 8 dereferenceable(80) %376)
  %377 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %371) #7
  %378 = load ptr, ptr %377, align 8, !tbaa !99
  %379 = getelementptr inbounds i8, ptr %378, i64 112
  %380 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLin1ELin1ELi0ELin1ELin1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %51, ptr noundef nonnull align 1 dereferenceable(1) %379)
  %381 = extractvalue { ptr, ptr } %380, 0
  store ptr %381, ptr %50, align 8
  %382 = extractvalue { ptr, ptr } %380, 1
  store ptr %382, ptr %116, align 8
  call void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_7ProductINS0_IdLi6ELi6ELi0ELi6ELi6EEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 1 dereferenceable(1) %50)
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #7
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %371) #7
  %384 = load ptr, ptr %383, align 8, !tbaa !99
  %385 = getelementptr inbounds i8, ptr %384, i64 112
  %386 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %385)
          to label %387 unwind label %447

387:                                              ; preds = %367
  store ptr %386, ptr %53, align 8
  %388 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %53, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %389 unwind label %447

389:                                              ; preds = %387
  %390 = extractvalue { ptr, ptr } %388, 0
  store ptr %390, ptr %52, align 8
  %391 = extractvalue { ptr, ptr } %388, 1
  store ptr %391, ptr %117, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %54) #7
  %392 = zext i32 %149 to i64
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIjjEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %54, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %392, i64 noundef %392, i32 noundef %375, i32 noundef %375)
          to label %393 unwind label %449

393:                                              ; preds = %389
  %394 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_7ProductINS_9TransposeIS2_EES2_Li0EEEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %54, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %395 unwind label %449

395:                                              ; preds = %393
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #7
  %396 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %indvars.iv) #7
  %397 = load i32, ptr %396, align 4, !tbaa !90
  %.not250287 = icmp eq i32 %397, 0
  br i1 %.not250287, label %._crit_edge290, label %.lr.ph289

.lr.ph289:                                        ; preds = %395, %550
  %398 = phi i64 [ %409, %550 ], [ %indvars.iv, %395 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #7
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %56) #7
  %399 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %398) #7
  invoke void @_ZNK17RigidBodyDynamics4Math16SpatialTransform17toMatrixTransposeEv(ptr dead_on_unwind nonnull writable sret(%class.SpatialMatrix_t) align 16 %56, ptr noundef nonnull align 8 dereferenceable(96) %399)
          to label %400 unwind label %452

400:                                              ; preds = %.lr.ph289
  %401 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEmlINS1_IdLin1ELin1ELi0ELin1ELin1EEEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS7_EE(ptr noundef nonnull align 1 dereferenceable(1) %56, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %402 unwind label %452

402:                                              ; preds = %400
  %403 = extractvalue { ptr, ptr } %401, 0
  store ptr %403, ptr %55, align 8
  %404 = extractvalue { ptr, ptr } %401, 1
  store ptr %404, ptr %118, align 8
  %405 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_7ProductINS0_IdLi6ELi6ELi0ELi6ELi6EEES1_Li0EEEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %406 unwind label %452

406:                                              ; preds = %402
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #7
  %407 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %398) #7
  %408 = load i32, ptr %407, align 4, !tbaa !90
  %409 = zext i32 %408 to i64
  %410 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %409) #7
  %411 = getelementptr inbounds i8, ptr %410, i64 16
  %412 = load i32, ptr %411, align 8, !tbaa !91
  %413 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %409) #7
  %414 = getelementptr inbounds i8, ptr %413, i64 8
  %415 = load i32, ptr %414, align 8, !tbaa !95
  %.not251 = icmp eq i32 %415, 21
  %416 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %409) #7
  br i1 %.not251, label %507, label %417

417:                                              ; preds = %406
  %418 = getelementptr inbounds i8, ptr %416, i64 12
  %419 = load i32, ptr %418, align 4, !tbaa !94
  %420 = icmp eq i32 %419, 1
  br i1 %420, label %421, label %465

421:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %58) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #7
  %422 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %423 unwind label %454

423:                                              ; preds = %421
  store ptr %422, ptr %59, align 8
  %424 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef %409) #7
  %425 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLi6ELi1ELi0ELi6ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %59, ptr noundef nonnull align 1 dereferenceable(1) %424)
          to label %426 unwind label %454

426:                                              ; preds = %423
  %427 = extractvalue { ptr, ptr } %425, 0
  store ptr %427, ptr %58, align 8
  %428 = extractvalue { ptr, ptr } %425, 1
  store ptr %428, ptr %120, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_7ProductINS_9TransposeIS1_EENS0_IdLi6ELi1ELi0ELi6ELi1EEELi0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %429 unwind label %454

429:                                              ; preds = %426
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %60) #7
  %430 = zext i32 %412 to i64
  %431 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %432 unwind label %456

432:                                              ; preds = %429
  %433 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %434 unwind label %456

434:                                              ; preds = %432
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIllEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %60, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %392, i64 noundef %430, i64 noundef %431, i64 noundef %433)
          to label %435 unwind label %456

435:                                              ; preds = %434
  %436 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSIS2_EERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %60, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %437 unwind label %456

437:                                              ; preds = %435
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %60) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #7
  %438 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %439 unwind label %458

439:                                              ; preds = %437
  store ptr %438, ptr %61, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %62) #7
  %440 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %441 unwind label %460

441:                                              ; preds = %439
  %442 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %443 unwind label %460

443:                                              ; preds = %441
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIllEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %62, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %430, i64 noundef %392, i64 noundef %440, i64 noundef %442)
          to label %444 unwind label %460

444:                                              ; preds = %443
  %445 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_9TransposeIS2_EEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %62, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %446 unwind label %460

446:                                              ; preds = %444
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #7
  br label %550

447:                                              ; preds = %387, %367
  %448 = landingpad { ptr, i32 }
          cleanup
  br label %451

449:                                              ; preds = %393, %389
  %450 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %54) #7
  br label %451

451:                                              ; preds = %449, %447
  %.pn = phi { ptr, i32 } [ %450, %449 ], [ %448, %447 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #7
  br label %553

452:                                              ; preds = %402, %400, %.lr.ph289
  %453 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %56) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #7
  br label %553

454:                                              ; preds = %426, %423, %421
  %455 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %58) #7
  br label %464

456:                                              ; preds = %435, %434, %432, %429
  %457 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %60) #7
  br label %463

458:                                              ; preds = %437
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %462

460:                                              ; preds = %444, %443, %441, %439
  %461 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %62) #7
  br label %462

462:                                              ; preds = %460, %458
  %.pn260 = phi { ptr, i32 } [ %461, %460 ], [ %459, %458 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  br label %463

463:                                              ; preds = %462, %456
  %.pn260.pn = phi { ptr, i32 } [ %.pn260, %462 ], [ %457, %456 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #7
  br label %464

464:                                              ; preds = %463, %454
  %.pn260.pn.pn = phi { ptr, i32 } [ %.pn260.pn, %463 ], [ %455, %454 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #7
  br label %553

465:                                              ; preds = %417
  %466 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %409) #7
  %467 = getelementptr inbounds i8, ptr %466, i64 12
  %468 = load i32, ptr %467, align 4, !tbaa !94
  %469 = icmp eq i32 %468, 3
  br i1 %469, label %470, label %550

470:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %63) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %64) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #7
  %471 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %472 unwind label %496

472:                                              ; preds = %470
  store ptr %471, ptr %65, align 8
  %473 = call noundef nonnull align 16 dereferenceable(144) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %104, i64 noundef %409) #7
  %474 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLi6ELi3ELi0ELi6ELi3EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %65, ptr noundef nonnull align 1 dereferenceable(1) %473)
          to label %475 unwind label %496

475:                                              ; preds = %472
  %476 = extractvalue { ptr, ptr } %474, 0
  store ptr %476, ptr %64, align 8
  %477 = extractvalue { ptr, ptr } %474, 1
  store ptr %477, ptr %119, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_7ProductINS_9TransposeIS1_EENS0_IdLi6ELi3ELi0ELi6ELi3EEELi0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %63, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %478 unwind label %496

478:                                              ; preds = %475
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %66) #7
  %479 = zext i32 %412 to i64
  %480 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %481 unwind label %498

481:                                              ; preds = %478
  %482 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %483 unwind label %498

483:                                              ; preds = %481
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIllEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %66, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %392, i64 noundef %479, i64 noundef %480, i64 noundef %482)
          to label %484 unwind label %498

484:                                              ; preds = %483
  %485 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSIS2_EERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %66, ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %486 unwind label %498

486:                                              ; preds = %484
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %66) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #7
  %487 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %63)
          to label %488 unwind label %500

488:                                              ; preds = %486
  store ptr %487, ptr %67, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %68) #7
  %489 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %490 unwind label %502

490:                                              ; preds = %488
  %491 = invoke noundef i64 @_ZNK5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4rowsEv(ptr noundef nonnull align 8 dereferenceable(24) %63)
          to label %492 unwind label %502

492:                                              ; preds = %490
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIllEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %68, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %479, i64 noundef %392, i64 noundef %489, i64 noundef %491)
          to label %493 unwind label %502

493:                                              ; preds = %492
  %494 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_9TransposeIS2_EEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %68, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %495 unwind label %502

495:                                              ; preds = %493
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #7
  br label %550

496:                                              ; preds = %475, %472, %470
  %497 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #7
  br label %506

498:                                              ; preds = %484, %483, %481, %478
  %499 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %66) #7
  br label %505

500:                                              ; preds = %486
  %501 = landingpad { ptr, i32 }
          cleanup
  br label %504

502:                                              ; preds = %493, %492, %490, %488
  %503 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %68) #7
  br label %504

504:                                              ; preds = %502, %500
  %.pn256 = phi { ptr, i32 } [ %503, %502 ], [ %501, %500 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  br label %505

505:                                              ; preds = %504, %498
  %.pn256.pn = phi { ptr, i32 } [ %.pn256, %504 ], [ %499, %498 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #7
  br label %506

506:                                              ; preds = %505, %496
  %.pn256.pn.pn = phi { ptr, i32 } [ %.pn256.pn, %505 ], [ %497, %496 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %63) #7
  br label %553

507:                                              ; preds = %406
  %508 = getelementptr inbounds i8, ptr %416, i64 8
  %509 = load i32, ptr %508, align 8, !tbaa !95
  %510 = icmp eq i32 %509, 21
  br i1 %510, label %511, label %550

511:                                              ; preds = %507
  %512 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %102, i64 noundef %409) #7
  %513 = getelementptr inbounds i8, ptr %512, i64 20
  %514 = load i32, ptr %513, align 4, !tbaa !98
  %515 = zext i32 %514 to i64
  %516 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %515) #7
  %517 = load ptr, ptr %516, align 8, !tbaa !99
  %518 = getelementptr inbounds i8, ptr %517, i64 8
  %519 = load i32, ptr %518, align 8, !tbaa !100
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %69) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #7
  %520 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %521 unwind label %539

521:                                              ; preds = %511
  store ptr %520, ptr %71, align 8
  %522 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef %515) #7
  %523 = load ptr, ptr %522, align 8, !tbaa !99
  %524 = getelementptr inbounds i8, ptr %523, i64 112
  %525 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %71, ptr noundef nonnull align 1 dereferenceable(1) %524)
          to label %526 unwind label %539

526:                                              ; preds = %521
  %527 = extractvalue { ptr, ptr } %525, 0
  store ptr %527, ptr %70, align 8
  %528 = extractvalue { ptr, ptr } %525, 1
  store ptr %528, ptr %121, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_7ProductINS_9TransposeIS1_EES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 1 dereferenceable(1) %70)
          to label %529 unwind label %539

529:                                              ; preds = %526
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #7
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %72) #7
  %530 = zext i32 %412 to i64
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIijEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %72, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %392, i64 noundef %530, i32 noundef 3, i32 noundef %519)
          to label %531 unwind label %541

531:                                              ; preds = %529
  %532 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSIS2_EERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %72, ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %533 unwind label %541

533:                                              ; preds = %531
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %72) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #7
  %534 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %69)
          to label %535 unwind label %543

535:                                              ; preds = %533
  store ptr %534, ptr %73, align 8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %74) #7
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE5blockIjiEENS3_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllS6_S7_(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Block.321") align 8 %74, ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %530, i64 noundef %392, i32 noundef %519, i32 noundef 3)
          to label %536 unwind label %545

536:                                              ; preds = %535
  %537 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN5Eigen5BlockINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELin1ELin1ELb0EEaSINS_9TransposeIS2_EEEERS3_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(56) %74, ptr noundef nonnull align 1 dereferenceable(1) %73)
          to label %538 unwind label %545

538:                                              ; preds = %536
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %74) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #7
  br label %550

539:                                              ; preds = %526, %521, %511
  %540 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #7
  br label %549

541:                                              ; preds = %531, %529
  %542 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %72) #7
  br label %548

543:                                              ; preds = %533
  %544 = landingpad { ptr, i32 }
          cleanup
  br label %547

545:                                              ; preds = %536, %535
  %546 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %74) #7
  br label %547

547:                                              ; preds = %545, %543
  %.pn252 = phi { ptr, i32 } [ %546, %545 ], [ %544, %543 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #7
  br label %548

548:                                              ; preds = %547, %541
  %.pn252.pn = phi { ptr, i32 } [ %.pn252, %547 ], [ %542, %541 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  br label %549

549:                                              ; preds = %548, %539
  %.pn252.pn.pn = phi { ptr, i32 } [ %.pn252.pn, %548 ], [ %540, %539 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %69) #7
  br label %553

550:                                              ; preds = %507, %538, %446, %495, %465
  %551 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %409) #7
  %552 = load i32, ptr %551, align 4, !tbaa !90
  %.not250 = icmp eq i32 %552, 0
  br i1 %.not250, label %._crit_edge290, label %.lr.ph289, !llvm.loop !113

._crit_edge290:                                   ; preds = %550, %395
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %49) #7
  br label %554

553:                                              ; preds = %452, %464, %506, %549, %451
  %.pn260.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn, %451 ], [ %.pn260.pn.pn, %464 ], [ %.pn256.pn.pn, %506 ], [ %.pn252.pn.pn, %549 ], [ %453, %452 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %49) #7
  br label %556

554:                                              ; preds = %._crit_edge286, %._crit_edge290, %362, %._crit_edge282
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %555 = and i64 %indvars.iv.next, 4294967295
  %.not = icmp eq i64 %555, 0
  br i1 %.not, label %._crit_edge296, label %131, !llvm.loop !114

556:                                              ; preds = %553, %358, %249
  %.pn275.pn = phi { ptr, i32 } [ %.pn275, %249 ], [ %.pn268.pn, %358 ], [ %.pn260.pn.pn.pn.pn, %553 ]
  resume { ptr, i32 } %.pn275.pn
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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