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

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

%"class.Eigen::aligned_allocator" = type { i8 }
%"class.Eigen::aligned_allocator.17" = type { i8 }
%"class.Eigen::aligned_allocator.24" = type { i8 }
%"class.Eigen::aligned_allocator.31" = type { i8 }
%"class.Eigen::aligned_allocator.53" = type { i8 }
%"class.Eigen::aligned_allocator.69" = type { i8 }
%"class.Eigen::aligned_allocator.76" = type { i8 }
%"class.Eigen::aligned_allocator.83" = type { i8 }
%"struct.RigidBodyDynamics::Body" = type <{ double, %class.Vector3_t, %class.Matrix3_t, i8, [7 x i8] }>
%class.Vector3_t = type { %"class.Eigen::Matrix" }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%class.Matrix3_t = type { %"class.Eigen::Matrix.90" }
%"class.Eigen::Matrix.90" = type { %"class.Eigen::PlainObjectBase.91" }
%"class.Eigen::PlainObjectBase.91" = type { %"class.Eigen::DenseStorage.98" }
%"class.Eigen::DenseStorage.98" = type { %"struct.Eigen::internal::plain_array.99" }
%"struct.Eigen::internal::plain_array.99" = type { [9 x double] }
%"struct.RigidBodyDynamics::Joint" = type { ptr, i32, i32, i32, i32 }
%class.SpatialVector_t = type { %"class.Eigen::Matrix.100" }
%"class.Eigen::Matrix.100" = type { %"class.Eigen::PlainObjectBase.101" }
%"class.Eigen::PlainObjectBase.101" = type { %"class.Eigen::DenseStorage.108" }
%"class.Eigen::DenseStorage.108" = type { %"struct.Eigen::internal::plain_array.109" }
%"struct.Eigen::internal::plain_array.109" = type { [6 x double] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }
%"class.Eigen::Matrix.110" = type { %"class.Eigen::PlainObjectBase.111" }
%"class.Eigen::PlainObjectBase.111" = type { %"class.Eigen::DenseStorage.118" }
%"class.Eigen::DenseStorage.118" = type { %"struct.Eigen::internal::plain_array.119" }
%"struct.Eigen::internal::plain_array.119" = type { [18 x double] }
%"class.Eigen::CwiseNullaryOp" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%"class.Eigen::CwiseNullaryOp.124" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::CwiseNullaryOp.129" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%class.SpatialMatrix_t = type { %"class.Eigen::Matrix.134" }
%"class.Eigen::Matrix.134" = type { %"class.Eigen::PlainObjectBase.135" }
%"class.Eigen::PlainObjectBase.135" = type { %"class.Eigen::DenseStorage.142" }
%"class.Eigen::DenseStorage.142" = type { %"struct.Eigen::internal::plain_array.143" }
%"struct.Eigen::internal::plain_array.143" = type { [36 x double] }
%"class.Eigen::CwiseNullaryOp.144" = type { [3 x i8] }
%"class.Eigen::CwiseNullaryOp.149" = type { %"class.Eigen::internal::variable_if_dynamic", [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia" = type { double, %class.Vector3_t, double, double, double, double, double, double }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.154" = type { i8 }
%"struct.RigidBodyDynamics::Model" = type { %"class.std::vector", %"class.std::vector", %"class.std::vector.1", i32, i32, i32, i32, %class.Vector3_t, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.14", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector", %"class.std::vector.21", %"class.std::vector", %"class.std::vector.28", %"class.std::vector.28", %"class.std::vector.35", %"class.std::vector.40", %"class.std::vector", %"class.std::vector.45", %"class.std::vector.8", %"class.std::vector.50", %"class.std::vector.8", %"class.std::vector.8", %"class.Eigen::Matrix.57", %"class.Eigen::Matrix.57", %"class.std::vector.8", %"class.std::vector.66", %"class.std::vector.66", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.21", %"class.std::vector.21", %"class.std::vector.73", i32, %"class.std::vector.80", %"class.std::map" }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.14" = type { %"class.std::vector.15" }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.28" = type { %"class.std::vector.29" }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = type { %"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = type { %"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.50" = type { %"class.std::vector.51" }
%"class.std::vector.51" = type { %"struct.std::_Vector_base.52" }
%"struct.std::_Vector_base.52" = type { %"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl" }
%"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Eigen::Matrix.57" = type { %"class.Eigen::PlainObjectBase.58" }
%"class.Eigen::PlainObjectBase.58" = type { %"class.Eigen::DenseStorage.65" }
%"class.Eigen::DenseStorage.65" = type { ptr, i64 }
%"class.std::vector.66" = type { %"class.std::vector.67" }
%"class.std::vector.67" = type { %"struct.std::_Vector_base.68" }
%"struct.std::_Vector_base.68" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"class.std::vector.9" }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl" }
%"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.21" = type { %"class.std::vector.22" }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.73" = type { %"class.std::vector.74" }
%"class.std::vector.74" = type { %"struct.std::_Vector_base.75" }
%"struct.std::_Vector_base.75" = type { %"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.80" = type { %"class.std::vector.81" }
%"class.std::vector.81" = type { %"struct.std::_Vector_base.82" }
%"struct.std::_Vector_base.82" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics5ModelC2Ev(ptr noundef nonnull align 8 dereferenceable(872) %0) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  %5 = alloca %"class.Eigen::aligned_allocator", align 1
  %6 = alloca %"class.Eigen::aligned_allocator", align 1
  %7 = alloca %"class.Eigen::aligned_allocator.17", align 1
  %8 = alloca %"class.Eigen::aligned_allocator", align 1
  %9 = alloca %"class.Eigen::aligned_allocator", align 1
  %10 = alloca %"class.Eigen::aligned_allocator", align 1
  %11 = alloca %"class.Eigen::aligned_allocator.24", align 1
  %12 = alloca %"class.Eigen::aligned_allocator.31", align 1
  %13 = alloca %"class.Eigen::aligned_allocator.31", align 1
  %14 = alloca %"class.Eigen::aligned_allocator", align 1
  %15 = alloca %"class.Eigen::aligned_allocator.53", align 1
  %16 = alloca %"class.Eigen::aligned_allocator", align 1
  %17 = alloca %"class.Eigen::aligned_allocator", align 1
  %18 = alloca %"class.Eigen::aligned_allocator", align 1
  %19 = alloca %"class.Eigen::aligned_allocator.69", align 1
  %20 = alloca %"class.Eigen::aligned_allocator.69", align 1
  %21 = alloca %"class.Eigen::aligned_allocator", align 1
  %22 = alloca %"class.Eigen::aligned_allocator", align 1
  %23 = alloca %"class.Eigen::aligned_allocator.24", align 1
  %24 = alloca %"class.Eigen::aligned_allocator.24", align 1
  %25 = alloca %"class.Eigen::aligned_allocator.76", align 1
  %26 = alloca %"class.Eigen::aligned_allocator.83", align 1
  %27 = alloca %"struct.RigidBodyDynamics::Body", align 8
  %28 = alloca %"struct.RigidBodyDynamics::Joint", align 8
  %29 = alloca %class.Vector3_t, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca %class.SpatialVector_t, align 16
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca %"class.std::vector", align 8
  %43 = alloca %class.Vector3_t, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %48 = alloca %"class.Eigen::Matrix.110", align 16
  %49 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %50 = alloca %"class.Eigen::Matrix.110", align 16
  %51 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %52 = alloca %class.Matrix3_t, align 8
  %53 = alloca %"class.Eigen::CwiseNullaryOp.124", align 8
  %54 = alloca %class.Vector3_t, align 8
  %55 = alloca %"class.Eigen::CwiseNullaryOp.129", align 8
  %56 = alloca i32, align 4
  %57 = alloca %class.SpatialMatrix_t, align 16
  %58 = alloca %"class.Eigen::CwiseNullaryOp.144", align 1
  %59 = alloca %"class.Eigen::CwiseNullaryOp.149", align 8
  %60 = alloca %"class.Eigen::CwiseNullaryOp.149", align 8
  %61 = alloca %"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia", align 8
  %62 = alloca %class.Vector3_t, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca %class.Matrix3_t, align 8
  %67 = alloca %"class.Eigen::CwiseNullaryOp.124", align 8
  %68 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %69 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %70 = alloca %"class.std::__cxx11::basic_string", align 8
  %71 = alloca %"class.std::allocator.154", align 1
  store ptr %0, ptr %2, align 8, !tbaa !5
  %72 = load ptr, ptr %2, align 8
  %73 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 0
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #6
  %74 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 1
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #6
  %75 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 2
  call void @_ZNSt6vectorIS_IjSaIjEESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #6
  %76 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 7
  invoke void @_ZN9Vector3_tC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76)
          to label %77 unwind label %252

77:                                               ; preds = %1
  %78 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %79 unwind label %256

79:                                               ; preds = %77
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr noundef nonnull align 1 dereferenceable(1) %5)
          to label %80 unwind label %260

80:                                               ; preds = %79
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #6
  %81 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 9
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %82 unwind label %265

82:                                               ; preds = %80
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %83 unwind label %269

83:                                               ; preds = %82
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #6
  %84 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 10
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #6
  invoke void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics5JointEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %85 unwind label %274

85:                                               ; preds = %83
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics5JointESaIS1_EEC2ERKN5Eigen17aligned_allocatorIS1_EE(ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %86 unwind label %278

86:                                               ; preds = %85
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics5JointEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #6
  %87 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 11
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %88 unwind label %283

88:                                               ; preds = %86
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %87, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %89 unwind label %287

89:                                               ; preds = %88
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  %90 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 12
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %91 unwind label %292

91:                                               ; preds = %89
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %92 unwind label %296

92:                                               ; preds = %91
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #6
  %93 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 13
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %94 unwind label %301

94:                                               ; preds = %92
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %93, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %95 unwind label %305

95:                                               ; preds = %94
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #6
  %96 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 14
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #6
  %97 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 15
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #6
  invoke void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %98 unwind label %310

98:                                               ; preds = %95
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EEC2ERKN5Eigen17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %97, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %99 unwind label %314

99:                                               ; preds = %98
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #6
  %100 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 16
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #6
  %101 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 17
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #6
  invoke void @_ZN5Eigen17aligned_allocatorINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %102 unwind label %319

102:                                              ; preds = %99
  invoke void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEESaIS2_EEC2ERKNS0_17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %103 unwind label %323

103:                                              ; preds = %102
  call void @_ZNSt15__new_allocatorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  %104 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 18
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #6
  invoke void @_ZN5Eigen17aligned_allocatorINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %105 unwind label %328

105:                                              ; preds = %103
  invoke void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEESaIS2_EEC2ERKNS0_17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %104, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %106 unwind label %332

106:                                              ; preds = %105
  call void @_ZNSt15__new_allocatorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  %107 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 19
  call void @_ZNSt6vectorI9Matrix3_tSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #6
  %108 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 20
  call void @_ZNSt6vectorI9Vector3_tSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %108) #6
  %109 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 21
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #6
  %110 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 22
  call void @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %110) #6
  %111 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 23
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %112 unwind label %337

112:                                              ; preds = %106
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %111, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %113 unwind label %341

113:                                              ; preds = %112
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  %114 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 24
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialMatrix_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %115 unwind label %346

115:                                              ; preds = %113
  invoke void @_ZNSt6vectorI15SpatialMatrix_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %114, ptr noundef nonnull align 1 dereferenceable(1) %15)
          to label %116 unwind label %350

116:                                              ; preds = %115
  call void @_ZNSt15__new_allocatorI15SpatialMatrix_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  %117 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 25
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %118 unwind label %355

118:                                              ; preds = %116
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %117, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %119 unwind label %359

119:                                              ; preds = %118
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  %120 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 26
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %121 unwind label %364

121:                                              ; preds = %119
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %120, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %122 unwind label %368

122:                                              ; preds = %121
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  %123 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 27
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123)
          to label %124 unwind label %373

124:                                              ; preds = %122
  %125 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 28
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125)
          to label %126 unwind label %377

126:                                              ; preds = %124
  %127 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 29
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %128 unwind label %381

128:                                              ; preds = %126
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %127, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %129 unwind label %385

129:                                              ; preds = %128
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  %130 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 30
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  invoke void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %131 unwind label %390

131:                                              ; preds = %129
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaESaIS2_EEC2ERKN5Eigen17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %130, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %132 unwind label %394

132:                                              ; preds = %131
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  %133 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 31
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #6
  invoke void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %134 unwind label %399

134:                                              ; preds = %132
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaESaIS2_EEC2ERKN5Eigen17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %135 unwind label %403

135:                                              ; preds = %134
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  %136 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 32
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %137 unwind label %408

137:                                              ; preds = %135
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %136, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %138 unwind label %412

138:                                              ; preds = %137
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  %139 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 33
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  invoke void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %140 unwind label %417

140:                                              ; preds = %138
  invoke void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %139, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %141 unwind label %421

141:                                              ; preds = %140
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  %142 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 34
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #6
  invoke void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %143 unwind label %426

143:                                              ; preds = %141
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EEC2ERKN5Eigen17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %142, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %144 unwind label %430

144:                                              ; preds = %143
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  %145 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 35
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  invoke void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %146 unwind label %435

146:                                              ; preds = %144
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EEC2ERKN5Eigen17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %145, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %147 unwind label %439

147:                                              ; preds = %146
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  %148 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 36
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #6
  invoke void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics9FixedBodyEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %149 unwind label %444

149:                                              ; preds = %147
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics9FixedBodyESaIS1_EEC2ERKN5Eigen17aligned_allocatorIS1_EE(ptr noundef nonnull align 8 dereferenceable(24) %148, ptr noundef nonnull align 1 dereferenceable(1) %25)
          to label %150 unwind label %448

150:                                              ; preds = %149
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics9FixedBodyEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  %151 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 38
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #6
  invoke void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4BodyEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %152 unwind label %453

152:                                              ; preds = %150
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4BodyESaIS1_EEC2ERKN5Eigen17aligned_allocatorIS1_EE(ptr noundef nonnull align 8 dereferenceable(24) %151, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %153 unwind label %457

153:                                              ; preds = %152
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4BodyEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  %154 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 39
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %154) #6
  call void @llvm.lifetime.start.p0(i64 112, ptr %27) #6
  invoke void @_ZN17RigidBodyDynamics4BodyC2Ev(ptr noundef nonnull align 8 dereferenceable(105) %27)
          to label %155 unwind label %462

155:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #6
  invoke void @_ZN17RigidBodyDynamics5JointC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %156 unwind label %466

156:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  store double 0.000000e+00, ptr %30, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  store double 0.000000e+00, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  invoke void @_ZN9Vector3_tC2ERKdS1_S1_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %157 unwind label %470

157:                                              ; preds = %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  store double 0.000000e+00, ptr %34, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  store double 0.000000e+00, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  store double 0.000000e+00, ptr %36, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  store double 0.000000e+00, ptr %37, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  store double 0.000000e+00, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #6
  store double 0.000000e+00, ptr %39, align 8, !tbaa !9
  invoke void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %33, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %158 unwind label %474

158:                                              ; preds = %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  %159 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  store i32 0, ptr %40, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %159, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %160 unwind label %478

160:                                              ; preds = %158
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  %161 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  store i32 0, ptr %41, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %161, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %162 unwind label %482

162:                                              ; preds = %160
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  %163 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 24, ptr %42) #6
  call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #6
  invoke void @_ZNSt6vectorIS_IjSaIjEESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %163, ptr noundef nonnull align 8 dereferenceable(24) %42)
          to label %164 unwind label %486

164:                                              ; preds = %162
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #6
  %165 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 3
  store i32 0, ptr %165, align 8, !tbaa !13
  %166 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 4
  store i32 0, ptr %166, align 4, !tbaa !92
  %167 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 5
  store i32 0, ptr %167, align 8, !tbaa !93
  %168 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 6
  store i32 0, ptr %168, align 4, !tbaa !94
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #6
  store double 0.000000e+00, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  store double -9.810000e+00, ptr %45, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  store double 0.000000e+00, ptr %46, align 8, !tbaa !9
  invoke void @_ZN9Vector3_tC2ERKdS1_S1_(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46)
          to label %169 unwind label %490

169:                                              ; preds = %164
  %170 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 7
  %171 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN9Vector3_taSEOS_(ptr noundef nonnull align 8 dereferenceable(24) %170, ptr noundef nonnull align 8 dereferenceable(24) %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #6
  %172 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 8
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %172, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %173 unwind label %494

173:                                              ; preds = %169
  %174 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 9
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %174, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %175 unwind label %494

175:                                              ; preds = %173
  %176 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 10
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %176, ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %177 unwind label %494

177:                                              ; preds = %175
  %178 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 11
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %178, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %179 unwind label %494

179:                                              ; preds = %177
  %180 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 15
  call void @llvm.lifetime.start.p0(i64 96, ptr %47) #6
  invoke void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %47)
          to label %181 unwind label %498

181:                                              ; preds = %179
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %180, ptr noundef nonnull align 8 dereferenceable(96) %47)
          to label %182 unwind label %498

182:                                              ; preds = %181
  call void @llvm.lifetime.end.p0(i64 96, ptr %47) #6
  %183 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 12
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %183, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %184 unwind label %494

184:                                              ; preds = %182
  %185 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 13
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %185, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %186 unwind label %494

186:                                              ; preds = %184
  %187 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 17
  call void @llvm.lifetime.start.p0(i64 144, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %49)
          to label %188 unwind label %502

188:                                              ; preds = %186
  invoke void @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %48, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %189 unwind label %502

189:                                              ; preds = %188
  invoke void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %187, ptr noundef nonnull align 16 dereferenceable(144) %48)
          to label %190 unwind label %502

190:                                              ; preds = %189
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %48) #6
  %191 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 18
  call void @llvm.lifetime.start.p0(i64 144, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %51) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %51)
          to label %192 unwind label %506

192:                                              ; preds = %190
  invoke void @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %50, ptr noundef nonnull align 1 dereferenceable(1) %51)
          to label %193 unwind label %506

193:                                              ; preds = %192
  invoke void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %191, ptr noundef nonnull align 16 dereferenceable(144) %50)
          to label %194 unwind label %506

194:                                              ; preds = %193
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %50) #6
  %195 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 19
  call void @llvm.lifetime.start.p0(i64 72, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.124") align 8 %53)
          to label %196 unwind label %510

196:                                              ; preds = %194
  invoke void @_ZN9Matrix3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %52, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %197 unwind label %510

197:                                              ; preds = %196
  invoke void @_ZNSt6vectorI9Matrix3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %195, ptr noundef nonnull align 8 dereferenceable(72) %52)
          to label %198 unwind label %510

198:                                              ; preds = %197
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr %52) #6
  %199 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 20
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.129") align 8 %55)
          to label %200 unwind label %514

200:                                              ; preds = %198
  invoke void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %201 unwind label %514

201:                                              ; preds = %200
  invoke void @_ZNSt6vectorI9Vector3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 8 dereferenceable(24) %54)
          to label %202 unwind label %514

202:                                              ; preds = %201
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #6
  %203 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 21
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #6
  store i32 0, ptr %56, align 4, !tbaa !11
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %203, ptr noundef nonnull align 4 dereferenceable(4) %56)
          to label %204 unwind label %518

204:                                              ; preds = %202
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  %205 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 23
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %205, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %206 unwind label %494

206:                                              ; preds = %204
  %207 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 24
  call void @llvm.lifetime.start.p0(i64 288, ptr %57) #6
  call void @llvm.lifetime.start.p0(i64 3, ptr %58) #6
  invoke void @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEE8IdentityEv(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.144") align 1 %58)
          to label %208 unwind label %522

208:                                              ; preds = %206
  invoke void @_ZN15SpatialMatrix_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_identity_opIdEENS1_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(288) %57, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %209 unwind label %522

209:                                              ; preds = %208
  invoke void @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %207, ptr noundef nonnull align 16 dereferenceable(288) %57)
          to label %210 unwind label %522

210:                                              ; preds = %209
  call void @llvm.lifetime.end.p0(i64 3, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr %57) #6
  %211 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 25
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %211, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %212 unwind label %494

212:                                              ; preds = %210
  %213 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 26
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %213, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %214 unwind label %494

214:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 24, ptr %59) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.149") align 8 %59, i64 noundef 1)
          to label %215 unwind label %526

215:                                              ; preds = %214
  %216 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 28
  %217 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %216, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %218 unwind label %526

218:                                              ; preds = %215
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %60) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.149") align 8 %60, i64 noundef 1)
          to label %219 unwind label %530

219:                                              ; preds = %218
  %220 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 27
  %221 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %220, ptr noundef nonnull align 1 dereferenceable(1) %60)
          to label %222 unwind label %530

222:                                              ; preds = %219
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #6
  %223 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 29
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %223, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %224 unwind label %494

224:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 80, ptr %61) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #6
  store double 0.000000e+00, ptr %63, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #6
  store double 0.000000e+00, ptr %64, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #6
  store double 0.000000e+00, ptr %65, align 8, !tbaa !9
  invoke void @_ZN9Vector3_tC2ERKdS1_S1_(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65)
          to label %225 unwind label %534

225:                                              ; preds = %224
  call void @llvm.lifetime.start.p0(i64 72, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE4ZeroEll(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.124") align 8 %67, i64 noundef 3, i64 noundef 3)
          to label %226 unwind label %538

226:                                              ; preds = %225
  invoke void @_ZN9Matrix3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %66, ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %227 unwind label %538

227:                                              ; preds = %226
  invoke void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaC2EdRK9Vector3_tRK9Matrix3_t(ptr noundef nonnull align 8 dereferenceable(80) %61, double noundef 0.000000e+00, ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull align 8 dereferenceable(72) %66)
          to label %228 unwind label %538

228:                                              ; preds = %227
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %62) #6
  %229 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 31
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %229, ptr noundef nonnull align 8 dereferenceable(80) %61)
          to label %230 unwind label %543

230:                                              ; preds = %228
  %231 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 30
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %231, ptr noundef nonnull align 8 dereferenceable(80) %61)
          to label %232 unwind label %543

232:                                              ; preds = %230
  %233 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 32
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %233, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %234 unwind label %543

234:                                              ; preds = %232
  %235 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 33
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %235, ptr noundef nonnull align 16 dereferenceable(48) %33)
          to label %236 unwind label %543

236:                                              ; preds = %234
  %237 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 34
  call void @llvm.lifetime.start.p0(i64 96, ptr %68) #6
  invoke void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %68)
          to label %238 unwind label %547

238:                                              ; preds = %236
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %237, ptr noundef nonnull align 8 dereferenceable(96) %68)
          to label %239 unwind label %547

239:                                              ; preds = %238
  call void @llvm.lifetime.end.p0(i64 96, ptr %68) #6
  %240 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 35
  call void @llvm.lifetime.start.p0(i64 96, ptr %69) #6
  invoke void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %69)
          to label %241 unwind label %551

241:                                              ; preds = %239
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %240, ptr noundef nonnull align 8 dereferenceable(96) %69)
          to label %242 unwind label %551

242:                                              ; preds = %241
  call void @llvm.lifetime.end.p0(i64 96, ptr %69) #6
  %243 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 38
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %243, ptr noundef nonnull align 8 dereferenceable(105) %27)
          to label %244 unwind label %543

244:                                              ; preds = %242
  %245 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 39
  call void @llvm.lifetime.start.p0(i64 32, ptr %70) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef @.str, ptr noundef nonnull align 1 dereferenceable(1) %71)
          to label %246 unwind label %555

246:                                              ; preds = %244
  %247 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %245, ptr noundef nonnull align 8 dereferenceable(32) %70)
          to label %248 unwind label %559

248:                                              ; preds = %246
  store i32 0, ptr %247, align 4, !tbaa !11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #6
  %249 = call noundef i32 @_ZNSt14numeric_limitsIjE3maxEv() #6
  %250 = udiv i32 %249, 2
  %251 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %72, i32 0, i32 37
  store i32 %250, ptr %251, align 8, !tbaa !95
  call void @llvm.lifetime.end.p0(i64 80, ptr %61) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #6
  call void @_ZN17RigidBodyDynamics5JointD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #6
  call void @_ZN17RigidBodyDynamics4BodyD2Ev(ptr noundef nonnull align 8 dereferenceable(105) %27) #6
  call void @llvm.lifetime.end.p0(i64 112, ptr %27) #6
  ret void

252:                                              ; preds = %1
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %3, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %4, align 4
  br label %592

256:                                              ; preds = %77
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %3, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %4, align 4
  br label %264

260:                                              ; preds = %79
  %261 = landingpad { ptr, i32 }
          cleanup
  %262 = extractvalue { ptr, i32 } %261, 0
  store ptr %262, ptr %3, align 8
  %263 = extractvalue { ptr, i32 } %261, 1
  store i32 %263, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  br label %264

264:                                              ; preds = %260, %256
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #6
  br label %592

265:                                              ; preds = %80
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %3, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %4, align 4
  br label %273

269:                                              ; preds = %82
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %3, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  br label %273

273:                                              ; preds = %269, %265
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #6
  br label %591

274:                                              ; preds = %83
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %3, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %4, align 4
  br label %282

278:                                              ; preds = %85
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %3, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics5JointEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  br label %282

282:                                              ; preds = %278, %274
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #6
  br label %590

283:                                              ; preds = %86
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %3, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %4, align 4
  br label %291

287:                                              ; preds = %88
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %3, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  br label %291

291:                                              ; preds = %287, %283
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  br label %589

292:                                              ; preds = %89
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %3, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %4, align 4
  br label %300

296:                                              ; preds = %91
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %3, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  br label %300

300:                                              ; preds = %296, %292
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #6
  br label %588

301:                                              ; preds = %92
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %3, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %4, align 4
  br label %309

305:                                              ; preds = %94
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %3, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  br label %309

309:                                              ; preds = %305, %301
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #6
  br label %587

310:                                              ; preds = %95
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %3, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %4, align 4
  br label %318

314:                                              ; preds = %98
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %3, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  br label %318

318:                                              ; preds = %314, %310
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #6
  br label %586

319:                                              ; preds = %99
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %3, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %4, align 4
  br label %327

323:                                              ; preds = %102
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %3, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  br label %327

327:                                              ; preds = %323, %319
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #6
  br label %585

328:                                              ; preds = %103
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %3, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %4, align 4
  br label %336

332:                                              ; preds = %105
  %333 = landingpad { ptr, i32 }
          cleanup
  %334 = extractvalue { ptr, i32 } %333, 0
  store ptr %334, ptr %3, align 8
  %335 = extractvalue { ptr, i32 } %333, 1
  store i32 %335, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  br label %336

336:                                              ; preds = %332, %328
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #6
  br label %584

337:                                              ; preds = %106
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %3, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %4, align 4
  br label %345

341:                                              ; preds = %112
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %3, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  br label %345

345:                                              ; preds = %341, %337
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #6
  br label %583

346:                                              ; preds = %113
  %347 = landingpad { ptr, i32 }
          cleanup
  %348 = extractvalue { ptr, i32 } %347, 0
  store ptr %348, ptr %3, align 8
  %349 = extractvalue { ptr, i32 } %347, 1
  store i32 %349, ptr %4, align 4
  br label %354

350:                                              ; preds = %115
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %3, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialMatrix_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  br label %354

354:                                              ; preds = %350, %346
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  br label %582

355:                                              ; preds = %116
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %3, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %4, align 4
  br label %363

359:                                              ; preds = %118
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %3, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  br label %363

363:                                              ; preds = %359, %355
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  br label %581

364:                                              ; preds = %119
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %3, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %4, align 4
  br label %372

368:                                              ; preds = %121
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %3, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  br label %372

372:                                              ; preds = %368, %364
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  br label %580

373:                                              ; preds = %122
  %374 = landingpad { ptr, i32 }
          cleanup
  %375 = extractvalue { ptr, i32 } %374, 0
  store ptr %375, ptr %3, align 8
  %376 = extractvalue { ptr, i32 } %374, 1
  store i32 %376, ptr %4, align 4
  br label %579

377:                                              ; preds = %124
  %378 = landingpad { ptr, i32 }
          cleanup
  %379 = extractvalue { ptr, i32 } %378, 0
  store ptr %379, ptr %3, align 8
  %380 = extractvalue { ptr, i32 } %378, 1
  store i32 %380, ptr %4, align 4
  br label %578

381:                                              ; preds = %126
  %382 = landingpad { ptr, i32 }
          cleanup
  %383 = extractvalue { ptr, i32 } %382, 0
  store ptr %383, ptr %3, align 8
  %384 = extractvalue { ptr, i32 } %382, 1
  store i32 %384, ptr %4, align 4
  br label %389

385:                                              ; preds = %128
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %3, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  br label %389

389:                                              ; preds = %385, %381
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  br label %577

390:                                              ; preds = %129
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %3, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %4, align 4
  br label %398

394:                                              ; preds = %131
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %3, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  br label %398

398:                                              ; preds = %394, %390
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  br label %576

399:                                              ; preds = %132
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %3, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %4, align 4
  br label %407

403:                                              ; preds = %134
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %3, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  br label %407

407:                                              ; preds = %403, %399
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  br label %575

408:                                              ; preds = %135
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %3, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %4, align 4
  br label %416

412:                                              ; preds = %137
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %3, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  br label %416

416:                                              ; preds = %412, %408
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  br label %574

417:                                              ; preds = %138
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %3, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %4, align 4
  br label %425

421:                                              ; preds = %140
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %3, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %4, align 4
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  br label %425

425:                                              ; preds = %421, %417
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  br label %573

426:                                              ; preds = %141
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %3, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %4, align 4
  br label %434

430:                                              ; preds = %143
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %3, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  br label %434

434:                                              ; preds = %430, %426
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  br label %572

435:                                              ; preds = %144
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %3, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %4, align 4
  br label %443

439:                                              ; preds = %146
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %3, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #6
  br label %443

443:                                              ; preds = %439, %435
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  br label %571

444:                                              ; preds = %147
  %445 = landingpad { ptr, i32 }
          cleanup
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %3, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %4, align 4
  br label %452

448:                                              ; preds = %149
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %3, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics9FixedBodyEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #6
  br label %452

452:                                              ; preds = %448, %444
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  br label %570

453:                                              ; preds = %150
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %3, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %4, align 4
  br label %461

457:                                              ; preds = %152
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %3, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %4, align 4
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4BodyEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #6
  br label %461

461:                                              ; preds = %457, %453
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #6
  br label %569

462:                                              ; preds = %153
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %3, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %4, align 4
  br label %568

466:                                              ; preds = %155
  %467 = landingpad { ptr, i32 }
          cleanup
  %468 = extractvalue { ptr, i32 } %467, 0
  store ptr %468, ptr %3, align 8
  %469 = extractvalue { ptr, i32 } %467, 1
  store i32 %469, ptr %4, align 4
  br label %567

470:                                              ; preds = %156
  %471 = landingpad { ptr, i32 }
          cleanup
  %472 = extractvalue { ptr, i32 } %471, 0
  store ptr %472, ptr %3, align 8
  %473 = extractvalue { ptr, i32 } %471, 1
  store i32 %473, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  br label %566

474:                                              ; preds = %157
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %3, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  br label %565

478:                                              ; preds = %158
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %3, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  br label %565

482:                                              ; preds = %160
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %3, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %565

486:                                              ; preds = %162
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %3, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %4, align 4
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #6
  br label %565

490:                                              ; preds = %164
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %3, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #6
  br label %565

494:                                              ; preds = %222, %212, %210, %204, %184, %182, %177, %175, %173, %169
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %3, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %4, align 4
  br label %565

498:                                              ; preds = %181, %179
  %499 = landingpad { ptr, i32 }
          cleanup
  %500 = extractvalue { ptr, i32 } %499, 0
  store ptr %500, ptr %3, align 8
  %501 = extractvalue { ptr, i32 } %499, 1
  store i32 %501, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 96, ptr %47) #6
  br label %565

502:                                              ; preds = %189, %188, %186
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %3, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %48) #6
  br label %565

506:                                              ; preds = %193, %192, %190
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %3, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr %50) #6
  br label %565

510:                                              ; preds = %197, %196, %194
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %3, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr %52) #6
  br label %565

514:                                              ; preds = %201, %200, %198
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %3, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #6
  br label %565

518:                                              ; preds = %202
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %3, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #6
  br label %565

522:                                              ; preds = %209, %208, %206
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %3, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 3, ptr %58) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr %57) #6
  br label %565

526:                                              ; preds = %215, %214
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %3, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #6
  br label %565

530:                                              ; preds = %219, %218
  %531 = landingpad { ptr, i32 }
          cleanup
  %532 = extractvalue { ptr, i32 } %531, 0
  store ptr %532, ptr %3, align 8
  %533 = extractvalue { ptr, i32 } %531, 1
  store i32 %533, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #6
  br label %565

534:                                              ; preds = %224
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %3, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %4, align 4
  br label %542

538:                                              ; preds = %227, %226, %225
  %539 = landingpad { ptr, i32 }
          cleanup
  %540 = extractvalue { ptr, i32 } %539, 0
  store ptr %540, ptr %3, align 8
  %541 = extractvalue { ptr, i32 } %539, 1
  store i32 %541, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr %66) #6
  br label %542

542:                                              ; preds = %538, %534
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %62) #6
  br label %564

543:                                              ; preds = %242, %234, %232, %230, %228
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %3, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %4, align 4
  br label %564

547:                                              ; preds = %238, %236
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %3, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 96, ptr %68) #6
  br label %564

551:                                              ; preds = %241, %239
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %3, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %4, align 4
  call void @llvm.lifetime.end.p0(i64 96, ptr %69) #6
  br label %564

555:                                              ; preds = %244
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %3, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %4, align 4
  br label %563

559:                                              ; preds = %246
  %560 = landingpad { ptr, i32 }
          cleanup
  %561 = extractvalue { ptr, i32 } %560, 0
  store ptr %561, ptr %3, align 8
  %562 = extractvalue { ptr, i32 } %560, 1
  store i32 %562, ptr %4, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #6
  br label %563

563:                                              ; preds = %559, %555
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %71) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %70) #6
  br label %564

564:                                              ; preds = %563, %551, %547, %543, %542
  call void @llvm.lifetime.end.p0(i64 80, ptr %61) #6
  br label %565

565:                                              ; preds = %564, %530, %526, %522, %518, %514, %510, %506, %502, %498, %494, %490, %486, %482, %478, %474
  call void @llvm.lifetime.end.p0(i64 48, ptr %33) #6
  br label %566

566:                                              ; preds = %565, %470
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #6
  call void @_ZN17RigidBodyDynamics5JointD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #6
  br label %567

567:                                              ; preds = %566, %466
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #6
  call void @_ZN17RigidBodyDynamics4BodyD2Ev(ptr noundef nonnull align 8 dereferenceable(105) %27) #6
  br label %568

568:                                              ; preds = %567, %462
  call void @llvm.lifetime.end.p0(i64 112, ptr %27) #6
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %154) #6
  call void @_ZNSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %151) #6
  br label %569

569:                                              ; preds = %568, %461
  call void @_ZNSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %148) #6
  br label %570

570:                                              ; preds = %569, %452
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %145) #6
  br label %571

571:                                              ; preds = %570, %443
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %142) #6
  br label %572

572:                                              ; preds = %571, %434
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %139) #6
  br label %573

573:                                              ; preds = %572, %425
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %136) #6
  br label %574

574:                                              ; preds = %573, %416
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #6
  br label %575

575:                                              ; preds = %574, %407
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %130) #6
  br label %576

576:                                              ; preds = %575, %398
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %127) #6
  br label %577

577:                                              ; preds = %576, %389
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %125) #6
  br label %578

578:                                              ; preds = %577, %377
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #6
  br label %579

579:                                              ; preds = %578, %373
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %120) #6
  br label %580

580:                                              ; preds = %579, %372
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #6
  br label %581

581:                                              ; preds = %580, %363
  call void @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #6
  br label %582

582:                                              ; preds = %581, %354
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #6
  br label %583

583:                                              ; preds = %582, %345
  call void @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %110) #6
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #6
  call void @_ZNSt6vectorI9Vector3_tSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %108) #6
  call void @_ZNSt6vectorI9Matrix3_tSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #6
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #6
  br label %584

584:                                              ; preds = %583, %336
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #6
  br label %585

585:                                              ; preds = %584, %327
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #6
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #6
  br label %586

586:                                              ; preds = %585, %318
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %93) #6
  br label %587

587:                                              ; preds = %586, %309
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #6
  br label %588

588:                                              ; preds = %587, %300
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #6
  br label %589

589:                                              ; preds = %588, %291
  call void @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #6
  br label %590

590:                                              ; preds = %589, %282
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #6
  br label %591

591:                                              ; preds = %590, %273
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #6
  br label %592

592:                                              ; preds = %591, %264, %252
  call void @_ZNSt6vectorIS_IjSaIjEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #6
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #6
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #6
  br label %593

593:                                              ; preds = %592
  %594 = load ptr, ptr %3, align 8
  %595 = load i32, ptr %4, align 4
  %596 = insertvalue { ptr, i32 } poison, ptr %594, 0
  %597 = insertvalue { ptr, i32 } %596, i32 %595, 1
  resume { ptr, i32 } %597
}

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaC2EdRK9Vector3_tRK9Matrix3_t(ptr noundef nonnull align 8 dereferenceable(80), double noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt14numeric_limitsIjE3maxEv() #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 72}
!14 = !{!"_ZTSN17RigidBodyDynamics5ModelE", !15, i64 0, !15, i64 24, !19, i64 48, !12, i64 72, !12, i64 76, !12, i64 80, !12, i64 84, !23, i64 88, !28, i64 112, !28, i64 136, !33, i64 160, !28, i64 184, !28, i64 208, !28, i64 232, !15, i64 256, !38, i64 280, !15, i64 304, !43, i64 328, !43, i64 352, !48, i64 376, !52, i64 400, !15, i64 424, !56, i64 448, !28, i64 472, !60, i64 496, !28, i64 520, !28, i64 544, !65, i64 568, !65, i64 584, !28, i64 600, !69, i64 624, !69, i64 648, !28, i64 672, !28, i64 696, !38, i64 720, !38, i64 744, !74, i64 768, !12, i64 792, !79, i64 800, !84, i64 824}
!15 = !{!"_ZTSSt6vectorIjSaIjEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorIS_IjSaIjEESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTS9Vector3_t", !24, i64 0}
!24 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !25, i64 0}
!25 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !26, i64 0}
!26 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !27, i64 0}
!27 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !7, i64 0}
!28 = !{!"_ZTSSt6vectorI15SpatialVector_tSaIS0_EE", !29, i64 0}
!29 = !{!"_ZTSSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics5JointESaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EE", !39, i64 0}
!39 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEESaIS2_EE", !44, i64 0}
!44 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!48 = !{!"_ZTSSt6vectorI9Matrix3_tSaIS0_EE", !49, i64 0}
!49 = !{!"_ZTSSt12_Vector_baseI9Matrix3_tSaIS0_EE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseI9Matrix3_tSaIS0_EE12_Vector_implE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseI9Matrix3_tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!52 = !{!"_ZTSSt6vectorI9Vector3_tSaIS0_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseI9Vector3_tSaIS0_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!56 = !{!"_ZTSSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"_ZTSSt6vectorI15SpatialMatrix_tSaIS0_EE", !61, i64 0}
!61 = !{!"_ZTSSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !66, i64 0}
!66 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !67, i64 0}
!67 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !6, i64 0, !68, i64 8}
!68 = !{!"long", !7, i64 0}
!69 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaESaIS2_EE", !70, i64 0}
!70 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE", !71, i64 0}
!71 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!74 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics9FixedBodyESaIS1_EE", !75, i64 0}
!75 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!79 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4BodyESaIS1_EE", !80, i64 0}
!80 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE", !81, i64 0}
!81 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!84 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !85, i64 0}
!85 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !86, i64 0}
!86 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !87, i64 0, !89, i64 8}
!87 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !88, i64 0}
!88 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!89 = !{!"_ZTSSt15_Rb_tree_header", !90, i64 0, !68, i64 32}
!90 = !{!"_ZTSSt18_Rb_tree_node_base", !91, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!91 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!92 = !{!14, !12, i64 76}
!93 = !{!14, !12, i64 80}
!94 = !{!14, !12, i64 84}
!95 = !{!14, !12, i64 792}


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

%"class.Eigen::aligned_allocator" = type { i8 }
%"class.Eigen::aligned_allocator.17" = type { i8 }
%"class.Eigen::aligned_allocator.24" = type { i8 }
%"class.Eigen::aligned_allocator.31" = type { i8 }
%"class.Eigen::aligned_allocator.53" = type { i8 }
%"class.Eigen::aligned_allocator.69" = type { i8 }
%"class.Eigen::aligned_allocator.76" = type { i8 }
%"class.Eigen::aligned_allocator.83" = type { i8 }
%"struct.RigidBodyDynamics::Body" = type <{ double, %class.Vector3_t, %class.Matrix3_t, i8, [7 x i8] }>
%class.Vector3_t = type { %"class.Eigen::Matrix" }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%class.Matrix3_t = type { %"class.Eigen::Matrix.90" }
%"class.Eigen::Matrix.90" = type { %"class.Eigen::PlainObjectBase.91" }
%"class.Eigen::PlainObjectBase.91" = type { %"class.Eigen::DenseStorage.98" }
%"class.Eigen::DenseStorage.98" = type { %"struct.Eigen::internal::plain_array.99" }
%"struct.Eigen::internal::plain_array.99" = type { [9 x double] }
%"struct.RigidBodyDynamics::Joint" = type { ptr, i32, i32, i32, i32 }
%class.SpatialVector_t = type { %"class.Eigen::Matrix.100" }
%"class.Eigen::Matrix.100" = type { %"class.Eigen::PlainObjectBase.101" }
%"class.Eigen::PlainObjectBase.101" = type { %"class.Eigen::DenseStorage.108" }
%"class.Eigen::DenseStorage.108" = type { %"struct.Eigen::internal::plain_array.109" }
%"struct.Eigen::internal::plain_array.109" = type { [6 x double] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.RigidBodyDynamics::Math::SpatialTransform" = type { %class.Matrix3_t, %class.Vector3_t }
%"class.Eigen::Matrix.110" = type { %"class.Eigen::PlainObjectBase.111" }
%"class.Eigen::PlainObjectBase.111" = type { %"class.Eigen::DenseStorage.118" }
%"class.Eigen::DenseStorage.118" = type { %"struct.Eigen::internal::plain_array.119" }
%"struct.Eigen::internal::plain_array.119" = type { [18 x double] }
%"class.Eigen::CwiseNullaryOp" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%"class.Eigen::CwiseNullaryOp.124" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::CwiseNullaryOp.129" = type { [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%class.SpatialMatrix_t = type { %"class.Eigen::Matrix.134" }
%"class.Eigen::Matrix.134" = type { %"class.Eigen::PlainObjectBase.135" }
%"class.Eigen::PlainObjectBase.135" = type { %"class.Eigen::DenseStorage.142" }
%"class.Eigen::DenseStorage.142" = type { %"struct.Eigen::internal::plain_array.143" }
%"struct.Eigen::internal::plain_array.143" = type { [36 x double] }
%"class.Eigen::CwiseNullaryOp.144" = type { [3 x i8] }
%"class.Eigen::CwiseNullaryOp.149" = type { %"class.Eigen::internal::variable_if_dynamic", [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia" = type { double, %class.Vector3_t, double, double, double, double, double, double }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.154" = type { i8 }

@.str = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17RigidBodyDynamics5ModelC2Ev(ptr noundef nonnull align 8 dereferenceable(872) %0) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.Eigen::aligned_allocator", align 1
  %3 = alloca %"class.Eigen::aligned_allocator", align 1
  %4 = alloca %"class.Eigen::aligned_allocator.17", align 1
  %5 = alloca %"class.Eigen::aligned_allocator", align 1
  %6 = alloca %"class.Eigen::aligned_allocator", align 1
  %7 = alloca %"class.Eigen::aligned_allocator", align 1
  %8 = alloca %"class.Eigen::aligned_allocator.24", align 1
  %9 = alloca %"class.Eigen::aligned_allocator.31", align 1
  %10 = alloca %"class.Eigen::aligned_allocator.31", align 1
  %11 = alloca %"class.Eigen::aligned_allocator", align 1
  %12 = alloca %"class.Eigen::aligned_allocator.53", align 1
  %13 = alloca %"class.Eigen::aligned_allocator", align 1
  %14 = alloca %"class.Eigen::aligned_allocator", align 1
  %15 = alloca %"class.Eigen::aligned_allocator", align 1
  %16 = alloca %"class.Eigen::aligned_allocator.69", align 1
  %17 = alloca %"class.Eigen::aligned_allocator.69", align 1
  %18 = alloca %"class.Eigen::aligned_allocator", align 1
  %19 = alloca %"class.Eigen::aligned_allocator", align 1
  %20 = alloca %"class.Eigen::aligned_allocator.24", align 1
  %21 = alloca %"class.Eigen::aligned_allocator.24", align 1
  %22 = alloca %"class.Eigen::aligned_allocator.76", align 1
  %23 = alloca %"class.Eigen::aligned_allocator.83", align 1
  %24 = alloca %"struct.RigidBodyDynamics::Body", align 8
  %25 = alloca %"struct.RigidBodyDynamics::Joint", align 8
  %26 = alloca %class.Vector3_t, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca %class.SpatialVector_t, align 16
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca %"class.std::vector", align 8
  %40 = alloca %class.Vector3_t, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %45 = alloca %"class.Eigen::Matrix.110", align 16
  %46 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %47 = alloca %"class.Eigen::Matrix.110", align 16
  %48 = alloca %"class.Eigen::CwiseNullaryOp", align 8
  %49 = alloca %class.Matrix3_t, align 8
  %50 = alloca %"class.Eigen::CwiseNullaryOp.124", align 8
  %51 = alloca %class.Vector3_t, align 8
  %52 = alloca %"class.Eigen::CwiseNullaryOp.129", align 8
  %53 = alloca i32, align 4
  %54 = alloca %class.SpatialMatrix_t, align 16
  %55 = alloca %"class.Eigen::CwiseNullaryOp.144", align 1
  %56 = alloca %"class.Eigen::CwiseNullaryOp.149", align 8
  %57 = alloca %"class.Eigen::CwiseNullaryOp.149", align 8
  %58 = alloca %"struct.RigidBodyDynamics::Math::SpatialRigidBodyInertia", align 8
  %59 = alloca %class.Vector3_t, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca %class.Matrix3_t, align 8
  %64 = alloca %"class.Eigen::CwiseNullaryOp.124", align 8
  %65 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %66 = alloca %"struct.RigidBodyDynamics::Math::SpatialTransform", align 8
  %67 = alloca %"class.std::__cxx11::basic_string", align 8
  %68 = alloca %"class.std::allocator.154", align 1
  tail call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  %69 = getelementptr inbounds i8, ptr %0, i64 24
  tail call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #6
  %70 = getelementptr inbounds i8, ptr %0, i64 48
  tail call void @_ZNSt6vectorIS_IjSaIjEESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #6
  %71 = getelementptr inbounds i8, ptr %0, i64 88
  invoke void @_ZN9Vector3_tC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %72 unwind label %168

72:                                               ; preds = %1
  %73 = getelementptr inbounds i8, ptr %0, i64 112
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %2) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 1 dereferenceable(1) %2)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %2) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %2) #6
  %74 = getelementptr inbounds i8, ptr %0, i64 136
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 1 dereferenceable(1) %3)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %3) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #6
  %75 = getelementptr inbounds i8, ptr %0, i64 160
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  call void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics5JointEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4)
  call void @_ZNSt6vectorIN17RigidBodyDynamics5JointESaIS1_EEC2ERKN5Eigen17aligned_allocatorIS1_EE(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 1 dereferenceable(1) %4)
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics5JointEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  %76 = getelementptr inbounds i8, ptr %0, i64 184
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %5) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %76, ptr noundef nonnull align 1 dereferenceable(1) %5)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) #6
  %77 = getelementptr inbounds i8, ptr %0, i64 208
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %77, ptr noundef nonnull align 1 dereferenceable(1) %6)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #6
  %78 = getelementptr inbounds i8, ptr %0, i64 232
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr noundef nonnull align 1 dereferenceable(1) %7)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #6
  %79 = getelementptr inbounds i8, ptr %0, i64 256
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #6
  %80 = getelementptr inbounds i8, ptr %0, i64 280
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #6
  call void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EEC2ERKN5Eigen17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %80, ptr noundef nonnull align 1 dereferenceable(1) %8)
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #6
  %81 = getelementptr inbounds i8, ptr %0, i64 304
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #6
  %82 = getelementptr inbounds i8, ptr %0, i64 328
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #6
  call void @_ZN5Eigen17aligned_allocatorINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9)
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEESaIS2_EEC2ERKNS0_17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %82, ptr noundef nonnull align 1 dereferenceable(1) %9)
  call void @_ZNSt15__new_allocatorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #6
  %83 = getelementptr inbounds i8, ptr %0, i64 352
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  call void @_ZN5Eigen17aligned_allocatorINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10)
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEESaIS2_EEC2ERKNS0_17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 1 dereferenceable(1) %10)
  call void @_ZNSt15__new_allocatorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  %84 = getelementptr inbounds i8, ptr %0, i64 376
  call void @_ZNSt6vectorI9Matrix3_tSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #6
  %85 = getelementptr inbounds i8, ptr %0, i64 400
  call void @_ZNSt6vectorI9Vector3_tSaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %85) #6
  %86 = getelementptr inbounds i8, ptr %0, i64 424
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %86) #6
  %87 = getelementptr inbounds i8, ptr %0, i64 448
  call void @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #6
  %88 = getelementptr inbounds i8, ptr %0, i64 472
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %88, ptr noundef nonnull align 1 dereferenceable(1) %11)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #6
  %89 = getelementptr inbounds i8, ptr %0, i64 496
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialMatrix_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12)
  call void @_ZNSt6vectorI15SpatialMatrix_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %89, ptr noundef nonnull align 1 dereferenceable(1) %12)
  call void @_ZNSt15__new_allocatorI15SpatialMatrix_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #6
  %90 = getelementptr inbounds i8, ptr %0, i64 520
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr noundef nonnull align 1 dereferenceable(1) %13)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #6
  %91 = getelementptr inbounds i8, ptr %0, i64 544
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr noundef nonnull align 1 dereferenceable(1) %14)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #6
  %92 = getelementptr inbounds i8, ptr %0, i64 568
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92)
          to label %93 unwind label %170

93:                                               ; preds = %72
  %94 = getelementptr inbounds i8, ptr %0, i64 584
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94)
          to label %95 unwind label %172

95:                                               ; preds = %93
  %96 = getelementptr inbounds i8, ptr %0, i64 600
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %15) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %96, ptr noundef nonnull align 1 dereferenceable(1) %15)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %15) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %15) #6
  %97 = getelementptr inbounds i8, ptr %0, i64 624
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #6
  call void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaESaIS2_EEC2ERKN5Eigen17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %97, ptr noundef nonnull align 1 dereferenceable(1) %16)
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #6
  %98 = getelementptr inbounds i8, ptr %0, i64 648
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #6
  call void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaESaIS2_EEC2ERKN5Eigen17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 1 dereferenceable(1) %17)
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #6
  %99 = getelementptr inbounds i8, ptr %0, i64 672
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %99, ptr noundef nonnull align 1 dereferenceable(1) %18)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #6
  %100 = getelementptr inbounds i8, ptr %0, i64 696
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #6
  call void @_ZN5Eigen17aligned_allocatorI15SpatialVector_tEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19)
  call void @_ZNSt6vectorI15SpatialVector_tSaIS0_EEC2ERKN5Eigen17aligned_allocatorIS0_EE(ptr noundef nonnull align 8 dereferenceable(24) %100, ptr noundef nonnull align 1 dereferenceable(1) %19)
  call void @_ZNSt15__new_allocatorI15SpatialVector_tED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #6
  %101 = getelementptr inbounds i8, ptr %0, i64 720
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %20) #6
  call void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EEC2ERKN5Eigen17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 1 dereferenceable(1) %20)
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %20) #6
  %102 = getelementptr inbounds i8, ptr %0, i64 744
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #6
  call void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EEC2ERKN5Eigen17aligned_allocatorIS2_EE(ptr noundef nonnull align 8 dereferenceable(24) %102, ptr noundef nonnull align 1 dereferenceable(1) %21)
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4Math16SpatialTransformEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #6
  %103 = getelementptr inbounds i8, ptr %0, i64 768
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %22) #6
  call void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics9FixedBodyEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22)
  call void @_ZNSt6vectorIN17RigidBodyDynamics9FixedBodyESaIS1_EEC2ERKN5Eigen17aligned_allocatorIS1_EE(ptr noundef nonnull align 8 dereferenceable(24) %103, ptr noundef nonnull align 1 dereferenceable(1) %22)
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics9FixedBodyEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %22) #6
  %104 = getelementptr inbounds i8, ptr %0, i64 800
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #6
  call void @_ZN5Eigen17aligned_allocatorIN17RigidBodyDynamics4BodyEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23)
  call void @_ZNSt6vectorIN17RigidBodyDynamics4BodyESaIS1_EEC2ERKN5Eigen17aligned_allocatorIS1_EE(ptr noundef nonnull align 8 dereferenceable(24) %104, ptr noundef nonnull align 1 dereferenceable(1) %23)
  call void @_ZNSt15__new_allocatorIN17RigidBodyDynamics4BodyEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #6
  %105 = getelementptr inbounds i8, ptr %0, i64 824
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %105) #6
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %24) #6
  invoke void @_ZN17RigidBodyDynamics4BodyC2Ev(ptr noundef nonnull align 8 dereferenceable(105) %24)
          to label %106 unwind label %174

106:                                              ; preds = %95
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #6
  call void @_ZN17RigidBodyDynamics5JointC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  store double 0.000000e+00, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  store double 0.000000e+00, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  store double 0.000000e+00, ptr %29, align 8, !tbaa !5
  invoke void @_ZN9Vector3_tC2ERKdS1_S1_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %107 unwind label %176

107:                                              ; preds = %106
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  store double 0.000000e+00, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  store double 0.000000e+00, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  store double 0.000000e+00, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  store double 0.000000e+00, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  store double 0.000000e+00, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  store double 0.000000e+00, ptr %36, align 8, !tbaa !5
  invoke void @_ZN15SpatialVector_tC2ERKdS1_S1_S1_S1_S1_(ptr noundef nonnull align 16 dereferenceable(48) %30, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %108 unwind label %178

108:                                              ; preds = %107
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  store i32 0, ptr %37, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %109 unwind label %180

109:                                              ; preds = %108
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #6
  store i32 0, ptr %38, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %110 unwind label %182

110:                                              ; preds = %109
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %39, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #6
  invoke void @_ZNSt6vectorIS_IjSaIjEESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %111 unwind label %184

111:                                              ; preds = %110
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #6
  %112 = getelementptr inbounds i8, ptr %0, i64 72
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %112, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #6
  store double 0.000000e+00, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #6
  store double -9.810000e+00, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #6
  store double 0.000000e+00, ptr %43, align 8, !tbaa !5
  invoke void @_ZN9Vector3_tC2ERKdS1_S1_(ptr noundef nonnull align 8 dereferenceable(24) %40, ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %113 unwind label %186

113:                                              ; preds = %111
  %114 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN9Vector3_taSEOS_(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 8 dereferenceable(24) %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %40) #6
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %115 unwind label %188

115:                                              ; preds = %113
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %116 unwind label %188

116:                                              ; preds = %115
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %117 unwind label %188

117:                                              ; preds = %116
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %76, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %118 unwind label %188

118:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %44) #6
  invoke void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %44)
          to label %119 unwind label %190

119:                                              ; preds = %118
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %80, ptr noundef nonnull align 8 dereferenceable(96) %44)
          to label %120 unwind label %190

120:                                              ; preds = %119
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %44) #6
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %77, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %121 unwind label %188

121:                                              ; preds = %120
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %78, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %122 unwind label %188

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %46)
          to label %123 unwind label %192

123:                                              ; preds = %122
  invoke void @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %45, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %124 unwind label %192

124:                                              ; preds = %123
  invoke void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %82, ptr noundef nonnull align 16 dereferenceable(144) %45)
          to label %125 unwind label %192

125:                                              ; preds = %124
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi6ELi3ELi0ELi6ELi3EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp") align 8 %48)
          to label %126 unwind label %194

126:                                              ; preds = %125
  invoke void @_ZN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(144) %47, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %127 unwind label %194

127:                                              ; preds = %126
  invoke void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 16 dereferenceable(144) %47)
          to label %128 unwind label %194

128:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %47) #6
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.124") align 8 %50)
          to label %129 unwind label %196

129:                                              ; preds = %128
  invoke void @_ZN9Matrix3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %49, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %130 unwind label %196

130:                                              ; preds = %129
  invoke void @_ZNSt6vectorI9Matrix3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 8 dereferenceable(72) %49)
          to label %131 unwind label %196

131:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %49) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEE4ZeroEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.129") align 8 %52)
          to label %132 unwind label %198

132:                                              ; preds = %131
  invoke void @_ZN9Vector3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %133 unwind label %198

133:                                              ; preds = %132
  invoke void @_ZNSt6vectorI9Vector3_tSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(24) %51)
          to label %134 unwind label %198

134:                                              ; preds = %133
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %53) #6
  store i32 0, ptr %53, align 4, !tbaa !9
  invoke void @_ZNSt6vectorIjSaIjEE9push_backEOj(ptr noundef nonnull align 8 dereferenceable(24) %86, ptr noundef nonnull align 4 dereferenceable(4) %53)
          to label %135 unwind label %200

135:                                              ; preds = %134
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #6
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %88, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %136 unwind label %188

136:                                              ; preds = %135
  call void @llvm.lifetime.start.p0(i64 288, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %55) #6
  invoke void @_ZN5Eigen10MatrixBaseINS_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEE8IdentityEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.144") align 1 %55)
          to label %137 unwind label %202

137:                                              ; preds = %136
  invoke void @_ZN15SpatialMatrix_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_identity_opIdEENS1_6MatrixIdLi6ELi6ELi0ELi6ELi6EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 16 dereferenceable(288) %54, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %138 unwind label %202

138:                                              ; preds = %137
  invoke void @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %89, ptr noundef nonnull align 16 dereferenceable(288) %54)
          to label %139 unwind label %202

139:                                              ; preds = %138
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %54) #6
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %140 unwind label %188

140:                                              ; preds = %139
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %91, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %141 unwind label %188

141:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %56) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.149") align 8 %56, i64 noundef 1)
          to label %142 unwind label %204

142:                                              ; preds = %141
  %143 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %94, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %144 unwind label %204

144:                                              ; preds = %142
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.149") align 8 %57, i64 noundef 1)
          to label %145 unwind label %206

145:                                              ; preds = %144
  %146 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %92, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %147 unwind label %206

147:                                              ; preds = %145
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #6
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %96, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %148 unwind label %188

148:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %58) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %59) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #6
  store double 0.000000e+00, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #6
  store double 0.000000e+00, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #6
  store double 0.000000e+00, ptr %62, align 8, !tbaa !5
  invoke void @_ZN9Vector3_tC2ERKdS1_S1_(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %149 unwind label %208

149:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %63) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %64) #6
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE4ZeroEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.124") align 8 %64, i64 noundef 3, i64 noundef 3)
          to label %150 unwind label %210

150:                                              ; preds = %149
  invoke void @_ZN9Matrix3_tC2IN5Eigen14CwiseNullaryOpINS1_8internal18scalar_constant_opIdEENS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %63, ptr noundef nonnull align 1 dereferenceable(1) %64)
          to label %151 unwind label %210

151:                                              ; preds = %150
  invoke void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaC2EdRK9Vector3_tRK9Matrix3_t(ptr noundef nonnull align 8 dereferenceable(80) %58, double noundef 0.000000e+00, ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef nonnull align 8 dereferenceable(72) %63)
          to label %152 unwind label %210

152:                                              ; preds = %151
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %63) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %59) #6
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 8 dereferenceable(80) %58)
          to label %153 unwind label %213

153:                                              ; preds = %152
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %97, ptr noundef nonnull align 8 dereferenceable(80) %58)
          to label %154 unwind label %213

154:                                              ; preds = %153
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %99, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %155 unwind label %213

155:                                              ; preds = %154
  invoke void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE9push_backERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %100, ptr noundef nonnull align 16 dereferenceable(48) %30)
          to label %156 unwind label %213

156:                                              ; preds = %155
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %65) #6
  invoke void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %65)
          to label %157 unwind label %215

157:                                              ; preds = %156
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 8 dereferenceable(96) %65)
          to label %158 unwind label %215

158:                                              ; preds = %157
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %65) #6
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %66) #6
  invoke void @_ZN17RigidBodyDynamics4Math16SpatialTransformC2Ev(ptr noundef nonnull align 8 dereferenceable(96) %66)
          to label %159 unwind label %217

159:                                              ; preds = %158
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE9push_backEOS2_(ptr noundef nonnull align 8 dereferenceable(24) %102, ptr noundef nonnull align 8 dereferenceable(96) %66)
          to label %160 unwind label %217

160:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %66) #6
  invoke void @_ZNSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %104, ptr noundef nonnull align 8 dereferenceable(105) %24)
          to label %161 unwind label %213

161:                                              ; preds = %160
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %68) #6
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull @.str, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %162 unwind label %219

162:                                              ; preds = %161
  %163 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEEixEOS5_(ptr noundef nonnull align 8 dereferenceable(48) %105, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %164 unwind label %221

164:                                              ; preds = %162
  store i32 0, ptr %163, align 4, !tbaa !9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #6
  %165 = call noundef i32 @_ZNSt14numeric_limitsIjE3maxEv() #6
  %166 = lshr i32 %165, 1
  %167 = getelementptr inbounds i8, ptr %0, i64 792
  store i32 %166, ptr %167, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  call void @_ZN17RigidBodyDynamics5JointD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #6
  call void @_ZN17RigidBodyDynamics4BodyD2Ev(ptr noundef nonnull align 8 dereferenceable(105) %24) #6
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %24) #6
  ret void

168:                                              ; preds = %1
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %230

170:                                              ; preds = %72
  %171 = landingpad { ptr, i32 }
          cleanup
  br label %229

172:                                              ; preds = %93
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %228

174:                                              ; preds = %95
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %227

176:                                              ; preds = %106
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  br label %226

178:                                              ; preds = %107
  %179 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  br label %225

180:                                              ; preds = %108
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  br label %225

182:                                              ; preds = %109
  %183 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  br label %225

184:                                              ; preds = %110
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #6
  br label %225

186:                                              ; preds = %111
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %40) #6
  br label %225

188:                                              ; preds = %147, %140, %139, %135, %121, %120, %117, %116, %115, %113
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %225

190:                                              ; preds = %119, %118
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %44) #6
  br label %225

192:                                              ; preds = %124, %123, %122
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %45) #6
  br label %225

194:                                              ; preds = %127, %126, %125
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #6
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %47) #6
  br label %225

196:                                              ; preds = %130, %129, %128
  %197 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %49) #6
  br label %225

198:                                              ; preds = %133, %132, %131
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %51) #6
  br label %225

200:                                              ; preds = %134
  %201 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %53) #6
  br label %225

202:                                              ; preds = %138, %137, %136
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %55) #6
  call void @llvm.lifetime.end.p0(i64 288, ptr nonnull %54) #6
  br label %225

204:                                              ; preds = %142, %141
  %205 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %56) #6
  br label %225

206:                                              ; preds = %145, %144
  %207 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #6
  br label %225

208:                                              ; preds = %148
  %209 = landingpad { ptr, i32 }
          cleanup
  br label %212

210:                                              ; preds = %151, %150, %149
  %211 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #6
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %63) #6
  br label %212

212:                                              ; preds = %210, %208
  %.pn = phi { ptr, i32 } [ %211, %210 ], [ %209, %208 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %59) #6
  br label %224

213:                                              ; preds = %160, %155, %154, %153, %152
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %224

215:                                              ; preds = %157, %156
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %65) #6
  br label %224

217:                                              ; preds = %159, %158
  %218 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %66) #6
  br label %224

219:                                              ; preds = %161
  %220 = landingpad { ptr, i32 }
          cleanup
  br label %223

221:                                              ; preds = %162
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #6
  br label %223

223:                                              ; preds = %221, %219
  %.pn12 = phi { ptr, i32 } [ %222, %221 ], [ %220, %219 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %68) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #6
  br label %224

224:                                              ; preds = %223, %217, %215, %213, %212
  %.pn12.pn = phi { ptr, i32 } [ %.pn12, %223 ], [ %214, %213 ], [ %218, %217 ], [ %216, %215 ], [ %.pn, %212 ]
  call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %58) #6
  br label %225

225:                                              ; preds = %224, %206, %204, %202, %200, %198, %196, %194, %192, %190, %188, %186, %184, %182, %180, %178
  %.pn12.pn.pn = phi { ptr, i32 } [ %.pn12.pn, %224 ], [ %189, %188 ], [ %207, %206 ], [ %205, %204 ], [ %203, %202 ], [ %201, %200 ], [ %199, %198 ], [ %197, %196 ], [ %195, %194 ], [ %193, %192 ], [ %191, %190 ], [ %187, %186 ], [ %185, %184 ], [ %183, %182 ], [ %181, %180 ], [ %179, %178 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %30) #6
  br label %226

226:                                              ; preds = %225, %176
  %.pn12.pn.pn.pn = phi { ptr, i32 } [ %.pn12.pn.pn, %225 ], [ %177, %176 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  call void @_ZN17RigidBodyDynamics5JointD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #6
  call void @_ZN17RigidBodyDynamics4BodyD2Ev(ptr noundef nonnull align 8 dereferenceable(105) %24) #6
  br label %227

227:                                              ; preds = %226, %174
  %.pn12.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn12.pn.pn.pn, %226 ], [ %175, %174 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %24) #6
  call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %105) #6
  call void @_ZNSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #6
  call void @_ZNSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %103) #6
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %102) #6
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #6
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #6
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #6
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #6
  br label %228

228:                                              ; preds = %227, %172
  %.pn12.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn12.pn.pn.pn.pn, %227 ], [ %173, %172 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %92) #6
  br label %229

229:                                              ; preds = %228, %170
  %.pn12.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn12.pn.pn.pn.pn.pn, %228 ], [ %171, %170 ]
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %91) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #6
  call void @_ZNSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %89) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %88) #6
  call void @_ZNSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #6
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %86) #6
  call void @_ZNSt6vectorI9Vector3_tSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %85) #6
  call void @_ZNSt6vectorI9Matrix3_tSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %84) #6
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #6
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #6
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #6
  call void @_ZNSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %80) #6
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #6
  call void @_ZNSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %74) #6
  call void @_ZNSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #6
  br label %230

230:                                              ; preds = %229, %168
  %.pn12.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn12.pn.pn.pn.pn.pn.pn, %229 ], [ %169, %168 ]
  call void @_ZNSt6vectorIS_IjSaIjEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %70) #6
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #6
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #6
  resume { ptr, i32 } %.pn12.pn.pn.pn.pn.pn.pn.pn
}

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaC2EdRK9Vector3_tRK9Matrix3_t(ptr noundef nonnull align 8 dereferenceable(80), double noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNSt14numeric_limitsIjE3maxEv() local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #1 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 792}
!12 = !{!"_ZTSN17RigidBodyDynamics5ModelE", !13, i64 0, !13, i64 24, !18, i64 48, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !22, i64 88, !27, i64 112, !27, i64 136, !32, i64 160, !27, i64 184, !27, i64 208, !27, i64 232, !13, i64 256, !37, i64 280, !13, i64 304, !42, i64 328, !42, i64 352, !47, i64 376, !51, i64 400, !13, i64 424, !55, i64 448, !27, i64 472, !59, i64 496, !27, i64 520, !27, i64 544, !64, i64 568, !64, i64 584, !27, i64 600, !68, i64 624, !68, i64 648, !27, i64 672, !27, i64 696, !37, i64 720, !37, i64 744, !73, i64 768, !10, i64 792, !78, i64 800, !83, i64 824}
!13 = !{!"_ZTSSt6vectorIjSaIjEE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!17 = !{!"any pointer", !7, i64 0}
!18 = !{!"_ZTSSt6vectorIS_IjSaIjEESaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseISt6vectorIjSaIjEESaIS2_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!22 = !{!"_ZTS9Vector3_t", !23, i64 0}
!23 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !24, i64 0}
!24 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !25, i64 0}
!25 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !26, i64 0}
!26 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !7, i64 0}
!27 = !{!"_ZTSSt6vectorI15SpatialVector_tSaIS0_EE", !28, i64 0}
!28 = !{!"_ZTSSt6vectorI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseI15SpatialVector_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!32 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics5JointESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics5JointEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!37 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformESaIS2_EE", !38, i64 0}
!38 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math16SpatialTransformEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!42 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEESaIS2_EE", !43, i64 0}
!43 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi6ELi3ELi0ELi6ELi3EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!47 = !{!"_ZTSSt6vectorI9Matrix3_tSaIS0_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseI9Matrix3_tSaIS0_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseI9Matrix3_tSaIS0_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseI9Matrix3_tSaIS0_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!51 = !{!"_ZTSSt6vectorI9Vector3_tSaIS0_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseI9Vector3_tSaIS0_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseI9Vector3_tSaIS0_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!55 = !{!"_ZTSSt6vectorIPN17RigidBodyDynamics11CustomJointESaIS2_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIPN17RigidBodyDynamics11CustomJointESaIS2_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!59 = !{!"_ZTSSt6vectorI15SpatialMatrix_tSaIS0_EE", !60, i64 0}
!60 = !{!"_ZTSSt6vectorI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseI15SpatialMatrix_tN5Eigen17aligned_allocatorIS0_EEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!64 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !65, i64 0}
!65 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !66, i64 0}
!66 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !17, i64 0, !67, i64 8}
!67 = !{!"long", !7, i64 0}
!68 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaESaIS2_EE", !69, i64 0}
!69 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4Math23SpatialRigidBodyInertiaEN5Eigen17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!73 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics9FixedBodyESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE", !75, i64 0}
!75 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics9FixedBodyEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!78 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4BodyESaIS1_EE", !79, i64 0}
!79 = !{!"_ZTSSt6vectorIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIN17RigidBodyDynamics4BodyEN5Eigen17aligned_allocatorIS1_EEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!83 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !84, i64 0}
!84 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !85, i64 0}
!85 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !86, i64 0, !88, i64 8}
!86 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !87, i64 0}
!87 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!88 = !{!"_ZTSSt15_Rb_tree_header", !89, i64 0, !67, i64 32}
!89 = !{!"_ZTSSt18_Rb_tree_node_base", !90, i64 0, !17, i64 8, !17, i64 16, !17, i64 24}
!90 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,MemCpyOptPass,SROAPass,SimplifyCFGPass,TailCallElimPass