; LLVM IR from erwincoumans/tiny-differentiable-simulator :: examples (laikago_footstep_ik)

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

%"class.std::__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.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { ptr, i64 }
%"struct.tds::UrdfParser" = type { i8 }
%struct.OpenGLUrdfVisualizer = type { %"class.std::map", %"class.std::map.9", i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %struct.TinyOpenGL3App }
%"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>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, 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>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, 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 }
%"class.std::map.9" = type { %"class.std::_Rb_tree.10" }
%"class.std::_Rb_tree.10" = type { %"struct.std::_Rb_tree<int, std::pair<const int, OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo>, std::_Select1st<std::pair<const int, OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo>>, std::less<int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo>, std::_Select1st<std::pair<const int, OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo>>, std::less<int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%struct.TinyOpenGL3App = type { %struct.TinyCommonGraphicsApp.base, ptr, ptr, ptr }
%struct.TinyCommonGraphicsApp.base = type <{ ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, float, float, float, float, i8, [3 x i8], [3 x float] }>
%struct.LaikagoSimulation = type { %"class.tds::UrdfCache", %"class.std::__cxx11::basic_string", %"class.tds::World", ptr, i32, double }
%"class.tds::UrdfCache" = type { %"class.std::map.15" }
%"class.std::map.15" = type { %"class.std::_Rb_tree.16" }
%"class.std::_Rb_tree.16" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, tds::UrdfStructures<tds::EigenAlgebraT<>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, tds::UrdfStructures<tds::EigenAlgebraT<>>>>, 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>, tds::UrdfStructures<tds::EigenAlgebraT<>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, tds::UrdfStructures<tds::EigenAlgebraT<>>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.tds::World" = type { ptr, %"class.std::vector.20", %"class.std::vector.25", %"class.Eigen::Matrix.30", %"class.std::vector.39", %"class.tds::CollisionDispatcher", ptr, ptr, ptr, %"class.std::vector.44", %"class.std::vector.49", i32, double, double, %"class.std::vector.54" }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<tds::RigidBody<tds::EigenAlgebraT<>> *, std::allocator<tds::RigidBody<tds::EigenAlgebraT<>> *>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::RigidBody<tds::EigenAlgebraT<>> *, std::allocator<tds::RigidBody<tds::EigenAlgebraT<>> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::RigidBody<tds::EigenAlgebraT<>> *, std::allocator<tds::RigidBody<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::RigidBody<tds::EigenAlgebraT<>> *, std::allocator<tds::RigidBody<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.25" = type { %"struct.std::_Vector_base.26" }
%"struct.std::_Vector_base.26" = type { %"struct.std::_Vector_base<tds::MultiBody<tds::EigenAlgebraT<>> *, std::allocator<tds::MultiBody<tds::EigenAlgebraT<>> *>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::MultiBody<tds::EigenAlgebraT<>> *, std::allocator<tds::MultiBody<tds::EigenAlgebraT<>> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::MultiBody<tds::EigenAlgebraT<>> *, std::allocator<tds::MultiBody<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::MultiBody<tds::EigenAlgebraT<>> *, std::allocator<tds::MultiBody<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Eigen::Matrix.30" = type { %"class.Eigen::PlainObjectBase.31" }
%"class.Eigen::PlainObjectBase.31" = type { %"class.Eigen::DenseStorage.38" }
%"class.Eigen::DenseStorage.38" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = type { %"struct.std::_Vector_base<tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.tds::CollisionDispatcher" = type { [6 x [6 x ptr]] }
%"class.std::vector.44" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = type { %"struct.std::_Vector_base<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.49" = type { %"struct.std::_Vector_base.50" }
%"struct.std::_Vector_base.50" = type { %"struct.std::_Vector_base<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>, std::allocator<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>, std::allocator<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>, std::allocator<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>, std::allocator<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.54" = type { %"struct.std::_Vector_base.55" }
%"struct.std::_Vector_base.55" = type { %"struct.std::_Vector_base<tds::ContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::ContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::ContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::ContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::ContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::ContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::ContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::ContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.99" = type { %"struct.std::_Vector_base.100" }
%"struct.std::_Vector_base.100" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.59" = type { %"struct.std::_Vector_base.60" }
%"struct.std::_Vector_base.60" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"struct.TINY::TinyVector3" = type { float, float, float, i32 }
%"struct.TINY::TinyQuaternion" = type { float, float, float, float }
%"struct.tds::UrdfStructures" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.104", %"class.std::vector.104", %"class.std::vector.109", %"class.std::map", %"class.std::map.114" }
%"class.std::vector.104" = type { %"struct.std::_Vector_base.105" }
%"struct.std::_Vector_base.105" = type { %"struct.std::_Vector_base<tds::UrdfLink<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfLink<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::UrdfLink<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfLink<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::UrdfLink<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfLink<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::UrdfLink<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfLink<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.109" = type { %"struct.std::_Vector_base.110" }
%"struct.std::_Vector_base.110" = type { %"struct.std::_Vector_base<tds::UrdfJoint<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfJoint<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::UrdfJoint<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfJoint<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::UrdfJoint<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfJoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::UrdfJoint<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfJoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.114" = type { %"class.std::_Rb_tree.115" }
%"class.std::_Rb_tree.115" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, tds::VisualMaterial<tds::EigenAlgebraT<>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, tds::VisualMaterial<tds::EigenAlgebraT<>>>>, 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>, tds::VisualMaterial<tds::EigenAlgebraT<>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, tds::VisualMaterial<tds::EigenAlgebraT<>>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.139" = type { %"struct.std::_Vector_base.140" }
%"struct.std::_Vector_base.140" = type { %"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.101" = type { i8 }
%"class.std::allocator.141" = type { i8 }
%"class.Eigen::Quaternion" = type { %"class.Eigen::Matrix.144" }
%"class.Eigen::Matrix.144" = type { %"class.Eigen::PlainObjectBase.145" }
%"class.Eigen::PlainObjectBase.145" = type { %"class.Eigen::DenseStorage.152" }
%"class.Eigen::DenseStorage.152" = type { %"struct.Eigen::internal::plain_array.153" }
%"struct.Eigen::internal::plain_array.153" = type { [4 x double] }
%"struct.TINY::TinyInverseKinematics" = type { %"class.std::vector.154", i32, double, double, double, double, %"class.Eigen::Matrix", double }
%"class.std::vector.154" = type { %"struct.std::_Vector_base.155" }
%"struct.std::_Vector_base.155" = type { %"struct.std::_Vector_base<TINY::TinyIKTarget<tds::EigenAlgebraT<>>, std::allocator<TINY::TinyIKTarget<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<TINY::TinyIKTarget<tds::EigenAlgebraT<>>, std::allocator<TINY::TinyIKTarget<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<TINY::TinyIKTarget<tds::EigenAlgebraT<>>, std::allocator<TINY::TinyIKTarget<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TINY::TinyIKTarget<tds::EigenAlgebraT<>>, std::allocator<TINY::TinyIKTarget<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.159" = type { %"struct.std::_Vector_base.160" }
%"struct.std::_Vector_base.160" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, -1, 1>, std::allocator<Eigen::Matrix<double, -1, 1>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, -1, 1>, std::allocator<Eigen::Matrix<double, -1, 1>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, -1, 1>, std::allocator<Eigen::Matrix<double, -1, 1>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, -1, 1>, std::allocator<Eigen::Matrix<double, -1, 1>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.TINY::TinyIKResult" = type { i32, i32, double }
%"class.std::chrono::duration" = type { double }
%"struct.tds::Link" = type { i32, %"struct.tds::Transform", %"struct.tds::Transform", %"struct.tds::Transform", %"struct.tds::Transform", %"struct.tds::MotionVector", %"struct.tds::MotionVector", %"struct.tds::MotionVector", %"struct.tds::MotionVector", %"struct.tds::MotionVector", %"struct.tds::RigidBodyInertia", %"struct.tds::ArticulatedBodyInertia", %"struct.tds::ForceVector", %"struct.tds::MotionVector", %"struct.tds::ForceVector", double, double, %"struct.tds::ForceVector", [8 x i8], %"class.Eigen::Matrix.89", %"class.Eigen::Matrix.89", %"class.Eigen::Matrix.64", %"class.Eigen::Matrix.64", %"class.Eigen::Matrix.30", %"struct.tds::ForceVector", i32, i32, %"class.std::vector.79", %"class.std::vector.74", %"class.std::vector.59", %"class.std::vector.74", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, double, double, [8 x i8] }
%"struct.tds::Transform" = type { %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.64" }
%"struct.tds::RigidBodyInertia" = type { double, %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.64" }
%"struct.tds::ArticulatedBodyInertia" = type { %"class.Eigen::Matrix.64", %"class.Eigen::Matrix.64", %"class.Eigen::Matrix.64" }
%"struct.tds::MotionVector" = type { %"struct.tds::SpatialVector" }
%"struct.tds::SpatialVector" = type { %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.30" }
%"class.Eigen::Matrix.89" = type { %"class.Eigen::PlainObjectBase.90" }
%"class.Eigen::PlainObjectBase.90" = type { %"class.Eigen::DenseStorage.97" }
%"class.Eigen::DenseStorage.97" = type { %"struct.Eigen::internal::plain_array.98" }
%"struct.Eigen::internal::plain_array.98" = type { [18 x double] }
%"class.Eigen::Matrix.64" = type { %"class.Eigen::PlainObjectBase.65" }
%"class.Eigen::PlainObjectBase.65" = type { %"class.Eigen::DenseStorage.72" }
%"class.Eigen::DenseStorage.72" = type { %"struct.Eigen::internal::plain_array.73" }
%"struct.Eigen::internal::plain_array.73" = type { [9 x double] }
%"struct.tds::ForceVector" = type { %"struct.tds::SpatialVector" }
%"class.std::vector.79" = type { %"struct.std::_Vector_base.80" }
%"struct.std::_Vector_base.80" = type { %"struct.std::_Vector_base<const tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<const tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl" }
%"struct.std::_Vector_base<const tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<const tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<const tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<const tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.74" = type { %"struct.std::_Vector_base.75" }
%"struct.std::_Vector_base.75" = type { %"struct.std::_Vector_base<tds::Transform<tds::EigenAlgebraT<>>, std::allocator<tds::Transform<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::Transform<tds::EigenAlgebraT<>>, std::allocator<tds::Transform<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::Transform<tds::EigenAlgebraT<>>, std::allocator<tds::Transform<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::Transform<tds::EigenAlgebraT<>>, std::allocator<tds::Transform<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.tds::UrdfLink" = type <{ %"class.std::__cxx11::basic_string", %"struct.tds::UrdfInertial", %"class.std::vector.119", %"class.std::vector.124", %"class.std::vector.59", %"struct.tds::UrdfContact", i32, [4 x i8] }>
%"struct.tds::UrdfInertial" = type { double, %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.30" }
%"class.std::vector.119" = type { %"struct.std::_Vector_base.120" }
%"struct.std::_Vector_base.120" = type { %"struct.std::_Vector_base<tds::UrdfVisual<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfVisual<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::UrdfVisual<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfVisual<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::UrdfVisual<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfVisual<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::UrdfVisual<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfVisual<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.124" = type { %"struct.std::_Vector_base.125" }
%"struct.std::_Vector_base.125" = type { %"struct.std::_Vector_base<tds::UrdfCollision<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfCollision<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::UrdfCollision<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfCollision<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::UrdfCollision<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfCollision<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::UrdfCollision<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfCollision<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.tds::UrdfContact" = type { double, double, double, double }
%"struct.tds::UrdfVisual" = type { %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.30", %"struct.tds::UrdfGeometry", %"class.std::__cxx11::basic_string", %"struct.tds::VisualMaterial", %"class.std::__cxx11::basic_string", i8, i32 }
%"struct.tds::UrdfGeometry" = type { i32, %"struct.tds::UrdfCollisionSphere", %"struct.tds::UrdfCollisionCapsule", %"struct.tds::UrdfCollisionBox", %"struct.tds::UrdfCollisionMesh", %"struct.tds::UrdfCollisionPlane", %"struct.tds::UrdfCollisionCylinder" }
%"struct.tds::UrdfCollisionSphere" = type { double }
%"struct.tds::UrdfCollisionCapsule" = type { double, double }
%"struct.tds::UrdfCollisionBox" = type { %"class.Eigen::Matrix.30" }
%"struct.tds::UrdfCollisionMesh" = type { %"class.std::__cxx11::basic_string", %"class.Eigen::Matrix.30" }
%"struct.tds::UrdfCollisionPlane" = type { %"class.Eigen::Matrix.30", double }
%"struct.tds::UrdfCollisionCylinder" = type { double, double }
%"struct.tds::VisualMaterial" = type { %"class.Eigen::Matrix.30", %"class.std::__cxx11::basic_string" }
%"struct.OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo" = type { %"class.std::__cxx11::basic_string", i32, %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.30", %"class.std::vector.59", %"class.std::vector.129" }
%"class.std::vector.129" = type { %"struct.std::_Vector_base.130" }
%"struct.std::_Vector_base.130" = type { %"struct.std::_Vector_base<TINY::TinyVector3<float, TINY::FloatUtils>, std::allocator<TINY::TinyVector3<float, TINY::FloatUtils>>>::_Vector_impl" }
%"struct.std::_Vector_base<TINY::TinyVector3<float, TINY::FloatUtils>, std::allocator<TINY::TinyVector3<float, TINY::FloatUtils>>>::_Vector_impl" = type { %"struct.std::_Vector_base<TINY::TinyVector3<float, TINY::FloatUtils>, std::allocator<TINY::TinyVector3<float, TINY::FloatUtils>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TINY::TinyVector3<float, TINY::FloatUtils>, std::allocator<TINY::TinyVector3<float, TINY::FloatUtils>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.TinyCommonGraphicsApp = type <{ ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, float, float, float, float, i8, [3 x i8], [3 x float], [4 x i8] }>
%"class.tds::MultiBody" = type { i32, i32, double, i8, %"class.std::vector.59", %"struct.tds::MotionVector", %"struct.tds::MotionVector", %"struct.tds::ForceVector", %"struct.tds::ForceVector", %"struct.tds::ForceVector", %"struct.tds::RigidBodyInertia", %"struct.tds::ArticulatedBodyInertia", %"struct.tds::Transform", %"class.std::vector.59", %"class.std::vector.59", %"class.std::vector.74", %"class.std::vector.79", %"class.std::vector.74", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.std::__cxx11::basic_string", %"class.std::vector.84" }
%"class.std::vector.84" = type { %"struct.std::_Vector_base.85" }
%"struct.std::_Vector_base.85" = type { %"struct.std::_Vector_base<tds::Link<tds::EigenAlgebraT<>>, std::allocator<tds::Link<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::Link<tds::EigenAlgebraT<>>, std::allocator<tds::Link<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::Link<tds::EigenAlgebraT<>>, std::allocator<tds::Link<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::Link<tds::EigenAlgebraT<>>, std::allocator<tds::Link<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.TINY::TinyIKTarget" = type { i32, %"class.Eigen::Matrix.30", %"class.Eigen::Matrix.30" }

@is_floating = external dso_local global i8, align 1
@_Z17LAIKAGO_URDF_NAMEB5cxx11 = external dso_local global %"class.std::__cxx11::basic_string", align 8
@.str.3 = external hidden unnamed_addr constant [1 x i8], align 1
@start_pos = external dso_local global [3 x double], align 16
@frameskip_gfx_sync = external dso_local global i32, align 4
@initial_poses = external dso_local global [12 x double], align 16
@all_joint_angles2 = external dso_local global %"class.Eigen::Matrix", align 8
@.str.20 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [13 x i8], align 1
@__const.main.phases = external hidden unnamed_addr constant [4 x double], align 16
@.str.23 = external hidden unnamed_addr constant [10 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare 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 #2 align 2

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #4 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %"struct.tds::UrdfParser", align 1
  %9 = alloca %struct.OpenGLUrdfVisualizer, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %struct.LaikagoSimulation, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::vector.99", align 8
  %16 = alloca %"class.std::vector.99", align 8
  %17 = alloca %"class.std::vector.59", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca %"class.std::allocator", align 1
  %21 = alloca %"struct.TINY::TinyVector3", align 4
  %22 = alloca %"struct.TINY::TinyQuaternion", align 4
  %23 = alloca %"struct.TINY::TinyVector3", align 4
  %24 = alloca i8, align 1
  %25 = alloca [4096 x i8], align 16
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator", align 1
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca %"struct.tds::UrdfStructures", align 8
  %30 = alloca i32, align 4
  %31 = alloca %"class.std::vector.59", align 8
  %32 = alloca %"class.std::vector.59", align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca %"struct.TINY::TinyVector3", align 4
  %37 = alloca %"struct.TINY::TinyQuaternion", align 4
  %38 = alloca %"struct.TINY::TinyVector3", align 4
  %39 = alloca i32, align 4
  %40 = alloca ptr, align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca %"struct.TINY::TinyVector3", align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca ptr, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca %"struct.TINY::TinyVector3", align 4
  %54 = alloca %"class.std::vector.139", align 8
  %55 = alloca %"class.std::vector.99", align 8
  %56 = alloca %"class.std::allocator.101", align 1
  %57 = alloca %"class.std::allocator.141", align 1
  %58 = alloca %"class.std::vector.139", align 8
  %59 = alloca %"class.std::allocator.141", align 1
  %60 = alloca i32, align 4
  %61 = alloca %"class.Eigen::Quaternion", align 16
  %62 = alloca %"class.Eigen::Matrix.30", align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca %"class.std::vector.99", align 8
  %67 = alloca double, align 8
  %68 = alloca %"class.std::allocator.101", align 1
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca i32, align 4
  %76 = alloca ptr, align 8
  %77 = alloca %"struct.TINY::TinyInverseKinematics", align 8
  %78 = alloca %"class.Eigen::Matrix", align 8
  %79 = alloca %"class.std::vector.99", align 8
  %80 = alloca %"class.std::allocator.101", align 1
  %81 = alloca %"class.std::vector.99", align 8
  %82 = alloca %"class.std::allocator.101", align 1
  %83 = alloca %"class.std::vector.99", align 8
  %84 = alloca %"class.std::allocator.101", align 1
  %85 = alloca %"class.std::vector.99", align 8
  %86 = alloca %"class.std::allocator.101", align 1
  %87 = alloca i32, align 4
  %88 = alloca double, align 8
  %89 = alloca [4 x double], align 16
  %90 = alloca %"class.std::vector.159", align 8
  %91 = alloca i32, align 4
  %92 = alloca double, align 8
  %93 = alloca %"class.Eigen::Matrix.30", align 8
  %94 = alloca %"struct.TINY::TinyIKResult", align 8
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca %"class.std::vector.99", align 8
  %98 = alloca i32, align 4
  %99 = alloca i8, align 1
  %100 = alloca float, align 4
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca i32, align 4
  %104 = alloca i32, align 4
  %105 = alloca i32, align 4
  %106 = alloca i32, align 4
  %107 = alloca %"struct.TINY::TinyVector3", align 4
  %108 = alloca %"struct.TINY::TinyQuaternion", align 4
  %109 = alloca %"struct.TINY::TinyVector3", align 4
  %110 = alloca %"struct.TINY::TinyQuaternion", align 4
  %111 = alloca %"class.Eigen::Matrix.30", align 8
  %112 = alloca %"class.Eigen::Quaternion", align 16
  %113 = alloca %"struct.TINY::TinyVector3", align 4
  %114 = alloca %"struct.TINY::TinyQuaternion", align 4
  %115 = alloca i32, align 4
  %116 = alloca i32, align 4
  %117 = alloca i32, align 4
  %118 = alloca %"struct.TINY::TinyVector3", align 4
  %119 = alloca %"struct.TINY::TinyQuaternion", align 4
  %120 = alloca %"class.std::chrono::duration", align 8
  %121 = alloca double, align 8
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #12
  store i32 0, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #12
  store i32 0, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #12
  call void @llvm.lifetime.start.p0(i64 304, ptr %9) #12
  call void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEEC2EiiPKc(ptr noundef nonnull align 8 dereferenceable(304) %9, i32 noundef 1024, i32 noundef 768, ptr noundef @.str.20)
  invoke void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE10delete_allEv(ptr noundef nonnull align 8 dereferenceable(304) %9)
          to label %122 unwind label %133

122:                                              ; preds = %2
  call void @llvm.lifetime.start.p0(i64 616, ptr %12) #12
  invoke void @_ZN17LaikagoSimulationIN3tds13EigenAlgebraTIdEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(616) %12)
          to label %123 unwind label %137

123:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #12
  store i32 0, ptr %13, align 4, !tbaa !5
  br label %124

124:                                              ; preds = %158, %123
  %125 = load i32, ptr %13, align 4, !tbaa !5
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %128 = load ptr, ptr %127, align 8, !tbaa !11
  %129 = invoke noundef i64 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE9num_linksEv(ptr noundef nonnull align 8 dereferenceable(944) %128)
          to label %130 unwind label %141

130:                                              ; preds = %124
  %131 = icmp ult i64 %126, %129
  br i1 %131, label %145, label %132

132:                                              ; preds = %130
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #12
  br label %161

133:                                              ; preds = %2
  %134 = landingpad { ptr, i32 }
          cleanup
  %135 = extractvalue { ptr, i32 } %134, 0
  store ptr %135, ptr %10, align 8
  %136 = extractvalue { ptr, i32 } %134, 1
  store i32 %136, ptr %11, align 4
  br label %1424

137:                                              ; preds = %122
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %10, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %11, align 4
  br label %1423

141:                                              ; preds = %150, %145, %124
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %10, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #12
  br label %1422

145:                                              ; preds = %130
  %146 = load i32, ptr %13, align 4, !tbaa !5
  %147 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %148 = load ptr, ptr %147, align 8, !tbaa !11
  %149 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944) %148)
          to label %150 unwind label %141

150:                                              ; preds = %145
  %151 = load i32, ptr %13, align 4, !tbaa !5
  %152 = sext i32 %151 to i64
  %153 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %152) #12
  %154 = getelementptr inbounds %"struct.tds::Link", ptr %153, i32 0, i32 31
  %155 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %154) #12
  %156 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.21, i32 noundef %146, ptr noundef %155)
          to label %157 unwind label %141

157:                                              ; preds = %150
  br label %158

158:                                              ; preds = %157
  %159 = load i32, ptr %13, align 4, !tbaa !5
  %160 = add nsw i32 %159, 1
  store i32 %160, ptr %13, align 4, !tbaa !5
  br label %124, !llvm.loop !56

161:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #12
  %162 = invoke noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE9input_dimEv(ptr noundef nonnull align 8 dereferenceable(616) %12)
          to label %163 unwind label %197

163:                                              ; preds = %161
  store i32 %162, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #12
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #12
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  %164 = load i32, ptr %14, align 4, !tbaa !5
  %165 = sext i32 %164 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %165)
          to label %166 unwind label %201

166:                                              ; preds = %163
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 3) #12
  store double 1.000000e+00, ptr %167, align 8, !tbaa !58
  %168 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 6) #12
  store double 0x3FE6666666666666, ptr %168, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #12
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %169 unwind label %205

169:                                              ; preds = %166
  %170 = invoke noundef zeroext i1 @_ZN3tds9FileUtils9find_fileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS6_(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %171 unwind label %209

171:                                              ; preds = %169
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #12
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %21, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %172 unwind label %214

172:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #12
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %22, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %173 unwind label %218

173:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #12
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %23, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %174 unwind label %222

174:                                              ; preds = %173
  invoke void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE8load_objERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKN4TINY11TinyVector3IfNSC_10FloatUtilsEEERKNSC_14TinyQuaternionIfSE_EESH_RSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(304) %9, ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 4 dereferenceable(16) %21, ptr noundef nonnull align 4 dereferenceable(16) %22, ptr noundef nonnull align 4 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %175 unwind label %222

175:                                              ; preds = %174
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #12
  store i8 0, ptr %24, align 1, !tbaa !59
  call void @llvm.lifetime.start.p0(i64 4096, ptr %25) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %26) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %176 unwind label %229

176:                                              ; preds = %175
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #12
  %177 = invoke noundef zeroext i1 @_ZN3tds9FileUtils9find_fileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS6_(ptr noundef nonnull align 8 dereferenceable(32) @_Z17LAIKAGO_URDF_NAMEB5cxx11, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %178 unwind label %233

178:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 200, ptr %29) #12
  %179 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 0
  %180 = invoke noundef nonnull align 8 dereferenceable(200) ptr @_ZN3tds9UrdfCacheINS_13EigenAlgebraTIdEEE8retrieveERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(48) %179, ptr noundef nonnull align 8 dereferenceable(32) %28, i1 noundef zeroext false)
          to label %181 unwind label %237

181:                                              ; preds = %178
  invoke void @_ZN3tds14UrdfStructuresINS_13EigenAlgebraTIdEEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(200) %29, ptr noundef nonnull align 8 dereferenceable(200) %180)
          to label %182 unwind label %237

182:                                              ; preds = %181
  %183 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %28) #12
  %184 = getelementptr inbounds [4096 x i8], ptr %25, i64 0, i64 0
  %185 = invoke noundef i32 @_ZN3tds9FileUtils12extract_pathEPKcPci(ptr noundef %183, ptr noundef %184, i32 noundef 4096)
          to label %186 unwind label %241

186:                                              ; preds = %182
  %187 = getelementptr inbounds [4096 x i8], ptr %25, i64 0, i64 0
  %188 = getelementptr inbounds %struct.OpenGLUrdfVisualizer, ptr %9, i32 0, i32 5
  %189 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %188, ptr noundef %187)
          to label %190 unwind label %241

190:                                              ; preds = %186
  invoke void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE15convert_visualsERNS0_14UrdfStructuresIS2_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(304) %9, ptr noundef nonnull align 8 dereferenceable(200) %29, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %191 unwind label %241

191:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #12
  store i32 1, ptr %30, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #12
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #12
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #12
  store i32 0, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #12
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %192

192:                                              ; preds = %401, %191
  %193 = load i32, ptr %34, align 4, !tbaa !5
  %194 = load i32, ptr %30, align 4, !tbaa !5
  %195 = icmp slt i32 %193, %194
  br i1 %195, label %245, label %196

196:                                              ; preds = %192
  store i32 5, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #12
  br label %409

197:                                              ; preds = %161
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %10, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %11, align 4
  br label %1421

201:                                              ; preds = %163
  %202 = landingpad { ptr, i32 }
          cleanup
  %203 = extractvalue { ptr, i32 } %202, 0
  store ptr %203, ptr %10, align 8
  %204 = extractvalue { ptr, i32 } %202, 1
  store i32 %204, ptr %11, align 4
  br label %1420

205:                                              ; preds = %166
  %206 = landingpad { ptr, i32 }
          cleanup
  %207 = extractvalue { ptr, i32 } %206, 0
  store ptr %207, ptr %10, align 8
  %208 = extractvalue { ptr, i32 } %206, 1
  store i32 %208, ptr %11, align 4
  br label %213

209:                                              ; preds = %169
  %210 = landingpad { ptr, i32 }
          cleanup
  %211 = extractvalue { ptr, i32 } %210, 0
  store ptr %211, ptr %10, align 8
  %212 = extractvalue { ptr, i32 } %210, 1
  store i32 %212, ptr %11, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #12
  br label %213

213:                                              ; preds = %209, %205
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #12
  br label %228

214:                                              ; preds = %171
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %10, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %11, align 4
  br label %227

218:                                              ; preds = %172
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %10, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %11, align 4
  br label %226

222:                                              ; preds = %174, %173
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %10, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #12
  br label %226

226:                                              ; preds = %222, %218
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #12
  br label %227

227:                                              ; preds = %226, %214
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #12
  br label %228

228:                                              ; preds = %227, %213
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #12
  br label %1420

229:                                              ; preds = %175
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %10, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #12
  br label %1419

233:                                              ; preds = %176
  %234 = landingpad { ptr, i32 }
          cleanup
  %235 = extractvalue { ptr, i32 } %234, 0
  store ptr %235, ptr %10, align 8
  %236 = extractvalue { ptr, i32 } %234, 1
  store i32 %236, ptr %11, align 4
  br label %1418

237:                                              ; preds = %181, %178
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %10, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %11, align 4
  br label %1417

241:                                              ; preds = %190, %186, %182
  %242 = landingpad { ptr, i32 }
          cleanup
  %243 = extractvalue { ptr, i32 } %242, 0
  store ptr %243, ptr %10, align 8
  %244 = extractvalue { ptr, i32 } %242, 1
  store i32 %244, ptr %11, align 4
  br label %1416

245:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #12
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %36, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %246 unwind label %266

246:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #12
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %37, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %247 unwind label %270

247:                                              ; preds = %246
  call void @llvm.lifetime.start.p0(i64 16, ptr %38) #12
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %38, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %248 unwind label %274

248:                                              ; preds = %247
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #12
  %249 = getelementptr inbounds %"struct.tds::UrdfStructures", ptr %29, i32 0, i32 1
  %250 = call noundef nonnull align 8 dereferenceable(220) ptr @_ZNSt6vectorIN3tds8UrdfLinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef 0) #12
  %251 = getelementptr inbounds %"struct.tds::UrdfLink", ptr %250, i32 0, i32 2
  %252 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZNSt6vectorIN3tds10UrdfVisualINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %251, i64 noundef 0) #12
  %253 = getelementptr inbounds %"struct.tds::UrdfVisual", ptr %252, i32 0, i32 7
  %254 = load i32, ptr %253, align 4, !tbaa !61
  store i32 %254, ptr %39, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #12
  %255 = getelementptr inbounds %struct.OpenGLUrdfVisualizer, ptr %9, i32 0, i32 1
  %256 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNSt3mapIiN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE18TinyVisualLinkInfoESt4lessIiESaISt4pairIKiS5_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48) %255, ptr noundef nonnull align 4 dereferenceable(4) %39)
          to label %257 unwind label %278

257:                                              ; preds = %248
  store ptr %256, ptr %40, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #12
  store i32 -1, ptr %41, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #12
  store i32 0, ptr %42, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #12
  store i32 0, ptr %43, align 4, !tbaa !5
  br label %258

258:                                              ; preds = %307, %257
  %259 = load i32, ptr %43, align 4, !tbaa !5
  %260 = sext i32 %259 to i64
  %261 = load ptr, ptr %40, align 8, !tbaa !9
  %262 = getelementptr inbounds %"struct.OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo", ptr %261, i32 0, i32 6
  %263 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %262) #12
  %264 = icmp ult i64 %260, %263
  br i1 %264, label %282, label %265

265:                                              ; preds = %258
  store i32 8, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #12
  br label %314

266:                                              ; preds = %245
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %10, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %11, align 4
  br label %408

270:                                              ; preds = %246
  %271 = landingpad { ptr, i32 }
          cleanup
  %272 = extractvalue { ptr, i32 } %271, 0
  store ptr %272, ptr %10, align 8
  %273 = extractvalue { ptr, i32 } %271, 1
  store i32 %273, ptr %11, align 4
  br label %407

274:                                              ; preds = %247
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %10, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %11, align 4
  br label %406

278:                                              ; preds = %248
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %10, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %11, align 4
  br label %405

282:                                              ; preds = %258
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #12
  %283 = load ptr, ptr %40, align 8, !tbaa !9
  %284 = getelementptr inbounds %"struct.OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo", ptr %283, i32 0, i32 6
  %285 = load i32, ptr %43, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %284, i64 noundef %286) #12
  %288 = load i32, ptr %287, align 4, !tbaa !5
  store i32 %288, ptr %44, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #12
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %45, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %289 unwind label %310

289:                                              ; preds = %282
  %290 = getelementptr inbounds %struct.OpenGLUrdfVisualizer, ptr %9, i32 0, i32 6
  %291 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %290, i32 0, i32 2
  %292 = load ptr, ptr %291, align 8, !tbaa !71
  %293 = load i32, ptr %44, align 4, !tbaa !5
  %294 = load ptr, ptr %292, align 8, !tbaa !74
  %295 = getelementptr inbounds ptr, ptr %294, i64 17
  %296 = load ptr, ptr %295, align 8
  %297 = invoke noundef i32 %296(ptr noundef nonnull align 8 dereferenceable(60) %292, i32 noundef %293, ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %45, ptr noundef nonnull align 4 dereferenceable(16) %38, float noundef 1.000000e+00, i1 noundef zeroext true)
          to label %298 unwind label %310

298:                                              ; preds = %289
  store i32 %297, ptr %41, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %299 unwind label %310

299:                                              ; preds = %298
  %300 = load i32, ptr %42, align 4, !tbaa !5
  %301 = add nsw i32 %300, 1
  store i32 %301, ptr %42, align 4, !tbaa !5
  %302 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %303 = load ptr, ptr %302, align 8, !tbaa !11
  %304 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE20visual_instance_uidsEv(ptr noundef nonnull align 8 dereferenceable(944) %303)
          to label %305 unwind label %310

305:                                              ; preds = %299
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %304, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %306 unwind label %310

306:                                              ; preds = %305
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  br label %307

307:                                              ; preds = %306
  %308 = load i32, ptr %43, align 4, !tbaa !5
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %43, align 4, !tbaa !5
  br label %258, !llvm.loop !76

310:                                              ; preds = %305, %299, %298, %289, %282
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %10, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #12
  br label %404

314:                                              ; preds = %265
  %315 = load i32, ptr %42, align 4, !tbaa !5
  store i32 %315, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #12
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %316

316:                                              ; preds = %390, %314
  %317 = load i32, ptr %46, align 4, !tbaa !5
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %320 = load ptr, ptr %319, align 8, !tbaa !11
  %321 = invoke noundef i64 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE9num_linksEv(ptr noundef nonnull align 8 dereferenceable(944) %320)
          to label %322 unwind label %325

322:                                              ; preds = %316
  %323 = icmp ult i64 %318, %321
  br i1 %323, label %329, label %324

324:                                              ; preds = %322
  store i32 11, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #12
  br label %400

325:                                              ; preds = %316
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %10, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %11, align 4
  br label %399

329:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #12
  %330 = getelementptr inbounds %"struct.tds::UrdfStructures", ptr %29, i32 0, i32 2
  %331 = load i32, ptr %46, align 4, !tbaa !5
  %332 = sext i32 %331 to i64
  %333 = call noundef nonnull align 8 dereferenceable(220) ptr @_ZNSt6vectorIN3tds8UrdfLinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %330, i64 noundef %332) #12
  %334 = getelementptr inbounds %"struct.tds::UrdfLink", ptr %333, i32 0, i32 2
  %335 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZNSt6vectorIN3tds10UrdfVisualINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %334, i64 noundef 0) #12
  %336 = getelementptr inbounds %"struct.tds::UrdfVisual", ptr %335, i32 0, i32 7
  %337 = load i32, ptr %336, align 4, !tbaa !61
  store i32 %337, ptr %47, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #12
  %338 = getelementptr inbounds %struct.OpenGLUrdfVisualizer, ptr %9, i32 0, i32 1
  %339 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNSt3mapIiN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE18TinyVisualLinkInfoESt4lessIiESaISt4pairIKiS5_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48) %338, ptr noundef nonnull align 4 dereferenceable(4) %47)
          to label %340 unwind label %349

340:                                              ; preds = %329
  store ptr %339, ptr %48, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #12
  store i32 -1, ptr %49, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #12
  store i32 0, ptr %50, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #12
  store i32 0, ptr %51, align 4, !tbaa !5
  br label %341

341:                                              ; preds = %381, %340
  %342 = load i32, ptr %51, align 4, !tbaa !5
  %343 = sext i32 %342 to i64
  %344 = load ptr, ptr %48, align 8, !tbaa !9
  %345 = getelementptr inbounds %"struct.OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo", ptr %344, i32 0, i32 6
  %346 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %345) #12
  %347 = icmp ult i64 %343, %346
  br i1 %347, label %353, label %348

348:                                              ; preds = %341
  store i32 14, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #12
  br label %388

349:                                              ; preds = %329
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %10, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %11, align 4
  br label %398

353:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #12
  %354 = load ptr, ptr %48, align 8, !tbaa !9
  %355 = getelementptr inbounds %"struct.OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo", ptr %354, i32 0, i32 6
  %356 = load i32, ptr %51, align 4, !tbaa !5
  %357 = sext i32 %356 to i64
  %358 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %357) #12
  %359 = load i32, ptr %358, align 4, !tbaa !5
  store i32 %359, ptr %52, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #12
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %53, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %360 unwind label %384

360:                                              ; preds = %353
  %361 = getelementptr inbounds %struct.OpenGLUrdfVisualizer, ptr %9, i32 0, i32 6
  %362 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %361, i32 0, i32 2
  %363 = load ptr, ptr %362, align 8, !tbaa !71
  %364 = load i32, ptr %52, align 4, !tbaa !5
  %365 = load ptr, ptr %363, align 8, !tbaa !74
  %366 = getelementptr inbounds ptr, ptr %365, i64 17
  %367 = load ptr, ptr %366, align 8
  %368 = invoke noundef i32 %367(ptr noundef nonnull align 8 dereferenceable(60) %363, i32 noundef %364, ptr noundef nonnull align 4 dereferenceable(16) %36, ptr noundef nonnull align 4 dereferenceable(16) %37, ptr noundef nonnull align 4 dereferenceable(16) %53, ptr noundef nonnull align 4 dereferenceable(16) %38, float noundef 1.000000e+00, i1 noundef zeroext true)
          to label %369 unwind label %384

369:                                              ; preds = %360
  store i32 %368, ptr %49, align 4, !tbaa !5
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 4 dereferenceable(4) %49)
          to label %370 unwind label %384

370:                                              ; preds = %369
  %371 = load i32, ptr %50, align 4, !tbaa !5
  %372 = add nsw i32 %371, 1
  store i32 %372, ptr %50, align 4, !tbaa !5
  %373 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %374 = load ptr, ptr %373, align 8, !tbaa !11
  %375 = getelementptr inbounds %"class.tds::MultiBody", ptr %374, i32 0, i32 23
  %376 = load i32, ptr %46, align 4, !tbaa !5
  %377 = sext i32 %376 to i64
  %378 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %375, i64 noundef %377) #12
  %379 = getelementptr inbounds %"struct.tds::Link", ptr %378, i32 0, i32 29
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %379, ptr noundef nonnull align 4 dereferenceable(4) %49)
          to label %380 unwind label %384

380:                                              ; preds = %370
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #12
  br label %381

381:                                              ; preds = %380
  %382 = load i32, ptr %51, align 4, !tbaa !5
  %383 = add nsw i32 %382, 1
  store i32 %383, ptr %51, align 4, !tbaa !5
  br label %341, !llvm.loop !77

384:                                              ; preds = %370, %369, %360, %353
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %10, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #12
  br label %397

388:                                              ; preds = %348
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 4 dereferenceable(4) %50)
          to label %389 unwind label %393

389:                                              ; preds = %388
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #12
  br label %390

390:                                              ; preds = %389
  %391 = load i32, ptr %46, align 4, !tbaa !5
  %392 = add nsw i32 %391, 1
  store i32 %392, ptr %46, align 4, !tbaa !5
  br label %316, !llvm.loop !78

393:                                              ; preds = %388
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %10, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %11, align 4
  br label %397

397:                                              ; preds = %393, %384
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #12
  br label %398

398:                                              ; preds = %397, %349
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #12
  br label %399

399:                                              ; preds = %398, %325
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #12
  br label %404

400:                                              ; preds = %324
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #12
  br label %401

401:                                              ; preds = %400
  %402 = load i32, ptr %34, align 4, !tbaa !5
  %403 = add nsw i32 %402, 1
  store i32 %403, ptr %34, align 4, !tbaa !5
  br label %192, !llvm.loop !79

404:                                              ; preds = %399, %310
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #12
  br label %405

405:                                              ; preds = %404, %278
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #12
  br label %406

406:                                              ; preds = %405, %274
  call void @llvm.lifetime.end.p0(i64 16, ptr %38) #12
  br label %407

407:                                              ; preds = %406, %270
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #12
  br label %408

408:                                              ; preds = %407, %266
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #12
  br label %1415

409:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #12
  %410 = load i32, ptr %30, align 4, !tbaa !5
  %411 = sext i32 %410 to i64
  call void @llvm.lifetime.start.p0(i64 24, ptr %55) #12
  %412 = invoke noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE10output_dimEv(ptr noundef nonnull align 8 dereferenceable(616) %12)
          to label %413 unwind label %425

413:                                              ; preds = %409
  %414 = sext i32 %412 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef %414, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %415 unwind label %429

415:                                              ; preds = %413
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #12
  call void @_ZNSaISt6vectorIdSaIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #12
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %411, ptr noundef nonnull align 8 dereferenceable(24) %55, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %416 unwind label %433

416:                                              ; preds = %415
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #12
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %58) #12
  %417 = load i32, ptr %30, align 4, !tbaa !5
  %418 = sext i32 %417 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #12
  call void @_ZNSaISt6vectorIdSaIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #12
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %418, ptr noundef nonnull align 1 dereferenceable(1) %59)
          to label %419 unwind label %439

419:                                              ; preds = %416
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #12
  store i32 0, ptr %60, align 4, !tbaa !5
  br label %420

420:                                              ; preds = %654, %419
  %421 = load i32, ptr %60, align 4, !tbaa !5
  %422 = load i32, ptr %30, align 4, !tbaa !5
  %423 = icmp slt i32 %421, %422
  br i1 %423, label %443, label %424

424:                                              ; preds = %420
  store i32 17, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #12
  br label %658

425:                                              ; preds = %409
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %10, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %11, align 4
  br label %438

429:                                              ; preds = %413
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %10, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %11, align 4
  br label %437

433:                                              ; preds = %415
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %10, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %11, align 4
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #12
  br label %437

437:                                              ; preds = %433, %429
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #12
  br label %438

438:                                              ; preds = %437, %425
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #12
  br label %1414

439:                                              ; preds = %416
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %10, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %11, align 4
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %59) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #12
  br label %1413

443:                                              ; preds = %420
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %62) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #12
  store double 0.000000e+00, ptr %63, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #12
  store double 0.000000e+00, ptr %64, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #12
  %444 = load i32, ptr %60, align 4, !tbaa !5
  %445 = sitofp i32 %444 to double
  %446 = fmul double %445, 3.000000e-01
  store double %446, ptr %65, align 8, !tbaa !58
  invoke void @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEC2ERKdS3_S3_(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 %447 unwind label %563

447:                                              ; preds = %443
  invoke void @_ZN3tds13EigenAlgebraTIdE19quat_from_euler_rpyERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE(ptr dead_on_unwind writable sret(%"class.Eigen::Quaternion") align 16 %61, ptr noundef nonnull align 8 dereferenceable(24) %62)
          to label %448 unwind label %563

448:                                              ; preds = %447
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %62) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %66) #12
  %449 = invoke noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE9input_dimEv(ptr noundef nonnull align 8 dereferenceable(616) %12)
          to label %450 unwind label %567

450:                                              ; preds = %448
  %451 = sext i32 %449 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #12
  store double 0.000000e+00, ptr %67, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKdRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %451, ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %452 unwind label %571

452:                                              ; preds = %450
  %453 = load i32, ptr %60, align 4, !tbaa !5
  %454 = sext i32 %453 to i64
  %455 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %454) #12
  %456 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIdSaIdEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %455, ptr noundef nonnull align 8 dereferenceable(24) %66) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #12
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %66) #12
  %457 = load i8, ptr @is_floating, align 1, !tbaa !59, !range !80, !noundef !81
  %458 = trunc i8 %457 to i1
  br i1 %458, label %459, label %612

459:                                              ; preds = %452
  %460 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %461 unwind label %576

461:                                              ; preds = %459
  %462 = load double, ptr %460, align 8, !tbaa !58
  %463 = load i32, ptr %60, align 4, !tbaa !5
  %464 = sext i32 %463 to i64
  %465 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %464) #12
  %466 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %465, i64 noundef 0) #12
  store double %462, ptr %466, align 8, !tbaa !58
  %467 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %468 unwind label %576

468:                                              ; preds = %461
  %469 = load double, ptr %467, align 8, !tbaa !58
  %470 = load i32, ptr %60, align 4, !tbaa !5
  %471 = sext i32 %470 to i64
  %472 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %471) #12
  %473 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %472, i64 noundef 1) #12
  store double %469, ptr %473, align 8, !tbaa !58
  %474 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %475 unwind label %576

475:                                              ; preds = %468
  %476 = load double, ptr %474, align 8, !tbaa !58
  %477 = load i32, ptr %60, align 4, !tbaa !5
  %478 = sext i32 %477 to i64
  %479 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %478) #12
  %480 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %479, i64 noundef 2) #12
  store double %476, ptr %480, align 8, !tbaa !58
  %481 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1wEv(ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %482 unwind label %576

482:                                              ; preds = %475
  %483 = load double, ptr %481, align 8, !tbaa !58
  %484 = load i32, ptr %60, align 4, !tbaa !5
  %485 = sext i32 %484 to i64
  %486 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %485) #12
  %487 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %486, i64 noundef 3) #12
  store double %483, ptr %487, align 8, !tbaa !58
  %488 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %489 unwind label %576

489:                                              ; preds = %482
  %490 = load double, ptr %488, align 8, !tbaa !58
  %491 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %492 = load ptr, ptr %491, align 8, !tbaa !11
  %493 = getelementptr inbounds %"class.tds::MultiBody", ptr %492, i32 0, i32 18
  %494 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %493, i64 noundef 0)
          to label %495 unwind label %576

495:                                              ; preds = %489
  store double %490, ptr %494, align 8, !tbaa !58
  %496 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %497 unwind label %576

497:                                              ; preds = %495
  %498 = load double, ptr %496, align 8, !tbaa !58
  %499 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %500 = load ptr, ptr %499, align 8, !tbaa !11
  %501 = getelementptr inbounds %"class.tds::MultiBody", ptr %500, i32 0, i32 18
  %502 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %501, i64 noundef 1)
          to label %503 unwind label %576

503:                                              ; preds = %497
  store double %498, ptr %502, align 8, !tbaa !58
  %504 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %505 unwind label %576

505:                                              ; preds = %503
  %506 = load double, ptr %504, align 8, !tbaa !58
  %507 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %508 = load ptr, ptr %507, align 8, !tbaa !11
  %509 = getelementptr inbounds %"class.tds::MultiBody", ptr %508, i32 0, i32 18
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %509, i64 noundef 2)
          to label %511 unwind label %576

511:                                              ; preds = %505
  store double %506, ptr %510, align 8, !tbaa !58
  %512 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1wEv(ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %513 unwind label %576

513:                                              ; preds = %511
  %514 = load double, ptr %512, align 8, !tbaa !58
  %515 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %516 = load ptr, ptr %515, align 8, !tbaa !11
  %517 = getelementptr inbounds %"class.tds::MultiBody", ptr %516, i32 0, i32 18
  %518 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %517, i64 noundef 3)
          to label %519 unwind label %576

519:                                              ; preds = %513
  store double %514, ptr %518, align 8, !tbaa !58
  %520 = load double, ptr @start_pos, align 16, !tbaa !58
  %521 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %522 = load ptr, ptr %521, align 8, !tbaa !11
  %523 = getelementptr inbounds %"class.tds::MultiBody", ptr %522, i32 0, i32 18
  %524 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %523, i64 noundef 4)
          to label %525 unwind label %576

525:                                              ; preds = %519
  store double %520, ptr %524, align 8, !tbaa !58
  %526 = load double, ptr getelementptr inbounds ([3 x double], ptr @start_pos, i64 0, i64 1), align 8, !tbaa !58
  %527 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %528 = load ptr, ptr %527, align 8, !tbaa !11
  %529 = getelementptr inbounds %"class.tds::MultiBody", ptr %528, i32 0, i32 18
  %530 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %529, i64 noundef 5)
          to label %531 unwind label %576

531:                                              ; preds = %525
  store double %526, ptr %530, align 8, !tbaa !58
  %532 = load double, ptr getelementptr inbounds ([3 x double], ptr @start_pos, i64 0, i64 2), align 16, !tbaa !58
  %533 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %534 = load ptr, ptr %533, align 8, !tbaa !11
  %535 = getelementptr inbounds %"class.tds::MultiBody", ptr %534, i32 0, i32 18
  %536 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %535, i64 noundef 6)
          to label %537 unwind label %576

537:                                              ; preds = %531
  store double %532, ptr %536, align 8, !tbaa !58
  %538 = load double, ptr @start_pos, align 16, !tbaa !58
  %539 = load i32, ptr %60, align 4, !tbaa !5
  %540 = sext i32 %539 to i64
  %541 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %540) #12
  %542 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %541, i64 noundef 4) #12
  store double %538, ptr %542, align 8, !tbaa !58
  %543 = load double, ptr getelementptr inbounds ([3 x double], ptr @start_pos, i64 0, i64 1), align 8, !tbaa !58
  %544 = load i32, ptr %60, align 4, !tbaa !5
  %545 = sext i32 %544 to i64
  %546 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %545) #12
  %547 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %546, i64 noundef 5) #12
  store double %543, ptr %547, align 8, !tbaa !58
  %548 = load double, ptr getelementptr inbounds ([3 x double], ptr @start_pos, i64 0, i64 2), align 16, !tbaa !58
  %549 = load i32, ptr %60, align 4, !tbaa !5
  %550 = sext i32 %549 to i64
  %551 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %550) #12
  %552 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %551, i64 noundef 6) #12
  store double %548, ptr %552, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #12
  store i32 0, ptr %69, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #12
  store i32 7, ptr %70, align 4, !tbaa !5
  br label %553

553:                                              ; preds = %608, %537
  %554 = load i32, ptr %70, align 4, !tbaa !5
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %557 = load ptr, ptr %556, align 8, !tbaa !11
  %558 = getelementptr inbounds %"class.tds::MultiBody", ptr %557, i32 0, i32 18
  %559 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %558)
          to label %560 unwind label %580

560:                                              ; preds = %553
  %561 = icmp slt i64 %555, %559
  br i1 %561, label %584, label %562

562:                                              ; preds = %560
  store i32 20, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #12
  br label %611

563:                                              ; preds = %447, %443
  %564 = landingpad { ptr, i32 }
          cleanup
  %565 = extractvalue { ptr, i32 } %564, 0
  store ptr %565, ptr %10, align 8
  %566 = extractvalue { ptr, i32 } %564, 1
  store i32 %566, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %62) #12
  br label %657

567:                                              ; preds = %448
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %10, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %11, align 4
  br label %575

571:                                              ; preds = %450
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %10, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %68) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #12
  br label %575

575:                                              ; preds = %571, %567
  call void @llvm.lifetime.end.p0(i64 24, ptr %66) #12
  br label %657

576:                                              ; preds = %531, %525, %519, %513, %511, %505, %503, %497, %495, %489, %482, %475, %468, %461, %459
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %10, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %11, align 4
  br label %657

580:                                              ; preds = %584, %553
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %10, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #12
  br label %657

584:                                              ; preds = %560
  %585 = load i32, ptr %69, align 4, !tbaa !5
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds [12 x double], ptr @initial_poses, i64 0, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !58
  %589 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %590 = load ptr, ptr %589, align 8, !tbaa !11
  %591 = getelementptr inbounds %"class.tds::MultiBody", ptr %590, i32 0, i32 18
  %592 = load i32, ptr %70, align 4, !tbaa !5
  %593 = sext i32 %592 to i64
  %594 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %591, i64 noundef %593)
          to label %595 unwind label %580

595:                                              ; preds = %584
  store double %588, ptr %594, align 8, !tbaa !58
  %596 = load i32, ptr %69, align 4, !tbaa !5
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds [12 x double], ptr @initial_poses, i64 0, i64 %597
  %599 = load double, ptr %598, align 8, !tbaa !58
  %600 = load i32, ptr %60, align 4, !tbaa !5
  %601 = sext i32 %600 to i64
  %602 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %601) #12
  %603 = load i32, ptr %70, align 4, !tbaa !5
  %604 = sext i32 %603 to i64
  %605 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %602, i64 noundef %604) #12
  store double %599, ptr %605, align 8, !tbaa !58
  %606 = load i32, ptr %69, align 4, !tbaa !5
  %607 = add nsw i32 %606, 1
  store i32 %607, ptr %69, align 4, !tbaa !5
  br label %608

608:                                              ; preds = %595
  %609 = load i32, ptr %70, align 4, !tbaa !5
  %610 = add nsw i32 %609, 1
  store i32 %610, ptr %70, align 4, !tbaa !5
  br label %553, !llvm.loop !82

611:                                              ; preds = %562
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #12
  br label %653

612:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #12
  store i32 0, ptr %71, align 4, !tbaa !5
  br label %613

613:                                              ; preds = %649, %612
  %614 = load i32, ptr %71, align 4, !tbaa !5
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %617 = load ptr, ptr %616, align 8, !tbaa !11
  %618 = getelementptr inbounds %"class.tds::MultiBody", ptr %617, i32 0, i32 18
  %619 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %618)
          to label %620 unwind label %623

620:                                              ; preds = %613
  %621 = icmp slt i64 %615, %619
  br i1 %621, label %627, label %622

622:                                              ; preds = %620
  store i32 23, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #12
  br label %652

623:                                              ; preds = %627, %613
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %10, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #12
  br label %657

627:                                              ; preds = %620
  %628 = load i32, ptr %71, align 4, !tbaa !5
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds [12 x double], ptr @initial_poses, i64 0, i64 %629
  %631 = load double, ptr %630, align 8, !tbaa !58
  %632 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %633 = load ptr, ptr %632, align 8, !tbaa !11
  %634 = getelementptr inbounds %"class.tds::MultiBody", ptr %633, i32 0, i32 18
  %635 = load i32, ptr %71, align 4, !tbaa !5
  %636 = sext i32 %635 to i64
  %637 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %634, i64 noundef %636)
          to label %638 unwind label %623

638:                                              ; preds = %627
  store double %631, ptr %637, align 8, !tbaa !58
  %639 = load i32, ptr %71, align 4, !tbaa !5
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds [12 x double], ptr @initial_poses, i64 0, i64 %640
  %642 = load double, ptr %641, align 8, !tbaa !58
  %643 = load i32, ptr %60, align 4, !tbaa !5
  %644 = sext i32 %643 to i64
  %645 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %644) #12
  %646 = load i32, ptr %71, align 4, !tbaa !5
  %647 = sext i32 %646 to i64
  %648 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %645, i64 noundef %647) #12
  store double %642, ptr %648, align 8, !tbaa !58
  br label %649

649:                                              ; preds = %638
  %650 = load i32, ptr %71, align 4, !tbaa !5
  %651 = add nsw i32 %650, 1
  store i32 %651, ptr %71, align 4, !tbaa !5
  br label %613, !llvm.loop !83

652:                                              ; preds = %622
  br label %653

653:                                              ; preds = %652, %611
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #12
  br label %654

654:                                              ; preds = %653
  %655 = load i32, ptr %60, align 4, !tbaa !5
  %656 = add nsw i32 %655, 1
  store i32 %656, ptr %60, align 4, !tbaa !5
  br label %420, !llvm.loop !84

657:                                              ; preds = %623, %580, %576, %575, %563
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #12
  br label %1412

658:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #12
  store i32 3, ptr %72, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #12
  store i32 7, ptr %73, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #12
  store i32 11, ptr %74, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #12
  store i32 15, ptr %75, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #12
  %659 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %660 = load ptr, ptr %659, align 8, !tbaa !11
  store ptr %660, ptr %76, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 88, ptr %77) #12
  invoke void @_ZN4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %77)
          to label %661 unwind label %727

661:                                              ; preds = %658
  %662 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 7
  store double 0.000000e+00, ptr %662, align 8, !tbaa !85
  %663 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 5
  store double 3.000000e-01, ptr %663, align 8, !tbaa !94
  %664 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %665 = load ptr, ptr %664, align 8, !tbaa !11
  invoke void @_ZN3tds18forward_kinematicsINS_13EigenAlgebraTIdEEEEvRNS_9MultiBodyIT_EE(ptr noundef nonnull align 8 dereferenceable(944) %665)
          to label %666 unwind label %731

666:                                              ; preds = %661
  %667 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 0
  %668 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %669 = load ptr, ptr %668, align 8, !tbaa !11
  %670 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944) %669)
          to label %671 unwind label %731

671:                                              ; preds = %666
  %672 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %670, i64 noundef 3) #12
  %673 = getelementptr inbounds %"struct.tds::Link", ptr %672, i32 0, i32 4
  %674 = getelementptr inbounds %"struct.tds::Transform", ptr %673, i32 0, i32 0
  %675 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE12emplace_backIJRKiRN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %667, ptr noundef nonnull align 4 dereferenceable(4) %72, ptr noundef nonnull align 8 dereferenceable(24) %674)
          to label %676 unwind label %731

676:                                              ; preds = %671
  %677 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 0
  %678 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %679 = load ptr, ptr %678, align 8, !tbaa !11
  %680 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944) %679)
          to label %681 unwind label %731

681:                                              ; preds = %676
  %682 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %680, i64 noundef 7) #12
  %683 = getelementptr inbounds %"struct.tds::Link", ptr %682, i32 0, i32 4
  %684 = getelementptr inbounds %"struct.tds::Transform", ptr %683, i32 0, i32 0
  %685 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE12emplace_backIJRKiRN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %677, ptr noundef nonnull align 4 dereferenceable(4) %73, ptr noundef nonnull align 8 dereferenceable(24) %684)
          to label %686 unwind label %731

686:                                              ; preds = %681
  %687 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 0
  %688 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %689 = load ptr, ptr %688, align 8, !tbaa !11
  %690 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944) %689)
          to label %691 unwind label %731

691:                                              ; preds = %686
  %692 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %690, i64 noundef 11) #12
  %693 = getelementptr inbounds %"struct.tds::Link", ptr %692, i32 0, i32 4
  %694 = getelementptr inbounds %"struct.tds::Transform", ptr %693, i32 0, i32 0
  %695 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE12emplace_backIJRKiRN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %687, ptr noundef nonnull align 4 dereferenceable(4) %74, ptr noundef nonnull align 8 dereferenceable(24) %694)
          to label %696 unwind label %731

696:                                              ; preds = %691
  %697 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 0
  %698 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %699 = load ptr, ptr %698, align 8, !tbaa !11
  %700 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944) %699)
          to label %701 unwind label %731

701:                                              ; preds = %696
  %702 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %700, i64 noundef 15) #12
  %703 = getelementptr inbounds %"struct.tds::Link", ptr %702, i32 0, i32 4
  %704 = getelementptr inbounds %"struct.tds::Transform", ptr %703, i32 0, i32 0
  %705 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE12emplace_backIJRKiRN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %697, ptr noundef nonnull align 4 dereferenceable(4) %75, ptr noundef nonnull align 8 dereferenceable(24) %704)
          to label %706 unwind label %731

706:                                              ; preds = %701
  %707 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %708 = load ptr, ptr %707, align 8, !tbaa !11
  %709 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE1qEv(ptr noundef nonnull align 8 dereferenceable(944) %708)
          to label %710 unwind label %731

710:                                              ; preds = %706
  %711 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 6
  %712 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %711, ptr noundef nonnull align 8 dereferenceable(16) %709)
          to label %713 unwind label %731

713:                                              ; preds = %710
  call void @llvm.lifetime.start.p0(i64 16, ptr %78) #12
  %714 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %715 = load ptr, ptr %714, align 8, !tbaa !11
  %716 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE1qEv(ptr noundef nonnull align 8 dereferenceable(944) %715)
          to label %717 unwind label %735

717:                                              ; preds = %713
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %78, ptr noundef nonnull align 8 dereferenceable(16) %716)
          to label %718 unwind label %735

718:                                              ; preds = %717
  call void @llvm.lifetime.start.p0(i64 24, ptr %79) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef 4, ptr noundef nonnull align 1 dereferenceable(1) %80)
          to label %719 unwind label %739

719:                                              ; preds = %718
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %81) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %81, i64 noundef 4, ptr noundef nonnull align 1 dereferenceable(1) %82)
          to label %720 unwind label %743

720:                                              ; preds = %719
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %83) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %84) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef 4, ptr noundef nonnull align 1 dereferenceable(1) %84)
          to label %721 unwind label %747

721:                                              ; preds = %720
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %85) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef 4, ptr noundef nonnull align 1 dereferenceable(1) %86)
          to label %722 unwind label %751

722:                                              ; preds = %721
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #12
  store i32 0, ptr %87, align 4, !tbaa !5
  br label %723

723:                                              ; preds = %800, %722
  %724 = load i32, ptr %87, align 4, !tbaa !5
  %725 = icmp slt i32 %724, 4
  br i1 %725, label %755, label %726

726:                                              ; preds = %723
  store i32 26, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #12
  br label %807

727:                                              ; preds = %658
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %10, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %11, align 4
  br label %1411

731:                                              ; preds = %710, %706, %701, %696, %691, %686, %681, %676, %671, %666, %661
  %732 = landingpad { ptr, i32 }
          cleanup
  %733 = extractvalue { ptr, i32 } %732, 0
  store ptr %733, ptr %10, align 8
  %734 = extractvalue { ptr, i32 } %732, 1
  store i32 %734, ptr %11, align 4
  br label %1410

735:                                              ; preds = %717, %713
  %736 = landingpad { ptr, i32 }
          cleanup
  %737 = extractvalue { ptr, i32 } %736, 0
  store ptr %737, ptr %10, align 8
  %738 = extractvalue { ptr, i32 } %736, 1
  store i32 %738, ptr %11, align 4
  br label %1409

739:                                              ; preds = %718
  %740 = landingpad { ptr, i32 }
          cleanup
  %741 = extractvalue { ptr, i32 } %740, 0
  store ptr %741, ptr %10, align 8
  %742 = extractvalue { ptr, i32 } %740, 1
  store i32 %742, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %80) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #12
  br label %1408

743:                                              ; preds = %719
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %10, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %82) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #12
  br label %1407

747:                                              ; preds = %720
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %10, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %84) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %84) #12
  br label %1406

751:                                              ; preds = %721
  %752 = landingpad { ptr, i32 }
          cleanup
  %753 = extractvalue { ptr, i32 } %752, 0
  store ptr %753, ptr %10, align 8
  %754 = extractvalue { ptr, i32 } %752, 1
  store i32 %754, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %86) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #12
  br label %1405

755:                                              ; preds = %723
  %756 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 0
  %757 = load i32, ptr %87, align 4, !tbaa !5
  %758 = sext i32 %757 to i64
  %759 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %756, i64 noundef %758) #12
  %760 = getelementptr inbounds %"struct.TINY::TinyIKTarget", ptr %759, i32 0, i32 1
  %761 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %760)
          to label %762 unwind label %803

762:                                              ; preds = %755
  %763 = load double, ptr %761, align 8, !tbaa !58
  %764 = load i32, ptr %87, align 4, !tbaa !5
  %765 = sext i32 %764 to i64
  %766 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %765) #12
  store double %763, ptr %766, align 8, !tbaa !58
  %767 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 0
  %768 = load i32, ptr %87, align 4, !tbaa !5
  %769 = sext i32 %768 to i64
  %770 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %767, i64 noundef %769) #12
  %771 = getelementptr inbounds %"struct.TINY::TinyIKTarget", ptr %770, i32 0, i32 1
  %772 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %771)
          to label %773 unwind label %803

773:                                              ; preds = %762
  %774 = load double, ptr %772, align 8, !tbaa !58
  %775 = load i32, ptr %87, align 4, !tbaa !5
  %776 = sext i32 %775 to i64
  %777 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %81, i64 noundef %776) #12
  store double %774, ptr %777, align 8, !tbaa !58
  %778 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 0
  %779 = load i32, ptr %87, align 4, !tbaa !5
  %780 = sext i32 %779 to i64
  %781 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %778, i64 noundef %780) #12
  %782 = getelementptr inbounds %"struct.TINY::TinyIKTarget", ptr %781, i32 0, i32 1
  %783 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %782)
          to label %784 unwind label %803

784:                                              ; preds = %773
  %785 = load double, ptr %783, align 8, !tbaa !58
  %786 = load i32, ptr %87, align 4, !tbaa !5
  %787 = sext i32 %786 to i64
  %788 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %787) #12
  store double %785, ptr %788, align 8, !tbaa !58
  %789 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 0
  %790 = load i32, ptr %87, align 4, !tbaa !5
  %791 = sext i32 %790 to i64
  %792 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %789, i64 noundef %791) #12
  %793 = getelementptr inbounds %"struct.TINY::TinyIKTarget", ptr %792, i32 0, i32 1
  %794 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %793)
          to label %795 unwind label %803

795:                                              ; preds = %784
  %796 = load double, ptr %794, align 8, !tbaa !58
  %797 = load i32, ptr %87, align 4, !tbaa !5
  %798 = sext i32 %797 to i64
  %799 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef %798) #12
  store double %796, ptr %799, align 8, !tbaa !58
  br label %800

800:                                              ; preds = %795
  %801 = load i32, ptr %87, align 4, !tbaa !5
  %802 = add nsw i32 %801, 1
  store i32 %802, ptr %87, align 4, !tbaa !5
  br label %723, !llvm.loop !95

803:                                              ; preds = %784, %773, %762, %755
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %10, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #12
  br label %1404

807:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #12
  store double 0.000000e+00, ptr %88, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 32, ptr %89) #12
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %89, ptr align 16 @__const.main.phases, i64 32, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %90) #12
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #12
  br label %808

808:                                              ; preds = %892, %807
  %809 = load double, ptr %88, align 8, !tbaa !58
  %810 = fcmp olt double %809, 0x401921FAFC8B007A
  br i1 %810, label %811, label %901

811:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 4, ptr %91) #12
  store i32 0, ptr %91, align 4, !tbaa !5
  br label %812

812:                                              ; preds = %867, %811
  %813 = load i32, ptr %91, align 4, !tbaa !5
  %814 = icmp slt i32 %813, 4
  br i1 %814, label %816, label %815

815:                                              ; preds = %812
  store i32 31, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #12
  br label %879

816:                                              ; preds = %812
  %817 = load double, ptr %88, align 8, !tbaa !58
  %818 = load i32, ptr %91, align 4, !tbaa !5
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds [4 x double], ptr %89, i64 0, i64 %819
  %821 = load double, ptr %820, align 8, !tbaa !58
  %822 = fadd double %817, %821
  %823 = call double @sin(double noundef %822) #12
  %824 = call double @llvm.fmuladd.f64(double 1.500000e-01, double %823, double 5.000000e-02)
  %825 = load i32, ptr %91, align 4, !tbaa !5
  %826 = sext i32 %825 to i64
  %827 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef %826) #12
  store double %824, ptr %827, align 8, !tbaa !58
  %828 = load i32, ptr %91, align 4, !tbaa !5
  %829 = sext i32 %828 to i64
  %830 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef %829) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #12
  store double 5.000000e-02, ptr %92, align 8, !tbaa !58
  %831 = invoke noundef double @_ZN3tds13EigenAlgebraTIdE3maxIdEEDaRKT_S5_(ptr noundef nonnull align 8 dereferenceable(8) %830, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %832 unwind label %870

832:                                              ; preds = %816
  %833 = load i32, ptr %91, align 4, !tbaa !5
  %834 = sext i32 %833 to i64
  %835 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef %834) #12
  store double %831, ptr %835, align 8, !tbaa !58
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #12
  %836 = load i32, ptr %91, align 4, !tbaa !5
  %837 = sext i32 %836 to i64
  %838 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef %837) #12
  %839 = load double, ptr %838, align 8, !tbaa !58
  %840 = load double, ptr %88, align 8, !tbaa !58
  %841 = load i32, ptr %91, align 4, !tbaa !5
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds [4 x double], ptr %89, i64 0, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !58
  %845 = fadd double %840, %844
  %846 = call double @cos(double noundef %845) #12
  %847 = call double @llvm.fmuladd.f64(double -4.000000e-02, double %846, double %839)
  %848 = load i32, ptr %91, align 4, !tbaa !5
  %849 = sext i32 %848 to i64
  %850 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %81, i64 noundef %849) #12
  store double %847, ptr %850, align 8, !tbaa !58
  call void @llvm.lifetime.start.p0(i64 24, ptr %93) #12
  %851 = load i32, ptr %91, align 4, !tbaa !5
  %852 = sext i32 %851 to i64
  %853 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %81, i64 noundef %852) #12
  %854 = load i32, ptr %91, align 4, !tbaa !5
  %855 = sext i32 %854 to i64
  %856 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %855) #12
  %857 = load i32, ptr %91, align 4, !tbaa !5
  %858 = sext i32 %857 to i64
  %859 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef %858) #12
  invoke void @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEC2ERKdS3_S3_(ptr noundef nonnull align 8 dereferenceable(24) %93, ptr noundef nonnull align 8 dereferenceable(8) %853, ptr noundef nonnull align 8 dereferenceable(8) %856, ptr noundef nonnull align 8 dereferenceable(8) %859)
          to label %860 unwind label %874

860:                                              ; preds = %832
  %861 = getelementptr inbounds %"struct.TINY::TinyInverseKinematics", ptr %77, i32 0, i32 0
  %862 = load i32, ptr %91, align 4, !tbaa !5
  %863 = sext i32 %862 to i64
  %864 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %861, i64 noundef %863) #12
  %865 = getelementptr inbounds %"struct.TINY::TinyIKTarget", ptr %864, i32 0, i32 1
  %866 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %865, ptr noundef nonnull align 8 dereferenceable(24) %93) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %93) #12
  br label %867

867:                                              ; preds = %860
  %868 = load i32, ptr %91, align 4, !tbaa !5
  %869 = add nsw i32 %868, 1
  store i32 %869, ptr %91, align 4, !tbaa !5
  br label %812, !llvm.loop !96

870:                                              ; preds = %816
  %871 = landingpad { ptr, i32 }
          cleanup
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %10, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #12
  br label %878

874:                                              ; preds = %832
  %875 = landingpad { ptr, i32 }
          cleanup
  %876 = extractvalue { ptr, i32 } %875, 0
  store ptr %876, ptr %10, align 8
  %877 = extractvalue { ptr, i32 } %875, 1
  store i32 %877, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %93) #12
  br label %878

878:                                              ; preds = %874, %870
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #12
  br label %1403

879:                                              ; preds = %815
  %880 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %881 = load ptr, ptr %880, align 8, !tbaa !11
  %882 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %883 = load ptr, ptr %882, align 8, !tbaa !11
  %884 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE1qEv(ptr noundef nonnull align 8 dereferenceable(944) %883)
          to label %885 unwind label %897

885:                                              ; preds = %879
  %886 = invoke { i64, double } @_ZNK4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EE7computeERKNS1_9MultiBodyIS3_EERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERSC_(ptr noundef nonnull align 8 dereferenceable(88) %77, ptr noundef nonnull align 8 dereferenceable(944) %881, ptr noundef nonnull align 8 dereferenceable(16) %884, ptr noundef nonnull align 8 dereferenceable(16) @all_joint_angles2)
          to label %887 unwind label %897

887:                                              ; preds = %885
  %888 = getelementptr inbounds { i64, double }, ptr %94, i32 0, i32 0
  %889 = extractvalue { i64, double } %886, 0
  store i64 %889, ptr %888, align 8
  %890 = getelementptr inbounds { i64, double }, ptr %94, i32 0, i32 1
  %891 = extractvalue { i64, double } %886, 1
  store double %891, ptr %890, align 8
  invoke void @_ZNSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr noundef nonnull align 8 dereferenceable(16) @all_joint_angles2)
          to label %892 unwind label %897

892:                                              ; preds = %887
  %893 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 5
  %894 = load double, ptr %893, align 8, !tbaa !97
  %895 = load double, ptr %88, align 8, !tbaa !58
  %896 = call double @llvm.fmuladd.f64(double 3.000000e+01, double %894, double %895)
  store double %896, ptr %88, align 8, !tbaa !58
  br label %808, !llvm.loop !98

897:                                              ; preds = %887, %885, %879
  %898 = landingpad { ptr, i32 }
          cleanup
  %899 = extractvalue { ptr, i32 } %898, 0
  store ptr %899, ptr %10, align 8
  %900 = extractvalue { ptr, i32 } %898, 1
  store i32 %900, ptr %11, align 4
  br label %1403

901:                                              ; preds = %808
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #12
  store i32 0, ptr %95, align 4, !tbaa !5
  br label %902

902:                                              ; preds = %1397, %901
  %903 = getelementptr inbounds %struct.OpenGLUrdfVisualizer, ptr %9, i32 0, i32 6
  %904 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %903, i32 0, i32 1
  %905 = load ptr, ptr %904, align 8, !tbaa !99
  %906 = load ptr, ptr %905, align 8, !tbaa !74
  %907 = getelementptr inbounds ptr, ptr %906, i64 7
  %908 = load ptr, ptr %907, align 8
  %909 = invoke noundef zeroext i1 %908(ptr noundef nonnull align 8 dereferenceable(8) %905)
          to label %910 unwind label %925

910:                                              ; preds = %902
  %911 = xor i1 %909, true
  br i1 %911, label %912, label %1398

912:                                              ; preds = %910
  %913 = load i32, ptr %95, align 4, !tbaa !5
  %914 = sext i32 %913 to i64
  %915 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %90, i64 noundef %914) #12
  %916 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) @all_joint_angles2, ptr noundef nonnull align 8 dereferenceable(16) %915)
          to label %917 unwind label %925

917:                                              ; preds = %912
  %918 = load i32, ptr %95, align 4, !tbaa !5
  %919 = add nsw i32 %918, 1
  store i32 %919, ptr %95, align 4, !tbaa !5
  %920 = load i32, ptr %95, align 4, !tbaa !5
  %921 = sext i32 %920 to i64
  %922 = call noundef i64 @_ZNKSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %90) #12
  %923 = icmp uge i64 %921, %922
  br i1 %923, label %924, label %929

924:                                              ; preds = %917
  store i32 0, ptr %95, align 4, !tbaa !5
  br label %929

925:                                              ; preds = %1398, %1384, %912, %902
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %10, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %11, align 4
  br label %1402

929:                                              ; preds = %924, %917
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #12
  store i32 0, ptr %96, align 4, !tbaa !5
  br label %930

930:                                              ; preds = %976, %929
  %931 = load i32, ptr %96, align 4, !tbaa !5
  %932 = load i32, ptr %30, align 4, !tbaa !5
  %933 = icmp slt i32 %931, %932
  br i1 %933, label %935, label %934

934:                                              ; preds = %930
  store i32 36, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #12
  br label %980

935:                                              ; preds = %930
  call void @llvm.lifetime.start.p0(i64 24, ptr %97) #12
  %936 = load i32, ptr %96, align 4, !tbaa !5
  %937 = sext i32 %936 to i64
  %938 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %937) #12
  invoke void @_ZN17LaikagoSimulationIN3tds13EigenAlgebraTIdEEEclERKSt6vectorIdSaIdEE(ptr dead_on_unwind writable sret(%"class.std::vector.99") align 8 %97, ptr noundef nonnull align 8 dereferenceable(616) %12, ptr noundef nonnull align 8 dereferenceable(24) %938)
          to label %939 unwind label %950

939:                                              ; preds = %935
  %940 = load i32, ptr %96, align 4, !tbaa !5
  %941 = sext i32 %940 to i64
  %942 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %941) #12
  %943 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIdSaIdEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %942, ptr noundef nonnull align 8 dereferenceable(24) %97) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %97) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #12
  store i32 0, ptr %98, align 4, !tbaa !5
  br label %944

944:                                              ; preds = %972, %939
  %945 = load i32, ptr %98, align 4, !tbaa !5
  %946 = invoke noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE9input_dimEv(ptr noundef nonnull align 8 dereferenceable(616) %12)
          to label %947 unwind label %954

947:                                              ; preds = %944
  %948 = icmp slt i32 %945, %946
  br i1 %948, label %958, label %949

949:                                              ; preds = %947
  store i32 39, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #12
  br label %975

950:                                              ; preds = %935
  %951 = landingpad { ptr, i32 }
          cleanup
  %952 = extractvalue { ptr, i32 } %951, 0
  store ptr %952, ptr %10, align 8
  %953 = extractvalue { ptr, i32 } %951, 1
  store i32 %953, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %97) #12
  br label %979

954:                                              ; preds = %944
  %955 = landingpad { ptr, i32 }
          cleanup
  %956 = extractvalue { ptr, i32 } %955, 0
  store ptr %956, ptr %10, align 8
  %957 = extractvalue { ptr, i32 } %955, 1
  store i32 %957, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #12
  br label %979

958:                                              ; preds = %947
  %959 = load i32, ptr %96, align 4, !tbaa !5
  %960 = sext i32 %959 to i64
  %961 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %960) #12
  %962 = load i32, ptr %98, align 4, !tbaa !5
  %963 = sext i32 %962 to i64
  %964 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %961, i64 noundef %963) #12
  %965 = load double, ptr %964, align 8, !tbaa !58
  %966 = load i32, ptr %96, align 4, !tbaa !5
  %967 = sext i32 %966 to i64
  %968 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %967) #12
  %969 = load i32, ptr %98, align 4, !tbaa !5
  %970 = sext i32 %969 to i64
  %971 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %968, i64 noundef %970) #12
  store double %965, ptr %971, align 8, !tbaa !58
  br label %972

972:                                              ; preds = %958
  %973 = load i32, ptr %98, align 4, !tbaa !5
  %974 = add nsw i32 %973, 1
  store i32 %974, ptr %98, align 4, !tbaa !5
  br label %944, !llvm.loop !100

975:                                              ; preds = %949
  br label %976

976:                                              ; preds = %975
  %977 = load i32, ptr %96, align 4, !tbaa !5
  %978 = add nsw i32 %977, 1
  store i32 %978, ptr %96, align 4, !tbaa !5
  br label %930, !llvm.loop !101

979:                                              ; preds = %954, %950
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #12
  br label %1402

980:                                              ; preds = %934
  %981 = load i32, ptr %6, align 4, !tbaa !5
  %982 = add nsw i32 %981, 1
  store i32 %982, ptr %6, align 4, !tbaa !5
  %983 = load i32, ptr %7, align 4, !tbaa !5
  %984 = add nsw i32 %983, 1
  store i32 %984, ptr %7, align 4, !tbaa !5
  %985 = load i32, ptr %6, align 4, !tbaa !5
  %986 = load i32, ptr @frameskip_gfx_sync, align 4, !tbaa !5
  %987 = icmp sgt i32 %985, %986
  br i1 %987, label %988, label %1397

988:                                              ; preds = %980
  store i32 0, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #12
  store i8 0, ptr %99, align 1, !tbaa !59
  %989 = load i8, ptr %99, align 1, !tbaa !59, !range !80, !noundef !81
  %990 = trunc i8 %989 to i1
  br i1 %990, label %991, label %992

991:                                              ; preds = %988
  br label %1384

992:                                              ; preds = %988
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #12
  store float 2.000000e+00, ptr %100, align 4, !tbaa !102
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #12
  %993 = load i32, ptr %30, align 4, !tbaa !5
  %994 = sitofp i32 %993 to double
  %995 = call double @sqrt(double noundef %994) #12
  %996 = fptosi double %995 to i32
  store i32 %996, ptr %101, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #12
  store i32 0, ptr %102, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %103) #12
  %997 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %998 = load ptr, ptr %997, align 8, !tbaa !11
  %999 = invoke noundef i32 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE3dofEv(ptr noundef nonnull align 8 dereferenceable(944) %998)
          to label %1000 unwind label %1011

1000:                                             ; preds = %992
  %1001 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %1002 = load ptr, ptr %1001, align 8, !tbaa !11
  %1003 = invoke noundef i32 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE6dof_qdEv(ptr noundef nonnull align 8 dereferenceable(944) %1002)
          to label %1004 unwind label %1011

1004:                                             ; preds = %1000
  %1005 = add nsw i32 %999, %1003
  store i32 %1005, ptr %103, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %104) #12
  store i32 0, ptr %104, align 4, !tbaa !5
  br label %1006

1006:                                             ; preds = %1378, %1004
  %1007 = load i32, ptr %104, align 4, !tbaa !5
  %1008 = load i32, ptr %30, align 4, !tbaa !5
  %1009 = icmp slt i32 %1007, %1008
  br i1 %1009, label %1015, label %1010

1010:                                             ; preds = %1006
  store i32 42, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #12
  br label %1382

1011:                                             ; preds = %1000, %992
  %1012 = landingpad { ptr, i32 }
          cleanup
  %1013 = extractvalue { ptr, i32 } %1012, 0
  store ptr %1013, ptr %10, align 8
  %1014 = extractvalue { ptr, i32 } %1012, 1
  store i32 %1014, ptr %11, align 4
  br label %1383

1015:                                             ; preds = %1006
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #12
  store i32 0, ptr %105, align 4, !tbaa !5
  br label %1016

1016:                                             ; preds = %1203, %1015
  %1017 = load i32, ptr %105, align 4, !tbaa !5
  %1018 = load i32, ptr %33, align 4, !tbaa !5
  %1019 = icmp slt i32 %1017, %1018
  br i1 %1019, label %1021, label %1020

1020:                                             ; preds = %1016
  store i32 45, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #12
  br label %1206

1021:                                             ; preds = %1016
  call void @llvm.lifetime.start.p0(i64 4, ptr %106) #12
  %1022 = load i32, ptr %102, align 4, !tbaa !5
  %1023 = add nsw i32 %1022, 1
  store i32 %1023, ptr %102, align 4, !tbaa !5
  %1024 = sext i32 %1022 to i64
  %1025 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %1024) #12
  %1026 = load i32, ptr %1025, align 4, !tbaa !5
  store i32 %1026, ptr %106, align 4, !tbaa !5
  %1027 = load i32, ptr %106, align 4, !tbaa !5
  %1028 = icmp sge i32 %1027, 0
  br i1 %1028, label %1029, label %1202

1029:                                             ; preds = %1021
  call void @llvm.lifetime.start.p0(i64 16, ptr %107) #12
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %107, i32 noundef 0)
          to label %1030 unwind label %1080

1030:                                             ; preds = %1029
  call void @llvm.lifetime.start.p0(i64 16, ptr %108) #12
  %1031 = load i8, ptr @is_floating, align 1, !tbaa !59, !range !80, !noundef !81
  %1032 = trunc i8 %1031 to i1
  br i1 %1032, label %1033, label %1092

1033:                                             ; preds = %1030
  call void @llvm.lifetime.start.p0(i64 16, ptr %109) #12
  %1034 = load i32, ptr %104, align 4, !tbaa !5
  %1035 = sext i32 %1034 to i64
  %1036 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1035) #12
  %1037 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1036, i64 noundef 4) #12
  %1038 = load double, ptr %1037, align 8, !tbaa !58
  %1039 = fptrunc double %1038 to float
  %1040 = load i32, ptr %104, align 4, !tbaa !5
  %1041 = sext i32 %1040 to i64
  %1042 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1041) #12
  %1043 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1042, i64 noundef 5) #12
  %1044 = load double, ptr %1043, align 8, !tbaa !58
  %1045 = fptrunc double %1044 to float
  %1046 = load i32, ptr %104, align 4, !tbaa !5
  %1047 = sext i32 %1046 to i64
  %1048 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1047) #12
  %1049 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1048, i64 noundef 6) #12
  %1050 = load double, ptr %1049, align 8, !tbaa !58
  %1051 = fptrunc double %1050 to float
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %109, float noundef %1039, float noundef %1045, float noundef %1051)
          to label %1052 unwind label %1084

1052:                                             ; preds = %1033
  %1053 = invoke noundef nonnull align 4 dereferenceable(16) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEaSERKS2_(ptr noundef nonnull align 4 dereferenceable(16) %107, ptr noundef nonnull align 4 dereferenceable(16) %109)
          to label %1054 unwind label %1084

1054:                                             ; preds = %1052
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %110) #12
  %1055 = load i32, ptr %104, align 4, !tbaa !5
  %1056 = sext i32 %1055 to i64
  %1057 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1056) #12
  %1058 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1057, i64 noundef 0) #12
  %1059 = load double, ptr %1058, align 8, !tbaa !58
  %1060 = fptrunc double %1059 to float
  %1061 = load i32, ptr %104, align 4, !tbaa !5
  %1062 = sext i32 %1061 to i64
  %1063 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1062) #12
  %1064 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1063, i64 noundef 1) #12
  %1065 = load double, ptr %1064, align 8, !tbaa !58
  %1066 = fptrunc double %1065 to float
  %1067 = load i32, ptr %104, align 4, !tbaa !5
  %1068 = sext i32 %1067 to i64
  %1069 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1068) #12
  %1070 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1069, i64 noundef 2) #12
  %1071 = load double, ptr %1070, align 8, !tbaa !58
  %1072 = fptrunc double %1071 to float
  %1073 = load i32, ptr %104, align 4, !tbaa !5
  %1074 = sext i32 %1073 to i64
  %1075 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1074) #12
  %1076 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1075, i64 noundef 3) #12
  %1077 = load double, ptr %1076, align 8, !tbaa !58
  %1078 = fptrunc double %1077 to float
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %110, float noundef %1060, float noundef %1066, float noundef %1072, float noundef %1078)
          to label %1079 unwind label %1088

1079:                                             ; preds = %1054
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %108, ptr align 4 %110, i64 16, i1 false), !tbaa.struct !103
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #12
  br label %1155

1080:                                             ; preds = %1029
  %1081 = landingpad { ptr, i32 }
          cleanup
  %1082 = extractvalue { ptr, i32 } %1081, 0
  store ptr %1082, ptr %10, align 8
  %1083 = extractvalue { ptr, i32 } %1081, 1
  store i32 %1083, ptr %11, align 4
  br label %1201

1084:                                             ; preds = %1052, %1033
  %1085 = landingpad { ptr, i32 }
          cleanup
  %1086 = extractvalue { ptr, i32 } %1085, 0
  store ptr %1086, ptr %10, align 8
  %1087 = extractvalue { ptr, i32 } %1085, 1
  store i32 %1087, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #12
  br label %1200

1088:                                             ; preds = %1054
  %1089 = landingpad { ptr, i32 }
          cleanup
  %1090 = extractvalue { ptr, i32 } %1089, 0
  store ptr %1090, ptr %10, align 8
  %1091 = extractvalue { ptr, i32 } %1089, 1
  store i32 %1091, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #12
  br label %1200

1092:                                             ; preds = %1030
  call void @llvm.lifetime.start.p0(i64 24, ptr %111) #12
  %1093 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %1094 = load ptr, ptr %1093, align 8, !tbaa !11
  %1095 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE12base_X_worldEv(ptr noundef nonnull align 8 dereferenceable(944) %1094)
          to label %1096 unwind label %1137

1096:                                             ; preds = %1092
  %1097 = getelementptr inbounds %"struct.tds::Transform", ptr %1095, i32 0, i32 0
  invoke void @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %111, ptr noundef nonnull align 8 dereferenceable(24) %1097)
          to label %1098 unwind label %1137

1098:                                             ; preds = %1096
  call void @llvm.lifetime.start.p0(i64 32, ptr %112) #12
  %1099 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %1100 = load ptr, ptr %1099, align 8, !tbaa !11
  %1101 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE12base_X_worldEv(ptr noundef nonnull align 8 dereferenceable(944) %1100)
          to label %1102 unwind label %1141

1102:                                             ; preds = %1098
  %1103 = getelementptr inbounds %"struct.tds::Transform", ptr %1101, i32 0, i32 1
  invoke void @_ZN3tds13EigenAlgebraTIdE14matrix_to_quatERKN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE(ptr dead_on_unwind writable sret(%"class.Eigen::Quaternion") align 16 %112, ptr noundef nonnull align 8 dereferenceable(72) %1103)
          to label %1104 unwind label %1141

1104:                                             ; preds = %1102
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #12
  %1105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %111)
          to label %1106 unwind label %1145

1106:                                             ; preds = %1104
  %1107 = load double, ptr %1105, align 8, !tbaa !58
  %1108 = fptrunc double %1107 to float
  %1109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %111)
          to label %1110 unwind label %1145

1110:                                             ; preds = %1106
  %1111 = load double, ptr %1109, align 8, !tbaa !58
  %1112 = fptrunc double %1111 to float
  %1113 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %111)
          to label %1114 unwind label %1145

1114:                                             ; preds = %1110
  %1115 = load double, ptr %1113, align 8, !tbaa !58
  %1116 = fptrunc double %1115 to float
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %113, float noundef %1108, float noundef %1112, float noundef %1116)
          to label %1117 unwind label %1145

1117:                                             ; preds = %1114
  %1118 = invoke noundef nonnull align 4 dereferenceable(16) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEaSERKS2_(ptr noundef nonnull align 4 dereferenceable(16) %107, ptr noundef nonnull align 4 dereferenceable(16) %113)
          to label %1119 unwind label %1145

1119:                                             ; preds = %1117
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr %114) #12
  %1120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %112)
          to label %1121 unwind label %1149

1121:                                             ; preds = %1119
  %1122 = load double, ptr %1120, align 8, !tbaa !58
  %1123 = fptrunc double %1122 to float
  %1124 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %112)
          to label %1125 unwind label %1149

1125:                                             ; preds = %1121
  %1126 = load double, ptr %1124, align 8, !tbaa !58
  %1127 = fptrunc double %1126 to float
  %1128 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %112)
          to label %1129 unwind label %1149

1129:                                             ; preds = %1125
  %1130 = load double, ptr %1128, align 8, !tbaa !58
  %1131 = fptrunc double %1130 to float
  %1132 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1wEv(ptr noundef nonnull align 1 dereferenceable(1) %112)
          to label %1133 unwind label %1149

1133:                                             ; preds = %1129
  %1134 = load double, ptr %1132, align 8, !tbaa !58
  %1135 = fptrunc double %1134 to float
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %114, float noundef %1123, float noundef %1127, float noundef %1131, float noundef %1135)
          to label %1136 unwind label %1149

1136:                                             ; preds = %1133
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %108, ptr align 4 %114, i64 16, i1 false), !tbaa.struct !103
  call void @llvm.lifetime.end.p0(i64 16, ptr %114) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %112) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #12
  br label %1155

1137:                                             ; preds = %1096, %1092
  %1138 = landingpad { ptr, i32 }
          cleanup
  %1139 = extractvalue { ptr, i32 } %1138, 0
  store ptr %1139, ptr %10, align 8
  %1140 = extractvalue { ptr, i32 } %1138, 1
  store i32 %1140, ptr %11, align 4
  br label %1154

1141:                                             ; preds = %1102, %1098
  %1142 = landingpad { ptr, i32 }
          cleanup
  %1143 = extractvalue { ptr, i32 } %1142, 0
  store ptr %1143, ptr %10, align 8
  %1144 = extractvalue { ptr, i32 } %1142, 1
  store i32 %1144, ptr %11, align 4
  br label %1153

1145:                                             ; preds = %1117, %1114, %1110, %1106, %1104
  %1146 = landingpad { ptr, i32 }
          cleanup
  %1147 = extractvalue { ptr, i32 } %1146, 0
  store ptr %1147, ptr %10, align 8
  %1148 = extractvalue { ptr, i32 } %1146, 1
  store i32 %1148, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #12
  br label %1153

1149:                                             ; preds = %1133, %1129, %1125, %1121, %1119
  %1150 = landingpad { ptr, i32 }
          cleanup
  %1151 = extractvalue { ptr, i32 } %1150, 0
  store ptr %1151, ptr %10, align 8
  %1152 = extractvalue { ptr, i32 } %1150, 1
  store i32 %1152, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %114) #12
  br label %1153

1153:                                             ; preds = %1149, %1145, %1141
  call void @llvm.lifetime.end.p0(i64 32, ptr %112) #12
  br label %1154

1154:                                             ; preds = %1153, %1137
  call void @llvm.lifetime.end.p0(i64 24, ptr %111) #12
  br label %1200

1155:                                             ; preds = %1136, %1079
  %1156 = load float, ptr %100, align 4, !tbaa !102
  %1157 = load i32, ptr %104, align 4, !tbaa !5
  %1158 = load i32, ptr %101, align 4, !tbaa !5
  %1159 = srem i32 %1157, %1158
  %1160 = sitofp i32 %1159 to float
  %1161 = load i32, ptr %101, align 4, !tbaa !5
  %1162 = sitofp i32 %1161 to float
  %1163 = load float, ptr %100, align 4, !tbaa !102
  %1164 = fmul float %1162, %1163
  %1165 = fdiv float %1164, 2.000000e+00
  %1166 = fneg float %1165
  %1167 = call float @llvm.fmuladd.f32(float %1156, float %1160, float %1166)
  %1168 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %107, i32 noundef 0)
          to label %1169 unwind label %1196

1169:                                             ; preds = %1155
  %1170 = load float, ptr %1168, align 4, !tbaa !102
  %1171 = fadd float %1170, %1167
  store float %1171, ptr %1168, align 4, !tbaa !102
  %1172 = load float, ptr %100, align 4, !tbaa !102
  %1173 = load i32, ptr %104, align 4, !tbaa !5
  %1174 = load i32, ptr %101, align 4, !tbaa !5
  %1175 = sdiv i32 %1173, %1174
  %1176 = sitofp i32 %1175 to float
  %1177 = load i32, ptr %101, align 4, !tbaa !5
  %1178 = sitofp i32 %1177 to float
  %1179 = load float, ptr %100, align 4, !tbaa !102
  %1180 = fmul float %1178, %1179
  %1181 = fdiv float %1180, 2.000000e+00
  %1182 = fneg float %1181
  %1183 = call float @llvm.fmuladd.f32(float %1172, float %1176, float %1182)
  %1184 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %107, i32 noundef 1)
          to label %1185 unwind label %1196

1185:                                             ; preds = %1169
  %1186 = load float, ptr %1184, align 4, !tbaa !102
  %1187 = fadd float %1186, %1183
  store float %1187, ptr %1184, align 4, !tbaa !102
  %1188 = getelementptr inbounds %struct.OpenGLUrdfVisualizer, ptr %9, i32 0, i32 6
  %1189 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %1188, i32 0, i32 2
  %1190 = load ptr, ptr %1189, align 8, !tbaa !71
  %1191 = load i32, ptr %106, align 4, !tbaa !5
  %1192 = load ptr, ptr %1190, align 8, !tbaa !74
  %1193 = getelementptr inbounds ptr, ptr %1192, i64 19
  %1194 = load ptr, ptr %1193, align 8
  invoke void %1194(ptr noundef nonnull align 8 dereferenceable(60) %1190, ptr noundef nonnull align 4 dereferenceable(16) %107, ptr noundef nonnull align 4 dereferenceable(16) %108, i32 noundef %1191)
          to label %1195 unwind label %1196

1195:                                             ; preds = %1185
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #12
  br label %1202

1196:                                             ; preds = %1185, %1169, %1155
  %1197 = landingpad { ptr, i32 }
          cleanup
  %1198 = extractvalue { ptr, i32 } %1197, 0
  store ptr %1198, ptr %10, align 8
  %1199 = extractvalue { ptr, i32 } %1197, 1
  store i32 %1199, ptr %11, align 4
  br label %1200

1200:                                             ; preds = %1196, %1154, %1088, %1084
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #12
  br label %1201

1201:                                             ; preds = %1200, %1080
  call void @llvm.lifetime.end.p0(i64 16, ptr %107) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #12
  br label %1381

1202:                                             ; preds = %1195, %1021
  call void @llvm.lifetime.end.p0(i64 4, ptr %106) #12
  br label %1203

1203:                                             ; preds = %1202
  %1204 = load i32, ptr %105, align 4, !tbaa !5
  %1205 = add nsw i32 %1204, 1
  store i32 %1205, ptr %105, align 4, !tbaa !5
  br label %1016, !llvm.loop !104

1206:                                             ; preds = %1020
  call void @llvm.lifetime.start.p0(i64 4, ptr %115) #12
  store i32 0, ptr %115, align 4, !tbaa !5
  br label %1207

1207:                                             ; preds = %1374, %1206
  %1208 = load i32, ptr %115, align 4, !tbaa !5
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 3
  %1211 = load ptr, ptr %1210, align 8, !tbaa !11
  %1212 = getelementptr inbounds %"class.tds::MultiBody", ptr %1211, i32 0, i32 23
  %1213 = call noundef i64 @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1212) #12
  %1214 = icmp ult i64 %1209, %1213
  br i1 %1214, label %1216, label %1215

1215:                                             ; preds = %1207
  store i32 48, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #12
  br label %1377

1216:                                             ; preds = %1207
  call void @llvm.lifetime.start.p0(i64 4, ptr %116) #12
  store i32 0, ptr %116, align 4, !tbaa !5
  br label %1217

1217:                                             ; preds = %1370, %1216
  %1218 = load i32, ptr %116, align 4, !tbaa !5
  %1219 = load i32, ptr %115, align 4, !tbaa !5
  %1220 = sext i32 %1219 to i64
  %1221 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %1220) #12
  %1222 = load i32, ptr %1221, align 4, !tbaa !5
  %1223 = icmp slt i32 %1218, %1222
  br i1 %1223, label %1225, label %1224

1224:                                             ; preds = %1217
  store i32 51, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #12
  br label %1373

1225:                                             ; preds = %1217
  call void @llvm.lifetime.start.p0(i64 4, ptr %117) #12
  %1226 = load i32, ptr %102, align 4, !tbaa !5
  %1227 = add nsw i32 %1226, 1
  store i32 %1227, ptr %102, align 4, !tbaa !5
  %1228 = sext i32 %1226 to i64
  %1229 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef %1228) #12
  %1230 = load i32, ptr %1229, align 4, !tbaa !5
  store i32 %1230, ptr %117, align 4, !tbaa !5
  %1231 = load i32, ptr %117, align 4, !tbaa !5
  %1232 = icmp sge i32 %1231, 0
  br i1 %1232, label %1233, label %1369

1233:                                             ; preds = %1225
  call void @llvm.lifetime.start.p0(i64 16, ptr %118) #12
  %1234 = load i32, ptr %104, align 4, !tbaa !5
  %1235 = sext i32 %1234 to i64
  %1236 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1235) #12
  %1237 = load i32, ptr %103, align 4, !tbaa !5
  %1238 = load i32, ptr %115, align 4, !tbaa !5
  %1239 = mul nsw i32 %1238, 7
  %1240 = add nsw i32 %1237, %1239
  %1241 = add nsw i32 %1240, 0
  %1242 = sext i32 %1241 to i64
  %1243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1236, i64 noundef %1242) #12
  %1244 = load double, ptr %1243, align 8, !tbaa !58
  %1245 = fptrunc double %1244 to float
  %1246 = load i32, ptr %104, align 4, !tbaa !5
  %1247 = sext i32 %1246 to i64
  %1248 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1247) #12
  %1249 = load i32, ptr %103, align 4, !tbaa !5
  %1250 = load i32, ptr %115, align 4, !tbaa !5
  %1251 = mul nsw i32 %1250, 7
  %1252 = add nsw i32 %1249, %1251
  %1253 = add nsw i32 %1252, 1
  %1254 = sext i32 %1253 to i64
  %1255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1248, i64 noundef %1254) #12
  %1256 = load double, ptr %1255, align 8, !tbaa !58
  %1257 = fptrunc double %1256 to float
  %1258 = load i32, ptr %104, align 4, !tbaa !5
  %1259 = sext i32 %1258 to i64
  %1260 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1259) #12
  %1261 = load i32, ptr %103, align 4, !tbaa !5
  %1262 = load i32, ptr %115, align 4, !tbaa !5
  %1263 = mul nsw i32 %1262, 7
  %1264 = add nsw i32 %1261, %1263
  %1265 = add nsw i32 %1264, 2
  %1266 = sext i32 %1265 to i64
  %1267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1260, i64 noundef %1266) #12
  %1268 = load double, ptr %1267, align 8, !tbaa !58
  %1269 = fptrunc double %1268 to float
  invoke void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %118, float noundef %1245, float noundef %1257, float noundef %1269)
          to label %1270 unwind label %1360

1270:                                             ; preds = %1233
  call void @llvm.lifetime.start.p0(i64 16, ptr %119) #12
  %1271 = load i32, ptr %104, align 4, !tbaa !5
  %1272 = sext i32 %1271 to i64
  %1273 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1272) #12
  %1274 = load i32, ptr %103, align 4, !tbaa !5
  %1275 = load i32, ptr %115, align 4, !tbaa !5
  %1276 = mul nsw i32 %1275, 7
  %1277 = add nsw i32 %1274, %1276
  %1278 = add nsw i32 %1277, 3
  %1279 = sext i32 %1278 to i64
  %1280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1273, i64 noundef %1279) #12
  %1281 = load double, ptr %1280, align 8, !tbaa !58
  %1282 = fptrunc double %1281 to float
  %1283 = load i32, ptr %104, align 4, !tbaa !5
  %1284 = sext i32 %1283 to i64
  %1285 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1284) #12
  %1286 = load i32, ptr %103, align 4, !tbaa !5
  %1287 = load i32, ptr %115, align 4, !tbaa !5
  %1288 = mul nsw i32 %1287, 7
  %1289 = add nsw i32 %1286, %1288
  %1290 = add nsw i32 %1289, 4
  %1291 = sext i32 %1290 to i64
  %1292 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1285, i64 noundef %1291) #12
  %1293 = load double, ptr %1292, align 8, !tbaa !58
  %1294 = fptrunc double %1293 to float
  %1295 = load i32, ptr %104, align 4, !tbaa !5
  %1296 = sext i32 %1295 to i64
  %1297 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1296) #12
  %1298 = load i32, ptr %103, align 4, !tbaa !5
  %1299 = load i32, ptr %115, align 4, !tbaa !5
  %1300 = mul nsw i32 %1299, 7
  %1301 = add nsw i32 %1298, %1300
  %1302 = add nsw i32 %1301, 5
  %1303 = sext i32 %1302 to i64
  %1304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1297, i64 noundef %1303) #12
  %1305 = load double, ptr %1304, align 8, !tbaa !58
  %1306 = fptrunc double %1305 to float
  %1307 = load i32, ptr %104, align 4, !tbaa !5
  %1308 = sext i32 %1307 to i64
  %1309 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %1308) #12
  %1310 = load i32, ptr %103, align 4, !tbaa !5
  %1311 = load i32, ptr %115, align 4, !tbaa !5
  %1312 = mul nsw i32 %1311, 7
  %1313 = add nsw i32 %1310, %1312
  %1314 = add nsw i32 %1313, 6
  %1315 = sext i32 %1314 to i64
  %1316 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1309, i64 noundef %1315) #12
  %1317 = load double, ptr %1316, align 8, !tbaa !58
  %1318 = fptrunc double %1317 to float
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %119, float noundef %1282, float noundef %1294, float noundef %1306, float noundef %1318)
          to label %1319 unwind label %1364

1319:                                             ; preds = %1270
  %1320 = load float, ptr %100, align 4, !tbaa !102
  %1321 = load i32, ptr %104, align 4, !tbaa !5
  %1322 = load i32, ptr %101, align 4, !tbaa !5
  %1323 = srem i32 %1321, %1322
  %1324 = sitofp i32 %1323 to float
  %1325 = load i32, ptr %101, align 4, !tbaa !5
  %1326 = sitofp i32 %1325 to float
  %1327 = load float, ptr %100, align 4, !tbaa !102
  %1328 = fmul float %1326, %1327
  %1329 = fdiv float %1328, 2.000000e+00
  %1330 = fneg float %1329
  %1331 = call float @llvm.fmuladd.f32(float %1320, float %1324, float %1330)
  %1332 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %118, i32 noundef 0)
          to label %1333 unwind label %1364

1333:                                             ; preds = %1319
  %1334 = load float, ptr %1332, align 4, !tbaa !102
  %1335 = fadd float %1334, %1331
  store float %1335, ptr %1332, align 4, !tbaa !102
  %1336 = load float, ptr %100, align 4, !tbaa !102
  %1337 = load i32, ptr %104, align 4, !tbaa !5
  %1338 = load i32, ptr %101, align 4, !tbaa !5
  %1339 = sdiv i32 %1337, %1338
  %1340 = sitofp i32 %1339 to float
  %1341 = load i32, ptr %101, align 4, !tbaa !5
  %1342 = sitofp i32 %1341 to float
  %1343 = load float, ptr %100, align 4, !tbaa !102
  %1344 = fmul float %1342, %1343
  %1345 = fdiv float %1344, 2.000000e+00
  %1346 = fneg float %1345
  %1347 = call float @llvm.fmuladd.f32(float %1336, float %1340, float %1346)
  %1348 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %118, i32 noundef 1)
          to label %1349 unwind label %1364

1349:                                             ; preds = %1333
  %1350 = load float, ptr %1348, align 4, !tbaa !102
  %1351 = fadd float %1350, %1347
  store float %1351, ptr %1348, align 4, !tbaa !102
  %1352 = getelementptr inbounds %struct.OpenGLUrdfVisualizer, ptr %9, i32 0, i32 6
  %1353 = getelementptr inbounds %struct.TinyCommonGraphicsApp, ptr %1352, i32 0, i32 2
  %1354 = load ptr, ptr %1353, align 8, !tbaa !71
  %1355 = load i32, ptr %117, align 4, !tbaa !5
  %1356 = load ptr, ptr %1354, align 8, !tbaa !74
  %1357 = getelementptr inbounds ptr, ptr %1356, i64 19
  %1358 = load ptr, ptr %1357, align 8
  invoke void %1358(ptr noundef nonnull align 8 dereferenceable(60) %1354, ptr noundef nonnull align 4 dereferenceable(16) %118, ptr noundef nonnull align 4 dereferenceable(16) %119, i32 noundef %1355)
          to label %1359 unwind label %1364

1359:                                             ; preds = %1349
  call void @llvm.lifetime.end.p0(i64 16, ptr %119) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #12
  br label %1369

1360:                                             ; preds = %1233
  %1361 = landingpad { ptr, i32 }
          cleanup
  %1362 = extractvalue { ptr, i32 } %1361, 0
  store ptr %1362, ptr %10, align 8
  %1363 = extractvalue { ptr, i32 } %1361, 1
  store i32 %1363, ptr %11, align 4
  br label %1368

1364:                                             ; preds = %1349, %1333, %1319, %1270
  %1365 = landingpad { ptr, i32 }
          cleanup
  %1366 = extractvalue { ptr, i32 } %1365, 0
  store ptr %1366, ptr %10, align 8
  %1367 = extractvalue { ptr, i32 } %1365, 1
  store i32 %1367, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %119) #12
  br label %1368

1368:                                             ; preds = %1364, %1360
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %116) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %115) #12
  br label %1381

1369:                                             ; preds = %1359, %1225
  call void @llvm.lifetime.end.p0(i64 4, ptr %117) #12
  br label %1370

1370:                                             ; preds = %1369
  %1371 = load i32, ptr %116, align 4, !tbaa !5
  %1372 = add nsw i32 %1371, 1
  store i32 %1372, ptr %116, align 4, !tbaa !5
  br label %1217, !llvm.loop !105

1373:                                             ; preds = %1224
  br label %1374

1374:                                             ; preds = %1373
  %1375 = load i32, ptr %115, align 4, !tbaa !5
  %1376 = add nsw i32 %1375, 1
  store i32 %1376, ptr %115, align 4, !tbaa !5
  br label %1207, !llvm.loop !106

1377:                                             ; preds = %1215
  br label %1378

1378:                                             ; preds = %1377
  %1379 = load i32, ptr %104, align 4, !tbaa !5
  %1380 = add nsw i32 %1379, 1
  store i32 %1380, ptr %104, align 4, !tbaa !5
  br label %1006, !llvm.loop !107

1381:                                             ; preds = %1368, %1201
  call void @llvm.lifetime.end.p0(i64 4, ptr %104) #12
  br label %1383

1382:                                             ; preds = %1010
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #12
  br label %1384

1383:                                             ; preds = %1381, %1011
  call void @llvm.lifetime.end.p0(i64 4, ptr %103) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #12
  br label %1402

1384:                                             ; preds = %1382, %991
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #12
  invoke void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE6renderEv(ptr noundef nonnull align 8 dereferenceable(304) %9)
          to label %1385 unwind label %925

1385:                                             ; preds = %1384
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #12
  %1386 = load i32, ptr @frameskip_gfx_sync, align 4, !tbaa !5
  %1387 = sitofp i32 %1386 to double
  %1388 = getelementptr inbounds %struct.LaikagoSimulation, ptr %12, i32 0, i32 5
  %1389 = load double, ptr %1388, align 8, !tbaa !97
  %1390 = fmul double %1387, %1389
  store double %1390, ptr %121, align 8, !tbaa !58
  invoke void @_ZNSt6chrono8durationIdSt5ratioILl1ELl1EEEC2IdvEERKT_(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull align 8 dereferenceable(8) %121)
          to label %1391 unwind label %1393

1391:                                             ; preds = %1385
  invoke void @_ZNSt11this_thread9sleep_forIdSt5ratioILl1ELl1EEEEvRKNSt6chrono8durationIT_T0_EE(ptr noundef nonnull align 8 dereferenceable(8) %120)
          to label %1392 unwind label %1393

1392:                                             ; preds = %1391
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #12
  br label %1397

1393:                                             ; preds = %1391, %1385
  %1394 = landingpad { ptr, i32 }
          cleanup
  %1395 = extractvalue { ptr, i32 } %1394, 0
  store ptr %1395, ptr %10, align 8
  %1396 = extractvalue { ptr, i32 } %1394, 1
  store i32 %1396, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #12
  br label %1402

1397:                                             ; preds = %1392, %980
  br label %902, !llvm.loop !108

1398:                                             ; preds = %910
  %1399 = invoke i32 (ptr, ...) @printf(ptr noundef @.str.23)
          to label %1400 unwind label %925

1400:                                             ; preds = %1398
  store i32 0, ptr %3, align 4
  store i32 1, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #12
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %90) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %85) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %85) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #12
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #12
  call void @_ZN4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EED2Ev(ptr noundef nonnull align 8 dereferenceable(88) %77) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #12
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #12
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #12
  call void @_ZN3tds14UrdfStructuresINS_13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(200) %29) #12
  call void @llvm.lifetime.end.p0(i64 200, ptr %29) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #12
  call void @_ZN17LaikagoSimulationIN3tds13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(616) %12) #12
  call void @llvm.lifetime.end.p0(i64 616, ptr %12) #12
  call void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(304) %9) #12
  call void @llvm.lifetime.end.p0(i64 304, ptr %9) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #12
  %1401 = load i32, ptr %3, align 4
  ret i32 %1401

1402:                                             ; preds = %1393, %1383, %979, %925
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #12
  br label %1403

1403:                                             ; preds = %1402, %897, %878
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %90) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %89) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #12
  br label %1404

1404:                                             ; preds = %1403, %803
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %85) #12
  br label %1405

1405:                                             ; preds = %1404, %751
  call void @llvm.lifetime.end.p0(i64 24, ptr %85) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #12
  br label %1406

1406:                                             ; preds = %1405, %747
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #12
  br label %1407

1407:                                             ; preds = %1406, %743
  call void @llvm.lifetime.end.p0(i64 24, ptr %81) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #12
  br label %1408

1408:                                             ; preds = %1407, %739
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #12
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %78) #12
  br label %1409

1409:                                             ; preds = %1408, %735
  call void @llvm.lifetime.end.p0(i64 16, ptr %78) #12
  br label %1410

1410:                                             ; preds = %1409, %731
  call void @_ZN4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EED2Ev(ptr noundef nonnull align 8 dereferenceable(88) %77) #12
  br label %1411

1411:                                             ; preds = %1410, %727
  call void @llvm.lifetime.end.p0(i64 88, ptr %77) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #12
  br label %1412

1412:                                             ; preds = %1411, %657
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #12
  br label %1413

1413:                                             ; preds = %1412, %439
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #12
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #12
  br label %1414

1414:                                             ; preds = %1413, %438
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #12
  br label %1415

1415:                                             ; preds = %1414, %408
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #12
  br label %1416

1416:                                             ; preds = %1415, %241
  call void @_ZN3tds14UrdfStructuresINS_13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(200) %29) #12
  br label %1417

1417:                                             ; preds = %1416, %237
  call void @llvm.lifetime.end.p0(i64 200, ptr %29) #12
  br label %1418

1418:                                             ; preds = %1417, %233
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #12
  br label %1419

1419:                                             ; preds = %1418, %229
  call void @llvm.lifetime.end.p0(i64 32, ptr %26) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #12
  br label %1420

1420:                                             ; preds = %1419, %228, %201
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #12
  br label %1421

1421:                                             ; preds = %1420, %197
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #12
  br label %1422

1422:                                             ; preds = %1421, %141
  call void @_ZN17LaikagoSimulationIN3tds13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(616) %12) #12
  br label %1423

1423:                                             ; preds = %1422, %137
  call void @llvm.lifetime.end.p0(i64 616, ptr %12) #12
  br label %1424

1424:                                             ; preds = %1423, %133
  call void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(304) %9) #12
  call void @llvm.lifetime.end.p0(i64 304, ptr %9) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #12
  br label %1425

1425:                                             ; preds = %1424
  %1426 = load ptr, ptr %10, align 8
  %1427 = load i32, ptr %11, align 4
  %1428 = insertvalue { ptr, i32 } poison, ptr %1426, 0
  %1429 = insertvalue { ptr, i32 } %1428, i32 %1427, 1
  resume { ptr, i32 } %1429
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEEC2EiiPKc(ptr noundef nonnull align 8 dereferenceable(304), i32 noundef, i32 noundef, ptr noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE9num_linksEv(ptr noundef nonnull align 8 dereferenceable(944)) #5 align 2

declare i32 @printf(ptr noundef, ...) #6

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944)) #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE9input_dimEv(ptr noundef nonnull align 8 dereferenceable(616)) #2 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3tds9FileUtils9find_fileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS6_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, float noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE8load_objERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKN4TINY11TinyVector3IfNSC_10FloatUtilsEEERKNSC_14TinyQuaternionIfSE_EESH_RSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(200) ptr @_ZN3tds9UrdfCacheINS_13EigenAlgebraTIdEEE8retrieveERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3tds9FileUtils12extract_pathEPKcPci(ptr noundef, ptr noundef, i32 noundef) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE15convert_visualsERNS0_14UrdfStructuresIS2_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE20visual_instance_uidsEv(ptr noundef nonnull align 8 dereferenceable(944)) #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE10output_dimEv(ptr noundef nonnull align 8 dereferenceable(616)) #2 align 2

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN3tds13EigenAlgebraTIdE19quat_from_euler_rpyERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Quaternion") align 16, ptr noundef nonnull align 8 dereferenceable(24)) #8 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3tds18forward_kinematicsINS_13EigenAlgebraTIdEEEEvRNS_9MultiBodyIT_EE(ptr noundef nonnull align 8 dereferenceable(944)) #2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE1qEv(ptr noundef nonnull align 8 dereferenceable(944)) #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare double @sin(double noundef) #10

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #11

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef double @_ZN3tds13EigenAlgebraTIdE3maxIdEEDaRKT_S5_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #8 align 2

; Function Attrs: nounwind
declare double @cos(double noundef) #10

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, double } @_ZNK4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EE7computeERKNS1_9MultiBodyIS3_EERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERSC_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17LaikagoSimulationIN3tds13EigenAlgebraTIdEEEclERKSt6vectorIdSaIdEE(ptr dead_on_unwind noalias writable sret(%"class.std::vector.99") align 8, ptr noundef nonnull align 8 dereferenceable(616), ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #10

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE3dofEv(ptr noundef nonnull align 8 dereferenceable(944)) #5 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE6dof_qdEv(ptr noundef nonnull align 8 dereferenceable(944)) #5 align 2

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE12base_X_worldEv(ptr noundef nonnull align 8 dereferenceable(944)) #5 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN3tds13EigenAlgebraTIdE14matrix_to_quatERKN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Quaternion") align 16, ptr noundef nonnull align 8 dereferenceable(72)) #8 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #11

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE6renderEv(ptr noundef nonnull align 8 dereferenceable(304)) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt11this_thread9sleep_forIdSt5ratioILl1ELl1EEEEvRKNSt6chrono8durationIT_T0_EE(ptr noundef nonnull align 8 dereferenceable(8)) #7

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !10, i64 592}
!12 = !{!"_ZTS17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE", !13, i64 0, !23, i64 48, !25, i64 80, !10, i64 592, !6, i64 600, !51, i64 608}
!13 = !{!"_ZTSN3tds9UrdfCacheINS_13EigenAlgebraTIdEEEE", !14, i64 0}
!14 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3tds14UrdfStructuresINS6_13EigenAlgebraTIdEEEESt4lessIS5_ESaISt4pairIKS5_SA_EEE", !15, i64 0}
!15 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3tds14UrdfStructuresINS8_13EigenAlgebraTIdEEEEESt10_Select1stISD_ESt4lessIS5_ESaISD_EE", !16, i64 0}
!16 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3tds14UrdfStructuresINS8_13EigenAlgebraTIdEEEEESt10_Select1stISD_ESt4lessIS5_ESaISD_EE13_Rb_tree_implISH_Lb1EEE", !17, i64 0, !19, i64 8}
!17 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !18, i64 0}
!18 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!19 = !{!"_ZTSSt15_Rb_tree_header", !20, i64 0, !22, i64 32}
!20 = !{!"_ZTSSt18_Rb_tree_node_base", !21, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!21 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !24, i64 0, !22, i64 8, !7, i64 16}
!24 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!25 = !{!"_ZTSN3tds5WorldINS_13EigenAlgebraTIdEEEE", !26, i64 8, !30, i64 32, !34, i64 56, !38, i64 80, !42, i64 104, !10, i64 392, !10, i64 400, !10, i64 408, !43, i64 416, !47, i64 440, !6, i64 464, !51, i64 472, !51, i64 480, !52, i64 488}
!26 = !{!"_ZTSSt6vectorIPN3tds9RigidBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIPN3tds9RigidBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIPN3tds9RigidBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIPN3tds9RigidBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!30 = !{!"_ZTSSt6vectorIPN3tds9MultiBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIPN3tds9MultiBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIPN3tds9MultiBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIPN3tds9MultiBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!34 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !35, i64 0}
!35 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !36, i64 0}
!36 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !37, i64 0}
!37 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !7, i64 0}
!38 = !{!"_ZTSSt6vectorIPN3tds8GeometryINS0_13EigenAlgebraTIdEEEESaIS5_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIPN3tds8GeometryINS0_13EigenAlgebraTIdEEEESaIS5_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIPN3tds8GeometryINS0_13EigenAlgebraTIdEEEESaIS5_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIPN3tds8GeometryINS0_13EigenAlgebraTIdEEEESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!42 = !{!"_ZTSN3tds19CollisionDispatcherINS_13EigenAlgebraTIdEEEE", !7, i64 0}
!43 = !{!"_ZTSSt6vectorIN3tds21RigidBodyContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseIN3tds21RigidBodyContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN3tds21RigidBodyContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIN3tds21RigidBodyContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!47 = !{!"_ZTSSt6vectorIS_IN3tds21MultiBodyContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EESaIS6_EE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseISt6vectorIN3tds21MultiBodyContactPointINS1_13EigenAlgebraTIdEEEESaIS5_EESaIS7_EE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN3tds21MultiBodyContactPointINS1_13EigenAlgebraTIdEEEESaIS5_EESaIS7_EE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN3tds21MultiBodyContactPointINS1_13EigenAlgebraTIdEEEESaIS5_EESaIS7_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!51 = !{!"double", !7, i64 0}
!52 = !{!"_ZTSSt6vectorIN3tds12ContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseIN3tds12ContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3tds12ContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN3tds12ContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!56 = distinct !{!56, !57}
!57 = !{!"llvm.loop.mustprogress"}
!58 = !{!51, !51, i64 0}
!59 = !{!60, !60, i64 0}
!60 = !{!"bool", !7, i64 0}
!61 = !{!62, !6, i64 332}
!62 = !{!"_ZTSN3tds10UrdfVisualINS_13EigenAlgebraTIdEEEE", !34, i64 0, !34, i64 24, !63, i64 48, !23, i64 208, !70, i64 240, !23, i64 296, !60, i64 328, !6, i64 332}
!63 = !{!"_ZTSN3tds12UrdfGeometryINS_13EigenAlgebraTIdEEEE", !6, i64 0, !64, i64 8, !65, i64 16, !66, i64 32, !67, i64 56, !68, i64 112, !69, i64 144}
!64 = !{!"_ZTSN3tds19UrdfCollisionSphereINS_13EigenAlgebraTIdEEEE", !51, i64 0}
!65 = !{!"_ZTSN3tds20UrdfCollisionCapsuleINS_13EigenAlgebraTIdEEEE", !51, i64 0, !51, i64 8}
!66 = !{!"_ZTSN3tds16UrdfCollisionBoxINS_13EigenAlgebraTIdEEEE", !34, i64 0}
!67 = !{!"_ZTSN3tds17UrdfCollisionMeshINS_13EigenAlgebraTIdEEEE", !23, i64 0, !34, i64 32}
!68 = !{!"_ZTSN3tds18UrdfCollisionPlaneINS_13EigenAlgebraTIdEEEE", !34, i64 0, !51, i64 24}
!69 = !{!"_ZTSN3tds21UrdfCollisionCylinderINS_13EigenAlgebraTIdEEEE", !51, i64 0, !51, i64 8}
!70 = !{!"_ZTSN3tds14VisualMaterialINS_13EigenAlgebraTIdEEEE", !34, i64 0, !23, i64 24}
!71 = !{!72, !10, i64 16}
!72 = !{!"_ZTS21TinyCommonGraphicsApp", !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !60, i64 40, !60, i64 41, !60, i64 42, !73, i64 44, !73, i64 48, !73, i64 52, !73, i64 56, !60, i64 60, !7, i64 64}
!73 = !{!"float", !7, i64 0}
!74 = !{!75, !75, i64 0}
!75 = !{!"vtable pointer", !8, i64 0}
!76 = distinct !{!76, !57}
!77 = distinct !{!77, !57}
!78 = distinct !{!78, !57}
!79 = distinct !{!79, !57}
!80 = !{i8 0, i8 2}
!81 = !{}
!82 = distinct !{!82, !57}
!83 = distinct !{!83, !57}
!84 = distinct !{!84, !57}
!85 = !{!86, !51, i64 80}
!86 = !{!"_ZTSN4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EEE", !87, i64 0, !6, i64 24, !51, i64 32, !51, i64 40, !51, i64 48, !51, i64 56, !91, i64 64, !51, i64 80}
!87 = !{!"_ZTSSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE", !88, i64 0}
!88 = !{!"_ZTSSt12_Vector_baseIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE12_Vector_implE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!91 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !92, i64 0}
!92 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !93, i64 0}
!93 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !10, i64 0, !22, i64 8}
!94 = !{!86, !51, i64 56}
!95 = distinct !{!95, !57}
!96 = distinct !{!96, !57}
!97 = !{!12, !51, i64 608}
!98 = distinct !{!98, !57}
!99 = !{!72, !10, i64 8}
!100 = distinct !{!100, !57}
!101 = distinct !{!101, !57}
!102 = !{!73, !73, i64 0}
!103 = !{i64 0, i64 4, !102, i64 4, i64 4, !102, i64 8, i64 4, !102, i64 12, i64 4, !102}
!104 = distinct !{!104, !57}
!105 = distinct !{!105, !57}
!106 = distinct !{!106, !57}
!107 = distinct !{!107, !57}
!108 = distinct !{!108, !57}


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

%"class.std::__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.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { ptr, i64 }
%struct.OpenGLUrdfVisualizer = type { %"class.std::map", %"class.std::map.9", i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %struct.TinyOpenGL3App }
%"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>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, 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>, int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, 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 }
%"class.std::map.9" = type { %"class.std::_Rb_tree.10" }
%"class.std::_Rb_tree.10" = type { %"struct.std::_Rb_tree<int, std::pair<const int, OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo>, std::_Select1st<std::pair<const int, OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo>>, std::less<int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<int, std::pair<const int, OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo>, std::_Select1st<std::pair<const int, OpenGLUrdfVisualizer<tds::EigenAlgebraT<>>::TinyVisualLinkInfo>>, std::less<int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%struct.TinyOpenGL3App = type { %struct.TinyCommonGraphicsApp.base, ptr, ptr, ptr }
%struct.TinyCommonGraphicsApp.base = type <{ ptr, ptr, ptr, ptr, ptr, i8, i8, i8, i8, float, float, float, float, i8, [3 x i8], [3 x float] }>
%struct.LaikagoSimulation = type { %"class.tds::UrdfCache", %"class.std::__cxx11::basic_string", %"class.tds::World", ptr, i32, double }
%"class.tds::UrdfCache" = type { %"class.std::map.15" }
%"class.std::map.15" = type { %"class.std::_Rb_tree.16" }
%"class.std::_Rb_tree.16" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, tds::UrdfStructures<tds::EigenAlgebraT<>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, tds::UrdfStructures<tds::EigenAlgebraT<>>>>, 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>, tds::UrdfStructures<tds::EigenAlgebraT<>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, tds::UrdfStructures<tds::EigenAlgebraT<>>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.tds::World" = type { ptr, %"class.std::vector.20", %"class.std::vector.25", %"class.Eigen::Matrix.30", %"class.std::vector.39", %"class.tds::CollisionDispatcher", ptr, ptr, ptr, %"class.std::vector.44", %"class.std::vector.49", i32, double, double, %"class.std::vector.54" }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<tds::RigidBody<tds::EigenAlgebraT<>> *, std::allocator<tds::RigidBody<tds::EigenAlgebraT<>> *>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::RigidBody<tds::EigenAlgebraT<>> *, std::allocator<tds::RigidBody<tds::EigenAlgebraT<>> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::RigidBody<tds::EigenAlgebraT<>> *, std::allocator<tds::RigidBody<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::RigidBody<tds::EigenAlgebraT<>> *, std::allocator<tds::RigidBody<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.25" = type { %"struct.std::_Vector_base.26" }
%"struct.std::_Vector_base.26" = type { %"struct.std::_Vector_base<tds::MultiBody<tds::EigenAlgebraT<>> *, std::allocator<tds::MultiBody<tds::EigenAlgebraT<>> *>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::MultiBody<tds::EigenAlgebraT<>> *, std::allocator<tds::MultiBody<tds::EigenAlgebraT<>> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::MultiBody<tds::EigenAlgebraT<>> *, std::allocator<tds::MultiBody<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::MultiBody<tds::EigenAlgebraT<>> *, std::allocator<tds::MultiBody<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Eigen::Matrix.30" = type { %"class.Eigen::PlainObjectBase.31" }
%"class.Eigen::PlainObjectBase.31" = type { %"class.Eigen::DenseStorage.38" }
%"class.Eigen::DenseStorage.38" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%"class.std::vector.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = type { %"struct.std::_Vector_base<tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::Geometry<tds::EigenAlgebraT<>> *, std::allocator<tds::Geometry<tds::EigenAlgebraT<>> *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.tds::CollisionDispatcher" = type { [6 x [6 x ptr]] }
%"class.std::vector.44" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = type { %"struct.std::_Vector_base<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::RigidBodyContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.49" = type { %"struct.std::_Vector_base.50" }
%"struct.std::_Vector_base.50" = type { %"struct.std::_Vector_base<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>, std::allocator<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>, std::allocator<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>, std::allocator<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>, std::allocator<std::vector<tds::MultiBodyContactPoint<tds::EigenAlgebraT<>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.54" = type { %"struct.std::_Vector_base.55" }
%"struct.std::_Vector_base.55" = type { %"struct.std::_Vector_base<tds::ContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::ContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::ContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::ContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::ContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::ContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::ContactPoint<tds::EigenAlgebraT<>>, std::allocator<tds::ContactPoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.99" = type { %"struct.std::_Vector_base.100" }
%"struct.std::_Vector_base.100" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.59" = type { %"struct.std::_Vector_base.60" }
%"struct.std::_Vector_base.60" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"struct.TINY::TinyVector3" = type { float, float, float, i32 }
%"struct.TINY::TinyQuaternion" = type { float, float, float, float }
%"struct.tds::UrdfStructures" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.104", %"class.std::vector.104", %"class.std::vector.109", %"class.std::map", %"class.std::map.114" }
%"class.std::vector.104" = type { %"struct.std::_Vector_base.105" }
%"struct.std::_Vector_base.105" = type { %"struct.std::_Vector_base<tds::UrdfLink<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfLink<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::UrdfLink<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfLink<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::UrdfLink<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfLink<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::UrdfLink<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfLink<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.109" = type { %"struct.std::_Vector_base.110" }
%"struct.std::_Vector_base.110" = type { %"struct.std::_Vector_base<tds::UrdfJoint<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfJoint<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<tds::UrdfJoint<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfJoint<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<tds::UrdfJoint<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfJoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<tds::UrdfJoint<tds::EigenAlgebraT<>>, std::allocator<tds::UrdfJoint<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.114" = type { %"class.std::_Rb_tree.115" }
%"class.std::_Rb_tree.115" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, tds::VisualMaterial<tds::EigenAlgebraT<>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, tds::VisualMaterial<tds::EigenAlgebraT<>>>>, 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>, tds::VisualMaterial<tds::EigenAlgebraT<>>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, tds::VisualMaterial<tds::EigenAlgebraT<>>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.139" = type { %"struct.std::_Vector_base.140" }
%"struct.std::_Vector_base.140" = type { %"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<double>, std::allocator<std::vector<double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.101" = type { i8 }
%"class.std::allocator.141" = type { i8 }
%"class.Eigen::Quaternion" = type { %"class.Eigen::Matrix.144" }
%"class.Eigen::Matrix.144" = type { %"class.Eigen::PlainObjectBase.145" }
%"class.Eigen::PlainObjectBase.145" = type { %"class.Eigen::DenseStorage.152" }
%"class.Eigen::DenseStorage.152" = type { %"struct.Eigen::internal::plain_array.153" }
%"struct.Eigen::internal::plain_array.153" = type { [4 x double] }
%"struct.TINY::TinyInverseKinematics" = type { %"class.std::vector.154", i32, double, double, double, double, %"class.Eigen::Matrix", double }
%"class.std::vector.154" = type { %"struct.std::_Vector_base.155" }
%"struct.std::_Vector_base.155" = type { %"struct.std::_Vector_base<TINY::TinyIKTarget<tds::EigenAlgebraT<>>, std::allocator<TINY::TinyIKTarget<tds::EigenAlgebraT<>>>>::_Vector_impl" }
%"struct.std::_Vector_base<TINY::TinyIKTarget<tds::EigenAlgebraT<>>, std::allocator<TINY::TinyIKTarget<tds::EigenAlgebraT<>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<TINY::TinyIKTarget<tds::EigenAlgebraT<>>, std::allocator<TINY::TinyIKTarget<tds::EigenAlgebraT<>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TINY::TinyIKTarget<tds::EigenAlgebraT<>>, std::allocator<TINY::TinyIKTarget<tds::EigenAlgebraT<>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.159" = type { %"struct.std::_Vector_base.160" }
%"struct.std::_Vector_base.160" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, -1, 1>, std::allocator<Eigen::Matrix<double, -1, 1>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, -1, 1>, std::allocator<Eigen::Matrix<double, -1, 1>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, -1, 1>, std::allocator<Eigen::Matrix<double, -1, 1>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, -1, 1>, std::allocator<Eigen::Matrix<double, -1, 1>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::chrono::duration" = type { double }

@is_floating = external dso_local local_unnamed_addr global i8, align 1
@_Z17LAIKAGO_URDF_NAMEB5cxx11 = external dso_local global %"class.std::__cxx11::basic_string", align 8
@.str.3 = external hidden unnamed_addr constant [1 x i8], align 1
@start_pos = external dso_local local_unnamed_addr global [3 x double], align 16
@frameskip_gfx_sync = external dso_local local_unnamed_addr global i32, align 4
@initial_poses = external dso_local local_unnamed_addr global [12 x double], align 16
@all_joint_angles2 = external dso_local global %"class.Eigen::Matrix", align 8
@.str.20 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [13 x i8], align 1
@__const.main.phases = external hidden unnamed_addr constant [4 x double], align 16
@.str.23 = external hidden unnamed_addr constant [10 x i8], align 1

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

; Function Attrs: mustprogress nounwind uwtable
declare 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 #2 align 2

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readnone %1) local_unnamed_addr #4 personality ptr @__gxx_personality_v0 {
  %3 = alloca %struct.OpenGLUrdfVisualizer, align 8
  %4 = alloca %struct.LaikagoSimulation, align 8
  %5 = alloca %"class.std::vector.99", align 8
  %6 = alloca %"class.std::vector.99", align 8
  %7 = alloca %"class.std::vector.59", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca %"struct.TINY::TinyVector3", align 4
  %12 = alloca %"struct.TINY::TinyQuaternion", align 4
  %13 = alloca %"struct.TINY::TinyVector3", align 4
  %14 = alloca [4096 x i8], align 16
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"struct.tds::UrdfStructures", align 8
  %19 = alloca %"class.std::vector.59", align 8
  %20 = alloca %"class.std::vector.59", align 8
  %21 = alloca %"struct.TINY::TinyVector3", align 4
  %22 = alloca %"struct.TINY::TinyQuaternion", align 4
  %23 = alloca %"struct.TINY::TinyVector3", align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca %"struct.TINY::TinyVector3", align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca %"struct.TINY::TinyVector3", align 4
  %31 = alloca %"class.std::vector.139", align 8
  %32 = alloca %"class.std::vector.99", align 8
  %33 = alloca %"class.std::allocator.101", align 1
  %34 = alloca %"class.std::allocator.141", align 1
  %35 = alloca %"class.std::vector.139", align 8
  %36 = alloca %"class.std::allocator.141", align 1
  %37 = alloca %"class.Eigen::Quaternion", align 16
  %38 = alloca %"class.Eigen::Matrix.30", align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca %"class.std::vector.99", align 8
  %43 = alloca double, align 8
  %44 = alloca %"class.std::allocator.101", align 1
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca %"struct.TINY::TinyInverseKinematics", align 8
  %50 = alloca %"class.Eigen::Matrix", align 8
  %51 = alloca %"class.std::vector.99", align 8
  %52 = alloca %"class.std::allocator.101", align 1
  %53 = alloca %"class.std::vector.99", align 8
  %54 = alloca %"class.std::allocator.101", align 1
  %55 = alloca %"class.std::vector.99", align 8
  %56 = alloca %"class.std::allocator.101", align 1
  %57 = alloca %"class.std::vector.99", align 8
  %58 = alloca %"class.std::allocator.101", align 1
  %59 = alloca %"class.std::vector.159", align 8
  %60 = alloca double, align 8
  %61 = alloca %"class.Eigen::Matrix.30", align 8
  %62 = alloca %"class.std::vector.99", align 8
  %63 = alloca %"struct.TINY::TinyVector3", align 4
  %64 = alloca %"struct.TINY::TinyQuaternion", align 4
  %65 = alloca %"struct.TINY::TinyVector3", align 4
  %66 = alloca %"struct.TINY::TinyQuaternion", align 4
  %67 = alloca %"class.Eigen::Matrix.30", align 8
  %68 = alloca %"class.Eigen::Quaternion", align 16
  %69 = alloca %"struct.TINY::TinyVector3", align 4
  %70 = alloca %"struct.TINY::TinyQuaternion", align 4
  %71 = alloca %"struct.TINY::TinyVector3", align 4
  %72 = alloca %"struct.TINY::TinyQuaternion", align 4
  %73 = alloca %"class.std::chrono::duration", align 8
  %74 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 304, ptr nonnull %3) #12
  call void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEEC2EiiPKc(ptr noundef nonnull align 8 dereferenceable(304) %3, i32 noundef 1024, i32 noundef 768, ptr noundef nonnull @.str.20)
  call void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE10delete_allEv(ptr noundef nonnull align 8 dereferenceable(304) %3)
  call void @llvm.lifetime.start.p0(i64 616, ptr nonnull %4) #12
  invoke void @_ZN17LaikagoSimulationIN3tds13EigenAlgebraTIdEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(616) %4)
          to label %.preheader308 unwind label %79

.preheader308:                                    ; preds = %2
  %75 = getelementptr inbounds i8, ptr %4, i64 592
  %76 = load ptr, ptr %75, align 8, !tbaa !5
  %77 = call noundef i64 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE9num_linksEv(ptr noundef nonnull align 8 dereferenceable(944) %76)
  %.not353 = icmp eq i64 %77, 0
  br i1 %.not353, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %.preheader308
  %78 = invoke noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE9input_dimEv(ptr noundef nonnull align 8 dereferenceable(616) %4)
          to label %91 unwind label %117

79:                                               ; preds = %2
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %858

.lr.ph:                                           ; preds = %.preheader308, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader308 ]
  %81 = load ptr, ptr %75, align 8, !tbaa !5
  %82 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944) %81)
  %83 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %82, i64 noundef %indvars.iv) #12
  %84 = getelementptr inbounds i8, ptr %83, i64 1776
  %85 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %84) #12
  %86 = trunc nuw nsw i64 %indvars.iv to i32
  %87 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.21, i32 noundef %86, ptr noundef %85)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %88 = load ptr, ptr %75, align 8, !tbaa !5
  %89 = call noundef i64 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE9num_linksEv(ptr noundef nonnull align 8 dereferenceable(944) %88)
  %90 = icmp ugt i64 %89, %indvars.iv.next
  br i1 %90, label %.lr.ph, label %._crit_edge, !llvm.loop !54

91:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #12
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #12
  call void @_ZNSt6vectorIdSaIdEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #12
  %92 = sext i32 %78 to i64
  invoke void @_ZNSt6vectorIdSaIdEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %92)
          to label %93 unwind label %119

93:                                               ; preds = %91
  %94 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 3) #12
  store double 1.000000e+00, ptr %94, align 8, !tbaa !56
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 6) #12
  store double 0x3FE6666666666666, ptr %95, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #12
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull @.str.22, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %96 unwind label %121

96:                                               ; preds = %93
  %97 = invoke noundef zeroext i1 @_ZN3tds9FileUtils9find_fileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS6_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %98 unwind label %123

98:                                               ; preds = %96
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #12
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #12
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %11, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #12
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %12, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %99 unwind label %126

99:                                               ; preds = %98
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #12
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %13, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  invoke void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE8load_objERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKN4TINY11TinyVector3IfNSC_10FloatUtilsEEERKNSC_14TinyQuaternionIfSE_EESH_RSt6vectorIiSaIiEE(ptr noundef nonnull align 8 dereferenceable(304) %3, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %13, ptr noundef nonnull align 8 dereferenceable(24) %7)
          to label %100 unwind label %128

100:                                              ; preds = %99
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #12
  call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #12
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull @.str.3, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %101 unwind label %132

101:                                              ; preds = %100
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  %102 = invoke noundef zeroext i1 @_ZN3tds9FileUtils9find_fileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS6_(ptr noundef nonnull align 8 dereferenceable(32) @_Z17LAIKAGO_URDF_NAMEB5cxx11, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %103 unwind label %134

103:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 200, ptr nonnull %18) #12
  %104 = invoke noundef nonnull align 8 dereferenceable(200) ptr @_ZN3tds9UrdfCacheINS_13EigenAlgebraTIdEEE8retrieveERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(48) %4, ptr noundef nonnull align 8 dereferenceable(32) %17, i1 noundef zeroext false)
          to label %105 unwind label %136

105:                                              ; preds = %103
  invoke void @_ZN3tds14UrdfStructuresINS_13EigenAlgebraTIdEEEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(200) %18, ptr noundef nonnull align 8 dereferenceable(200) %104)
          to label %106 unwind label %136

106:                                              ; preds = %105
  %107 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  %108 = invoke noundef i32 @_ZN3tds9FileUtils12extract_pathEPKcPci(ptr noundef %107, ptr noundef nonnull %14, i32 noundef 4096)
          to label %109 unwind label %138

109:                                              ; preds = %106
  %110 = getelementptr inbounds i8, ptr %3, i64 168
  %111 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull %14)
          to label %112 unwind label %138

112:                                              ; preds = %109
  invoke void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE15convert_visualsERNS0_14UrdfStructuresIS2_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(304) %3, ptr noundef nonnull align 8 dereferenceable(200) %18, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %113 unwind label %138

113:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #12
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #12
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  %114 = getelementptr inbounds i8, ptr %3, i64 48
  %115 = getelementptr inbounds i8, ptr %3, i64 216
  %116 = getelementptr inbounds i8, ptr %18, i64 56
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #12
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %21, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #12
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %22, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 1.000000e+00)
          to label %140 unwind label %153

117:                                              ; preds = %._crit_edge
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %857

119:                                              ; preds = %91
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %856

121:                                              ; preds = %93
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %125

123:                                              ; preds = %96
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #12
  br label %125

125:                                              ; preds = %123, %121
  %.pn = phi { ptr, i32 } [ %124, %123 ], [ %122, %121 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #12
  br label %131

126:                                              ; preds = %98
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %130

128:                                              ; preds = %99
  %129 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #12
  br label %130

130:                                              ; preds = %128, %126
  %.pn248 = phi { ptr, i32 } [ %129, %128 ], [ %127, %126 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #12
  br label %131

131:                                              ; preds = %130, %125
  %.pn248.pn = phi { ptr, i32 } [ %.pn248, %130 ], [ %.pn, %125 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #12
  br label %856

132:                                              ; preds = %100
  %133 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #12
  br label %855

134:                                              ; preds = %101
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %854

136:                                              ; preds = %105, %103
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %853

138:                                              ; preds = %112, %109, %106
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %852

140:                                              ; preds = %113
  %141 = getelementptr inbounds i8, ptr %18, i64 32
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #12
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %23, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #12
  %142 = call noundef nonnull align 8 dereferenceable(220) ptr @_ZNSt6vectorIN3tds8UrdfLinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %141, i64 noundef 0) #12
  %143 = getelementptr inbounds i8, ptr %142, i64 112
  %144 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZNSt6vectorIN3tds10UrdfVisualINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef 0) #12
  %145 = getelementptr inbounds i8, ptr %144, i64 332
  %146 = load i32, ptr %145, align 4, !tbaa !57
  store i32 %146, ptr %24, align 4, !tbaa !68
  %147 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNSt3mapIiN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE18TinyVisualLinkInfoESt4lessIiESaISt4pairIKiS5_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48) %114, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %148 unwind label %155

148:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #12
  store i32 -1, ptr %25, align 4, !tbaa !68
  %149 = getelementptr inbounds i8, ptr %147, i64 136
  %150 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %149) #12
  %.not354 = icmp eq i64 %150, 0
  br i1 %.not354, label %.preheader307, label %.lr.ph328

.preheader307.loopexit:                           ; preds = %168
  %indvars = trunc i64 %indvars.iv.next369 to i32
  br label %.preheader307

.preheader307:                                    ; preds = %.preheader307.loopexit, %148
  %.0233.lcssa = phi i32 [ 0, %148 ], [ %indvars, %.preheader307.loopexit ]
  %151 = load ptr, ptr %75, align 8, !tbaa !5
  %152 = call noundef i64 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE9num_linksEv(ptr noundef nonnull align 8 dereferenceable(944) %151)
  %.not355 = icmp eq i64 %152, 0
  br i1 %.not355, label %._crit_edge336, label %.lr.ph335

153:                                              ; preds = %113
  %154 = landingpad { ptr, i32 }
          cleanup
  br label %215

155:                                              ; preds = %140
  %156 = landingpad { ptr, i32 }
          cleanup
  br label %214

.lr.ph328:                                        ; preds = %148, %168
  %indvars.iv368 = phi i64 [ %indvars.iv.next369, %168 ], [ 0, %148 ]
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %149, i64 noundef %indvars.iv368) #12
  %158 = load i32, ptr %157, align 4, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #12
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %26, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %159 = load ptr, ptr %115, align 8, !tbaa !69
  %160 = load ptr, ptr %159, align 8, !tbaa !72
  %161 = getelementptr inbounds i8, ptr %160, i64 136
  %162 = load ptr, ptr %161, align 8
  %163 = invoke noundef i32 %162(ptr noundef nonnull align 8 dereferenceable(60) %159, i32 noundef %158, ptr noundef nonnull align 4 dereferenceable(16) %21, ptr noundef nonnull align 4 dereferenceable(16) %22, ptr noundef nonnull align 4 dereferenceable(16) %26, ptr noundef nonnull align 4 dereferenceable(16) %23, float noundef 1.000000e+00, i1 noundef zeroext true)
          to label %164 unwind label %171

164:                                              ; preds = %.lr.ph328
  store i32 %163, ptr %25, align 4, !tbaa !68
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %165 unwind label %171

165:                                              ; preds = %164
  %166 = load ptr, ptr %75, align 8, !tbaa !5
  %167 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE20visual_instance_uidsEv(ptr noundef nonnull align 8 dereferenceable(944) %166)
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %167, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %168 unwind label %171

168:                                              ; preds = %165
  %indvars.iv.next369 = add nuw nsw i64 %indvars.iv368, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #12
  %169 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %149) #12
  %170 = icmp ugt i64 %169, %indvars.iv.next369
  br i1 %170, label %.lr.ph328, label %.preheader307.loopexit, !llvm.loop !74

171:                                              ; preds = %165, %164, %.lr.ph328
  %172 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #12
  br label %213

._crit_edge336:                                   ; preds = %205, %.preheader307
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %32) #12
  %173 = invoke noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE10output_dimEv(ptr noundef nonnull align 8 dereferenceable(616) %4)
          to label %216 unwind label %220

.lr.ph335:                                        ; preds = %.preheader307, %205
  %indvars.iv377 = phi i64 [ %indvars.iv.next378, %205 ], [ 0, %.preheader307 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #12
  %174 = call noundef nonnull align 8 dereferenceable(220) ptr @_ZNSt6vectorIN3tds8UrdfLinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %116, i64 noundef %indvars.iv377) #12
  %175 = getelementptr inbounds i8, ptr %174, i64 112
  %176 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZNSt6vectorIN3tds10UrdfVisualINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %175, i64 noundef 0) #12
  %177 = getelementptr inbounds i8, ptr %176, i64 332
  %178 = load i32, ptr %177, align 4, !tbaa !57
  store i32 %178, ptr %27, align 4, !tbaa !68
  %179 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNSt3mapIiN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE18TinyVisualLinkInfoESt4lessIiESaISt4pairIKiS5_EEEixERS9_(ptr noundef nonnull align 8 dereferenceable(48) %114, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %180 unwind label %183

180:                                              ; preds = %.lr.ph335
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #12
  store i32 -1, ptr %28, align 4, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #12
  store i32 0, ptr %29, align 4, !tbaa !68
  %181 = getelementptr inbounds i8, ptr %179, i64 136
  %182 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %181) #12
  %.not356 = icmp eq i64 %182, 0
  br i1 %.not356, label %._crit_edge333, label %.lr.ph332

._crit_edge333:                                   ; preds = %200, %180
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 4 dereferenceable(4) %29)
          to label %205 unwind label %209

183:                                              ; preds = %.lr.ph335
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %212

.lr.ph332:                                        ; preds = %180, %200
  %indvars.iv373 = phi i64 [ %indvars.iv.next374, %200 ], [ 0, %180 ]
  %185 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %181, i64 noundef %indvars.iv373) #12
  %186 = load i32, ptr %185, align 4, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %30) #12
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %30, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %187 = load ptr, ptr %115, align 8, !tbaa !69
  %188 = load ptr, ptr %187, align 8, !tbaa !72
  %189 = getelementptr inbounds i8, ptr %188, i64 136
  %190 = load ptr, ptr %189, align 8
  %191 = invoke noundef i32 %190(ptr noundef nonnull align 8 dereferenceable(60) %187, i32 noundef %186, ptr noundef nonnull align 4 dereferenceable(16) %21, ptr noundef nonnull align 4 dereferenceable(16) %22, ptr noundef nonnull align 4 dereferenceable(16) %30, ptr noundef nonnull align 4 dereferenceable(16) %23, float noundef 1.000000e+00, i1 noundef zeroext true)
          to label %192 unwind label %203

192:                                              ; preds = %.lr.ph332
  store i32 %191, ptr %28, align 4, !tbaa !68
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %193 unwind label %203

193:                                              ; preds = %192
  %194 = load i32, ptr %29, align 4, !tbaa !68
  %195 = add nsw i32 %194, 1
  store i32 %195, ptr %29, align 4, !tbaa !68
  %196 = load ptr, ptr %75, align 8, !tbaa !5
  %197 = getelementptr inbounds i8, ptr %196, i64 920
  %198 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %197, i64 noundef %indvars.iv377) #12
  %199 = getelementptr inbounds i8, ptr %198, i64 1728
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %199, ptr noundef nonnull align 4 dereferenceable(4) %28)
          to label %200 unwind label %203

200:                                              ; preds = %193
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #12
  %indvars.iv.next374 = add nuw nsw i64 %indvars.iv373, 1
  %201 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %181) #12
  %202 = icmp ugt i64 %201, %indvars.iv.next374
  br i1 %202, label %.lr.ph332, label %._crit_edge333, !llvm.loop !75

203:                                              ; preds = %193, %192, %.lr.ph332
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %30) #12
  br label %211

205:                                              ; preds = %._crit_edge333
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #12
  %indvars.iv.next378 = add nuw nsw i64 %indvars.iv377, 1
  %206 = load ptr, ptr %75, align 8, !tbaa !5
  %207 = call noundef i64 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE9num_linksEv(ptr noundef nonnull align 8 dereferenceable(944) %206)
  %208 = icmp ugt i64 %207, %indvars.iv.next378
  br i1 %208, label %.lr.ph335, label %._crit_edge336, !llvm.loop !76

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

211:                                              ; preds = %209, %203
  %.pn283 = phi { ptr, i32 } [ %204, %203 ], [ %210, %209 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #12
  br label %212

212:                                              ; preds = %211, %183
  %.pn283.pn = phi { ptr, i32 } [ %.pn283, %211 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #12
  br label %213

213:                                              ; preds = %212, %171
  %.pn286 = phi { ptr, i32 } [ %172, %171 ], [ %.pn283.pn, %212 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #12
  br label %214

214:                                              ; preds = %213, %155
  %.pn286.pn = phi { ptr, i32 } [ %.pn286, %213 ], [ %156, %155 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #12
  br label %215

215:                                              ; preds = %214, %153
  %.pn286.pn.pn = phi { ptr, i32 } [ %.pn286.pn, %214 ], [ %154, %153 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #12
  br label %851

216:                                              ; preds = %._crit_edge336
  %217 = sext i32 %173 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %32, i64 noundef %217, ptr noundef nonnull align 1 dereferenceable(1) %33)
          to label %218 unwind label %222

218:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %34) #12
  call void @_ZNSaISt6vectorIdSaIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #12
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS1_RKS2_(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %32, ptr noundef nonnull align 1 dereferenceable(1) %34)
          to label %219 unwind label %224

219:                                              ; preds = %218
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #12
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %35) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #12
  call void @_ZNSaISt6vectorIdSaIdEEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #12
  invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 1, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %.critedge unwind label %228

.critedge:                                        ; preds = %219
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #12
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %37) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %38) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #12
  store double 0.000000e+00, ptr %39, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #12
  store double 0.000000e+00, ptr %40, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #12
  store double 0.000000e+00, ptr %41, align 8, !tbaa !56
  invoke void @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEC2ERKdS3_S3_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %230 unwind label %319

220:                                              ; preds = %._crit_edge336
  %221 = landingpad { ptr, i32 }
          cleanup
  br label %227

222:                                              ; preds = %216
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %226

224:                                              ; preds = %218
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %34) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %34) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #12
  br label %226

226:                                              ; preds = %224, %222
  %.pn251 = phi { ptr, i32 } [ %225, %224 ], [ %223, %222 ]
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %33) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #12
  br label %227

227:                                              ; preds = %226, %220
  %.pn251.pn = phi { ptr, i32 } [ %.pn251, %226 ], [ %221, %220 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %32) #12
  br label %850

228:                                              ; preds = %219
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorIdSaIdEEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %36) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #12
  br label %849

230:                                              ; preds = %.critedge
  invoke void @_ZN3tds13EigenAlgebraTIdE19quat_from_euler_rpyERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Quaternion") align 16 %37, ptr noundef nonnull align 8 dereferenceable(24) %38)
          to label %231 unwind label %319

231:                                              ; preds = %230
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %42) #12
  %232 = invoke noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE9input_dimEv(ptr noundef nonnull align 8 dereferenceable(616) %4)
          to label %233 unwind label %321

233:                                              ; preds = %231
  %234 = sext i32 %232 to i64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #12
  store double 0.000000e+00, ptr %43, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKdRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %234, ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %235 unwind label %323

235:                                              ; preds = %233
  %236 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %237 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIdSaIdEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %236, ptr noundef nonnull align 8 dereferenceable(24) %42) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #12
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %42) #12
  %238 = load i8, ptr @is_floating, align 1, !tbaa !77, !range !78, !noundef !79
  %239 = trunc nuw i8 %238 to i1
  br i1 %239, label %240, label %.preheader305

240:                                              ; preds = %235
  %241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %242 unwind label %326

242:                                              ; preds = %240
  %243 = load double, ptr %241, align 8, !tbaa !56
  %244 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %245 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %244, i64 noundef 0) #12
  store double %243, ptr %245, align 8, !tbaa !56
  %246 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %247 unwind label %326

247:                                              ; preds = %242
  %248 = load double, ptr %246, align 8, !tbaa !56
  %249 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %250 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %249, i64 noundef 1) #12
  store double %248, ptr %250, align 8, !tbaa !56
  %251 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %252 unwind label %326

252:                                              ; preds = %247
  %253 = load double, ptr %251, align 8, !tbaa !56
  %254 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %254, i64 noundef 2) #12
  store double %253, ptr %255, align 8, !tbaa !56
  %256 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1wEv(ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %257 unwind label %326

257:                                              ; preds = %252
  %258 = load double, ptr %256, align 8, !tbaa !56
  %259 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %259, i64 noundef 3) #12
  store double %258, ptr %260, align 8, !tbaa !56
  %261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %262 unwind label %326

262:                                              ; preds = %257
  %263 = load double, ptr %261, align 8, !tbaa !56
  %264 = load ptr, ptr %75, align 8, !tbaa !5
  %265 = getelementptr inbounds i8, ptr %264, i64 824
  %266 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %265, i64 noundef 0)
          to label %267 unwind label %326

267:                                              ; preds = %262
  store double %263, ptr %266, align 8, !tbaa !56
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %269 unwind label %326

269:                                              ; preds = %267
  %270 = load double, ptr %268, align 8, !tbaa !56
  %271 = load ptr, ptr %75, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i64 824
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %272, i64 noundef 1)
          to label %274 unwind label %326

274:                                              ; preds = %269
  store double %270, ptr %273, align 8, !tbaa !56
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %276 unwind label %326

276:                                              ; preds = %274
  %277 = load double, ptr %275, align 8, !tbaa !56
  %278 = load ptr, ptr %75, align 8, !tbaa !5
  %279 = getelementptr inbounds i8, ptr %278, i64 824
  %280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %279, i64 noundef 2)
          to label %281 unwind label %326

281:                                              ; preds = %276
  store double %277, ptr %280, align 8, !tbaa !56
  %282 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1wEv(ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %283 unwind label %326

283:                                              ; preds = %281
  %284 = load double, ptr %282, align 8, !tbaa !56
  %285 = load ptr, ptr %75, align 8, !tbaa !5
  %286 = getelementptr inbounds i8, ptr %285, i64 824
  %287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %286, i64 noundef 3)
          to label %288 unwind label %326

288:                                              ; preds = %283
  store double %284, ptr %287, align 8, !tbaa !56
  %289 = load double, ptr @start_pos, align 16, !tbaa !56
  %290 = load ptr, ptr %75, align 8, !tbaa !5
  %291 = getelementptr inbounds i8, ptr %290, i64 824
  %292 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %291, i64 noundef 4)
          to label %293 unwind label %326

293:                                              ; preds = %288
  store double %289, ptr %292, align 8, !tbaa !56
  %294 = load double, ptr getelementptr inbounds (i8, ptr @start_pos, i64 8), align 8, !tbaa !56
  %295 = load ptr, ptr %75, align 8, !tbaa !5
  %296 = getelementptr inbounds i8, ptr %295, i64 824
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %296, i64 noundef 5)
          to label %298 unwind label %326

298:                                              ; preds = %293
  store double %294, ptr %297, align 8, !tbaa !56
  %299 = load double, ptr getelementptr inbounds (i8, ptr @start_pos, i64 16), align 16, !tbaa !56
  %300 = load ptr, ptr %75, align 8, !tbaa !5
  %301 = getelementptr inbounds i8, ptr %300, i64 824
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %301, i64 noundef 6)
          to label %303 unwind label %326

303:                                              ; preds = %298
  store double %299, ptr %302, align 8, !tbaa !56
  %304 = load double, ptr @start_pos, align 16, !tbaa !56
  %305 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %306 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %305, i64 noundef 4) #12
  store double %304, ptr %306, align 8, !tbaa !56
  %307 = load double, ptr getelementptr inbounds (i8, ptr @start_pos, i64 8), align 8, !tbaa !56
  %308 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %308, i64 noundef 5) #12
  store double %307, ptr %309, align 8, !tbaa !56
  %310 = load double, ptr getelementptr inbounds (i8, ptr @start_pos, i64 16), align 16, !tbaa !56
  %311 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %312 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef 6) #12
  store double %310, ptr %312, align 8, !tbaa !56
  br label %313

313:                                              ; preds = %336, %303
  %indvars.iv387 = phi i64 [ %indvars.iv.next388, %336 ], [ 7, %303 ]
  %indvars.iv385 = phi i64 [ %indvars.iv.next386, %336 ], [ 0, %303 ]
  %314 = load ptr, ptr %75, align 8, !tbaa !5
  %315 = getelementptr inbounds i8, ptr %314, i64 824
  %316 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %315)
          to label %317 unwind label %328

317:                                              ; preds = %313
  %318 = icmp sgt i64 %316, %indvars.iv387
  br i1 %318, label %330, label %.loopexit304

319:                                              ; preds = %230, %.critedge
  %320 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) #12
  br label %357

321:                                              ; preds = %231
  %322 = landingpad { ptr, i32 }
          cleanup
  br label %325

323:                                              ; preds = %233
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #12
  br label %325

325:                                              ; preds = %323, %321
  %.pn276 = phi { ptr, i32 } [ %324, %323 ], [ %322, %321 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %42) #12
  br label %357

326:                                              ; preds = %298, %293, %288, %283, %281, %276, %274, %269, %267, %262, %257, %252, %247, %242, %240
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %357

328:                                              ; preds = %330, %313
  %329 = landingpad { ptr, i32 }
          cleanup
  br label %357

330:                                              ; preds = %317
  %331 = getelementptr inbounds [12 x double], ptr @initial_poses, i64 0, i64 %indvars.iv385
  %332 = load double, ptr %331, align 8, !tbaa !56
  %333 = load ptr, ptr %75, align 8, !tbaa !5
  %334 = getelementptr inbounds i8, ptr %333, i64 824
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %334, i64 noundef %indvars.iv387)
          to label %336 unwind label %328

336:                                              ; preds = %330
  store double %332, ptr %335, align 8, !tbaa !56
  %337 = load double, ptr %331, align 8, !tbaa !56
  %338 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %339 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %338, i64 noundef %indvars.iv387) #12
  store double %337, ptr %339, align 8, !tbaa !56
  %indvars.iv.next386 = add nuw nsw i64 %indvars.iv385, 1
  %indvars.iv.next388 = add nuw nsw i64 %indvars.iv387, 1
  br label %313, !llvm.loop !80

.preheader305:                                    ; preds = %235, %353
  %indvars.iv381 = phi i64 [ %indvars.iv.next382, %353 ], [ 0, %235 ]
  %340 = load ptr, ptr %75, align 8, !tbaa !5
  %341 = getelementptr inbounds i8, ptr %340, i64 824
  %342 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %341)
          to label %343 unwind label %345

343:                                              ; preds = %.preheader305
  %344 = icmp sgt i64 %342, %indvars.iv381
  br i1 %344, label %347, label %.loopexit304

345:                                              ; preds = %347, %.preheader305
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %357

347:                                              ; preds = %343
  %348 = getelementptr inbounds [12 x double], ptr @initial_poses, i64 0, i64 %indvars.iv381
  %349 = load double, ptr %348, align 8, !tbaa !56
  %350 = load ptr, ptr %75, align 8, !tbaa !5
  %351 = getelementptr inbounds i8, ptr %350, i64 824
  %352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %351, i64 noundef %indvars.iv381)
          to label %353 unwind label %345

353:                                              ; preds = %347
  store double %349, ptr %352, align 8, !tbaa !56
  %354 = load double, ptr %348, align 8, !tbaa !56
  %355 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %356 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %355, i64 noundef %indvars.iv381) #12
  store double %354, ptr %356, align 8, !tbaa !56
  %indvars.iv.next382 = add nuw nsw i64 %indvars.iv381, 1
  br label %.preheader305, !llvm.loop !81

.loopexit304:                                     ; preds = %343, %317
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %45) #12
  store i32 3, ptr %45, align 4, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #12
  store i32 7, ptr %46, align 4, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #12
  store i32 11, ptr %47, align 4, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %48) #12
  store i32 15, ptr %48, align 4, !tbaa !68
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %49) #12
  invoke void @_ZN4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EEC2Ev(ptr noundef nonnull align 8 dereferenceable(88) %49)
          to label %358 unwind label %402

357:                                              ; preds = %345, %328, %326, %325, %319
  %.pn278 = phi { ptr, i32 } [ %329, %328 ], [ %327, %326 ], [ %346, %345 ], [ %.pn276, %325 ], [ %320, %319 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %37) #12
  br label %848

358:                                              ; preds = %.loopexit304
  %359 = getelementptr inbounds i8, ptr %49, i64 80
  store double 0.000000e+00, ptr %359, align 8, !tbaa !82
  %360 = getelementptr inbounds i8, ptr %49, i64 56
  store double 3.000000e-01, ptr %360, align 8, !tbaa !91
  %361 = load ptr, ptr %75, align 8, !tbaa !5
  invoke void @_ZN3tds18forward_kinematicsINS_13EigenAlgebraTIdEEEEvRNS_9MultiBodyIT_EE(ptr noundef nonnull align 8 dereferenceable(944) %361)
          to label %362 unwind label %404

362:                                              ; preds = %358
  %363 = load ptr, ptr %75, align 8, !tbaa !5
  %364 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944) %363)
  %365 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %364, i64 noundef 3) #12
  %366 = getelementptr inbounds i8, ptr %365, i64 296
  %367 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE12emplace_backIJRKiRN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 8 dereferenceable(24) %366)
          to label %368 unwind label %404

368:                                              ; preds = %362
  %369 = load ptr, ptr %75, align 8, !tbaa !5
  %370 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944) %369)
  %371 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %370, i64 noundef 7) #12
  %372 = getelementptr inbounds i8, ptr %371, i64 296
  %373 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE12emplace_backIJRKiRN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 4 dereferenceable(4) %46, ptr noundef nonnull align 8 dereferenceable(24) %372)
          to label %374 unwind label %404

374:                                              ; preds = %368
  %375 = load ptr, ptr %75, align 8, !tbaa !5
  %376 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944) %375)
  %377 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %376, i64 noundef 11) #12
  %378 = getelementptr inbounds i8, ptr %377, i64 296
  %379 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE12emplace_backIJRKiRN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 4 dereferenceable(4) %47, ptr noundef nonnull align 8 dereferenceable(24) %378)
          to label %380 unwind label %404

380:                                              ; preds = %374
  %381 = load ptr, ptr %75, align 8, !tbaa !5
  %382 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944) %381)
  %383 = call noundef nonnull align 16 dereferenceable(1864) ptr @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %382, i64 noundef 15) #12
  %384 = getelementptr inbounds i8, ptr %383, i64 296
  %385 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE12emplace_backIJRKiRN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEEERS5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %49, ptr noundef nonnull align 4 dereferenceable(4) %48, ptr noundef nonnull align 8 dereferenceable(24) %384)
          to label %386 unwind label %404

386:                                              ; preds = %380
  %387 = load ptr, ptr %75, align 8, !tbaa !5
  %388 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE1qEv(ptr noundef nonnull align 8 dereferenceable(944) %387)
  %389 = getelementptr inbounds i8, ptr %49, i64 64
  %390 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %389, ptr noundef nonnull align 8 dereferenceable(16) %388)
          to label %391 unwind label %404

391:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #12
  %392 = load ptr, ptr %75, align 8, !tbaa !5
  %393 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE1qEv(ptr noundef nonnull align 8 dereferenceable(944) %392)
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(16) %393)
          to label %394 unwind label %406

394:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %51) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %52) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 4, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %395 unwind label %408

395:                                              ; preds = %394
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %53) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %54) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 4, ptr noundef nonnull align 1 dereferenceable(1) %54)
          to label %396 unwind label %410

396:                                              ; preds = %395
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %55) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %56) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef 4, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %397 unwind label %412

397:                                              ; preds = %396
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %57) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %58) #12
  call void @_ZNSaIdEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #12
  invoke void @_ZNSt6vectorIdSaIdEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 4, ptr noundef nonnull align 1 dereferenceable(1) %58)
          to label %398 unwind label %414

398:                                              ; preds = %397
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #12
  %399 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 0) #12
  %400 = getelementptr inbounds i8, ptr %399, i64 8
  %401 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %400)
          to label %416 unwind label %513

402:                                              ; preds = %.loopexit304
  %403 = landingpad { ptr, i32 }
          cleanup
  br label %847

404:                                              ; preds = %386, %380, %374, %368, %362, %358
  %405 = landingpad { ptr, i32 }
          cleanup
  br label %846

406:                                              ; preds = %391
  %407 = landingpad { ptr, i32 }
          cleanup
  br label %845

408:                                              ; preds = %394
  %409 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %52) #12
  br label %844

410:                                              ; preds = %395
  %411 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %54) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %54) #12
  br label %843

412:                                              ; preds = %396
  %413 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %56) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %56) #12
  br label %842

414:                                              ; preds = %397
  %415 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIdED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %58) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %58) #12
  br label %841

416:                                              ; preds = %398
  %417 = load double, ptr %401, align 8, !tbaa !56
  %418 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 0) #12
  store double %417, ptr %418, align 8, !tbaa !56
  %419 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 0) #12
  %420 = getelementptr inbounds i8, ptr %419, i64 8
  %421 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %420)
          to label %422 unwind label %513

422:                                              ; preds = %416
  %423 = load double, ptr %421, align 8, !tbaa !56
  %424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 0) #12
  store double %423, ptr %424, align 8, !tbaa !56
  %425 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 0) #12
  %426 = getelementptr inbounds i8, ptr %425, i64 8
  %427 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %426)
          to label %428 unwind label %513

428:                                              ; preds = %422
  %429 = load double, ptr %427, align 8, !tbaa !56
  %430 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef 0) #12
  store double %429, ptr %430, align 8, !tbaa !56
  %431 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 0) #12
  %432 = getelementptr inbounds i8, ptr %431, i64 8
  %433 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %432)
          to label %434 unwind label %513

434:                                              ; preds = %428
  %435 = load double, ptr %433, align 8, !tbaa !56
  %436 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 0) #12
  store double %435, ptr %436, align 8, !tbaa !56
  %437 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 1) #12
  %438 = getelementptr inbounds i8, ptr %437, i64 8
  %439 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %438)
          to label %440 unwind label %513

440:                                              ; preds = %434
  %441 = load double, ptr %439, align 8, !tbaa !56
  %442 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 1) #12
  store double %441, ptr %442, align 8, !tbaa !56
  %443 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 1) #12
  %444 = getelementptr inbounds i8, ptr %443, i64 8
  %445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %444)
          to label %446 unwind label %513

446:                                              ; preds = %440
  %447 = load double, ptr %445, align 8, !tbaa !56
  %448 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 1) #12
  store double %447, ptr %448, align 8, !tbaa !56
  %449 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 1) #12
  %450 = getelementptr inbounds i8, ptr %449, i64 8
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %450)
          to label %452 unwind label %513

452:                                              ; preds = %446
  %453 = load double, ptr %451, align 8, !tbaa !56
  %454 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef 1) #12
  store double %453, ptr %454, align 8, !tbaa !56
  %455 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 1) #12
  %456 = getelementptr inbounds i8, ptr %455, i64 8
  %457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %456)
          to label %458 unwind label %513

458:                                              ; preds = %452
  %459 = load double, ptr %457, align 8, !tbaa !56
  %460 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 1) #12
  store double %459, ptr %460, align 8, !tbaa !56
  %461 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 2) #12
  %462 = getelementptr inbounds i8, ptr %461, i64 8
  %463 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %462)
          to label %464 unwind label %513

464:                                              ; preds = %458
  %465 = load double, ptr %463, align 8, !tbaa !56
  %466 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 2) #12
  store double %465, ptr %466, align 8, !tbaa !56
  %467 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 2) #12
  %468 = getelementptr inbounds i8, ptr %467, i64 8
  %469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %468)
          to label %470 unwind label %513

470:                                              ; preds = %464
  %471 = load double, ptr %469, align 8, !tbaa !56
  %472 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 2) #12
  store double %471, ptr %472, align 8, !tbaa !56
  %473 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 2) #12
  %474 = getelementptr inbounds i8, ptr %473, i64 8
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %474)
          to label %476 unwind label %513

476:                                              ; preds = %470
  %477 = load double, ptr %475, align 8, !tbaa !56
  %478 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef 2) #12
  store double %477, ptr %478, align 8, !tbaa !56
  %479 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 2) #12
  %480 = getelementptr inbounds i8, ptr %479, i64 8
  %481 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %480)
          to label %482 unwind label %513

482:                                              ; preds = %476
  %483 = load double, ptr %481, align 8, !tbaa !56
  %484 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 2) #12
  store double %483, ptr %484, align 8, !tbaa !56
  %485 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 3) #12
  %486 = getelementptr inbounds i8, ptr %485, i64 8
  %487 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %486)
          to label %488 unwind label %513

488:                                              ; preds = %482
  %489 = load double, ptr %487, align 8, !tbaa !56
  %490 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 3) #12
  store double %489, ptr %490, align 8, !tbaa !56
  %491 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 3) #12
  %492 = getelementptr inbounds i8, ptr %491, i64 8
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %492)
          to label %494 unwind label %513

494:                                              ; preds = %488
  %495 = load double, ptr %493, align 8, !tbaa !56
  %496 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 3) #12
  store double %495, ptr %496, align 8, !tbaa !56
  %497 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 3) #12
  %498 = getelementptr inbounds i8, ptr %497, i64 8
  %499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %498)
          to label %500 unwind label %513

500:                                              ; preds = %494
  %501 = load double, ptr %499, align 8, !tbaa !56
  %502 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef 3) #12
  store double %501, ptr %502, align 8, !tbaa !56
  %503 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 3) #12
  %504 = getelementptr inbounds i8, ptr %503, i64 8
  %505 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %504)
          to label %506 unwind label %513

506:                                              ; preds = %500
  %507 = load double, ptr %505, align 8, !tbaa !56
  %508 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 3) #12
  store double %507, ptr %508, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %59) #12
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #12
  %509 = getelementptr inbounds i8, ptr %4, i64 608
  %.pre = load double, ptr @__const.main.phases, align 16, !tbaa !56
  %510 = load double, ptr getelementptr inbounds (i8, ptr @__const.main.phases, i64 8), align 8
  %511 = load double, ptr getelementptr inbounds (i8, ptr @__const.main.phases, i64 16), align 16
  %512 = load double, ptr getelementptr inbounds (i8, ptr @__const.main.phases, i64 24), align 8
  br label %.preheader303

513:                                              ; preds = %500, %494, %488, %482, %476, %470, %464, %458, %452, %446, %440, %434, %428, %422, %416, %398
  %514 = landingpad { ptr, i32 }
          cleanup
  br label %840

.preheader303:                                    ; preds = %506, %604
  %.0227339 = phi double [ 0.000000e+00, %506 ], [ %606, %604 ]
  %515 = fadd double %.0227339, %.pre
  %516 = call double @sin(double noundef %515) #12
  %517 = call double @llvm.fmuladd.f64(double %516, double 1.500000e-01, double 5.000000e-02)
  %518 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 0) #12
  store double %517, ptr %518, align 8, !tbaa !56
  %519 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 0) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #12
  store double 5.000000e-02, ptr %60, align 8, !tbaa !56
  %520 = invoke noundef double @_ZN3tds13EigenAlgebraTIdE3maxIdEEDaRKT_S5_(ptr noundef nonnull align 8 dereferenceable(8) %519, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %522 unwind label %599

.preheader302:                                    ; preds = %604
  %521 = getelementptr inbounds i8, ptr %3, i64 208
  %.not357 = icmp eq i32 %.0233.lcssa, 0
  %wide.trip.count = zext i32 %.0233.lcssa to i64
  br label %610

522:                                              ; preds = %.preheader303
  %523 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 0) #12
  store double %520, ptr %523, align 8, !tbaa !56
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #12
  %524 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 0) #12
  %525 = load double, ptr %524, align 8, !tbaa !56
  %526 = call double @cos(double noundef %515) #12
  %527 = call double @llvm.fmuladd.f64(double %526, double -4.000000e-02, double %525)
  %528 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 0) #12
  store double %527, ptr %528, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %61) #12
  %529 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 0) #12
  %530 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef 0) #12
  %531 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 0) #12
  invoke void @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEC2ERKdS3_S3_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 8 dereferenceable(8) %529, ptr noundef nonnull align 8 dereferenceable(8) %530, ptr noundef nonnull align 8 dereferenceable(8) %531)
          to label %532 unwind label %601

532:                                              ; preds = %522
  %533 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 0) #12
  %534 = getelementptr inbounds i8, ptr %533, i64 8
  %535 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %534, ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #12
  %536 = fadd double %.0227339, %510
  %537 = call double @sin(double noundef %536) #12
  %538 = call double @llvm.fmuladd.f64(double %537, double 1.500000e-01, double 5.000000e-02)
  %539 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 1) #12
  store double %538, ptr %539, align 8, !tbaa !56
  %540 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 1) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #12
  store double 5.000000e-02, ptr %60, align 8, !tbaa !56
  %541 = invoke noundef double @_ZN3tds13EigenAlgebraTIdE3maxIdEEDaRKT_S5_(ptr noundef nonnull align 8 dereferenceable(8) %540, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %542 unwind label %599

542:                                              ; preds = %532
  %543 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 1) #12
  store double %541, ptr %543, align 8, !tbaa !56
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #12
  %544 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 1) #12
  %545 = load double, ptr %544, align 8, !tbaa !56
  %546 = call double @cos(double noundef %536) #12
  %547 = call double @llvm.fmuladd.f64(double %546, double -4.000000e-02, double %545)
  %548 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 1) #12
  store double %547, ptr %548, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %61) #12
  %549 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 1) #12
  %550 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef 1) #12
  %551 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 1) #12
  invoke void @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEC2ERKdS3_S3_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 8 dereferenceable(8) %549, ptr noundef nonnull align 8 dereferenceable(8) %550, ptr noundef nonnull align 8 dereferenceable(8) %551)
          to label %552 unwind label %601

552:                                              ; preds = %542
  %553 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 1) #12
  %554 = getelementptr inbounds i8, ptr %553, i64 8
  %555 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %554, ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #12
  %556 = fadd double %.0227339, %511
  %557 = call double @sin(double noundef %556) #12
  %558 = call double @llvm.fmuladd.f64(double %557, double 1.500000e-01, double 5.000000e-02)
  %559 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 2) #12
  store double %558, ptr %559, align 8, !tbaa !56
  %560 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 2) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #12
  store double 5.000000e-02, ptr %60, align 8, !tbaa !56
  %561 = invoke noundef double @_ZN3tds13EigenAlgebraTIdE3maxIdEEDaRKT_S5_(ptr noundef nonnull align 8 dereferenceable(8) %560, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %562 unwind label %599

562:                                              ; preds = %552
  %563 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 2) #12
  store double %561, ptr %563, align 8, !tbaa !56
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #12
  %564 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 2) #12
  %565 = load double, ptr %564, align 8, !tbaa !56
  %566 = call double @cos(double noundef %556) #12
  %567 = call double @llvm.fmuladd.f64(double %566, double -4.000000e-02, double %565)
  %568 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 2) #12
  store double %567, ptr %568, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %61) #12
  %569 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 2) #12
  %570 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef 2) #12
  %571 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 2) #12
  invoke void @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEC2ERKdS3_S3_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 8 dereferenceable(8) %569, ptr noundef nonnull align 8 dereferenceable(8) %570, ptr noundef nonnull align 8 dereferenceable(8) %571)
          to label %572 unwind label %601

572:                                              ; preds = %562
  %573 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 2) #12
  %574 = getelementptr inbounds i8, ptr %573, i64 8
  %575 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %574, ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #12
  %576 = fadd double %.0227339, %512
  %577 = call double @sin(double noundef %576) #12
  %578 = call double @llvm.fmuladd.f64(double %577, double 1.500000e-01, double 5.000000e-02)
  %579 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 3) #12
  store double %578, ptr %579, align 8, !tbaa !56
  %580 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 3) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #12
  store double 5.000000e-02, ptr %60, align 8, !tbaa !56
  %581 = invoke noundef double @_ZN3tds13EigenAlgebraTIdE3maxIdEEDaRKT_S5_(ptr noundef nonnull align 8 dereferenceable(8) %580, ptr noundef nonnull align 8 dereferenceable(8) %60)
          to label %582 unwind label %599

582:                                              ; preds = %572
  %583 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 3) #12
  store double %581, ptr %583, align 8, !tbaa !56
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #12
  %584 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %51, i64 noundef 3) #12
  %585 = load double, ptr %584, align 8, !tbaa !56
  %586 = call double @cos(double noundef %576) #12
  %587 = call double @llvm.fmuladd.f64(double %586, double -4.000000e-02, double %585)
  %588 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 3) #12
  store double %587, ptr %588, align 8, !tbaa !56
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %61) #12
  %589 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %53, i64 noundef 3) #12
  %590 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %55, i64 noundef 3) #12
  %591 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef 3) #12
  invoke void @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEC2ERKdS3_S3_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 8 dereferenceable(8) %589, ptr noundef nonnull align 8 dereferenceable(8) %590, ptr noundef nonnull align 8 dereferenceable(8) %591)
          to label %592 unwind label %601

592:                                              ; preds = %582
  %593 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %49, i64 noundef 3) #12
  %594 = getelementptr inbounds i8, ptr %593, i64 8
  %595 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %594, ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #12
  %596 = load ptr, ptr %75, align 8, !tbaa !5
  %597 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE1qEv(ptr noundef nonnull align 8 dereferenceable(944) %596)
  %598 = invoke { i64, double } @_ZNK4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EE7computeERKNS1_9MultiBodyIS3_EERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERSC_(ptr noundef nonnull align 8 dereferenceable(88) %49, ptr noundef nonnull align 8 dereferenceable(944) %596, ptr noundef nonnull align 8 dereferenceable(16) %597, ptr noundef nonnull align 8 dereferenceable(16) @all_joint_angles2)
          to label %603 unwind label %608

599:                                              ; preds = %572, %552, %532, %.preheader303
  %600 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #12
  br label %839

601:                                              ; preds = %582, %562, %542, %522
  %602 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #12
  br label %839

603:                                              ; preds = %592
  invoke void @_ZNSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef nonnull align 8 dereferenceable(16) @all_joint_angles2)
          to label %604 unwind label %608

604:                                              ; preds = %603
  %605 = load double, ptr %509, align 8, !tbaa !92
  %606 = call double @llvm.fmuladd.f64(double %605, double 3.000000e+01, double %.0227339)
  %607 = fcmp olt double %606, 0x401921FAFC8B007A
  br i1 %607, label %.preheader303, label %.preheader302, !llvm.loop !93

608:                                              ; preds = %603, %592
  %609 = landingpad { ptr, i32 }
          cleanup
  br label %839

610:                                              ; preds = %.backedge, %.preheader302
  %.0222 = phi i32 [ 0, %.preheader302 ], [ %spec.select, %.backedge ]
  %.0170 = phi i32 [ 0, %.preheader302 ], [ %.0170.be, %.backedge ]
  %611 = load ptr, ptr %521, align 8, !tbaa !94
  %612 = load ptr, ptr %611, align 8, !tbaa !72
  %613 = getelementptr inbounds i8, ptr %612, i64 56
  %614 = load ptr, ptr %613, align 8
  %615 = invoke noundef zeroext i1 %614(ptr noundef nonnull align 8 dereferenceable(8) %611)
          to label %616 unwind label %625

616:                                              ; preds = %610
  br i1 %615, label %837, label %617

617:                                              ; preds = %616
  %618 = sext i32 %.0222 to i64
  %619 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %618) #12
  %620 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) @all_joint_angles2, ptr noundef nonnull align 8 dereferenceable(16) %619)
          to label %.critedge299 unwind label %625

.critedge299:                                     ; preds = %617
  %621 = add nsw i32 %.0222, 1
  %622 = sext i32 %621 to i64
  %623 = call noundef i64 @_ZNKSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #12
  %.not = icmp ugt i64 %623, %622
  %spec.select = select i1 %.not, i32 %621, i32 0
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %62) #12
  %624 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  invoke void @_ZN17LaikagoSimulationIN3tds13EigenAlgebraTIdEEEclERKSt6vectorIdSaIdEE(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.99") align 8 %62, ptr noundef nonnull align 8 dereferenceable(616) %4, ptr noundef nonnull align 8 dereferenceable(24) %624)
          to label %627 unwind label %638

625:                                              ; preds = %.loopexit, %617, %610
  %626 = landingpad { ptr, i32 }
          cleanup
  br label %839

627:                                              ; preds = %.critedge299
  %628 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %629 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIdSaIdEEaSEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %628, ptr noundef nonnull align 8 dereferenceable(24) %62) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #12
  br label %630

630:                                              ; preds = %642, %627
  %indvars.iv401 = phi i64 [ %indvars.iv.next402, %642 ], [ 0, %627 ]
  %631 = invoke noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE9input_dimEv(ptr noundef nonnull align 8 dereferenceable(616) %4)
          to label %632 unwind label %640

632:                                              ; preds = %630
  %633 = sext i32 %631 to i64
  %634 = icmp slt i64 %indvars.iv401, %633
  br i1 %634, label %642, label %635

635:                                              ; preds = %632
  %636 = add nsw i32 %.0170, 1
  %637 = load i32, ptr @frameskip_gfx_sync, align 4, !tbaa !68
  %.not254 = icmp slt i32 %.0170, %637
  br i1 %.not254, label %.backedge, label %.preheader301

638:                                              ; preds = %.critedge299
  %639 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #12
  br label %839

640:                                              ; preds = %630
  %641 = landingpad { ptr, i32 }
          cleanup
  br label %839

642:                                              ; preds = %632
  %643 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %644 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %643, i64 noundef %indvars.iv401) #12
  %645 = load double, ptr %644, align 8, !tbaa !56
  %646 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef 0) #12
  %647 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %646, i64 noundef %indvars.iv401) #12
  store double %645, ptr %647, align 8, !tbaa !56
  %indvars.iv.next402 = add nuw nsw i64 %indvars.iv401, 1
  br label %630, !llvm.loop !95

.preheader301:                                    ; preds = %635
  %648 = load ptr, ptr %75, align 8, !tbaa !5
  %649 = call noundef i32 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE3dofEv(ptr noundef nonnull align 8 dereferenceable(944) %648)
  %650 = load ptr, ptr %75, align 8, !tbaa !5
  %651 = call noundef i32 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE6dof_qdEv(ptr noundef nonnull align 8 dereferenceable(944) %650)
  %652 = add nsw i32 %651, %649
  br i1 %.not357, label %.preheader300, label %.lr.ph342

.loopexit:                                        ; preds = %._crit_edge347, %.preheader300
  invoke void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE6renderEv(ptr noundef nonnull align 8 dereferenceable(304) %3)
          to label %829 unwind label %625

.preheader300:                                    ; preds = %759, %.preheader301
  %653 = load ptr, ptr %75, align 8, !tbaa !5
  %654 = getelementptr inbounds i8, ptr %653, i64 920
  %655 = call noundef i64 @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %654) #12
  %.not358 = icmp eq i64 %655, 0
  br i1 %.not358, label %.loopexit, label %.preheader.preheader

.preheader.preheader:                             ; preds = %.preheader300
  %656 = sext i32 %652 to i64
  br label %.preheader

.lr.ph342:                                        ; preds = %.preheader301, %759
  %indvars.iv405 = phi i64 [ %indvars.iv.next406, %759 ], [ 0, %.preheader301 ]
  %indvars.iv.next406 = add nuw nsw i64 %indvars.iv405, 1
  %657 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv405) #12
  %658 = load i32, ptr %657, align 4, !tbaa !68
  %659 = icmp sgt i32 %658, -1
  br i1 %659, label %660, label %759

660:                                              ; preds = %.lr.ph342
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %63) #12
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Ei(ptr noundef nonnull align 4 dereferenceable(16) %63, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %64) #12
  %661 = load i8, ptr @is_floating, align 1, !tbaa !77, !range !78, !noundef !79
  %662 = trunc nuw i8 %661 to i1
  br i1 %662, label %663, label %696

663:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %65) #12
  %664 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %665 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %664, i64 noundef 4) #12
  %666 = load double, ptr %665, align 8, !tbaa !56
  %667 = fptrunc double %666 to float
  %668 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %669 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %668, i64 noundef 5) #12
  %670 = load double, ptr %669, align 8, !tbaa !56
  %671 = fptrunc double %670 to float
  %672 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %673 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %672, i64 noundef 6) #12
  %674 = load double, ptr %673, align 8, !tbaa !56
  %675 = fptrunc double %674 to float
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %65, float noundef %667, float noundef %671, float noundef %675)
  %676 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEaSERKS2_(ptr noundef nonnull align 4 dereferenceable(16) %63, ptr noundef nonnull align 4 dereferenceable(16) %65)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %65) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %66) #12
  %677 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %678 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %677, i64 noundef 0) #12
  %679 = load double, ptr %678, align 8, !tbaa !56
  %680 = fptrunc double %679 to float
  %681 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %682 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %681, i64 noundef 1) #12
  %683 = load double, ptr %682, align 8, !tbaa !56
  %684 = fptrunc double %683 to float
  %685 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %686 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %685, i64 noundef 2) #12
  %687 = load double, ptr %686, align 8, !tbaa !56
  %688 = fptrunc double %687 to float
  %689 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %690 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %689, i64 noundef 3) #12
  %691 = load double, ptr %690, align 8, !tbaa !56
  %692 = fptrunc double %691 to float
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %66, float noundef %680, float noundef %684, float noundef %688, float noundef %692)
          to label %693 unwind label %694

693:                                              ; preds = %663
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %64, ptr noundef nonnull align 4 dereferenceable(16) %66, i64 16, i1 false), !tbaa.struct !96
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #12
  br label %744

694:                                              ; preds = %663
  %695 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %66) #12
  br label %758

696:                                              ; preds = %660
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %67) #12
  %697 = load ptr, ptr %75, align 8, !tbaa !5
  %698 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE12base_X_worldEv(ptr noundef nonnull align 8 dereferenceable(944) %697)
  invoke void @_ZN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %67, ptr noundef nonnull align 8 dereferenceable(24) %698)
          to label %699 unwind label %734

699:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %68) #12
  %700 = load ptr, ptr %75, align 8, !tbaa !5
  %701 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE12base_X_worldEv(ptr noundef nonnull align 8 dereferenceable(944) %700)
  %702 = getelementptr inbounds i8, ptr %701, i64 24
  invoke void @_ZN3tds13EigenAlgebraTIdE14matrix_to_quatERKN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::Quaternion") align 16 %68, ptr noundef nonnull align 8 dereferenceable(72) %702)
          to label %703 unwind label %736

703:                                              ; preds = %699
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #12
  %704 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %705 unwind label %738

705:                                              ; preds = %703
  %706 = load double, ptr %704, align 8, !tbaa !56
  %707 = fptrunc double %706 to float
  %708 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %709 unwind label %738

709:                                              ; preds = %705
  %710 = load double, ptr %708, align 8, !tbaa !56
  %711 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %67)
          to label %712 unwind label %738

712:                                              ; preds = %709
  %713 = fptrunc double %710 to float
  %714 = load double, ptr %711, align 8, !tbaa !56
  %715 = fptrunc double %714 to float
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %69, float noundef %707, float noundef %713, float noundef %715)
  %716 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEaSERKS2_(ptr noundef nonnull align 4 dereferenceable(16) %63, ptr noundef nonnull align 4 dereferenceable(16) %69)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #12
  %717 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1xEv(ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %718 unwind label %740

718:                                              ; preds = %712
  %719 = load double, ptr %717, align 8, !tbaa !56
  %720 = fptrunc double %719 to float
  %721 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1yEv(ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %722 unwind label %740

722:                                              ; preds = %718
  %723 = load double, ptr %721, align 8, !tbaa !56
  %724 = fptrunc double %723 to float
  %725 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1zEv(ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %726 unwind label %740

726:                                              ; preds = %722
  %727 = load double, ptr %725, align 8, !tbaa !56
  %728 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen14QuaternionBaseINS_10QuaternionIdLi0EEEE1wEv(ptr noundef nonnull align 1 dereferenceable(1) %68)
          to label %729 unwind label %740

729:                                              ; preds = %726
  %730 = fptrunc double %727 to float
  %731 = load double, ptr %728, align 8, !tbaa !56
  %732 = fptrunc double %731 to float
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %70, float noundef %720, float noundef %724, float noundef %730, float noundef %732)
          to label %733 unwind label %740

733:                                              ; preds = %729
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %64, ptr noundef nonnull align 4 dereferenceable(16) %70, i64 16, i1 false), !tbaa.struct !96
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %67) #12
  br label %744

734:                                              ; preds = %696
  %735 = landingpad { ptr, i32 }
          cleanup
  br label %743

736:                                              ; preds = %699
  %737 = landingpad { ptr, i32 }
          cleanup
  br label %742

738:                                              ; preds = %709, %705, %703
  %739 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #12
  br label %742

740:                                              ; preds = %729, %726, %722, %718, %712
  %741 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #12
  br label %742

742:                                              ; preds = %740, %738, %736
  %.pn255 = phi { ptr, i32 } [ %741, %740 ], [ %739, %738 ], [ %737, %736 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %68) #12
  br label %743

743:                                              ; preds = %742, %734
  %.pn255.pn = phi { ptr, i32 } [ %.pn255, %742 ], [ %735, %734 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %67) #12
  br label %758

744:                                              ; preds = %733, %693
  %745 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %63, i32 noundef 0)
  %746 = load float, ptr %745, align 4, !tbaa !97
  %747 = fadd float %746, -1.000000e+00
  store float %747, ptr %745, align 4, !tbaa !97
  %748 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %63, i32 noundef 1)
  %749 = load float, ptr %748, align 4, !tbaa !97
  %750 = fadd float %749, -1.000000e+00
  store float %750, ptr %748, align 4, !tbaa !97
  %751 = load ptr, ptr %115, align 8, !tbaa !69
  %752 = load ptr, ptr %751, align 8, !tbaa !72
  %753 = getelementptr inbounds i8, ptr %752, i64 152
  %754 = load ptr, ptr %753, align 8
  invoke void %754(ptr noundef nonnull align 8 dereferenceable(60) %751, ptr noundef nonnull align 4 dereferenceable(16) %63, ptr noundef nonnull align 4 dereferenceable(16) %64, i32 noundef %658)
          to label %755 unwind label %756

755:                                              ; preds = %744
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #12
  br label %759

756:                                              ; preds = %744
  %757 = landingpad { ptr, i32 }
          cleanup
  br label %758

758:                                              ; preds = %756, %743, %694
  %.pn258 = phi { ptr, i32 } [ %757, %756 ], [ %695, %694 ], [ %.pn255.pn, %743 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %64) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #12
  br label %839

759:                                              ; preds = %755, %.lr.ph342
  %exitcond.not = icmp eq i64 %indvars.iv.next406, %wide.trip.count
  br i1 %exitcond.not, label %.preheader300, label %.lr.ph342, !llvm.loop !98

.preheader:                                       ; preds = %.preheader.preheader, %._crit_edge347
  %indvars.iv415 = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next416, %._crit_edge347 ]
  %.2349 = phi i32 [ %.0233.lcssa, %.preheader.preheader ], [ %.3.lcssa, %._crit_edge347 ]
  %760 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %indvars.iv415) #12
  %761 = load i32, ptr %760, align 4, !tbaa !68
  %762 = icmp sgt i32 %761, 0
  br i1 %762, label %.lr.ph346, label %._crit_edge347

.lr.ph346:                                        ; preds = %.preheader
  %763 = mul nuw nsw i64 %indvars.iv415, 7
  %764 = add nsw i64 %763, %656
  %765 = add nsw i64 %764, 1
  %766 = add nsw i64 %764, 2
  %767 = add nsw i64 %764, 3
  %768 = add nsw i64 %764, 4
  %769 = add nsw i64 %764, 5
  %770 = add nsw i64 %764, 6
  %771 = sext i32 %.2349 to i64
  br label %777

._crit_edge347.loopexit:                          ; preds = %824
  %772 = trunc nsw i64 %indvars.iv.next412 to i32
  br label %._crit_edge347

._crit_edge347:                                   ; preds = %._crit_edge347.loopexit, %.preheader
  %.3.lcssa = phi i32 [ %.2349, %.preheader ], [ %772, %._crit_edge347.loopexit ]
  %indvars.iv.next416 = add nuw nsw i64 %indvars.iv415, 1
  %773 = load ptr, ptr %75, align 8, !tbaa !5
  %774 = getelementptr inbounds i8, ptr %773, i64 920
  %775 = call noundef i64 @_ZNKSt6vectorIN3tds4LinkINS0_13EigenAlgebraTIdEEEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %774) #12
  %776 = icmp ugt i64 %775, %indvars.iv.next416
  br i1 %776, label %.preheader, label %.loopexit, !llvm.loop !99

777:                                              ; preds = %.lr.ph346, %824
  %indvars.iv411 = phi i64 [ %771, %.lr.ph346 ], [ %indvars.iv.next412, %824 ]
  %.0345 = phi i32 [ 0, %.lr.ph346 ], [ %825, %824 ]
  %indvars.iv.next412 = add nsw i64 %indvars.iv411, 1
  %778 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef %indvars.iv411) #12
  %779 = load i32, ptr %778, align 4, !tbaa !68
  %780 = icmp sgt i32 %779, -1
  br i1 %780, label %781, label %824

781:                                              ; preds = %777
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %71) #12
  %782 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %783 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %782, i64 noundef %764) #12
  %784 = load double, ptr %783, align 8, !tbaa !56
  %785 = fptrunc double %784 to float
  %786 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %787 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %786, i64 noundef %765) #12
  %788 = load double, ptr %787, align 8, !tbaa !56
  %789 = fptrunc double %788 to float
  %790 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %791 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %790, i64 noundef %766) #12
  %792 = load double, ptr %791, align 8, !tbaa !56
  %793 = fptrunc double %792 to float
  call void @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEC2Efff(ptr noundef nonnull align 4 dereferenceable(16) %71, float noundef %785, float noundef %789, float noundef %793)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %72) #12
  %794 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %795 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %794, i64 noundef %767) #12
  %796 = load double, ptr %795, align 8, !tbaa !56
  %797 = fptrunc double %796 to float
  %798 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %799 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %798, i64 noundef %768) #12
  %800 = load double, ptr %799, align 8, !tbaa !56
  %801 = fptrunc double %800 to float
  %802 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %803 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %802, i64 noundef %769) #12
  %804 = load double, ptr %803, align 8, !tbaa !56
  %805 = fptrunc double %804 to float
  %806 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_IdSaIdEESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #12
  %807 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %806, i64 noundef %770) #12
  %808 = load double, ptr %807, align 8, !tbaa !56
  %809 = fptrunc double %808 to float
  invoke void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16) %72, float noundef %797, float noundef %801, float noundef %805, float noundef %809)
          to label %810 unwind label %822

810:                                              ; preds = %781
  %811 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %71, i32 noundef 0)
  %812 = load float, ptr %811, align 4, !tbaa !97
  %813 = fadd float %812, -1.000000e+00
  store float %813, ptr %811, align 4, !tbaa !97
  %814 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16) %71, i32 noundef 1)
  %815 = load float, ptr %814, align 4, !tbaa !97
  %816 = fadd float %815, -1.000000e+00
  store float %816, ptr %814, align 4, !tbaa !97
  %817 = load ptr, ptr %115, align 8, !tbaa !69
  %818 = load ptr, ptr %817, align 8, !tbaa !72
  %819 = getelementptr inbounds i8, ptr %818, i64 152
  %820 = load ptr, ptr %819, align 8
  invoke void %820(ptr noundef nonnull align 8 dereferenceable(60) %817, ptr noundef nonnull align 4 dereferenceable(16) %71, ptr noundef nonnull align 4 dereferenceable(16) %72, i32 noundef %779)
          to label %821 unwind label %822

821:                                              ; preds = %810
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #12
  br label %824

822:                                              ; preds = %810, %781
  %823 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #12
  br label %839

824:                                              ; preds = %821, %777
  %825 = add nuw nsw i32 %.0345, 1
  %826 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef %indvars.iv415) #12
  %827 = load i32, ptr %826, align 4, !tbaa !68
  %828 = icmp slt i32 %825, %827
  br i1 %828, label %777, label %._crit_edge347.loopexit, !llvm.loop !100

829:                                              ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %74) #12
  %830 = load i32, ptr @frameskip_gfx_sync, align 4, !tbaa !68
  %831 = sitofp i32 %830 to double
  %832 = load double, ptr %509, align 8, !tbaa !92
  %833 = fmul double %832, %831
  store double %833, ptr %74, align 8, !tbaa !56
  call void @_ZNSt6chrono8durationIdSt5ratioILl1ELl1EEEC2IdvEERKT_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74)
  invoke void @_ZNSt11this_thread9sleep_forIdSt5ratioILl1ELl1EEEEvRKNSt6chrono8durationIT_T0_EE(ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %834 unwind label %835

834:                                              ; preds = %829
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #12
  br label %.backedge

.backedge:                                        ; preds = %834, %635
  %.0170.be = phi i32 [ 0, %834 ], [ %636, %635 ]
  br label %610, !llvm.loop !101

835:                                              ; preds = %829
  %836 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %74) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #12
  br label %839

837:                                              ; preds = %616
  %838 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.23)
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %59) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %55) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %51) #12
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #12
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #12
  call void @_ZN4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EED2Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #12
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %49) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #12
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #12
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #12
  call void @_ZN3tds14UrdfStructuresINS_13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(200) %18) #12
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %18) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %14) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #12
  call void @_ZN17LaikagoSimulationIN3tds13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(616) %4) #12
  call void @llvm.lifetime.end.p0(i64 616, ptr nonnull %4) #12
  call void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(304) %3) #12
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %3) #12
  ret i32 0

839:                                              ; preds = %625, %835, %640, %638, %822, %758, %599, %601, %608
  %.pn264.pn = phi { ptr, i32 } [ %609, %608 ], [ %602, %601 ], [ %600, %599 ], [ %836, %835 ], [ %626, %625 ], [ %641, %640 ], [ %639, %638 ], [ %.pn258, %758 ], [ %823, %822 ]
  call void @_ZNSt6vectorIN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %59) #12
  br label %840

840:                                              ; preds = %839, %513
  %.pn267 = phi { ptr, i32 } [ %514, %513 ], [ %.pn264.pn, %839 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #12
  br label %841

841:                                              ; preds = %840, %414
  %.pn267.pn = phi { ptr, i32 } [ %.pn267, %840 ], [ %415, %414 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %57) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %55) #12
  br label %842

842:                                              ; preds = %841, %412
  %.pn267.pn.pn = phi { ptr, i32 } [ %.pn267.pn, %841 ], [ %413, %412 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %55) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #12
  br label %843

843:                                              ; preds = %842, %410
  %.pn267.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn, %842 ], [ %411, %410 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %51) #12
  br label %844

844:                                              ; preds = %843, %408
  %.pn267.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn.pn, %843 ], [ %409, %408 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %51) #12
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #12
  br label %845

845:                                              ; preds = %844, %406
  %.pn267.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn.pn.pn, %844 ], [ %407, %406 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #12
  br label %846

846:                                              ; preds = %845, %404
  %.pn267.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn.pn.pn.pn, %845 ], [ %405, %404 ]
  call void @_ZN4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EED2Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #12
  br label %847

847:                                              ; preds = %846, %402
  %.pn267.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn267.pn.pn.pn.pn.pn.pn, %846 ], [ %403, %402 ]
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %49) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %48) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #12
  br label %848

848:                                              ; preds = %847, %357
  %.pn278.pn = phi { ptr, i32 } [ %.pn278, %357 ], [ %.pn267.pn.pn.pn.pn.pn.pn.pn, %847 ]
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #12
  br label %849

849:                                              ; preds = %848, %228
  %.pn278.pn.pn = phi { ptr, i32 } [ %.pn278.pn, %848 ], [ %229, %228 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #12
  call void @_ZNSt6vectorIS_IdSaIdEESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #12
  br label %850

850:                                              ; preds = %849, %227
  %.pn278.pn.pn.pn = phi { ptr, i32 } [ %.pn278.pn.pn, %849 ], [ %.pn251.pn, %227 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #12
  br label %851

851:                                              ; preds = %850, %215
  %.pn286.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn, %215 ], [ %.pn278.pn.pn.pn, %850 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #12
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #12
  br label %852

852:                                              ; preds = %851, %138
  %.pn286.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn, %851 ], [ %139, %138 ]
  call void @_ZN3tds14UrdfStructuresINS_13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(200) %18) #12
  br label %853

853:                                              ; preds = %852, %136
  %.pn286.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn, %852 ], [ %137, %136 ]
  call void @llvm.lifetime.end.p0(i64 200, ptr nonnull %18) #12
  br label %854

854:                                              ; preds = %853, %134
  %.pn286.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn, %853 ], [ %135, %134 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #12
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #12
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #12
  br label %855

855:                                              ; preds = %854, %132
  %.pn286.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn, %854 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #12
  call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %14) #12
  br label %856

856:                                              ; preds = %855, %131, %119
  %.pn286.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn.pn, %855 ], [ %.pn248.pn, %131 ], [ %120, %119 ]
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #12
  call void @_ZNSt6vectorIdSaIdEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #12
  br label %857

857:                                              ; preds = %856, %117
  %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn.pn.pn, %856 ], [ %118, %117 ]
  call void @_ZN17LaikagoSimulationIN3tds13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(616) %4) #12
  br label %858

858:                                              ; preds = %857, %79
  %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn, %857 ], [ %80, %79 ]
  call void @llvm.lifetime.end.p0(i64 616, ptr nonnull %4) #12
  call void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEED2Ev(ptr noundef nonnull align 8 dereferenceable(304) %3) #12
  call void @llvm.lifetime.end.p0(i64 304, ptr nonnull %3) #12
  resume { ptr, i32 } %.pn286.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEEC2EiiPKc(ptr noundef nonnull align 8 dereferenceable(304), i32 noundef, i32 noundef, ptr noundef) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE10delete_allEv(ptr noundef nonnull align 8 dereferenceable(304)) local_unnamed_addr #1 align 2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE9num_linksEv(ptr noundef nonnull align 8 dereferenceable(944)) local_unnamed_addr #5 align 2

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #6

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE5linksEv(ptr noundef nonnull align 8 dereferenceable(944)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE9input_dimEv(ptr noundef nonnull align 8 dereferenceable(616)) local_unnamed_addr #2 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN3tds9FileUtils9find_fileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERS6_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4TINY14TinyQuaternionIfNS_10FloatUtilsEEC2Effff(ptr noundef nonnull align 4 dereferenceable(16), float noundef, float noundef, float noundef, float noundef) unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(200) ptr @_ZN3tds9UrdfCacheINS_13EigenAlgebraTIdEEE8retrieveERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3tds9FileUtils12extract_pathEPKcPci(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE15convert_visualsERNS0_14UrdfStructuresIS2_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(304), ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE20visual_instance_uidsEv(ptr noundef nonnull align 8 dereferenceable(944)) local_unnamed_addr #5 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE10output_dimEv(ptr noundef nonnull align 8 dereferenceable(616)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN3tds13EigenAlgebraTIdE19quat_from_euler_rpyERKN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Quaternion") align 16, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #8 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3tds18forward_kinematicsINS_13EigenAlgebraTIdEEEEvRNS_9MultiBodyIT_EE(ptr noundef nonnull align 8 dereferenceable(944)) local_unnamed_addr #2

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE1qEv(ptr noundef nonnull align 8 dereferenceable(944)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sin(double noundef) local_unnamed_addr #10

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #11

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local noundef double @_ZN3tds13EigenAlgebraTIdE3maxIdEEDaRKT_S5_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @cos(double noundef) local_unnamed_addr #10

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

; Function Attrs: mustprogress uwtable
declare dso_local { i64, double } @_ZNK4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EE7computeERKNS1_9MultiBodyIS3_EERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERSC_(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17LaikagoSimulationIN3tds13EigenAlgebraTIdEEEclERKSt6vectorIdSaIdEE(ptr dead_on_unwind noalias writable sret(%"class.std::vector.99") align 8, ptr noundef nonnull align 8 dereferenceable(616), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE3dofEv(ptr noundef nonnull align 8 dereferenceable(944)) local_unnamed_addr #5 align 2

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3tds9MultiBodyINS_13EigenAlgebraTIdEEE6dof_qdEv(ptr noundef nonnull align 8 dereferenceable(944)) local_unnamed_addr #5 align 2

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

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

; Function Attrs: alwaysinline mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(96) ptr @_ZN3tds9MultiBodyINS_13EigenAlgebraTIdEEE12base_X_worldEv(ptr noundef nonnull align 8 dereferenceable(944)) local_unnamed_addr #5 align 2

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

; Function Attrs: alwaysinline mustprogress uwtable
declare dso_local void @_ZN3tds13EigenAlgebraTIdE14matrix_to_quatERKN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::Quaternion") align 16, ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #8 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN4TINY11TinyVector3IfNS_10FloatUtilsEEixEi(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN20OpenGLUrdfVisualizerIN3tds13EigenAlgebraTIdEEE6renderEv(ptr noundef nonnull align 8 dereferenceable(304)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNSt11this_thread9sleep_forIdSt5ratioILl1ELl1EEEEvRKNSt6chrono8durationIT_T0_EE(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !18, i64 592}
!6 = !{!"_ZTS17LaikagoSimulationIN3tds13EigenAlgebraTIdEEE", !7, i64 0, !20, i64 48, !22, i64 80, !18, i64 592, !48, i64 600, !49, i64 608}
!7 = !{!"_ZTSN3tds9UrdfCacheINS_13EigenAlgebraTIdEEEE", !8, i64 0}
!8 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3tds14UrdfStructuresINS6_13EigenAlgebraTIdEEEESt4lessIS5_ESaISt4pairIKS5_SA_EEE", !9, i64 0}
!9 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3tds14UrdfStructuresINS8_13EigenAlgebraTIdEEEEESt10_Select1stISD_ESt4lessIS5_ESaISD_EE", !10, i64 0}
!10 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3tds14UrdfStructuresINS8_13EigenAlgebraTIdEEEEESt10_Select1stISD_ESt4lessIS5_ESaISD_EE13_Rb_tree_implISH_Lb1EEE", !11, i64 0, !13, i64 8}
!11 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !12, i64 0}
!12 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!13 = !{!"_ZTSSt15_Rb_tree_header", !14, i64 0, !19, i64 32}
!14 = !{!"_ZTSSt18_Rb_tree_node_base", !15, i64 0, !18, i64 8, !18, i64 16, !18, i64 24}
!15 = !{!"_ZTSSt14_Rb_tree_color", !16, i64 0}
!16 = !{!"omnipotent char", !17, i64 0}
!17 = !{!"Simple C++ TBAA"}
!18 = !{!"any pointer", !16, i64 0}
!19 = !{!"long", !16, i64 0}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !19, i64 8, !16, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !18, i64 0}
!22 = !{!"_ZTSN3tds5WorldINS_13EigenAlgebraTIdEEEE", !23, i64 8, !27, i64 32, !31, i64 56, !35, i64 80, !39, i64 104, !18, i64 392, !18, i64 400, !18, i64 408, !40, i64 416, !44, i64 440, !48, i64 464, !49, i64 472, !49, i64 480, !50, i64 488}
!23 = !{!"_ZTSSt6vectorIPN3tds9RigidBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIPN3tds9RigidBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIPN3tds9RigidBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIPN3tds9RigidBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!27 = !{!"_ZTSSt6vectorIPN3tds9MultiBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIPN3tds9MultiBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIPN3tds9MultiBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIPN3tds9MultiBodyINS0_13EigenAlgebraTIdEEEESaIS5_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!31 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !32, i64 0}
!32 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !33, i64 0}
!33 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !34, i64 0}
!34 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !16, i64 0}
!35 = !{!"_ZTSSt6vectorIPN3tds8GeometryINS0_13EigenAlgebraTIdEEEESaIS5_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIPN3tds8GeometryINS0_13EigenAlgebraTIdEEEESaIS5_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIPN3tds8GeometryINS0_13EigenAlgebraTIdEEEESaIS5_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIPN3tds8GeometryINS0_13EigenAlgebraTIdEEEESaIS5_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!39 = !{!"_ZTSN3tds19CollisionDispatcherINS_13EigenAlgebraTIdEEEE", !16, i64 0}
!40 = !{!"_ZTSSt6vectorIN3tds21RigidBodyContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseIN3tds21RigidBodyContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN3tds21RigidBodyContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseIN3tds21RigidBodyContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!44 = !{!"_ZTSSt6vectorIS_IN3tds21MultiBodyContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EESaIS6_EE", !45, i64 0}
!45 = !{!"_ZTSSt12_Vector_baseISt6vectorIN3tds21MultiBodyContactPointINS1_13EigenAlgebraTIdEEEESaIS5_EESaIS7_EE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN3tds21MultiBodyContactPointINS1_13EigenAlgebraTIdEEEESaIS5_EESaIS7_EE12_Vector_implE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseISt6vectorIN3tds21MultiBodyContactPointINS1_13EigenAlgebraTIdEEEESaIS5_EESaIS7_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!48 = !{!"int", !16, i64 0}
!49 = !{!"double", !16, i64 0}
!50 = !{!"_ZTSSt6vectorIN3tds12ContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIN3tds12ContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIN3tds12ContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3tds12ContactPointINS0_13EigenAlgebraTIdEEEESaIS4_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = !{!49, !49, i64 0}
!57 = !{!58, !48, i64 332}
!58 = !{!"_ZTSN3tds10UrdfVisualINS_13EigenAlgebraTIdEEEE", !31, i64 0, !31, i64 24, !59, i64 48, !20, i64 208, !66, i64 240, !20, i64 296, !67, i64 328, !48, i64 332}
!59 = !{!"_ZTSN3tds12UrdfGeometryINS_13EigenAlgebraTIdEEEE", !48, i64 0, !60, i64 8, !61, i64 16, !62, i64 32, !63, i64 56, !64, i64 112, !65, i64 144}
!60 = !{!"_ZTSN3tds19UrdfCollisionSphereINS_13EigenAlgebraTIdEEEE", !49, i64 0}
!61 = !{!"_ZTSN3tds20UrdfCollisionCapsuleINS_13EigenAlgebraTIdEEEE", !49, i64 0, !49, i64 8}
!62 = !{!"_ZTSN3tds16UrdfCollisionBoxINS_13EigenAlgebraTIdEEEE", !31, i64 0}
!63 = !{!"_ZTSN3tds17UrdfCollisionMeshINS_13EigenAlgebraTIdEEEE", !20, i64 0, !31, i64 32}
!64 = !{!"_ZTSN3tds18UrdfCollisionPlaneINS_13EigenAlgebraTIdEEEE", !31, i64 0, !49, i64 24}
!65 = !{!"_ZTSN3tds21UrdfCollisionCylinderINS_13EigenAlgebraTIdEEEE", !49, i64 0, !49, i64 8}
!66 = !{!"_ZTSN3tds14VisualMaterialINS_13EigenAlgebraTIdEEEE", !31, i64 0, !20, i64 24}
!67 = !{!"bool", !16, i64 0}
!68 = !{!48, !48, i64 0}
!69 = !{!70, !18, i64 16}
!70 = !{!"_ZTS21TinyCommonGraphicsApp", !18, i64 8, !18, i64 16, !18, i64 24, !18, i64 32, !67, i64 40, !67, i64 41, !67, i64 42, !71, i64 44, !71, i64 48, !71, i64 52, !71, i64 56, !67, i64 60, !16, i64 64}
!71 = !{!"float", !16, i64 0}
!72 = !{!73, !73, i64 0}
!73 = !{!"vtable pointer", !17, i64 0}
!74 = distinct !{!74, !55}
!75 = distinct !{!75, !55}
!76 = distinct !{!76, !55}
!77 = !{!67, !67, i64 0}
!78 = !{i8 0, i8 2}
!79 = !{}
!80 = distinct !{!80, !55}
!81 = distinct !{!81, !55}
!82 = !{!83, !49, i64 80}
!83 = !{!"_ZTSN4TINY21TinyInverseKinematicsIN3tds13EigenAlgebraTIdEELNS_12TinyIKMethodE1EEE", !84, i64 0, !48, i64 24, !49, i64 32, !49, i64 40, !49, i64 48, !49, i64 56, !88, i64 64, !49, i64 80}
!84 = !{!"_ZTSSt6vectorIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE", !85, i64 0}
!85 = !{!"_ZTSSt12_Vector_baseIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE12_Vector_implE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseIN4TINY12TinyIKTargetIN3tds13EigenAlgebraTIdEEEESaIS5_EE17_Vector_impl_dataE", !18, i64 0, !18, i64 8, !18, i64 16}
!88 = !{!"_ZTSN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEE", !89, i64 0}
!89 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEE", !90, i64 0}
!90 = !{!"_ZTSN5Eigen12DenseStorageIdLin1ELin1ELi1ELi0EEE", !18, i64 0, !19, i64 8}
!91 = !{!83, !49, i64 56}
!92 = !{!6, !49, i64 608}
!93 = distinct !{!93, !55}
!94 = !{!70, !18, i64 8}
!95 = distinct !{!95, !55}
!96 = !{i64 0, i64 4, !97, i64 4, i64 4, !97, i64 8, i64 4, !97, i64 12, i64 4, !97}
!97 = !{!71, !71, i64 0}
!98 = distinct !{!98, !55}
!99 = distinct !{!99, !55}
!100 = distinct !{!100, !55}
!101 = distinct !{!101, !55}


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