; LLVM IR from Tencent-RoboticsX/jbdl :: src/jbdl/experimental/qpoases/src (SQProblemSchur)

; 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.qpOASES::QProblem" = type { %"class.qpOASES::QProblemB", i32, ptr, ptr, ptr, %"class.qpOASES::Constraints", ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.qpOASES::QProblemB" = type { ptr, i32, ptr, ptr, ptr, ptr, %"class.qpOASES::Bounds", ptr, i32, ptr, ptr, double, i32, i32, i32, i32, double, i32, ptr, double, double, i32, [4 x i8], %"class.qpOASES::Options", %"class.qpOASES::Flipper", %"struct.qpOASES::TabularOutput" }
%"class.qpOASES::Bounds" = type { %"class.qpOASES::SubjectTo", %"class.qpOASES::Indexlist", %"class.qpOASES::Indexlist" }
%"class.qpOASES::SubjectTo" = type { ptr, i32, ptr, ptr, i32, i32 }
%"class.qpOASES::Indexlist" = type <{ ptr, ptr, i32, i32, i32, i32, i32, [4 x i8] }>
%"class.qpOASES::Options" = type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8], double, double, double, double, i32, i32, i32, i32, i32, [4 x i8] }>
%"class.qpOASES::Flipper" = type { i32, i32, %"class.qpOASES::Bounds", %"class.qpOASES::Constraints", ptr, ptr, ptr }
%"struct.qpOASES::TabularOutput" = type { i32, i32, i32, i32, i32, i32, i32, i32 }
%"class.qpOASES::Constraints" = type { %"class.qpOASES::SubjectTo", %"class.qpOASES::Indexlist", %"class.qpOASES::Indexlist" }
%"class.qpOASES::SQProblemSchur" = type { %"class.qpOASES::SQProblem", ptr, ptr, i32, i32, ptr, ptr, double, double, i32, ptr, ptr, i32, ptr, ptr, ptr, %"class.qpOASES::Indexlist", %"class.qpOASES::Indexlist" }
%"class.qpOASES::SQProblem" = type { %"class.qpOASES::QProblem" }

@.str = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [67 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z8MyPrintfPKcz(ptr noundef, ...) #0

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

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() #2

declare noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28), i32 noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i32 noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur20resetSchurComplementENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064)) #5 align 2

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

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

declare noundef i32 @_ZN7qpOASES11Constraints20moveActiveToInactiveEi(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) #2

declare noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef, i32 noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur25deleteFromSchurComplementEiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef, i32 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7qpOASES9Indexlist9getLengthEv(ptr noundef nonnull align 8 dereferenceable(36)) #3 align 2

declare noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36), ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur20addToSchurComplementEiNS_15SchurUpdateTypeEiPKiPKdiS3_S5_d(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, double noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef) #4 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur16removeConstraintEiNS_11BooleanTypeES1_S1_(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) unnamed_addr #4 align 2 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i8, align 1
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store i32 %1, ptr %8, align 4, !tbaa !9
  store i32 %2, ptr %9, align 4, !tbaa !11
  store i32 %3, ptr %10, align 4, !tbaa !11
  store i32 %4, ptr %11, align 4, !tbaa !11
  %36 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  store i32 0, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  store i32 -1, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  %37 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %36)
  %38 = icmp eq i32 %37, 0
  br i1 %38, label %48, label %39

39:                                               ; preds = %5
  %40 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %36)
  %41 = icmp eq i32 %40, 2
  br i1 %41, label %48, label %42

42:                                               ; preds = %39
  %43 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %36)
  %44 = icmp eq i32 %43, 4
  br i1 %44, label %48, label %45

45:                                               ; preds = %42
  %46 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %36)
  %47 = icmp eq i32 %46, 5
  br i1 %47, label %48, label %51

48:                                               ; preds = %45, %42, %39, %5
  %49 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %50 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %49, i32 noundef 9, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1543, i32 noundef 1)
  store i32 %50, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %570

51:                                               ; preds = %45
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %52 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %36)
  store i32 %52, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %53 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 5
  %54 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %53)
  %55 = load i32, ptr %8, align 4, !tbaa !9
  %56 = call noundef i32 @_ZNK7qpOASES9Indexlist8getIndexEi(ptr noundef nonnull align 8 dereferenceable(36) %54, i32 noundef %55)
  store i32 %56, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 0, ptr %24, align 4, !tbaa !11
  %57 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 5
  %58 = load i32, ptr %8, align 4, !tbaa !9
  %59 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %57, i32 noundef %58)
  %60 = icmp eq i32 %59, 0
  br i1 %60, label %61, label %64

61:                                               ; preds = %51
  %62 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %63 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %62, i32 noundef 97, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1558, i32 noundef 1)
  store i32 %63, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %569

64:                                               ; preds = %51
  %65 = load i32, ptr %20, align 4, !tbaa !9
  %66 = icmp slt i32 %65, 0
  br i1 %66, label %71, label %67

67:                                               ; preds = %64
  %68 = load i32, ptr %20, align 4, !tbaa !9
  %69 = load i32, ptr %19, align 4, !tbaa !9
  %70 = icmp sge i32 %68, %69
  br i1 %70, label %71, label %74

71:                                               ; preds = %67, %64
  %72 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %73 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %72, i32 noundef 97, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1561, i32 noundef 1)
  store i32 %73, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %569

74:                                               ; preds = %67
  %75 = load i32, ptr %11, align 4, !tbaa !11
  %76 = icmp eq i32 %75, 1
  br i1 %76, label %77, label %85

77:                                               ; preds = %74
  %78 = load i32, ptr %8, align 4, !tbaa !9
  %79 = call noundef i32 @_ZN7qpOASES8QProblem22ensureNonzeroCurvatureENS_11BooleanTypeEiRS1_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064) %36, i32 noundef 0, i32 noundef %78, ptr noundef nonnull align 4 dereferenceable(4) %24, ptr noundef nonnull align 4 dereferenceable(4) %22, ptr noundef nonnull align 4 dereferenceable(4) %21, ptr noundef nonnull align 4 dereferenceable(4) %23)
  store i32 %79, ptr %12, align 4, !tbaa !13
  %80 = load i32, ptr %12, align 4, !tbaa !13
  %81 = icmp ne i32 %80, 0
  br i1 %81, label %82, label %84

82:                                               ; preds = %77
  %83 = load i32, ptr %12, align 4, !tbaa !13
  store i32 %83, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %569

84:                                               ; preds = %77
  br label %85

85:                                               ; preds = %84, %74
  %86 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 5
  %87 = load i32, ptr %8, align 4, !tbaa !9
  %88 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %86, i32 noundef %87)
  store i32 %88, ptr %15, align 4, !tbaa !15
  %89 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 7
  %90 = load double, ptr %89, align 8, !tbaa !17
  store double %90, ptr %16, align 8, !tbaa !33
  %91 = load i32, ptr %8, align 4, !tbaa !9
  %92 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 25
  %93 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %92, i32 0, i32 3
  store i32 %91, ptr %93, align 4, !tbaa !34
  %94 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 5
  %95 = load i32, ptr %8, align 4, !tbaa !9
  %96 = call noundef i32 @_ZN7qpOASES11Constraints20moveActiveToInactiveEi(ptr noundef nonnull align 8 dereferenceable(120) %94, i32 noundef %95)
  %97 = icmp ne i32 %96, 0
  br i1 %97, label %98, label %101

98:                                               ; preds = %85
  %99 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %100 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %99, i32 noundef 80, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1579, i32 noundef 1)
  store i32 %100, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %569

101:                                              ; preds = %85
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #6
  store i8 0, ptr %25, align 1, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %102

102:                                              ; preds = %135, %101
  %103 = load i32, ptr %26, align 4, !tbaa !9
  %104 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 3
  %105 = load i32, ptr %104, align 8, !tbaa !37
  %106 = icmp slt i32 %103, %105
  br i1 %106, label %108, label %107

107:                                              ; preds = %102
  store i32 2, ptr %18, align 4
  br label %138

108:                                              ; preds = %102
  %109 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 11
  %110 = load ptr, ptr %109, align 8, !tbaa !38
  %111 = load i32, ptr %26, align 4, !tbaa !9
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds i32, ptr %110, i64 %112
  %114 = load i32, ptr %113, align 4, !tbaa !39
  %115 = icmp eq i32 %114, 2
  br i1 %115, label %116, label %134

116:                                              ; preds = %108
  %117 = load i32, ptr %8, align 4, !tbaa !9
  %118 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 10
  %119 = load ptr, ptr %118, align 8, !tbaa !41
  %120 = load i32, ptr %26, align 4, !tbaa !9
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds i32, ptr %119, i64 %121
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = icmp eq i32 %117, %123
  br i1 %124, label %125, label %134

125:                                              ; preds = %116
  %126 = load i32, ptr %26, align 4, !tbaa !9
  %127 = call noundef i32 @_ZN7qpOASES14SQProblemSchur25deleteFromSchurComplementEiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %126, i32 noundef 1)
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %129, label %132

129:                                              ; preds = %125
  %130 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %131 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %130, i32 noundef 80, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1591, i32 noundef 1)
  store i32 %131, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %138

132:                                              ; preds = %125
  store i8 1, ptr %25, align 1, !tbaa !35
  %133 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %133, ptr %14, align 4, !tbaa !9
  store i32 2, ptr %13, align 4, !tbaa !9
  store i32 2, ptr %18, align 4
  br label %138

134:                                              ; preds = %116, %108
  br label %135

135:                                              ; preds = %134
  %136 = load i32, ptr %26, align 4, !tbaa !9
  %137 = add nsw i32 %136, 1
  store i32 %137, ptr %26, align 4, !tbaa !9
  br label %102, !llvm.loop !42

138:                                              ; preds = %132, %129, %107
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  %139 = load i32, ptr %18, align 4
  switch i32 %139, label %568 [
    i32 2, label %140
  ]

140:                                              ; preds = %138
  %141 = load i8, ptr %25, align 1, !tbaa !35, !range !44, !noundef !45
  %142 = trunc i8 %141 to i1
  br i1 %142, label %224, label %143

143:                                              ; preds = %140
  %144 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 3
  %145 = load i32, ptr %144, align 8, !tbaa !37
  %146 = icmp slt i32 %145, 0
  br i1 %146, label %153, label %147

147:                                              ; preds = %143
  %148 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 3
  %149 = load i32, ptr %148, align 8, !tbaa !37
  %150 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 4
  %151 = load i32, ptr %150, align 4, !tbaa !46
  %152 = icmp eq i32 %149, %151
  br i1 %152, label %153, label %181

153:                                              ; preds = %147, %143
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  %154 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20resetSchurComplementENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef 0)
  store i32 %154, ptr %27, align 4, !tbaa !13
  %155 = load i32, ptr %27, align 4, !tbaa !13
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %157, label %177

157:                                              ; preds = %153
  %158 = load i32, ptr %27, align 4, !tbaa !13
  %159 = icmp eq i32 %158, 142
  br i1 %159, label %160, label %166

160:                                              ; preds = %157
  %161 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 23
  %162 = getelementptr inbounds %"class.qpOASES::Options", ptr %161, i32 0, i32 0
  %163 = load i32, ptr %162, align 8, !tbaa !47
  %164 = icmp eq i32 %163, 3
  br i1 %164, label %165, label %166

165:                                              ; preds = %160
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.13)
  br label %174

166:                                              ; preds = %160, %157
  %167 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 23
  %168 = getelementptr inbounds %"class.qpOASES::Options", ptr %167, i32 0, i32 0
  %169 = load i32, ptr %168, align 8, !tbaa !47
  %170 = icmp eq i32 %169, 3
  br i1 %170, label %171, label %173

171:                                              ; preds = %166
  %172 = load i32, ptr %27, align 4, !tbaa !13
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.14, i32 noundef %172)
  br label %173

173:                                              ; preds = %171, %166
  br label %174

174:                                              ; preds = %173, %165
  %175 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %176 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %175, i32 noundef 80, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1611, i32 noundef 1)
  store i32 %176, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %178

177:                                              ; preds = %153
  store i8 1, ptr %25, align 1, !tbaa !35
  store i32 3, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %18, align 4
  br label %178

178:                                              ; preds = %177, %174
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  %179 = load i32, ptr %18, align 4
  switch i32 %179, label %568 [
    i32 0, label %180
  ]

180:                                              ; preds = %178
  br label %223

181:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %182 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 16
  %183 = call noundef i32 @_ZNK7qpOASES9Indexlist9getLengthEv(ptr noundef nonnull align 8 dereferenceable(36) %182)
  store i32 %183, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  %184 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 17
  %185 = call noundef i32 @_ZNK7qpOASES9Indexlist9getLengthEv(ptr noundef nonnull align 8 dereferenceable(36) %184)
  store i32 %185, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %186 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 17
  %187 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %186, ptr noundef %30)
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %188

188:                                              ; preds = %214, %181
  %189 = load i32, ptr %31, align 4, !tbaa !9
  %190 = load i32, ptr %29, align 4, !tbaa !9
  %191 = icmp slt i32 %189, %190
  br i1 %191, label %193, label %192

192:                                              ; preds = %188
  store i32 5, ptr %18, align 4
  br label %217

193:                                              ; preds = %188
  %194 = load ptr, ptr %30, align 8, !tbaa !5
  %195 = load i32, ptr %31, align 4, !tbaa !9
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds i32, ptr %194, i64 %196
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = load i32, ptr %8, align 4, !tbaa !9
  %200 = icmp eq i32 %198, %199
  br i1 %200, label %201, label %213

201:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  store double 1.000000e+00, ptr %32, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %202 = load i32, ptr %28, align 4, !tbaa !9
  %203 = load i32, ptr %31, align 4, !tbaa !9
  %204 = add nsw i32 %202, %203
  store i32 %204, ptr %33, align 4, !tbaa !9
  %205 = load i32, ptr %8, align 4, !tbaa !9
  %206 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20addToSchurComplementEiNS_15SchurUpdateTypeEiPKiPKdiS3_S5_d(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %205, i32 noundef 3, i32 noundef 1, ptr noundef %33, ptr noundef %32, i32 noundef 0, ptr noundef null, ptr noundef null, double noundef 0.000000e+00)
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %211

208:                                              ; preds = %201
  %209 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %210 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %209, i32 noundef 80, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1630, i32 noundef 1)
  store i32 %210, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %212

211:                                              ; preds = %201
  store i8 1, ptr %25, align 1, !tbaa !35
  store i32 5, ptr %18, align 4
  br label %212

212:                                              ; preds = %211, %208
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  br label %217

213:                                              ; preds = %193
  br label %214

214:                                              ; preds = %213
  %215 = load i32, ptr %31, align 4, !tbaa !9
  %216 = add nsw i32 %215, 1
  store i32 %216, ptr %31, align 4, !tbaa !9
  br label %188, !llvm.loop !48

217:                                              ; preds = %212, %192
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  %218 = load i32, ptr %18, align 4
  switch i32 %218, label %220 [
    i32 5, label %219
  ]

219:                                              ; preds = %217
  store i32 1, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %18, align 4
  br label %220

220:                                              ; preds = %219, %217
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  %221 = load i32, ptr %18, align 4
  switch i32 %221, label %568 [
    i32 0, label %222
  ]

222:                                              ; preds = %220
  br label %223

223:                                              ; preds = %222, %180
  br label %224

224:                                              ; preds = %223, %140
  %225 = load i8, ptr %25, align 1, !tbaa !35, !range !44, !noundef !45
  %226 = trunc i8 %225 to i1
  br i1 %226, label %230, label %227

227:                                              ; preds = %224
  %228 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %229 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %228, i32 noundef 80, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1640, i32 noundef 1)
  store i32 %229, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %568

230:                                              ; preds = %224
  %231 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 23
  %232 = getelementptr inbounds %"class.qpOASES::Options", ptr %231, i32 0, i32 3
  %233 = load i32, ptr %232, align 4, !tbaa !49
  %234 = icmp eq i32 %233, 1
  br i1 %234, label %235, label %504

235:                                              ; preds = %230
  %236 = load i32, ptr %10, align 4, !tbaa !11
  %237 = icmp eq i32 %236, 1
  br i1 %237, label %238, label %504

238:                                              ; preds = %235
  %239 = load i32, ptr %24, align 4, !tbaa !11
  %240 = icmp eq i32 %239, 0
  br i1 %240, label %241, label %504

241:                                              ; preds = %238
  %242 = load i32, ptr %13, align 4, !tbaa !9
  %243 = icmp eq i32 %242, 1
  br i1 %243, label %244, label %324

244:                                              ; preds = %241
  %245 = load i32, ptr %14, align 4, !tbaa !9
  %246 = call noundef double @_ZN7qpOASES14SQProblemSchur12calcDetSchurEi(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %245)
  store double %246, ptr %17, align 8, !tbaa !33
  %247 = load double, ptr %16, align 8, !tbaa !33
  %248 = load double, ptr %17, align 8, !tbaa !33
  %249 = fmul double %247, %248
  %250 = fcmp ogt double %249, 0.000000e+00
  br i1 %250, label %251, label %320

251:                                              ; preds = %244
  %252 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 15
  store i32 4, ptr %252, align 4, !tbaa !50
  %253 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 3
  %254 = load i32, ptr %253, align 8, !tbaa !37
  %255 = add nsw i32 %254, -1
  store i32 %255, ptr %253, align 8, !tbaa !37
  %256 = load i32, ptr %8, align 4, !tbaa !9
  %257 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 25
  %258 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %257, i32 0, i32 2
  store i32 %256, ptr %258, align 8, !tbaa !51
  %259 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 25
  %260 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %259, i32 0, i32 6
  store i32 2, ptr %260, align 8, !tbaa !52
  %261 = load i32, ptr %15, align 4, !tbaa !15
  switch i32 %261, label %316 [
    i32 -1, label %262
    i32 1, label %289
  ]

262:                                              ; preds = %251
  %263 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 5
  %264 = load i32, ptr %8, align 4, !tbaa !9
  %265 = call noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %263, i32 noundef %264, i32 noundef 1)
  %266 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 3
  %267 = load ptr, ptr %266, align 8, !tbaa !53
  %268 = load i32, ptr %8, align 4, !tbaa !9
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds double, ptr %267, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !33
  %272 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 4
  %273 = load ptr, ptr %272, align 8, !tbaa !54
  %274 = load i32, ptr %8, align 4, !tbaa !9
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds double, ptr %273, i64 %275
  store double %271, ptr %276, align 8, !tbaa !33
  %277 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 11
  %278 = load ptr, ptr %277, align 8, !tbaa !55
  %279 = load i32, ptr %8, align 4, !tbaa !9
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds double, ptr %278, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !33
  %283 = fneg double %282
  %284 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 10
  %285 = load ptr, ptr %284, align 8, !tbaa !56
  %286 = load i32, ptr %8, align 4, !tbaa !9
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds double, ptr %285, i64 %287
  store double %283, ptr %288, align 8, !tbaa !33
  br label %319

289:                                              ; preds = %251
  %290 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 5
  %291 = load i32, ptr %8, align 4, !tbaa !9
  %292 = call noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %290, i32 noundef %291, i32 noundef -1)
  %293 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 4
  %294 = load ptr, ptr %293, align 8, !tbaa !54
  %295 = load i32, ptr %8, align 4, !tbaa !9
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %294, i64 %296
  %298 = load double, ptr %297, align 8, !tbaa !33
  %299 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 3
  %300 = load ptr, ptr %299, align 8, !tbaa !53
  %301 = load i32, ptr %8, align 4, !tbaa !9
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds double, ptr %300, i64 %302
  store double %298, ptr %303, align 8, !tbaa !33
  %304 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 10
  %305 = load ptr, ptr %304, align 8, !tbaa !56
  %306 = load i32, ptr %8, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %305, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !33
  %310 = fneg double %309
  %311 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 11
  %312 = load ptr, ptr %311, align 8, !tbaa !55
  %313 = load i32, ptr %8, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %312, i64 %314
  store double %310, ptr %315, align 8, !tbaa !33
  br label %319

316:                                              ; preds = %251
  %317 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %318 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %317, i32 noundef 80, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1676, i32 noundef 1)
  store i32 %318, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %568

319:                                              ; preds = %289, %262
  br label %323

320:                                              ; preds = %244
  %321 = load i32, ptr %14, align 4, !tbaa !9
  %322 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %321)
  br label %323

323:                                              ; preds = %320, %319
  br label %503

324:                                              ; preds = %241
  %325 = load i32, ptr %13, align 4, !tbaa !9
  %326 = icmp eq i32 %325, 2
  br i1 %326, label %327, label %406

327:                                              ; preds = %324
  %328 = load i32, ptr %14, align 4, !tbaa !9
  %329 = call noundef double @_ZN7qpOASES14SQProblemSchur12calcDetSchurEi(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %328)
  store double %329, ptr %17, align 8, !tbaa !33
  %330 = load double, ptr %16, align 8, !tbaa !33
  %331 = load double, ptr %17, align 8, !tbaa !33
  %332 = fmul double %330, %331
  %333 = fcmp olt double %332, 0.000000e+00
  br i1 %333, label %334, label %402

334:                                              ; preds = %327
  %335 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 15
  store i32 4, ptr %335, align 4, !tbaa !50
  %336 = load i32, ptr %14, align 4, !tbaa !9
  %337 = call noundef i32 @_ZN7qpOASES14SQProblemSchur29undoDeleteFromSchurComplementEi(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %336)
  %338 = load i32, ptr %8, align 4, !tbaa !9
  %339 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 25
  %340 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %339, i32 0, i32 2
  store i32 %338, ptr %340, align 8, !tbaa !51
  %341 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 25
  %342 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %341, i32 0, i32 6
  store i32 2, ptr %342, align 8, !tbaa !52
  %343 = load i32, ptr %15, align 4, !tbaa !15
  switch i32 %343, label %398 [
    i32 -1, label %344
    i32 1, label %371
  ]

344:                                              ; preds = %334
  %345 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 5
  %346 = load i32, ptr %8, align 4, !tbaa !9
  %347 = call noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %345, i32 noundef %346, i32 noundef 1)
  %348 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 3
  %349 = load ptr, ptr %348, align 8, !tbaa !53
  %350 = load i32, ptr %8, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %349, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !33
  %354 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 4
  %355 = load ptr, ptr %354, align 8, !tbaa !54
  %356 = load i32, ptr %8, align 4, !tbaa !9
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %355, i64 %357
  store double %353, ptr %358, align 8, !tbaa !33
  %359 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 11
  %360 = load ptr, ptr %359, align 8, !tbaa !55
  %361 = load i32, ptr %8, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %360, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !33
  %365 = fneg double %364
  %366 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 10
  %367 = load ptr, ptr %366, align 8, !tbaa !56
  %368 = load i32, ptr %8, align 4, !tbaa !9
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %367, i64 %369
  store double %365, ptr %370, align 8, !tbaa !33
  br label %401

371:                                              ; preds = %334
  %372 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 5
  %373 = load i32, ptr %8, align 4, !tbaa !9
  %374 = call noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %372, i32 noundef %373, i32 noundef -1)
  %375 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 4
  %376 = load ptr, ptr %375, align 8, !tbaa !54
  %377 = load i32, ptr %8, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %376, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !33
  %381 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 3
  %382 = load ptr, ptr %381, align 8, !tbaa !53
  %383 = load i32, ptr %8, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds double, ptr %382, i64 %384
  store double %380, ptr %385, align 8, !tbaa !33
  %386 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 10
  %387 = load ptr, ptr %386, align 8, !tbaa !56
  %388 = load i32, ptr %8, align 4, !tbaa !9
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %387, i64 %389
  %391 = load double, ptr %390, align 8, !tbaa !33
  %392 = fneg double %391
  %393 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 11
  %394 = load ptr, ptr %393, align 8, !tbaa !55
  %395 = load i32, ptr %8, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %394, i64 %396
  store double %392, ptr %397, align 8, !tbaa !33
  br label %401

398:                                              ; preds = %334
  %399 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %400 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %399, i32 noundef 80, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1713, i32 noundef 1)
  store i32 %400, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %568

401:                                              ; preds = %371, %344
  br label %405

402:                                              ; preds = %327
  %403 = load i32, ptr %14, align 4, !tbaa !9
  %404 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %403)
  br label %405

405:                                              ; preds = %402, %401
  br label %502

406:                                              ; preds = %324
  %407 = load i32, ptr %13, align 4, !tbaa !9
  %408 = icmp eq i32 %407, 3
  br i1 %408, label %409, label %498

409:                                              ; preds = %406
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %410 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 1
  %411 = load ptr, ptr %410, align 8, !tbaa !57
  %412 = load ptr, ptr %411, align 8, !tbaa !58
  %413 = getelementptr inbounds ptr, ptr %412, i64 7
  %414 = load ptr, ptr %413, align 8
  %415 = call noundef i32 %414(ptr noundef nonnull align 8 dereferenceable(8) %411)
  store i32 %415, ptr %34, align 4, !tbaa !9
  %416 = load i32, ptr %34, align 4, !tbaa !9
  %417 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %36)
  %418 = icmp sgt i32 %416, %417
  br i1 %418, label %419, label %488

419:                                              ; preds = %409
  %420 = load i32, ptr %8, align 4, !tbaa !9
  %421 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 25
  %422 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %421, i32 0, i32 2
  store i32 %420, ptr %422, align 8, !tbaa !51
  %423 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 25
  %424 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %423, i32 0, i32 6
  store i32 2, ptr %424, align 8, !tbaa !52
  %425 = load i32, ptr %15, align 4, !tbaa !15
  switch i32 %425, label %484 [
    i32 -1, label %426
    i32 1, label %455
  ]

426:                                              ; preds = %419
  %427 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 3
  %428 = load ptr, ptr %427, align 8, !tbaa !53
  %429 = load i32, ptr %8, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds double, ptr %428, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !33
  %433 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 4
  %434 = load ptr, ptr %433, align 8, !tbaa !54
  %435 = load i32, ptr %8, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %434, i64 %436
  store double %432, ptr %437, align 8, !tbaa !33
  %438 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 11
  %439 = load ptr, ptr %438, align 8, !tbaa !55
  %440 = load i32, ptr %8, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %439, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !33
  %444 = fneg double %443
  %445 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 10
  %446 = load ptr, ptr %445, align 8, !tbaa !56
  %447 = load i32, ptr %8, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %446, i64 %448
  store double %444, ptr %449, align 8, !tbaa !33
  %450 = load i32, ptr %8, align 4, !tbaa !9
  %451 = load ptr, ptr %36, align 8, !tbaa !58
  %452 = getelementptr inbounds ptr, ptr %451, i64 25
  %453 = load ptr, ptr %452, align 8
  %454 = call noundef i32 %453(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %450, i32 noundef 1, i32 noundef 1, i32 noundef 0)
  br label %487

455:                                              ; preds = %419
  %456 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 4
  %457 = load ptr, ptr %456, align 8, !tbaa !54
  %458 = load i32, ptr %8, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds double, ptr %457, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !33
  %462 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 3
  %463 = load ptr, ptr %462, align 8, !tbaa !53
  %464 = load i32, ptr %8, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %463, i64 %465
  store double %461, ptr %466, align 8, !tbaa !33
  %467 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 10
  %468 = load ptr, ptr %467, align 8, !tbaa !56
  %469 = load i32, ptr %8, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %468, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !33
  %473 = fneg double %472
  %474 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %36, i32 0, i32 11
  %475 = load ptr, ptr %474, align 8, !tbaa !55
  %476 = load i32, ptr %8, align 4, !tbaa !9
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %475, i64 %477
  store double %473, ptr %478, align 8, !tbaa !33
  %479 = load i32, ptr %8, align 4, !tbaa !9
  %480 = load ptr, ptr %36, align 8, !tbaa !58
  %481 = getelementptr inbounds ptr, ptr %480, i64 25
  %482 = load ptr, ptr %481, align 8
  %483 = call noundef i32 %482(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %479, i32 noundef -1, i32 noundef 1, i32 noundef 0)
  br label %487

484:                                              ; preds = %419
  %485 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %486 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %485, i32 noundef 80, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1744, i32 noundef 1)
  store i32 %486, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %495

487:                                              ; preds = %455, %426
  br label %488

488:                                              ; preds = %487, %409
  %489 = call noundef i32 @_ZN7qpOASES14SQProblemSchur14correctInertiaEv(ptr noundef nonnull align 8 dereferenceable(1256) %36)
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %491, label %494

491:                                              ; preds = %488
  %492 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %493 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %492, i32 noundef 80, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1750, i32 noundef 1)
  store i32 %493, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %495

494:                                              ; preds = %488
  store i32 0, ptr %18, align 4
  br label %495

495:                                              ; preds = %494, %491, %484
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  %496 = load i32, ptr %18, align 4
  switch i32 %496, label %568 [
    i32 0, label %497
  ]

497:                                              ; preds = %495
  br label %501

498:                                              ; preds = %406
  %499 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %500 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %499, i32 noundef 80, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1754, i32 noundef 1)
  store i32 %500, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %568

501:                                              ; preds = %497
  br label %502

502:                                              ; preds = %501, %405
  br label %503

503:                                              ; preds = %502, %323
  br label %507

504:                                              ; preds = %238, %235, %230
  %505 = load i32, ptr %14, align 4, !tbaa !9
  %506 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %505)
  br label %507

507:                                              ; preds = %504, %503
  %508 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %36, i32 0, i32 8
  %509 = load double, ptr %508, align 8, !tbaa !60
  %510 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 23
  %511 = getelementptr inbounds %"class.qpOASES::Options", ptr %510, i32 0, i32 32
  %512 = load double, ptr %511, align 8, !tbaa !61
  %513 = fcmp olt double %509, %512
  br i1 %513, label %514, label %542

514:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %515 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20resetSchurComplementENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef 1)
  store i32 %515, ptr %35, align 4, !tbaa !13
  %516 = load i32, ptr %35, align 4, !tbaa !13
  %517 = icmp ne i32 %516, 0
  br i1 %517, label %518, label %538

518:                                              ; preds = %514
  %519 = load i32, ptr %35, align 4, !tbaa !13
  %520 = icmp eq i32 %519, 142
  br i1 %520, label %521, label %527

521:                                              ; preds = %518
  %522 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 23
  %523 = getelementptr inbounds %"class.qpOASES::Options", ptr %522, i32 0, i32 0
  %524 = load i32, ptr %523, align 8, !tbaa !47
  %525 = icmp eq i32 %524, 3
  br i1 %525, label %526, label %527

526:                                              ; preds = %521
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.13)
  br label %535

527:                                              ; preds = %521, %518
  %528 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 23
  %529 = getelementptr inbounds %"class.qpOASES::Options", ptr %528, i32 0, i32 0
  %530 = load i32, ptr %529, align 8, !tbaa !47
  %531 = icmp eq i32 %530, 3
  br i1 %531, label %532, label %534

532:                                              ; preds = %527
  %533 = load i32, ptr %35, align 4, !tbaa !13
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.14, i32 noundef %533)
  br label %534

534:                                              ; preds = %532, %527
  br label %535

535:                                              ; preds = %534, %526
  %536 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %537 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %536, i32 noundef 76, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1772, i32 noundef 1)
  store i32 %537, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %539

538:                                              ; preds = %514
  store i32 0, ptr %18, align 4
  br label %539

539:                                              ; preds = %538, %535
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  %540 = load i32, ptr %18, align 4
  switch i32 %540, label %568 [
    i32 0, label %541
  ]

541:                                              ; preds = %539
  br label %542

542:                                              ; preds = %541, %507
  %543 = load i32, ptr %24, align 4, !tbaa !11
  %544 = icmp eq i32 %543, 1
  br i1 %544, label %545, label %567

545:                                              ; preds = %542
  %546 = load i32, ptr %22, align 4, !tbaa !11
  %547 = icmp ne i32 %546, 0
  br i1 %547, label %548, label %557

548:                                              ; preds = %545
  %549 = load i32, ptr %21, align 4, !tbaa !9
  %550 = load i32, ptr %23, align 4, !tbaa !15
  %551 = load ptr, ptr %36, align 8, !tbaa !58
  %552 = getelementptr inbounds ptr, ptr %551, i64 28
  %553 = load ptr, ptr %552, align 8
  %554 = call noundef i32 %553(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %549, i32 noundef %550, i32 noundef 1, i32 noundef 0)
  %555 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 25
  %556 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %555, i32 0, i32 4
  store i32 1, ptr %556, align 8, !tbaa !62
  br label %566

557:                                              ; preds = %545
  %558 = load i32, ptr %21, align 4, !tbaa !9
  %559 = load i32, ptr %23, align 4, !tbaa !15
  %560 = load ptr, ptr %36, align 8, !tbaa !58
  %561 = getelementptr inbounds ptr, ptr %560, i64 25
  %562 = load ptr, ptr %561, align 8
  %563 = call noundef i32 %562(ptr noundef nonnull align 8 dereferenceable(1256) %36, i32 noundef %558, i32 noundef %559, i32 noundef 1, i32 noundef 0)
  %564 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %36, i32 0, i32 25
  %565 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %564, i32 0, i32 6
  store i32 1, ptr %565, align 8, !tbaa !52
  br label %566

566:                                              ; preds = %557, %548
  br label %567

567:                                              ; preds = %566, %542
  store i32 0, ptr %6, align 4
  store i32 1, ptr %18, align 4
  br label %568

568:                                              ; preds = %567, %539, %498, %495, %398, %316, %227, %220, %178, %138
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #6
  br label %569

569:                                              ; preds = %568, %98, %82, %71, %61
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %570

570:                                              ; preds = %569, %48
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  %571 = load i32, ptr %6, align 4
  ret i32 %571
}

declare noundef i32 @_ZNK7qpOASES9Indexlist8getIndexEi(ptr noundef nonnull align 8 dereferenceable(36), i32 noundef) #2

declare noundef i32 @_ZN7qpOASES8QProblem22ensureNonzeroCurvatureENS_11BooleanTypeEiRS1_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064), i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN7qpOASES14SQProblemSchur12calcDetSchurEi(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur29undoDeleteFromSchurComplementEi(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef) #4 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN7qpOASES11BooleanTypeE", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN7qpOASES11returnValueE", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !7, i64 0}
!17 = !{!18, !25, i64 1104}
!18 = !{!"_ZTSN7qpOASES14SQProblemSchurE", !19, i64 0, !6, i64 1064, !6, i64 1072, !10, i64 1080, !10, i64 1084, !6, i64 1088, !6, i64 1096, !25, i64 1104, !25, i64 1112, !10, i64 1120, !6, i64 1128, !6, i64 1136, !10, i64 1144, !6, i64 1152, !6, i64 1160, !6, i64 1168, !24, i64 1176, !24, i64 1216}
!19 = !{!"_ZTSN7qpOASES9SQProblemE", !20, i64 0}
!20 = !{!"_ZTSN7qpOASES8QProblemE", !21, i64 0, !12, i64 800, !6, i64 808, !6, i64 816, !6, i64 824, !31, i64 832, !6, i64 952, !6, i64 960, !10, i64 968, !6, i64 976, !6, i64 984, !6, i64 992, !6, i64 1000, !6, i64 1008, !6, i64 1016, !6, i64 1024, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056}
!21 = !{!"_ZTSN7qpOASES9QProblemBE", !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !22, i64 48, !6, i64 168, !12, i64 176, !6, i64 184, !6, i64 192, !25, i64 200, !26, i64 208, !12, i64 212, !12, i64 216, !27, i64 220, !25, i64 224, !10, i64 232, !6, i64 240, !25, i64 248, !25, i64 256, !10, i64 264, !28, i64 272, !30, i64 496, !32, i64 768}
!22 = !{!"_ZTSN7qpOASES6BoundsE", !23, i64 0, !24, i64 40, !24, i64 80}
!23 = !{!"_ZTSN7qpOASES9SubjectToE", !10, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !12, i64 36}
!24 = !{!"_ZTSN7qpOASES9IndexlistE", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32}
!25 = !{!"double", !7, i64 0}
!26 = !{!"_ZTSN7qpOASES14QProblemStatusE", !7, i64 0}
!27 = !{!"_ZTSN7qpOASES11HessianTypeE", !7, i64 0}
!28 = !{!"_ZTSN7qpOASES7OptionsE", !29, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !10, i64 28, !10, i64 32, !12, i64 36, !25, i64 40, !25, i64 48, !25, i64 56, !25, i64 64, !25, i64 72, !25, i64 80, !25, i64 88, !25, i64 96, !25, i64 104, !25, i64 112, !25, i64 120, !16, i64 128, !25, i64 136, !10, i64 144, !25, i64 152, !10, i64 160, !25, i64 168, !25, i64 176, !25, i64 184, !25, i64 192, !12, i64 200, !12, i64 204, !10, i64 208, !10, i64 212, !10, i64 216}
!29 = !{!"_ZTSN7qpOASES10PrintLevelE", !7, i64 0}
!30 = !{!"_ZTSN7qpOASES7FlipperE", !10, i64 0, !10, i64 4, !22, i64 8, !31, i64 128, !6, i64 248, !6, i64 256, !6, i64 264}
!31 = !{!"_ZTSN7qpOASES11ConstraintsE", !23, i64 0, !24, i64 40, !24, i64 80}
!32 = !{!"_ZTSN7qpOASES13TabularOutputE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28}
!33 = !{!25, !25, i64 0}
!34 = !{!21, !10, i64 780}
!35 = !{!36, !36, i64 0}
!36 = !{!"bool", !7, i64 0}
!37 = !{!18, !10, i64 1080}
!38 = !{!18, !6, i64 1136}
!39 = !{!40, !40, i64 0}
!40 = !{!"_ZTSN7qpOASES15SchurUpdateTypeE", !7, i64 0}
!41 = !{!18, !6, i64 1128}
!42 = distinct !{!42, !43}
!43 = !{!"llvm.loop.mustprogress"}
!44 = !{i8 0, i8 2}
!45 = !{}
!46 = !{!18, !10, i64 1084}
!47 = !{!21, !29, i64 272}
!48 = distinct !{!48, !43}
!49 = !{!21, !12, i64 284}
!50 = !{!21, !27, i64 220}
!51 = !{!21, !10, i64 776}
!52 = !{!21, !10, i64 792}
!53 = !{!20, !6, i64 816}
!54 = !{!20, !6, i64 824}
!55 = !{!20, !6, i64 992}
!56 = !{!20, !6, i64 984}
!57 = !{!18, !6, i64 1064}
!58 = !{!59, !59, i64 0}
!59 = !{!"vtable pointer", !8, i64 0}
!60 = !{!18, !25, i64 1112}
!61 = !{!21, !25, i64 464}
!62 = !{!21, !10, i64 784}


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

@.str = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [67 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z8MyPrintfPKcz(ptr noundef, ...) local_unnamed_addr #0

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

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() local_unnamed_addr #2

declare noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28), i32 noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur20resetSchurComplementENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064)) local_unnamed_addr #5 align 2

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

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

declare noundef i32 @_ZN7qpOASES11Constraints20moveActiveToInactiveEi(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef, i32 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur25deleteFromSchurComplementEiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef, i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7qpOASES9Indexlist9getLengthEv(ptr noundef nonnull align 8 dereferenceable(36)) local_unnamed_addr #3 align 2

declare noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36), ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur20addToSchurComplementEiNS_15SchurUpdateTypeEiPKiPKdiS3_S5_d(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef, double noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur16removeConstraintEiNS_11BooleanTypeES1_S1_(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) unnamed_addr #4 align 2 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca double, align 8
  %12 = alloca i32, align 4
  %13 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %14 = icmp eq i32 %13, 0
  br i1 %14, label %24, label %15

15:                                               ; preds = %5
  %16 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %17 = icmp eq i32 %16, 2
  br i1 %17, label %24, label %18

18:                                               ; preds = %15
  %19 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %20 = icmp eq i32 %19, 4
  br i1 %20, label %24, label %21

21:                                               ; preds = %18
  %22 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %23 = icmp eq i32 %22, 5
  br i1 %23, label %24, label %27

24:                                               ; preds = %21, %18, %15, %5
  %25 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %26 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %25, i32 noundef 9, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1543, i32 noundef 1)
  br label %303

27:                                               ; preds = %21
  %28 = tail call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %29 = getelementptr inbounds i8, ptr %0, i64 832
  %30 = tail call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %29)
  %31 = tail call noundef i32 @_ZNK7qpOASES9Indexlist8getIndexEi(ptr noundef nonnull align 8 dereferenceable(36) %30, i32 noundef %1)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  store i32 0, ptr %9, align 4, !tbaa !5
  %32 = tail call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %29, i32 noundef %1)
  %33 = icmp eq i32 %32, 0
  br i1 %33, label %34, label %37

34:                                               ; preds = %27
  %35 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %36 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %35, i32 noundef 97, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1558, i32 noundef 1)
  br label %.thread181

37:                                               ; preds = %27
  %38 = icmp sgt i32 %31, -1
  %.not = icmp slt i32 %31, %28
  %or.cond134 = and i1 %38, %.not
  br i1 %or.cond134, label %42, label %39

39:                                               ; preds = %37
  %40 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %41 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %40, i32 noundef 97, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1561, i32 noundef 1)
  br label %.thread181

42:                                               ; preds = %37
  %43 = icmp eq i32 %4, 1
  br i1 %43, label %44, label %46

44:                                               ; preds = %42
  %45 = call noundef i32 @_ZN7qpOASES8QProblem22ensureNonzeroCurvatureENS_11BooleanTypeEiRS1_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef 0, i32 noundef %1, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %.not126 = icmp eq i32 %45, 0
  br i1 %.not126, label %46, label %.thread181

46:                                               ; preds = %44, %42
  %47 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %29, i32 noundef %1)
  %48 = getelementptr inbounds i8, ptr %0, i64 1104
  %49 = load double, ptr %48, align 8, !tbaa !9
  %50 = getelementptr inbounds i8, ptr %0, i64 780
  store i32 %1, ptr %50, align 4, !tbaa !28
  %51 = call noundef i32 @_ZN7qpOASES11Constraints20moveActiveToInactiveEi(ptr noundef nonnull align 8 dereferenceable(120) %29, i32 noundef %1)
  %.not127 = icmp eq i32 %51, 0
  br i1 %.not127, label %.preheader, label %59

.preheader:                                       ; preds = %46
  %52 = getelementptr inbounds i8, ptr %0, i64 1080
  %53 = load i32, ptr %52, align 8, !tbaa !29
  %54 = icmp sgt i32 %53, 0
  br i1 %54, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader
  %55 = getelementptr inbounds i8, ptr %0, i64 1136
  %56 = load ptr, ptr %55, align 8, !tbaa !30
  %57 = getelementptr inbounds i8, ptr %0, i64 1128
  %58 = load ptr, ptr %57, align 8
  %wide.trip.count = zext nneg i32 %53 to i64
  br label %62

59:                                               ; preds = %46
  %60 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %61 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %60, i32 noundef 80, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1579, i32 noundef 1)
  br label %.thread181

62:                                               ; preds = %.lr.ph, %73
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %73 ]
  %63 = getelementptr inbounds i32, ptr %56, i64 %indvars.iv
  %64 = load i32, ptr %63, align 4, !tbaa !31
  %65 = icmp eq i32 %64, 2
  br i1 %65, label %66, label %73

66:                                               ; preds = %62
  %67 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv
  %68 = load i32, ptr %67, align 4, !tbaa !33
  %69 = icmp eq i32 %68, %1
  br i1 %69, label %70, label %73

70:                                               ; preds = %66
  %71 = trunc nuw nsw i64 %indvars.iv to i32
  %72 = call noundef i32 @_ZN7qpOASES14SQProblemSchur25deleteFromSchurComplementEiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %71, i32 noundef 1)
  %.not128 = icmp eq i32 %72, 0
  br i1 %.not128, label %.thread174, label %74

73:                                               ; preds = %62, %66
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %62, !llvm.loop !34

74:                                               ; preds = %70
  %75 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %76 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %75, i32 noundef 80, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1591, i32 noundef 1)
  br label %.thread181

._crit_edge:                                      ; preds = %73, %.preheader
  %77 = icmp slt i32 %53, 0
  %78 = getelementptr inbounds i8, ptr %0, i64 1084
  %79 = load i32, ptr %78, align 4
  %80 = icmp eq i32 %53, %79
  %or.cond137 = select i1 %77, i1 true, i1 %80
  br i1 %or.cond137, label %81, label %94

81:                                               ; preds = %._crit_edge
  %82 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20resetSchurComplementENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef 0)
  %.not130 = icmp eq i32 %82, 0
  br i1 %.not130, label %.thread174, label %83

83:                                               ; preds = %81
  %84 = icmp eq i32 %82, 142
  %85 = getelementptr inbounds i8, ptr %0, i64 272
  %86 = load i32, ptr %85, align 8
  %87 = icmp eq i32 %86, 3
  %or.cond140 = select i1 %84, i1 %87, i1 false
  br i1 %or.cond140, label %88, label %89

88:                                               ; preds = %83
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.13)
  br label %91

89:                                               ; preds = %83
  br i1 %87, label %90, label %91

90:                                               ; preds = %89
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.14, i32 noundef %82)
  br label %91

91:                                               ; preds = %88, %90, %89
  %92 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %93 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %92, i32 noundef 80, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1611, i32 noundef 1)
  br label %.thread181

94:                                               ; preds = %._crit_edge
  %95 = getelementptr inbounds i8, ptr %0, i64 1176
  %96 = call noundef i32 @_ZNK7qpOASES9Indexlist9getLengthEv(ptr noundef nonnull align 8 dereferenceable(36) %95)
  %97 = getelementptr inbounds i8, ptr %0, i64 1216
  %98 = call noundef i32 @_ZNK7qpOASES9Indexlist9getLengthEv(ptr noundef nonnull align 8 dereferenceable(36) %97)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  %99 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %97, ptr noundef nonnull %10)
  %100 = icmp sgt i32 %98, 0
  br i1 %100, label %.lr.ph192, label %._crit_edge193

.lr.ph192:                                        ; preds = %94
  %101 = load ptr, ptr %10, align 8, !tbaa !36
  %wide.trip.count200 = zext nneg i32 %98 to i64
  br label %102

102:                                              ; preds = %.lr.ph192, %110
  %indvars.iv197 = phi i64 [ 0, %.lr.ph192 ], [ %indvars.iv.next198, %110 ]
  %103 = getelementptr inbounds i32, ptr %101, i64 %indvars.iv197
  %104 = load i32, ptr %103, align 4, !tbaa !33
  %105 = icmp eq i32 %104, %1
  br i1 %105, label %106, label %110

106:                                              ; preds = %102
  %107 = trunc nuw nsw i64 %indvars.iv197 to i32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  store double 1.000000e+00, ptr %11, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  %108 = add nsw i32 %96, %107
  store i32 %108, ptr %12, align 4, !tbaa !33
  %109 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20addToSchurComplementEiNS_15SchurUpdateTypeEiPKiPKdiS3_S5_d(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %1, i32 noundef 3, i32 noundef 1, ptr noundef nonnull %12, ptr noundef nonnull %11, i32 noundef 0, ptr noundef null, ptr noundef null, double noundef 0.000000e+00)
  %.not129 = icmp eq i32 %109, 0
  br i1 %.not129, label %.thread167, label %111

.thread167:                                       ; preds = %106
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  br label %.thread174

110:                                              ; preds = %102
  %indvars.iv.next198 = add nuw nsw i64 %indvars.iv197, 1
  %exitcond201.not = icmp eq i64 %indvars.iv.next198, %wide.trip.count200
  br i1 %exitcond201.not, label %._crit_edge193, label %102, !llvm.loop !38

111:                                              ; preds = %106
  %112 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %113 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %112, i32 noundef 80, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1630, i32 noundef 1)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  br label %.thread181

._crit_edge193:                                   ; preds = %110, %94
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  %114 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %115 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %114, i32 noundef 80, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1640, i32 noundef 1)
  br label %.thread181

.thread174:                                       ; preds = %81, %70, %.thread167
  %.3105179 = phi i32 [ 1, %.thread167 ], [ 2, %70 ], [ 3, %81 ]
  %.0106.ph156178 = phi i32 [ -1, %.thread167 ], [ %71, %70 ], [ -1, %81 ]
  %116 = getelementptr inbounds i8, ptr %0, i64 272
  %117 = getelementptr inbounds i8, ptr %0, i64 284
  %118 = load i32, ptr %117, align 4, !tbaa !39
  %119 = icmp eq i32 %118, 1
  %120 = icmp eq i32 %3, 1
  %or.cond = and i1 %120, %119
  %121 = load i32, ptr %9, align 4
  %122 = icmp eq i32 %121, 0
  %or.cond8 = select i1 %or.cond, i1 %122, i1 false
  br i1 %or.cond8, label %123, label %266

123:                                              ; preds = %.thread174
  switch i32 %.3105179, label %default.unreachable202 [
    i32 1, label %124
    i32 2, label %175
    i32 3, label %225
  ]

124:                                              ; preds = %123
  %125 = call noundef double @_ZN7qpOASES14SQProblemSchur12calcDetSchurEi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0106.ph156178)
  %126 = fmul double %49, %125
  %127 = fcmp ogt double %126, 0.000000e+00
  br i1 %127, label %128, label %173

128:                                              ; preds = %124
  %129 = getelementptr inbounds i8, ptr %0, i64 220
  store i32 4, ptr %129, align 4, !tbaa !40
  %130 = load i32, ptr %52, align 8, !tbaa !29
  %131 = add nsw i32 %130, -1
  store i32 %131, ptr %52, align 8, !tbaa !29
  %132 = getelementptr inbounds i8, ptr %0, i64 776
  store i32 %1, ptr %132, align 8, !tbaa !41
  %133 = getelementptr inbounds i8, ptr %0, i64 792
  store i32 2, ptr %133, align 8, !tbaa !42
  switch i32 %47, label %170 [
    i32 -1, label %134
    i32 1, label %152
  ]

134:                                              ; preds = %128
  %135 = call noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %29, i32 noundef %1, i32 noundef 1)
  %136 = getelementptr inbounds i8, ptr %0, i64 816
  %137 = load ptr, ptr %136, align 8, !tbaa !43
  %138 = sext i32 %1 to i64
  %139 = getelementptr inbounds double, ptr %137, i64 %138
  %140 = load double, ptr %139, align 8, !tbaa !37
  %141 = getelementptr inbounds i8, ptr %0, i64 824
  %142 = load ptr, ptr %141, align 8, !tbaa !44
  %143 = getelementptr inbounds double, ptr %142, i64 %138
  store double %140, ptr %143, align 8, !tbaa !37
  %144 = getelementptr inbounds i8, ptr %0, i64 992
  %145 = load ptr, ptr %144, align 8, !tbaa !45
  %146 = getelementptr inbounds double, ptr %145, i64 %138
  %147 = load double, ptr %146, align 8, !tbaa !37
  %148 = fneg double %147
  %149 = getelementptr inbounds i8, ptr %0, i64 984
  %150 = load ptr, ptr %149, align 8, !tbaa !46
  %151 = getelementptr inbounds double, ptr %150, i64 %138
  store double %148, ptr %151, align 8, !tbaa !37
  br label %268

152:                                              ; preds = %128
  %153 = call noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %29, i32 noundef %1, i32 noundef -1)
  %154 = getelementptr inbounds i8, ptr %0, i64 824
  %155 = load ptr, ptr %154, align 8, !tbaa !44
  %156 = sext i32 %1 to i64
  %157 = getelementptr inbounds double, ptr %155, i64 %156
  %158 = load double, ptr %157, align 8, !tbaa !37
  %159 = getelementptr inbounds i8, ptr %0, i64 816
  %160 = load ptr, ptr %159, align 8, !tbaa !43
  %161 = getelementptr inbounds double, ptr %160, i64 %156
  store double %158, ptr %161, align 8, !tbaa !37
  %162 = getelementptr inbounds i8, ptr %0, i64 984
  %163 = load ptr, ptr %162, align 8, !tbaa !46
  %164 = getelementptr inbounds double, ptr %163, i64 %156
  %165 = load double, ptr %164, align 8, !tbaa !37
  %166 = fneg double %165
  %167 = getelementptr inbounds i8, ptr %0, i64 992
  %168 = load ptr, ptr %167, align 8, !tbaa !45
  %169 = getelementptr inbounds double, ptr %168, i64 %156
  store double %166, ptr %169, align 8, !tbaa !37
  br label %268

170:                                              ; preds = %128
  %171 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %172 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %171, i32 noundef 80, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1676, i32 noundef 1)
  br label %.thread181

173:                                              ; preds = %124
  %174 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0106.ph156178)
  br label %268

175:                                              ; preds = %123
  %176 = call noundef double @_ZN7qpOASES14SQProblemSchur12calcDetSchurEi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0106.ph156178)
  %177 = fmul double %49, %176
  %178 = fcmp olt double %177, 0.000000e+00
  br i1 %178, label %179, label %223

179:                                              ; preds = %175
  %180 = getelementptr inbounds i8, ptr %0, i64 220
  store i32 4, ptr %180, align 4, !tbaa !40
  %181 = call noundef i32 @_ZN7qpOASES14SQProblemSchur29undoDeleteFromSchurComplementEi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0106.ph156178)
  %182 = getelementptr inbounds i8, ptr %0, i64 776
  store i32 %1, ptr %182, align 8, !tbaa !41
  %183 = getelementptr inbounds i8, ptr %0, i64 792
  store i32 2, ptr %183, align 8, !tbaa !42
  switch i32 %47, label %220 [
    i32 -1, label %184
    i32 1, label %202
  ]

184:                                              ; preds = %179
  %185 = call noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %29, i32 noundef %1, i32 noundef 1)
  %186 = getelementptr inbounds i8, ptr %0, i64 816
  %187 = load ptr, ptr %186, align 8, !tbaa !43
  %188 = sext i32 %1 to i64
  %189 = getelementptr inbounds double, ptr %187, i64 %188
  %190 = load double, ptr %189, align 8, !tbaa !37
  %191 = getelementptr inbounds i8, ptr %0, i64 824
  %192 = load ptr, ptr %191, align 8, !tbaa !44
  %193 = getelementptr inbounds double, ptr %192, i64 %188
  store double %190, ptr %193, align 8, !tbaa !37
  %194 = getelementptr inbounds i8, ptr %0, i64 992
  %195 = load ptr, ptr %194, align 8, !tbaa !45
  %196 = getelementptr inbounds double, ptr %195, i64 %188
  %197 = load double, ptr %196, align 8, !tbaa !37
  %198 = fneg double %197
  %199 = getelementptr inbounds i8, ptr %0, i64 984
  %200 = load ptr, ptr %199, align 8, !tbaa !46
  %201 = getelementptr inbounds double, ptr %200, i64 %188
  store double %198, ptr %201, align 8, !tbaa !37
  br label %268

202:                                              ; preds = %179
  %203 = call noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %29, i32 noundef %1, i32 noundef -1)
  %204 = getelementptr inbounds i8, ptr %0, i64 824
  %205 = load ptr, ptr %204, align 8, !tbaa !44
  %206 = sext i32 %1 to i64
  %207 = getelementptr inbounds double, ptr %205, i64 %206
  %208 = load double, ptr %207, align 8, !tbaa !37
  %209 = getelementptr inbounds i8, ptr %0, i64 816
  %210 = load ptr, ptr %209, align 8, !tbaa !43
  %211 = getelementptr inbounds double, ptr %210, i64 %206
  store double %208, ptr %211, align 8, !tbaa !37
  %212 = getelementptr inbounds i8, ptr %0, i64 984
  %213 = load ptr, ptr %212, align 8, !tbaa !46
  %214 = getelementptr inbounds double, ptr %213, i64 %206
  %215 = load double, ptr %214, align 8, !tbaa !37
  %216 = fneg double %215
  %217 = getelementptr inbounds i8, ptr %0, i64 992
  %218 = load ptr, ptr %217, align 8, !tbaa !45
  %219 = getelementptr inbounds double, ptr %218, i64 %206
  store double %216, ptr %219, align 8, !tbaa !37
  br label %268

220:                                              ; preds = %179
  %221 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %222 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %221, i32 noundef 80, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1713, i32 noundef 1)
  br label %.thread181

223:                                              ; preds = %175
  %224 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0106.ph156178)
  br label %268

225:                                              ; preds = %123
  %226 = getelementptr inbounds i8, ptr %0, i64 1064
  %227 = load ptr, ptr %226, align 8, !tbaa !47
  %228 = load ptr, ptr %227, align 8, !tbaa !48
  %229 = getelementptr inbounds i8, ptr %228, i64 56
  %230 = load ptr, ptr %229, align 8
  %231 = call noundef i32 %230(ptr noundef nonnull align 8 dereferenceable(8) %227)
  %232 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %233 = icmp sgt i32 %231, %232
  br i1 %233, label %234, label %261

234:                                              ; preds = %225
  %235 = getelementptr inbounds i8, ptr %0, i64 776
  store i32 %1, ptr %235, align 8, !tbaa !41
  %236 = getelementptr inbounds i8, ptr %0, i64 792
  store i32 2, ptr %236, align 8, !tbaa !42
  switch i32 %47, label %238 [
    i32 -1, label %.sink.split
    i32 1, label %237
  ]

237:                                              ; preds = %234
  br label %.sink.split

238:                                              ; preds = %234
  %239 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %240 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %239, i32 noundef 80, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1744, i32 noundef 1)
  br label %.thread181

.sink.split:                                      ; preds = %234, %237
  %.sink230 = phi i64 [ 824, %237 ], [ 816, %234 ]
  %.sink225 = phi i64 [ 816, %237 ], [ 824, %234 ]
  %.sink219 = phi i64 [ 984, %237 ], [ 992, %234 ]
  %.sink213 = phi i64 [ 992, %237 ], [ 984, %234 ]
  %.sink = phi i32 [ -1, %237 ], [ 1, %234 ]
  %241 = getelementptr inbounds i8, ptr %0, i64 %.sink230
  %242 = load ptr, ptr %241, align 8, !tbaa !36
  %243 = sext i32 %1 to i64
  %244 = getelementptr inbounds double, ptr %242, i64 %243
  %245 = load double, ptr %244, align 8, !tbaa !37
  %246 = getelementptr inbounds i8, ptr %0, i64 %.sink225
  %247 = load ptr, ptr %246, align 8, !tbaa !36
  %248 = getelementptr inbounds double, ptr %247, i64 %243
  store double %245, ptr %248, align 8, !tbaa !37
  %249 = getelementptr inbounds i8, ptr %0, i64 %.sink219
  %250 = load ptr, ptr %249, align 8, !tbaa !36
  %251 = getelementptr inbounds double, ptr %250, i64 %243
  %252 = load double, ptr %251, align 8, !tbaa !37
  %253 = fneg double %252
  %254 = getelementptr inbounds i8, ptr %0, i64 %.sink213
  %255 = load ptr, ptr %254, align 8, !tbaa !36
  %256 = getelementptr inbounds double, ptr %255, i64 %243
  store double %253, ptr %256, align 8, !tbaa !37
  %257 = load ptr, ptr %0, align 8, !tbaa !48
  %258 = getelementptr inbounds i8, ptr %257, i64 200
  %259 = load ptr, ptr %258, align 8
  %260 = call noundef i32 %259(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %1, i32 noundef %.sink, i32 noundef 1, i32 noundef 0)
  br label %261

261:                                              ; preds = %.sink.split, %225
  %262 = call noundef i32 @_ZN7qpOASES14SQProblemSchur14correctInertiaEv(ptr noundef nonnull align 8 dereferenceable(1256) %0)
  %.not131 = icmp eq i32 %262, 0
  br i1 %.not131, label %268, label %263

263:                                              ; preds = %261
  %264 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %265 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %264, i32 noundef 80, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1750, i32 noundef 1)
  br label %.thread181

default.unreachable202:                           ; preds = %123
  unreachable

266:                                              ; preds = %.thread174
  %267 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0106.ph156178)
  br label %268

268:                                              ; preds = %261, %134, %152, %173, %223, %202, %184, %266
  %269 = getelementptr inbounds i8, ptr %0, i64 1112
  %270 = load double, ptr %269, align 8, !tbaa !50
  %271 = getelementptr inbounds i8, ptr %0, i64 464
  %272 = load double, ptr %271, align 8, !tbaa !51
  %273 = fcmp olt double %270, %272
  br i1 %273, label %274, label %.thread184

274:                                              ; preds = %268
  %275 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20resetSchurComplementENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef 1)
  %.not132 = icmp eq i32 %275, 0
  br i1 %.not132, label %.thread184, label %276

276:                                              ; preds = %274
  %277 = icmp eq i32 %275, 142
  %278 = load i32, ptr %116, align 8
  %279 = icmp eq i32 %278, 3
  %or.cond142 = select i1 %277, i1 %279, i1 false
  br i1 %or.cond142, label %280, label %281

280:                                              ; preds = %276
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.13)
  br label %283

281:                                              ; preds = %276
  br i1 %279, label %282, label %283

282:                                              ; preds = %281
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.14, i32 noundef %275)
  br label %283

283:                                              ; preds = %280, %282, %281
  %284 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %285 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %284, i32 noundef 76, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1772, i32 noundef 1)
  br label %.thread181

.thread184:                                       ; preds = %274, %268
  %286 = load i32, ptr %9, align 4, !tbaa !5
  %287 = icmp eq i32 %286, 1
  br i1 %287, label %288, label %.thread181

288:                                              ; preds = %.thread184
  %289 = load i32, ptr %7, align 4, !tbaa !5
  %.not133 = icmp eq i32 %289, 0
  %290 = load i32, ptr %6, align 4, !tbaa !33
  %291 = load i32, ptr %8, align 4, !tbaa !52
  %292 = load ptr, ptr %0, align 8, !tbaa !48
  br i1 %.not133, label %298, label %293

293:                                              ; preds = %288
  %294 = getelementptr inbounds i8, ptr %292, i64 224
  %295 = load ptr, ptr %294, align 8
  %296 = call noundef i32 %295(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %290, i32 noundef %291, i32 noundef 1, i32 noundef 0)
  %297 = getelementptr inbounds i8, ptr %0, i64 784
  store i32 1, ptr %297, align 8, !tbaa !53
  br label %.thread181

298:                                              ; preds = %288
  %299 = getelementptr inbounds i8, ptr %292, i64 200
  %300 = load ptr, ptr %299, align 8
  %301 = call noundef i32 %300(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %290, i32 noundef %291, i32 noundef 1, i32 noundef 0)
  %302 = getelementptr inbounds i8, ptr %0, i64 792
  store i32 1, ptr %302, align 8, !tbaa !42
  br label %.thread181

.thread181:                                       ; preds = %263, %238, %283, %111, %91, %74, %._crit_edge193, %170, %220, %293, %298, %.thread184, %44, %59, %39, %34
  %.9 = phi i32 [ %36, %34 ], [ %41, %39 ], [ %61, %59 ], [ %45, %44 ], [ %172, %170 ], [ %285, %283 ], [ %222, %220 ], [ %115, %._crit_edge193 ], [ %93, %91 ], [ %113, %111 ], [ %76, %74 ], [ 0, %293 ], [ 0, %298 ], [ 0, %.thread184 ], [ %265, %263 ], [ %240, %238 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  br label %303

303:                                              ; preds = %.thread181, %24
  %.10 = phi i32 [ %26, %24 ], [ %.9, %.thread181 ]
  ret i32 %.10
}

declare noundef i32 @_ZNK7qpOASES9Indexlist8getIndexEi(ptr noundef nonnull align 8 dereferenceable(36), i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZN7qpOASES8QProblem22ensureNonzeroCurvatureENS_11BooleanTypeEiRS1_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064), i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN7qpOASES14SQProblemSchur12calcDetSchurEi(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur29undoDeleteFromSchurComplementEi(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef) local_unnamed_addr #4 align 2

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 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 = !{!"_ZTSN7qpOASES11BooleanTypeE", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !19, i64 1104}
!10 = !{!"_ZTSN7qpOASES14SQProblemSchurE", !11, i64 0, !14, i64 1064, !14, i64 1072, !17, i64 1080, !17, i64 1084, !14, i64 1088, !14, i64 1096, !19, i64 1104, !19, i64 1112, !17, i64 1120, !14, i64 1128, !14, i64 1136, !17, i64 1144, !14, i64 1152, !14, i64 1160, !14, i64 1168, !18, i64 1176, !18, i64 1216}
!11 = !{!"_ZTSN7qpOASES9SQProblemE", !12, i64 0}
!12 = !{!"_ZTSN7qpOASES8QProblemE", !13, i64 0, !6, i64 800, !14, i64 808, !14, i64 816, !14, i64 824, !26, i64 832, !14, i64 952, !14, i64 960, !17, i64 968, !14, i64 976, !14, i64 984, !14, i64 992, !14, i64 1000, !14, i64 1008, !14, i64 1016, !14, i64 1024, !14, i64 1032, !14, i64 1040, !14, i64 1048, !14, i64 1056}
!13 = !{!"_ZTSN7qpOASES9QProblemBE", !6, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !15, i64 48, !14, i64 168, !6, i64 176, !14, i64 184, !14, i64 192, !19, i64 200, !20, i64 208, !6, i64 212, !6, i64 216, !21, i64 220, !19, i64 224, !17, i64 232, !14, i64 240, !19, i64 248, !19, i64 256, !17, i64 264, !22, i64 272, !25, i64 496, !27, i64 768}
!14 = !{!"any pointer", !7, i64 0}
!15 = !{!"_ZTSN7qpOASES6BoundsE", !16, i64 0, !18, i64 40, !18, i64 80}
!16 = !{!"_ZTSN7qpOASES9SubjectToE", !17, i64 8, !14, i64 16, !14, i64 24, !6, i64 32, !6, i64 36}
!17 = !{!"int", !7, i64 0}
!18 = !{!"_ZTSN7qpOASES9IndexlistE", !14, i64 0, !14, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28, !17, i64 32}
!19 = !{!"double", !7, i64 0}
!20 = !{!"_ZTSN7qpOASES14QProblemStatusE", !7, i64 0}
!21 = !{!"_ZTSN7qpOASES11HessianTypeE", !7, i64 0}
!22 = !{!"_ZTSN7qpOASES7OptionsE", !23, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !17, i64 28, !17, i64 32, !6, i64 36, !19, i64 40, !19, i64 48, !19, i64 56, !19, i64 64, !19, i64 72, !19, i64 80, !19, i64 88, !19, i64 96, !19, i64 104, !19, i64 112, !19, i64 120, !24, i64 128, !19, i64 136, !17, i64 144, !19, i64 152, !17, i64 160, !19, i64 168, !19, i64 176, !19, i64 184, !19, i64 192, !6, i64 200, !6, i64 204, !17, i64 208, !17, i64 212, !17, i64 216}
!23 = !{!"_ZTSN7qpOASES10PrintLevelE", !7, i64 0}
!24 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !7, i64 0}
!25 = !{!"_ZTSN7qpOASES7FlipperE", !17, i64 0, !17, i64 4, !15, i64 8, !26, i64 128, !14, i64 248, !14, i64 256, !14, i64 264}
!26 = !{!"_ZTSN7qpOASES11ConstraintsE", !16, i64 0, !18, i64 40, !18, i64 80}
!27 = !{!"_ZTSN7qpOASES13TabularOutputE", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28}
!28 = !{!13, !17, i64 780}
!29 = !{!10, !17, i64 1080}
!30 = !{!10, !14, i64 1136}
!31 = !{!32, !32, i64 0}
!32 = !{!"_ZTSN7qpOASES15SchurUpdateTypeE", !7, i64 0}
!33 = !{!17, !17, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!14, !14, i64 0}
!37 = !{!19, !19, i64 0}
!38 = distinct !{!38, !35}
!39 = !{!13, !6, i64 284}
!40 = !{!13, !21, i64 220}
!41 = !{!13, !17, i64 776}
!42 = !{!13, !17, i64 792}
!43 = !{!12, !14, i64 816}
!44 = !{!12, !14, i64 824}
!45 = !{!12, !14, i64 992}
!46 = !{!12, !14, i64 984}
!47 = !{!10, !14, i64 1064}
!48 = !{!49, !49, i64 0}
!49 = !{!"vtable pointer", !8, i64 0}
!50 = !{!10, !19, i64 1112}
!51 = !{!13, !19, i64 464}
!52 = !{!24, !24, i64 0}
!53 = !{!13, !17, i64 784}


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