; LLVM IR from Derek-TH-Wang/quadruped_ctrl :: src/MPC_Ctrl (ConvexMPCLocomotion)

; 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.ConvexMPCLocomotion = type { i8, %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", [4 x %"class.Eigen::Matrix"], [4 x %"class.Eigen::Matrix"], [4 x %"class.Eigen::Matrix"], [4 x %"class.Eigen::Matrix"], %"class.Eigen::Matrix.3", float, float, float, float, float, float, float, float, float, float, i32, i32, i32, float, float, i32, [4 x %"class.Eigen::Matrix"], %"class.Eigen::Matrix.3", [4 x %class.FootSwingTrajectory], %class.OffsetDurationGait, %class.OffsetDurationGait, %class.OffsetDurationGait, %class.OffsetDurationGait, %class.OffsetDurationGait, %class.OffsetDurationGait, %class.OffsetDurationGait, %class.OffsetDurationGait, %class.OffsetDurationGait, %class.OffsetDurationGait, %class.OffsetDurationGait, %"class.Eigen::Matrix.29", %"class.Eigen::Matrix.29", %"class.Eigen::Matrix.29", %"class.Eigen::Matrix.29", %"class.Eigen::Matrix.29", i8, [4 x i8], [4 x float], [6 x float], i32, i32, %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", float, [4 x %"class.Eigen::Matrix"], [12 x i8], %struct.CMPC_Result, [720 x float], float, %struct.CMPC_Jump, %"class.std::vector", %class.SparseCMPC }
%"class.Eigen::Matrix.3" = type { %"class.Eigen::PlainObjectBase.4" }
%"class.Eigen::PlainObjectBase.4" = type { %"class.Eigen::DenseStorage.11" }
%"class.Eigen::DenseStorage.11" = type { %"struct.Eigen::internal::plain_array.12" }
%"struct.Eigen::internal::plain_array.12" = type { [4 x float] }
%class.FootSwingTrajectory = type { %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", float }
%class.OffsetDurationGait = type <{ %class.Gait, ptr, %"class.Eigen::Array", %"class.Eigen::Array", %"class.Eigen::Array.21", %"class.Eigen::Array.21", i32, i32, float, [4 x i8] }>
%class.Gait = type { ptr, %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.Eigen::Array" = type { %"class.Eigen::PlainObjectBase.13" }
%"class.Eigen::PlainObjectBase.13" = type { %"class.Eigen::DenseStorage.19" }
%"class.Eigen::DenseStorage.19" = type { %"struct.Eigen::internal::plain_array.20" }
%"struct.Eigen::internal::plain_array.20" = type { [4 x i32] }
%"class.Eigen::Array.21" = type { %"class.Eigen::PlainObjectBase.22" }
%"class.Eigen::PlainObjectBase.22" = type { %"class.Eigen::DenseStorage.11" }
%"class.Eigen::Matrix.29" = type { %"class.Eigen::PlainObjectBase.30" }
%"class.Eigen::PlainObjectBase.30" = type { %"class.Eigen::DenseStorage.37" }
%"class.Eigen::DenseStorage.37" = type { %"struct.Eigen::internal::plain_array.38" }
%"struct.Eigen::internal::plain_array.38" = type { [9 x float] }
%"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 float] }
%struct.CMPC_Result = type { [4 x %struct.LegControllerCommand], %"class.Eigen::Matrix.3" }
%struct.LegControllerCommand = type { %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix.29", %"class.Eigen::Matrix.29", %"class.Eigen::Matrix.29", %"class.Eigen::Matrix.29" }
%struct.CMPC_Jump = type { i8, i8, i8, i32, i32, i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 1>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 1>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.SparseCMPC = type <{ %"class.Eigen::Matrix.42", [8 x i8], %"class.Eigen::Matrix.52", double, double, double, double, %"class.Eigen::Matrix.62", %"class.Eigen::Matrix.62", %"class.Eigen::Matrix.62", %"class.Eigen::Matrix.62", %"class.Eigen::Matrix.72", %"class.Eigen::Matrix.52", %"class.Eigen::Matrix.52", %"class.Eigen::Matrix.52", %"class.std::vector.82", %"class.std::vector", %"class.std::vector.87", %"class.std::vector.92", %"class.std::vector.98", %"class.std::vector.103", %"class.std::vector.109", %"class.std::vector.109", %"class.std::vector.114", %"class.std::vector.114", %"class.std::vector.87", %"class.std::vector.87", %"class.std::vector.87", %"class.Eigen::Matrix.119", i32, i32, i32, [12 x i8] }>
%"class.Eigen::Matrix.42" = type { %"class.Eigen::PlainObjectBase.43" }
%"class.Eigen::PlainObjectBase.43" = type { %"class.Eigen::DenseStorage.50" }
%"class.Eigen::DenseStorage.50" = type { %"struct.Eigen::internal::plain_array.51" }
%"struct.Eigen::internal::plain_array.51" = type { [9 x double] }
%"class.Eigen::Matrix.62" = type { %"class.Eigen::PlainObjectBase.63" }
%"class.Eigen::PlainObjectBase.63" = type { %"class.Eigen::DenseStorage.70" }
%"class.Eigen::DenseStorage.70" = type { %"struct.Eigen::internal::plain_array.71" }
%"struct.Eigen::internal::plain_array.71" = type { [3 x double] }
%"class.Eigen::Matrix.72" = type { %"class.Eigen::PlainObjectBase.73" }
%"class.Eigen::PlainObjectBase.73" = type { %"class.Eigen::DenseStorage.80" }
%"class.Eigen::DenseStorage.80" = type { %"struct.Eigen::internal::plain_array.81" }
%"struct.Eigen::internal::plain_array.81" = type { [4 x double] }
%"class.Eigen::Matrix.52" = type { %"class.Eigen::PlainObjectBase.53" }
%"class.Eigen::PlainObjectBase.53" = type { %"class.Eigen::DenseStorage.60" }
%"class.Eigen::DenseStorage.60" = type { %"struct.Eigen::internal::plain_array.61" }
%"struct.Eigen::internal::plain_array.61" = type { [12 x double] }
%"class.std::vector.82" = type { %"struct.std::_Vector_base.83" }
%"struct.std::_Vector_base.83" = type { %"struct.std::_Vector_base<ContactState, std::allocator<ContactState>>::_Vector_impl" }
%"struct.std::_Vector_base<ContactState, std::allocator<ContactState>>::_Vector_impl" = type { %"struct.std::_Vector_base<ContactState, std::allocator<ContactState>>::_Vector_impl_data" }
%"struct.std::_Vector_base<ContactState, std::allocator<ContactState>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.92" = type { %"struct.std::_Vector_base.93" }
%"struct.std::_Vector_base.93" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 12>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 12>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 12>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 12>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 12>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 12>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 12>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 12>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.98" = type { %"struct.std::_Vector_base.99" }
%"struct.std::_Vector_base.99" = type { %"struct.std::_Vector_base<BblockID, std::allocator<BblockID>>::_Vector_impl" }
%"struct.std::_Vector_base<BblockID, std::allocator<BblockID>>::_Vector_impl" = type { %"struct.std::_Vector_base<BblockID, std::allocator<BblockID>>::_Vector_impl_data" }
%"struct.std::_Vector_base<BblockID, std::allocator<BblockID>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.103" = type { %"struct.std::_Vector_base.104" }
%"struct.std::_Vector_base.104" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 3>>>::_Vector_impl" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 3>>>::_Vector_impl" = type { %"struct.std::_Vector_base<Eigen::Matrix<double, 12, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 3>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Eigen::Matrix<double, 12, 3>, Eigen::aligned_allocator<Eigen::Matrix<double, 12, 3>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.109" = type { %"struct.std::_Vector_base.110" }
%"struct.std::_Vector_base.110" = type { %"struct.std::_Vector_base<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.114" = type { %"struct.std::_Vector_base.115" }
%"struct.std::_Vector_base.115" = type { %"struct.std::_Vector_base<SparseTriple<double>, std::allocator<SparseTriple<double>>>::_Vector_impl" }
%"struct.std::_Vector_base<SparseTriple<double>, std::allocator<SparseTriple<double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<SparseTriple<double>, std::allocator<SparseTriple<double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<SparseTriple<double>, std::allocator<SparseTriple<double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.87" = type { %"struct.std::_Vector_base.88" }
%"struct.std::_Vector_base.88" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.Eigen::Matrix.119" = type { %"class.Eigen::PlainObjectBase.120" }
%"class.Eigen::PlainObjectBase.120" = type { %"class.Eigen::DenseStorage.127" }
%"class.Eigen::DenseStorage.127" = type { ptr, i64 }
%struct.StateEstimate = type { %"class.Eigen::Matrix.3", %"class.Eigen::Matrix", %"class.Eigen::Matrix", [8 x i8], %"class.Eigen::Matrix.3", %"class.Eigen::Matrix", %"class.Eigen::Matrix.29", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", %"class.Eigen::Matrix", [4 x i8] }

; 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
define dso_local void @_ZN19ConvexMPCLocomotion13_SetupCommandER23StateEstimatorContainerIfESt6vectorIdSaIdEE(ptr noundef nonnull align 16 dereferenceable(7184) %0, ptr noundef nonnull align 16 dereferenceable(96) %1, ptr noundef %2) #1 align 2 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca float, align 4
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %13 = load ptr, ptr %4, align 8
  %14 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 18
  store float 2.500000e-01, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  store float 0x3F847AE140000000, ptr %10, align 4, !tbaa !92
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store float 0x3F789374C0000000, ptr %11, align 4, !tbaa !92
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store float 0x3F9EB851E0000000, ptr %12, align 4, !tbaa !92
  %15 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #6
  %16 = load double, ptr %15, align 8, !tbaa !93
  %17 = fptrunc double %16 to float
  store float %17, ptr %7, align 4, !tbaa !92
  %18 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1) #6
  %19 = load double, ptr %18, align 8, !tbaa !93
  %20 = fptrunc double %19 to float
  store float %20, ptr %8, align 4, !tbaa !92
  %21 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 2) #6
  %22 = load double, ptr %21, align 8, !tbaa !93
  %23 = fptrunc double %22 to float
  store float %23, ptr %9, align 4, !tbaa !92
  %24 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 16
  %25 = load float, ptr %24, align 4, !tbaa !94
  %26 = load float, ptr %10, align 4, !tbaa !92
  %27 = fsub float 1.000000e+00, %26
  %28 = load float, ptr %7, align 4, !tbaa !92
  %29 = load float, ptr %10, align 4, !tbaa !92
  %30 = fmul float %28, %29
  %31 = call float @llvm.fmuladd.f32(float %25, float %27, float %30)
  %32 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 16
  store float %31, ptr %32, align 4, !tbaa !94
  %33 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 17
  %34 = load float, ptr %33, align 8, !tbaa !95
  %35 = load float, ptr %11, align 4, !tbaa !92
  %36 = fsub float 1.000000e+00, %35
  %37 = load float, ptr %8, align 4, !tbaa !92
  %38 = load float, ptr %11, align 4, !tbaa !92
  %39 = fmul float %37, %38
  %40 = call float @llvm.fmuladd.f32(float %34, float %36, float %39)
  %41 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 17
  store float %40, ptr %41, align 8, !tbaa !95
  %42 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 11
  %43 = load float, ptr %42, align 16, !tbaa !96
  %44 = load float, ptr %12, align 4, !tbaa !92
  %45 = fsub float 1.000000e+00, %44
  %46 = load float, ptr %9, align 4, !tbaa !92
  %47 = load float, ptr %12, align 4, !tbaa !92
  %48 = fmul float %46, %47
  %49 = call float @llvm.fmuladd.f32(float %43, float %45, float %48)
  %50 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 11
  store float %49, ptr %50, align 16, !tbaa !96
  %51 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 16
  %52 = load float, ptr %51, align 4, !tbaa !94
  %53 = fpext float %52 to double
  %54 = fcmp ogt double %53, 2.000000e+00
  br i1 %54, label %55, label %57

55:                                               ; preds = %3
  %56 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 16
  store float 2.000000e+00, ptr %56, align 4, !tbaa !94
  br label %65

57:                                               ; preds = %3
  %58 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 16
  %59 = load float, ptr %58, align 4, !tbaa !94
  %60 = fpext float %59 to double
  %61 = fcmp olt double %60, -1.000000e+00
  br i1 %61, label %62, label %64

62:                                               ; preds = %57
  %63 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 16
  store float -1.000000e+00, ptr %63, align 4, !tbaa !94
  br label %64

64:                                               ; preds = %62, %57
  br label %65

65:                                               ; preds = %64, %55
  %66 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 17
  %67 = load float, ptr %66, align 8, !tbaa !95
  %68 = fpext float %67 to double
  %69 = fcmp ogt double %68, 6.000000e-01
  br i1 %69, label %70, label %72

70:                                               ; preds = %65
  %71 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 17
  store float 0x3FE3333340000000, ptr %71, align 8, !tbaa !95
  br label %80

72:                                               ; preds = %65
  %73 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 17
  %74 = load float, ptr %73, align 8, !tbaa !95
  %75 = fpext float %74 to double
  %76 = fcmp olt double %75, -6.000000e-01
  br i1 %76, label %77, label %79

77:                                               ; preds = %72
  %78 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 17
  store float 0xBFE3333340000000, ptr %78, align 8, !tbaa !95
  br label %79

79:                                               ; preds = %77, %72
  br label %80

80:                                               ; preds = %79, %70
  %81 = load ptr, ptr %5, align 8, !tbaa !5
  %82 = call noundef nonnull align 16 dereferenceable(172) ptr @_ZN23StateEstimatorContainerIfE9getResultEv(ptr noundef nonnull align 16 dereferenceable(96) %81)
  %83 = getelementptr inbounds %struct.StateEstimate, ptr %82, i32 0, i32 7
  %84 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIfLi3ELi1ELi0ELi3ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %83, i64 noundef 2)
  %85 = load float, ptr %84, align 4, !tbaa !92
  %86 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 24
  %87 = load float, ptr %86, align 4, !tbaa !97
  %88 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 11
  %89 = load float, ptr %88, align 16, !tbaa !96
  %90 = call float @llvm.fmuladd.f32(float %87, float %89, float %85)
  %91 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 12
  store float %90, ptr %91, align 4, !tbaa !98
  %92 = load ptr, ptr %5, align 8, !tbaa !5
  %93 = call noundef nonnull align 16 dereferenceable(172) ptr @_ZN23StateEstimatorContainerIfE9getResultEv(ptr noundef nonnull align 16 dereferenceable(96) %92)
  %94 = getelementptr inbounds %struct.StateEstimate, ptr %93, i32 0, i32 7
  %95 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIfLi3ELi1ELi0ELi3ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %94, i64 noundef 2)
  %96 = load float, ptr %95, align 4, !tbaa !92
  %97 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 13
  %98 = load float, ptr %97, align 8, !tbaa !99
  %99 = fsub float %96, %98
  %100 = call noundef float @_ZSt3absf(float noundef %99)
  %101 = fpext float %100 to double
  %102 = fcmp ogt double %101, 5.000000e+00
  br i1 %102, label %103, label %110

103:                                              ; preds = %80
  %104 = load ptr, ptr %5, align 8, !tbaa !5
  %105 = call noundef nonnull align 16 dereferenceable(172) ptr @_ZN23StateEstimatorContainerIfE9getResultEv(ptr noundef nonnull align 16 dereferenceable(96) %104)
  %106 = getelementptr inbounds %struct.StateEstimate, ptr %105, i32 0, i32 7
  %107 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIfLi3ELi1ELi0ELi3ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %106, i64 noundef 2)
  %108 = load float, ptr %107, align 4, !tbaa !92
  %109 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 13
  store float %108, ptr %109, align 8, !tbaa !99
  br label %110

110:                                              ; preds = %103, %80
  %111 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 13
  %112 = load float, ptr %111, align 8, !tbaa !99
  %113 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 24
  %114 = load float, ptr %113, align 4, !tbaa !97
  %115 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 11
  %116 = load float, ptr %115, align 16, !tbaa !96
  %117 = call float @llvm.fmuladd.f32(float %114, float %116, float %112)
  %118 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 13
  store float %117, ptr %118, align 8, !tbaa !99
  %119 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 14
  store float 0.000000e+00, ptr %119, align 4, !tbaa !100
  %120 = getelementptr inbounds %class.ConvexMPCLocomotion, ptr %13, i32 0, i32 15
  store float 0.000000e+00, ptr %120, align 16, !tbaa !101
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  ret void
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(172) ptr @_ZN23StateEstimatorContainerIfE9getResultEv(ptr noundef nonnull align 16 dereferenceable(96)) #2 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt3absf(float noundef) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !20, i64 300}
!10 = !{!"_ZTS19ConvexMPCLocomotion", !11, i64 0, !12, i64 4, !12, i64 16, !12, i64 28, !12, i64 40, !12, i64 52, !7, i64 64, !7, i64 112, !7, i64 160, !7, i64 208, !16, i64 256, !20, i64 272, !20, i64 276, !20, i64 280, !20, i64 284, !20, i64 288, !20, i64 292, !20, i64 296, !20, i64 300, !20, i64 304, !20, i64 308, !21, i64 312, !21, i64 316, !21, i64 320, !20, i64 324, !20, i64 328, !21, i64 332, !7, i64 336, !16, i64 384, !7, i64 400, !22, i64 656, !22, i64 784, !22, i64 912, !22, i64 1040, !22, i64 1168, !22, i64 1296, !22, i64 1424, !22, i64 1552, !22, i64 1680, !22, i64 1808, !22, i64 1936, !33, i64 2064, !33, i64 2100, !33, i64 2136, !33, i64 2172, !33, i64 2208, !11, i64 2244, !7, i64 2245, !7, i64 2252, !7, i64 2268, !21, i64 2292, !21, i64 2296, !12, i64 2300, !12, i64 2312, !12, i64 2324, !20, i64 2336, !7, i64 2340, !37, i64 2400, !7, i64 3280, !20, i64 6160, !38, i64 6164, !39, i64 6184, !43, i64 6208}
!11 = !{!"bool", !7, i64 0}
!12 = !{!"_ZTSN5Eigen6MatrixIfLi3ELi1ELi0ELi3ELi1EEE", !13, i64 0}
!13 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIfLi3ELi1ELi0ELi3ELi1EEEEE", !14, i64 0}
!14 = !{!"_ZTSN5Eigen12DenseStorageIfLi3ELi3ELi1ELi0EEE", !15, i64 0}
!15 = !{!"_ZTSN5Eigen8internal11plain_arrayIfLi3ELi0ELi0EEE", !7, i64 0}
!16 = !{!"_ZTSN5Eigen6MatrixIfLi4ELi1ELi0ELi4ELi1EEE", !17, i64 0}
!17 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIfLi4ELi1ELi0ELi4ELi1EEEEE", !18, i64 0}
!18 = !{!"_ZTSN5Eigen12DenseStorageIfLi4ELi4ELi1ELi0EEE", !19, i64 0}
!19 = !{!"_ZTSN5Eigen8internal11plain_arrayIfLi4ELi0ELi16EEE", !7, i64 0}
!20 = !{!"float", !7, i64 0}
!21 = !{!"int", !7, i64 0}
!22 = !{!"_ZTS18OffsetDurationGait", !23, i64 0, !6, i64 40, !27, i64 48, !27, i64 64, !31, i64 80, !31, i64 96, !21, i64 112, !21, i64 116, !20, i64 120}
!23 = !{!"_ZTS4Gait", !24, i64 8}
!24 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !25, i64 0, !26, i64 8, !7, i64 16}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSN5Eigen5ArrayIiLi4ELi1ELi0ELi4ELi1EEE", !28, i64 0}
!28 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_5ArrayIiLi4ELi1ELi0ELi4ELi1EEEEE", !29, i64 0}
!29 = !{!"_ZTSN5Eigen12DenseStorageIiLi4ELi4ELi1ELi0EEE", !30, i64 0}
!30 = !{!"_ZTSN5Eigen8internal11plain_arrayIiLi4ELi0ELi16EEE", !7, i64 0}
!31 = !{!"_ZTSN5Eigen5ArrayIfLi4ELi1ELi0ELi4ELi1EEE", !32, i64 0}
!32 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_5ArrayIfLi4ELi1ELi0ELi4ELi1EEEEE", !18, i64 0}
!33 = !{!"_ZTSN5Eigen6MatrixIfLi3ELi3ELi0ELi3ELi3EEE", !34, i64 0}
!34 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIfLi3ELi3ELi0ELi3ELi3EEEEE", !35, i64 0}
!35 = !{!"_ZTSN5Eigen12DenseStorageIfLi9ELi3ELi3ELi0EEE", !36, i64 0}
!36 = !{!"_ZTSN5Eigen8internal11plain_arrayIfLi9ELi0ELi0EEE", !7, i64 0}
!37 = !{!"_ZTS11CMPC_ResultIfE", !7, i64 0, !16, i64 864}
!38 = !{!"_ZTS9CMPC_Jump", !11, i64 0, !11, i64 1, !11, i64 2, !21, i64 4, !21, i64 8, !21, i64 12}
!39 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!"_ZTS10SparseCMPC", !44, i64 0, !48, i64 80, !52, i64 176, !52, i64 184, !52, i64 192, !52, i64 200, !53, i64 208, !53, i64 232, !53, i64 256, !53, i64 280, !57, i64 304, !48, i64 336, !48, i64 432, !48, i64 528, !61, i64 624, !39, i64 648, !65, i64 672, !69, i64 696, !73, i64 720, !77, i64 744, !81, i64 768, !81, i64 792, !85, i64 816, !85, i64 840, !65, i64 864, !65, i64 888, !65, i64 912, !89, i64 936, !21, i64 952, !21, i64 956, !21, i64 960}
!44 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE", !45, i64 0}
!45 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEE", !46, i64 0}
!46 = !{!"_ZTSN5Eigen12DenseStorageIdLi9ELi3ELi3ELi0EEE", !47, i64 0}
!47 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi9ELi0ELi0EEE", !7, i64 0}
!48 = !{!"_ZTSN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEE", !49, i64 0}
!49 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEEEE", !50, i64 0}
!50 = !{!"_ZTSN5Eigen12DenseStorageIdLi12ELi12ELi1ELi0EEE", !51, i64 0}
!51 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi12ELi0ELi16EEE", !7, i64 0}
!52 = !{!"double", !7, i64 0}
!53 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !54, i64 0}
!54 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !55, i64 0}
!55 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !56, i64 0}
!56 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !7, i64 0}
!57 = !{!"_ZTSN5Eigen6MatrixIdLi4ELi1ELi0ELi4ELi1EEE", !58, i64 0}
!58 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEE", !59, i64 0}
!59 = !{!"_ZTSN5Eigen12DenseStorageIdLi4ELi4ELi1ELi0EEE", !60, i64 0}
!60 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi4ELi0ELi16EEE", !7, i64 0}
!61 = !{!"_ZTSSt6vectorI12ContactStateSaIS0_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseI12ContactStateSaIS0_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseI12ContactStateSaIS0_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseI12ContactStateSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!"_ZTSSt6vectorIdSaIdEE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!69 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!73 = !{!"_ZTSSt6vectorI8BblockIDSaIS0_EE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseI8BblockIDSaIS0_EE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseI8BblockIDSaIS0_EE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseI8BblockIDSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!77 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!81 = !{!"_ZTSSt6vectorIjSaIjEE", !82, i64 0}
!82 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!85 = !{!"_ZTSSt6vectorI12SparseTripleIdESaIS1_EE", !86, i64 0}
!86 = !{!"_ZTSSt12_Vector_baseI12SparseTripleIdESaIS1_EE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseI12SparseTripleIdESaIS1_EE12_Vector_implE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseI12SparseTripleIdESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!89 = !{!"_ZTSN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEE", !90, i64 0}
!90 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEEE", !91, i64 0}
!91 = !{!"_ZTSN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EEE", !6, i64 0, !26, i64 8}
!92 = !{!20, !20, i64 0}
!93 = !{!52, !52, i64 0}
!94 = !{!10, !20, i64 292}
!95 = !{!10, !20, i64 296}
!96 = !{!10, !20, i64 272}
!97 = !{!10, !20, i64 324}
!98 = !{!10, !20, i64 276}
!99 = !{!10, !20, i64 280}
!100 = !{!10, !20, i64 284}
!101 = !{!10, !20, i64 288}


; 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"

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN19ConvexMPCLocomotion13_SetupCommandER23StateEstimatorContainerIfESt6vectorIdSaIdEE(ptr nocapture noundef nonnull align 16 dereferenceable(7184) %0, ptr noundef nonnull align 16 dereferenceable(96) %1, ptr noundef nonnull %2) local_unnamed_addr #0 align 2 {
  %4 = getelementptr inbounds i8, ptr %0, i64 300
  store float 2.500000e-01, ptr %4, align 4, !tbaa !5
  %5 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 0) #6
  %6 = load double, ptr %5, align 8, !tbaa !91
  %7 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 1) #6
  %8 = load double, ptr %7, align 8, !tbaa !91
  %9 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef 2) #6
  %10 = load double, ptr %9, align 8, !tbaa !91
  %11 = fptrunc double %10 to float
  %12 = getelementptr inbounds i8, ptr %0, i64 292
  %13 = getelementptr inbounds i8, ptr %0, i64 296
  %14 = insertelement <2 x double> poison, double %6, i64 0
  %15 = insertelement <2 x double> %14, double %8, i64 1
  %16 = fptrunc <2 x double> %15 to <2 x float>
  %17 = load <2 x float>, ptr %12, align 4, !tbaa !92
  %18 = fmul <2 x float> %16, <float 0x3F847AE140000000, float 0x3F789374C0000000>
  %19 = tail call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %17, <2 x float> <float 0x3FEFAE1480000000, float 0x3FEFCED920000000>, <2 x float> %18)
  store <2 x float> %19, ptr %12, align 4, !tbaa !92
  %20 = getelementptr inbounds i8, ptr %0, i64 272
  %21 = load float, ptr %20, align 16, !tbaa !93
  %22 = fmul float %11, 0x3F9EB851E0000000
  %23 = tail call float @llvm.fmuladd.f32(float %21, float 0x3FEF0A3D80000000, float %22)
  store float %23, ptr %20, align 16, !tbaa !93
  %24 = extractelement <2 x float> %19, i64 0
  %25 = fcmp ogt float %24, 2.000000e+00
  br i1 %25, label %.sink.split, label %26

26:                                               ; preds = %3
  %27 = fcmp olt float %24, -1.000000e+00
  br i1 %27, label %.sink.split, label %28

.sink.split:                                      ; preds = %26, %3
  %.sink = phi float [ 2.000000e+00, %3 ], [ -1.000000e+00, %26 ]
  store float %.sink, ptr %12, align 4, !tbaa !94
  br label %28

28:                                               ; preds = %.sink.split, %26
  %29 = extractelement <2 x float> %19, i64 1
  %30 = fpext float %29 to double
  %31 = fcmp ogt double %30, 6.000000e-01
  br i1 %31, label %.sink.split14, label %32

32:                                               ; preds = %28
  %33 = fcmp olt double %30, -6.000000e-01
  br i1 %33, label %.sink.split14, label %34

.sink.split14:                                    ; preds = %32, %28
  %.sink15 = phi float [ 0x3FE3333340000000, %28 ], [ 0xBFE3333340000000, %32 ]
  store float %.sink15, ptr %13, align 8, !tbaa !95
  br label %34

34:                                               ; preds = %.sink.split14, %32
  %35 = tail call noundef nonnull align 16 dereferenceable(172) ptr @_ZN23StateEstimatorContainerIfE9getResultEv(ptr noundef nonnull align 16 dereferenceable(96) %1)
  %36 = getelementptr inbounds i8, ptr %35, i64 112
  %37 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIfLi3ELi1ELi0ELi3ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %36, i64 noundef 2)
  %38 = load float, ptr %37, align 4, !tbaa !92
  %39 = getelementptr inbounds i8, ptr %0, i64 324
  %40 = load float, ptr %39, align 4, !tbaa !96
  %41 = load float, ptr %20, align 16, !tbaa !93
  %42 = tail call float @llvm.fmuladd.f32(float %40, float %41, float %38)
  %43 = getelementptr inbounds i8, ptr %0, i64 276
  store float %42, ptr %43, align 4, !tbaa !97
  %44 = tail call noundef nonnull align 16 dereferenceable(172) ptr @_ZN23StateEstimatorContainerIfE9getResultEv(ptr noundef nonnull align 16 dereferenceable(96) %1)
  %45 = getelementptr inbounds i8, ptr %44, i64 112
  %46 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIfLi3ELi1ELi0ELi3ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %45, i64 noundef 2)
  %47 = load float, ptr %46, align 4, !tbaa !92
  %48 = getelementptr inbounds i8, ptr %0, i64 280
  %49 = load float, ptr %48, align 8, !tbaa !98
  %50 = fsub float %47, %49
  %51 = tail call noundef float @_ZSt3absf(float noundef %50)
  %52 = fcmp ogt float %51, 5.000000e+00
  br i1 %52, label %53, label %._crit_edge

53:                                               ; preds = %34
  %54 = tail call noundef nonnull align 16 dereferenceable(172) ptr @_ZN23StateEstimatorContainerIfE9getResultEv(ptr noundef nonnull align 16 dereferenceable(96) %1)
  %55 = getelementptr inbounds i8, ptr %54, i64 112
  %56 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK5Eigen15DenseCoeffsBaseINS_6MatrixIfLi3ELi1ELi0ELi3ELi1EEELi0EEixEl(ptr noundef nonnull align 1 dereferenceable(1) %55, i64 noundef 2)
  br label %._crit_edge

._crit_edge:                                      ; preds = %34, %53
  %.in = phi ptr [ %56, %53 ], [ %48, %34 ]
  %57 = load float, ptr %.in, align 4, !tbaa !92
  %58 = load float, ptr %39, align 4, !tbaa !96
  %59 = load float, ptr %20, align 16, !tbaa !93
  %60 = tail call float @llvm.fmuladd.f32(float %58, float %59, float %57)
  store float %60, ptr %48, align 8, !tbaa !98
  %61 = getelementptr inbounds i8, ptr %0, i64 284
  store <2 x float> zeroinitializer, ptr %61, align 4, !tbaa !92
  ret void
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 16 dereferenceable(172) ptr @_ZN23StateEstimatorContainerIfE9getResultEv(ptr noundef nonnull align 16 dereferenceable(96)) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt3absf(float noundef) local_unnamed_addr #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fmuladd.v2f32(<2 x float>, <2 x float>, <2 x float>) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !18, i64 300}
!6 = !{!"_ZTS19ConvexMPCLocomotion", !7, i64 0, !10, i64 4, !10, i64 16, !10, i64 28, !10, i64 40, !10, i64 52, !8, i64 64, !8, i64 112, !8, i64 160, !8, i64 208, !14, i64 256, !18, i64 272, !18, i64 276, !18, i64 280, !18, i64 284, !18, i64 288, !18, i64 292, !18, i64 296, !18, i64 300, !18, i64 304, !18, i64 308, !19, i64 312, !19, i64 316, !19, i64 320, !18, i64 324, !18, i64 328, !19, i64 332, !8, i64 336, !14, i64 384, !8, i64 400, !20, i64 656, !20, i64 784, !20, i64 912, !20, i64 1040, !20, i64 1168, !20, i64 1296, !20, i64 1424, !20, i64 1552, !20, i64 1680, !20, i64 1808, !20, i64 1936, !32, i64 2064, !32, i64 2100, !32, i64 2136, !32, i64 2172, !32, i64 2208, !7, i64 2244, !8, i64 2245, !8, i64 2252, !8, i64 2268, !19, i64 2292, !19, i64 2296, !10, i64 2300, !10, i64 2312, !10, i64 2324, !18, i64 2336, !8, i64 2340, !36, i64 2400, !8, i64 3280, !18, i64 6160, !37, i64 6164, !38, i64 6184, !42, i64 6208}
!7 = !{!"bool", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN5Eigen6MatrixIfLi3ELi1ELi0ELi3ELi1EEE", !11, i64 0}
!11 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIfLi3ELi1ELi0ELi3ELi1EEEEE", !12, i64 0}
!12 = !{!"_ZTSN5Eigen12DenseStorageIfLi3ELi3ELi1ELi0EEE", !13, i64 0}
!13 = !{!"_ZTSN5Eigen8internal11plain_arrayIfLi3ELi0ELi0EEE", !8, i64 0}
!14 = !{!"_ZTSN5Eigen6MatrixIfLi4ELi1ELi0ELi4ELi1EEE", !15, i64 0}
!15 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIfLi4ELi1ELi0ELi4ELi1EEEEE", !16, i64 0}
!16 = !{!"_ZTSN5Eigen12DenseStorageIfLi4ELi4ELi1ELi0EEE", !17, i64 0}
!17 = !{!"_ZTSN5Eigen8internal11plain_arrayIfLi4ELi0ELi16EEE", !8, i64 0}
!18 = !{!"float", !8, i64 0}
!19 = !{!"int", !8, i64 0}
!20 = !{!"_ZTS18OffsetDurationGait", !21, i64 0, !24, i64 40, !26, i64 48, !26, i64 64, !30, i64 80, !30, i64 96, !19, i64 112, !19, i64 116, !18, i64 120}
!21 = !{!"_ZTS4Gait", !22, i64 8}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !23, i64 0, !25, i64 8, !8, i64 16}
!23 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !24, i64 0}
!24 = !{!"any pointer", !8, i64 0}
!25 = !{!"long", !8, i64 0}
!26 = !{!"_ZTSN5Eigen5ArrayIiLi4ELi1ELi0ELi4ELi1EEE", !27, i64 0}
!27 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_5ArrayIiLi4ELi1ELi0ELi4ELi1EEEEE", !28, i64 0}
!28 = !{!"_ZTSN5Eigen12DenseStorageIiLi4ELi4ELi1ELi0EEE", !29, i64 0}
!29 = !{!"_ZTSN5Eigen8internal11plain_arrayIiLi4ELi0ELi16EEE", !8, i64 0}
!30 = !{!"_ZTSN5Eigen5ArrayIfLi4ELi1ELi0ELi4ELi1EEE", !31, i64 0}
!31 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_5ArrayIfLi4ELi1ELi0ELi4ELi1EEEEE", !16, i64 0}
!32 = !{!"_ZTSN5Eigen6MatrixIfLi3ELi3ELi0ELi3ELi3EEE", !33, i64 0}
!33 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIfLi3ELi3ELi0ELi3ELi3EEEEE", !34, i64 0}
!34 = !{!"_ZTSN5Eigen12DenseStorageIfLi9ELi3ELi3ELi0EEE", !35, i64 0}
!35 = !{!"_ZTSN5Eigen8internal11plain_arrayIfLi9ELi0ELi0EEE", !8, i64 0}
!36 = !{!"_ZTS11CMPC_ResultIfE", !8, i64 0, !14, i64 864}
!37 = !{!"_ZTS9CMPC_Jump", !7, i64 0, !7, i64 1, !7, i64 2, !19, i64 4, !19, i64 8, !19, i64 12}
!38 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!42 = !{!"_ZTS10SparseCMPC", !43, i64 0, !47, i64 80, !51, i64 176, !51, i64 184, !51, i64 192, !51, i64 200, !52, i64 208, !52, i64 232, !52, i64 256, !52, i64 280, !56, i64 304, !47, i64 336, !47, i64 432, !47, i64 528, !60, i64 624, !38, i64 648, !64, i64 672, !68, i64 696, !72, i64 720, !76, i64 744, !80, i64 768, !80, i64 792, !84, i64 816, !84, i64 840, !64, i64 864, !64, i64 888, !64, i64 912, !88, i64 936, !19, i64 952, !19, i64 956, !19, i64 960}
!43 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi3ELi0ELi3ELi3EEE", !44, i64 0}
!44 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi3ELi0ELi3ELi3EEEEE", !45, i64 0}
!45 = !{!"_ZTSN5Eigen12DenseStorageIdLi9ELi3ELi3ELi0EEE", !46, i64 0}
!46 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi9ELi0ELi0EEE", !8, i64 0}
!47 = !{!"_ZTSN5Eigen6MatrixIdLi12ELi1ELi0ELi12ELi1EEE", !48, i64 0}
!48 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi12ELi1ELi0ELi12ELi1EEEEE", !49, i64 0}
!49 = !{!"_ZTSN5Eigen12DenseStorageIdLi12ELi12ELi1ELi0EEE", !50, i64 0}
!50 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi12ELi0ELi16EEE", !8, i64 0}
!51 = !{!"double", !8, i64 0}
!52 = !{!"_ZTSN5Eigen6MatrixIdLi3ELi1ELi0ELi3ELi1EEE", !53, i64 0}
!53 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi3ELi1ELi0ELi3ELi1EEEEE", !54, i64 0}
!54 = !{!"_ZTSN5Eigen12DenseStorageIdLi3ELi3ELi1ELi0EEE", !55, i64 0}
!55 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi3ELi0ELi0EEE", !8, i64 0}
!56 = !{!"_ZTSN5Eigen6MatrixIdLi4ELi1ELi0ELi4ELi1EEE", !57, i64 0}
!57 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIdLi4ELi1ELi0ELi4ELi1EEEEE", !58, i64 0}
!58 = !{!"_ZTSN5Eigen12DenseStorageIdLi4ELi4ELi1ELi0EEE", !59, i64 0}
!59 = !{!"_ZTSN5Eigen8internal11plain_arrayIdLi4ELi0ELi16EEE", !8, i64 0}
!60 = !{!"_ZTSSt6vectorI12ContactStateSaIS0_EE", !61, i64 0}
!61 = !{!"_ZTSSt12_Vector_baseI12ContactStateSaIS0_EE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseI12ContactStateSaIS0_EE12_Vector_implE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseI12ContactStateSaIS0_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!64 = !{!"_ZTSSt6vectorIdSaIdEE", !65, i64 0}
!65 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !66, i64 0}
!66 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!68 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi12ELi0ELi12ELi12EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!72 = !{!"_ZTSSt6vectorI8BblockIDSaIS0_EE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseI8BblockIDSaIS0_EE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseI8BblockIDSaIS0_EE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseI8BblockIDSaIS0_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!76 = !{!"_ZTSSt6vectorIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE", !77, i64 0}
!77 = !{!"_ZTSSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE12_Vector_implE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN5Eigen6MatrixIdLi12ELi3ELi0ELi12ELi3EEENS0_17aligned_allocatorIS2_EEE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!80 = !{!"_ZTSSt6vectorIjSaIjEE", !81, i64 0}
!81 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!84 = !{!"_ZTSSt6vectorI12SparseTripleIdESaIS1_EE", !85, i64 0}
!85 = !{!"_ZTSSt12_Vector_baseI12SparseTripleIdESaIS1_EE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseI12SparseTripleIdESaIS1_EE12_Vector_implE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseI12SparseTripleIdESaIS1_EE17_Vector_impl_dataE", !24, i64 0, !24, i64 8, !24, i64 16}
!88 = !{!"_ZTSN5Eigen6MatrixIfLin1ELi1ELi0ELin1ELi1EEE", !89, i64 0}
!89 = !{!"_ZTSN5Eigen15PlainObjectBaseINS_6MatrixIfLin1ELi1ELi0ELin1ELi1EEEEE", !90, i64 0}
!90 = !{!"_ZTSN5Eigen12DenseStorageIfLin1ELin1ELi1ELi0EEE", !24, i64 0, !25, i64 8}
!91 = !{!51, !51, i64 0}
!92 = !{!18, !18, i64 0}
!93 = !{!6, !18, i64 272}
!94 = !{!6, !18, i64 292}
!95 = !{!6, !18, i64 296}
!96 = !{!6, !18, i64 324}
!97 = !{!6, !18, i64 276}
!98 = !{!6, !18, i64 280}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass