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

; 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.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::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::allocator" = type { i8 }
%"struct.RigidBodyDynamics::Model" = type { %"class.std::vector", %"class.std::vector", %"class.std::vector.11", i32, i32, i32, i32, %class.Vector3_t, %"class.std::vector.26", %"class.std::vector.26", %"class.std::vector.32", %"class.std::vector.26", %"class.std::vector.26", %"class.std::vector.26", %"class.std::vector", %"class.std::vector.39", %"class.std::vector", %"class.std::vector.46", %"class.std::vector.46", %"class.std::vector.53", %"class.std::vector.58", %"class.std::vector", %"class.std::vector.63", %"class.std::vector.26", %"class.std::vector.68", %"class.std::vector.26", %"class.std::vector.26", %"class.Eigen::Matrix.75", %"class.Eigen::Matrix.75", %"class.std::vector.26", %"class.std::vector.84", %"class.std::vector.84", %"class.std::vector.26", %"class.std::vector.26", %"class.std::vector.39", %"class.std::vector.39", %"class.std::vector.91", i32, %"class.std::vector.98", %"class.std::map" }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = 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.Vector3_t = type { %"class.Eigen::Matrix.16" }
%"class.Eigen::Matrix.16" = type { %"class.Eigen::PlainObjectBase.17" }
%"class.Eigen::PlainObjectBase.17" = type { %"class.Eigen::DenseStorage.24" }
%"class.Eigen::DenseStorage.24" = type { %"struct.Eigen::internal::plain_array.25" }
%"struct.Eigen::internal::plain_array.25" = type { [3 x double] }
%"class.std::vector.32" = type { %"class.std::vector.33" }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = 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.46" = type { %"class.std::vector.47" }
%"class.std::vector.47" = type { %"struct.std::_Vector_base.48" }
%"struct.std::_Vector_base.48" = 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.53" = type { %"struct.std::_Vector_base.54" }
%"struct.std::_Vector_base.54" = 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.58" = type { %"struct.std::_Vector_base.59" }
%"struct.std::_Vector_base.59" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.63" = type { %"struct.std::_Vector_base.64" }
%"struct.std::_Vector_base.64" = 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.68" = type { %"class.std::vector.69" }
%"class.std::vector.69" = type { %"struct.std::_Vector_base.70" }
%"struct.std::_Vector_base.70" = 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.75" = type { %"class.Eigen::PlainObjectBase.76" }
%"class.Eigen::PlainObjectBase.76" = type { %"class.Eigen::DenseStorage.83" }
%"class.Eigen::DenseStorage.83" = type { ptr, i64 }
%"class.std::vector.84" = type { %"class.std::vector.85" }
%"class.std::vector.85" = type { %"struct.std::_Vector_base.86" }
%"struct.std::_Vector_base.86" = 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.26" = type { %"class.std::vector.27" }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = 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.39" = type { %"class.std::vector.40" }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = 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.91" = type { %"class.std::vector.92" }
%"class.std::vector.92" = type { %"struct.std::_Vector_base.93" }
%"struct.std::_Vector_base.93" = 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.98" = type { %"class.std::vector.99" }
%"class.std::vector.99" = type { %"struct.std::_Vector_base.100" }
%"struct.std::_Vector_base.100" = 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::Body" = type <{ double, %class.Vector3_t, %class.Matrix3_t, i8, [7 x i8] }>
%class.Matrix3_t = type { %"class.Eigen::Matrix.108" }
%"class.Eigen::Matrix.108" = type { %"class.Eigen::PlainObjectBase.109" }
%"class.Eigen::PlainObjectBase.109" = type { %"class.Eigen::DenseStorage.116" }
%"class.Eigen::DenseStorage.116" = type { %"struct.Eigen::internal::plain_array.117" }
%"struct.Eigen::internal::plain_array.117" = type { [9 x double] }
%"struct.RigidBodyDynamics::FixedBody" = type { double, %class.Vector3_t, %class.Matrix3_t, i32, %"struct.RigidBodyDynamics::Math::SpatialTransform", %"struct.RigidBodyDynamics::Math::SpatialTransform" }
%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }

@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.17 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [9 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics5Utils12get_dof_nameB5cxx11ERK15SpatialVector_t(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 16 dereferenceable(48)) #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics5Utils13get_body_nameB5cxx11ERKNS_5ModelEj(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(872), i32 noundef) #0

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics5Model11GetBodyNameB5cxx11Ej(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(872), i32 noundef) #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef, i32 noundef) #4

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 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)) #3

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #0 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)) #3

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics5Utils15print_hierarchyB5cxx11ERKNS_5ModelEji(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(872) %1, i32 noundef %2, i32 noundef %3) #0 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::allocator", align 1
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  store ptr %0, ptr %5, align 8
  store ptr %1, ptr %6, align 8, !tbaa !5
  store i32 %2, ptr %7, align 4, !tbaa !9
  store i32 %3, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 392, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %27 unwind label %36

27:                                               ; preds = %4
  %28 = invoke noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef 16, i32 noundef 8)
          to label %29 unwind label %40

29:                                               ; preds = %27
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(128) %9, ptr noundef nonnull align 8 dereferenceable(32) %10, i32 noundef %28)
          to label %30 unwind label %40

30:                                               ; preds = %29
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  store i32 0, ptr %14, align 4, !tbaa !9
  br label %31

31:                                               ; preds = %49, %30
  %32 = load i32, ptr %14, align 4, !tbaa !9
  %33 = load i32, ptr %8, align 4, !tbaa !9
  %34 = icmp slt i32 %32, %33
  br i1 %34, label %45, label %35

35:                                               ; preds = %31
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %56

36:                                               ; preds = %4
  %37 = landingpad { ptr, i32 }
          cleanup
  %38 = extractvalue { ptr, i32 } %37, 0
  store ptr %38, ptr %12, align 8
  %39 = extractvalue { ptr, i32 } %37, 1
  store i32 %39, ptr %13, align 4
  br label %44

40:                                               ; preds = %29, %27
  %41 = landingpad { ptr, i32 }
          cleanup
  %42 = extractvalue { ptr, i32 } %41, 0
  store ptr %42, ptr %12, align 8
  %43 = extractvalue { ptr, i32 } %41, 1
  store i32 %43, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %44

44:                                               ; preds = %40, %36
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #6
  br label %370

45:                                               ; preds = %31
  %46 = getelementptr inbounds i8, ptr %9, i64 16
  %47 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef @.str.14)
          to label %48 unwind label %52

48:                                               ; preds = %45
  br label %49

49:                                               ; preds = %48
  %50 = load i32, ptr %14, align 4, !tbaa !9
  %51 = add nsw i32 %50, 1
  store i32 %51, ptr %14, align 4, !tbaa !9
  br label %31, !llvm.loop !11

52:                                               ; preds = %45
  %53 = landingpad { ptr, i32 }
          cleanup
  %54 = extractvalue { ptr, i32 } %53, 0
  store ptr %54, ptr %12, align 8
  %55 = extractvalue { ptr, i32 } %53, 1
  store i32 %55, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %369

56:                                               ; preds = %35
  %57 = getelementptr inbounds i8, ptr %9, i64 16
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #6
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  %59 = load i32, ptr %7, align 4, !tbaa !9
  invoke void @_ZN17RigidBodyDynamics5Utils13get_body_nameB5cxx11ERKNS_5ModelEj(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(872) %58, i32 noundef %59)
          to label %60 unwind label %69

60:                                               ; preds = %56
  %61 = invoke 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) %57, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %62 unwind label %73

62:                                               ; preds = %60
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #6
  %63 = load i32, ptr %7, align 4, !tbaa !9
  %64 = icmp ugt i32 %63, 0
  br i1 %64, label %65, label %82

65:                                               ; preds = %62
  %66 = getelementptr inbounds i8, ptr %9, i64 16
  %67 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef @.str.15)
          to label %68 unwind label %78

68:                                               ; preds = %65
  br label %82

69:                                               ; preds = %56
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %12, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %13, align 4
  br label %77

73:                                               ; preds = %60
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %12, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #6
  br label %77

77:                                               ; preds = %73, %69
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #6
  br label %369

78:                                               ; preds = %253, %119, %116, %114, %112, %100, %65
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %12, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %13, align 4
  br label %369

82:                                               ; preds = %68, %62
  br label %83

83:                                               ; preds = %212, %82
  %84 = load ptr, ptr %6, align 8, !tbaa !5
  %85 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %84, i32 0, i32 38
  %86 = load i32, ptr %7, align 4, !tbaa !9
  %87 = zext i32 %86 to i64
  %88 = call noundef nonnull align 8 dereferenceable(105) ptr @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef %87) #6
  %89 = getelementptr inbounds %"struct.RigidBodyDynamics::Body", ptr %88, i32 0, i32 3
  %90 = load i8, ptr %89, align 8, !tbaa !13, !range !27, !noundef !28
  %91 = trunc i8 %90 to i1
  br i1 %91, label %92, label %229

92:                                               ; preds = %83
  %93 = load ptr, ptr %6, align 8, !tbaa !5
  %94 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %93, i32 0, i32 2
  %95 = load i32, ptr %7, align 4, !tbaa !9
  %96 = zext i32 %95 to i64
  %97 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %94, i64 noundef %96) #6
  %98 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %97) #6
  %99 = icmp eq i64 %98, 0
  br i1 %99, label %100, label %104

100:                                              ; preds = %92
  %101 = getelementptr inbounds i8, ptr %9, i64 16
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef @.str.16)
          to label %103 unwind label %78

103:                                              ; preds = %100
  br label %229

104:                                              ; preds = %92
  %105 = load ptr, ptr %6, align 8, !tbaa !5
  %106 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %105, i32 0, i32 2
  %107 = load i32, ptr %7, align 4, !tbaa !9
  %108 = zext i32 %107 to i64
  %109 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %106, i64 noundef %108) #6
  %110 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %109) #6
  %111 = icmp ugt i64 %110, 1
  br i1 %111, label %112, label %200

112:                                              ; preds = %104
  %113 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %114 unwind label %78

114:                                              ; preds = %112
  %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef @.str.17)
          to label %116 unwind label %78

116:                                              ; preds = %114
  %117 = load i32, ptr %7, align 4, !tbaa !9
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %115, i32 noundef %117)
          to label %119 unwind label %78

119:                                              ; preds = %116
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef @.str.18)
          to label %121 unwind label %78

121:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #6
  %122 = load ptr, ptr %6, align 8, !tbaa !5
  %123 = load i32, ptr %7, align 4, !tbaa !9
  invoke void @_ZNK17RigidBodyDynamics5Model11GetBodyNameB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull align 8 dereferenceable(872) %122, i32 noundef %123)
          to label %124 unwind label %142

124:                                              ; preds = %121
  %125 = invoke 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) %120, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %126 unwind label %146

126:                                              ; preds = %124
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef @.str.19)
          to label %128 unwind label %146

128:                                              ; preds = %126
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %130 unwind label %146

130:                                              ; preds = %128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %131

131:                                              ; preds = %182, %130
  %132 = load i32, ptr %17, align 4, !tbaa !9
  %133 = zext i32 %132 to i64
  %134 = load ptr, ptr %6, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %134, i32 0, i32 2
  %136 = load i32, ptr %7, align 4, !tbaa !9
  %137 = zext i32 %136 to i64
  %138 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %135, i64 noundef %137) #6
  %139 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #6
  %140 = icmp ult i64 %133, %139
  br i1 %140, label %151, label %141

141:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  br label %199

142:                                              ; preds = %121
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %12, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %13, align 4
  br label %150

146:                                              ; preds = %128, %126, %124
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %12, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %150

150:                                              ; preds = %146, %142
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %369

151:                                              ; preds = %131
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.20)
          to label %153 unwind label %185

153:                                              ; preds = %151
  %154 = load ptr, ptr %6, align 8, !tbaa !5
  %155 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %154, i32 0, i32 2
  %156 = load i32, ptr %7, align 4, !tbaa !9
  %157 = zext i32 %156 to i64
  %158 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %155, i64 noundef %157) #6
  %159 = load i32, ptr %17, align 4, !tbaa !9
  %160 = zext i32 %159 to i64
  %161 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %158, i64 noundef %160) #6
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %152, i32 noundef %162)
          to label %164 unwind label %185

164:                                              ; preds = %153
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef @.str.21)
          to label %166 unwind label %185

166:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #6
  %167 = load ptr, ptr %6, align 8, !tbaa !5
  %168 = load ptr, ptr %6, align 8, !tbaa !5
  %169 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %168, i32 0, i32 2
  %170 = load i32, ptr %7, align 4, !tbaa !9
  %171 = zext i32 %170 to i64
  %172 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %169, i64 noundef %171) #6
  %173 = load i32, ptr %17, align 4, !tbaa !9
  %174 = zext i32 %173 to i64
  %175 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %172, i64 noundef %174) #6
  %176 = load i32, ptr %175, align 4, !tbaa !9
  invoke void @_ZNK17RigidBodyDynamics5Model11GetBodyNameB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(872) %167, i32 noundef %176)
          to label %177 unwind label %189

177:                                              ; preds = %166
  %178 = invoke 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) %165, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %179 unwind label %193

179:                                              ; preds = %177
  %180 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %181 unwind label %193

181:                                              ; preds = %179
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  br label %182

182:                                              ; preds = %181
  %183 = load i32, ptr %17, align 4, !tbaa !9
  %184 = add i32 %183, 1
  store i32 %184, ptr %17, align 4, !tbaa !9
  br label %131, !llvm.loop !29

185:                                              ; preds = %164, %153, %151
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %12, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %13, align 4
  br label %198

189:                                              ; preds = %166
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %12, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %13, align 4
  br label %197

193:                                              ; preds = %179, %177
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %12, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #6
  br label %197

197:                                              ; preds = %193, %189
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #6
  br label %198

198:                                              ; preds = %197, %185
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  br label %369

199:                                              ; preds = %141
  call void @abort() #7
  unreachable

200:                                              ; preds = %104
  br label %201

201:                                              ; preds = %200
  %202 = getelementptr inbounds i8, ptr %9, i64 16
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #6
  %203 = load ptr, ptr %6, align 8, !tbaa !5
  %204 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %203, i32 0, i32 11
  %205 = load i32, ptr %7, align 4, !tbaa !9
  %206 = zext i32 %205 to i64
  %207 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %204, i64 noundef %206) #6
  invoke void @_ZN17RigidBodyDynamics5Utils12get_dof_nameB5cxx11ERK15SpatialVector_t(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 16 dereferenceable(48) %207)
          to label %208 unwind label %220

208:                                              ; preds = %201
  %209 = invoke 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) %202, ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %210 unwind label %224

210:                                              ; preds = %208
  %211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef @.str.22)
          to label %212 unwind label %224

212:                                              ; preds = %210
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %213, i32 0, i32 2
  %215 = load i32, ptr %7, align 4, !tbaa !9
  %216 = zext i32 %215 to i64
  %217 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %214, i64 noundef %216) #6
  %218 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %217, i64 noundef 0) #6
  %219 = load i32, ptr %218, align 4, !tbaa !9
  store i32 %219, ptr %7, align 4, !tbaa !9
  br label %83, !llvm.loop !30

220:                                              ; preds = %201
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %12, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %13, align 4
  br label %228

224:                                              ; preds = %210, %208
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %12, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %228

228:                                              ; preds = %224, %220
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  br label %369

229:                                              ; preds = %103, %83
  %230 = load i32, ptr %7, align 4, !tbaa !9
  %231 = icmp ugt i32 %230, 0
  br i1 %231, label %232, label %253

232:                                              ; preds = %229
  %233 = getelementptr inbounds i8, ptr %9, i64 16
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #6
  %234 = load ptr, ptr %6, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %234, i32 0, i32 11
  %236 = load i32, ptr %7, align 4, !tbaa !9
  %237 = zext i32 %236 to i64
  %238 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %235, i64 noundef %237) #6
  invoke void @_ZN17RigidBodyDynamics5Utils12get_dof_nameB5cxx11ERK15SpatialVector_t(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 16 dereferenceable(48) %238)
          to label %239 unwind label %244

239:                                              ; preds = %232
  %240 = invoke 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) %233, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %241 unwind label %248

241:                                              ; preds = %239
  %242 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %240, ptr noundef @.str.23)
          to label %243 unwind label %248

243:                                              ; preds = %241
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  br label %253

244:                                              ; preds = %232
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %12, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %13, align 4
  br label %252

248:                                              ; preds = %241, %239
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %12, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #6
  br label %252

252:                                              ; preds = %248, %244
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #6
  br label %369

253:                                              ; preds = %243, %229
  %254 = getelementptr inbounds i8, ptr %9, i64 16
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %254, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %256 unwind label %78

256:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  store i32 0, ptr %21, align 4, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %257

257:                                              ; preds = %284, %256
  %258 = load i32, ptr %21, align 4, !tbaa !9
  %259 = zext i32 %258 to i64
  %260 = load ptr, ptr %6, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %260, i32 0, i32 2
  %262 = load i32, ptr %7, align 4, !tbaa !9
  %263 = zext i32 %262 to i64
  %264 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %261, i64 noundef %263) #6
  %265 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #6
  %266 = icmp ult i64 %259, %265
  br i1 %266, label %267, label %296

267:                                              ; preds = %257
  %268 = getelementptr inbounds i8, ptr %9, i64 16
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #6
  %269 = load ptr, ptr %6, align 8, !tbaa !5
  %270 = load ptr, ptr %6, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %270, i32 0, i32 2
  %272 = load i32, ptr %7, align 4, !tbaa !9
  %273 = zext i32 %272 to i64
  %274 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %271, i64 noundef %273) #6
  %275 = load i32, ptr %21, align 4, !tbaa !9
  %276 = zext i32 %275 to i64
  %277 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %274, i64 noundef %276) #6
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = load i32, ptr %8, align 4, !tbaa !9
  %280 = add nsw i32 %279, 1
  invoke void @_ZN17RigidBodyDynamics5Utils15print_hierarchyB5cxx11ERKNS_5ModelEji(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %22, ptr noundef nonnull align 8 dereferenceable(872) %269, i32 noundef %278, i32 noundef %280)
          to label %281 unwind label %287

281:                                              ; preds = %267
  %282 = invoke 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) %268, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %283 unwind label %291

283:                                              ; preds = %281
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  br label %284

284:                                              ; preds = %283
  %285 = load i32, ptr %21, align 4, !tbaa !9
  %286 = add i32 %285, 1
  store i32 %286, ptr %21, align 4, !tbaa !9
  br label %257, !llvm.loop !31

287:                                              ; preds = %267
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %12, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %13, align 4
  br label %295

291:                                              ; preds = %281
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %12, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #6
  br label %295

295:                                              ; preds = %291, %287
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #6
  br label %368

296:                                              ; preds = %257
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %297

297:                                              ; preds = %358, %296
  %298 = load i32, ptr %23, align 4, !tbaa !9
  %299 = zext i32 %298 to i64
  %300 = load ptr, ptr %6, align 8, !tbaa !5
  %301 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %300, i32 0, i32 36
  %302 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %301) #6
  %303 = icmp ult i64 %299, %302
  br i1 %303, label %305, label %304

304:                                              ; preds = %297
  store i32 13, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %362

305:                                              ; preds = %297
  %306 = load ptr, ptr %6, align 8, !tbaa !5
  %307 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %306, i32 0, i32 36
  %308 = load i32, ptr %23, align 4, !tbaa !9
  %309 = zext i32 %308 to i64
  %310 = call noundef nonnull align 8 dereferenceable(304) ptr @_ZNKSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %307, i64 noundef %309) #6
  %311 = getelementptr inbounds %"struct.RigidBodyDynamics::FixedBody", ptr %310, i32 0, i32 3
  %312 = load i32, ptr %311, align 8, !tbaa !32
  %313 = load i32, ptr %7, align 4, !tbaa !9
  %314 = icmp eq i32 %312, %313
  br i1 %314, label %315, label %357

315:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %316

316:                                              ; preds = %326, %315
  %317 = load i32, ptr %25, align 4, !tbaa !9
  %318 = load i32, ptr %8, align 4, !tbaa !9
  %319 = add nsw i32 %318, 1
  %320 = icmp slt i32 %317, %319
  br i1 %320, label %322, label %321

321:                                              ; preds = %316
  store i32 16, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %333

322:                                              ; preds = %316
  %323 = getelementptr inbounds i8, ptr %9, i64 16
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %323, ptr noundef @.str.14)
          to label %325 unwind label %329

325:                                              ; preds = %322
  br label %326

326:                                              ; preds = %325
  %327 = load i32, ptr %25, align 4, !tbaa !9
  %328 = add nsw i32 %327, 1
  store i32 %328, ptr %25, align 4, !tbaa !9
  br label %316, !llvm.loop !35

329:                                              ; preds = %322
  %330 = landingpad { ptr, i32 }
          cleanup
  %331 = extractvalue { ptr, i32 } %330, 0
  store ptr %331, ptr %12, align 8
  %332 = extractvalue { ptr, i32 } %330, 1
  store i32 %332, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %361

333:                                              ; preds = %321
  %334 = getelementptr inbounds i8, ptr %9, i64 16
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #6
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = load ptr, ptr %6, align 8, !tbaa !5
  %337 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %336, i32 0, i32 37
  %338 = load i32, ptr %337, align 8, !tbaa !36
  %339 = load i32, ptr %23, align 4, !tbaa !9
  %340 = add i32 %338, %339
  invoke void @_ZNK17RigidBodyDynamics5Model11GetBodyNameB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(872) %335, i32 noundef %340)
          to label %341 unwind label %348

341:                                              ; preds = %333
  %342 = invoke 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) %334, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %343 unwind label %352

343:                                              ; preds = %341
  %344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %342, ptr noundef @.str.24)
          to label %345 unwind label %352

345:                                              ; preds = %343
  %346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %344, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %347 unwind label %352

347:                                              ; preds = %345
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #6
  br label %357

348:                                              ; preds = %333
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %12, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %13, align 4
  br label %356

352:                                              ; preds = %345, %343, %341
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %12, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %13, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #6
  br label %356

356:                                              ; preds = %352, %348
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #6
  br label %361

357:                                              ; preds = %347, %305
  br label %358

358:                                              ; preds = %357
  %359 = load i32, ptr %23, align 4, !tbaa !9
  %360 = add i32 %359, 1
  store i32 %360, ptr %23, align 4, !tbaa !9
  br label %297, !llvm.loop !110

361:                                              ; preds = %356, %329
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %368

362:                                              ; preds = %304
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(128) %9)
          to label %363 unwind label %364

363:                                              ; preds = %362
  store i32 1, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %9) #6
  call void @llvm.lifetime.end.p0(i64 392, ptr %9) #6
  ret void

364:                                              ; preds = %362
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %12, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %13, align 4
  br label %368

368:                                              ; preds = %364, %361, %295
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  br label %369

369:                                              ; preds = %368, %252, %228, %198, %150, %78, %77, %52
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %9) #6
  br label %370

370:                                              ; preds = %369, %44
  call void @llvm.lifetime.end.p0(i64 392, ptr %9) #6
  br label %371

371:                                              ; preds = %370
  %372 = load ptr, ptr %12, align 8
  %373 = load i32, ptr %13, align 4
  %374 = insertvalue { ptr, i32 } poison, ptr %372, 0
  %375 = insertvalue { ptr, i32 } %374, i32 %373, 1
  resume { ptr, i32 } %375
}

; Function Attrs: noreturn nounwind
declare void @abort() #5

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

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

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

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

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


; 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.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::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::allocator" = type { i8 }

@.str.11 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.17 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [9 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics5Utils12get_dof_nameB5cxx11ERK15SpatialVector_t(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 16 dereferenceable(48)) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 align 2

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics5Utils13get_body_nameB5cxx11ERKNS_5ModelEj(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(872), i32 noundef) local_unnamed_addr #0

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK17RigidBodyDynamics5Model11GetBodyNameB5cxx11Ej(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(872), i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 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 #3

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics5Utils15print_hierarchyB5cxx11ERKNS_5ModelEji(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(872) %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator", align 1
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.11, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %15 unwind label %21

15:                                               ; preds = %4
  %16 = call noundef i32 @_ZStorSt13_Ios_OpenmodeS_(i32 noundef 16, i32 noundef 8)
  invoke void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(128) %5, ptr noundef nonnull align 8 dereferenceable(32) %6, i32 noundef %16)
          to label %17 unwind label %23

17:                                               ; preds = %15
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  %18 = icmp sgt i32 %3, 0
  br i1 %18, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %17
  %19 = getelementptr inbounds i8, ptr %5, i64 16
  br label %26

._crit_edge:                                      ; preds = %28, %17
  %20 = getelementptr inbounds i8, ptr %5, i64 16
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  invoke void @_ZN17RigidBodyDynamics5Utils13get_body_nameB5cxx11ERKNS_5ModelEj(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(872) %1, i32 noundef %2)
          to label %32 unwind label %37

21:                                               ; preds = %4
  %22 = landingpad { ptr, i32 }
          cleanup
  br label %25

23:                                               ; preds = %15
  %24 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #6
  br label %25

25:                                               ; preds = %23, %21
  %.pn = phi { ptr, i32 } [ %24, %23 ], [ %22, %21 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #6
  br label %212

26:                                               ; preds = %.lr.ph, %28
  %.058117 = phi i32 [ 0, %.lr.ph ], [ %29, %28 ]
  %27 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull @.str.14)
          to label %28 unwind label %30

28:                                               ; preds = %26
  %29 = add nuw nsw i32 %.058117, 1
  %exitcond.not = icmp eq i32 %29, %3
  br i1 %exitcond.not, label %._crit_edge, label %26, !llvm.loop !5

30:                                               ; preds = %26
  %31 = landingpad { ptr, i32 }
          cleanup
  br label %211

32:                                               ; preds = %._crit_edge
  %33 = invoke 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) %20, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %34 unwind label %39

34:                                               ; preds = %32
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  %.not = icmp eq i32 %2, 0
  br i1 %.not, label %44, label %35

35:                                               ; preds = %34
  %36 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull @.str.15)
          to label %44 unwind label %42

37:                                               ; preds = %._crit_edge
  %38 = landingpad { ptr, i32 }
          cleanup
  br label %41

39:                                               ; preds = %32
  %40 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  br label %41

41:                                               ; preds = %39, %37
  %.pn79 = phi { ptr, i32 } [ %40, %39 ], [ %38, %37 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  br label %211

42:                                               ; preds = %151, %70, %68, %66, %64, %58, %35
  %43 = landingpad { ptr, i32 }
          cleanup
  br label %211

44:                                               ; preds = %35, %34
  %45 = getelementptr inbounds i8, ptr %1, i64 800
  %46 = zext i32 %2 to i64
  %47 = call noundef nonnull align 8 dereferenceable(105) ptr @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef %46) #6
  %48 = getelementptr inbounds i8, ptr %47, i64 104
  %49 = load i8, ptr %48, align 8, !tbaa !7, !range !23, !noundef !24
  %50 = trunc nuw i8 %49 to i1
  br i1 %50, label %.lr.ph120, label %.loopexit

.lr.ph120:                                        ; preds = %44
  %51 = getelementptr inbounds i8, ptr %1, i64 48
  %52 = getelementptr inbounds i8, ptr %1, i64 184
  br label %53

53:                                               ; preds = %.lr.ph120, %123
  %54 = phi i64 [ %46, %.lr.ph120 ], [ %127, %123 ]
  %.073118 = phi i32 [ %2, %.lr.ph120 ], [ %126, %123 ]
  %55 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %54) #6
  %56 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %55) #6
  %57 = icmp eq i64 %56, 0
  br i1 %57, label %58, label %60

58:                                               ; preds = %53
  %59 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull @.str.16)
          to label %.loopexit unwind label %42

60:                                               ; preds = %53
  %61 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %54) #6
  %62 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #6
  %63 = icmp ugt i64 %62, 1
  br i1 %63, label %64, label %117

64:                                               ; preds = %60
  %65 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %66 unwind label %42

66:                                               ; preds = %64
  %67 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull @.str.17)
          to label %68 unwind label %42

68:                                               ; preds = %66
  %69 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %67, i32 noundef %.073118)
          to label %70 unwind label %42

70:                                               ; preds = %68
  %71 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull @.str.18)
          to label %72 unwind label %42

72:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  invoke void @_ZNK17RigidBodyDynamics5Model11GetBodyNameB5cxx11Ej(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(872) %1, i32 noundef %.073118)
          to label %73 unwind label %82

73:                                               ; preds = %72
  %74 = invoke 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) %71, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %75 unwind label %84

75:                                               ; preds = %73
  %76 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull @.str.19)
          to label %77 unwind label %84

77:                                               ; preds = %75
  %78 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %79 unwind label %84

79:                                               ; preds = %77
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  %80 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %54) #6
  %81 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #6
  %.not135 = icmp eq i64 %81, 0
  br i1 %.not135, label %._crit_edge125, label %.lr.ph124

._crit_edge125:                                   ; preds = %104, %79
  call void @abort() #7
  unreachable

82:                                               ; preds = %72
  %83 = landingpad { ptr, i32 }
          cleanup
  br label %86

84:                                               ; preds = %77, %75, %73
  %85 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %86

86:                                               ; preds = %84, %82
  %.pn83 = phi { ptr, i32 } [ %85, %84 ], [ %83, %82 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %211

.lr.ph124:                                        ; preds = %79, %104
  %87 = phi i64 [ %106, %104 ], [ 0, %79 ]
  %.057122 = phi i32 [ %105, %104 ], [ 0, %79 ]
  %88 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.20)
          to label %89 unwind label %110

89:                                               ; preds = %.lr.ph124
  %90 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %54) #6
  %91 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %87) #6
  %92 = load i32, ptr %91, align 4, !tbaa !25
  %93 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %88, i32 noundef %92)
          to label %94 unwind label %110

94:                                               ; preds = %89
  %95 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull @.str.21)
          to label %96 unwind label %110

96:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #6
  %97 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %54) #6
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %97, i64 noundef %87) #6
  %99 = load i32, ptr %98, align 4, !tbaa !25
  invoke void @_ZNK17RigidBodyDynamics5Model11GetBodyNameB5cxx11Ej(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(872) %1, i32 noundef %99)
          to label %100 unwind label %112

100:                                              ; preds = %96
  %101 = invoke 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) %95, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %102 unwind label %114

102:                                              ; preds = %100
  %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %104 unwind label %114

104:                                              ; preds = %102
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  %105 = add i32 %.057122, 1
  %106 = zext i32 %105 to i64
  %107 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %54) #6
  %108 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %107) #6
  %109 = icmp ugt i64 %108, %106
  br i1 %109, label %.lr.ph124, label %._crit_edge125, !llvm.loop !27

110:                                              ; preds = %94, %89, %.lr.ph124
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %211

112:                                              ; preds = %96
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %116

114:                                              ; preds = %102, %100
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #6
  br label %116

116:                                              ; preds = %114, %112
  %.pn85 = phi { ptr, i32 } [ %115, %114 ], [ %113, %112 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #6
  br label %211

117:                                              ; preds = %60
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  %118 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %54) #6
  invoke void @_ZN17RigidBodyDynamics5Utils12get_dof_nameB5cxx11ERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 16 dereferenceable(48) %118)
          to label %119 unwind label %132

119:                                              ; preds = %117
  %120 = invoke 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) %20, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %121 unwind label %134

121:                                              ; preds = %119
  %122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull @.str.22)
          to label %123 unwind label %134

123:                                              ; preds = %121
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  %124 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef %54) #6
  %125 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %124, i64 noundef 0) #6
  %126 = load i32, ptr %125, align 4, !tbaa !25
  %127 = zext i32 %126 to i64
  %128 = call noundef nonnull align 8 dereferenceable(105) ptr @_ZNKSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef %127) #6
  %129 = getelementptr inbounds i8, ptr %128, i64 104
  %130 = load i8, ptr %129, align 8, !tbaa !7, !range !23, !noundef !24
  %131 = trunc nuw i8 %130 to i1
  br i1 %131, label %53, label %.loopexit, !llvm.loop !28

132:                                              ; preds = %117
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %136

134:                                              ; preds = %121, %119
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %136

136:                                              ; preds = %134, %132
  %.pn81 = phi { ptr, i32 } [ %135, %134 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %211

.loopexit:                                        ; preds = %123, %44, %58
  %.073112 = phi i32 [ %.073118, %58 ], [ %2, %44 ], [ %126, %123 ]
  %137 = phi i64 [ %54, %58 ], [ %46, %44 ], [ %127, %123 ]
  %.not88 = icmp eq i32 %.073112, 0
  br i1 %.not88, label %151, label %138

138:                                              ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #6
  %139 = getelementptr inbounds i8, ptr %1, i64 184
  %140 = call noundef nonnull align 16 dereferenceable(48) ptr @_ZNKSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %139, i64 noundef %137) #6
  invoke void @_ZN17RigidBodyDynamics5Utils12get_dof_nameB5cxx11ERK15SpatialVector_t(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 16 dereferenceable(48) %140)
          to label %141 unwind label %146

141:                                              ; preds = %138
  %142 = invoke 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) %20, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %143 unwind label %148

143:                                              ; preds = %141
  %144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef nonnull @.str.23)
          to label %145 unwind label %148

145:                                              ; preds = %143
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %151

146:                                              ; preds = %138
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %150

148:                                              ; preds = %143, %141
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #6
  br label %150

150:                                              ; preds = %148, %146
  %.pn89 = phi { ptr, i32 } [ %149, %148 ], [ %147, %146 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #6
  br label %211

151:                                              ; preds = %145, %.loopexit
  %152 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.preheader103 unwind label %42

.preheader103:                                    ; preds = %151
  %153 = getelementptr inbounds i8, ptr %1, i64 48
  %154 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %137) #6
  %155 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %154) #6
  %.not136 = icmp eq i64 %155, 0
  br i1 %.not136, label %.preheader102, label %.lr.ph127

.lr.ph127:                                        ; preds = %.preheader103
  %156 = add nsw i32 %3, 1
  br label %160

.preheader102:                                    ; preds = %167, %.preheader103
  %157 = getelementptr inbounds i8, ptr %1, i64 768
  %158 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %157) #6
  %.not137 = icmp eq i64 %158, 0
  br i1 %.not137, label %._crit_edge134, label %.lr.ph133

.lr.ph133:                                        ; preds = %.preheader102
  %.not91128 = icmp slt i32 %3, 0
  %159 = getelementptr inbounds i8, ptr %1, i64 792
  br label %178

160:                                              ; preds = %.lr.ph127, %167
  %161 = phi i64 [ 0, %.lr.ph127 ], [ %169, %167 ]
  %.056126 = phi i32 [ 0, %.lr.ph127 ], [ %168, %167 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #6
  %162 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %137) #6
  %163 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %162, i64 noundef %161) #6
  %164 = load i32, ptr %163, align 4, !tbaa !25
  invoke void @_ZN17RigidBodyDynamics5Utils15print_hierarchyB5cxx11ERKNS_5ModelEji(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef nonnull align 8 dereferenceable(872) %1, i32 noundef %164, i32 noundef %156)
          to label %165 unwind label %173

165:                                              ; preds = %160
  %166 = invoke 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) %20, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %167 unwind label %175

167:                                              ; preds = %165
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  %168 = add i32 %.056126, 1
  %169 = zext i32 %168 to i64
  %170 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIS_IjSaIjEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %153, i64 noundef %137) #6
  %171 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %170) #6
  %172 = icmp ugt i64 %171, %169
  br i1 %172, label %160, label %.preheader102, !llvm.loop !29

173:                                              ; preds = %160
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %177

175:                                              ; preds = %165
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #6
  br label %177

177:                                              ; preds = %175, %173
  %.pn96 = phi { ptr, i32 } [ %176, %175 ], [ %174, %173 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #6
  br label %211

._crit_edge134:                                   ; preds = %203, %.preheader102
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(128) %5)
          to label %208 unwind label %209

178:                                              ; preds = %.lr.ph133, %203
  %179 = phi i64 [ 0, %.lr.ph133 ], [ %205, %203 ]
  %.055132 = phi i32 [ 0, %.lr.ph133 ], [ %204, %203 ]
  %180 = call noundef nonnull align 8 dereferenceable(304) ptr @_ZNKSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %157, i64 noundef %179) #6
  %181 = getelementptr inbounds i8, ptr %180, i64 104
  %182 = load i32, ptr %181, align 8, !tbaa !30
  %183 = icmp eq i32 %182, %.073112
  br i1 %183, label %.preheader, label %203

.preheader:                                       ; preds = %178
  br i1 %.not91128, label %._crit_edge131, label %.lr.ph130

._crit_edge131:                                   ; preds = %187, %.preheader
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #6
  %184 = load i32, ptr %159, align 8, !tbaa !33
  %185 = add i32 %184, %.055132
  invoke void @_ZNK17RigidBodyDynamics5Model11GetBodyNameB5cxx11Ej(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(872) %1, i32 noundef %185)
          to label %191 unwind label %198

.lr.ph130:                                        ; preds = %.preheader, %187
  %.0129 = phi i32 [ %188, %187 ], [ 0, %.preheader ]
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull @.str.14)
          to label %187 unwind label %189

187:                                              ; preds = %.lr.ph130
  %188 = add nuw i32 %.0129, 1
  %exitcond148.not = icmp eq i32 %.0129, %3
  br i1 %exitcond148.not, label %._crit_edge131, label %.lr.ph130, !llvm.loop !108

189:                                              ; preds = %.lr.ph130
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %211

191:                                              ; preds = %._crit_edge131
  %192 = invoke 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) %20, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %193 unwind label %200

193:                                              ; preds = %191
  %194 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull @.str.24)
          to label %195 unwind label %200

195:                                              ; preds = %193
  %196 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %194, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %197 unwind label %200

197:                                              ; preds = %195
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br label %203

198:                                              ; preds = %._crit_edge131
  %199 = landingpad { ptr, i32 }
          cleanup
  br label %202

200:                                              ; preds = %195, %193, %191
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #6
  br label %202

202:                                              ; preds = %200, %198
  %.pn92 = phi { ptr, i32 } [ %201, %200 ], [ %199, %198 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #6
  br label %211

203:                                              ; preds = %178, %197
  %204 = add i32 %.055132, 1
  %205 = zext i32 %204 to i64
  %206 = call noundef i64 @_ZNKSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %157) #6
  %207 = icmp ugt i64 %206, %205
  br i1 %207, label %178, label %._crit_edge134, !llvm.loop !109

208:                                              ; preds = %._crit_edge134
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %5) #6
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %5) #6
  ret void

209:                                              ; preds = %._crit_edge134
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %211

211:                                              ; preds = %177, %209, %202, %189, %110, %116, %150, %136, %86, %42, %41, %30
  %.pn99 = phi { ptr, i32 } [ %31, %30 ], [ %43, %42 ], [ %.pn89, %150 ], [ %.pn83, %86 ], [ %.pn81, %136 ], [ %.pn79, %41 ], [ %.pn85, %116 ], [ %111, %110 ], [ %.pn96, %177 ], [ %210, %209 ], [ %190, %189 ], [ %.pn92, %202 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %5) #6
  br label %212

212:                                              ; preds = %211, %25
  %.pn99.pn = phi { ptr, i32 } [ %.pn99, %211 ], [ %.pn, %25 ]
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %5) #6
  resume { ptr, i32 } %.pn99.pn
}

; Function Attrs: noreturn nounwind
declare void @abort() local_unnamed_addr #5

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

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

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

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

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


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