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

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.Eigen::CwiseNullaryOp" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%"class.Eigen::CwiseNullaryOp.124" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::CwiseNullaryOp.129" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::CwiseNullaryOp.149" = type { %"class.Eigen::internal::variable_if_dynamic", [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }
%class.Matrix3_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 { [9 x double] }
%class.Vector3_t = type { %"class.Eigen::Matrix" }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia" = type { double, %class.Vector3_t, double, double, double, double, double, double }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.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 }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%class.SpatialVector_t = type { %"class.Eigen::Matrix.100" }
%"class.Eigen::Matrix.100" = type { %"class.Eigen::PlainObjectBase.101" }
%"class.Eigen::PlainObjectBase.101" = type { %"class.Eigen::DenseStorage.108" }
%"class.Eigen::DenseStorage.108" = type { %"struct.Eigen::internal::plain_array.109" }
%"struct.Eigen::internal::plain_array.109" = type { [6 x double] }
%"class.Eigen::Matrix.110" = type { %"class.Eigen::PlainObjectBase.111" }
%"class.Eigen::PlainObjectBase.111" = type { %"class.Eigen::DenseStorage.118" }
%"class.Eigen::DenseStorage.118" = type { %"struct.Eigen::internal::plain_array.119" }
%"struct.Eigen::internal::plain_array.119" = type { [18 x double] }
%class.SpatialMatrix_t = type { %"class.Eigen::Matrix.134" }
%"class.Eigen::Matrix.134" = type { %"class.Eigen::PlainObjectBase.135" }
%"class.Eigen::PlainObjectBase.135" = type { %"class.Eigen::DenseStorage.142" }
%"class.Eigen::DenseStorage.142" = type { %"struct.Eigen::internal::plain_array.143" }
%"struct.Eigen::internal::plain_array.143" = type { [36 x double] }
%"class.Eigen::CwiseNullaryOp.166" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.std::vector.171" = type { %"struct.std::_Vector_base.172" }
%"struct.std::_Vector_base.172" = type { %"struct.std::_Vector_base<std::pair<RigidBodyDynamics::JointType, unsigned int>, std::allocator<std::pair<RigidBodyDynamics::JointType, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RigidBodyDynamics::JointType, unsigned int>, std::allocator<std::pair<RigidBodyDynamics::JointType, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RigidBodyDynamics::JointType, unsigned int>, std::allocator<std::pair<RigidBodyDynamics::JointType, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RigidBodyDynamics::JointType, unsigned int>, std::allocator<std::pair<RigidBodyDynamics::JointType, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { i32, i32 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.176" = type { 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.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.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.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::FixedBody" = type { double, %class.Vector3_t, %class.Matrix3_t, i32, %"struct.RigidBodyDynamics::Math::SpatialTransform", %"struct.RigidBodyDynamics::Math::SpatialTransform" }
%"struct.RigidBodyDynamics::CustomJoint" = type { ptr, i32, %"struct.RigidBodyDynamics::Math::SpatialTransform", %"class.Eigen::Matrix.157", %"class.Eigen::Matrix.157", %"class.Eigen::Matrix.157", %"class.Eigen::Matrix.57", %"class.Eigen::Matrix.57" }
%"class.Eigen::Matrix.157" = type { %"class.Eigen::PlainObjectBase.158" }
%"class.Eigen::PlainObjectBase.158" = type { %"class.Eigen::DenseStorage.165" }
%"class.Eigen::DenseStorage.165" = type { ptr, i64, i64 }
%"struct.RigidBodyDynamics::Body" = type <{ double, %class.Vector3_t, %class.Matrix3_t, i8, [7 x i8] }>

@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.4 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE = external hidden unnamed_addr constant [135 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [78 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z17AddBodyFixedJointRN17RigidBodyDynamics5ModelEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(872), i32 noundef, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(105), ptr noundef) #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN17RigidBodyDynamics5Model13IsFixedBodyIdEj(ptr noundef nonnull align 8 dereferenceable(872), i32 noundef) #0 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z20AddBodyMultiDofJointRN17RigidBodyDynamics5ModelEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(872), i32 noundef, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(105), ptr noundef) #3

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(872) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(96) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(105) %4, ptr noundef %5) #3 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca i32, align 4
  %19 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::vector", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %28 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %29 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %30 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %31 = alloca %class.SpatialVector_t, align 16
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca %class.SpatialVector_t, align 16
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca i32, align 4
  %46 = alloca %class.SpatialVector_t, align 16
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca %"class.Eigen::Matrix.110", align 16
  %54 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %55 = alloca %"class.Eigen::Matrix.110", align 16
  %56 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %57 = alloca %class.Matrix3_t, align 8
  %58 = alloca %"class.Eigen::CwiseNullaryOp.124", align 8
  %59 = alloca %class.Vector3_t, align 8
  %60 = alloca %"class.Eigen::CwiseNullaryOp.129", align 8
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %66 = alloca %class.SpatialVector_t, align 16
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca %class.SpatialMatrix_t, align 16
  %74 = alloca %"class.Eigen::CwiseNullaryOp.166", align 8
  %75 = alloca %class.SpatialVector_t, align 16
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca %class.SpatialVector_t, align 16
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca double, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %89 = alloca %"class.Eigen::CwiseNullaryOp.149", align 8
  %90 = alloca %"class.Eigen::CwiseNullaryOp.149", align 8
  %91 = alloca %class.SpatialVector_t, align 16
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  %97 = alloca double, align 8
  %98 = alloca %"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia", align 8
  %99 = alloca %class.SpatialVector_t, align 16
  %100 = alloca double, align 8
  %101 = alloca double, align 8
  %102 = alloca double, align 8
  %103 = alloca double, align 8
  %104 = alloca double, align 8
  %105 = alloca double, align 8
  %106 = alloca %class.SpatialVector_t, align 16
  %107 = alloca double, align 8
  %108 = alloca double, align 8
  %109 = alloca double, align 8
  %110 = alloca double, align 8
  %111 = alloca double, align 8
  %112 = alloca double, align 8
  %113 = alloca %"class.std::vector.171", align 8
  %114 = alloca i32, align 4
  %115 = alloca %"struct.std::pair", align 4
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %119 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %120 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %121 = alloca %"class.__gnu_cxx::__normal_iterator.176", align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store i32 %1, ptr %9, align 4, !tbaa !9
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  %122 = load ptr, ptr %8, align 8
  %123 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 0
  %124 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %123) #8
  %125 = icmp ugt i64 %124, 0
  br i1 %125, label %126, label %127

126:                                              ; preds = %6
  br label %129

127:                                              ; preds = %6
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str.8, i32 noundef 258, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE) #9
  unreachable

128:                                              ; No predecessors!
  br label %129

129:                                              ; preds = %128, %126
  %130 = load ptr, ptr %11, align 8, !tbaa !5
  %131 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %130, i32 0, i32 1
  %132 = load i32, ptr %131, align 8, !tbaa !11
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %135

134:                                              ; preds = %129
  br label %137

135:                                              ; preds = %129
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str.8, i32 noundef 259, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE) #9
  unreachable

136:                                              ; No predecessors!
  br label %137

137:                                              ; preds = %136, %134
  %138 = load ptr, ptr %11, align 8, !tbaa !5
  %139 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %138, i32 0, i32 1
  %140 = load i32, ptr %139, align 8, !tbaa !11
  %141 = icmp eq i32 %140, 13
  br i1 %141, label %142, label %156

142:                                              ; preds = %137
  %143 = load i32, ptr %9, align 4, !tbaa !9
  %144 = load ptr, ptr %10, align 8, !tbaa !5
  %145 = load ptr, ptr %11, align 8, !tbaa !5
  %146 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %5)
  %147 = invoke noundef i32 @_Z17AddBodyFixedJointRN17RigidBodyDynamics5ModelEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(872) %122, i32 noundef %143, ptr noundef nonnull align 8 dereferenceable(96) %144, ptr noundef nonnull align 8 dereferenceable(24) %145, ptr noundef nonnull align 8 dereferenceable(105) %146, ptr noundef %14)
          to label %148 unwind label %152

148:                                              ; preds = %142
  %149 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 6
  store i32 %147, ptr %149, align 4, !tbaa !14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  %150 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 6
  %151 = load i32, ptr %150, align 4, !tbaa !14
  store i32 %151, ptr %7, align 4
  br label %632

152:                                              ; preds = %142
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %15, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %634

156:                                              ; preds = %137
  %157 = load ptr, ptr %11, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %157, i32 0, i32 1
  %159 = load i32, ptr %158, align 8, !tbaa !11
  %160 = icmp eq i32 %159, 6
  br i1 %160, label %191, label %161

161:                                              ; preds = %156
  %162 = load ptr, ptr %11, align 8, !tbaa !5
  %163 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %162, i32 0, i32 1
  %164 = load i32, ptr %163, align 8, !tbaa !11
  %165 = icmp eq i32 %164, 7
  br i1 %165, label %191, label %166

166:                                              ; preds = %161
  %167 = load ptr, ptr %11, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %167, i32 0, i32 1
  %169 = load i32, ptr %168, align 8, !tbaa !11
  %170 = icmp eq i32 %169, 8
  br i1 %170, label %191, label %171

171:                                              ; preds = %166
  %172 = load ptr, ptr %11, align 8, !tbaa !5
  %173 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %172, i32 0, i32 1
  %174 = load i32, ptr %173, align 8, !tbaa !11
  %175 = icmp eq i32 %174, 9
  br i1 %175, label %191, label %176

176:                                              ; preds = %171
  %177 = load ptr, ptr %11, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %177, i32 0, i32 1
  %179 = load i32, ptr %178, align 8, !tbaa !11
  %180 = icmp eq i32 %179, 10
  br i1 %180, label %191, label %181

181:                                              ; preds = %176
  %182 = load ptr, ptr %11, align 8, !tbaa !5
  %183 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %182, i32 0, i32 1
  %184 = load i32, ptr %183, align 8, !tbaa !11
  %185 = icmp eq i32 %184, 11
  br i1 %185, label %191, label %186

186:                                              ; preds = %181
  %187 = load ptr, ptr %11, align 8, !tbaa !5
  %188 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %187, i32 0, i32 1
  %189 = load i32, ptr %188, align 8, !tbaa !11
  %190 = icmp eq i32 %189, 21
  br i1 %190, label %191, label %192

191:                                              ; preds = %186, %181, %176, %171, %166, %161, %156
  br label %237

192:                                              ; preds = %186
  %193 = load ptr, ptr %11, align 8, !tbaa !5
  %194 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %193, i32 0, i32 1
  %195 = load i32, ptr %194, align 8, !tbaa !11
  %196 = icmp ne i32 %195, 2
  br i1 %196, label %197, label %236

197:                                              ; preds = %192
  %198 = load ptr, ptr %11, align 8, !tbaa !5
  %199 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %198, i32 0, i32 1
  %200 = load i32, ptr %199, align 8, !tbaa !11
  %201 = icmp ne i32 %200, 1
  br i1 %201, label %202, label %236

202:                                              ; preds = %197
  %203 = load ptr, ptr %11, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %203, i32 0, i32 1
  %205 = load i32, ptr %204, align 8, !tbaa !11
  %206 = icmp ne i32 %205, 3
  br i1 %206, label %207, label %236

207:                                              ; preds = %202
  %208 = load ptr, ptr %11, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %208, i32 0, i32 1
  %210 = load i32, ptr %209, align 8, !tbaa !11
  %211 = icmp ne i32 %210, 4
  br i1 %211, label %212, label %236

212:                                              ; preds = %207
  %213 = load ptr, ptr %11, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %213, i32 0, i32 1
  %215 = load i32, ptr %214, align 8, !tbaa !11
  %216 = icmp ne i32 %215, 5
  br i1 %216, label %217, label %236

217:                                              ; preds = %212
  %218 = load ptr, ptr %11, align 8, !tbaa !5
  %219 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %218, i32 0, i32 1
  %220 = load i32, ptr %219, align 8, !tbaa !11
  %221 = icmp ne i32 %220, 14
  br i1 %221, label %222, label %236

222:                                              ; preds = %217
  %223 = load i32, ptr %9, align 4, !tbaa !9
  %224 = load ptr, ptr %10, align 8, !tbaa !5
  %225 = load ptr, ptr %11, align 8, !tbaa !5
  %226 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %5)
  %227 = invoke noundef i32 @_Z20AddBodyMultiDofJointRN17RigidBodyDynamics5ModelEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(872) %122, i32 noundef %223, ptr noundef nonnull align 8 dereferenceable(96) %224, ptr noundef nonnull align 8 dereferenceable(24) %225, ptr noundef nonnull align 8 dereferenceable(105) %226, ptr noundef %17)
          to label %228 unwind label %232

228:                                              ; preds = %222
  %229 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 6
  store i32 %227, ptr %229, align 4, !tbaa !14
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  %230 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 6
  %231 = load i32, ptr %230, align 4, !tbaa !14
  store i32 %231, ptr %7, align 4
  br label %632

232:                                              ; preds = %222
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %15, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %16, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %634

236:                                              ; preds = %217, %212, %207, %202, %197, %192
  br label %237

237:                                              ; preds = %236, %191
  br label %238

238:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  %239 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %239, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 96, ptr %19) #8
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %19)
  %240 = load i32, ptr %9, align 4, !tbaa !9
  %241 = call noundef zeroext i1 @_ZN17RigidBodyDynamics5Model13IsFixedBodyIdEj(ptr noundef nonnull align 8 dereferenceable(872) %122, i32 noundef %240)
  br i1 %241, label %242, label %259

242:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  %243 = load i32, ptr %9, align 4, !tbaa !9
  %244 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 37
  %245 = load i32, ptr %244, align 8, !tbaa !93
  %246 = sub i32 %243, %245
  store i32 %246, ptr %20, align 4, !tbaa !9
  %247 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 36
  %248 = load i32, ptr %20, align 4, !tbaa !9
  %249 = zext i32 %248 to i64
  %250 = call noundef nonnull align 8 dereferenceable(304) ptr @_ZNSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %247, i64 noundef %249) #8
  %251 = getelementptr inbounds %"struct.RigidBodyDynamics::FixedBody", ptr %250, i32 0, i32 3
  %252 = load i32, ptr %251, align 8, !tbaa !94
  store i32 %252, ptr %18, align 4, !tbaa !9
  %253 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 36
  %254 = load i32, ptr %20, align 4, !tbaa !9
  %255 = zext i32 %254 to i64
  %256 = call noundef nonnull align 8 dereferenceable(304) ptr @_ZNSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %253, i64 noundef %255) #8
  %257 = getelementptr inbounds %"struct.RigidBodyDynamics::FixedBody", ptr %256, i32 0, i32 4
  %258 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN17RigidBodyDynamics4Math16SpatialTransformaSERKS1_(ptr noundef nonnull align 8 dereferenceable(96) %19, ptr noundef nonnull align 8 dereferenceable(96) %257)
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  br label %259

259:                                              ; preds = %242, %238
  %260 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 0
  call void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %260, ptr noundef nonnull align 4 dereferenceable(4) %18)
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %261 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %262 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %263 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %262) #8
  %264 = sub i64 %263, 1
  %265 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %261, i64 noundef %264) #8
  %266 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %265, i32 0, i32 3
  %267 = load i32, ptr %266, align 8, !tbaa !103
  store i32 %267, ptr %21, align 4, !tbaa !9
  %268 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %269 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %270 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %269) #8
  %271 = sub i64 %270, 1
  %272 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %268, i64 noundef %271) #8
  %273 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %272, i32 0, i32 2
  %274 = load i32, ptr %273, align 4, !tbaa !104
  %275 = icmp ugt i32 %274, 0
  br i1 %275, label %276, label %295

276:                                              ; preds = %259
  %277 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %278 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %279 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %278) #8
  %280 = sub i64 %279, 1
  %281 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %277, i64 noundef %280) #8
  %282 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %281, i32 0, i32 1
  %283 = load i32, ptr %282, align 8, !tbaa !11
  %284 = icmp ne i32 %283, 21
  br i1 %284, label %285, label %295

285:                                              ; preds = %276
  %286 = load i32, ptr %21, align 4, !tbaa !9
  %287 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %288 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %289 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %288) #8
  %290 = sub i64 %289, 1
  %291 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %287, i64 noundef %290) #8
  %292 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %291, i32 0, i32 2
  %293 = load i32, ptr %292, align 4, !tbaa !104
  %294 = add i32 %286, %293
  store i32 %294, ptr %21, align 4, !tbaa !9
  br label %323

295:                                              ; preds = %276, %259
  %296 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %297 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %298 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %297) #8
  %299 = sub i64 %298, 1
  %300 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %296, i64 noundef %299) #8
  %301 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %300, i32 0, i32 1
  %302 = load i32, ptr %301, align 8, !tbaa !11
  %303 = icmp eq i32 %302, 21
  br i1 %303, label %304, label %322

304:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %305 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %306 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %307 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %306) #8
  %308 = sub i64 %307, 1
  %309 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %305, i64 noundef %308) #8
  %310 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %309, i32 0, i32 4
  %311 = load i32, ptr %310, align 4, !tbaa !105
  store i32 %311, ptr %22, align 4, !tbaa !9
  %312 = load i32, ptr %21, align 4, !tbaa !9
  %313 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 22
  %314 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 22
  %315 = call noundef i64 @_ZNKSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %314) #8
  %316 = sub i64 %315, 1
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %313, i64 noundef %316) #8
  %318 = load ptr, ptr %317, align 8, !tbaa !5
  %319 = getelementptr inbounds %"struct.RigidBodyDynamics::CustomJoint", ptr %318, i32 0, i32 1
  %320 = load i32, ptr %319, align 8, !tbaa !106
  %321 = add i32 %312, %320
  store i32 %321, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %322

322:                                              ; preds = %304, %295
  br label %323

323:                                              ; preds = %322, %285
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %324

324:                                              ; preds = %336, %323
  %325 = load i32, ptr %23, align 4, !tbaa !9
  %326 = load ptr, ptr %11, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %326, i32 0, i32 2
  %328 = load i32, ptr %327, align 4, !tbaa !104
  %329 = icmp ult i32 %325, %328
  br i1 %329, label %331, label %330

330:                                              ; preds = %324
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  br label %339

331:                                              ; preds = %324
  %332 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  %333 = load i32, ptr %21, align 4, !tbaa !9
  %334 = load i32, ptr %23, align 4, !tbaa !9
  %335 = add i32 %333, %334
  store i32 %335, ptr %24, align 4, !tbaa !9
  call void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %332, ptr noundef nonnull align 4 dereferenceable(4) %24)
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %336

336:                                              ; preds = %331
  %337 = load i32, ptr %23, align 4, !tbaa !9
  %338 = add i32 %337, 1
  store i32 %338, ptr %23, align 4, !tbaa !9
  br label %324, !llvm.loop !111

339:                                              ; preds = %330
  %340 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #8
  call void @llvm.memset.p0.i64(ptr align 8 %25, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  invoke void @_ZNSt6vectorIS_IjSaIjEESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %340, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %341 unwind label %368

341:                                              ; preds = %339
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #8
  %342 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 2
  %343 = load i32, ptr %18, align 4, !tbaa !9
  %344 = zext i32 %343 to i64
  %345 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %342, i64 noundef %344)
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  %346 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 38
  %347 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %346) #8
  %348 = trunc i64 %347 to i32
  store i32 %348, ptr %26, align 4, !tbaa !9
  call void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %345, ptr noundef nonnull align 4 dereferenceable(4) %26)
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  %349 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 34
  call void @llvm.lifetime.start.p0(i64 96, ptr %27) #8
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %27)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %349, ptr noundef nonnull align 8 dereferenceable(96) %27)
  call void @llvm.lifetime.end.p0(i64 96, ptr %27) #8
  %350 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 35
  call void @llvm.lifetime.start.p0(i64 96, ptr %28) #8
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %28)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %350, ptr noundef nonnull align 8 dereferenceable(96) %28)
  call void @llvm.lifetime.end.p0(i64 96, ptr %28) #8
  %351 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 38
  %352 = load ptr, ptr %12, align 8, !tbaa !5
  call void @_ZNSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %351, ptr noundef nonnull align 8 dereferenceable(105) %352)
  %353 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  %354 = icmp ne i64 %353, 0
  br i1 %354, label %355, label %379

355:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %356 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 39
  %357 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE4findERS9_(ptr noundef nonnull align 8 dereferenceable(48) %356, ptr noundef nonnull align 8 dereferenceable(32) %5)
  %358 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %29, i32 0, i32 0
  store ptr %357, ptr %358, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %359 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 39
  %360 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %359) #8
  %361 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %30, i32 0, i32 0
  store ptr %360, ptr %361, align 8
  %362 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEESB_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br i1 %362, label %363, label %372

363:                                              ; preds = %355
  %364 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.9)
  %365 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %364, ptr noundef nonnull align 8 dereferenceable(32) %5)
  %366 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %365, ptr noundef @.str.10)
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %366, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.8, i32 noundef 336, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE) #9
  unreachable

368:                                              ; preds = %339
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %15, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %16, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #8
  br label %631

372:                                              ; preds = %355
  %373 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 38
  %374 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %373) #8
  %375 = sub i64 %374, 1
  %376 = trunc i64 %375 to i32
  %377 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 39
  %378 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48) %377, ptr noundef nonnull align 8 dereferenceable(32) %5)
  store i32 %376, ptr %378, align 4, !tbaa !9
  br label %379

379:                                              ; preds = %372, %341
  %380 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 48, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  store double 0.000000e+00, ptr %32, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  store double 0.000000e+00, ptr %33, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  store double 0.000000e+00, ptr %34, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  store double 0.000000e+00, ptr %35, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  store double 0.000000e+00, ptr %36, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  store double 0.000000e+00, ptr %37, align 8, !tbaa !113
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %31, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %380, ptr noundef nonnull align 16 dereferenceable(48) %31)
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %31) #8
  %381 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 9
  call void @llvm.lifetime.start.p0(i64 48, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  store double 0.000000e+00, ptr %39, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  store double 0.000000e+00, ptr %40, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  store double 0.000000e+00, ptr %41, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  store double 0.000000e+00, ptr %42, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  store double 0.000000e+00, ptr %43, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  store double 0.000000e+00, ptr %44, align 8, !tbaa !113
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %38, ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %381, ptr noundef nonnull align 16 dereferenceable(48) %38)
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #8
  %382 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %383 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %382) #8
  %384 = sub i64 %383, 1
  %385 = trunc i64 %384 to i32
  store i32 %385, ptr %45, align 4, !tbaa !9
  %386 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %387 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %386, ptr noundef nonnull align 8 dereferenceable(24) %387)
  %388 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %389 = load i32, ptr %45, align 4, !tbaa !9
  %390 = zext i32 %389 to i64
  %391 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %388, i64 noundef %390) #8
  %392 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %391, i32 0, i32 1
  %393 = load i32, ptr %392, align 8, !tbaa !11
  %394 = icmp ne i32 %393, 21
  br i1 %394, label %395, label %415

395:                                              ; preds = %379
  %396 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %397 = load i32, ptr %45, align 4, !tbaa !9
  %398 = zext i32 %397 to i64
  %399 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %396, i64 noundef %398) #8
  %400 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %399, i32 0, i32 3
  %401 = load i32, ptr %400, align 8, !tbaa !103
  %402 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %403 = load i32, ptr %45, align 4, !tbaa !9
  %404 = zext i32 %403 to i64
  %405 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %402, i64 noundef %404) #8
  %406 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %405, i32 0, i32 2
  %407 = load i32, ptr %406, align 4, !tbaa !104
  %408 = add i32 %401, %407
  %409 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %410 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %411 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %410) #8
  %412 = sub i64 %411, 1
  %413 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %409, i64 noundef %412) #8
  %414 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %413, i32 0, i32 3
  store i32 %408, ptr %414, align 8, !tbaa !103
  br label %435

415:                                              ; preds = %379
  %416 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %417 = load i32, ptr %45, align 4, !tbaa !9
  %418 = zext i32 %417 to i64
  %419 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %416, i64 noundef %418) #8
  %420 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %419, i32 0, i32 3
  %421 = load i32, ptr %420, align 8, !tbaa !103
  %422 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %423 = load i32, ptr %45, align 4, !tbaa !9
  %424 = zext i32 %423 to i64
  %425 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %422, i64 noundef %424) #8
  %426 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %425, i32 0, i32 2
  %427 = load i32, ptr %426, align 4, !tbaa !104
  %428 = add i32 %421, %427
  %429 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %430 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %431 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %430) #8
  %432 = sub i64 %431, 1
  %433 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %429, i64 noundef %432) #8
  %434 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %433, i32 0, i32 3
  store i32 %428, ptr %434, align 8, !tbaa !103
  br label %435

435:                                              ; preds = %415, %395
  %436 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 11
  %437 = load ptr, ptr %11, align 8, !tbaa !5
  %438 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %437, i32 0, i32 0
  %439 = load ptr, ptr %438, align 8, !tbaa !114
  %440 = getelementptr inbounds %class.SpatialVector_t, ptr %439, i64 0
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %436, ptr noundef nonnull align 16 dereferenceable(48) %440)
  %441 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 12
  %442 = load ptr, ptr %11, align 8, !tbaa !5
  %443 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %442, i32 0, i32 0
  %444 = load ptr, ptr %443, align 8, !tbaa !114
  %445 = getelementptr inbounds %class.SpatialVector_t, ptr %444, i64 0
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %441, ptr noundef nonnull align 16 dereferenceable(48) %445)
  %446 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 13
  call void @llvm.lifetime.start.p0(i64 48, ptr %46) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  store double 0.000000e+00, ptr %47, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  store double 0.000000e+00, ptr %48, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  store double 0.000000e+00, ptr %49, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  store double 0.000000e+00, ptr %50, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  store double 0.000000e+00, ptr %51, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  store double 0.000000e+00, ptr %52, align 8, !tbaa !113
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %46, ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %446, ptr noundef nonnull align 16 dereferenceable(48) %46)
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #8
  %447 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 17
  call void @llvm.lifetime.start.p0(i64 144, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #8
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE4ZeroEll(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %54, i64 noundef 6, i64 noundef 3)
  call void @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %53, ptr noundef nonnull align 1 dereferenceable(1) %54)
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %447, ptr noundef nonnull align 16 dereferenceable(144) %53)
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %53) #8
  %448 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 18
  call void @llvm.lifetime.start.p0(i64 144, ptr %55) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #8
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %56)
  call void @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %55, ptr noundef nonnull align 1 dereferenceable(1) %56)
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %448, ptr noundef nonnull align 16 dereferenceable(144) %55)
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr %55) #8
  %449 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 19
  call void @llvm.lifetime.start.p0(i64 72, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #8
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.124") align 8 %58)
  call void @_ZN9Matrix3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %57, ptr noundef nonnull align 1 dereferenceable(1) %58)
  call void @_ZNSt6vectorI9Matrix3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %449, ptr noundef nonnull align 8 dereferenceable(72) %57)
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr %57) #8
  %450 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 20
  call void @llvm.lifetime.start.p0(i64 24, ptr %59) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %60) #8
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.129") align 8 %60)
  call void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef nonnull align 1 dereferenceable(1) %60)
  call void @_ZNSt6vectorI9Vector3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %450, ptr noundef nonnull align 8 dereferenceable(24) %59)
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #8
  %451 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 21
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #8
  store i32 0, ptr %61, align 4, !tbaa !9
  call void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %451, ptr noundef nonnull align 4 dereferenceable(4) %61)
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #8
  %452 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 3
  %453 = load i32, ptr %452, align 8, !tbaa !115
  %454 = load ptr, ptr %11, align 8, !tbaa !5
  %455 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %454, i32 0, i32 2
  %456 = load i32, ptr %455, align 4, !tbaa !104
  %457 = add i32 %453, %456
  %458 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 3
  store i32 %457, ptr %458, align 8, !tbaa !115
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #8
  store i32 0, ptr %62, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #8
  store i32 0, ptr %63, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #8
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %459

459:                                              ; preds = %486, %435
  %460 = load i32, ptr %64, align 4, !tbaa !9
  %461 = zext i32 %460 to i64
  %462 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %463 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %462) #8
  %464 = icmp ult i64 %461, %463
  br i1 %464, label %466, label %465

465:                                              ; preds = %459
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #8
  br label %489

466:                                              ; preds = %459
  %467 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %468 = load i32, ptr %64, align 4, !tbaa !9
  %469 = zext i32 %468 to i64
  %470 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %467, i64 noundef %469) #8
  %471 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %470, i32 0, i32 1
  %472 = load i32, ptr %471, align 8, !tbaa !11
  %473 = icmp eq i32 %472, 6
  br i1 %473, label %474, label %485

474:                                              ; preds = %466
  %475 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 3
  %476 = load i32, ptr %475, align 8, !tbaa !115
  %477 = load i32, ptr %62, align 4, !tbaa !9
  %478 = add i32 %476, %477
  %479 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 21
  %480 = load i32, ptr %64, align 4, !tbaa !9
  %481 = zext i32 %480 to i64
  %482 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %479, i64 noundef %481) #8
  store i32 %478, ptr %482, align 4, !tbaa !9
  %483 = load i32, ptr %62, align 4, !tbaa !9
  %484 = add nsw i32 %483, 1
  store i32 %484, ptr %62, align 4, !tbaa !9
  br label %485

485:                                              ; preds = %474, %466
  br label %486

486:                                              ; preds = %485
  %487 = load i32, ptr %64, align 4, !tbaa !9
  %488 = add i32 %487, 1
  store i32 %488, ptr %64, align 4, !tbaa !9
  br label %459, !llvm.loop !116

489:                                              ; preds = %465
  %490 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 3
  %491 = load i32, ptr %490, align 8, !tbaa !115
  %492 = load i32, ptr %62, align 4, !tbaa !9
  %493 = add i32 %491, %492
  %494 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 4
  store i32 %493, ptr %494, align 4, !tbaa !117
  %495 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 5
  %496 = load i32, ptr %495, align 8, !tbaa !118
  %497 = load ptr, ptr %11, align 8, !tbaa !5
  %498 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %497, i32 0, i32 2
  %499 = load i32, ptr %498, align 4, !tbaa !104
  %500 = add i32 %496, %499
  %501 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 5
  store i32 %500, ptr %501, align 8, !tbaa !118
  %502 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 15
  call void @llvm.lifetime.start.p0(i64 96, ptr %65) #8
  %503 = load ptr, ptr %10, align 8, !tbaa !5
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransformmlERKS1_(ptr dead_on_unwind writable sret(%"struct.RigidBodyDynamics::Math::SpatialTransform") align 8 %65, ptr noundef nonnull align 8 dereferenceable(96) %503, ptr noundef nonnull align 8 dereferenceable(96) %19)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %502, ptr noundef nonnull align 8 dereferenceable(96) %65)
  call void @llvm.lifetime.end.p0(i64 96, ptr %65) #8
  %504 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 23
  call void @llvm.lifetime.start.p0(i64 48, ptr %66) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  store double 0.000000e+00, ptr %67, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #8
  store double 0.000000e+00, ptr %68, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  store double 0.000000e+00, ptr %69, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  store double 0.000000e+00, ptr %70, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  store double 0.000000e+00, ptr %71, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  store double 0.000000e+00, ptr %72, align 8, !tbaa !113
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %66, ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %504, ptr noundef nonnull align 16 dereferenceable(48) %66)
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %66) #8
  %505 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 24
  call void @llvm.lifetime.start.p0(i64 288, ptr %73) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %74) #8
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEE4ZeroEll(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.166") align 8 %74, i64 noundef 6, i64 noundef 6)
  call void @_ZN15SpatialMatrix_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(288) %73, ptr noundef nonnull align 1 dereferenceable(1) %74)
  call void @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %505, ptr noundef nonnull align 16 dereferenceable(288) %73)
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #8
  call void @llvm.lifetime.end.p0(i64 288, ptr %73) #8
  %506 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 48, ptr %75) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  store double 0.000000e+00, ptr %76, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  store double 0.000000e+00, ptr %77, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  store double 0.000000e+00, ptr %78, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  store double 0.000000e+00, ptr %79, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  store double 0.000000e+00, ptr %80, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #8
  store double 0.000000e+00, ptr %81, align 8, !tbaa !113
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %75, ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull align 8 dereferenceable(8) %81)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %506, ptr noundef nonnull align 16 dereferenceable(48) %75)
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %75) #8
  %507 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 26
  call void @llvm.lifetime.start.p0(i64 48, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  store double 0.000000e+00, ptr %83, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  store double 0.000000e+00, ptr %84, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  store double 0.000000e+00, ptr %85, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  store double 0.000000e+00, ptr %86, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #8
  store double 0.000000e+00, ptr %87, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  store double 0.000000e+00, ptr %88, align 8, !tbaa !113
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %82, ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %88)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %507, ptr noundef nonnull align 16 dereferenceable(48) %82)
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %82) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %89) #8
  %508 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 38
  %509 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %508) #8
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.149") align 8 %89, i64 noundef %509)
  %510 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 27
  %511 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %510, ptr noundef nonnull align 1 dereferenceable(1) %89)
  call void @llvm.lifetime.end.p0(i64 24, ptr %89) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %90) #8
  %512 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 38
  %513 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %512) #8
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.149") align 8 %90, i64 noundef %513)
  %514 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 28
  %515 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %514, ptr noundef nonnull align 1 dereferenceable(1) %90)
  call void @llvm.lifetime.end.p0(i64 24, ptr %90) #8
  %516 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 29
  call void @llvm.lifetime.start.p0(i64 48, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #8
  store double 0.000000e+00, ptr %92, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  store double 0.000000e+00, ptr %93, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  store double 0.000000e+00, ptr %94, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  store double 0.000000e+00, ptr %95, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  store double 0.000000e+00, ptr %96, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  store double 0.000000e+00, ptr %97, align 8, !tbaa !113
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %91, ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %97)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %516, ptr noundef nonnull align 16 dereferenceable(48) %91)
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %91) #8
  call void @llvm.lifetime.start.p0(i64 80, ptr %98) #8
  %517 = load ptr, ptr %12, align 8, !tbaa !5
  %518 = getelementptr inbounds %"struct.RigidBodyDynamics::Body", ptr %517, i32 0, i32 0
  %519 = load double, ptr %518, align 8, !tbaa !119
  %520 = load ptr, ptr %12, align 8, !tbaa !5
  %521 = getelementptr inbounds %"struct.RigidBodyDynamics::Body", ptr %520, i32 0, i32 1
  %522 = load ptr, ptr %12, align 8, !tbaa !5
  %523 = getelementptr inbounds %"struct.RigidBodyDynamics::Body", ptr %522, i32 0, i32 2
  call void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertia25createFromMassComInertiaCEdRK9Vector3_tRK9Matrix3_t(ptr dead_on_unwind writable sret(%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia") align 8 %98, double noundef %519, ptr noundef nonnull align 8 dereferenceable(24) %521, ptr noundef nonnull align 8 dereferenceable(72) %523)
  %524 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 31
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %524, ptr noundef nonnull align 8 dereferenceable(80) %98)
  %525 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 30
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %525, ptr noundef nonnull align 8 dereferenceable(80) %98)
  %526 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 32
  call void @llvm.lifetime.start.p0(i64 48, ptr %99) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  store double 0.000000e+00, ptr %100, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  store double 0.000000e+00, ptr %101, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #8
  store double 0.000000e+00, ptr %102, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  store double 0.000000e+00, ptr %103, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #8
  store double 0.000000e+00, ptr %104, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #8
  store double 0.000000e+00, ptr %105, align 8, !tbaa !113
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %99, ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(8) %105)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %526, ptr noundef nonnull align 16 dereferenceable(48) %99)
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %99) #8
  %527 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 33
  call void @llvm.lifetime.start.p0(i64 48, ptr %106) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #8
  store double 0.000000e+00, ptr %107, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #8
  store double 0.000000e+00, ptr %108, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #8
  store double 0.000000e+00, ptr %109, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #8
  store double 0.000000e+00, ptr %110, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #8
  store double 0.000000e+00, ptr %111, align 8, !tbaa !113
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #8
  store double 0.000000e+00, ptr %112, align 8, !tbaa !113
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %106, ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull align 8 dereferenceable(8) %112)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %527, ptr noundef nonnull align 16 dereferenceable(48) %106)
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %106) #8
  %528 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 38
  %529 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %528) #8
  %530 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 37
  %531 = load i32, ptr %530, align 8, !tbaa !93
  %532 = zext i32 %531 to i64
  %533 = icmp eq i64 %529, %532
  br i1 %533, label %534, label %541

534:                                              ; preds = %489
  %535 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.4)
  %536 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 37
  %537 = load i32, ptr %536, align 8, !tbaa !93
  %538 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %535, i32 noundef %537)
  %539 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %538, ptr noundef @.str.16)
  %540 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %539, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.8, i32 noundef 420, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE) #9
  unreachable

541:                                              ; preds = %489
  %542 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 38
  %543 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %542) #8
  %544 = sub i64 %543, 1
  %545 = trunc i64 %544 to i32
  %546 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 6
  store i32 %545, ptr %546, align 4, !tbaa !14
  %547 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 14
  call void @_ZNSt6vectorIjSaIjEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %547) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %113) #8
  call void @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %114) #8
  store i32 0, ptr %114, align 4, !tbaa !9
  br label %548

548:                                              ; preds = %571, %541
  %549 = load i32, ptr %114, align 4, !tbaa !9
  %550 = zext i32 %549 to i64
  %551 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %552 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %551) #8
  %553 = icmp ult i64 %550, %552
  br i1 %553, label %555, label %554

554:                                              ; preds = %548
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #8
  br label %583

555:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #8
  %556 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %557 = load i32, ptr %114, align 4, !tbaa !9
  %558 = zext i32 %557 to i64
  %559 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %556, i64 noundef %558) #8
  %560 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %559, i32 0, i32 1
  invoke void @_ZNSt4pairIN17RigidBodyDynamics9JointTypeEjEC2IRS1_RjTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 4 dereferenceable(8) %115, ptr noundef nonnull align 4 dereferenceable(4) %560, ptr noundef nonnull align 4 dereferenceable(4) %114)
          to label %561 unwind label %574

561:                                              ; preds = %555
  invoke void @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %113, ptr noundef nonnull align 4 dereferenceable(8) %115)
          to label %562 unwind label %574

562:                                              ; preds = %561
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  %563 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 14
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #8
  %564 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 10
  %565 = load i32, ptr %114, align 4, !tbaa !9
  %566 = zext i32 %565 to i64
  %567 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %564, i64 noundef %566) #8
  %568 = getelementptr inbounds %"struct.RigidBodyDynamics::Joint", ptr %567, i32 0, i32 1
  %569 = load i32, ptr %568, align 8, !tbaa !11
  store i32 %569, ptr %116, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %563, ptr noundef nonnull align 4 dereferenceable(4) %116)
          to label %570 unwind label %578

570:                                              ; preds = %562
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #8
  br label %571

571:                                              ; preds = %570
  %572 = load i32, ptr %114, align 4, !tbaa !9
  %573 = add i32 %572, 1
  store i32 %573, ptr %114, align 4, !tbaa !9
  br label %548, !llvm.loop !122

574:                                              ; preds = %561, %555
  %575 = landingpad { ptr, i32 }
          cleanup
  %576 = extractvalue { ptr, i32 } %575, 0
  store ptr %576, ptr %15, align 8
  %577 = extractvalue { ptr, i32 } %575, 1
  store i32 %577, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #8
  br label %582

578:                                              ; preds = %562
  %579 = landingpad { ptr, i32 }
          cleanup
  %580 = extractvalue { ptr, i32 } %579, 0
  store ptr %580, ptr %15, align 8
  %581 = extractvalue { ptr, i32 } %579, 1
  store i32 %581, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #8
  br label %582

582:                                              ; preds = %578, %574
  call void @llvm.lifetime.end.p0(i64 4, ptr %114) #8
  br label %630

583:                                              ; preds = %554
  %584 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 14
  call void @_ZNSt6vectorIjSaIjEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %584) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #8
  store i32 0, ptr %117, align 4, !tbaa !123
  br label %585

585:                                              ; preds = %625, %583
  %586 = call noundef i64 @_ZNKSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  %587 = icmp ne i64 %586, 0
  br i1 %587, label %588, label %627

588:                                              ; preds = %585
  %589 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %113, i64 noundef 0) #8
  %590 = getelementptr inbounds %"struct.std::pair", ptr %589, i32 0, i32 0
  %591 = load i32, ptr %590, align 4, !tbaa !124
  store i32 %591, ptr %117, align 4, !tbaa !123
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #8
  %592 = call ptr @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  %593 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %118, i32 0, i32 0
  store ptr %592, ptr %593, align 8
  br label %594

594:                                              ; preds = %624, %588
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #8
  %595 = call ptr @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  %596 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %119, i32 0, i32 0
  store ptr %595, ptr %596, align 8
  %597 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %119) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #8
  br i1 %597, label %598, label %625

598:                                              ; preds = %594
  %599 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  %600 = getelementptr inbounds %"struct.std::pair", ptr %599, i32 0, i32 0
  %601 = load i32, ptr %600, align 4, !tbaa !124
  %602 = load i32, ptr %117, align 4, !tbaa !123
  %603 = icmp eq i32 %601, %602
  br i1 %603, label %604, label %622

604:                                              ; preds = %598
  %605 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 14
  %606 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  %607 = getelementptr inbounds %"struct.std::pair", ptr %606, i32 0, i32 1
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %605, ptr noundef nonnull align 4 dereferenceable(4) %607)
          to label %608 unwind label %614

608:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEC2IPS4_vEERKNS0_IT_S9_EE(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  %609 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.176", ptr %121, i32 0, i32 0
  %610 = load ptr, ptr %609, align 8
  %611 = invoke ptr @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EE(ptr noundef nonnull align 8 dereferenceable(24) %113, ptr %610)
          to label %612 unwind label %618

612:                                              ; preds = %608
  %613 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %120, i32 0, i32 0
  store ptr %611, ptr %613, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %118, ptr align 8 %120, i64 8, i1 false), !tbaa.struct !126
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  br label %624

614:                                              ; preds = %604
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %15, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %16, align 4
  br label %626

618:                                              ; preds = %608
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %15, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #8
  br label %626

622:                                              ; preds = %598
  %623 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #8
  br label %624

624:                                              ; preds = %622, %612
  br label %594, !llvm.loop !127

625:                                              ; preds = %594
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  br label %585, !llvm.loop !128

626:                                              ; preds = %618, %614
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #8
  br label %630

627:                                              ; preds = %585
  %628 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %122, i32 0, i32 6
  %629 = load i32, ptr %628, align 4, !tbaa !14
  store i32 %629, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #8
  call void @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %113) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %632

630:                                              ; preds = %626, %582
  call void @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %113) #8
  call void @llvm.lifetime.end.p0(i64 80, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #8
  br label %631

631:                                              ; preds = %630, %368
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 96, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %634

632:                                              ; preds = %627, %228, %148
  %633 = load i32, ptr %7, align 4
  ret i32 %633

634:                                              ; preds = %631, %232, %152
  %635 = load ptr, ptr %15, align 8
  %636 = load i32, ptr %16, align 4
  %637 = insertvalue { ptr, i32 } poison, ptr %635, 0
  %638 = insertvalue { ptr, i32 } %637, i32 %636, 1
  resume { ptr, i32 } %638
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) #3 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 i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_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(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

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

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

; 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 uwtable
declare dso_local void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 16 dereferenceable(48)) #3 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIN17RigidBodyDynamics9JointTypeEjEC2IRS1_RjTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #0 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEC2IPS4_vEERKNS0_IT_S9_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #0 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.Eigen::CwiseNullaryOp" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%"class.Eigen::CwiseNullaryOp.124" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::CwiseNullaryOp.129" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::CwiseNullaryOp.149" = type { %"class.Eigen::internal::variable_if_dynamic", [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }
%class.Matrix3_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 { [9 x double] }
%class.Vector3_t = type { %"class.Eigen::Matrix" }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia" = type { double, %class.Vector3_t, double, double, double, double, double, double }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.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 }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%class.SpatialVector_t = type { %"class.Eigen::Matrix.100" }
%"class.Eigen::Matrix.100" = type { %"class.Eigen::PlainObjectBase.101" }
%"class.Eigen::PlainObjectBase.101" = type { %"class.Eigen::DenseStorage.108" }
%"class.Eigen::DenseStorage.108" = type { %"struct.Eigen::internal::plain_array.109" }
%"struct.Eigen::internal::plain_array.109" = type { [6 x double] }
%"class.Eigen::Matrix.110" = type { %"class.Eigen::PlainObjectBase.111" }
%"class.Eigen::PlainObjectBase.111" = type { %"class.Eigen::DenseStorage.118" }
%"class.Eigen::DenseStorage.118" = type { %"struct.Eigen::internal::plain_array.119" }
%"struct.Eigen::internal::plain_array.119" = type { [18 x double] }
%class.SpatialMatrix_t = type { %"class.Eigen::Matrix.134" }
%"class.Eigen::Matrix.134" = type { %"class.Eigen::PlainObjectBase.135" }
%"class.Eigen::PlainObjectBase.135" = type { %"class.Eigen::DenseStorage.142" }
%"class.Eigen::DenseStorage.142" = type { %"struct.Eigen::internal::plain_array.143" }
%"struct.Eigen::internal::plain_array.143" = type { [36 x double] }
%"class.Eigen::CwiseNullaryOp.166" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.std::vector.171" = type { %"struct.std::_Vector_base.172" }
%"struct.std::_Vector_base.172" = type { %"struct.std::_Vector_base<std::pair<RigidBodyDynamics::JointType, unsigned int>, std::allocator<std::pair<RigidBodyDynamics::JointType, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RigidBodyDynamics::JointType, unsigned int>, std::allocator<std::pair<RigidBodyDynamics::JointType, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RigidBodyDynamics::JointType, unsigned int>, std::allocator<std::pair<RigidBodyDynamics::JointType, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RigidBodyDynamics::JointType, unsigned int>, std::allocator<std::pair<RigidBodyDynamics::JointType, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { i32, i32 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.176" = type { ptr }

@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.4 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [106 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [18 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE = external hidden unnamed_addr constant [135 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [78 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z17AddBodyFixedJointRN17RigidBodyDynamics5ModelEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(872), i32 noundef, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(105), ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN17RigidBodyDynamics5Model13IsFixedBodyIdEj(ptr noundef nonnull align 8 dereferenceable(872), i32 noundef) local_unnamed_addr #0 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_Z20AddBodyMultiDofJointRN17RigidBodyDynamics5ModelEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(872), i32 noundef, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(105), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(872) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(96) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(105) %4, ptr noundef %5) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca i32, align 4
  %10 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::vector", align 8
  %13 = alloca i32, align 4
  %14 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %15 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %16 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %17 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %18 = alloca %class.SpatialVector_t, align 16
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca %class.SpatialVector_t, align 16
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca %class.SpatialVector_t, align 16
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca %"class.Eigen::Matrix.110", align 16
  %40 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %41 = alloca %"class.Eigen::Matrix.110", align 16
  %42 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %43 = alloca %class.Matrix3_t, align 8
  %44 = alloca %"class.Eigen::CwiseNullaryOp.124", align 8
  %45 = alloca %class.Vector3_t, align 8
  %46 = alloca %"class.Eigen::CwiseNullaryOp.129", align 8
  %47 = alloca i32, align 4
  %48 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %49 = alloca %class.SpatialVector_t, align 16
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca %class.SpatialMatrix_t, align 16
  %57 = alloca %"class.Eigen::CwiseNullaryOp.166", align 8
  %58 = alloca %class.SpatialVector_t, align 16
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca %class.SpatialVector_t, align 16
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca %"class.Eigen::CwiseNullaryOp.149", align 8
  %73 = alloca %"class.Eigen::CwiseNullaryOp.149", align 8
  %74 = alloca %class.SpatialVector_t, align 16
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca %"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia", align 8
  %82 = alloca %class.SpatialVector_t, align 16
  %83 = alloca double, align 8
  %84 = alloca double, align 8
  %85 = alloca double, align 8
  %86 = alloca double, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %89 = alloca %class.SpatialVector_t, align 16
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca double, align 8
  %93 = alloca double, align 8
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca %"class.std::vector.171", align 8
  %97 = alloca i32, align 4
  %98 = alloca %"struct.std::pair", align 4
  %99 = alloca i32, align 4
  %100 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %101 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %102 = alloca %"class.__gnu_cxx::__normal_iterator.176", align 8
  %103 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #7
  %.not = icmp eq i64 %103, 0
  br i1 %.not, label %104, label %105

104:                                              ; preds = %6
  tail call void @__assert_fail(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.8, i32 noundef 258, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE) #8
  unreachable

105:                                              ; preds = %6
  %106 = getelementptr inbounds i8, ptr %3, i64 8
  %107 = load i32, ptr %106, align 8, !tbaa !5
  switch i32 %107, label %116 [
    i32 0, label %108
    i32 13, label %109
    i32 6, label %123
    i32 7, label %123
    i32 8, label %123
    i32 9, label %123
    i32 10, label %123
    i32 11, label %123
    i32 21, label %123
    i32 2, label %123
    i32 1, label %123
    i32 3, label %123
    i32 4, label %123
    i32 5, label %123
    i32 14, label %123
  ]

108:                                              ; preds = %105
  tail call void @__assert_fail(ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.8, i32 noundef 259, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE) #8
  unreachable

109:                                              ; preds = %105
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %5)
  %110 = invoke noundef i32 @_Z17AddBodyFixedJointRN17RigidBodyDynamics5ModelEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(872) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(96) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(105) %4, ptr noundef nonnull %7)
          to label %111 unwind label %114

111:                                              ; preds = %109
  %112 = getelementptr inbounds i8, ptr %0, i64 84
  store i32 %110, ptr %112, align 4, !tbaa !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  %113 = load i32, ptr %112, align 4, !tbaa !12
  br label %362

114:                                              ; preds = %109
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %363

116:                                              ; preds = %105
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(32) %5)
  %117 = invoke noundef i32 @_Z20AddBodyMultiDofJointRN17RigidBodyDynamics5ModelEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(872) %0, i32 noundef %1, ptr noundef nonnull align 8 dereferenceable(96) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(105) %4, ptr noundef nonnull %8)
          to label %118 unwind label %121

118:                                              ; preds = %116
  %119 = getelementptr inbounds i8, ptr %0, i64 84
  store i32 %117, ptr %119, align 4, !tbaa !12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  %120 = load i32, ptr %119, align 4, !tbaa !12
  br label %362

121:                                              ; preds = %116
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  br label %363

123:                                              ; preds = %105, %105, %105, %105, %105, %105, %105, %105, %105, %105, %105, %105, %105
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  store i32 %1, ptr %9, align 4, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %10) #7
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %10)
  %124 = call noundef zeroext i1 @_ZN17RigidBodyDynamics5Model13IsFixedBodyIdEj(ptr noundef nonnull align 8 dereferenceable(872) %0, i32 noundef %1)
  br i1 %124, label %125, label %137

125:                                              ; preds = %123
  %126 = getelementptr inbounds i8, ptr %0, i64 792
  %127 = load i32, ptr %126, align 8, !tbaa !92
  %128 = sub i32 %1, %127
  %129 = getelementptr inbounds i8, ptr %0, i64 768
  %130 = zext i32 %128 to i64
  %131 = call noundef nonnull align 8 dereferenceable(304) ptr @_ZNSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %130) #7
  %132 = getelementptr inbounds i8, ptr %131, i64 104
  %133 = load i32, ptr %132, align 8, !tbaa !93
  store i32 %133, ptr %9, align 4, !tbaa !91
  %134 = call noundef nonnull align 8 dereferenceable(304) ptr @_ZNSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %130) #7
  %135 = getelementptr inbounds i8, ptr %134, i64 112
  %136 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN17RigidBodyDynamics4Math16SpatialTransformaSERKS1_(ptr noundef nonnull align 8 dereferenceable(96) %10, ptr noundef nonnull align 8 dereferenceable(96) %135)
  br label %137

137:                                              ; preds = %125, %123
  call void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 4 dereferenceable(4) %9)
  %138 = getelementptr inbounds i8, ptr %0, i64 160
  %139 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %140 = add i64 %139, -1
  %141 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %140) #7
  %142 = getelementptr inbounds i8, ptr %141, i64 16
  %143 = load i32, ptr %142, align 8, !tbaa !102
  %144 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %145 = add i64 %144, -1
  %146 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %145) #7
  %147 = getelementptr inbounds i8, ptr %146, i64 12
  %148 = load i32, ptr %147, align 4, !tbaa !103
  %.not81 = icmp eq i32 %148, 0
  br i1 %.not81, label %162, label %149

149:                                              ; preds = %137
  %150 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %151 = add i64 %150, -1
  %152 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %151) #7
  %153 = getelementptr inbounds i8, ptr %152, i64 8
  %154 = load i32, ptr %153, align 8, !tbaa !5
  %.not82 = icmp eq i32 %154, 21
  br i1 %.not82, label %162, label %155

155:                                              ; preds = %149
  %156 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %157 = add i64 %156, -1
  %158 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %157) #7
  %159 = getelementptr inbounds i8, ptr %158, i64 12
  %160 = load i32, ptr %159, align 4, !tbaa !103
  %161 = add i32 %160, %143
  br label %181

162:                                              ; preds = %149, %137
  %163 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %164 = add i64 %163, -1
  %165 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %164) #7
  %166 = getelementptr inbounds i8, ptr %165, i64 8
  %167 = load i32, ptr %166, align 8, !tbaa !5
  %168 = icmp eq i32 %167, 21
  br i1 %168, label %169, label %181

169:                                              ; preds = %162
  %170 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %171 = add i64 %170, -1
  %172 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %171) #7
  %173 = getelementptr inbounds i8, ptr %0, i64 448
  %174 = call noundef i64 @_ZNKSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #7
  %175 = add i64 %174, -1
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %173, i64 noundef %175) #7
  %177 = load ptr, ptr %176, align 8, !tbaa !104
  %178 = getelementptr inbounds i8, ptr %177, i64 8
  %179 = load i32, ptr %178, align 8, !tbaa !105
  %180 = add i32 %179, %143
  br label %181

181:                                              ; preds = %162, %169, %155
  %.071 = phi i32 [ %161, %155 ], [ %180, %169 ], [ %143, %162 ]
  %182 = getelementptr inbounds i8, ptr %3, i64 12
  %183 = load i32, ptr %182, align 4, !tbaa !103
  %.not109 = icmp eq i32 %183, 0
  br i1 %.not109, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %181
  %184 = getelementptr inbounds i8, ptr %0, i64 24
  br label %186

._crit_edge:                                      ; preds = %186, %181
  %185 = getelementptr inbounds i8, ptr %0, i64 48
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %12, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  invoke void @_ZNSt6vectorIS_IjSaIjEESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %185, ptr noundef nonnull align 8 dereferenceable(24) %12)
          to label %191 unwind label %211

186:                                              ; preds = %.lr.ph, %186
  %.07093 = phi i32 [ 0, %.lr.ph ], [ %188, %186 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  %187 = add i32 %.07093, %.071
  store i32 %187, ptr %11, align 4, !tbaa !91
  call void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %184, ptr noundef nonnull align 4 dereferenceable(4) %11)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  %188 = add nuw i32 %.07093, 1
  %189 = load i32, ptr %182, align 4, !tbaa !103
  %190 = icmp ult i32 %188, %189
  br i1 %190, label %186, label %._crit_edge, !llvm.loop !110

191:                                              ; preds = %._crit_edge
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  %192 = load i32, ptr %9, align 4, !tbaa !91
  %193 = zext i32 %192 to i64
  %194 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IjSaIjEESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %185, i64 noundef %193)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #7
  %195 = getelementptr inbounds i8, ptr %0, i64 800
  %196 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %195) #7
  %197 = trunc i64 %196 to i32
  store i32 %197, ptr %13, align 4, !tbaa !91
  call void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %194, ptr noundef nonnull align 4 dereferenceable(4) %13)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #7
  %198 = getelementptr inbounds i8, ptr %0, i64 720
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %14) #7
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %14)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %198, ptr noundef nonnull align 8 dereferenceable(96) %14)
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %14) #7
  %199 = getelementptr inbounds i8, ptr %0, i64 744
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %15) #7
  call void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %15)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 8 dereferenceable(96) %15)
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %15) #7
  call void @_ZNSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %195, ptr noundef nonnull align 8 dereferenceable(105) %4)
  %200 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  %.not83 = icmp eq i64 %200, 0
  br i1 %.not83, label %218, label %201

201:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %202 = getelementptr inbounds i8, ptr %0, i64 824
  %203 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE4findERS9_(ptr noundef nonnull align 8 dereferenceable(48) %202, ptr noundef nonnull align 8 dereferenceable(32) %5)
  store ptr %203, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  %204 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %202) #7
  store ptr %204, ptr %17, align 8
  %205 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjEESB_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  br i1 %205, label %206, label %213

206:                                              ; preds = %201
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.9)
  %208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(32) %5)
  %209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull @.str.10)
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8, i32 noundef 336, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE) #8
  unreachable

211:                                              ; preds = %._crit_edge
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  br label %361

213:                                              ; preds = %201
  %214 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %195) #7
  %215 = trunc i64 %214 to i32
  %216 = add i32 %215, -1
  %217 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48) %202, ptr noundef nonnull align 8 dereferenceable(32) %5)
  store i32 %216, ptr %217, align 4, !tbaa !91
  br label %218

218:                                              ; preds = %213, %191
  %219 = getelementptr inbounds i8, ptr %0, i64 112
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  store double 0.000000e+00, ptr %19, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  store double 0.000000e+00, ptr %20, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  store double 0.000000e+00, ptr %21, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  store double 0.000000e+00, ptr %22, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  store double 0.000000e+00, ptr %23, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  store double 0.000000e+00, ptr %24, align 8, !tbaa !112
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %18, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %219, ptr noundef nonnull align 16 dereferenceable(48) %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18) #7
  %220 = getelementptr inbounds i8, ptr %0, i64 136
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  store double 0.000000e+00, ptr %26, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  store double 0.000000e+00, ptr %27, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  store double 0.000000e+00, ptr %28, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  store double 0.000000e+00, ptr %29, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  store double 0.000000e+00, ptr %30, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  store double 0.000000e+00, ptr %31, align 8, !tbaa !112
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %25, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %220, ptr noundef nonnull align 16 dereferenceable(48) %25)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %25) #7
  %221 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %222 = add i64 %221, 4294967295
  call void @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %138, ptr noundef nonnull align 8 dereferenceable(24) %3)
  %223 = and i64 %222, 4294967295
  %224 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %223) #7
  %225 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %223) #7
  %226 = getelementptr inbounds i8, ptr %225, i64 16
  %227 = load i32, ptr %226, align 8, !tbaa !102
  %228 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %223) #7
  %229 = getelementptr inbounds i8, ptr %228, i64 12
  %230 = load i32, ptr %229, align 4, !tbaa !103
  %231 = add i32 %230, %227
  %232 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %233 = add i64 %232, -1
  %234 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %233) #7
  %235 = getelementptr inbounds i8, ptr %234, i64 16
  store i32 %231, ptr %235, align 8, !tbaa !102
  %236 = getelementptr inbounds i8, ptr %0, i64 184
  %237 = load ptr, ptr %3, align 8, !tbaa !113
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %236, ptr noundef nonnull align 16 dereferenceable(48) %237)
  %238 = getelementptr inbounds i8, ptr %0, i64 208
  %239 = load ptr, ptr %3, align 8, !tbaa !113
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %238, ptr noundef nonnull align 16 dereferenceable(48) %239)
  %240 = getelementptr inbounds i8, ptr %0, i64 232
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #7
  store double 0.000000e+00, ptr %33, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  store double 0.000000e+00, ptr %34, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  store double 0.000000e+00, ptr %35, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  store double 0.000000e+00, ptr %36, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  store double 0.000000e+00, ptr %37, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  store double 0.000000e+00, ptr %38, align 8, !tbaa !112
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %32, ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %240, ptr noundef nonnull align 16 dereferenceable(48) %32)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %32) #7
  %241 = getelementptr inbounds i8, ptr %0, i64 328
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE4ZeroEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %40, i64 noundef 6, i64 noundef 3)
  call void @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %39, ptr noundef nonnull align 1 dereferenceable(1) %40)
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %241, ptr noundef nonnull align 16 dereferenceable(144) %39)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %39) #7
  %242 = getelementptr inbounds i8, ptr %0, i64 352
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %42)
  call void @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %41, ptr noundef nonnull align 1 dereferenceable(1) %42)
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %242, ptr noundef nonnull align 16 dereferenceable(144) %41)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %41) #7
  %243 = getelementptr inbounds i8, ptr %0, i64 376
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %43) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.124") align 8 %44)
  call void @_ZN9Matrix3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %43, ptr noundef nonnull align 1 dereferenceable(1) %44)
  call void @_ZNSt6vectorI9Matrix3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %243, ptr noundef nonnull align 8 dereferenceable(72) %43)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %43) #7
  %244 = getelementptr inbounds i8, ptr %0, i64 400
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %45) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.129") align 8 %46)
  call void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %45, ptr noundef nonnull align 1 dereferenceable(1) %46)
  call void @_ZNSt6vectorI9Vector3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %244, ptr noundef nonnull align 8 dereferenceable(24) %45)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %45) #7
  %245 = getelementptr inbounds i8, ptr %0, i64 424
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #7
  store i32 0, ptr %47, align 4, !tbaa !91
  call void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %245, ptr noundef nonnull align 4 dereferenceable(4) %47)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #7
  %246 = getelementptr inbounds i8, ptr %0, i64 72
  %247 = load i32, ptr %246, align 8, !tbaa !114
  %248 = load i32, ptr %182, align 4, !tbaa !103
  %249 = add i32 %248, %247
  store i32 %249, ptr %246, align 8, !tbaa !114
  %250 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %251 = icmp ugt i64 %250, 1
  br i1 %251, label %.lr.ph97, label %._crit_edge98

._crit_edge98:                                    ; preds = %293, %218
  %.063.lcssa = phi i32 [ 0, %218 ], [ %.164, %293 ]
  %252 = load i32, ptr %246, align 8, !tbaa !114
  %253 = add i32 %252, %.063.lcssa
  %254 = getelementptr inbounds i8, ptr %0, i64 76
  store i32 %253, ptr %254, align 4, !tbaa !115
  %255 = getelementptr inbounds i8, ptr %0, i64 80
  %256 = load i32, ptr %255, align 8, !tbaa !116
  %257 = load i32, ptr %182, align 4, !tbaa !103
  %258 = add i32 %257, %256
  store i32 %258, ptr %255, align 8, !tbaa !116
  %259 = getelementptr inbounds i8, ptr %0, i64 280
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %48) #7
  call void @_ZNK17RigidBodyDynamics4Math16SpatialTransformmlERKS1_(ptr dead_on_unwind nonnull writable sret(%"struct.RigidBodyDynamics::Math::SpatialTransform") align 8 %48, ptr noundef nonnull align 8 dereferenceable(96) %2, ptr noundef nonnull align 8 dereferenceable(96) %10)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %259, ptr noundef nonnull align 8 dereferenceable(96) %48)
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %48) #7
  %260 = getelementptr inbounds i8, ptr %0, i64 472
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %49) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #7
  store double 0.000000e+00, ptr %50, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #7
  store double 0.000000e+00, ptr %51, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #7
  store double 0.000000e+00, ptr %52, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #7
  store double 0.000000e+00, ptr %53, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #7
  store double 0.000000e+00, ptr %54, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #7
  store double 0.000000e+00, ptr %55, align 8, !tbaa !112
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %49, ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %260, ptr noundef nonnull align 16 dereferenceable(48) %49)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %49) #7
  %261 = getelementptr inbounds i8, ptr %0, i64 496
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %56) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEE4ZeroEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.166") align 8 %57, i64 noundef 6, i64 noundef 6)
  call void @_ZN15SpatialMatrix_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(288) %56, ptr noundef nonnull align 1 dereferenceable(1) %57)
  call void @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %261, ptr noundef nonnull align 16 dereferenceable(288) %56)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #7
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %56) #7
  %262 = getelementptr inbounds i8, ptr %0, i64 520
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %58) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #7
  store double 0.000000e+00, ptr %59, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #7
  store double 0.000000e+00, ptr %60, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #7
  store double 0.000000e+00, ptr %61, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #7
  store double 0.000000e+00, ptr %62, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #7
  store double 0.000000e+00, ptr %63, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #7
  store double 0.000000e+00, ptr %64, align 8, !tbaa !112
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %58, ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %262, ptr noundef nonnull align 16 dereferenceable(48) %58)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %58) #7
  %263 = getelementptr inbounds i8, ptr %0, i64 544
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %65) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #7
  store double 0.000000e+00, ptr %66, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #7
  store double 0.000000e+00, ptr %67, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #7
  store double 0.000000e+00, ptr %68, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #7
  store double 0.000000e+00, ptr %69, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #7
  store double 0.000000e+00, ptr %70, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #7
  store double 0.000000e+00, ptr %71, align 8, !tbaa !112
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %65, ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %71)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %263, ptr noundef nonnull align 16 dereferenceable(48) %65)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %65) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %72) #7
  %264 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %195) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.149") align 8 %72, i64 noundef %264)
  %265 = getelementptr inbounds i8, ptr %0, i64 568
  %266 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %265, ptr noundef nonnull align 1 dereferenceable(1) %72)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %72) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %73) #7
  %267 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %195) #7
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.149") align 8 %73, i64 noundef %267)
  %268 = getelementptr inbounds i8, ptr %0, i64 584
  %269 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %268, ptr noundef nonnull align 1 dereferenceable(1) %73)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %73) #7
  %270 = getelementptr inbounds i8, ptr %0, i64 600
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %74) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #7
  store double 0.000000e+00, ptr %75, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #7
  store double 0.000000e+00, ptr %76, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #7
  store double 0.000000e+00, ptr %77, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #7
  store double 0.000000e+00, ptr %78, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #7
  store double 0.000000e+00, ptr %79, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #7
  store double 0.000000e+00, ptr %80, align 8, !tbaa !112
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %74, ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %80)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %270, ptr noundef nonnull align 16 dereferenceable(48) %74)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %74) #7
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %81) #7
  %271 = load double, ptr %4, align 8, !tbaa !117
  %272 = getelementptr inbounds i8, ptr %4, i64 8
  %273 = getelementptr inbounds i8, ptr %4, i64 32
  call void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertia25createFromMassComInertiaCEdRK9Vector3_tRK9Matrix3_t(ptr dead_on_unwind nonnull writable sret(%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia") align 8 %81, double noundef %271, ptr noundef nonnull align 8 dereferenceable(24) %272, ptr noundef nonnull align 8 dereferenceable(72) %273)
  %274 = getelementptr inbounds i8, ptr %0, i64 648
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %274, ptr noundef nonnull align 8 dereferenceable(80) %81)
  %275 = getelementptr inbounds i8, ptr %0, i64 624
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %275, ptr noundef nonnull align 8 dereferenceable(80) %81)
  %276 = getelementptr inbounds i8, ptr %0, i64 672
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %82) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #7
  store double 0.000000e+00, ptr %83, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #7
  store double 0.000000e+00, ptr %84, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %85) #7
  store double 0.000000e+00, ptr %85, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #7
  store double 0.000000e+00, ptr %86, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %87) #7
  store double 0.000000e+00, ptr %87, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #7
  store double 0.000000e+00, ptr %88, align 8, !tbaa !112
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %82, ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %88)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %276, ptr noundef nonnull align 16 dereferenceable(48) %82)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %82) #7
  %277 = getelementptr inbounds i8, ptr %0, i64 696
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %89) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %90) #7
  store double 0.000000e+00, ptr %90, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #7
  store double 0.000000e+00, ptr %91, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #7
  store double 0.000000e+00, ptr %92, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #7
  store double 0.000000e+00, ptr %93, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #7
  store double 0.000000e+00, ptr %94, align 8, !tbaa !112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %95) #7
  store double 0.000000e+00, ptr %95, align 8, !tbaa !112
  call void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %89, ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %95)
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %277, ptr noundef nonnull align 16 dereferenceable(48) %89)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %95) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %90) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %89) #7
  %278 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %195) #7
  %279 = getelementptr inbounds i8, ptr %0, i64 792
  %280 = load i32, ptr %279, align 8, !tbaa !92
  %281 = zext i32 %280 to i64
  %282 = icmp eq i64 %278, %281
  br i1 %282, label %298, label %304

.lr.ph97:                                         ; preds = %218, %293
  %283 = phi i64 [ %295, %293 ], [ 1, %218 ]
  %.06195 = phi i32 [ %294, %293 ], [ 1, %218 ]
  %.06394 = phi i32 [ %.164, %293 ], [ 0, %218 ]
  %284 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %283) #7
  %285 = getelementptr inbounds i8, ptr %284, i64 8
  %286 = load i32, ptr %285, align 8, !tbaa !5
  %287 = icmp eq i32 %286, 6
  br i1 %287, label %288, label %293

288:                                              ; preds = %.lr.ph97
  %289 = load i32, ptr %246, align 8, !tbaa !114
  %290 = add i32 %289, %.06394
  %291 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %245, i64 noundef %283) #7
  store i32 %290, ptr %291, align 4, !tbaa !91
  %292 = add nsw i32 %.06394, 1
  br label %293

293:                                              ; preds = %.lr.ph97, %288
  %.164 = phi i32 [ %292, %288 ], [ %.06394, %.lr.ph97 ]
  %294 = add i32 %.06195, 1
  %295 = zext i32 %294 to i64
  %296 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %297 = icmp ugt i64 %296, %295
  br i1 %297, label %.lr.ph97, label %._crit_edge98, !llvm.loop !120

298:                                              ; preds = %._crit_edge98
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.4)
  %300 = load i32, ptr %279, align 8, !tbaa !92
  %301 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %299, i32 noundef %300)
  %302 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef nonnull @.str.16)
  %303 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8, i32 noundef 420, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics5Model7AddBodyEjRKNS_4Math16SpatialTransformERKNS_5JointERKNS_4BodyENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE) #8
  unreachable

304:                                              ; preds = %._crit_edge98
  %305 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %195) #7
  %306 = trunc i64 %305 to i32
  %307 = add i32 %306, -1
  %308 = getelementptr inbounds i8, ptr %0, i64 84
  store i32 %307, ptr %308, align 4, !tbaa !12
  %309 = getelementptr inbounds i8, ptr %0, i64 256
  call void @_ZNSt6vectorIjSaIjEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %309) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %96) #7
  call void @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %97) #7
  store i32 0, ptr %97, align 4, !tbaa !91
  %310 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %.not110 = icmp eq i64 %310, 0
  br i1 %.not110, label %._crit_edge101, label %.lr.ph100

._crit_edge101:                                   ; preds = %322, %304
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %97) #7
  call void @_ZNSt6vectorIjSaIjEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %309) #7
  %311 = call noundef i64 @_ZNKSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #7
  %.not85105 = icmp eq i64 %311, 0
  br i1 %.not85105, label %._crit_edge108, label %.lr.ph107

.lr.ph100:                                        ; preds = %304, %322
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #7
  %312 = load i32, ptr %97, align 4, !tbaa !91
  %313 = zext i32 %312 to i64
  %314 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %313) #7
  %315 = getelementptr inbounds i8, ptr %314, i64 8
  call void @_ZNSt4pairIN17RigidBodyDynamics9JointTypeEjEC2IRS1_RjTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 4 dereferenceable(8) %98, ptr noundef nonnull align 4 dereferenceable(4) %315, ptr noundef nonnull align 4 dereferenceable(4) %97)
  invoke void @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %96, ptr noundef nonnull align 4 dereferenceable(8) %98)
          to label %316 unwind label %328

316:                                              ; preds = %.lr.ph100
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %99) #7
  %317 = load i32, ptr %97, align 4, !tbaa !91
  %318 = zext i32 %317 to i64
  %319 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %138, i64 noundef %318) #7
  %320 = getelementptr inbounds i8, ptr %319, i64 8
  %321 = load i32, ptr %320, align 8, !tbaa !5
  store i32 %321, ptr %99, align 4, !tbaa !91
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %309, ptr noundef nonnull align 4 dereferenceable(4) %99)
          to label %322 unwind label %330

322:                                              ; preds = %316
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #7
  %323 = load i32, ptr %97, align 4, !tbaa !91
  %324 = add i32 %323, 1
  store i32 %324, ptr %97, align 4, !tbaa !91
  %325 = zext i32 %324 to i64
  %326 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %327 = icmp ugt i64 %326, %325
  br i1 %327, label %.lr.ph100, label %._crit_edge101, !llvm.loop !121

328:                                              ; preds = %.lr.ph100
  %329 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #7
  br label %332

330:                                              ; preds = %316
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %99) #7
  br label %332

332:                                              ; preds = %330, %328
  %.pn87 = phi { ptr, i32 } [ %331, %330 ], [ %329, %328 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %97) #7
  br label %360

.lr.ph107:                                        ; preds = %._crit_edge101, %._crit_edge104
  %333 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef 0) #7
  %334 = load i32, ptr %333, align 4, !tbaa !122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %100) #7
  %335 = call ptr @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #7
  store ptr %335, ptr %100, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101) #7
  %336 = call ptr @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #7
  store ptr %336, ptr %101, align 8
  %337 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %101) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #7
  br i1 %337, label %.lr.ph103, label %._crit_edge104

.lr.ph103:                                        ; preds = %.lr.ph107, %354
  %338 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #7
  %339 = load i32, ptr %338, align 4, !tbaa !122
  %340 = icmp eq i32 %339, %334
  br i1 %340, label %341, label %352

341:                                              ; preds = %.lr.ph103
  %342 = call noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #7
  %343 = getelementptr inbounds i8, ptr %342, i64 4
  invoke void @_ZNSt6vectorIjSaIjEE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(24) %309, ptr noundef nonnull align 4 dereferenceable(4) %343)
          to label %344 unwind label %348

344:                                              ; preds = %341
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEC2IPS4_vEERKNS0_IT_S9_EE(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %100) #7
  %345 = load ptr, ptr %102, align 8
  %346 = invoke ptr @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS3_S5_EE(ptr noundef nonnull align 8 dereferenceable(24) %96, ptr %345)
          to label %347 unwind label %350

347:                                              ; preds = %344
  store ptr %346, ptr %100, align 8, !tbaa !104
  br label %354

348:                                              ; preds = %341
  %349 = landingpad { ptr, i32 }
          cleanup
  br label %358

350:                                              ; preds = %344
  %351 = landingpad { ptr, i32 }
          cleanup
  br label %358

352:                                              ; preds = %.lr.ph103
  %353 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %100) #7
  br label %354

354:                                              ; preds = %352, %347
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101) #7
  %355 = call ptr @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #7
  store ptr %355, ptr %101, align 8
  %356 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %101) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #7
  br i1 %356, label %.lr.ph103, label %._crit_edge104, !llvm.loop !124

._crit_edge104:                                   ; preds = %354, %.lr.ph107
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #7
  %357 = call noundef i64 @_ZNKSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #7
  %.not85 = icmp eq i64 %357, 0
  br i1 %.not85, label %._crit_edge108, label %.lr.ph107, !llvm.loop !125

358:                                              ; preds = %350, %348
  %.pn = phi { ptr, i32 } [ %351, %350 ], [ %349, %348 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #7
  br label %360

._crit_edge108:                                   ; preds = %._crit_edge104, %._crit_edge101
  %359 = load i32, ptr %308, align 4, !tbaa !12
  call void @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %96) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %81) #7
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %362

360:                                              ; preds = %358, %332
  %.pn87.pn = phi { ptr, i32 } [ %.pn87, %332 ], [ %.pn, %358 ]
  call void @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %96) #7
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %81) #7
  br label %361

361:                                              ; preds = %360, %211
  %.pn87.pn.pn = phi { ptr, i32 } [ %.pn87.pn, %360 ], [ %212, %211 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %363

362:                                              ; preds = %._crit_edge108, %118, %111
  %.0 = phi i32 [ %113, %111 ], [ %359, %._crit_edge108 ], [ %120, %118 ]
  ret i32 %.0

363:                                              ; preds = %361, %121, %114
  %.pn91 = phi { ptr, i32 } [ %115, %114 ], [ %.pn87.pn.pn, %361 ], [ %122, %121 ]
  resume { ptr, i32 } %.pn91
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIN17RigidBodyDynamics9JointTypeEjEC2IRS1_RjTnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS7_S8_EEEbE4typeELb1EEEOS7_OS8_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #0 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEC2IPS4_vEERKNS0_IT_S9_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt4pairIN17RigidBodyDynamics9JointTypeEjESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIN17RigidBodyDynamics9JointTypeEjESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #0 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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
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 = { 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 #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, !10, i64 8}
!6 = !{!"_ZTSN17RigidBodyDynamics5JointE", !7, i64 0, !10, i64 8, !11, i64 12, !11, i64 16, !11, i64 20}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN17RigidBodyDynamics9JointTypeE", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!13, !11, i64 84}
!13 = !{!"_ZTSN17RigidBodyDynamics5ModelE", !14, i64 0, !14, i64 24, !18, i64 48, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !22, i64 88, !27, i64 112, !27, i64 136, !32, i64 160, !27, i64 184, !27, i64 208, !27, i64 232, !14, i64 256, !37, i64 280, !14, i64 304, !42, i64 328, !42, i64 352, !47, i64 376, !51, i64 400, !14, 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, !11, i64 792, !78, i64 800, !83, i64 824}
!14 = !{!"_ZTSSt6vectorIjSaIjEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!18 = !{!"_ZTSSt6vectorIS_IjSaIjEESaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!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", !8, 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", !7, i64 0, !7, i64 8, !7, 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", !7, i64 0, !7, i64 8, !7, 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", !7, i64 0, !7, i64 8, !7, 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", !7, i64 0, !7, i64 8, !7, 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", !7, i64 0, !7, i64 8, !7, 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", !7, i64 0, !7, i64 8, !7, 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", !7, i64 0, !7, i64 8, !7, 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", !7, i64 0, !7, i64 8, !7, i64 16}
!64 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !65, i64 0}
!65 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !66, i64 0}
!66 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !7, i64 0, !67, i64 8}
!67 = !{!"long", !8, 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", !7, i64 0, !7, i64 8, !7, 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", !7, i64 0, !7, i64 8, !7, 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", !7, i64 0, !7, i64 8, !7, 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, !7, i64 8, !7, i64 16, !7, i64 24}
!90 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!91 = !{!11, !11, i64 0}
!92 = !{!13, !11, i64 792}
!93 = !{!94, !11, i64 104}
!94 = !{!"_ZTSN17RigidBodyDynamics9FixedBodyE", !95, i64 0, !22, i64 8, !96, i64 32, !11, i64 104, !101, i64 112, !101, i64 208}
!95 = !{!"double", !8, i64 0}
!96 = !{!"_ZTS9Matrix3_t", !97, i64 0}
!97 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE", !98, i64 0}
!98 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEE", !99, i64 0}
!99 = !{!"_ZTSN5Eigen12DenseStorageIdLi9ELi3ELi3ELi0EEE", !100, i64 0}
!100 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi9ELi0ELi0EEE", !8, i64 0}
!101 = !{!"_ZTSN17RigidBodyDynamics4Math16SpatialTransformE", !96, i64 0, !22, i64 72}
!102 = !{!6, !11, i64 16}
!103 = !{!6, !11, i64 12}
!104 = !{!7, !7, i64 0}
!105 = !{!106, !11, i64 8}
!106 = !{!"_ZTSN17RigidBodyDynamics11CustomJointE", !11, i64 8, !101, i64 16, !107, i64 112, !107, i64 136, !107, i64 160, !64, i64 184, !64, i64 200}
!107 = !{!"_ZTSN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEE", !108, i64 0}
!108 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEE", !109, i64 0}
!109 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELin1ELi0EEE", !7, i64 0, !67, i64 8, !67, i64 16}
!110 = distinct !{!110, !111}
!111 = !{!"llvm.loop.mustprogress"}
!112 = !{!95, !95, i64 0}
!113 = !{!6, !7, i64 0}
!114 = !{!13, !11, i64 72}
!115 = !{!13, !11, i64 76}
!116 = !{!13, !11, i64 80}
!117 = !{!118, !95, i64 0}
!118 = !{!"_ZTSN17RigidBodyDynamics4BodyE", !95, i64 0, !22, i64 8, !96, i64 32, !119, i64 104}
!119 = !{!"bool", !8, i64 0}
!120 = distinct !{!120, !111}
!121 = distinct !{!121, !111}
!122 = !{!123, !10, i64 0}
!123 = !{!"_ZTSSt4pairIN17RigidBodyDynamics9JointTypeEjE", !10, i64 0, !11, i64 4}
!124 = distinct !{!124, !111}
!125 = distinct !{!125, !111}


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