; 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.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::CwiseNullaryOp.317" = type { %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", %"struct.Eigen::internal::scalar_constant_op" }
%"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::CwiseBinaryOp.322" = type <{ %"class.Eigen::Product.328", %"class.Eigen::CwiseBinaryOp.343", [8 x i8] }>
%"class.Eigen::Product.328" = type { ptr, %"class.Eigen::Transpose.335" }
%"class.Eigen::Transpose.335" = type { ptr }
%"class.Eigen::CwiseBinaryOp.343" = type <{ [8 x i8], %"class.Eigen::CwiseNullaryOp.349", %"class.Eigen::CwiseNullaryOp.354", [8 x i8] }>
%"class.Eigen::CwiseNullaryOp.349" = type { %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::CwiseNullaryOp.354" = type <{ %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", [8 x i8] }>
%"class.Eigen::Solve" = type { ptr, ptr }
%"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::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::Product.394" = type { %"class.Eigen::Transpose.335", ptr }
%"class.Eigen::CwiseBinaryOp.401" = type <{ ptr, ptr, [8 x i8] }>
%"struct.RigidBodyDynamics::Model" = type { %"class.std::vector", %"class.std::vector", %"class.std::vector.1", i32, i32, i32, i32, %class.Vector3_t, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.14", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector", %"class.std::vector.21", %"class.std::vector", %"class.std::vector.28", %"class.std::vector.28", %"class.std::vector.35", %"class.std::vector.40", %"class.std::vector", %"class.std::vector.45", %"class.std::vector.8", %"class.std::vector.50", %"class.std::vector.8", %"class.std::vector.8", %"class.Eigen::Matrix.57", %"class.Eigen::Matrix.57", %"class.std::vector.8", %"class.std::vector.66", %"class.std::vector.66", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.21", %"class.std::vector.21", %"class.std::vector.73", i32, %"class.std::vector.80", %"class.std::map" }
%"class.std::vector.1" = type { %"struct.std::_Vector_base.2" }
%"struct.std::_Vector_base.2" = type { %"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<unsigned int>, std::allocator<std::vector<unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.14" = type { %"class.std::vector.15" }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl" }
%"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl" = type { %"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RigidBodyDynamics::Joint, Eigen::aligned_allocator<RigidBodyDynamics::Joint>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.28" = type { %"class.std::vector.29" }
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 6, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 6, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.35" = type { %"struct.std::_Vector_base.36" }
%"struct.std::_Vector_base.36" = type { %"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Matrix3_t, std::allocator<Matrix3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.40" = type { %"struct.std::_Vector_base.41" }
%"struct.std::_Vector_base.41" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector3_t, std::allocator<Vector3_t>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = 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 }

@.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_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERKSt6vectorIjSaIjEERKS7_I9Vector3_tSaISC_EESG_RS4_ddj = external hidden unnamed_addr constant [208 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [36 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: 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) #1

; 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) #2 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 #3 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) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics17CalcPointJacobianERNS_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) #1

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

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

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

65:                                               ; preds = %9
  br label %68

66:                                               ; preds = %9
  call void @__assert_fail(ptr noundef @.str.9, ptr noundef @.str.4, i32 noundef 614, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERKSt6vectorIjSaIjEERKS7_I9Vector3_tSaISC_EESG_RS4_ddj) #6
  unreachable

67:                                               ; No predecessors!
  br label %68

68:                                               ; preds = %67, %65
  %69 = load ptr, ptr %13, align 8, !tbaa !5
  %70 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  %71 = load ptr, ptr %14, align 8, !tbaa !5
  %72 = call noundef i64 @_ZNKSt6vectorI9Vector3_tSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #7
  %73 = icmp eq i64 %70, %72
  br i1 %73, label %74, label %75

74:                                               ; preds = %68
  br label %77

75:                                               ; preds = %68
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.4, i32 noundef 615, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERKSt6vectorIjSaIjEERKS7_I9Vector3_tSaISC_EESG_RS4_ddj) #6
  unreachable

76:                                               ; No predecessors!
  br label %77

77:                                               ; preds = %76, %74
  %78 = load ptr, ptr %13, align 8, !tbaa !5
  %79 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %78) #7
  %80 = load ptr, ptr %15, align 8, !tbaa !5
  %81 = call noundef i64 @_ZNKSt6vectorI9Vector3_tSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #7
  %82 = icmp eq i64 %79, %81
  br i1 %82, label %83, label %84

83:                                               ; preds = %77
  br label %86

84:                                               ; preds = %77
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.4, i32 noundef 616, ptr noundef @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERKSt6vectorIjSaIjEERKS7_I9Vector3_tSaISC_EESG_RS4_ddj) #6
  unreachable

85:                                               ; No predecessors!
  br label %86

86:                                               ; preds = %85, %83
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #7
  %87 = load ptr, ptr %13, align 8, !tbaa !5
  %88 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %87) #7
  %89 = mul i64 3, %88
  %90 = load ptr, ptr %11, align 8, !tbaa !5
  %91 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %90, i32 0, i32 5
  %92 = load i32, ptr %91, align 8, !tbaa !92
  %93 = zext i32 %92 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4ZeroEll(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.317") align 8 %21, i64 noundef %89, i64 noundef %93)
  call 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)
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #7
  %94 = load ptr, ptr %13, align 8, !tbaa !5
  %95 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %94) #7
  %96 = mul i64 3, %95
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.181") align 8 %23, i64 noundef %96)
          to label %97 unwind label %108

97:                                               ; preds = %86
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %98 unwind label %108

98:                                               ; preds = %97
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #7
  %99 = load ptr, ptr %12, align 8, !tbaa !5
  %100 = load ptr, ptr %16, align 8, !tbaa !5
  %101 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %100, ptr noundef nonnull align 8 dereferenceable(16) %99)
          to label %102 unwind label %112

102:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %103

103:                                              ; preds = %417, %102
  %104 = load i32, ptr %26, align 4, !tbaa !11
  %105 = load i32, ptr %19, align 4, !tbaa !11
  %106 = icmp ult i32 %104, %105
  br i1 %106, label %116, label %107

107:                                              ; preds = %103
  store i32 2, ptr %27, align 4
  br label %428

108:                                              ; preds = %97, %86
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %24, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #7
  br label %435

112:                                              ; preds = %98
  %113 = landingpad { ptr, i32 }
          cleanup
  %114 = extractvalue { ptr, i32 } %113, 0
  store ptr %114, ptr %24, align 8
  %115 = extractvalue { ptr, i32 } %113, 1
  store i32 %115, ptr %25, align 4
  br label %434

116:                                              ; preds = %103
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872) %117, ptr noundef %118, ptr noundef null, ptr noundef null)
          to label %119 unwind label %127

119:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 0, ptr %28, align 4, !tbaa !11
  br label %120

120:                                              ; preds = %243, %119
  %121 = load i32, ptr %28, align 4, !tbaa !11
  %122 = zext i32 %121 to i64
  %123 = load ptr, ptr %13, align 8, !tbaa !5
  %124 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %123) #7
  %125 = icmp ult i64 %122, %124
  br i1 %125, label %131, label %126

126:                                              ; preds = %120
  store i32 5, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %249

127:                                              ; preds = %249, %116
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %24, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %25, align 4
  br label %430

131:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #7
  %132 = load ptr, ptr %11, align 8, !tbaa !5
  %133 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %132, i32 0, i32 5
  %134 = load i32, ptr %133, align 8, !tbaa !92
  %135 = zext i32 %134 to i64
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4ZeroEll(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.317") align 8 %30, i64 noundef 3, i64 noundef %135)
          to label %136 unwind label %166

136:                                              ; preds = %131
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKT_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %30)
          to label %137 unwind label %166

137:                                              ; preds = %136
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #7
  %138 = load ptr, ptr %11, align 8, !tbaa !5
  %139 = load ptr, ptr %16, align 8, !tbaa !5
  %140 = load ptr, ptr %13, align 8, !tbaa !5
  %141 = load i32, ptr %28, align 4, !tbaa !11
  %142 = zext i32 %141 to i64
  %143 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %140, i64 noundef %142) #7
  %144 = load i32, ptr %143, align 4, !tbaa !11
  %145 = load ptr, ptr %14, align 8, !tbaa !5
  %146 = load i32, ptr %28, align 4, !tbaa !11
  %147 = zext i32 %146 to i64
  %148 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %145, i64 noundef %147) #7
  invoke void @_ZN17RigidBodyDynamics17CalcPointJacobianERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tRNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872) %138, ptr noundef nonnull align 8 dereferenceable(16) %139, i32 noundef %144, ptr noundef nonnull align 8 dereferenceable(24) %148, ptr noundef nonnull align 8 dereferenceable(24) %29, i1 noundef zeroext false)
          to label %149 unwind label %170

149:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #7
  %150 = load ptr, ptr %11, align 8, !tbaa !5
  %151 = load ptr, ptr %16, align 8, !tbaa !5
  %152 = load ptr, ptr %13, align 8, !tbaa !5
  %153 = load i32, ptr %28, align 4, !tbaa !11
  %154 = zext i32 %153 to i64
  %155 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %152, i64 noundef %154) #7
  %156 = load i32, ptr %155, align 4, !tbaa !11
  %157 = load ptr, ptr %14, align 8, !tbaa !5
  %158 = load i32, ptr %28, align 4, !tbaa !11
  %159 = zext i32 %158 to i64
  %160 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %157, i64 noundef %159) #7
  invoke void @_ZN17RigidBodyDynamics25CalcBodyToBaseCoordinatesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tb(ptr dead_on_unwind writable sret(%class.Vector3_t) align 8 %31, ptr noundef nonnull align 8 dereferenceable(872) %150, ptr noundef nonnull align 8 dereferenceable(16) %151, i32 noundef %156, ptr noundef nonnull align 8 dereferenceable(24) %160, i1 noundef zeroext false)
          to label %161 unwind label %174

161:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  store i32 0, ptr %32, align 4, !tbaa !11
  br label %162

162:                                              ; preds = %234, %161
  %163 = load i32, ptr %32, align 4, !tbaa !11
  %164 = icmp ult i32 %163, 3
  br i1 %164, label %178, label %165

165:                                              ; preds = %162
  store i32 8, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %242

166:                                              ; preds = %136, %131
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %24, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #7
  br label %248

170:                                              ; preds = %137
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %24, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %25, align 4
  br label %247

174:                                              ; preds = %149
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %24, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %25, align 4
  br label %246

178:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %179

179:                                              ; preds = %204, %178
  %180 = load i32, ptr %33, align 4, !tbaa !11
  %181 = load ptr, ptr %11, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.RigidBodyDynamics::Model", ptr %181, i32 0, i32 5
  %183 = load i32, ptr %182, align 8, !tbaa !92
  %184 = icmp ult i32 %180, %183
  br i1 %184, label %186, label %185

185:                                              ; preds = %179
  store i32 11, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %211

186:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %187 = load i32, ptr %28, align 4, !tbaa !11
  %188 = mul i32 %187, 3
  %189 = load i32, ptr %32, align 4, !tbaa !11
  %190 = add i32 %188, %189
  store i32 %190, ptr %34, align 4, !tbaa !11
  %191 = load i32, ptr %32, align 4, !tbaa !11
  %192 = zext i32 %191 to i64
  %193 = load i32, ptr %33, align 4, !tbaa !11
  %194 = zext i32 %193 to i64
  %195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %29, i64 noundef %192, i64 noundef %194)
          to label %196 unwind label %207

196:                                              ; preds = %186
  %197 = load double, ptr %195, align 8, !tbaa !9
  %198 = load i32, ptr %34, align 4, !tbaa !11
  %199 = zext i32 %198 to i64
  %200 = load i32, ptr %33, align 4, !tbaa !11
  %201 = zext i32 %200 to i64
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %20, i64 noundef %199, i64 noundef %201)
          to label %203 unwind label %207

203:                                              ; preds = %196
  store double %197, ptr %202, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %204

204:                                              ; preds = %203
  %205 = load i32, ptr %33, align 4, !tbaa !11
  %206 = add i32 %205, 1
  store i32 %206, ptr %33, align 4, !tbaa !11
  br label %179, !llvm.loop !93

207:                                              ; preds = %196, %186
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %24, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %241

211:                                              ; preds = %185
  %212 = load ptr, ptr %15, align 8, !tbaa !5
  %213 = load i32, ptr %28, align 4, !tbaa !11
  %214 = zext i32 %213 to i64
  %215 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef %214) #7
  %216 = load i32, ptr %32, align 4, !tbaa !11
  %217 = zext i32 %216 to i64
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %215, i64 noundef %217)
          to label %219 unwind label %237

219:                                              ; preds = %211
  %220 = load double, ptr %218, align 8, !tbaa !9
  %221 = load i32, ptr %32, align 4, !tbaa !11
  %222 = zext i32 %221 to i64
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %31, i64 noundef %222)
          to label %224 unwind label %237

224:                                              ; preds = %219
  %225 = load double, ptr %223, align 8, !tbaa !9
  %226 = fsub double %220, %225
  %227 = load i32, ptr %28, align 4, !tbaa !11
  %228 = mul i32 %227, 3
  %229 = load i32, ptr %32, align 4, !tbaa !11
  %230 = add i32 %228, %229
  %231 = zext i32 %230 to i64
  %232 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %22, i64 noundef %231)
          to label %233 unwind label %237

233:                                              ; preds = %224
  store double %226, ptr %232, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %233
  %235 = load i32, ptr %32, align 4, !tbaa !11
  %236 = add i32 %235, 1
  store i32 %236, ptr %32, align 4, !tbaa !11
  br label %162, !llvm.loop !95

237:                                              ; preds = %224, %219, %211
  %238 = landingpad { ptr, i32 }
          cleanup
  %239 = extractvalue { ptr, i32 } %238, 0
  store ptr %239, ptr %24, align 8
  %240 = extractvalue { ptr, i32 } %238, 1
  store i32 %240, ptr %25, align 4
  br label %241

241:                                              ; preds = %237, %207
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %246

242:                                              ; preds = %165
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #7
  br label %243

243:                                              ; preds = %242
  %244 = load i32, ptr %28, align 4, !tbaa !11
  %245 = add i32 %244, 1
  store i32 %245, ptr %28, align 4, !tbaa !11
  br label %120, !llvm.loop !96

246:                                              ; preds = %241, %174
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #7
  br label %247

247:                                              ; preds = %246, %170
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #7
  br label %248

248:                                              ; preds = %247, %166
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %430

249:                                              ; preds = %126
  %250 = invoke noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv(ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %251 unwind label %127

251:                                              ; preds = %249
  %252 = load double, ptr %17, align 8, !tbaa !9
  %253 = fcmp olt double %250, %252
  br i1 %253, label %254, label %255

254:                                              ; preds = %251
  store i1 true, ptr %10, align 1
  store i32 1, ptr %27, align 4
  br label %428

255:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 24, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 88, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %256 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %257 unwind label %309

257:                                              ; preds = %255
  %258 = getelementptr inbounds %"class.Eigen::Transpose.335", ptr %38, i32 0, i32 0
  store ptr %256, ptr %258, align 8
  %259 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS_9TransposeIS2_EEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %20, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %260 unwind label %309

260:                                              ; preds = %257
  %261 = getelementptr inbounds { ptr, ptr }, ptr %37, i32 0, i32 0
  %262 = extractvalue { ptr, ptr } %259, 0
  store ptr %262, ptr %261, align 8
  %263 = getelementptr inbounds { ptr, ptr }, ptr %37, i32 0, i32 1
  %264 = extractvalue { ptr, ptr } %259, 1
  store ptr %264, ptr %263, align 8
  call void @llvm.lifetime.start.p0(i64 64, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %265 = load double, ptr %18, align 8, !tbaa !9
  %266 = load double, ptr %18, align 8, !tbaa !9
  %267 = fmul double %265, %266
  store double %267, ptr %40, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #7
  %268 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %269 unwind label %313

269:                                              ; preds = %260
  %270 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %271 unwind label %313

271:                                              ; preds = %269
  invoke void @_ZN5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8IdentityEll(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseNullaryOp.354") align 8 %41, i64 noundef %268, i64 noundef %270)
          to label %272 unwind label %313

272:                                              ; preds = %271
  invoke void @_ZN5EigenmlIdEEKNS_13CwiseBinaryOpINS_8internal17scalar_product_opINS2_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIS5_dNS3_IS5_dEEEEEE5valueEE4typeEdEEKNS2_19plain_constant_typeINS_14CwiseNullaryOpINS2_18scalar_identity_opIdEENS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEESA_E4typeEKSI_EERKS5_RKNS_10MatrixBaseISI_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.343") align 8 %39, ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 1 dereferenceable(1) %41)
          to label %273 unwind label %313

273:                                              ; preds = %272
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS_9TransposeIS3_EELi0EEEEplINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_14CwiseNullaryOpINSA_18scalar_constant_opIdEEKS3_EEKNSD_INSA_18scalar_identity_opIdEES3_EEEEEEKNS9_INSA_13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS6_KSQ_EERKNS0_ISQ_EE(ptr dead_on_unwind writable sret(%"class.Eigen::CwiseBinaryOp.322") align 8 %36, ptr noundef nonnull align 1 dereferenceable(1) %37, ptr noundef nonnull align 1 dereferenceable(1) %39)
          to label %274 unwind label %313

274:                                              ; preds = %273
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKNS_7ProductIS1_NS_9TransposeIS1_EELi0EEEKNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEEKS1_EEKNSE_INS4_18scalar_identity_opIdEES1_EEEEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %35, ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %275 unwind label %313

275:                                              ; preds = %274
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %276 = load ptr, ptr %13, align 8, !tbaa !5
  %277 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %276) #7
  %278 = mul i64 %277, 3
  store i64 %278, ptr %43, align 8, !tbaa !97
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2ImEERKT_(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %279 unwind label %318

279:                                              ; preds = %275
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 160, ptr %45) #7
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE19colPivHouseholderQrEv(ptr dead_on_unwind writable sret(%"class.Eigen::ColPivHouseholderQR") align 8 %45, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %280 unwind label %322

280:                                              ; preds = %279
  %281 = invoke { ptr, ptr } @_ZNK5Eigen10SolverBaseINS_19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEE5solveINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_5SolveIS4_T_EERKNS_10MatrixBaseIS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %45, ptr noundef nonnull align 1 dereferenceable(1) %22)
          to label %282 unwind label %326

282:                                              ; preds = %280
  %283 = getelementptr inbounds { ptr, ptr }, ptr %44, i32 0, i32 0
  %284 = extractvalue { ptr, ptr } %281, 0
  store ptr %284, ptr %283, align 8
  %285 = getelementptr inbounds { ptr, ptr }, ptr %44, i32 0, i32 1
  %286 = extractvalue { ptr, ptr } %281, 1
  store ptr %286, ptr %285, align 8
  %287 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_5SolveINS_19ColPivHouseholderQRINS0_IdLin1ELin1ELi0ELin1ELin1EEEEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %42, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %288 unwind label %326

288:                                              ; preds = %282
  call void @_ZN5Eigen19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(160) %45) #7
  call void @llvm.lifetime.end.p0(i64 160, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %289 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %290 unwind label %331

290:                                              ; preds = %288
  %291 = getelementptr inbounds %"class.Eigen::Transpose.335", ptr %48, i32 0, i32 0
  store ptr %289, ptr %291, align 8
  %292 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %48, ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %293 unwind label %331

293:                                              ; preds = %290
  %294 = getelementptr inbounds { ptr, ptr }, ptr %47, i32 0, i32 0
  %295 = extractvalue { ptr, ptr } %292, 0
  store ptr %295, ptr %294, align 8
  %296 = getelementptr inbounds { ptr, ptr }, ptr %47, i32 0, i32 1
  %297 = extractvalue { ptr, ptr } %292, 1
  store ptr %297, ptr %296, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_7ProductINS_9TransposeINS0_IdLin1ELin1ELi0ELin1ELin1EEEEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %46, ptr noundef nonnull align 1 dereferenceable(1) %47)
          to label %298 unwind label %331

298:                                              ; preds = %293
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #7
  %299 = load ptr, ptr %16, 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 %49, ptr noundef nonnull align 1 dereferenceable(1) %299, ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %300 unwind label %335

300:                                              ; preds = %298
  %301 = load ptr, ptr %16, align 8, !tbaa !5
  %302 = 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) %301, ptr noundef nonnull align 1 dereferenceable(1) %49)
          to label %303 unwind label %335

303:                                              ; preds = %300
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #7
  %304 = invoke noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv(ptr noundef nonnull align 1 dereferenceable(1) %46)
          to label %305 unwind label %339

305:                                              ; preds = %303
  %306 = load double, ptr %17, align 8, !tbaa !9
  %307 = fcmp olt double %304, %306
  br i1 %307, label %308, label %343

308:                                              ; preds = %305
  store i1 true, ptr %10, align 1
  store i32 1, ptr %27, align 4
  br label %414

309:                                              ; preds = %257, %255
  %310 = landingpad { ptr, i32 }
          cleanup
  %311 = extractvalue { ptr, i32 } %310, 0
  store ptr %311, ptr %24, align 8
  %312 = extractvalue { ptr, i32 } %310, 1
  store i32 %312, ptr %25, align 4
  br label %317

313:                                              ; preds = %274, %273, %272, %271, %269, %260
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %24, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr %39) #7
  br label %317

317:                                              ; preds = %313, %309
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr %36) #7
  br label %427

318:                                              ; preds = %275
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %24, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %426

322:                                              ; preds = %279
  %323 = landingpad { ptr, i32 }
          cleanup
  %324 = extractvalue { ptr, i32 } %323, 0
  store ptr %324, ptr %24, align 8
  %325 = extractvalue { ptr, i32 } %323, 1
  store i32 %325, ptr %25, align 4
  br label %330

326:                                              ; preds = %282, %280
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %24, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %25, align 4
  call void @_ZN5Eigen19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(160) %45) #7
  br label %330

330:                                              ; preds = %326, %322
  call void @llvm.lifetime.end.p0(i64 160, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #7
  br label %425

331:                                              ; preds = %293, %290, %288
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %24, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #7
  br label %424

335:                                              ; preds = %300, %298
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %24, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #7
  br label %423

339:                                              ; preds = %303
  %340 = landingpad { ptr, i32 }
          cleanup
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %24, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %25, align 4
  br label %423

343:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 16, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %344 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %345 unwind label %359

345:                                              ; preds = %343
  store i64 %344, ptr %51, align 8, !tbaa !97
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2IlEERKT_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %346 unwind label %359

346:                                              ; preds = %345
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %347 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %348 unwind label %363

348:                                              ; preds = %346
  store i64 %347, ptr %53, align 8, !tbaa !97
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2IlEERKT_(ptr noundef nonnull align 8 dereferenceable(16) %52, ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %349 unwind label %363

349:                                              ; preds = %348
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  %350 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %351 unwind label %367

351:                                              ; preds = %349
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #7
  store i32 0, ptr %54, align 4, !tbaa !11
  br label %352

352:                                              ; preds = %400, %351
  %353 = load i32, ptr %54, align 4, !tbaa !11
  %354 = zext i32 %353 to i64
  %355 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %42)
          to label %356 unwind label %371

356:                                              ; preds = %352
  %357 = icmp slt i64 %354, %355
  br i1 %357, label %375, label %358

358:                                              ; preds = %356
  store i32 14, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  br label %413

359:                                              ; preds = %345, %343
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %24, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  br label %422

363:                                              ; preds = %348, %346
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %24, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %421

367:                                              ; preds = %349
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %24, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %25, align 4
  br label %420

371:                                              ; preds = %375, %352
  %372 = landingpad { ptr, i32 }
          cleanup
  %373 = extractvalue { ptr, i32 } %372, 0
  store ptr %373, ptr %24, align 8
  %374 = extractvalue { ptr, i32 } %372, 1
  store i32 %374, ptr %25, align 4
  br label %412

375:                                              ; preds = %356
  %376 = load i32, ptr %54, align 4, !tbaa !11
  %377 = zext i32 %376 to i64
  %378 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %50, i64 noundef %377)
          to label %379 unwind label %371

379:                                              ; preds = %375
  store double 1.000000e+00, ptr %378, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %55) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr %56) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %380 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %381 unwind label %403

381:                                              ; preds = %379
  %382 = getelementptr inbounds %"class.Eigen::Transpose.335", ptr %57, i32 0, i32 0
  store ptr %380, ptr %382, align 8
  %383 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %57, ptr noundef nonnull align 1 dereferenceable(1) %50)
          to label %384 unwind label %403

384:                                              ; preds = %381
  %385 = getelementptr inbounds { ptr, ptr }, ptr %56, i32 0, i32 0
  %386 = extractvalue { ptr, ptr } %383, 0
  store ptr %386, ptr %385, align 8
  %387 = getelementptr inbounds { ptr, ptr }, ptr %56, i32 0, i32 1
  %388 = extractvalue { ptr, ptr } %383, 1
  store ptr %388, ptr %387, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_7ProductINS_9TransposeINS0_IdLin1ELin1ELi0ELin1ELin1EEEEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef nonnull align 1 dereferenceable(1) %56)
          to label %389 unwind label %403

389:                                              ; preds = %384
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #7
  %390 = invoke noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv(ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %391 unwind label %407

391:                                              ; preds = %389
  %392 = load i32, ptr %54, align 4, !tbaa !11
  %393 = zext i32 %392 to i64
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %52, i64 noundef %393)
          to label %395 unwind label %407

395:                                              ; preds = %391
  store double %390, ptr %394, align 8, !tbaa !9
  %396 = load i32, ptr %54, align 4, !tbaa !11
  %397 = zext i32 %396 to i64
  %398 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %50, i64 noundef %397)
          to label %399 unwind label %407

399:                                              ; preds = %395
  store double 0.000000e+00, ptr %398, align 8, !tbaa !9
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  br label %400

400:                                              ; preds = %399
  %401 = load i32, ptr %54, align 4, !tbaa !11
  %402 = add i32 %401, 1
  store i32 %402, ptr %54, align 4, !tbaa !11
  br label %352, !llvm.loop !98

403:                                              ; preds = %384, %381, %379
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %24, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %56) #7
  br label %411

407:                                              ; preds = %395, %391, %389
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %24, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %25, align 4
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #7
  br label %411

411:                                              ; preds = %407, %403
  call void @llvm.lifetime.end.p0(i64 16, ptr %55) #7
  br label %412

412:                                              ; preds = %411, %371
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  br label %420

413:                                              ; preds = %358
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  store i32 0, ptr %27, align 4
  br label %414

414:                                              ; preds = %413, %308
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #7
  %415 = load i32, ptr %27, align 4
  switch i32 %415, label %428 [
    i32 0, label %416
  ]

416:                                              ; preds = %414
  br label %417

417:                                              ; preds = %416
  %418 = load i32, ptr %26, align 4, !tbaa !11
  %419 = add i32 %418, 1
  store i32 %419, ptr %26, align 4, !tbaa !11
  br label %103, !llvm.loop !99

420:                                              ; preds = %412, %367
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %52) #7
  br label %421

421:                                              ; preds = %420, %363
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %50) #7
  br label %422

422:                                              ; preds = %421, %359
  call void @llvm.lifetime.end.p0(i64 16, ptr %50) #7
  br label %423

423:                                              ; preds = %422, %339, %335
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %46) #7
  br label %424

424:                                              ; preds = %423, %331
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #7
  br label %425

425:                                              ; preds = %424, %330
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %42) #7
  br label %426

426:                                              ; preds = %425, %318
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #7
  br label %427

427:                                              ; preds = %426, %317
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #7
  br label %430

428:                                              ; preds = %414, %254, %107
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  %429 = load i32, ptr %27, align 4
  switch i32 %429, label %432 [
    i32 2, label %431
  ]

430:                                              ; preds = %427, %248, %127
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %434

431:                                              ; preds = %428
  store i1 false, ptr %10, align 1
  store i32 1, ptr %27, align 4
  br label %432

432:                                              ; preds = %431, %428
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  %433 = load i1, ptr %10, align 1
  ret i1 %433

434:                                              ; preds = %430, %112
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  br label %435

435:                                              ; preds = %434, %108
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  br label %436

436:                                              ; preds = %435
  %437 = load ptr, ptr %24, align 8
  %438 = load i32, ptr %25, align 4
  %439 = insertvalue { ptr, i32 } poison, ptr %437, 0
  %440 = insertvalue { ptr, i32 } %439, i32 %438, 1
  resume { ptr, i32 } %440
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI9Vector3_tSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #5 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) #2 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 #2 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #5 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) #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; 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.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::CwiseNullaryOp.317" = type { %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", %"struct.Eigen::internal::scalar_constant_op" }
%"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::CwiseBinaryOp.322" = type <{ %"class.Eigen::Product.328", %"class.Eigen::CwiseBinaryOp.343", [8 x i8] }>
%"class.Eigen::Product.328" = type { ptr, %"class.Eigen::Transpose.335" }
%"class.Eigen::Transpose.335" = type { ptr }
%"class.Eigen::CwiseBinaryOp.343" = type <{ [8 x i8], %"class.Eigen::CwiseNullaryOp.349", %"class.Eigen::CwiseNullaryOp.354", [8 x i8] }>
%"class.Eigen::CwiseNullaryOp.349" = type { %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", %"struct.Eigen::internal::scalar_constant_op" }
%"class.Eigen::CwiseNullaryOp.354" = type <{ %"class.Eigen::internal::variable_if_dynamic", %"class.Eigen::internal::variable_if_dynamic", [8 x i8] }>
%"class.Eigen::Solve" = type { ptr, ptr }
%"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::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::Product.394" = type { %"class.Eigen::Transpose.335", ptr }
%"class.Eigen::CwiseBinaryOp.401" = type <{ ptr, ptr, [8 x i8] }>

@.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_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERKSt6vectorIjSaIjEERKS7_I9Vector3_tSaISC_EESG_RS4_ddj = external hidden unnamed_addr constant [208 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [36 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 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 #1

; 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 #2 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 #3 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 #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN17RigidBodyDynamics17CalcPointJacobianERNS_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 #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERKSt6vectorIjSaIjEERKS7_I9Vector3_tSaISC_EESG_RS4_ddj(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(16) %5, double noundef %6, double noundef %7, i32 noundef %8) local_unnamed_addr #1 personality ptr @__gxx_personality_v0 {
  %10 = alloca %"class.Eigen::Matrix.153", align 8
  %11 = alloca %"class.Eigen::CwiseNullaryOp.317", align 8
  %12 = alloca %"class.Eigen::Matrix.57", align 8
  %13 = alloca %"class.Eigen::CwiseNullaryOp.181", align 8
  %14 = alloca %"class.Eigen::Matrix.153", align 8
  %15 = alloca %"class.Eigen::CwiseNullaryOp.317", align 8
  %16 = alloca %class.Vector3_t, align 8
  %17 = alloca %"class.Eigen::Matrix.153", align 8
  %18 = alloca %"class.Eigen::CwiseBinaryOp.322", align 8
  %19 = alloca %"class.Eigen::Product.328", align 8
  %20 = alloca %"class.Eigen::Transpose.335", align 8
  %21 = alloca %"class.Eigen::CwiseBinaryOp.343", align 8
  %22 = alloca double, align 8
  %23 = alloca %"class.Eigen::CwiseNullaryOp.354", align 8
  %24 = alloca %"class.Eigen::Matrix.57", align 8
  %25 = alloca i64, align 8
  %26 = alloca %"class.Eigen::Solve", align 8
  %27 = alloca %"class.Eigen::ColPivHouseholderQR", align 8
  %28 = alloca %"class.Eigen::Matrix.57", 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 = alloca %"class.Eigen::Matrix.57", align 8
  %33 = alloca i64, align 8
  %34 = alloca %"class.Eigen::Matrix.57", align 8
  %35 = alloca i64, align 8
  %36 = alloca %"class.Eigen::Matrix.57", align 8
  %37 = alloca %"class.Eigen::Product.394", align 8
  %38 = alloca %"class.Eigen::Transpose.335", align 8
  %39 = tail call noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %1)
  %40 = getelementptr inbounds i8, ptr %0, i64 76
  %41 = load i32, ptr %40, align 4, !tbaa !5
  %42 = zext i32 %41 to i64
  %43 = icmp eq i64 %39, %42
  br i1 %43, label %45, label %44

44:                                               ; preds = %9
  tail call void @__assert_fail(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.4, i32 noundef 614, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERKSt6vectorIjSaIjEERKS7_I9Vector3_tSaISC_EESG_RS4_ddj) #6
  unreachable

45:                                               ; preds = %9
  %46 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %47 = tail call noundef i64 @_ZNKSt6vectorI9Vector3_tSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  %48 = icmp eq i64 %46, %47
  br i1 %48, label %50, label %49

49:                                               ; preds = %45
  tail call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.4, i32 noundef 615, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERKSt6vectorIjSaIjEERKS7_I9Vector3_tSaISC_EESG_RS4_ddj) #6
  unreachable

50:                                               ; preds = %45
  %51 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %52 = tail call noundef i64 @_ZNKSt6vectorI9Vector3_tSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #7
  %53 = icmp eq i64 %51, %52
  br i1 %53, label %55, label %54

54:                                               ; preds = %50
  tail call void @__assert_fail(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.4, i32 noundef 616, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN17RigidBodyDynamics17InverseKinematicsERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEERKSt6vectorIjSaIjEERKS7_I9Vector3_tSaISC_EESG_RS4_ddj) #6
  unreachable

55:                                               ; preds = %50
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #7
  %56 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %57 = mul i64 %56, 3
  %58 = getelementptr inbounds i8, ptr %0, i64 80
  %59 = load i32, ptr %58, align 8, !tbaa !88
  %60 = zext i32 %59 to i64
  call void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4ZeroEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.317") align 8 %11, i64 noundef %57, i64 noundef %60)
  call void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 1 dereferenceable(1) %11)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  %61 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %62 = mul i64 %61, 3
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4ZeroEl(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.181") align 8 %13, i64 noundef %62)
          to label %63 unwind label %71

63:                                               ; preds = %55
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %12, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %64 unwind label %71

64:                                               ; preds = %63
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  %65 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %1)
          to label %.preheader126 unwind label %73

.preheader126:                                    ; preds = %64
  %.not154.not = icmp eq i32 %8, 0
  br i1 %.not154.not, label %.critedge122, label %.lr.ph157

.lr.ph157:                                        ; preds = %.preheader126
  %66 = getelementptr inbounds i8, ptr %19, i64 8
  %67 = fmul double %7, %7
  %68 = getelementptr inbounds i8, ptr %26, i64 8
  %69 = getelementptr inbounds i8, ptr %29, i64 8
  %70 = getelementptr inbounds i8, ptr %37, i64 8
  br label %75

71:                                               ; preds = %63, %55
  %72 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  br label %286

73:                                               ; preds = %64
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %285

75:                                               ; preds = %.lr.ph157, %275
  %.not156 = phi i1 [ true, %.lr.ph157 ], [ %.not, %275 ]
  %.072155 = phi i32 [ 0, %.lr.ph157 ], [ %276, %275 ]
  invoke void @_ZN17RigidBodyDynamics22UpdateKinematicsCustomERNS_5ModelEPKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEES6_S6_(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull %5, ptr noundef null, ptr noundef null)
          to label %.preheader125 unwind label %78

.preheader125:                                    ; preds = %75
  %76 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %.not160 = icmp eq i64 %76, 0
  br i1 %.not160, label %._crit_edge153, label %.lr.ph152

._crit_edge153:                                   ; preds = %165, %.preheader125
  %77 = invoke noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv(ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %175 unwind label %78

78:                                               ; preds = %._crit_edge153, %75
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %285

.lr.ph152:                                        ; preds = %.preheader125, %165
  %80 = phi i64 [ %168, %165 ], [ 0, %.preheader125 ]
  %.069151 = phi i32 [ %167, %165 ], [ 0, %.preheader125 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #7
  %81 = load i32, ptr %58, align 8, !tbaa !88
  %82 = zext i32 %81 to i64
  invoke void @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4ZeroEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.317") align 8 %15, i64 noundef 3, i64 noundef %82)
          to label %83 unwind label %95

83:                                               ; preds = %.lr.ph152
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_14CwiseNullaryOpINS_8internal18scalar_constant_opIdEES1_EEEERKT_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %84 unwind label %95

84:                                               ; preds = %83
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %80) #7
  %86 = load i32, ptr %85, align 4, !tbaa !89
  %87 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %80) #7
  invoke void @_ZN17RigidBodyDynamics17CalcPointJacobianERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tRNS3_IdLin1ELin1ELi0ELin1ELin1EEEb(ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %5, i32 noundef %86, ptr noundef nonnull align 8 dereferenceable(24) %87, ptr noundef nonnull align 8 dereferenceable(24) %14, i1 noundef zeroext false)
          to label %88 unwind label %97

88:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #7
  %89 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %80) #7
  %90 = load i32, ptr %89, align 4, !tbaa !89
  %91 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %80) #7
  invoke void @_ZN17RigidBodyDynamics25CalcBodyToBaseCoordinatesERNS_5ModelERKN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEEjRK9Vector3_tb(ptr dead_on_unwind nonnull writable sret(%class.Vector3_t) align 8 %16, ptr noundef nonnull align 8 dereferenceable(872) %0, ptr noundef nonnull align 8 dereferenceable(16) %5, i32 noundef %90, ptr noundef nonnull align 8 dereferenceable(24) %91, i1 noundef zeroext false)
          to label %.preheader123 unwind label %99

.preheader123:                                    ; preds = %88
  %92 = mul i32 %.069151, 3
  %93 = load i32, ptr %58, align 8, !tbaa !88
  %.not161 = icmp eq i32 %93, 0
  br i1 %.not161, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader123
  %94 = zext i32 %92 to i64
  br label %103

95:                                               ; preds = %83, %.lr.ph152
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #7
  br label %174

97:                                               ; preds = %84
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %173

99:                                               ; preds = %88
  %100 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

._crit_edge:                                      ; preds = %108, %.preheader123
  %101 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %80) #7
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %101, i64 noundef 0)
          to label %112 unwind label %171

103:                                              ; preds = %.lr.ph, %108
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %108 ]
  %104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %14, i64 noundef 0, i64 noundef %indvars.iv)
          to label %105 unwind label %.loopexit

105:                                              ; preds = %103
  %106 = load double, ptr %104, align 8, !tbaa !90
  %107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %10, i64 noundef %94, i64 noundef %indvars.iv)
          to label %108 unwind label %.loopexit

108:                                              ; preds = %105
  store double %106, ptr %107, align 8, !tbaa !90
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %109 = load i32, ptr %58, align 8, !tbaa !88
  %110 = zext i32 %109 to i64
  %111 = icmp ult i64 %indvars.iv.next, %110
  br i1 %111, label %103, label %._crit_edge, !llvm.loop !92

.loopexit:                                        ; preds = %103, %105
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %125, %123
  %lpad.loopexit187 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp:             ; preds = %148, %146
  %lpad.loopexit.split-lp188 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

112:                                              ; preds = %._crit_edge
  %113 = load double, ptr %102, align 8, !tbaa !90
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %16, i64 noundef 0)
          to label %115 unwind label %171

115:                                              ; preds = %112
  %116 = load double, ptr %114, align 8, !tbaa !90
  %117 = zext i32 %92 to i64
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %12, i64 noundef %117)
          to label %.preheader.1 unwind label %171

.preheader.1:                                     ; preds = %115
  %119 = fsub double %113, %116
  store double %119, ptr %118, align 8, !tbaa !90
  %120 = load i32, ptr %58, align 8, !tbaa !88
  %.not161.1 = icmp eq i32 %120, 0
  br i1 %.not161.1, label %._crit_edge.1, label %.lr.ph.1

.lr.ph.1:                                         ; preds = %.preheader.1
  %121 = add i32 %92, 1
  %122 = zext i32 %121 to i64
  br label %123

123:                                              ; preds = %128, %.lr.ph.1
  %indvars.iv.1 = phi i64 [ 0, %.lr.ph.1 ], [ %indvars.iv.next.1, %128 ]
  %124 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %14, i64 noundef 1, i64 noundef %indvars.iv.1)
          to label %125 unwind label %.loopexit.split-lp.loopexit

125:                                              ; preds = %123
  %126 = load double, ptr %124, align 8, !tbaa !90
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %10, i64 noundef %122, i64 noundef %indvars.iv.1)
          to label %128 unwind label %.loopexit.split-lp.loopexit

128:                                              ; preds = %125
  store double %126, ptr %127, align 8, !tbaa !90
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv.1, 1
  %129 = load i32, ptr %58, align 8, !tbaa !88
  %130 = zext i32 %129 to i64
  %131 = icmp ult i64 %indvars.iv.next.1, %130
  br i1 %131, label %123, label %._crit_edge.1, !llvm.loop !92

._crit_edge.1:                                    ; preds = %128, %.preheader.1
  %132 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %80) #7
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %132, i64 noundef 1)
          to label %134 unwind label %171

134:                                              ; preds = %._crit_edge.1
  %135 = load double, ptr %133, align 8, !tbaa !90
  %136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %16, i64 noundef 1)
          to label %137 unwind label %171

137:                                              ; preds = %134
  %138 = load double, ptr %136, align 8, !tbaa !90
  %139 = add i32 %92, 1
  %140 = zext i32 %139 to i64
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %12, i64 noundef %140)
          to label %.preheader.2 unwind label %171

.preheader.2:                                     ; preds = %137
  %142 = fsub double %135, %138
  store double %142, ptr %141, align 8, !tbaa !90
  %143 = load i32, ptr %58, align 8, !tbaa !88
  %.not161.2 = icmp eq i32 %143, 0
  br i1 %.not161.2, label %._crit_edge.2, label %.lr.ph.2

.lr.ph.2:                                         ; preds = %.preheader.2
  %144 = add i32 %92, 2
  %145 = zext i32 %144 to i64
  br label %146

146:                                              ; preds = %151, %.lr.ph.2
  %indvars.iv.2 = phi i64 [ 0, %.lr.ph.2 ], [ %indvars.iv.next.2, %151 ]
  %147 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %14, i64 noundef 2, i64 noundef %indvars.iv.2)
          to label %148 unwind label %.loopexit.split-lp.loopexit.split-lp

148:                                              ; preds = %146
  %149 = load double, ptr %147, align 8, !tbaa !90
  %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi1EEclEll(ptr noundef nonnull align 1 dereferenceable(1) %10, i64 noundef %145, i64 noundef %indvars.iv.2)
          to label %151 unwind label %.loopexit.split-lp.loopexit.split-lp

151:                                              ; preds = %148
  store double %149, ptr %150, align 8, !tbaa !90
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv.2, 1
  %152 = load i32, ptr %58, align 8, !tbaa !88
  %153 = zext i32 %152 to i64
  %154 = icmp ult i64 %indvars.iv.next.2, %153
  br i1 %154, label %146, label %._crit_edge.2, !llvm.loop !92

._crit_edge.2:                                    ; preds = %151, %.preheader.2
  %155 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorI9Vector3_tSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %80) #7
  %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %155, i64 noundef 2)
          to label %157 unwind label %171

157:                                              ; preds = %._crit_edge.2
  %158 = load double, ptr %156, align 8, !tbaa !90
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %16, i64 noundef 2)
          to label %160 unwind label %171

160:                                              ; preds = %157
  %161 = load double, ptr %159, align 8, !tbaa !90
  %162 = add i32 %92, 2
  %163 = zext i32 %162 to i64
  %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %12, i64 noundef %163)
          to label %165 unwind label %171

165:                                              ; preds = %160
  %166 = fsub double %158, %161
  store double %166, ptr %164, align 8, !tbaa !90
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  %167 = add i32 %.069151, 1
  %168 = zext i32 %167 to i64
  %169 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %170 = icmp ugt i64 %169, %168
  br i1 %170, label %.lr.ph152, label %._crit_edge153, !llvm.loop !94

171:                                              ; preds = %160, %157, %._crit_edge.2, %137, %134, %._crit_edge.1, %115, %112, %._crit_edge
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %171, %99
  %.pn113.pn = phi { ptr, i32 } [ %100, %99 ], [ %172, %171 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit187, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp188, %.loopexit.split-lp.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  br label %173

173:                                              ; preds = %.loopexit.split-lp, %97
  %.pn113.pn.pn = phi { ptr, i32 } [ %.pn113.pn, %.loopexit.split-lp ], [ %98, %97 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  br label %174

174:                                              ; preds = %173, %95
  %.pn113.pn.pn.pn = phi { ptr, i32 } [ %.pn113.pn.pn, %173 ], [ %96, %95 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  br label %285

175:                                              ; preds = %._crit_edge153
  %176 = fcmp olt double %77, %6
  br i1 %176, label %.critedge122, label %177

177:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #7
  call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  %178 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %179 unwind label %215

179:                                              ; preds = %177
  store ptr %178, ptr %20, align 8
  %180 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEmlINS_9TransposeIS2_EEEEKNS_7ProductIS2_T_Li0EEERKNS0_IS8_EE(ptr noundef nonnull align 1 dereferenceable(1) %10, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %181 unwind label %215

181:                                              ; preds = %179
  %182 = extractvalue { ptr, ptr } %180, 0
  store ptr %182, ptr %19, align 8
  %183 = extractvalue { ptr, ptr } %180, 1
  store ptr %183, ptr %66, align 8
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  store double %67, ptr %22, align 8, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #7
  %184 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %185 unwind label %217

185:                                              ; preds = %181
  %186 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %187 unwind label %217

187:                                              ; preds = %185
  invoke void @_ZN5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE8IdentityEll(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseNullaryOp.354") align 8 %23, i64 noundef %184, i64 noundef %186)
          to label %188 unwind label %217

188:                                              ; preds = %187
  invoke void @_ZN5EigenmlIdEEKNS_13CwiseBinaryOpINS_8internal17scalar_product_opINS2_18promote_scalar_argIdT_Xsr5Eigen8internal14has_ReturnTypeINS_20ScalarBinaryOpTraitsIS5_dNS3_IS5_dEEEEEE5valueEE4typeEdEEKNS2_19plain_constant_typeINS_14CwiseNullaryOpINS2_18scalar_identity_opIdEENS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEESA_E4typeEKSI_EERKS5_RKNS_10MatrixBaseISI_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.343") align 8 %21, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %189 unwind label %217

189:                                              ; preds = %188
  invoke void @_ZNK5Eigen10MatrixBaseINS_7ProductINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEENS_9TransposeIS3_EELi0EEEEplINS_13CwiseBinaryOpINS_8internal17scalar_product_opIddEEKNS_14CwiseNullaryOpINSA_18scalar_constant_opIdEEKS3_EEKNSD_INSA_18scalar_identity_opIdEES3_EEEEEEKNS9_INSA_13scalar_sum_opIdNSA_6traitsIT_E6ScalarEEEKS6_KSQ_EERKNS0_ISQ_EE(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::CwiseBinaryOp.322") align 8 %18, ptr noundef nonnull align 1 dereferenceable(1) %19, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %190 unwind label %217

190:                                              ; preds = %189
  invoke void @_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS_13CwiseBinaryOpINS_8internal13scalar_sum_opIddEEKNS_7ProductIS1_NS_9TransposeIS1_EELi0EEEKNS3_INS4_17scalar_product_opIddEEKNS_14CwiseNullaryOpINS4_18scalar_constant_opIdEEKS1_EEKNSE_INS4_18scalar_identity_opIdEES1_EEEEEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %191 unwind label %217

191:                                              ; preds = %190
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  %192 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #7
  %193 = mul i64 %192, 3
  store i64 %193, ptr %25, align 8, !tbaa !95
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2ImEERKT_(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %194 unwind label %220

194:                                              ; preds = %191
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %27) #7
  invoke void @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE19colPivHouseholderQrEv(ptr dead_on_unwind nonnull writable sret(%"class.Eigen::ColPivHouseholderQR") align 8 %27, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %195 unwind label %222

195:                                              ; preds = %194
  %196 = invoke { ptr, ptr } @_ZNK5Eigen10SolverBaseINS_19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEE5solveINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_5SolveIS4_T_EERKNS_10MatrixBaseIS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %27, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %197 unwind label %224

197:                                              ; preds = %195
  %198 = extractvalue { ptr, ptr } %196, 0
  store ptr %198, ptr %26, align 8
  %199 = extractvalue { ptr, ptr } %196, 1
  store ptr %199, ptr %68, align 8
  %200 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEaSINS_5SolveINS_19ColPivHouseholderQRINS0_IdLin1ELin1ELi0ELin1ELin1EEEEES1_EEEERS1_RKNS_9DenseBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %201 unwind label %224

201:                                              ; preds = %197
  call void @_ZN5Eigen19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(160) %27) #7
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  %202 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %203 unwind label %227

203:                                              ; preds = %201
  store ptr %202, ptr %30, align 8
  %204 = 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) %24)
          to label %205 unwind label %227

205:                                              ; preds = %203
  %206 = extractvalue { ptr, ptr } %204, 0
  store ptr %206, ptr %29, align 8
  %207 = extractvalue { ptr, ptr } %204, 1
  store ptr %207, ptr %69, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_7ProductINS_9TransposeINS0_IdLin1ELin1ELi0ELin1ELin1EEEEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %208 unwind label %227

208:                                              ; preds = %205
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #7
  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) %5, ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %209 unwind label %229

209:                                              ; preds = %208
  %210 = 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) %5, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %211 unwind label %229

211:                                              ; preds = %209
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #7
  %212 = invoke noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4normEv(ptr noundef nonnull align 1 dereferenceable(1) %28)
          to label %213 unwind label %231

213:                                              ; preds = %211
  %214 = fcmp uge double %212, %6
  br i1 %214, label %233, label %.critedge

215:                                              ; preds = %179, %177
  %216 = landingpad { ptr, i32 }
          cleanup
  br label %219

217:                                              ; preds = %190, %189, %188, %187, %185, %181
  %218 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %21) #7
  br label %219

219:                                              ; preds = %217, %215
  %.pn = phi { ptr, i32 } [ %218, %217 ], [ %216, %215 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %18) #7
  br label %284

220:                                              ; preds = %191
  %221 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  br label %283

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

224:                                              ; preds = %197, %195
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5Eigen19ColPivHouseholderQRINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(160) %27) #7
  br label %226

226:                                              ; preds = %224, %222
  %.pn100 = phi { ptr, i32 } [ %225, %224 ], [ %223, %222 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #7
  br label %282

227:                                              ; preds = %205, %203, %201
  %228 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #7
  br label %281

229:                                              ; preds = %209, %208
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #7
  br label %280

231:                                              ; preds = %211
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %280

233:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #7
  %234 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %235 unwind label %245

235:                                              ; preds = %233
  store i64 %234, ptr %33, align 8, !tbaa !95
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2IlEERKT_(ptr noundef nonnull align 8 dereferenceable(16) %32, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %236 unwind label %245

236:                                              ; preds = %235
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  %237 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %238 unwind label %247

238:                                              ; preds = %236
  store i64 %237, ptr %35, align 8, !tbaa !95
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2IlEERKT_(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %239 unwind label %247

239:                                              ; preds = %238
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  %240 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv(ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %.preheader124 unwind label %249

.preheader124:                                    ; preds = %239, %268
  %.0 = phi i32 [ %269, %268 ], [ 0, %239 ]
  %241 = zext i32 %.0 to i64
  %242 = invoke noundef i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE4sizeEv(ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %243 unwind label %251

243:                                              ; preds = %.preheader124
  %244 = icmp sgt i64 %242, %241
  br i1 %244, label %253, label %275

245:                                              ; preds = %235, %233
  %246 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  br label %279

247:                                              ; preds = %238, %236
  %248 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  br label %278

249:                                              ; preds = %239
  %250 = landingpad { ptr, i32 }
          cleanup
  br label %277

251:                                              ; preds = %253, %.preheader124
  %252 = landingpad { ptr, i32 }
          cleanup
  br label %277

253:                                              ; preds = %243
  %254 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %32, i64 noundef %241)
          to label %255 unwind label %251

255:                                              ; preds = %253
  store double 1.000000e+00, ptr %254, align 8, !tbaa !90
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  %256 = invoke ptr @_ZN5Eigen9DenseBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE9transposeEv(ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %257 unwind label %270

257:                                              ; preds = %255
  store ptr %256, ptr %38, align 8
  %258 = invoke { ptr, ptr } @_ZNK5Eigen10MatrixBaseINS_9TransposeINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEEEEmlINS2_IdLin1ELi1ELi0ELin1ELi1EEEEEKNS_7ProductIS4_T_Li0EEERKNS0_IS9_EE(ptr noundef nonnull align 1 dereferenceable(1) %38, ptr noundef nonnull align 1 dereferenceable(1) %32)
          to label %259 unwind label %270

259:                                              ; preds = %257
  %260 = extractvalue { ptr, ptr } %258, 0
  store ptr %260, ptr %37, align 8
  %261 = extractvalue { ptr, ptr } %258, 1
  store ptr %261, ptr %70, align 8
  invoke void @_ZN5Eigen6MatrixIdLin1ELi1ELi0ELin1ELi1EEC2INS_7ProductINS_9TransposeINS0_IdLin1ELin1ELi0ELin1ELin1EEEEES1_Li0EEEEERKNS_9EigenBaseIT_EE(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef nonnull align 1 dereferenceable(1) %37)
          to label %262 unwind label %270

262:                                              ; preds = %259
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #7
  %263 = invoke noundef double @_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv(ptr noundef nonnull align 1 dereferenceable(1) %36)
          to label %264 unwind label %272

264:                                              ; preds = %262
  %265 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %34, i64 noundef %241)
          to label %266 unwind label %272

266:                                              ; preds = %264
  store double %263, ptr %265, align 8, !tbaa !90
  %267 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN5Eigen15DenseCoeffsBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEELi1EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %32, i64 noundef %241)
          to label %268 unwind label %272

268:                                              ; preds = %266
  store double 0.000000e+00, ptr %267, align 8, !tbaa !90
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  %269 = add i32 %.0, 1
  br label %.preheader124, !llvm.loop !96

270:                                              ; preds = %259, %257, %255
  %271 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #7
  br label %274

272:                                              ; preds = %266, %264, %262
  %273 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %36) #7
  br label %274

274:                                              ; preds = %272, %270
  %.pn102 = phi { ptr, i32 } [ %273, %272 ], [ %271, %270 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #7
  br label %277

275:                                              ; preds = %243
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #7
  %276 = add nuw i32 %.072155, 1
  %.not = icmp ult i32 %276, %8
  %exitcond.not = icmp eq i32 %276, %8
  br i1 %exitcond.not, label %.critedge122, label %75, !llvm.loop !97

277:                                              ; preds = %251, %274, %249
  %.pn102.pn.pn = phi { ptr, i32 } [ %250, %249 ], [ %.pn102, %274 ], [ %252, %251 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %34) #7
  br label %278

278:                                              ; preds = %277, %247
  %.pn102.pn.pn.pn = phi { ptr, i32 } [ %.pn102.pn.pn, %277 ], [ %248, %247 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %32) #7
  br label %279

279:                                              ; preds = %278, %245
  %.pn102.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn102.pn.pn.pn, %278 ], [ %246, %245 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  br label %280

280:                                              ; preds = %279, %231, %229
  %.pn102.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn102.pn.pn.pn.pn, %279 ], [ %232, %231 ], [ %230, %229 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  br label %281

281:                                              ; preds = %280, %227
  %.pn102.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn102.pn.pn.pn.pn.pn, %280 ], [ %228, %227 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  br label %282

282:                                              ; preds = %281, %226
  %.pn102.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn102.pn.pn.pn.pn.pn.pn, %281 ], [ %.pn100, %226 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  br label %283

283:                                              ; preds = %282, %220
  %.pn102.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn102.pn.pn.pn.pn.pn.pn.pn, %282 ], [ %221, %220 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  br label %284

284:                                              ; preds = %283, %219
  %.pn102.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn102.pn.pn.pn.pn.pn.pn.pn.pn, %283 ], [ %.pn, %219 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #7
  br label %285

.critedge:                                        ; preds = %213
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #7
  br label %.critedge122

.critedge122:                                     ; preds = %275, %175, %.preheader126, %.critedge
  %.not148 = phi i1 [ %.not156, %.critedge ], [ false, %.preheader126 ], [ %.not, %275 ], [ %.not156, %175 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  ret i1 %.not148

285:                                              ; preds = %78, %174, %284, %73
  %.pn113.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %74, %73 ], [ %.pn113.pn.pn.pn, %174 ], [ %.pn102.pn.pn.pn.pn.pn.pn.pn.pn.pn, %284 ], [ %79, %78 ]
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  br label %286

286:                                              ; preds = %285, %71
  %.pn113.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn113.pn.pn.pn.pn.pn, %285 ], [ %72, %71 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  call void @_ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  resume { ptr, i32 } %.pn113.pn.pn.pn.pn.pn.pn
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI9Vector3_tSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #5 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 #2 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 #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { noreturn nounwind }
attributes #7 = { 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 = !{!6, !18, i64 80}
!89 = !{!18, !18, i64 0}
!90 = !{!91, !91, i64 0}
!91 = !{!"double", !12, i64 0}
!92 = distinct !{!92, !93}
!93 = !{!"llvm.loop.mustprogress"}
!94 = distinct !{!94, !93}
!95 = !{!64, !64, i64 0}
!96 = distinct !{!96, !93}
!97 = distinct !{!97, !93}


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