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

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

%"class.Eigen::CwiseNullaryOp.181" = type { %"class.Eigen::internal::variable_if_dynamic", [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%class.Vector3_t = type { %"class.Eigen::Matrix" }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%class.Matrix3_t = type { %"class.Eigen::Matrix.100" }
%"class.Eigen::Matrix.100" = type { %"class.Eigen::PlainObjectBase.101" }
%"class.Eigen::PlainObjectBase.101" = type { %"class.Eigen::DenseStorage.108" }
%"class.Eigen::DenseStorage.108" = type { %"struct.Eigen::internal::plain_array.109" }
%"struct.Eigen::internal::plain_array.109" = type { [9 x double] }
%"class.Eigen::CwiseNullaryOp.317" = type { %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::ColPivHouseholderQR" = type { %"class.Eigen::Matrix.153", %"class.Eigen::Matrix.57", %"class.Eigen::PermutationMatrix", %"class.Eigen::Matrix.376", %"class.Eigen::Matrix.385", %"class.Eigen::Matrix.385", %"class.Eigen::Matrix.385", i8, i8, double, double, i64, i64 }
%"class.Eigen::Matrix.153" = type { %"class.Eigen::PlainObjectBase.154" }
%"class.Eigen::PlainObjectBase.154" = type { %"class.Eigen::DenseStorage.161" }
%"class.Eigen::DenseStorage.161" = type { ptr, i64, i64 }
%"class.Eigen::Matrix.57" = type { %"class.Eigen::PlainObjectBase.58" }
%"class.Eigen::PlainObjectBase.58" = type { %"class.Eigen::DenseStorage.65" }
%"class.Eigen::DenseStorage.65" = type { ptr, i64 }
%"class.Eigen::PermutationMatrix" = type { %"class.Eigen::Matrix.367" }
%"class.Eigen::Matrix.367" = type { %"class.Eigen::PlainObjectBase.368" }
%"class.Eigen::PlainObjectBase.368" = type { %"class.Eigen::DenseStorage.375" }
%"class.Eigen::DenseStorage.375" = type { ptr, i64 }
%"class.Eigen::Matrix.376" = type { %"class.Eigen::PlainObjectBase.377" }
%"class.Eigen::PlainObjectBase.377" = type { %"class.Eigen::DenseStorage.384" }
%"class.Eigen::DenseStorage.384" = type { ptr, i64 }
%"class.Eigen::Matrix.385" = type { %"class.Eigen::PlainObjectBase.386" }
%"class.Eigen::PlainObjectBase.386" = type { %"class.Eigen::DenseStorage.393" }
%"class.Eigen::DenseStorage.393" = type { ptr, i64 }
%"class.Eigen::CwiseBinaryOp.401" = type <{ ptr, ptr, [8 x i8] }>
%"class.Eigen::Product.435" = type { %"class.Eigen::Transpose", ptr }
%"class.Eigen::Transpose" = type { ptr }
%"class.Eigen::Product.442" = type { ptr, %"class.Eigen::Transpose" }
%"class.Eigen::Product.394" = type { %"class.Eigen::Transpose.335", ptr }
%"class.Eigen::Transpose.335" = type { ptr }
%"class.Eigen::CwiseBinaryOp.449" = type <{ %"class.Eigen::Product.455", ptr, [8 x i8] }>
%"class.Eigen::Product.455" = type { %"class.Eigen::Transpose.335", ptr }
%"class.Eigen::Solve.463" = type { ptr, ptr }
%"struct.RigidBodyDynamics::Model" = type { %"class.std::vector", %"class.std::vector", %"class.std::vector.1", i32, i32, i32, i32, %class.Vector3_t, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.14", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector", %"class.std::vector.21", %"class.std::vector", %"class.std::vector.28", %"class.std::vector.28", %"class.std::vector.35", %"class.std::vector.40", %"class.std::vector", %"class.std::vector.45", %"class.std::vector.8", %"class.std::vector.50", %"class.std::vector.8", %"class.std::vector.8", %"class.Eigen::Matrix.57", %"class.Eigen::Matrix.57", %"class.std::vector.8", %"class.std::vector.66", %"class.std::vector.66", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.21", %"class.std::vector.21", %"class.std::vector.73", i32, %"class.std::vector.80", %"class.std::map" }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.14" = type { %"class.std::vector.15" }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.28" = type { %"class.std::vector.29" }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = type { %"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = type { %"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::CustomJoint *, std::allocator<RigidBodyDynamics::CustomJoint *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.50" = type { %"class.std::vector.51" }
%"class.std::vector.51" = type { %"struct.std::_Vector_base.52" }
%"struct.std::_Vector_base.52" = type { %"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl" }
%"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SpatialMatrix_t, Eigen::aligned_allocator<SpatialMatrix_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.66" = type { %"class.std::vector.67" }
%"class.std::vector.67" = type { %"struct.std::_Vector_base.68" }
%"struct.std::_Vector_base.68" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialRigidBodyInertia, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialRigidBodyInertia>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"class.std::vector.9" }
%"class.std::vector.9" = type { %"struct.std::_Vector_base.10" }
%"struct.std::_Vector_base.10" = type { %"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl" }
%"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SpatialVector_t, Eigen::aligned_allocator<SpatialVector_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.21" = type { %"class.std::vector.22" }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Math::SpatialTransform, Eigen::aligned_allocator<RigidBodyDynamics::Math::SpatialTransform>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.73" = type { %"class.std::vector.74" }
%"class.std::vector.74" = type { %"struct.std::_Vector_base.75" }
%"struct.std::_Vector_base.75" = type { %"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::FixedBody, Eigen::aligned_allocator<RigidBodyDynamics::FixedBody>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.80" = type { %"class.std::vector.81" }
%"class.std::vector.81" = type { %"struct.std::_Vector_base.82" }
%"struct.std::_Vector_base.82" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Body, Eigen::aligned_allocator<RigidBodyDynamics::Body>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.RigidBodyDynamics::InverseKinematicsConstraintSet" = type { %"class.Eigen::Matrix.153", %"class.Eigen::Matrix.153", %"class.Eigen::Matrix.57", i32, double, i32, i32, double, double, double, %"class.std::vector.420", %"class.std::vector", %"class.std::vector.40", %"class.std::vector.40", %"class.std::vector.35", %"class.std::vector" }
%"class.std::vector.420" = type { %"struct.std::_Vector_base.421" }
%"struct.std::_Vector_base.421" = type { %"struct.std::_Vector_base<RigidBodyDynamics::InverseKinematicsConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::InverseKinematicsConstraintSet::ConstraintType>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::InverseKinematicsConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::InverseKinematicsConstraintSet::ConstraintType>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::InverseKinematicsConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::InverseKinematicsConstraintSet::ConstraintType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::InverseKinematicsConstraintSet::ConstraintType, std::allocator<RigidBodyDynamics::InverseKinematicsConstraintSet::ConstraintType>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str.4 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [29 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_ = external hidden unnamed_addr constant [127 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 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 dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #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 uwtable
declare dso_local void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics25CalcBodyToBaseCoordinatesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tb(ptr dead_on_unwind noalias writable sret(%class.Vector3_t) align 8, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics24CalcBodyWorldOrientationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjb(ptr dead_on_unwind noalias writable sret(%class.Matrix3_t) align 8, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i1 noundef zeroext) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics19CalcPointJacobian6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tRNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #2

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1), i64 noundef, i64 noundef) #3 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) #3 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseBinaryOp.401") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics29CalcAngularVelocityfromMatrixERK9Matrix3_t(ptr dead_on_unwind noalias writable sret(%class.Vector3_t) align 8, ptr noundef nonnull align 8 dereferenceable(72)) #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(256) %2, ptr noundef nonnull align 8 dereferenceable(16) %3) #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %"class.Eigen::CwiseNullaryOp.317", align 8
  %11 = alloca %"class.Eigen::CwiseNullaryOp.181", align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.Eigen::CwiseNullaryOp.317", align 8
  %15 = alloca %class.Vector3_t, align 8
  %16 = alloca %class.Matrix3_t, align 8
  %17 = alloca %class.Vector3_t, align 8
  %18 = alloca %"class.Eigen::Product.435", align 8
  %19 = alloca %"class.Eigen::Transpose", align 8
  %20 = alloca %class.Vector3_t, align 8
  %21 = alloca %class.Matrix3_t, align 8
  %22 = alloca %"class.Eigen::Product.442", align 8
  %23 = alloca %"class.Eigen::Transpose", align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca double, align 8
  %34 = alloca i64, align 8
  %35 = alloca %"class.Eigen::Matrix.57", align 8
  %36 = alloca %"class.Eigen::Product.394", align 8
  %37 = alloca %"class.Eigen::Transpose.335", align 8
  %38 = alloca %"class.Eigen::Matrix.153", align 8
  %39 = alloca %"class.Eigen::CwiseNullaryOp.317", align 8
  %40 = alloca ptr, align 8
  %41 = alloca i32, align 4
  %42 = alloca i64, align 8
  %43 = alloca %"class.Eigen::Matrix.153", align 8
  %44 = alloca %"class.Eigen::CwiseBinaryOp.449", align 8
  %45 = alloca %"class.Eigen::Product.455", align 8
  %46 = alloca %"class.Eigen::Transpose.335", align 8
  %47 = alloca %"class.Eigen::Matrix.57", align 8
  %48 = alloca %"class.Eigen::Solve.463", align 8
  %49 = alloca %"class.Eigen::ColPivHouseholderQR", align 8
  %50 = alloca %"class.Eigen::Product.394", align 8
  %51 = alloca %"class.Eigen::Transpose.335", align 8
  %52 = alloca %"class.Eigen::CwiseBinaryOp.401", align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %53 = load ptr, ptr %7, align 8, !tbaa !5
  %54 = call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %53)
  %55 = load ptr, ptr %6, align 8, !tbaa !5
  %56 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %55, i32 0, i32 4
  %57 = load i32, ptr %56, align 4, !tbaa !9
  %58 = zext i32 %57 to i64
  %59 = icmp eq i64 %54, %58
  br i1 %59, label %60, label %61

60:                                               ; preds = %4
  br label %63

61:                                               ; preds = %4
  call void @__assert_fail(ptr noundef @.str.9, ptr noundef @.str.4, i32 noundef 800, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_) #7
  unreachable

62:                                               ; No predecessors!
  br label %63

63:                                               ; preds = %62, %60
  %64 = load ptr, ptr %9, align 8, !tbaa !5
  %65 = call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %64)
  %66 = load ptr, ptr %7, align 8, !tbaa !5
  %67 = call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %66)
  %68 = icmp eq i64 %65, %67
  br i1 %68, label %69, label %70

69:                                               ; preds = %63
  br label %72

70:                                               ; preds = %63
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.4, i32 noundef 801, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_) #7
  unreachable

71:                                               ; No predecessors!
  br label %72

72:                                               ; preds = %71, %69
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #8
  %73 = load ptr, ptr %8, align 8, !tbaa !5
  %74 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %73, i32 0, i32 3
  %75 = load i32, ptr %74, align 8, !tbaa !89
  %76 = zext i32 %75 to i64
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  %78 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %77, i32 0, i32 5
  %79 = load i32, ptr %78, align 8, !tbaa !99
  %80 = zext i32 %79 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4ZeroEll(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.317") align 8 %10, i64 noundef %76, i64 noundef %80)
  %81 = load ptr, ptr %8, align 8, !tbaa !5
  %82 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %81, i32 0, i32 0
  %83 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %82, ptr noundef nonnull align 1 dereferenceable(1) %10)
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #8
  %84 = load ptr, ptr %8, align 8, !tbaa !5
  %85 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %84, i32 0, i32 3
  %86 = load i32, ptr %85, align 8, !tbaa !89
  %87 = zext i32 %86 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.181") align 8 %11, i64 noundef %87)
  %88 = load ptr, ptr %8, align 8, !tbaa !5
  %89 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %88, i32 0, i32 2
  %90 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %89, ptr noundef nonnull align 1 dereferenceable(1) %11)
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #8
  %91 = load ptr, ptr %7, align 8, !tbaa !5
  %92 = load ptr, ptr %9, align 8, !tbaa !5
  %93 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %92, ptr noundef nonnull align 8 dereferenceable(16) %91)
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %94, i32 0, i32 5
  store i32 0, ptr %95, align 8, !tbaa !100
  br label %96

96:                                               ; preds = %601, %72
  %97 = load ptr, ptr %8, align 8, !tbaa !5
  %98 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %97, i32 0, i32 5
  %99 = load i32, ptr %98, align 8, !tbaa !100
  %100 = load ptr, ptr %8, align 8, !tbaa !5
  %101 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %100, i32 0, i32 6
  %102 = load i32, ptr %101, align 4, !tbaa !101
  %103 = icmp ult i32 %99, %102
  br i1 %103, label %104, label %611

104:                                              ; preds = %96
  %105 = load ptr, ptr %6, align 8, !tbaa !5
  %106 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872) %105, ptr noundef %106, ptr noundef null, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #8
  store i32 0, ptr %12, align 4, !tbaa !102
  br label %107

107:                                              ; preds = %415, %104
  %108 = load i32, ptr %12, align 4, !tbaa !102
  %109 = zext i32 %108 to i64
  %110 = load ptr, ptr %8, align 8, !tbaa !5
  %111 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %110, i32 0, i32 11
  %112 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %111) #8
  %113 = icmp ult i64 %109, %112
  br i1 %113, label %115, label %114

114:                                              ; preds = %107
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  br label %418

115:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #8
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %116, i32 0, i32 5
  %118 = load i32, ptr %117, align 8, !tbaa !99
  %119 = zext i32 %118 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4ZeroEll(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.317") align 8 %14, i64 noundef 6, i64 noundef %119)
  %120 = load ptr, ptr %8, align 8, !tbaa !5
  %121 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %120, i32 0, i32 1
  %122 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %121, ptr noundef nonnull align 1 dereferenceable(1) %14)
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #8
  %123 = load ptr, ptr %6, align 8, !tbaa !5
  %124 = load ptr, ptr %9, align 8, !tbaa !5
  %125 = load ptr, ptr %8, align 8, !tbaa !5
  %126 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %125, i32 0, i32 11
  %127 = load i32, ptr %12, align 4, !tbaa !102
  %128 = zext i32 %127 to i64
  %129 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %126, i64 noundef %128) #8
  %130 = load i32, ptr %129, align 4, !tbaa !102
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %131, i32 0, i32 12
  %133 = load i32, ptr %12, align 4, !tbaa !102
  %134 = zext i32 %133 to i64
  %135 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %132, i64 noundef %134) #8
  %136 = load ptr, ptr %8, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %136, i32 0, i32 1
  call void @_ZN17RigidBodyDynamics19CalcPointJacobian6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tRNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872) %123, ptr noundef nonnull align 8 dereferenceable(16) %124, i32 noundef %130, ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 8 dereferenceable(24) %137, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #8
  %138 = load ptr, ptr %6, align 8, !tbaa !5
  %139 = load ptr, ptr %9, align 8, !tbaa !5
  %140 = load ptr, ptr %8, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %140, i32 0, i32 11
  %142 = load i32, ptr %12, align 4, !tbaa !102
  %143 = zext i32 %142 to i64
  %144 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %141, i64 noundef %143) #8
  %145 = load i32, ptr %144, align 4, !tbaa !102
  %146 = load ptr, ptr %8, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %146, i32 0, i32 12
  %148 = load i32, ptr %12, align 4, !tbaa !102
  %149 = zext i32 %148 to i64
  %150 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %147, i64 noundef %149) #8
  call void @_ZN17RigidBodyDynamics25CalcBodyToBaseCoordinatesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.Vector3_t) align 8 %15, ptr noundef nonnull align 8 dereferenceable(872) %138, ptr noundef nonnull align 8 dereferenceable(16) %139, i32 noundef %145, ptr noundef nonnull align 8 dereferenceable(24) %150, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 72, ptr %16) #8
  %151 = load ptr, ptr %6, align 8, !tbaa !5
  %152 = load ptr, ptr %9, align 8, !tbaa !5
  %153 = load ptr, ptr %8, align 8, !tbaa !5
  %154 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %153, i32 0, i32 11
  %155 = load i32, ptr %12, align 4, !tbaa !102
  %156 = zext i32 %155 to i64
  %157 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %154, i64 noundef %156) #8
  %158 = load i32, ptr %157, align 4, !tbaa !102
  call void @_ZN17RigidBodyDynamics24CalcBodyWorldOrientationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjb(ptr dead_on_unwind writable sret(%class.Matrix3_t) align 8 %16, ptr noundef nonnull align 8 dereferenceable(872) %151, ptr noundef nonnull align 8 dereferenceable(16) %152, i32 noundef %158, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %159 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %16)
  %160 = getelementptr inbounds %"class.Eigen::Transpose", ptr %19, i32 0, i32 0
  store ptr %159, ptr %160, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 72, ptr %21) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %161 = load ptr, ptr %8, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %161, i32 0, i32 14
  %163 = load i32, ptr %12, align 4, !tbaa !102
  %164 = zext i32 %163 to i64
  %165 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI9Matrix3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %162, i64 noundef %164) #8
  %166 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %165)
  %167 = getelementptr inbounds %"class.Eigen::Transpose", ptr %23, i32 0, i32 0
  store ptr %166, ptr %167, align 8
  %168 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEmlINS_9TransposeIS2_EEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %16, ptr noundef nonnull align 1 dereferenceable(1) %23)
  %169 = getelementptr inbounds { ptr, ptr }, ptr %22, i32 0, i32 0
  %170 = extractvalue { ptr, ptr } %168, 0
  store ptr %170, ptr %169, align 8
  %171 = getelementptr inbounds { ptr, ptr }, ptr %22, i32 0, i32 1
  %172 = extractvalue { ptr, ptr } %168, 1
  store ptr %172, ptr %171, align 8
  call void @_ZN9Matrix3_tC2IN5Eigen7ProductINS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEENS1_9TransposeIS4_EELi0EEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %21, ptr noundef nonnull align 1 dereferenceable(1) %22)
  call void @_ZN17RigidBodyDynamics29CalcAngularVelocityfromMatrixERK9Matrix3_t(ptr dead_on_unwind writable sret(%class.Vector3_t) align 8 %20, ptr noundef nonnull align 8 dereferenceable(72) %21)
  %173 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEmlINS2_IdLi3ELi1ELi0ELi3ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %19, ptr noundef nonnull align 1 dereferenceable(1) %20)
  %174 = getelementptr inbounds { ptr, ptr }, ptr %18, i32 0, i32 0
  %175 = extractvalue { ptr, ptr } %173, 0
  store ptr %175, ptr %174, align 8
  %176 = getelementptr inbounds { ptr, ptr }, ptr %18, i32 0, i32 1
  %177 = extractvalue { ptr, ptr } %173, 1
  store ptr %177, ptr %176, align 8
  call void @_ZN9Vector3_tC2IN5Eigen7ProductINS1_9TransposeINS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEENS4_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 1 dereferenceable(1) %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %18) #8
  %178 = load ptr, ptr %8, align 8, !tbaa !5
  %179 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %178, i32 0, i32 10
  %180 = load i32, ptr %12, align 4, !tbaa !102
  %181 = zext i32 %180 to i64
  %182 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN17RigidBodyDynamics30InverseKinematicsConstraintSet14ConstraintTypeESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %179, i64 noundef %181) #8
  %183 = load i32, ptr %182, align 4, !tbaa !103
  %184 = icmp eq i32 %183, 2
  br i1 %184, label %185, label %276

185:                                              ; preds = %115
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  store i32 0, ptr %24, align 4, !tbaa !102
  br label %186

186:                                              ; preds = %272, %185
  %187 = load i32, ptr %24, align 4, !tbaa !102
  %188 = icmp ult i32 %187, 3
  br i1 %188, label %190, label %189

189:                                              ; preds = %186
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  br label %275

190:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %191 = load ptr, ptr %8, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %191, i32 0, i32 15
  %193 = load i32, ptr %12, align 4, !tbaa !102
  %194 = zext i32 %193 to i64
  %195 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %192, i64 noundef %194) #8
  %196 = load i32, ptr %195, align 4, !tbaa !102
  %197 = load i32, ptr %24, align 4, !tbaa !102
  %198 = add i32 %196, %197
  store i32 %198, ptr %25, align 4, !tbaa !102
  %199 = load ptr, ptr %8, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %199, i32 0, i32 13
  %201 = load i32, ptr %12, align 4, !tbaa !102
  %202 = zext i32 %201 to i64
  %203 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %200, i64 noundef %202) #8
  %204 = load i32, ptr %24, align 4, !tbaa !102
  %205 = zext i32 %204 to i64
  %206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %203, i64 noundef %205)
  %207 = load double, ptr %206, align 8, !tbaa !105
  %208 = load i32, ptr %24, align 4, !tbaa !102
  %209 = zext i32 %208 to i64
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %15, i64 noundef %209)
  %211 = load double, ptr %210, align 8, !tbaa !105
  %212 = fsub double %207, %211
  %213 = load ptr, ptr %8, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %213, i32 0, i32 2
  %215 = load i32, ptr %25, align 4, !tbaa !102
  %216 = add i32 %215, 3
  %217 = zext i32 %216 to i64
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %214, i64 noundef %217)
  store double %212, ptr %218, align 8, !tbaa !105
  %219 = load i32, ptr %24, align 4, !tbaa !102
  %220 = zext i32 %219 to i64
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %17, i64 noundef %220)
  %222 = load double, ptr %221, align 8, !tbaa !105
  %223 = load ptr, ptr %8, align 8, !tbaa !5
  %224 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %223, i32 0, i32 2
  %225 = load i32, ptr %25, align 4, !tbaa !102
  %226 = zext i32 %225 to i64
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %224, i64 noundef %226)
  store double %222, ptr %227, align 8, !tbaa !105
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  store i32 0, ptr %26, align 4, !tbaa !102
  br label %228

228:                                              ; preds = %268, %190
  %229 = load i32, ptr %26, align 4, !tbaa !102
  %230 = load ptr, ptr %6, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %230, i32 0, i32 5
  %232 = load i32, ptr %231, align 8, !tbaa !99
  %233 = icmp ult i32 %229, %232
  br i1 %233, label %235, label %234

234:                                              ; preds = %228
  store i32 11, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  br label %271

235:                                              ; preds = %228
  %236 = load ptr, ptr %8, align 8, !tbaa !5
  %237 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %236, i32 0, i32 1
  %238 = load i32, ptr %24, align 4, !tbaa !102
  %239 = add i32 %238, 3
  %240 = zext i32 %239 to i64
  %241 = load i32, ptr %26, align 4, !tbaa !102
  %242 = zext i32 %241 to i64
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %237, i64 noundef %240, i64 noundef %242)
  %244 = load double, ptr %243, align 8, !tbaa !105
  %245 = load ptr, ptr %8, align 8, !tbaa !5
  %246 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %245, i32 0, i32 0
  %247 = load i32, ptr %25, align 4, !tbaa !102
  %248 = add i32 %247, 3
  %249 = zext i32 %248 to i64
  %250 = load i32, ptr %26, align 4, !tbaa !102
  %251 = zext i32 %250 to i64
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %246, i64 noundef %249, i64 noundef %251)
  store double %244, ptr %252, align 8, !tbaa !105
  %253 = load ptr, ptr %8, align 8, !tbaa !5
  %254 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %253, i32 0, i32 1
  %255 = load i32, ptr %24, align 4, !tbaa !102
  %256 = zext i32 %255 to i64
  %257 = load i32, ptr %26, align 4, !tbaa !102
  %258 = zext i32 %257 to i64
  %259 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %254, i64 noundef %256, i64 noundef %258)
  %260 = load double, ptr %259, align 8, !tbaa !105
  %261 = load ptr, ptr %8, align 8, !tbaa !5
  %262 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %261, i32 0, i32 0
  %263 = load i32, ptr %25, align 4, !tbaa !102
  %264 = zext i32 %263 to i64
  %265 = load i32, ptr %26, align 4, !tbaa !102
  %266 = zext i32 %265 to i64
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %262, i64 noundef %264, i64 noundef %266)
  store double %260, ptr %267, align 8, !tbaa !105
  br label %268

268:                                              ; preds = %235
  %269 = load i32, ptr %26, align 4, !tbaa !102
  %270 = add i32 %269, 1
  store i32 %270, ptr %26, align 4, !tbaa !102
  br label %228, !llvm.loop !106

271:                                              ; preds = %234
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  br label %272

272:                                              ; preds = %271
  %273 = load i32, ptr %24, align 4, !tbaa !102
  %274 = add i32 %273, 1
  store i32 %274, ptr %24, align 4, !tbaa !102
  br label %186, !llvm.loop !108

275:                                              ; preds = %189
  br label %414

276:                                              ; preds = %115
  %277 = load ptr, ptr %8, align 8, !tbaa !5
  %278 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %277, i32 0, i32 10
  %279 = load i32, ptr %12, align 4, !tbaa !102
  %280 = zext i32 %279 to i64
  %281 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN17RigidBodyDynamics30InverseKinematicsConstraintSet14ConstraintTypeESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %278, i64 noundef %280) #8
  %282 = load i32, ptr %281, align 4, !tbaa !103
  %283 = icmp eq i32 %282, 1
  br i1 %283, label %284, label %338

284:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  store i32 0, ptr %27, align 4, !tbaa !102
  br label %285

285:                                              ; preds = %334, %284
  %286 = load i32, ptr %27, align 4, !tbaa !102
  %287 = icmp ult i32 %286, 3
  br i1 %287, label %289, label %288

288:                                              ; preds = %285
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  br label %337

289:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  %290 = load ptr, ptr %8, align 8, !tbaa !5
  %291 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %290, i32 0, i32 15
  %292 = load i32, ptr %12, align 4, !tbaa !102
  %293 = zext i32 %292 to i64
  %294 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %291, i64 noundef %293) #8
  %295 = load i32, ptr %294, align 4, !tbaa !102
  %296 = load i32, ptr %27, align 4, !tbaa !102
  %297 = add i32 %295, %296
  store i32 %297, ptr %28, align 4, !tbaa !102
  %298 = load i32, ptr %27, align 4, !tbaa !102
  %299 = zext i32 %298 to i64
  %300 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %17, i64 noundef %299)
  %301 = load double, ptr %300, align 8, !tbaa !105
  %302 = load ptr, ptr %8, align 8, !tbaa !5
  %303 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %302, i32 0, i32 2
  %304 = load i32, ptr %28, align 4, !tbaa !102
  %305 = zext i32 %304 to i64
  %306 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %303, i64 noundef %305)
  store double %301, ptr %306, align 8, !tbaa !105
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  store i32 0, ptr %29, align 4, !tbaa !102
  br label %307

307:                                              ; preds = %330, %289
  %308 = load i32, ptr %29, align 4, !tbaa !102
  %309 = load ptr, ptr %6, align 8, !tbaa !5
  %310 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %309, i32 0, i32 5
  %311 = load i32, ptr %310, align 8, !tbaa !99
  %312 = icmp ult i32 %308, %311
  br i1 %312, label %314, label %313

313:                                              ; preds = %307
  store i32 17, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  br label %333

314:                                              ; preds = %307
  %315 = load ptr, ptr %8, align 8, !tbaa !5
  %316 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %315, i32 0, i32 1
  %317 = load i32, ptr %27, align 4, !tbaa !102
  %318 = zext i32 %317 to i64
  %319 = load i32, ptr %29, align 4, !tbaa !102
  %320 = zext i32 %319 to i64
  %321 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %316, i64 noundef %318, i64 noundef %320)
  %322 = load double, ptr %321, align 8, !tbaa !105
  %323 = load ptr, ptr %8, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %323, i32 0, i32 0
  %325 = load i32, ptr %28, align 4, !tbaa !102
  %326 = zext i32 %325 to i64
  %327 = load i32, ptr %29, align 4, !tbaa !102
  %328 = zext i32 %327 to i64
  %329 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %324, i64 noundef %326, i64 noundef %328)
  store double %322, ptr %329, align 8, !tbaa !105
  br label %330

330:                                              ; preds = %314
  %331 = load i32, ptr %29, align 4, !tbaa !102
  %332 = add i32 %331, 1
  store i32 %332, ptr %29, align 4, !tbaa !102
  br label %307, !llvm.loop !109

333:                                              ; preds = %313
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  br label %334

334:                                              ; preds = %333
  %335 = load i32, ptr %27, align 4, !tbaa !102
  %336 = add i32 %335, 1
  store i32 %336, ptr %27, align 4, !tbaa !102
  br label %285, !llvm.loop !110

337:                                              ; preds = %288
  br label %413

338:                                              ; preds = %276
  %339 = load ptr, ptr %8, align 8, !tbaa !5
  %340 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %339, i32 0, i32 10
  %341 = load i32, ptr %12, align 4, !tbaa !102
  %342 = zext i32 %341 to i64
  %343 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN17RigidBodyDynamics30InverseKinematicsConstraintSet14ConstraintTypeESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %340, i64 noundef %342) #8
  %344 = load i32, ptr %343, align 4, !tbaa !103
  %345 = icmp eq i32 %344, 0
  br i1 %345, label %346, label %411

346:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #8
  store i32 0, ptr %30, align 4, !tbaa !102
  br label %347

347:                                              ; preds = %407, %346
  %348 = load i32, ptr %30, align 4, !tbaa !102
  %349 = icmp ult i32 %348, 3
  br i1 %349, label %351, label %350

350:                                              ; preds = %347
  store i32 20, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  br label %410

351:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  %352 = load ptr, ptr %8, align 8, !tbaa !5
  %353 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %352, i32 0, i32 15
  %354 = load i32, ptr %12, align 4, !tbaa !102
  %355 = zext i32 %354 to i64
  %356 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %353, i64 noundef %355) #8
  %357 = load i32, ptr %356, align 4, !tbaa !102
  %358 = load i32, ptr %30, align 4, !tbaa !102
  %359 = add i32 %357, %358
  store i32 %359, ptr %31, align 4, !tbaa !102
  %360 = load ptr, ptr %8, align 8, !tbaa !5
  %361 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %360, i32 0, i32 13
  %362 = load i32, ptr %12, align 4, !tbaa !102
  %363 = zext i32 %362 to i64
  %364 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %361, i64 noundef %363) #8
  %365 = load i32, ptr %30, align 4, !tbaa !102
  %366 = zext i32 %365 to i64
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %364, i64 noundef %366)
  %368 = load double, ptr %367, align 8, !tbaa !105
  %369 = load i32, ptr %30, align 4, !tbaa !102
  %370 = zext i32 %369 to i64
  %371 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %15, i64 noundef %370)
  %372 = load double, ptr %371, align 8, !tbaa !105
  %373 = fsub double %368, %372
  %374 = load ptr, ptr %8, align 8, !tbaa !5
  %375 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %374, i32 0, i32 2
  %376 = load i32, ptr %31, align 4, !tbaa !102
  %377 = zext i32 %376 to i64
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %375, i64 noundef %377)
  store double %373, ptr %378, align 8, !tbaa !105
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  store i32 0, ptr %32, align 4, !tbaa !102
  br label %379

379:                                              ; preds = %403, %351
  %380 = load i32, ptr %32, align 4, !tbaa !102
  %381 = load ptr, ptr %6, align 8, !tbaa !5
  %382 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %381, i32 0, i32 5
  %383 = load i32, ptr %382, align 8, !tbaa !99
  %384 = icmp ult i32 %380, %383
  br i1 %384, label %386, label %385

385:                                              ; preds = %379
  store i32 23, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  br label %406

386:                                              ; preds = %379
  %387 = load ptr, ptr %8, align 8, !tbaa !5
  %388 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %387, i32 0, i32 1
  %389 = load i32, ptr %30, align 4, !tbaa !102
  %390 = add i32 %389, 3
  %391 = zext i32 %390 to i64
  %392 = load i32, ptr %32, align 4, !tbaa !102
  %393 = zext i32 %392 to i64
  %394 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %388, i64 noundef %391, i64 noundef %393)
  %395 = load double, ptr %394, align 8, !tbaa !105
  %396 = load ptr, ptr %8, align 8, !tbaa !5
  %397 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %396, i32 0, i32 0
  %398 = load i32, ptr %31, align 4, !tbaa !102
  %399 = zext i32 %398 to i64
  %400 = load i32, ptr %32, align 4, !tbaa !102
  %401 = zext i32 %400 to i64
  %402 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %397, i64 noundef %399, i64 noundef %401)
  store double %395, ptr %402, align 8, !tbaa !105
  br label %403

403:                                              ; preds = %386
  %404 = load i32, ptr %32, align 4, !tbaa !102
  %405 = add i32 %404, 1
  store i32 %405, ptr %32, align 4, !tbaa !102
  br label %379, !llvm.loop !111

406:                                              ; preds = %385
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %407

407:                                              ; preds = %406
  %408 = load i32, ptr %30, align 4, !tbaa !102
  %409 = add i32 %408, 1
  store i32 %409, ptr %30, align 4, !tbaa !102
  br label %347, !llvm.loop !112

410:                                              ; preds = %350
  br label %412

411:                                              ; preds = %338
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.4, i32 noundef 849, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_) #7
  unreachable

412:                                              ; preds = %410
  br label %413

413:                                              ; preds = %412, %337
  br label %414

414:                                              ; preds = %413, %275
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #8
  br label %415

415:                                              ; preds = %414
  %416 = load i32, ptr %12, align 4, !tbaa !102
  %417 = add i32 %416, 1
  store i32 %417, ptr %12, align 4, !tbaa !102
  br label %107, !llvm.loop !113

418:                                              ; preds = %114
  %419 = load ptr, ptr %8, align 8, !tbaa !5
  %420 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %419, i32 0, i32 2
  %421 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv(ptr noundef nonnull align 1 dereferenceable(1) %420)
  %422 = load ptr, ptr %8, align 8, !tbaa !5
  %423 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %422, i32 0, i32 9
  store double %421, ptr %423, align 8, !tbaa !114
  %424 = load ptr, ptr %8, align 8, !tbaa !5
  %425 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %424, i32 0, i32 9
  %426 = load double, ptr %425, align 8, !tbaa !114
  %427 = load ptr, ptr %8, align 8, !tbaa !5
  %428 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %427, i32 0, i32 7
  %429 = load double, ptr %428, align 8, !tbaa !115
  %430 = fcmp olt double %426, %429
  br i1 %430, label %431, label %432

431:                                              ; preds = %418
  store i1 true, ptr %5, align 1
  br label %612

432:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  store double 0.000000e+00, ptr %33, align 8, !tbaa !105
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  store i64 0, ptr %34, align 8, !tbaa !116
  br label %433

433:                                              ; preds = %454, %432
  %434 = load i64, ptr %34, align 8, !tbaa !116
  %435 = load ptr, ptr %8, align 8, !tbaa !5
  %436 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %435, i32 0, i32 2
  %437 = call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %436)
  %438 = icmp ult i64 %434, %437
  br i1 %438, label %440, label %439

439:                                              ; preds = %433
  store i32 26, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br label %457

440:                                              ; preds = %433
  %441 = load ptr, ptr %8, align 8, !tbaa !5
  %442 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %441, i32 0, i32 2
  %443 = load i64, ptr %34, align 8, !tbaa !116
  %444 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %442, i64 noundef %443)
  %445 = load double, ptr %444, align 8, !tbaa !105
  %446 = load ptr, ptr %8, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %446, i32 0, i32 2
  %448 = load i64, ptr %34, align 8, !tbaa !116
  %449 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %447, i64 noundef %448)
  %450 = load double, ptr %449, align 8, !tbaa !105
  %451 = fmul double %445, %450
  %452 = load double, ptr %33, align 8, !tbaa !105
  %453 = call double @llvm.fmuladd.f64(double %451, double 5.000000e-01, double %452)
  store double %453, ptr %33, align 8, !tbaa !105
  br label %454

454:                                              ; preds = %440
  %455 = load i64, ptr %34, align 8, !tbaa !116
  %456 = add i64 %455, 1
  store i64 %456, ptr %34, align 8, !tbaa !116
  br label %433, !llvm.loop !117

457:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 16, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %458 = load ptr, ptr %8, align 8, !tbaa !5
  %459 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %458, i32 0, i32 0
  %460 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %459)
  %461 = getelementptr inbounds %"class.Eigen::Transpose.335", ptr %37, i32 0, i32 0
  store ptr %460, ptr %461, align 8
  %462 = load ptr, ptr %8, align 8, !tbaa !5
  %463 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %462, i32 0, i32 2
  %464 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %37, ptr noundef nonnull align 1 dereferenceable(1) %463)
  %465 = getelementptr inbounds { ptr, ptr }, ptr %36, i32 0, i32 0
  %466 = extractvalue { ptr, ptr } %464, 0
  store ptr %466, ptr %465, align 8
  %467 = getelementptr inbounds { ptr, ptr }, ptr %36, i32 0, i32 1
  %468 = extractvalue { ptr, ptr } %464, 1
  store ptr %468, ptr %467, align 8
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_7ProductINS_9TransposeINS0_IdLin1ELin1ELi0ELin1ELin1EEEEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 1 dereferenceable(1) %36)
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #8
  %469 = load ptr, ptr %9, align 8, !tbaa !5
  %470 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %469)
          to label %471 unwind label %485

471:                                              ; preds = %457
  %472 = load ptr, ptr %9, align 8, !tbaa !5
  %473 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %472)
          to label %474 unwind label %485

474:                                              ; preds = %471
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4ZeroEll(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.317") align 8 %39, i64 noundef %470, i64 noundef %473)
          to label %475 unwind label %485

475:                                              ; preds = %474
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %476 unwind label %485

476:                                              ; preds = %475
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #8
  %477 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %478 unwind label %489

478:                                              ; preds = %476
  %479 = load ptr, ptr %9, align 8, !tbaa !5
  %480 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %479)
          to label %481 unwind label %489

481:                                              ; preds = %478
  %482 = icmp eq i64 %477, %480
  br i1 %482, label %483, label %484

483:                                              ; preds = %481
  br label %494

484:                                              ; preds = %481
  call void @__assert_fail(ptr noundef @.str.14, ptr noundef @.str.4, i32 noundef 889, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_) #7
  unreachable

485:                                              ; preds = %475, %474, %471, %457
  %486 = landingpad { ptr, i32 }
          cleanup
  %487 = extractvalue { ptr, i32 } %486, 0
  store ptr %487, ptr %40, align 8
  %488 = extractvalue { ptr, i32 } %486, 1
  store i32 %488, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #8
  br label %610

489:                                              ; preds = %478, %476
  %490 = landingpad { ptr, i32 }
          cleanup
  %491 = extractvalue { ptr, i32 } %490, 0
  store ptr %491, ptr %40, align 8
  %492 = extractvalue { ptr, i32 } %490, 1
  store i32 %492, ptr %41, align 4
  br label %609

493:                                              ; No predecessors!
  br label %494

494:                                              ; preds = %493, %483
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  store i64 0, ptr %42, align 8, !tbaa !116
  br label %495

495:                                              ; preds = %524, %494
  %496 = load i64, ptr %42, align 8, !tbaa !116
  %497 = load ptr, ptr %9, align 8, !tbaa !5
  %498 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %497)
          to label %499 unwind label %502

499:                                              ; preds = %495
  %500 = icmp ult i64 %496, %498
  br i1 %500, label %506, label %501

501:                                              ; preds = %499
  store i32 29, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %527

502:                                              ; preds = %513, %509, %506, %495
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %40, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %609

506:                                              ; preds = %499
  %507 = load i64, ptr %42, align 8, !tbaa !116
  %508 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %35, i64 noundef %507)
          to label %509 unwind label %502

509:                                              ; preds = %506
  %510 = load double, ptr %508, align 8, !tbaa !105
  %511 = load i64, ptr %42, align 8, !tbaa !116
  %512 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %35, i64 noundef %511)
          to label %513 unwind label %502

513:                                              ; preds = %509
  %514 = load double, ptr %512, align 8, !tbaa !105
  %515 = fmul double %510, %514
  %516 = load ptr, ptr %8, align 8, !tbaa !5
  %517 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %516, i32 0, i32 4
  %518 = load double, ptr %517, align 8, !tbaa !118
  %519 = call double @llvm.fmuladd.f64(double %515, double 5.000000e-01, double %518)
  %520 = load i64, ptr %42, align 8, !tbaa !116
  %521 = load i64, ptr %42, align 8, !tbaa !116
  %522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %38, i64 noundef %520, i64 noundef %521)
          to label %523 unwind label %502

523:                                              ; preds = %513
  store double %519, ptr %522, align 8, !tbaa !105
  br label %524

524:                                              ; preds = %523
  %525 = load i64, ptr %42, align 8, !tbaa !116
  %526 = add i64 %525, 1
  store i64 %526, ptr %42, align 8, !tbaa !116
  br label %495, !llvm.loop !119

527:                                              ; preds = %501
  call void @llvm.lifetime.start.p0(i64 24, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %528 = load ptr, ptr %8, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %528, i32 0, i32 0
  %530 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %529)
          to label %531 unwind label %576

531:                                              ; preds = %527
  %532 = getelementptr inbounds %"class.Eigen::Transpose.335", ptr %46, i32 0, i32 0
  store ptr %530, ptr %532, align 8
  %533 = load ptr, ptr %8, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %533, i32 0, i32 0
  %535 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %46, ptr noundef nonnull align 1 dereferenceable(1) %534)
          to label %536 unwind label %576

536:                                              ; preds = %531
  %537 = getelementptr inbounds { ptr, ptr }, ptr %45, i32 0, i32 0
  %538 = extractvalue { ptr, ptr } %535, 0
  store ptr %538, ptr %537, align 8
  %539 = getelementptr inbounds { ptr, ptr }, ptr %45, i32 0, i32 1
  %540 = extractvalue { ptr, ptr } %535, 1
  store ptr %540, ptr %539, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEES4_Li0EEEEplIS4_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS6_KSD_EERKNS0_ISD_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.449") align 8 %44, ptr noundef nonnull align 1 dereferenceable(1) %45, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %541 unwind label %576

541:                                              ; preds = %536
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKNS_7ProductINS_9TransposeIS1_EES1_Li0EEEKS1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %542 unwind label %576

542:                                              ; preds = %541
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 160, ptr %49) #8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE19colPivHouseholderQrEv(ptr dead_on_unwind writable sret(%"class.Eigen::ColPivHouseholderQR") align 8 %49, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %543 unwind label %580

543:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %544 = load ptr, ptr %8, align 8, !tbaa !5
  %545 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %544, i32 0, i32 0
  %546 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %545)
          to label %547 unwind label %584

547:                                              ; preds = %543
  %548 = getelementptr inbounds %"class.Eigen::Transpose.335", ptr %51, i32 0, i32 0
  store ptr %546, ptr %548, align 8
  %549 = load ptr, ptr %8, align 8, !tbaa !5
  %550 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %549, i32 0, i32 2
  %551 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %51, ptr noundef nonnull align 1 dereferenceable(1) %550)
          to label %552 unwind label %584

552:                                              ; preds = %547
  %553 = getelementptr inbounds { ptr, ptr }, ptr %50, i32 0, i32 0
  %554 = extractvalue { ptr, ptr } %551, 0
  store ptr %554, ptr %553, align 8
  %555 = getelementptr inbounds { ptr, ptr }, ptr %50, i32 0, i32 1
  %556 = extractvalue { ptr, ptr } %551, 1
  store ptr %556, ptr %555, align 8
  %557 = invoke { ptr, ptr } @_ZNK5Eigen10SolverBaseINS_19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEE5solveINS_7ProductINS_9TransposeIS3_EENS2_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEKNS_5SolveIS4_T_EERKNS_10MatrixBaseISD_EE(ptr noundef nonnull align 1 dereferenceable(1) %49, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %558 unwind label %584

558:                                              ; preds = %552
  %559 = getelementptr inbounds { ptr, ptr }, ptr %48, i32 0, i32 0
  %560 = extractvalue { ptr, ptr } %557, 0
  store ptr %560, ptr %559, align 8
  %561 = getelementptr inbounds { ptr, ptr }, ptr %48, i32 0, i32 1
  %562 = extractvalue { ptr, ptr } %557, 1
  store ptr %562, ptr %561, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_5SolveINS_19ColPivHouseholderQRINS0_IdLin1ELin1ELi0ELin1ELin1EEEEENS_7ProductINS_9TransposeIS5_EES1_Li0EEEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %47, ptr noundef nonnull align 1 dereferenceable(1) %48)
          to label %563 unwind label %584

563:                                              ; preds = %558
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #8
  call void @_ZN5Eigen19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(160) %49) #8
  call void @llvm.lifetime.end.p0(i64 160, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %52) #8
  %564 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.401") align 8 %52, ptr noundef nonnull align 1 dereferenceable(1) %564, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %565 unwind label %589

565:                                              ; preds = %563
  %566 = load ptr, ptr %9, align 8, !tbaa !5
  %567 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_S7_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %566, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %568 unwind label %589

568:                                              ; preds = %565
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #8
  %569 = invoke noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv(ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %570 unwind label %593

570:                                              ; preds = %568
  %571 = load ptr, ptr %8, align 8, !tbaa !5
  %572 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %571, i32 0, i32 7
  %573 = load double, ptr %572, align 8, !tbaa !115
  %574 = fcmp olt double %569, %573
  br i1 %574, label %575, label %597

575:                                              ; preds = %570
  store i1 true, ptr %5, align 1
  store i32 1, ptr %13, align 4
  br label %598

576:                                              ; preds = %541, %536, %531, %527
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %40, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %44) #8
  br label %608

580:                                              ; preds = %542
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %40, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %41, align 4
  br label %588

584:                                              ; preds = %558, %552, %547, %543
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %40, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #8
  call void @_ZN5Eigen19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(160) %49) #8
  br label %588

588:                                              ; preds = %584, %580
  call void @llvm.lifetime.end.p0(i64 160, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #8
  br label %607

589:                                              ; preds = %565, %563
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %40, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %41, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %52) #8
  br label %606

593:                                              ; preds = %568
  %594 = landingpad { ptr, i32 }
          cleanup
  %595 = extractvalue { ptr, i32 } %594, 0
  store ptr %595, ptr %40, align 8
  %596 = extractvalue { ptr, i32 } %594, 1
  store i32 %596, ptr %41, align 4
  br label %606

597:                                              ; preds = %570
  store i32 0, ptr %13, align 4
  br label %598

598:                                              ; preds = %597, %575
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  %599 = load i32, ptr %13, align 4
  switch i32 %599, label %619 [
    i32 0, label %600
    i32 1, label %612
  ]

600:                                              ; preds = %598
  br label %601

601:                                              ; preds = %600
  %602 = load ptr, ptr %8, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.RigidBodyDynamics::InverseKinematicsConstraintSet", ptr %602, i32 0, i32 5
  %604 = load i32, ptr %603, align 8, !tbaa !100
  %605 = add i32 %604, 1
  store i32 %605, ptr %603, align 8, !tbaa !100
  br label %96, !llvm.loop !120

606:                                              ; preds = %593, %589
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #8
  br label %607

607:                                              ; preds = %606, %588
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #8
  br label %608

608:                                              ; preds = %607, %576
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #8
  br label %609

609:                                              ; preds = %608, %502, %489
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #8
  br label %610

610:                                              ; preds = %609, %485
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %35) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %614

611:                                              ; preds = %96
  store i1 false, ptr %5, align 1
  br label %612

612:                                              ; preds = %611, %598, %431
  %613 = load i1, ptr %5, align 1
  ret i1 %613

614:                                              ; preds = %610
  %615 = load ptr, ptr %40, align 8
  %616 = load i32, ptr %41, align 4
  %617 = insertvalue { ptr, i32 } poison, ptr %615, 0
  %618 = insertvalue { ptr, i32 } %617, i32 %616, 1
  resume { ptr, i32 } %618

619:                                              ; preds = %598
  unreachable
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEES4_Li0EEEEplIS4_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS6_KSD_EERKNS0_ISD_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseBinaryOp.449") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_5SolveINS_19ColPivHouseholderQRINS0_IdLin1ELin1ELi0ELin1ELin1EEEEENS_7ProductINS_9TransposeIS5_EES1_Li0EEEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind }
attributes #8 = { nounwind }

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

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


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

%"class.Eigen::CwiseNullaryOp.181" = type { %"class.Eigen::internal::variable_if_dynamic", [8 x i8], %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::internal::variable_if_dynamic" = type { i64 }
%"struct.Eigen::internal::scalar_constant_op" = type { double }
%class.Vector3_t = type { %"class.Eigen::Matrix" }
%"class.Eigen::Matrix" = type { %"class.Eigen::PlainObjectBase" }
%"class.Eigen::PlainObjectBase" = type { %"class.Eigen::DenseStorage" }
%"class.Eigen::DenseStorage" = type { %"struct.Eigen::internal::plain_array" }
%"struct.Eigen::internal::plain_array" = type { [3 x double] }
%class.Matrix3_t = type { %"class.Eigen::Matrix.100" }
%"class.Eigen::Matrix.100" = type { %"class.Eigen::PlainObjectBase.101" }
%"class.Eigen::PlainObjectBase.101" = type { %"class.Eigen::DenseStorage.108" }
%"class.Eigen::DenseStorage.108" = type { %"struct.Eigen::internal::plain_array.109" }
%"struct.Eigen::internal::plain_array.109" = type { [9 x double] }
%"class.Eigen::CwiseNullaryOp.317" = type { %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::ColPivHouseholderQR" = type { %"class.Eigen::Matrix.153", %"class.Eigen::Matrix.57", %"class.Eigen::PermutationMatrix", %"class.Eigen::Matrix.376", %"class.Eigen::Matrix.385", %"class.Eigen::Matrix.385", %"class.Eigen::Matrix.385", i8, i8, double, double, i64, i64 }
%"class.Eigen::Matrix.153" = type { %"class.Eigen::PlainObjectBase.154" }
%"class.Eigen::PlainObjectBase.154" = type { %"class.Eigen::DenseStorage.161" }
%"class.Eigen::DenseStorage.161" = type { ptr, i64, i64 }
%"class.Eigen::Matrix.57" = type { %"class.Eigen::PlainObjectBase.58" }
%"class.Eigen::PlainObjectBase.58" = type { %"class.Eigen::DenseStorage.65" }
%"class.Eigen::DenseStorage.65" = type { ptr, i64 }
%"class.Eigen::PermutationMatrix" = type { %"class.Eigen::Matrix.367" }
%"class.Eigen::Matrix.367" = type { %"class.Eigen::PlainObjectBase.368" }
%"class.Eigen::PlainObjectBase.368" = type { %"class.Eigen::DenseStorage.375" }
%"class.Eigen::DenseStorage.375" = type { ptr, i64 }
%"class.Eigen::Matrix.376" = type { %"class.Eigen::PlainObjectBase.377" }
%"class.Eigen::PlainObjectBase.377" = type { %"class.Eigen::DenseStorage.384" }
%"class.Eigen::DenseStorage.384" = type { ptr, i64 }
%"class.Eigen::Matrix.385" = type { %"class.Eigen::PlainObjectBase.386" }
%"class.Eigen::PlainObjectBase.386" = type { %"class.Eigen::DenseStorage.393" }
%"class.Eigen::DenseStorage.393" = type { ptr, i64 }
%"class.Eigen::CwiseBinaryOp.401" = type <{ ptr, ptr, [8 x i8] }>
%"class.Eigen::Product.435" = type { %"class.Eigen::Transpose", ptr }
%"class.Eigen::Transpose" = type { ptr }
%"class.Eigen::Product.442" = type { ptr, %"class.Eigen::Transpose" }
%"class.Eigen::Product.394" = type { %"class.Eigen::Transpose.335", ptr }
%"class.Eigen::Transpose.335" = type { ptr }
%"class.Eigen::CwiseBinaryOp.449" = type <{ %"class.Eigen::Product.455", ptr, [8 x i8] }>
%"class.Eigen::Product.455" = type { %"class.Eigen::Transpose.335", ptr }
%"class.Eigen::Solve.463" = type { ptr, ptr }

@.str.4 = external hidden unnamed_addr constant [111 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [29 x i8], align 1
@__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_ = external hidden unnamed_addr constant [127 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [50 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 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 dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_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 uwtable
declare dso_local void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics25CalcBodyToBaseCoordinatesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tb(ptr dead_on_unwind noalias writable sret(%class.Vector3_t) align 8, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics24CalcBodyWorldOrientationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjb(ptr dead_on_unwind noalias writable sret(%class.Matrix3_t) align 8, ptr noundef nonnull align 8 dereferenceable(872), ptr noundef nonnull align 8 dereferenceable(16), i32 noundef, i1 noundef zeroext) local_unnamed_addr #2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1), i64 noundef, i64 noundef) local_unnamed_addr #3 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 #3 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseBinaryOp.401") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics29CalcAngularVelocityfromMatrixERK9Matrix3_t(ptr dead_on_unwind noalias writable sret(%class.Vector3_t) align 8, ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(256) %2, ptr noundef nonnull align 8 dereferenceable(16) %3) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.Eigen::CwiseNullaryOp.317", align 8
  %6 = alloca %"class.Eigen::CwiseNullaryOp.181", align 8
  %7 = alloca %"class.Eigen::CwiseNullaryOp.317", align 8
  %8 = alloca %class.Vector3_t, align 8
  %9 = alloca %class.Matrix3_t, align 8
  %10 = alloca %class.Vector3_t, align 8
  %11 = alloca %"class.Eigen::Product.435", align 8
  %12 = alloca %"class.Eigen::Transpose", align 8
  %13 = alloca %class.Vector3_t, align 8
  %14 = alloca %class.Matrix3_t, align 8
  %15 = alloca %"class.Eigen::Product.442", align 8
  %16 = alloca %"class.Eigen::Transpose", align 8
  %17 = alloca %"class.Eigen::Matrix.57", align 8
  %18 = alloca %"class.Eigen::Product.394", align 8
  %19 = alloca %"class.Eigen::Transpose.335", align 8
  %20 = alloca %"class.Eigen::Matrix.153", align 8
  %21 = alloca %"class.Eigen::CwiseNullaryOp.317", align 8
  %22 = alloca %"class.Eigen::Matrix.153", align 8
  %23 = alloca %"class.Eigen::CwiseBinaryOp.449", align 8
  %24 = alloca %"class.Eigen::Product.455", align 8
  %25 = alloca %"class.Eigen::Transpose.335", align 8
  %26 = alloca %"class.Eigen::Matrix.57", align 8
  %27 = alloca %"class.Eigen::Solve.463", align 8
  %28 = alloca %"class.Eigen::ColPivHouseholderQR", align 8
  %29 = alloca %"class.Eigen::Product.394", align 8
  %30 = alloca %"class.Eigen::Transpose.335", align 8
  %31 = alloca %"class.Eigen::CwiseBinaryOp.401", align 8
  %32 = tail call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %1)
  %33 = getelementptr inbounds i8, ptr %0, i64 76
  %34 = load i32, ptr %33, align 4, !tbaa !5
  %35 = zext i32 %34 to i64
  %36 = icmp eq i64 %32, %35
  br i1 %36, label %38, label %37

37:                                               ; preds = %4
  tail call void @__assert_fail(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.4, i32 noundef 800, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_) #7
  unreachable

38:                                               ; preds = %4
  %39 = tail call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %3)
  %40 = tail call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %1)
  %41 = icmp eq i64 %39, %40
  br i1 %41, label %43, label %42

42:                                               ; preds = %38
  tail call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.4, i32 noundef 801, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_) #7
  unreachable

43:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #8
  %44 = getelementptr inbounds i8, ptr %2, i64 64
  %45 = load i32, ptr %44, align 8, !tbaa !88
  %46 = zext i32 %45 to i64
  %47 = getelementptr inbounds i8, ptr %0, i64 80
  %48 = load i32, ptr %47, align 8, !tbaa !98
  %49 = zext i32 %48 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4ZeroEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.317") align 8 %5, i64 noundef %46, i64 noundef %49)
  %50 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 1 dereferenceable(1) %5)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #8
  %51 = load i32, ptr %44, align 8, !tbaa !88
  %52 = zext i32 %51 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.181") align 8 %6, i64 noundef %52)
  %53 = getelementptr inbounds i8, ptr %2, i64 48
  %54 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 1 dereferenceable(1) %6)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #8
  %55 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %1)
  %56 = getelementptr inbounds i8, ptr %2, i64 80
  %57 = getelementptr inbounds i8, ptr %2, i64 84
  store i32 0, ptr %56, align 8, !tbaa !99
  %58 = load i32, ptr %57, align 4, !tbaa !100
  %.not242 = icmp eq i32 %58, 0
  br i1 %.not242, label %._crit_edge215, label %.lr.ph214

.lr.ph214:                                        ; preds = %43
  %59 = getelementptr inbounds i8, ptr %2, i64 136
  %60 = getelementptr inbounds i8, ptr %2, i64 24
  %61 = getelementptr inbounds i8, ptr %2, i64 160
  %62 = getelementptr inbounds i8, ptr %2, i64 208
  %63 = getelementptr inbounds i8, ptr %15, i64 8
  %64 = getelementptr inbounds i8, ptr %11, i64 8
  %65 = getelementptr inbounds i8, ptr %2, i64 112
  %66 = getelementptr inbounds i8, ptr %2, i64 232
  %67 = getelementptr inbounds i8, ptr %2, i64 184
  %68 = getelementptr inbounds i8, ptr %2, i64 104
  %69 = getelementptr inbounds i8, ptr %2, i64 88
  %70 = getelementptr inbounds i8, ptr %18, i64 8
  %71 = getelementptr inbounds i8, ptr %2, i64 72
  %72 = getelementptr inbounds i8, ptr %24, i64 8
  %73 = getelementptr inbounds i8, ptr %29, i64 8
  %74 = getelementptr inbounds i8, ptr %27, i64 8
  br label %75

75:                                               ; preds = %.lr.ph214, %371
  call void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull %3, ptr noundef null, ptr noundef null)
  %76 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  %.not = icmp eq i64 %76, 0
  br i1 %.not, label %._crit_edge208, label %.lr.ph207

._crit_edge208:                                   ; preds = %.loopexit, %75
  %77 = call noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv(ptr noundef nonnull align 1 dereferenceable(1) %53)
  store double %77, ptr %68, align 8, !tbaa !101
  %78 = load double, ptr %69, align 8, !tbaa !102
  %79 = fcmp olt double %77, %78
  br i1 %79, label %._crit_edge215, label %.preheader182

.preheader182:                                    ; preds = %._crit_edge208
  %80 = call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %53)
  %.not223 = icmp eq i64 %80, 0
  br i1 %.not223, label %._crit_edge212, label %.lr.ph211

.lr.ph207:                                        ; preds = %75, %.loopexit
  %81 = phi i64 [ %286, %.loopexit ], [ 0, %75 ]
  %.0163205 = phi i32 [ %285, %.loopexit ], [ 0, %75 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #8
  %82 = load i32, ptr %47, align 8, !tbaa !98
  %83 = zext i32 %82 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4ZeroEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.317") align 8 %7, i64 noundef 6, i64 noundef %83)
  %84 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEaSINS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %60, ptr noundef nonnull align 1 dereferenceable(1) %7)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #8
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %81) #8
  %86 = load i32, ptr %85, align 4, !tbaa !103
  %87 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %81) #8
  call void @_ZN17RigidBodyDynamics19CalcPointJacobian6DERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tRNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef %86, ptr noundef nonnull align 8 dereferenceable(24) %87, ptr noundef nonnull align 8 dereferenceable(24) %60, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #8
  %88 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %81) #8
  %89 = load i32, ptr %88, align 4, !tbaa !103
  %90 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %81) #8
  call void @_ZN17RigidBodyDynamics25CalcBodyToBaseCoordinatesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tb(ptr dead_on_unwind nonnull writable sret(%class.Vector3_t) align 8 %8, ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef %89, ptr noundef nonnull align 8 dereferenceable(24) %90, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %9) #8
  %91 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %81) #8
  %92 = load i32, ptr %91, align 4, !tbaa !103
  call void @_ZN17RigidBodyDynamics24CalcBodyWorldOrientationERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjb(ptr dead_on_unwind nonnull writable sret(%class.Matrix3_t) align 8 %9, ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef %92, i1 noundef zeroext false)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %93 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %9)
  store ptr %93, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %94 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt6vectorI9Matrix3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %62, i64 noundef %81) #8
  %95 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %94)
  store ptr %95, ptr %16, align 8
  %96 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEmlINS_9TransposeIS2_EEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %9, ptr noundef nonnull align 1 dereferenceable(1) %16)
  %97 = extractvalue { ptr, ptr } %96, 0
  store ptr %97, ptr %15, align 8
  %98 = extractvalue { ptr, ptr } %96, 1
  store ptr %98, ptr %63, align 8
  call void @_ZN9Matrix3_tC2IN5Eigen7ProductINS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEENS1_9TransposeIS4_EELi0EEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(72) %14, ptr noundef nonnull align 1 dereferenceable(1) %15)
  call void @_ZN17RigidBodyDynamics29CalcAngularVelocityfromMatrixERK9Matrix3_t(ptr dead_on_unwind nonnull writable sret(%class.Vector3_t) align 8 %13, ptr noundef nonnull align 8 dereferenceable(72) %14)
  %99 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEEEmlINS2_IdLi3ELi1ELi0ELi3ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %12, ptr noundef nonnull align 1 dereferenceable(1) %13)
  %100 = extractvalue { ptr, ptr } %99, 0
  store ptr %100, ptr %11, align 8
  %101 = extractvalue { ptr, ptr } %99, 1
  store ptr %101, ptr %64, align 8
  call void @_ZN9Vector3_tC2IN5Eigen7ProductINS1_9TransposeINS1_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEENS4_IdLi3ELi1ELi0ELi3ELi1EEELi0EEEEERKNS1_10MatrixBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 1 dereferenceable(1) %11)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #8
  %102 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN17RigidBodyDynamics30InverseKinematicsConstraintSet14ConstraintTypeESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %81) #8
  %103 = load i32, ptr %102, align 4, !tbaa !104
  %104 = icmp eq i32 %103, 2
  br i1 %104, label %.preheader.preheader, label %182

.preheader.preheader:                             ; preds = %.lr.ph207
  %105 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %81) #8
  %106 = load i32, ptr %105, align 4, !tbaa !103
  %107 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %81) #8
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %107, i64 noundef 0)
  %109 = load double, ptr %108, align 8, !tbaa !106
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef 0)
  %111 = load double, ptr %110, align 8, !tbaa !106
  %112 = fsub double %109, %111
  %113 = add i32 %106, 3
  %114 = zext i32 %113 to i64
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %114)
  store double %112, ptr %115, align 8, !tbaa !106
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %10, i64 noundef 0)
  %117 = load double, ptr %116, align 8, !tbaa !106
  %118 = zext i32 %106 to i64
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %118)
  store double %117, ptr %119, align 8, !tbaa !106
  %120 = load i32, ptr %47, align 8, !tbaa !98
  %.not222 = icmp eq i32 %120, 0
  br i1 %.not222, label %._crit_edge203, label %.lr.ph202

._crit_edge203:                                   ; preds = %.lr.ph202, %.preheader.preheader
  %121 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %81) #8
  %122 = load i32, ptr %121, align 4, !tbaa !103
  %123 = add i32 %122, 1
  %124 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %81) #8
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %124, i64 noundef 1)
  %126 = load double, ptr %125, align 8, !tbaa !106
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef 1)
  %128 = load double, ptr %127, align 8, !tbaa !106
  %129 = fsub double %126, %128
  %130 = add i32 %122, 4
  %131 = zext i32 %130 to i64
  %132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %131)
  store double %129, ptr %132, align 8, !tbaa !106
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %10, i64 noundef 1)
  %134 = load double, ptr %133, align 8, !tbaa !106
  %135 = zext i32 %123 to i64
  %136 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %135)
  store double %134, ptr %136, align 8, !tbaa !106
  %137 = load i32, ptr %47, align 8, !tbaa !98
  %.not222.1 = icmp eq i32 %137, 0
  br i1 %.not222.1, label %._crit_edge203.1, label %.lr.ph202.1

.lr.ph202.1:                                      ; preds = %._crit_edge203, %.lr.ph202.1
  %indvars.iv236.1 = phi i64 [ %indvars.iv.next237.1, %.lr.ph202.1 ], [ 0, %._crit_edge203 ]
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 4, i64 noundef %indvars.iv236.1)
  %139 = load double, ptr %138, align 8, !tbaa !106
  %140 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %131, i64 noundef %indvars.iv236.1)
  store double %139, ptr %140, align 8, !tbaa !106
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 1, i64 noundef %indvars.iv236.1)
  %142 = load double, ptr %141, align 8, !tbaa !106
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %135, i64 noundef %indvars.iv236.1)
  store double %142, ptr %143, align 8, !tbaa !106
  %indvars.iv.next237.1 = add nuw nsw i64 %indvars.iv236.1, 1
  %144 = load i32, ptr %47, align 8, !tbaa !98
  %145 = zext i32 %144 to i64
  %146 = icmp ult i64 %indvars.iv.next237.1, %145
  br i1 %146, label %.lr.ph202.1, label %._crit_edge203.1, !llvm.loop !107

._crit_edge203.1:                                 ; preds = %.lr.ph202.1, %._crit_edge203
  %147 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %81) #8
  %148 = load i32, ptr %147, align 4, !tbaa !103
  %149 = add i32 %148, 2
  %150 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %81) #8
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %150, i64 noundef 2)
  %152 = load double, ptr %151, align 8, !tbaa !106
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef 2)
  %154 = load double, ptr %153, align 8, !tbaa !106
  %155 = fsub double %152, %154
  %156 = add i32 %148, 5
  %157 = zext i32 %156 to i64
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %157)
  store double %155, ptr %158, align 8, !tbaa !106
  %159 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %10, i64 noundef 2)
  %160 = load double, ptr %159, align 8, !tbaa !106
  %161 = zext i32 %149 to i64
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %161)
  store double %160, ptr %162, align 8, !tbaa !106
  %163 = load i32, ptr %47, align 8, !tbaa !98
  %.not222.2 = icmp eq i32 %163, 0
  br i1 %.not222.2, label %.loopexit, label %.lr.ph202.2

.lr.ph202.2:                                      ; preds = %._crit_edge203.1, %.lr.ph202.2
  %indvars.iv236.2 = phi i64 [ %indvars.iv.next237.2, %.lr.ph202.2 ], [ 0, %._crit_edge203.1 ]
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 5, i64 noundef %indvars.iv236.2)
  %165 = load double, ptr %164, align 8, !tbaa !106
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %157, i64 noundef %indvars.iv236.2)
  store double %165, ptr %166, align 8, !tbaa !106
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 2, i64 noundef %indvars.iv236.2)
  %168 = load double, ptr %167, align 8, !tbaa !106
  %169 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %161, i64 noundef %indvars.iv236.2)
  store double %168, ptr %169, align 8, !tbaa !106
  %indvars.iv.next237.2 = add nuw nsw i64 %indvars.iv236.2, 1
  %170 = load i32, ptr %47, align 8, !tbaa !98
  %171 = zext i32 %170 to i64
  %172 = icmp ult i64 %indvars.iv.next237.2, %171
  br i1 %172, label %.lr.ph202.2, label %.loopexit, !llvm.loop !107

.lr.ph202:                                        ; preds = %.preheader.preheader, %.lr.ph202
  %indvars.iv236 = phi i64 [ %indvars.iv.next237, %.lr.ph202 ], [ 0, %.preheader.preheader ]
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 3, i64 noundef %indvars.iv236)
  %174 = load double, ptr %173, align 8, !tbaa !106
  %175 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %114, i64 noundef %indvars.iv236)
  store double %174, ptr %175, align 8, !tbaa !106
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 0, i64 noundef %indvars.iv236)
  %177 = load double, ptr %176, align 8, !tbaa !106
  %178 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %118, i64 noundef %indvars.iv236)
  store double %177, ptr %178, align 8, !tbaa !106
  %indvars.iv.next237 = add nuw nsw i64 %indvars.iv236, 1
  %179 = load i32, ptr %47, align 8, !tbaa !98
  %180 = zext i32 %179 to i64
  %181 = icmp ult i64 %indvars.iv.next237, %180
  br i1 %181, label %.lr.ph202, label %._crit_edge203, !llvm.loop !107

182:                                              ; preds = %.lr.ph207
  %183 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN17RigidBodyDynamics30InverseKinematicsConstraintSet14ConstraintTypeESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %81) #8
  %184 = load i32, ptr %183, align 4, !tbaa !104
  %185 = icmp eq i32 %184, 1
  br i1 %185, label %.preheader177.preheader, label %227

.preheader177.preheader:                          ; preds = %182
  %186 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %81) #8
  %187 = load i32, ptr %186, align 4, !tbaa !103
  %188 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %10, i64 noundef 0)
  %189 = load double, ptr %188, align 8, !tbaa !106
  %190 = zext i32 %187 to i64
  %191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %190)
  store double %189, ptr %191, align 8, !tbaa !106
  %192 = load i32, ptr %47, align 8, !tbaa !98
  %.not221 = icmp eq i32 %192, 0
  br i1 %.not221, label %._crit_edge198, label %.lr.ph197

._crit_edge198:                                   ; preds = %.lr.ph197, %.preheader177.preheader
  %193 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %81) #8
  %194 = load i32, ptr %193, align 4, !tbaa !103
  %195 = add i32 %194, 1
  %196 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %10, i64 noundef 1)
  %197 = load double, ptr %196, align 8, !tbaa !106
  %198 = zext i32 %195 to i64
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %198)
  store double %197, ptr %199, align 8, !tbaa !106
  %200 = load i32, ptr %47, align 8, !tbaa !98
  %.not221.1 = icmp eq i32 %200, 0
  br i1 %.not221.1, label %._crit_edge198.1, label %.lr.ph197.1

.lr.ph197.1:                                      ; preds = %._crit_edge198, %.lr.ph197.1
  %indvars.iv230.1 = phi i64 [ %indvars.iv.next231.1, %.lr.ph197.1 ], [ 0, %._crit_edge198 ]
  %201 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 1, i64 noundef %indvars.iv230.1)
  %202 = load double, ptr %201, align 8, !tbaa !106
  %203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %198, i64 noundef %indvars.iv230.1)
  store double %202, ptr %203, align 8, !tbaa !106
  %indvars.iv.next231.1 = add nuw nsw i64 %indvars.iv230.1, 1
  %204 = load i32, ptr %47, align 8, !tbaa !98
  %205 = zext i32 %204 to i64
  %206 = icmp ult i64 %indvars.iv.next231.1, %205
  br i1 %206, label %.lr.ph197.1, label %._crit_edge198.1, !llvm.loop !109

._crit_edge198.1:                                 ; preds = %.lr.ph197.1, %._crit_edge198
  %207 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %81) #8
  %208 = load i32, ptr %207, align 4, !tbaa !103
  %209 = add i32 %208, 2
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %10, i64 noundef 2)
  %211 = load double, ptr %210, align 8, !tbaa !106
  %212 = zext i32 %209 to i64
  %213 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %212)
  store double %211, ptr %213, align 8, !tbaa !106
  %214 = load i32, ptr %47, align 8, !tbaa !98
  %.not221.2 = icmp eq i32 %214, 0
  br i1 %.not221.2, label %.loopexit, label %.lr.ph197.2

.lr.ph197.2:                                      ; preds = %._crit_edge198.1, %.lr.ph197.2
  %indvars.iv230.2 = phi i64 [ %indvars.iv.next231.2, %.lr.ph197.2 ], [ 0, %._crit_edge198.1 ]
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 2, i64 noundef %indvars.iv230.2)
  %216 = load double, ptr %215, align 8, !tbaa !106
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %212, i64 noundef %indvars.iv230.2)
  store double %216, ptr %217, align 8, !tbaa !106
  %indvars.iv.next231.2 = add nuw nsw i64 %indvars.iv230.2, 1
  %218 = load i32, ptr %47, align 8, !tbaa !98
  %219 = zext i32 %218 to i64
  %220 = icmp ult i64 %indvars.iv.next231.2, %219
  br i1 %220, label %.lr.ph197.2, label %.loopexit, !llvm.loop !109

.lr.ph197:                                        ; preds = %.preheader177.preheader, %.lr.ph197
  %indvars.iv230 = phi i64 [ %indvars.iv.next231, %.lr.ph197 ], [ 0, %.preheader177.preheader ]
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 0, i64 noundef %indvars.iv230)
  %222 = load double, ptr %221, align 8, !tbaa !106
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %190, i64 noundef %indvars.iv230)
  store double %222, ptr %223, align 8, !tbaa !106
  %indvars.iv.next231 = add nuw nsw i64 %indvars.iv230, 1
  %224 = load i32, ptr %47, align 8, !tbaa !98
  %225 = zext i32 %224 to i64
  %226 = icmp ult i64 %indvars.iv.next231, %225
  br i1 %226, label %.lr.ph197, label %._crit_edge198, !llvm.loop !109

227:                                              ; preds = %182
  %228 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIN17RigidBodyDynamics30InverseKinematicsConstraintSet14ConstraintTypeESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %81) #8
  %229 = load i32, ptr %228, align 4, !tbaa !104
  %230 = icmp eq i32 %229, 0
  br i1 %230, label %.preheader179.preheader, label %284

.preheader179.preheader:                          ; preds = %227
  %231 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %81) #8
  %232 = load i32, ptr %231, align 4, !tbaa !103
  %233 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %81) #8
  %234 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %233, i64 noundef 0)
  %235 = load double, ptr %234, align 8, !tbaa !106
  %236 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef 0)
  %237 = load double, ptr %236, align 8, !tbaa !106
  %238 = fsub double %235, %237
  %239 = zext i32 %232 to i64
  %240 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %239)
  store double %238, ptr %240, align 8, !tbaa !106
  %241 = load i32, ptr %47, align 8, !tbaa !98
  %.not220 = icmp eq i32 %241, 0
  br i1 %.not220, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %.preheader179.preheader
  %242 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %81) #8
  %243 = load i32, ptr %242, align 4, !tbaa !103
  %244 = add i32 %243, 1
  %245 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %81) #8
  %246 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %245, i64 noundef 1)
  %247 = load double, ptr %246, align 8, !tbaa !106
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef 1)
  %249 = load double, ptr %248, align 8, !tbaa !106
  %250 = fsub double %247, %249
  %251 = zext i32 %244 to i64
  %252 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %251)
  store double %250, ptr %252, align 8, !tbaa !106
  %253 = load i32, ptr %47, align 8, !tbaa !98
  %.not220.1 = icmp eq i32 %253, 0
  br i1 %.not220.1, label %._crit_edge.1, label %.lr.ph.1

.lr.ph.1:                                         ; preds = %._crit_edge, %.lr.ph.1
  %indvars.iv.1 = phi i64 [ %indvars.iv.next.1, %.lr.ph.1 ], [ 0, %._crit_edge ]
  %254 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 4, i64 noundef %indvars.iv.1)
  %255 = load double, ptr %254, align 8, !tbaa !106
  %256 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %251, i64 noundef %indvars.iv.1)
  store double %255, ptr %256, align 8, !tbaa !106
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv.1, 1
  %257 = load i32, ptr %47, align 8, !tbaa !98
  %258 = zext i32 %257 to i64
  %259 = icmp ult i64 %indvars.iv.next.1, %258
  br i1 %259, label %.lr.ph.1, label %._crit_edge.1, !llvm.loop !110

._crit_edge.1:                                    ; preds = %.lr.ph.1, %._crit_edge
  %260 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %66, i64 noundef %81) #8
  %261 = load i32, ptr %260, align 4, !tbaa !103
  %262 = add i32 %261, 2
  %263 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef %81) #8
  %264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %263, i64 noundef 2)
  %265 = load double, ptr %264, align 8, !tbaa !106
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %8, i64 noundef 2)
  %267 = load double, ptr %266, align 8, !tbaa !106
  %268 = fsub double %265, %267
  %269 = zext i32 %262 to i64
  %270 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %269)
  store double %268, ptr %270, align 8, !tbaa !106
  %271 = load i32, ptr %47, align 8, !tbaa !98
  %.not220.2 = icmp eq i32 %271, 0
  br i1 %.not220.2, label %.loopexit, label %.lr.ph.2

.lr.ph.2:                                         ; preds = %._crit_edge.1, %.lr.ph.2
  %indvars.iv.2 = phi i64 [ %indvars.iv.next.2, %.lr.ph.2 ], [ 0, %._crit_edge.1 ]
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 5, i64 noundef %indvars.iv.2)
  %273 = load double, ptr %272, align 8, !tbaa !106
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %269, i64 noundef %indvars.iv.2)
  store double %273, ptr %274, align 8, !tbaa !106
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv.2, 1
  %275 = load i32, ptr %47, align 8, !tbaa !98
  %276 = zext i32 %275 to i64
  %277 = icmp ult i64 %indvars.iv.next.2, %276
  br i1 %277, label %.lr.ph.2, label %.loopexit, !llvm.loop !110

.lr.ph:                                           ; preds = %.preheader179.preheader, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.preheader179.preheader ]
  %278 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %60, i64 noundef 3, i64 noundef %indvars.iv)
  %279 = load double, ptr %278, align 8, !tbaa !106
  %280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %2, i64 noundef %239, i64 noundef %indvars.iv)
  store double %279, ptr %280, align 8, !tbaa !106
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %281 = load i32, ptr %47, align 8, !tbaa !98
  %282 = zext i32 %281 to i64
  %283 = icmp ult i64 %indvars.iv.next, %282
  br i1 %283, label %.lr.ph, label %._crit_edge, !llvm.loop !110

284:                                              ; preds = %227
  call void @__assert_fail(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.4, i32 noundef 849, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_) #7
  unreachable

.loopexit:                                        ; preds = %.lr.ph.2, %.lr.ph197.2, %.lr.ph202.2, %._crit_edge.1, %._crit_edge198.1, %._crit_edge203.1
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  %285 = add i32 %.0163205, 1
  %286 = zext i32 %285 to i64
  %287 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #8
  %288 = icmp ugt i64 %287, %286
  br i1 %288, label %.lr.ph207, label %._crit_edge208, !llvm.loop !111

._crit_edge212:                                   ; preds = %.lr.ph211, %.preheader182
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %289 = call ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %2)
  store ptr %289, ptr %19, align 8
  %290 = call { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %19, ptr noundef nonnull align 1 dereferenceable(1) %53)
  %291 = extractvalue { ptr, ptr } %290, 0
  store ptr %291, ptr %18, align 8
  %292 = extractvalue { ptr, ptr } %290, 1
  store ptr %292, ptr %70, align 8
  call void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_7ProductINS_9TransposeINS0_IdLin1ELin1ELi0ELin1ELin1EEEEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 1 dereferenceable(1) %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #8
  %293 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %299 unwind label %310

.lr.ph211:                                        ; preds = %.preheader182, %.lr.ph211
  %.0155210 = phi i64 [ %296, %.lr.ph211 ], [ 0, %.preheader182 ]
  %294 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %.0155210)
  %295 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %53, i64 noundef %.0155210)
  %296 = add nuw i64 %.0155210, 1
  %297 = call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %53)
  %298 = icmp ult i64 %296, %297
  br i1 %298, label %.lr.ph211, label %._crit_edge212, !llvm.loop !112

299:                                              ; preds = %._crit_edge212
  %300 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %301 unwind label %310

301:                                              ; preds = %299
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4ZeroEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.317") align 8 %21, i64 noundef %293, i64 noundef %300)
          to label %302 unwind label %310

302:                                              ; preds = %301
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %303 unwind label %310

303:                                              ; preds = %302
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #8
  %304 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %305 unwind label %312

305:                                              ; preds = %303
  %306 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %307 unwind label %312

307:                                              ; preds = %305
  %308 = icmp eq i64 %304, %306
  br i1 %308, label %.preheader181, label %309

309:                                              ; preds = %307
  call void @__assert_fail(ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.4, i32 noundef 889, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERNS_30InverseKinematicsConstraintSetERS4_) #7
  unreachable

310:                                              ; preds = %302, %301, %299, %._crit_edge212
  %311 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #8
  br label %380

312:                                              ; preds = %305, %303
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %379

.preheader181:                                    ; preds = %307, %330
  %.0 = phi i64 [ %333, %330 ], [ 0, %307 ]
  %314 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %3)
          to label %315 unwind label %319

315:                                              ; preds = %.preheader181
  %316 = icmp ult i64 %.0, %314
  br i1 %316, label %321, label %317

317:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  %318 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %2)
          to label %334 unwind label %360

319:                                              ; preds = %326, %323, %321, %.preheader181
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %379

321:                                              ; preds = %315
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %17, i64 noundef %.0)
          to label %323 unwind label %319

323:                                              ; preds = %321
  %324 = load double, ptr %322, align 8, !tbaa !106
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %17, i64 noundef %.0)
          to label %326 unwind label %319

326:                                              ; preds = %323
  %327 = load double, ptr %325, align 8, !tbaa !106
  %328 = load double, ptr %71, align 8, !tbaa !113
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %20, i64 noundef %.0, i64 noundef %.0)
          to label %330 unwind label %319

330:                                              ; preds = %326
  %331 = fmul double %324, %327
  %332 = call double @llvm.fmuladd.f64(double %331, double 5.000000e-01, double %328)
  store double %332, ptr %329, align 8, !tbaa !106
  %333 = add nuw i64 %.0, 1
  br label %.preheader181, !llvm.loop !114

334:                                              ; preds = %317
  store ptr %318, ptr %25, align 8
  %335 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlIS3_EEKNS_7ProductIS4_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %25, ptr noundef nonnull align 1 dereferenceable(1) %2)
          to label %336 unwind label %360

336:                                              ; preds = %334
  %337 = extractvalue { ptr, ptr } %335, 0
  store ptr %337, ptr %24, align 8
  %338 = extractvalue { ptr, ptr } %335, 1
  store ptr %338, ptr %72, align 8
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEES4_Li0EEEEplIS4_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS6_KSD_EERKNS0_ISD_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.449") align 8 %23, ptr noundef nonnull align 1 dereferenceable(1) %24, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %339 unwind label %360

339:                                              ; preds = %336
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKNS_7ProductINS_9TransposeIS1_EES1_Li0EEEKS1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %340 unwind label %360

340:                                              ; preds = %339
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %28) #8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE19colPivHouseholderQrEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::ColPivHouseholderQR") align 8 %28, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %341 unwind label %362

341:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #8
  %342 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %2)
          to label %343 unwind label %364

343:                                              ; preds = %341
  store ptr %342, ptr %30, align 8
  %344 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %30, ptr noundef nonnull align 1 dereferenceable(1) %53)
          to label %345 unwind label %364

345:                                              ; preds = %343
  %346 = extractvalue { ptr, ptr } %344, 0
  store ptr %346, ptr %29, align 8
  %347 = extractvalue { ptr, ptr } %344, 1
  store ptr %347, ptr %73, align 8
  %348 = invoke { ptr, ptr } @_ZNK5Eigen10SolverBaseINS_19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEE5solveINS_7ProductINS_9TransposeIS3_EENS2_IdLin1ELi1ELi0ELin1ELi1EEELi0EEEEEKNS_5SolveIS4_T_EERKNS_10MatrixBaseISD_EE(ptr noundef nonnull align 1 dereferenceable(1) %28, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %349 unwind label %364

349:                                              ; preds = %345
  %350 = extractvalue { ptr, ptr } %348, 0
  store ptr %350, ptr %27, align 8
  %351 = extractvalue { ptr, ptr } %348, 1
  store ptr %351, ptr %74, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_5SolveINS_19ColPivHouseholderQRINS0_IdLin1ELin1ELi0ELin1ELin1EEEEENS_7ProductINS_9TransposeIS5_EES1_Li0EEEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %26, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %352 unwind label %364

352:                                              ; preds = %349
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  call void @_ZN5Eigen19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(160) %28) #8
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #8
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEEplIS2_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNS6_6traitsIT_E6ScalarEEEKS2_KS9_EERKNS0_IS9_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.401") align 8 %31, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %353 unwind label %367

353:                                              ; preds = %352
  %354 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKS1_S7_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %355 unwind label %367

355:                                              ; preds = %353
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #8
  %356 = invoke noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv(ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %357 unwind label %369

357:                                              ; preds = %355
  %358 = load double, ptr %69, align 8, !tbaa !102
  %359 = fcmp uge double %356, %358
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #8
  br i1 %359, label %371, label %._crit_edge215

360:                                              ; preds = %339, %336, %334, %317
  %361 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  br label %378

362:                                              ; preds = %340
  %363 = landingpad { ptr, i32 }
          cleanup
  br label %366

364:                                              ; preds = %349, %345, %343, %341
  %365 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  call void @_ZN5Eigen19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(160) %28) #8
  br label %366

366:                                              ; preds = %364, %362
  %.pn = phi { ptr, i32 } [ %365, %364 ], [ %363, %362 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #8
  br label %377

367:                                              ; preds = %353, %352
  %368 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #8
  br label %376

369:                                              ; preds = %355
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %376

371:                                              ; preds = %357
  %372 = load i32, ptr %56, align 8, !tbaa !99
  %373 = add i32 %372, 1
  store i32 %373, ptr %56, align 8, !tbaa !99
  %374 = load i32, ptr %57, align 4, !tbaa !100
  %375 = icmp ult i32 %373, %374
  br i1 %375, label %75, label %._crit_edge215, !llvm.loop !115

376:                                              ; preds = %369, %367
  %.pn170 = phi { ptr, i32 } [ %370, %369 ], [ %368, %367 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #8
  br label %377

377:                                              ; preds = %376, %366
  %.pn170.pn = phi { ptr, i32 } [ %.pn170, %376 ], [ %.pn, %366 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #8
  br label %378

378:                                              ; preds = %377, %360
  %.pn170.pn.pn = phi { ptr, i32 } [ %.pn170.pn, %377 ], [ %361, %360 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #8
  br label %379

379:                                              ; preds = %378, %319, %312
  %.pn174 = phi { ptr, i32 } [ %320, %319 ], [ %.pn170.pn.pn, %378 ], [ %313, %312 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #8
  br label %380

380:                                              ; preds = %379, %310
  %.pn174.pn = phi { ptr, i32 } [ %.pn174, %379 ], [ %311, %310 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #8
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #8
  resume { ptr, i32 } %.pn174.pn

._crit_edge215:                                   ; preds = %._crit_edge208, %371, %357, %43
  %.lcssa = phi i1 [ false, %43 ], [ true, %357 ], [ false, %371 ], [ true, %._crit_edge208 ]
  ret i1 %.lcssa
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEES4_Li0EEEEplIS4_EEKNS_13CwiseBinaryOpINS_8internal13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS6_KSD_EERKNS0_ISD_EE(ptr dead_on_unwind noalias writable sret(%"class.Eigen::CwiseBinaryOp.449") align 8, ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_5SolveINS_19ColPivHouseholderQRINS0_IdLin1ELin1ELi0ELin1ELin1EEEEENS_7ProductINS_9TransposeIS5_EES1_Li0EEEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { noreturn nounwind }
attributes #8 = { nounwind }

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

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


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