; 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::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 }
%"class.qpOASES::Constraints" = type { %"class.qpOASES::SubjectTo", %"class.qpOASES::Indexlist", %"class.qpOASES::Indexlist" }
%"struct.qpOASES::TabularOutput" = type { i32, i32, i32, i32, i32, i32, i32, i32 }
%"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" }
%"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 }

@.str = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [72 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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #3

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() #4

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) #4

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #5

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

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

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

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

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

declare noundef i32 @_ZN7qpOASES6Bounds15moveFixedToFreeEi(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) #4

declare noundef i32 @_ZN7qpOASES6Bounds15moveFreeToFixedEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef, i32 noundef) #4

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef) #7 align 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)) #4

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur11removeBoundEiNS_11BooleanTypeES1_S1_(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) unnamed_addr #7 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 i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca i32, align 4
  %23 = alloca i8, align 1
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca double, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca double, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = 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
  %53 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  store i32 0, ptr %12, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  store i32 0, ptr %16, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  store i32 -1, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %54 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 6
  %55 = load i32, ptr %8, align 4, !tbaa !9
  %56 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %54, i32 noundef %55)
  %57 = icmp eq i32 %56, 0
  br i1 %57, label %58, label %61

58:                                               ; preds = %5
  %59 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %60 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %59, i32 noundef 98, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1818, i32 noundef 1)
  store i32 %60, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %950

61:                                               ; preds = %5
  %62 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %53)
  %63 = icmp eq i32 %62, 0
  br i1 %63, label %73, label %64

64:                                               ; preds = %61
  %65 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %53)
  %66 = icmp eq i32 %65, 2
  br i1 %66, label %73, label %67

67:                                               ; preds = %64
  %68 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %53)
  %69 = icmp eq i32 %68, 4
  br i1 %69, label %73, label %70

70:                                               ; preds = %67
  %71 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %53)
  %72 = icmp eq i32 %71, 5
  br i1 %72, label %73, label %76

73:                                               ; preds = %70, %67, %64, %61
  %74 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %75 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %74, i32 noundef 9, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1825, i32 noundef 1)
  store i32 %75, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %950

76:                                               ; preds = %70
  %77 = load i32, ptr %11, align 4, !tbaa !11
  %78 = icmp eq i32 %77, 1
  br i1 %78, label %79, label %87

79:                                               ; preds = %76
  %80 = load i32, ptr %8, align 4, !tbaa !9
  %81 = call noundef i32 @_ZN7qpOASES8QProblem22ensureNonzeroCurvatureENS_11BooleanTypeEiRS1_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064) %53, i32 noundef 1, i32 noundef %80, ptr noundef nonnull align 4 dereferenceable(4) %16, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %15)
  store i32 %81, ptr %12, align 4, !tbaa !13
  %82 = load i32, ptr %12, align 4, !tbaa !13
  %83 = icmp ne i32 %82, 0
  br i1 %83, label %84, label %86

84:                                               ; preds = %79
  %85 = load i32, ptr %12, align 4, !tbaa !13
  store i32 %85, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %950

86:                                               ; preds = %79
  br label %87

87:                                               ; preds = %86, %76
  %88 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 6
  %89 = load i32, ptr %8, align 4, !tbaa !9
  %90 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %88, i32 noundef %89)
  store i32 %90, ptr %19, align 4, !tbaa !15
  %91 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 7
  %92 = load double, ptr %91, align 8, !tbaa !17
  store double %92, ptr %20, align 8, !tbaa !33
  %93 = load i32, ptr %8, align 4, !tbaa !9
  %94 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 25
  %95 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %94, i32 0, i32 1
  store i32 %93, ptr %95, align 4, !tbaa !34
  %96 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 6
  %97 = load i32, ptr %8, align 4, !tbaa !9
  %98 = call noundef i32 @_ZN7qpOASES6Bounds15moveFixedToFreeEi(ptr noundef nonnull align 8 dereferenceable(120) %96, i32 noundef %97)
  %99 = icmp ne i32 %98, 0
  br i1 %99, label %100, label %103

100:                                              ; preds = %87
  %101 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %102 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %101, i32 noundef 81, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1844, i32 noundef 1)
  store i32 %102, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %950

103:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #9
  store i8 0, ptr %23, align 1, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %104

104:                                              ; preds = %137, %103
  %105 = load i32, ptr %24, align 4, !tbaa !9
  %106 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %107 = load i32, ptr %106, align 8, !tbaa !37
  %108 = icmp slt i32 %105, %107
  br i1 %108, label %110, label %109

109:                                              ; preds = %104
  store i32 2, ptr %22, align 4
  br label %140

110:                                              ; preds = %104
  %111 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 11
  %112 = load ptr, ptr %111, align 8, !tbaa !38
  %113 = load i32, ptr %24, align 4, !tbaa !9
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds i32, ptr %112, i64 %114
  %116 = load i32, ptr %115, align 4, !tbaa !39
  %117 = icmp eq i32 %116, 0
  br i1 %117, label %118, label %136

118:                                              ; preds = %110
  %119 = load i32, ptr %8, align 4, !tbaa !9
  %120 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 10
  %121 = load ptr, ptr %120, align 8, !tbaa !41
  %122 = load i32, ptr %24, align 4, !tbaa !9
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds i32, ptr %121, i64 %123
  %125 = load i32, ptr %124, align 4, !tbaa !9
  %126 = icmp eq i32 %119, %125
  br i1 %126, label %127, label %136

127:                                              ; preds = %118
  %128 = load i32, ptr %24, align 4, !tbaa !9
  %129 = call noundef i32 @_ZN7qpOASES14SQProblemSchur25deleteFromSchurComplementEiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %128, i32 noundef 1)
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %134

131:                                              ; preds = %127
  %132 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %133 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %132, i32 noundef 81, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1856, i32 noundef 1)
  store i32 %133, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %140

134:                                              ; preds = %127
  store i8 1, ptr %23, align 1, !tbaa !35
  %135 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %135, ptr %18, align 4, !tbaa !9
  store i32 2, ptr %17, align 4, !tbaa !9
  store i32 2, ptr %22, align 4
  br label %140

136:                                              ; preds = %118, %110
  br label %137

137:                                              ; preds = %136
  %138 = load i32, ptr %24, align 4, !tbaa !9
  %139 = add nsw i32 %138, 1
  store i32 %139, ptr %24, align 4, !tbaa !9
  br label %104, !llvm.loop !42

140:                                              ; preds = %134, %131, %109
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  %141 = load i32, ptr %22, align 4
  switch i32 %141, label %949 [
    i32 2, label %142
  ]

142:                                              ; preds = %140
  %143 = load i8, ptr %23, align 1, !tbaa !35, !range !44, !noundef !45
  %144 = trunc i8 %143 to i1
  br i1 %144, label %677, label %145

145:                                              ; preds = %142
  %146 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %147 = load i32, ptr %146, align 8, !tbaa !37
  %148 = icmp slt i32 %147, 0
  br i1 %148, label %155, label %149

149:                                              ; preds = %145
  %150 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %151 = load i32, ptr %150, align 8, !tbaa !37
  %152 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 4
  %153 = load i32, ptr %152, align 4, !tbaa !46
  %154 = icmp eq i32 %151, %153
  br i1 %154, label %155, label %183

155:                                              ; preds = %149, %145
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %156 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20resetSchurComplementENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef 0)
  store i32 %156, ptr %25, align 4, !tbaa !13
  %157 = load i32, ptr %25, align 4, !tbaa !13
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %159, label %179

159:                                              ; preds = %155
  %160 = load i32, ptr %25, align 4, !tbaa !13
  %161 = icmp eq i32 %160, 142
  br i1 %161, label %162, label %168

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

167:                                              ; preds = %162
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.15)
  br label %176

168:                                              ; preds = %162, %159
  %169 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 23
  %170 = getelementptr inbounds %"class.qpOASES::Options", ptr %169, i32 0, i32 0
  %171 = load i32, ptr %170, align 8, !tbaa !47
  %172 = icmp eq i32 %171, 3
  br i1 %172, label %173, label %175

173:                                              ; preds = %168
  %174 = load i32, ptr %25, align 4, !tbaa !13
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.16, i32 noundef %174)
  br label %175

175:                                              ; preds = %173, %168
  br label %176

176:                                              ; preds = %175, %167
  %177 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %178 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %177, i32 noundef 81, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1876, i32 noundef 1)
  store i32 %178, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %180

179:                                              ; preds = %155
  store i8 1, ptr %23, align 1, !tbaa !35
  store i32 3, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %22, align 4
  br label %180

180:                                              ; preds = %179, %176
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  %181 = load i32, ptr %22, align 4
  switch i32 %181, label %949 [
    i32 0, label %182
  ]

182:                                              ; preds = %180
  br label %676

183:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  %184 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 16
  %185 = call noundef i32 @_ZNK7qpOASES9Indexlist9getLengthEv(ptr noundef nonnull align 8 dereferenceable(36) %184)
  store i32 %185, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  %186 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 17
  %187 = call noundef i32 @_ZNK7qpOASES9Indexlist9getLengthEv(ptr noundef nonnull align 8 dereferenceable(36) %186)
  store i32 %187, ptr %27, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %188 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 16
  %189 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %188, ptr noundef %28)
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %190 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 17
  %191 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %190, ptr noundef %29)
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  store i32 0, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %192 = load i32, ptr %26, align 4, !tbaa !9
  %193 = load i32, ptr %27, align 4, !tbaa !9
  %194 = add nsw i32 %192, %193
  %195 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %196 = load i32, ptr %195, align 8, !tbaa !37
  %197 = add nsw i32 %194, %196
  %198 = sext i32 %197 to i64
  %199 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %198, i64 4)
  %200 = extractvalue { i64, i1 } %199, 1
  %201 = extractvalue { i64, i1 } %199, 0
  %202 = select i1 %200, i64 -1, i64 %201
  %203 = call noalias noundef nonnull ptr @_Znam(i64 noundef %202) #10
  store ptr %203, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %204 = load i32, ptr %26, align 4, !tbaa !9
  %205 = load i32, ptr %27, align 4, !tbaa !9
  %206 = add nsw i32 %204, %205
  %207 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %208 = load i32, ptr %207, align 8, !tbaa !37
  %209 = add nsw i32 %206, %208
  %210 = sext i32 %209 to i64
  %211 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %210, i64 8)
  %212 = extractvalue { i64, i1 } %211, 1
  %213 = extractvalue { i64, i1 } %211, 0
  %214 = select i1 %212, i64 -1, i64 %213
  %215 = call noalias noundef nonnull ptr @_Znam(i64 noundef %214) #10
  store ptr %215, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  store i32 0, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %216 = load i32, ptr %26, align 4, !tbaa !9
  %217 = load i32, ptr %27, align 4, !tbaa !9
  %218 = add nsw i32 %216, %217
  %219 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %220 = load i32, ptr %219, align 8, !tbaa !37
  %221 = add nsw i32 %218, %220
  %222 = sext i32 %221 to i64
  %223 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %222, i64 4)
  %224 = extractvalue { i64, i1 } %223, 1
  %225 = extractvalue { i64, i1 } %223, 0
  %226 = select i1 %224, i64 -1, i64 %225
  %227 = call noalias noundef nonnull ptr @_Znam(i64 noundef %226) #10
  store ptr %227, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %228 = load i32, ptr %26, align 4, !tbaa !9
  %229 = load i32, ptr %27, align 4, !tbaa !9
  %230 = add nsw i32 %228, %229
  %231 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %232 = load i32, ptr %231, align 8, !tbaa !37
  %233 = add nsw i32 %230, %232
  %234 = sext i32 %233 to i64
  %235 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %234, i64 8)
  %236 = extractvalue { i64, i1 } %235, 1
  %237 = extractvalue { i64, i1 } %235, 0
  %238 = select i1 %236, i64 -1, i64 %237
  %239 = call noalias noundef nonnull ptr @_Znam(i64 noundef %238) #10
  store ptr %239, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %240 = load i32, ptr %26, align 4, !tbaa !9
  %241 = load i32, ptr %27, align 4, !tbaa !9
  %242 = add nsw i32 %240, %241
  %243 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %244 = load i32, ptr %243, align 8, !tbaa !37
  %245 = add nsw i32 %242, %244
  %246 = add nsw i32 %245, 1
  %247 = sext i32 %246 to i64
  %248 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %247, i64 4)
  %249 = extractvalue { i64, i1 } %248, 1
  %250 = extractvalue { i64, i1 } %248, 0
  %251 = select i1 %249, i64 -1, i64 %250
  %252 = call noalias noundef nonnull ptr @_Znam(i64 noundef %251) #10
  store ptr %252, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %253 = load i32, ptr %26, align 4, !tbaa !9
  %254 = load i32, ptr %27, align 4, !tbaa !9
  %255 = add nsw i32 %253, %254
  %256 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %257 = load i32, ptr %256, align 8, !tbaa !37
  %258 = add nsw i32 %255, %257
  %259 = add nsw i32 %258, 1
  %260 = sext i32 %259 to i64
  %261 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %260, i64 4)
  %262 = extractvalue { i64, i1 } %261, 1
  %263 = extractvalue { i64, i1 } %261, 0
  %264 = select i1 %262, i64 -1, i64 %263
  %265 = call noalias noundef nonnull ptr @_Znam(i64 noundef %264) #10
  store ptr %265, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  %266 = load i32, ptr %26, align 4, !tbaa !9
  %267 = load i32, ptr %27, align 4, !tbaa !9
  %268 = add nsw i32 %266, %267
  %269 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %270 = load i32, ptr %269, align 8, !tbaa !37
  %271 = add nsw i32 %268, %270
  %272 = add nsw i32 %271, 1
  %273 = sext i32 %272 to i64
  %274 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %273, i64 8)
  %275 = extractvalue { i64, i1 } %274, 1
  %276 = extractvalue { i64, i1 } %274, 0
  %277 = select i1 %275, i64 -1, i64 %276
  %278 = call noalias noundef nonnull ptr @_Znam(i64 noundef %277) #10
  store ptr %278, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  %279 = load i32, ptr %26, align 4, !tbaa !9
  %280 = load i32, ptr %27, align 4, !tbaa !9
  %281 = add nsw i32 %279, %280
  %282 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %283 = load i32, ptr %282, align 8, !tbaa !37
  %284 = add nsw i32 %281, %283
  %285 = add nsw i32 %284, 1
  %286 = sext i32 %285 to i64
  %287 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %286, i64 4)
  %288 = extractvalue { i64, i1 } %287, 1
  %289 = extractvalue { i64, i1 } %287, 0
  %290 = select i1 %288, i64 -1, i64 %289
  %291 = call noalias noundef nonnull ptr @_Znam(i64 noundef %290) #10
  store ptr %291, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %292 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %293 = load i32, ptr %292, align 8, !tbaa !37
  %294 = sext i32 %293 to i64
  %295 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %294, i64 4)
  %296 = extractvalue { i64, i1 } %295, 1
  %297 = extractvalue { i64, i1 } %295, 0
  %298 = select i1 %296, i64 -1, i64 %297
  %299 = call noalias noundef nonnull ptr @_Znam(i64 noundef %298) #10
  store ptr %299, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %300 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 23
  %301 = getelementptr inbounds %"class.qpOASES::Options", ptr %300, i32 0, i32 26
  %302 = load double, ptr %301, align 8, !tbaa !48
  store double %302, ptr %44, align 8, !tbaa !33
  %303 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 15
  %304 = load i32, ptr %303, align 4, !tbaa !49
  switch i32 %304, label %310 [
    i32 0, label %305
    i32 1, label %307
  ]

305:                                              ; preds = %183
  %306 = load double, ptr %44, align 8, !tbaa !33
  store double %306, ptr %36, align 8, !tbaa !33
  br label %476

307:                                              ; preds = %183
  %308 = load double, ptr %44, align 8, !tbaa !33
  %309 = fadd double 1.000000e+00, %308
  store double %309, ptr %36, align 8, !tbaa !33
  br label %476

310:                                              ; preds = %183
  %311 = load double, ptr %44, align 8, !tbaa !33
  store double %311, ptr %36, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #9
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %312

312:                                              ; preds = %327, %310
  %313 = load i32, ptr %45, align 4, !tbaa !9
  %314 = load i32, ptr %26, align 4, !tbaa !9
  %315 = icmp slt i32 %313, %314
  br i1 %315, label %317, label %316

316:                                              ; preds = %312
  store i32 6, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #9
  br label %330

317:                                              ; preds = %312
  %318 = load ptr, ptr %28, align 8, !tbaa !5
  %319 = load i32, ptr %45, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i32, ptr %318, i64 %320
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = load ptr, ptr %41, align 8, !tbaa !5
  %324 = load i32, ptr %45, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds i32, ptr %323, i64 %325
  store i32 %322, ptr %326, align 4, !tbaa !9
  br label %327

327:                                              ; preds = %317
  %328 = load i32, ptr %45, align 4, !tbaa !9
  %329 = add nsw i32 %328, 1
  store i32 %329, ptr %45, align 4, !tbaa !9
  br label %312, !llvm.loop !50

330:                                              ; preds = %316
  %331 = load i32, ptr %26, align 4, !tbaa !9
  store i32 %331, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #9
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %332

332:                                              ; preds = %367, %330
  %333 = load i32, ptr %46, align 4, !tbaa !9
  %334 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %335 = load i32, ptr %334, align 8, !tbaa !37
  %336 = icmp slt i32 %333, %335
  br i1 %336, label %338, label %337

337:                                              ; preds = %332
  store i32 9, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #9
  br label %370

338:                                              ; preds = %332
  %339 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 11
  %340 = load ptr, ptr %339, align 8, !tbaa !38
  %341 = load i32, ptr %46, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds i32, ptr %340, i64 %342
  %344 = load i32, ptr %343, align 4, !tbaa !39
  %345 = icmp eq i32 %344, 1
  br i1 %345, label %346, label %366

346:                                              ; preds = %338
  %347 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 10
  %348 = load ptr, ptr %347, align 8, !tbaa !41
  %349 = load i32, ptr %46, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds i32, ptr %348, i64 %350
  %352 = load i32, ptr %351, align 4, !tbaa !9
  %353 = load ptr, ptr %41, align 8, !tbaa !5
  %354 = load i32, ptr %40, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds i32, ptr %353, i64 %355
  store i32 %352, ptr %356, align 4, !tbaa !9
  %357 = load i32, ptr %46, align 4, !tbaa !9
  %358 = load ptr, ptr %43, align 8, !tbaa !5
  %359 = load i32, ptr %40, align 4, !tbaa !9
  %360 = load i32, ptr %26, align 4, !tbaa !9
  %361 = sub nsw i32 %359, %360
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds i32, ptr %358, i64 %362
  store i32 %357, ptr %363, align 4, !tbaa !9
  %364 = load i32, ptr %40, align 4, !tbaa !9
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %40, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %346, %338
  br label %367

367:                                              ; preds = %366
  %368 = load i32, ptr %46, align 4, !tbaa !9
  %369 = add nsw i32 %368, 1
  store i32 %369, ptr %46, align 4, !tbaa !9
  br label %332, !llvm.loop !51

370:                                              ; preds = %337
  %371 = load i32, ptr %8, align 4, !tbaa !9
  %372 = load ptr, ptr %41, align 8, !tbaa !5
  %373 = load i32, ptr %40, align 4, !tbaa !9
  %374 = add nsw i32 %373, 1
  store i32 %374, ptr %40, align 4, !tbaa !9
  %375 = sext i32 %373 to i64
  %376 = getelementptr inbounds i32, ptr %372, i64 %375
  store i32 %371, ptr %376, align 4, !tbaa !9
  %377 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 2
  %378 = load ptr, ptr %377, align 8, !tbaa !52
  %379 = load ptr, ptr %378, align 8, !tbaa !53
  %380 = getelementptr i8, ptr %379, i64 -24
  %381 = load i64, ptr %380, align 8
  %382 = getelementptr inbounds i8, ptr %378, i64 %381
  %383 = load i32, ptr %40, align 4, !tbaa !9
  %384 = load ptr, ptr %41, align 8, !tbaa !5
  %385 = load ptr, ptr %37, align 8, !tbaa !5
  %386 = load ptr, ptr %38, align 8, !tbaa !5
  %387 = load ptr, ptr %39, align 8, !tbaa !5
  %388 = load ptr, ptr %382, align 8, !tbaa !53
  %389 = getelementptr inbounds ptr, ptr %388, i64 14
  %390 = load ptr, ptr %389, align 8
  %391 = call noundef i32 %390(ptr noundef nonnull align 8 dereferenceable(12) %382, i32 noundef %383, ptr noundef %384, i32 noundef 1, ptr noundef %8, i32 noundef 0, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef %385, ptr noundef %386, ptr noundef %387, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #9
  store i32 0, ptr %47, align 4, !tbaa !9
  br label %392

392:                                              ; preds = %472, %370
  %393 = load i32, ptr %47, align 4, !tbaa !9
  %394 = load i32, ptr %42, align 4, !tbaa !9
  %395 = icmp slt i32 %393, %394
  br i1 %395, label %397, label %396

396:                                              ; preds = %392
  store i32 12, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #9
  br label %475

397:                                              ; preds = %392
  %398 = load ptr, ptr %37, align 8, !tbaa !5
  %399 = load i32, ptr %47, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds i32, ptr %398, i64 %400
  %402 = load i32, ptr %401, align 4, !tbaa !9
  %403 = load i32, ptr %26, align 4, !tbaa !9
  %404 = icmp slt i32 %402, %403
  br i1 %404, label %405, label %426

405:                                              ; preds = %397
  %406 = load ptr, ptr %37, align 8, !tbaa !5
  %407 = load i32, ptr %47, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds i32, ptr %406, i64 %408
  %410 = load i32, ptr %409, align 4, !tbaa !9
  %411 = load ptr, ptr %31, align 8, !tbaa !5
  %412 = load i32, ptr %30, align 4, !tbaa !9
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds i32, ptr %411, i64 %413
  store i32 %410, ptr %414, align 4, !tbaa !9
  %415 = load ptr, ptr %39, align 8, !tbaa !5
  %416 = load i32, ptr %47, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds double, ptr %415, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !33
  %420 = load ptr, ptr %32, align 8, !tbaa !5
  %421 = load i32, ptr %30, align 4, !tbaa !9
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %420, i64 %422
  store double %419, ptr %423, align 8, !tbaa !33
  %424 = load i32, ptr %30, align 4, !tbaa !9
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %30, align 4, !tbaa !9
  br label %471

426:                                              ; preds = %397
  %427 = load ptr, ptr %37, align 8, !tbaa !5
  %428 = load i32, ptr %47, align 4, !tbaa !9
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds i32, ptr %427, i64 %429
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = load i32, ptr %40, align 4, !tbaa !9
  %433 = sub nsw i32 %432, 1
  %434 = icmp ne i32 %431, %433
  br i1 %434, label %435, label %462

435:                                              ; preds = %426
  %436 = load ptr, ptr %43, align 8, !tbaa !5
  %437 = load ptr, ptr %37, align 8, !tbaa !5
  %438 = load i32, ptr %47, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds i32, ptr %437, i64 %439
  %441 = load i32, ptr %440, align 4, !tbaa !9
  %442 = load i32, ptr %26, align 4, !tbaa !9
  %443 = sub nsw i32 %441, %442
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds i32, ptr %436, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = load ptr, ptr %34, align 8, !tbaa !5
  %448 = load i32, ptr %33, align 4, !tbaa !9
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds i32, ptr %447, i64 %449
  store i32 %446, ptr %450, align 4, !tbaa !9
  %451 = load ptr, ptr %39, align 8, !tbaa !5
  %452 = load i32, ptr %47, align 4, !tbaa !9
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds double, ptr %451, i64 %453
  %455 = load double, ptr %454, align 8, !tbaa !33
  %456 = load ptr, ptr %35, align 8, !tbaa !5
  %457 = load i32, ptr %33, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %456, i64 %458
  store double %455, ptr %459, align 8, !tbaa !33
  %460 = load i32, ptr %33, align 4, !tbaa !9
  %461 = add nsw i32 %460, 1
  store i32 %461, ptr %33, align 4, !tbaa !9
  br label %470

462:                                              ; preds = %426
  %463 = load ptr, ptr %39, align 8, !tbaa !5
  %464 = load i32, ptr %47, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %463, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !33
  %468 = load double, ptr %36, align 8, !tbaa !33
  %469 = fadd double %468, %467
  store double %469, ptr %36, align 8, !tbaa !33
  br label %470

470:                                              ; preds = %462, %435
  br label %471

471:                                              ; preds = %470, %405
  br label %472

472:                                              ; preds = %471
  %473 = load i32, ptr %47, align 4, !tbaa !9
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr %47, align 4, !tbaa !9
  br label %392, !llvm.loop !55

475:                                              ; preds = %396
  br label %476

476:                                              ; preds = %475, %307, %305
  %477 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %53, i32 0, i32 12
  %478 = load ptr, ptr %477, align 8, !tbaa !56
  %479 = icmp ne ptr %478, null
  br i1 %479, label %480, label %483

480:                                              ; preds = %476
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.17)
  %481 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %482 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %481, i32 noundef 11, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1958, i32 noundef 1)
  store i32 %482, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %673

483:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #9
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %484

484:                                              ; preds = %499, %483
  %485 = load i32, ptr %48, align 4, !tbaa !9
  %486 = load i32, ptr %27, align 4, !tbaa !9
  %487 = icmp slt i32 %485, %486
  br i1 %487, label %489, label %488

488:                                              ; preds = %484
  store i32 15, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #9
  br label %502

489:                                              ; preds = %484
  %490 = load ptr, ptr %29, align 8, !tbaa !5
  %491 = load i32, ptr %48, align 4, !tbaa !9
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds i32, ptr %490, i64 %492
  %494 = load i32, ptr %493, align 4, !tbaa !9
  %495 = load ptr, ptr %41, align 8, !tbaa !5
  %496 = load i32, ptr %48, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds i32, ptr %495, i64 %497
  store i32 %494, ptr %498, align 4, !tbaa !9
  br label %499

499:                                              ; preds = %489
  %500 = load i32, ptr %48, align 4, !tbaa !9
  %501 = add nsw i32 %500, 1
  store i32 %501, ptr %48, align 4, !tbaa !9
  br label %484, !llvm.loop !57

502:                                              ; preds = %488
  %503 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %503, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #9
  store i32 0, ptr %49, align 4, !tbaa !9
  br label %504

504:                                              ; preds = %539, %502
  %505 = load i32, ptr %49, align 4, !tbaa !9
  %506 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %507 = load i32, ptr %506, align 8, !tbaa !37
  %508 = icmp slt i32 %505, %507
  br i1 %508, label %510, label %509

509:                                              ; preds = %504
  store i32 18, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #9
  br label %542

510:                                              ; preds = %504
  %511 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 11
  %512 = load ptr, ptr %511, align 8, !tbaa !38
  %513 = load i32, ptr %49, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds i32, ptr %512, i64 %514
  %516 = load i32, ptr %515, align 4, !tbaa !39
  %517 = icmp eq i32 %516, 2
  br i1 %517, label %518, label %538

518:                                              ; preds = %510
  %519 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 10
  %520 = load ptr, ptr %519, align 8, !tbaa !41
  %521 = load i32, ptr %49, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds i32, ptr %520, i64 %522
  %524 = load i32, ptr %523, align 4, !tbaa !9
  %525 = load ptr, ptr %41, align 8, !tbaa !5
  %526 = load i32, ptr %40, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds i32, ptr %525, i64 %527
  store i32 %524, ptr %528, align 4, !tbaa !9
  %529 = load i32, ptr %49, align 4, !tbaa !9
  %530 = load ptr, ptr %43, align 8, !tbaa !5
  %531 = load i32, ptr %40, align 4, !tbaa !9
  %532 = load i32, ptr %27, align 4, !tbaa !9
  %533 = sub nsw i32 %531, %532
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds i32, ptr %530, i64 %534
  store i32 %529, ptr %535, align 4, !tbaa !9
  %536 = load i32, ptr %40, align 4, !tbaa !9
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %40, align 4, !tbaa !9
  br label %538

538:                                              ; preds = %518, %510
  br label %539

539:                                              ; preds = %538
  %540 = load i32, ptr %49, align 4, !tbaa !9
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %49, align 4, !tbaa !9
  br label %504, !llvm.loop !58

542:                                              ; preds = %509
  %543 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %53, i32 0, i32 2
  %544 = load ptr, ptr %543, align 8, !tbaa !59
  %545 = load i32, ptr %40, align 4, !tbaa !9
  %546 = load ptr, ptr %41, align 8, !tbaa !5
  %547 = load ptr, ptr %37, align 8, !tbaa !5
  %548 = load ptr, ptr %38, align 8, !tbaa !5
  %549 = load ptr, ptr %39, align 8, !tbaa !5
  %550 = load ptr, ptr %544, align 8, !tbaa !53
  %551 = getelementptr inbounds ptr, ptr %550, i64 14
  %552 = load ptr, ptr %551, align 8
  %553 = call noundef i32 %552(ptr noundef nonnull align 8 dereferenceable(12) %544, i32 noundef %545, ptr noundef %546, i32 noundef 1, ptr noundef %8, i32 noundef 0, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(4) %42, ptr noundef %547, ptr noundef %548, ptr noundef %549, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #9
  store i32 0, ptr %50, align 4, !tbaa !9
  br label %554

554:                                              ; preds = %618, %542
  %555 = load i32, ptr %50, align 4, !tbaa !9
  %556 = load i32, ptr %42, align 4, !tbaa !9
  %557 = icmp slt i32 %555, %556
  br i1 %557, label %559, label %558

558:                                              ; preds = %554
  store i32 21, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #9
  br label %621

559:                                              ; preds = %554
  %560 = load ptr, ptr %37, align 8, !tbaa !5
  %561 = load i32, ptr %50, align 4, !tbaa !9
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds i32, ptr %560, i64 %562
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = load i32, ptr %27, align 4, !tbaa !9
  %566 = icmp slt i32 %564, %565
  br i1 %566, label %567, label %590

567:                                              ; preds = %559
  %568 = load ptr, ptr %37, align 8, !tbaa !5
  %569 = load i32, ptr %50, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds i32, ptr %568, i64 %570
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = load i32, ptr %26, align 4, !tbaa !9
  %574 = add nsw i32 %572, %573
  %575 = load ptr, ptr %31, align 8, !tbaa !5
  %576 = load i32, ptr %30, align 4, !tbaa !9
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds i32, ptr %575, i64 %577
  store i32 %574, ptr %578, align 4, !tbaa !9
  %579 = load ptr, ptr %39, align 8, !tbaa !5
  %580 = load i32, ptr %50, align 4, !tbaa !9
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds double, ptr %579, i64 %581
  %583 = load double, ptr %582, align 8, !tbaa !33
  %584 = load ptr, ptr %32, align 8, !tbaa !5
  %585 = load i32, ptr %30, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %584, i64 %586
  store double %583, ptr %587, align 8, !tbaa !33
  %588 = load i32, ptr %30, align 4, !tbaa !9
  %589 = add nsw i32 %588, 1
  store i32 %589, ptr %30, align 4, !tbaa !9
  br label %617

590:                                              ; preds = %559
  %591 = load ptr, ptr %43, align 8, !tbaa !5
  %592 = load ptr, ptr %37, align 8, !tbaa !5
  %593 = load i32, ptr %50, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds i32, ptr %592, i64 %594
  %596 = load i32, ptr %595, align 4, !tbaa !9
  %597 = load i32, ptr %27, align 4, !tbaa !9
  %598 = sub nsw i32 %596, %597
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds i32, ptr %591, i64 %599
  %601 = load i32, ptr %600, align 4, !tbaa !9
  %602 = load ptr, ptr %34, align 8, !tbaa !5
  %603 = load i32, ptr %33, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds i32, ptr %602, i64 %604
  store i32 %601, ptr %605, align 4, !tbaa !9
  %606 = load ptr, ptr %39, align 8, !tbaa !5
  %607 = load i32, ptr %50, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds double, ptr %606, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !33
  %611 = load ptr, ptr %35, align 8, !tbaa !5
  %612 = load i32, ptr %33, align 4, !tbaa !9
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds double, ptr %611, i64 %613
  store double %610, ptr %614, align 8, !tbaa !33
  %615 = load i32, ptr %33, align 4, !tbaa !9
  %616 = add nsw i32 %615, 1
  store i32 %616, ptr %33, align 4, !tbaa !9
  br label %617

617:                                              ; preds = %590, %567
  br label %618

618:                                              ; preds = %617
  %619 = load i32, ptr %50, align 4, !tbaa !9
  %620 = add nsw i32 %619, 1
  store i32 %620, ptr %50, align 4, !tbaa !9
  br label %554, !llvm.loop !60

621:                                              ; preds = %558
  %622 = load ptr, ptr %43, align 8, !tbaa !5
  %623 = icmp eq ptr %622, null
  br i1 %623, label %625, label %624

624:                                              ; preds = %621
  call void @_ZdaPv(ptr noundef %622) #11
  br label %625

625:                                              ; preds = %624, %621
  %626 = load ptr, ptr %41, align 8, !tbaa !5
  %627 = icmp eq ptr %626, null
  br i1 %627, label %629, label %628

628:                                              ; preds = %625
  call void @_ZdaPv(ptr noundef %626) #11
  br label %629

629:                                              ; preds = %628, %625
  %630 = load ptr, ptr %39, align 8, !tbaa !5
  %631 = icmp eq ptr %630, null
  br i1 %631, label %633, label %632

632:                                              ; preds = %629
  call void @_ZdaPv(ptr noundef %630) #11
  br label %633

633:                                              ; preds = %632, %629
  %634 = load ptr, ptr %38, align 8, !tbaa !5
  %635 = icmp eq ptr %634, null
  br i1 %635, label %637, label %636

636:                                              ; preds = %633
  call void @_ZdaPv(ptr noundef %634) #11
  br label %637

637:                                              ; preds = %636, %633
  %638 = load ptr, ptr %37, align 8, !tbaa !5
  %639 = icmp eq ptr %638, null
  br i1 %639, label %641, label %640

640:                                              ; preds = %637
  call void @_ZdaPv(ptr noundef %638) #11
  br label %641

641:                                              ; preds = %640, %637
  %642 = load i32, ptr %8, align 4, !tbaa !9
  %643 = load i32, ptr %30, align 4, !tbaa !9
  %644 = load ptr, ptr %31, align 8, !tbaa !5
  %645 = load ptr, ptr %32, align 8, !tbaa !5
  %646 = load i32, ptr %33, align 4, !tbaa !9
  %647 = load ptr, ptr %34, align 8, !tbaa !5
  %648 = load ptr, ptr %35, align 8, !tbaa !5
  %649 = load double, ptr %36, align 8, !tbaa !33
  %650 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20addToSchurComplementEiNS_15SchurUpdateTypeEiPKiPKdiS3_S5_d(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %642, i32 noundef 1, i32 noundef %643, ptr noundef %644, ptr noundef %645, i32 noundef %646, ptr noundef %647, ptr noundef %648, double noundef %649)
  store i32 %650, ptr %12, align 4, !tbaa !13
  %651 = load ptr, ptr %32, align 8, !tbaa !5
  %652 = icmp eq ptr %651, null
  br i1 %652, label %654, label %653

653:                                              ; preds = %641
  call void @_ZdaPv(ptr noundef %651) #11
  br label %654

654:                                              ; preds = %653, %641
  %655 = load ptr, ptr %31, align 8, !tbaa !5
  %656 = icmp eq ptr %655, null
  br i1 %656, label %658, label %657

657:                                              ; preds = %654
  call void @_ZdaPv(ptr noundef %655) #11
  br label %658

658:                                              ; preds = %657, %654
  %659 = load ptr, ptr %35, align 8, !tbaa !5
  %660 = icmp eq ptr %659, null
  br i1 %660, label %662, label %661

661:                                              ; preds = %658
  call void @_ZdaPv(ptr noundef %659) #11
  br label %662

662:                                              ; preds = %661, %658
  %663 = load ptr, ptr %34, align 8, !tbaa !5
  %664 = icmp eq ptr %663, null
  br i1 %664, label %666, label %665

665:                                              ; preds = %662
  call void @_ZdaPv(ptr noundef %663) #11
  br label %666

666:                                              ; preds = %665, %662
  %667 = load i32, ptr %12, align 4, !tbaa !13
  %668 = icmp ne i32 %667, 0
  br i1 %668, label %669, label %672

669:                                              ; preds = %666
  %670 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %671 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %670, i32 noundef 81, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2004, i32 noundef 1)
  store i32 %671, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %673

672:                                              ; preds = %666
  store i8 1, ptr %23, align 1, !tbaa !35
  store i32 1, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %22, align 4
  br label %673

673:                                              ; preds = %672, %669, %480
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  %674 = load i32, ptr %22, align 4
  switch i32 %674, label %949 [
    i32 0, label %675
  ]

675:                                              ; preds = %673
  br label %676

676:                                              ; preds = %675, %182
  br label %677

677:                                              ; preds = %676, %142
  %678 = load i8, ptr %23, align 1, !tbaa !35, !range !44, !noundef !45
  %679 = trunc i8 %678 to i1
  br i1 %679, label %683, label %680

680:                                              ; preds = %677
  %681 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %682 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %681, i32 noundef 81, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2012, i32 noundef 1)
  store i32 %682, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %949

683:                                              ; preds = %677
  %684 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 23
  %685 = getelementptr inbounds %"class.qpOASES::Options", ptr %684, i32 0, i32 3
  %686 = load i32, ptr %685, align 4, !tbaa !61
  %687 = icmp eq i32 %686, 1
  br i1 %687, label %688, label %885

688:                                              ; preds = %683
  %689 = load i32, ptr %10, align 4, !tbaa !11
  %690 = icmp eq i32 %689, 1
  br i1 %690, label %691, label %885

691:                                              ; preds = %688
  %692 = load i32, ptr %16, align 4, !tbaa !11
  %693 = icmp eq i32 %692, 0
  br i1 %693, label %694, label %885

694:                                              ; preds = %691
  %695 = load i32, ptr %17, align 4, !tbaa !9
  %696 = icmp eq i32 %695, 1
  br i1 %696, label %697, label %753

697:                                              ; preds = %694
  %698 = load i32, ptr %18, align 4, !tbaa !9
  %699 = call noundef double @_ZN7qpOASES14SQProblemSchur12calcDetSchurEi(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %698)
  store double %699, ptr %21, align 8, !tbaa !33
  %700 = load double, ptr %20, align 8, !tbaa !33
  %701 = load double, ptr %21, align 8, !tbaa !33
  %702 = fmul double %700, %701
  %703 = fcmp ogt double %702, 0.000000e+00
  br i1 %703, label %704, label %749

704:                                              ; preds = %697
  %705 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 15
  store i32 4, ptr %705, align 4, !tbaa !49
  %706 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 3
  %707 = load i32, ptr %706, align 8, !tbaa !37
  %708 = add nsw i32 %707, -1
  store i32 %708, ptr %706, align 8, !tbaa !37
  %709 = load i32, ptr %8, align 4, !tbaa !9
  %710 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 25
  %711 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %710, i32 0, i32 0
  store i32 %709, ptr %711, align 8, !tbaa !62
  %712 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 25
  %713 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %712, i32 0, i32 4
  store i32 2, ptr %713, align 8, !tbaa !63
  %714 = load i32, ptr %19, align 4, !tbaa !15
  switch i32 %714, label %745 [
    i32 -1, label %715
    i32 1, label %730
  ]

715:                                              ; preds = %704
  %716 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 6
  %717 = load i32, ptr %8, align 4, !tbaa !9
  %718 = call noundef i32 @_ZN7qpOASES6Bounds15moveFreeToFixedEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %716, i32 noundef %717, i32 noundef 1)
  %719 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 4
  %720 = load ptr, ptr %719, align 8, !tbaa !64
  %721 = load i32, ptr %8, align 4, !tbaa !9
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds double, ptr %720, i64 %722
  %724 = load double, ptr %723, align 8, !tbaa !33
  %725 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 5
  %726 = load ptr, ptr %725, align 8, !tbaa !65
  %727 = load i32, ptr %8, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds double, ptr %726, i64 %728
  store double %724, ptr %729, align 8, !tbaa !33
  br label %748

730:                                              ; preds = %704
  %731 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 6
  %732 = load i32, ptr %8, align 4, !tbaa !9
  %733 = call noundef i32 @_ZN7qpOASES6Bounds15moveFreeToFixedEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %731, i32 noundef %732, i32 noundef -1)
  %734 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 5
  %735 = load ptr, ptr %734, align 8, !tbaa !65
  %736 = load i32, ptr %8, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %735, i64 %737
  %739 = load double, ptr %738, align 8, !tbaa !33
  %740 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 4
  %741 = load ptr, ptr %740, align 8, !tbaa !64
  %742 = load i32, ptr %8, align 4, !tbaa !9
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds double, ptr %741, i64 %743
  store double %739, ptr %744, align 8, !tbaa !33
  br label %748

745:                                              ; preds = %704
  %746 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %747 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %746, i32 noundef 25, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2046, i32 noundef 1)
  store i32 %747, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %949

748:                                              ; preds = %730, %715
  br label %752

749:                                              ; preds = %697
  %750 = load i32, ptr %18, align 4, !tbaa !9
  %751 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %750)
  br label %752

752:                                              ; preds = %749, %748
  br label %884

753:                                              ; preds = %694
  %754 = load i32, ptr %17, align 4, !tbaa !9
  %755 = icmp eq i32 %754, 2
  br i1 %755, label %756, label %811

756:                                              ; preds = %753
  %757 = load i32, ptr %18, align 4, !tbaa !9
  %758 = call noundef double @_ZN7qpOASES14SQProblemSchur12calcDetSchurEi(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %757)
  store double %758, ptr %21, align 8, !tbaa !33
  %759 = load double, ptr %20, align 8, !tbaa !33
  %760 = load double, ptr %21, align 8, !tbaa !33
  %761 = fmul double %759, %760
  %762 = fcmp olt double %761, 0.000000e+00
  br i1 %762, label %763, label %807

763:                                              ; preds = %756
  %764 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 15
  store i32 4, ptr %764, align 4, !tbaa !49
  %765 = load i32, ptr %18, align 4, !tbaa !9
  %766 = call noundef i32 @_ZN7qpOASES14SQProblemSchur29undoDeleteFromSchurComplementEi(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %765)
  %767 = load i32, ptr %8, align 4, !tbaa !9
  %768 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 25
  %769 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %768, i32 0, i32 0
  store i32 %767, ptr %769, align 8, !tbaa !62
  %770 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 25
  %771 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %770, i32 0, i32 4
  store i32 2, ptr %771, align 8, !tbaa !63
  %772 = load i32, ptr %19, align 4, !tbaa !15
  switch i32 %772, label %803 [
    i32 -1, label %773
    i32 1, label %788
  ]

773:                                              ; preds = %763
  %774 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 6
  %775 = load i32, ptr %8, align 4, !tbaa !9
  %776 = call noundef i32 @_ZN7qpOASES6Bounds15moveFreeToFixedEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %774, i32 noundef %775, i32 noundef 1)
  %777 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 4
  %778 = load ptr, ptr %777, align 8, !tbaa !64
  %779 = load i32, ptr %8, align 4, !tbaa !9
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds double, ptr %778, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !33
  %783 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 5
  %784 = load ptr, ptr %783, align 8, !tbaa !65
  %785 = load i32, ptr %8, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %784, i64 %786
  store double %782, ptr %787, align 8, !tbaa !33
  br label %806

788:                                              ; preds = %763
  %789 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 6
  %790 = load i32, ptr %8, align 4, !tbaa !9
  %791 = call noundef i32 @_ZN7qpOASES6Bounds15moveFreeToFixedEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %789, i32 noundef %790, i32 noundef -1)
  %792 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 5
  %793 = load ptr, ptr %792, align 8, !tbaa !65
  %794 = load i32, ptr %8, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %793, i64 %795
  %797 = load double, ptr %796, align 8, !tbaa !33
  %798 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 4
  %799 = load ptr, ptr %798, align 8, !tbaa !64
  %800 = load i32, ptr %8, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds double, ptr %799, i64 %801
  store double %797, ptr %802, align 8, !tbaa !33
  br label %806

803:                                              ; preds = %763
  %804 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %805 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %804, i32 noundef 25, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2081, i32 noundef 1)
  store i32 %805, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %949

806:                                              ; preds = %788, %773
  br label %810

807:                                              ; preds = %756
  %808 = load i32, ptr %18, align 4, !tbaa !9
  %809 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %808)
  br label %810

810:                                              ; preds = %807, %806
  br label %883

811:                                              ; preds = %753
  %812 = load i32, ptr %17, align 4, !tbaa !9
  %813 = icmp eq i32 %812, 3
  br i1 %813, label %814, label %879

814:                                              ; preds = %811
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #9
  %815 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 1
  %816 = load ptr, ptr %815, align 8, !tbaa !66
  %817 = load ptr, ptr %816, align 8, !tbaa !53
  %818 = getelementptr inbounds ptr, ptr %817, i64 7
  %819 = load ptr, ptr %818, align 8
  %820 = call noundef i32 %819(ptr noundef nonnull align 8 dereferenceable(8) %816)
  store i32 %820, ptr %51, align 4, !tbaa !9
  %821 = load i32, ptr %51, align 4, !tbaa !9
  %822 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %53)
  %823 = icmp sgt i32 %821, %822
  br i1 %823, label %824, label %869

824:                                              ; preds = %814
  %825 = load i32, ptr %8, align 4, !tbaa !9
  %826 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 25
  %827 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %826, i32 0, i32 0
  store i32 %825, ptr %827, align 8, !tbaa !62
  %828 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 25
  %829 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %828, i32 0, i32 4
  store i32 2, ptr %829, align 8, !tbaa !63
  %830 = load i32, ptr %19, align 4, !tbaa !15
  switch i32 %830, label %865 [
    i32 -1, label %831
    i32 1, label %848
  ]

831:                                              ; preds = %824
  %832 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 4
  %833 = load ptr, ptr %832, align 8, !tbaa !64
  %834 = load i32, ptr %8, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %833, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !33
  %838 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 5
  %839 = load ptr, ptr %838, align 8, !tbaa !65
  %840 = load i32, ptr %8, align 4, !tbaa !9
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds double, ptr %839, i64 %841
  store double %837, ptr %842, align 8, !tbaa !33
  %843 = load i32, ptr %8, align 4, !tbaa !9
  %844 = load ptr, ptr %53, align 8, !tbaa !53
  %845 = getelementptr inbounds ptr, ptr %844, i64 28
  %846 = load ptr, ptr %845, align 8
  %847 = call noundef i32 %846(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %843, i32 noundef 1, i32 noundef 1, i32 noundef 0)
  br label %868

848:                                              ; preds = %824
  %849 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 5
  %850 = load ptr, ptr %849, align 8, !tbaa !65
  %851 = load i32, ptr %8, align 4, !tbaa !9
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds double, ptr %850, i64 %852
  %854 = load double, ptr %853, align 8, !tbaa !33
  %855 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 4
  %856 = load ptr, ptr %855, align 8, !tbaa !64
  %857 = load i32, ptr %8, align 4, !tbaa !9
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds double, ptr %856, i64 %858
  store double %854, ptr %859, align 8, !tbaa !33
  %860 = load i32, ptr %8, align 4, !tbaa !9
  %861 = load ptr, ptr %53, align 8, !tbaa !53
  %862 = getelementptr inbounds ptr, ptr %861, i64 28
  %863 = load ptr, ptr %862, align 8
  %864 = call noundef i32 %863(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %860, i32 noundef -1, i32 noundef 1, i32 noundef 0)
  br label %868

865:                                              ; preds = %824
  %866 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %867 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %866, i32 noundef 25, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2110, i32 noundef 1)
  store i32 %867, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %876

868:                                              ; preds = %848, %831
  br label %869

869:                                              ; preds = %868, %814
  %870 = call noundef i32 @_ZN7qpOASES14SQProblemSchur14correctInertiaEv(ptr noundef nonnull align 8 dereferenceable(1256) %53)
  %871 = icmp ne i32 %870, 0
  br i1 %871, label %872, label %875

872:                                              ; preds = %869
  %873 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %874 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %873, i32 noundef 81, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2116, i32 noundef 1)
  store i32 %874, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %876

875:                                              ; preds = %869
  store i32 0, ptr %22, align 4
  br label %876

876:                                              ; preds = %875, %872, %865
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #9
  %877 = load i32, ptr %22, align 4
  switch i32 %877, label %949 [
    i32 0, label %878
  ]

878:                                              ; preds = %876
  br label %882

879:                                              ; preds = %811
  %880 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %881 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %880, i32 noundef 81, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2120, i32 noundef 1)
  store i32 %881, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %949

882:                                              ; preds = %878
  br label %883

883:                                              ; preds = %882, %810
  br label %884

884:                                              ; preds = %883, %752
  br label %888

885:                                              ; preds = %691, %688, %683
  %886 = load i32, ptr %18, align 4, !tbaa !9
  %887 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %886)
  br label %888

888:                                              ; preds = %885, %884
  %889 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %53, i32 0, i32 8
  %890 = load double, ptr %889, align 8, !tbaa !67
  %891 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 23
  %892 = getelementptr inbounds %"class.qpOASES::Options", ptr %891, i32 0, i32 32
  %893 = load double, ptr %892, align 8, !tbaa !68
  %894 = fcmp olt double %890, %893
  br i1 %894, label %895, label %923

895:                                              ; preds = %888
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #9
  %896 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20resetSchurComplementENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef 1)
  store i32 %896, ptr %52, align 4, !tbaa !13
  %897 = load i32, ptr %52, align 4, !tbaa !13
  %898 = icmp ne i32 %897, 0
  br i1 %898, label %899, label %919

899:                                              ; preds = %895
  %900 = load i32, ptr %52, align 4, !tbaa !13
  %901 = icmp eq i32 %900, 142
  br i1 %901, label %902, label %908

902:                                              ; preds = %899
  %903 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 23
  %904 = getelementptr inbounds %"class.qpOASES::Options", ptr %903, i32 0, i32 0
  %905 = load i32, ptr %904, align 8, !tbaa !47
  %906 = icmp eq i32 %905, 3
  br i1 %906, label %907, label %908

907:                                              ; preds = %902
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.15)
  br label %916

908:                                              ; preds = %902, %899
  %909 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 23
  %910 = getelementptr inbounds %"class.qpOASES::Options", ptr %909, i32 0, i32 0
  %911 = load i32, ptr %910, align 8, !tbaa !47
  %912 = icmp eq i32 %911, 3
  br i1 %912, label %913, label %915

913:                                              ; preds = %908
  %914 = load i32, ptr %52, align 4, !tbaa !13
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.16, i32 noundef %914)
  br label %915

915:                                              ; preds = %913, %908
  br label %916

916:                                              ; preds = %915, %907
  %917 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %918 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %917, i32 noundef 76, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2138, i32 noundef 1)
  store i32 %918, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %920

919:                                              ; preds = %895
  store i32 0, ptr %22, align 4
  br label %920

920:                                              ; preds = %919, %916
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #9
  %921 = load i32, ptr %22, align 4
  switch i32 %921, label %949 [
    i32 0, label %922
  ]

922:                                              ; preds = %920
  br label %923

923:                                              ; preds = %922, %888
  %924 = load i32, ptr %16, align 4, !tbaa !11
  %925 = icmp eq i32 %924, 1
  br i1 %925, label %926, label %948

926:                                              ; preds = %923
  %927 = load i32, ptr %14, align 4, !tbaa !11
  %928 = icmp ne i32 %927, 0
  br i1 %928, label %929, label %938

929:                                              ; preds = %926
  %930 = load i32, ptr %13, align 4, !tbaa !9
  %931 = load i32, ptr %15, align 4, !tbaa !15
  %932 = load ptr, ptr %53, align 8, !tbaa !53
  %933 = getelementptr inbounds ptr, ptr %932, i64 28
  %934 = load ptr, ptr %933, align 8
  %935 = call noundef i32 %934(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %930, i32 noundef %931, i32 noundef 1, i32 noundef 0)
  %936 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 25
  %937 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %936, i32 0, i32 4
  store i32 1, ptr %937, align 8, !tbaa !63
  br label %947

938:                                              ; preds = %926
  %939 = load i32, ptr %13, align 4, !tbaa !9
  %940 = load i32, ptr %15, align 4, !tbaa !15
  %941 = load ptr, ptr %53, align 8, !tbaa !53
  %942 = getelementptr inbounds ptr, ptr %941, i64 25
  %943 = load ptr, ptr %942, align 8
  %944 = call noundef i32 %943(ptr noundef nonnull align 8 dereferenceable(1256) %53, i32 noundef %939, i32 noundef %940, i32 noundef 1, i32 noundef 0)
  %945 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %53, i32 0, i32 25
  %946 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %945, i32 0, i32 6
  store i32 1, ptr %946, align 8, !tbaa !69
  br label %947

947:                                              ; preds = %938, %929
  br label %948

948:                                              ; preds = %947, %923
  store i32 0, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %949

949:                                              ; preds = %948, %920, %879, %876, %803, %745, %680, %673, %180, %140
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #9
  br label %950

950:                                              ; preds = %949, %100, %84, %73, %58
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  %951 = load i32, ptr %6, align 4
  ret i32 %951
}

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nobuiltin allocsize(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 = { "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 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin 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 772}
!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 = !{!21, !25, i64 424}
!49 = !{!21, !27, i64 220}
!50 = distinct !{!50, !43}
!51 = distinct !{!51, !43}
!52 = !{!21, !6, i64 16}
!53 = !{!54, !54, i64 0}
!54 = !{!"vtable pointer", !8, i64 0}
!55 = distinct !{!55, !43}
!56 = !{!20, !6, i64 1000}
!57 = distinct !{!57, !43}
!58 = distinct !{!58, !43}
!59 = !{!20, !6, i64 808}
!60 = distinct !{!60, !43}
!61 = !{!21, !12, i64 284}
!62 = !{!21, !10, i64 768}
!63 = !{!21, !10, i64 784}
!64 = !{!21, !6, i64 32}
!65 = !{!21, !6, i64 40}
!66 = !{!18, !6, i64 1064}
!67 = !{!18, !25, i64 1112}
!68 = !{!21, !25, i64 464}
!69 = !{!21, !10, i64 792}


; 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.15 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [72 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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #2

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() local_unnamed_addr #3

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 #3

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800)) local_unnamed_addr #5 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 #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur14correctInertiaEv(ptr noundef nonnull align 8 dereferenceable(1256)) local_unnamed_addr #6 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 #5 align 2

declare noundef i32 @_ZN7qpOASES6Bounds15moveFixedToFreeEi(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) local_unnamed_addr #3

declare noundef i32 @_ZN7qpOASES6Bounds15moveFreeToFixedEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef, i32 noundef) local_unnamed_addr #3

; 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 #6 align 2

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

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

; 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 #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256), i32 noundef) local_unnamed_addr #6 align 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 #3

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur11removeBoundEiNS_11BooleanTypeES1_S1_(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) unnamed_addr #6 align 2 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  store i32 %1, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #8
  store i32 0, ptr %10, align 4, !tbaa !9
  %14 = getelementptr inbounds i8, ptr %0, i64 48
  %15 = tail call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %14, i32 noundef %1)
  %16 = icmp eq i32 %15, 0
  br i1 %16, label %17, label %20

17:                                               ; preds = %5
  %18 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %19 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %18, i32 noundef 98, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1818, i32 noundef 1)
  br label %.thread279

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

23:                                               ; preds = %20
  %24 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %25 = icmp eq i32 %24, 2
  br i1 %25, label %32, label %26

26:                                               ; preds = %23
  %27 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %28 = icmp eq i32 %27, 4
  br i1 %28, label %32, label %29

29:                                               ; preds = %26
  %30 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %31 = icmp eq i32 %30, 5
  br i1 %31, label %32, label %35

32:                                               ; preds = %29, %26, %23, %20
  %33 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %34 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %33, i32 noundef 9, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1825, i32 noundef 1)
  br label %.thread279

35:                                               ; preds = %29
  %36 = icmp eq i32 %4, 1
  br i1 %36, label %37, label %39

37:                                               ; preds = %35
  %38 = call noundef i32 @_ZN7qpOASES8QProblem22ensureNonzeroCurvatureENS_11BooleanTypeEiRS1_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef 1, i32 noundef %1, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %9)
  %.not = icmp eq i32 %38, 0
  br i1 %.not, label %._crit_edge353, label %.thread279

._crit_edge353:                                   ; preds = %37
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  br label %39

39:                                               ; preds = %._crit_edge353, %35
  %40 = phi i32 [ %.pre, %._crit_edge353 ], [ %1, %35 ]
  %41 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %14, i32 noundef %40)
  %42 = getelementptr inbounds i8, ptr %0, i64 1104
  %43 = load double, ptr %42, align 8, !tbaa !11
  %44 = load i32, ptr %6, align 4, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %0, i64 768
  %46 = getelementptr inbounds i8, ptr %0, i64 772
  store i32 %44, ptr %46, align 4, !tbaa !29
  %47 = call noundef i32 @_ZN7qpOASES6Bounds15moveFixedToFreeEi(ptr noundef nonnull align 8 dereferenceable(120) %14, i32 noundef %44)
  %.not237 = icmp eq i32 %47, 0
  br i1 %.not237, label %.preheader287, label %56

.preheader287:                                    ; preds = %39
  %48 = getelementptr inbounds i8, ptr %0, i64 1080
  %49 = load i32, ptr %48, align 8, !tbaa !30
  %50 = icmp sgt i32 %49, 0
  br i1 %50, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader287
  %51 = getelementptr inbounds i8, ptr %0, i64 1136
  %52 = load ptr, ptr %51, align 8, !tbaa !31
  %53 = load i32, ptr %6, align 4
  %54 = getelementptr inbounds i8, ptr %0, i64 1128
  %55 = load ptr, ptr %54, align 8
  %wide.trip.count = zext nneg i32 %49 to i64
  br label %59

56:                                               ; preds = %39
  %57 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %58 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %57, i32 noundef 81, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1844, i32 noundef 1)
  br label %.thread279

59:                                               ; preds = %.lr.ph, %70
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %70 ]
  %60 = getelementptr inbounds i32, ptr %52, i64 %indvars.iv
  %61 = load i32, ptr %60, align 4, !tbaa !32
  %62 = icmp eq i32 %61, 0
  br i1 %62, label %63, label %70

63:                                               ; preds = %59
  %64 = getelementptr inbounds i32, ptr %55, i64 %indvars.iv
  %65 = load i32, ptr %64, align 4, !tbaa !5
  %66 = icmp eq i32 %53, %65
  br i1 %66, label %67, label %70

67:                                               ; preds = %63
  %68 = trunc nuw nsw i64 %indvars.iv to i32
  %69 = call noundef i32 @_ZN7qpOASES14SQProblemSchur25deleteFromSchurComplementEiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %68, i32 noundef 1)
  %.not238 = icmp eq i32 %69, 0
  br i1 %.not238, label %.thread263, label %71

70:                                               ; preds = %59, %63
  %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 %59, !llvm.loop !34

71:                                               ; preds = %67
  %72 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %73 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %72, i32 noundef 81, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1856, i32 noundef 1)
  br label %.thread279

._crit_edge:                                      ; preds = %70, %.preheader287
  %74 = icmp slt i32 %49, 0
  %75 = getelementptr inbounds i8, ptr %0, i64 1084
  %76 = load i32, ptr %75, align 4
  %77 = icmp eq i32 %49, %76
  %or.cond248 = select i1 %74, i1 true, i1 %77
  br i1 %or.cond248, label %78, label %91

78:                                               ; preds = %._crit_edge
  %79 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20resetSchurComplementENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef 0)
  %.not242 = icmp eq i32 %79, 0
  br i1 %.not242, label %.thread263, label %80

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

85:                                               ; preds = %80
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.15)
  br label %88

86:                                               ; preds = %80
  br i1 %84, label %87, label %88

87:                                               ; preds = %86
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.16, i32 noundef %79)
  br label %88

88:                                               ; preds = %85, %87, %86
  %89 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %90 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %89, i32 noundef 81, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1876, i32 noundef 1)
  br label %.thread279

91:                                               ; preds = %._crit_edge
  %92 = getelementptr inbounds i8, ptr %0, i64 1176
  %93 = call noundef i32 @_ZNK7qpOASES9Indexlist9getLengthEv(ptr noundef nonnull align 8 dereferenceable(36) %92)
  %94 = getelementptr inbounds i8, ptr %0, i64 1216
  %95 = call noundef i32 @_ZNK7qpOASES9Indexlist9getLengthEv(ptr noundef nonnull align 8 dereferenceable(36) %94)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %96 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %92, ptr noundef nonnull %11)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %97 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %94, ptr noundef nonnull %12)
  %98 = add nsw i32 %95, %93
  %99 = load i32, ptr %48, align 8, !tbaa !30
  %100 = add nsw i32 %98, %99
  %101 = sext i32 %100 to i64
  %102 = icmp slt i32 %100, 0
  %103 = shl nsw i64 %101, 2
  %104 = select i1 %102, i64 -1, i64 %103
  %105 = call noalias noundef nonnull ptr @_Znam(i64 noundef %104) #9
  %106 = shl nsw i64 %101, 3
  %107 = select i1 %102, i64 -1, i64 %106
  %108 = call noalias noundef nonnull ptr @_Znam(i64 noundef %107) #9
  %109 = call noalias noundef nonnull ptr @_Znam(i64 noundef %104) #9
  %110 = call noalias noundef nonnull ptr @_Znam(i64 noundef %107) #9
  %111 = add nsw i32 %100, 1
  %112 = sext i32 %111 to i64
  %113 = icmp slt i32 %100, -1
  %114 = shl nsw i64 %112, 2
  %115 = select i1 %113, i64 -1, i64 %114
  %116 = call noalias noundef nonnull ptr @_Znam(i64 noundef %115) #9
  %117 = call noalias noundef nonnull ptr @_Znam(i64 noundef %115) #9
  %118 = shl nsw i64 %112, 3
  %119 = select i1 %113, i64 -1, i64 %118
  %120 = call noalias noundef nonnull ptr @_Znam(i64 noundef %119) #9
  %121 = call noalias noundef nonnull ptr @_Znam(i64 noundef %115) #9
  %122 = ptrtoint ptr %121 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #8
  %123 = sext i32 %99 to i64
  %124 = icmp slt i32 %99, 0
  %125 = shl nsw i64 %123, 2
  %126 = select i1 %124, i64 -1, i64 %125
  %127 = call noalias noundef nonnull ptr @_Znam(i64 noundef %126) #9
  %128 = getelementptr inbounds i8, ptr %0, i64 424
  %129 = load double, ptr %128, align 8, !tbaa !36
  %130 = getelementptr inbounds i8, ptr %0, i64 220
  %131 = load i32, ptr %130, align 4, !tbaa !37
  switch i32 %131, label %.preheader286 [
    i32 0, label %.loopexit
    i32 1, label %146
  ]

.preheader286:                                    ; preds = %91
  %132 = icmp sgt i32 %93, 0
  br i1 %132, label %.lr.ph292, label %.preheader285

.lr.ph292:                                        ; preds = %.preheader286
  %133 = load ptr, ptr %11, align 8, !tbaa !38
  %wide.trip.count326 = zext nneg i32 %93 to i64
  %min.iters.check = icmp ult i32 %93, 8
  %134 = ptrtoint ptr %133 to i64
  %135 = sub i64 %122, %134
  %diff.check = icmp ult i64 %135, 32
  %or.cond388 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond388, label %scalar.ph.preheader, label %vector.ph

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph292
  %indvars.iv323.ph = phi i64 [ 0, %.lr.ph292 ], [ %n.vec, %middle.block ]
  %xtraiter = and i64 %wide.trip.count326, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv323.prol = phi i64 [ %indvars.iv.next324.prol, %scalar.ph.prol ], [ %indvars.iv323.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %136 = getelementptr inbounds i32, ptr %133, i64 %indvars.iv323.prol
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %138 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv323.prol
  store i32 %137, ptr %138, align 4, !tbaa !5
  %indvars.iv.next324.prol = add nuw nsw i64 %indvars.iv323.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !39

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv323.unr = phi i64 [ %indvars.iv323.ph, %scalar.ph.preheader ], [ %indvars.iv.next324.prol, %scalar.ph.prol ]
  %139 = sub nsw i64 %indvars.iv323.ph, %wide.trip.count326
  %140 = icmp ugt i64 %139, -4
  br i1 %140, label %.preheader285, label %scalar.ph

vector.ph:                                        ; preds = %.lr.ph292
  %n.vec = and i64 %wide.trip.count326, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %141 = getelementptr inbounds i32, ptr %133, i64 %index
  %142 = getelementptr inbounds i8, ptr %141, i64 16
  %wide.load = load <4 x i32>, ptr %141, align 4, !tbaa !5
  %wide.load371 = load <4 x i32>, ptr %142, align 4, !tbaa !5
  %143 = getelementptr inbounds i32, ptr %121, i64 %index
  %144 = getelementptr inbounds i8, ptr %143, i64 16
  store <4 x i32> %wide.load, ptr %143, align 4, !tbaa !5
  store <4 x i32> %wide.load371, ptr %144, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %145 = icmp eq i64 %index.next, %n.vec
  br i1 %145, label %middle.block, label %vector.body, !llvm.loop !41

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count326
  br i1 %cmp.n, label %.preheader285, label %scalar.ph.preheader

146:                                              ; preds = %91
  %147 = fadd double %129, 1.000000e+00
  br label %.loopexit

.preheader285:                                    ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %.preheader286
  %148 = icmp sgt i32 %99, 0
  br i1 %148, label %.lr.ph295, label %._crit_edge296

.lr.ph295:                                        ; preds = %.preheader285
  %149 = getelementptr inbounds i8, ptr %0, i64 1136
  %150 = load ptr, ptr %149, align 8, !tbaa !31
  %151 = getelementptr inbounds i8, ptr %0, i64 1128
  %152 = load ptr, ptr %151, align 8
  %wide.trip.count331 = zext nneg i32 %99 to i64
  br label %181

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv323 = phi i64 [ %indvars.iv.next324.3, %scalar.ph ], [ %indvars.iv323.unr, %scalar.ph.prol.loopexit ]
  %153 = getelementptr inbounds i32, ptr %133, i64 %indvars.iv323
  %154 = load i32, ptr %153, align 4, !tbaa !5
  %155 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv323
  store i32 %154, ptr %155, align 4, !tbaa !5
  %indvars.iv.next324 = add nuw nsw i64 %indvars.iv323, 1
  %156 = getelementptr inbounds i32, ptr %133, i64 %indvars.iv.next324
  %157 = load i32, ptr %156, align 4, !tbaa !5
  %158 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv.next324
  store i32 %157, ptr %158, align 4, !tbaa !5
  %indvars.iv.next324.1 = add nuw nsw i64 %indvars.iv323, 2
  %159 = getelementptr inbounds i32, ptr %133, i64 %indvars.iv.next324.1
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv.next324.1
  store i32 %160, ptr %161, align 4, !tbaa !5
  %indvars.iv.next324.2 = add nuw nsw i64 %indvars.iv323, 3
  %162 = getelementptr inbounds i32, ptr %133, i64 %indvars.iv.next324.2
  %163 = load i32, ptr %162, align 4, !tbaa !5
  %164 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv.next324.2
  store i32 %163, ptr %164, align 4, !tbaa !5
  %indvars.iv.next324.3 = add nuw nsw i64 %indvars.iv323, 4
  %exitcond327.not.3 = icmp eq i64 %indvars.iv.next324.3, %wide.trip.count326
  br i1 %exitcond327.not.3, label %.preheader285, label %scalar.ph, !llvm.loop !44

._crit_edge296:                                   ; preds = %195, %.preheader285
  %.0200.lcssa = phi i32 [ %93, %.preheader285 ], [ %.1201, %195 ]
  %165 = load i32, ptr %6, align 4, !tbaa !5
  %166 = add nsw i32 %.0200.lcssa, 1
  %167 = sext i32 %.0200.lcssa to i64
  %168 = getelementptr inbounds i32, ptr %121, i64 %167
  store i32 %165, ptr %168, align 4, !tbaa !5
  %169 = getelementptr inbounds i8, ptr %0, i64 16
  %170 = load ptr, ptr %169, align 8, !tbaa !45
  %171 = load ptr, ptr %170, align 8, !tbaa !46
  %172 = getelementptr i8, ptr %171, i64 -24
  %173 = load i64, ptr %172, align 8
  %174 = getelementptr inbounds i8, ptr %170, i64 %173
  %175 = load ptr, ptr %174, align 8, !tbaa !46
  %176 = getelementptr inbounds i8, ptr %175, i64 112
  %177 = load ptr, ptr %176, align 8
  %178 = call noundef i32 %177(ptr noundef nonnull align 8 dereferenceable(12) %174, i32 noundef %166, ptr noundef nonnull %121, i32 noundef 1, ptr noundef nonnull %6, i32 noundef 0, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull %116, ptr noundef nonnull %117, ptr noundef nonnull %120, i32 noundef 0)
  %179 = load i32, ptr %13, align 4, !tbaa !5
  %180 = icmp sgt i32 %179, 0
  br i1 %180, label %.lr.ph302.preheader, label %.loopexit

.lr.ph302.preheader:                              ; preds = %._crit_edge296
  %wide.trip.count336 = zext nneg i32 %179 to i64
  br label %.lr.ph302

181:                                              ; preds = %.lr.ph295, %195
  %indvars.iv328 = phi i64 [ 0, %.lr.ph295 ], [ %indvars.iv.next329, %195 ]
  %.0200293 = phi i32 [ %93, %.lr.ph295 ], [ %.1201, %195 ]
  %182 = getelementptr inbounds i32, ptr %150, i64 %indvars.iv328
  %183 = load i32, ptr %182, align 4, !tbaa !32
  %184 = icmp eq i32 %183, 1
  br i1 %184, label %185, label %195

185:                                              ; preds = %181
  %186 = getelementptr inbounds i32, ptr %152, i64 %indvars.iv328
  %187 = load i32, ptr %186, align 4, !tbaa !5
  %188 = sext i32 %.0200293 to i64
  %189 = getelementptr inbounds i32, ptr %121, i64 %188
  store i32 %187, ptr %189, align 4, !tbaa !5
  %190 = sub nsw i32 %.0200293, %93
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds i32, ptr %127, i64 %191
  %193 = trunc nuw nsw i64 %indvars.iv328 to i32
  store i32 %193, ptr %192, align 4, !tbaa !5
  %194 = add nsw i32 %.0200293, 1
  br label %195

195:                                              ; preds = %181, %185
  %.1201 = phi i32 [ %194, %185 ], [ %.0200293, %181 ]
  %indvars.iv.next329 = add nuw nsw i64 %indvars.iv328, 1
  %exitcond332.not = icmp eq i64 %indvars.iv.next329, %wide.trip.count331
  br i1 %exitcond332.not, label %._crit_edge296, label %181, !llvm.loop !48

.lr.ph302:                                        ; preds = %.lr.ph302.preheader, %222
  %indvars.iv333 = phi i64 [ 0, %.lr.ph302.preheader ], [ %indvars.iv.next334, %222 ]
  %.0214299 = phi double [ %129, %.lr.ph302.preheader ], [ %.1215, %222 ]
  %.0217298 = phi i32 [ 0, %.lr.ph302.preheader ], [ %.1218, %222 ]
  %.0222297 = phi i32 [ 0, %.lr.ph302.preheader ], [ %.1223, %222 ]
  %196 = getelementptr inbounds i32, ptr %116, i64 %indvars.iv333
  %197 = load i32, ptr %196, align 4, !tbaa !5
  %198 = icmp slt i32 %197, %93
  br i1 %198, label %199, label %206

199:                                              ; preds = %.lr.ph302
  %200 = sext i32 %.0217298 to i64
  %201 = getelementptr inbounds i32, ptr %105, i64 %200
  store i32 %197, ptr %201, align 4, !tbaa !5
  %202 = getelementptr inbounds double, ptr %120, i64 %indvars.iv333
  %203 = load double, ptr %202, align 8, !tbaa !49
  %204 = getelementptr inbounds double, ptr %108, i64 %200
  store double %203, ptr %204, align 8, !tbaa !49
  %205 = add nsw i32 %.0217298, 1
  br label %222

206:                                              ; preds = %.lr.ph302
  %.not241 = icmp eq i32 %197, %.0200.lcssa
  br i1 %.not241, label %218, label %207

207:                                              ; preds = %206
  %208 = sub nsw i32 %197, %93
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds i32, ptr %127, i64 %209
  %211 = load i32, ptr %210, align 4, !tbaa !5
  %212 = sext i32 %.0222297 to i64
  %213 = getelementptr inbounds i32, ptr %109, i64 %212
  store i32 %211, ptr %213, align 4, !tbaa !5
  %214 = getelementptr inbounds double, ptr %120, i64 %indvars.iv333
  %215 = load double, ptr %214, align 8, !tbaa !49
  %216 = getelementptr inbounds double, ptr %110, i64 %212
  store double %215, ptr %216, align 8, !tbaa !49
  %217 = add nsw i32 %.0222297, 1
  br label %222

218:                                              ; preds = %206
  %219 = getelementptr inbounds double, ptr %120, i64 %indvars.iv333
  %220 = load double, ptr %219, align 8, !tbaa !49
  %221 = fadd double %.0214299, %220
  br label %222

222:                                              ; preds = %199, %218, %207
  %.1223 = phi i32 [ %.0222297, %199 ], [ %217, %207 ], [ %.0222297, %218 ]
  %.1218 = phi i32 [ %205, %199 ], [ %.0217298, %207 ], [ %.0217298, %218 ]
  %.1215 = phi double [ %.0214299, %199 ], [ %.0214299, %207 ], [ %221, %218 ]
  %indvars.iv.next334 = add nuw nsw i64 %indvars.iv333, 1
  %exitcond337.not = icmp eq i64 %indvars.iv.next334, %wide.trip.count336
  br i1 %exitcond337.not, label %.loopexit, label %.lr.ph302, !llvm.loop !50

.loopexit:                                        ; preds = %222, %._crit_edge296, %91, %146
  %.2224 = phi i32 [ 0, %146 ], [ %131, %91 ], [ 0, %._crit_edge296 ], [ %.1223, %222 ]
  %.2219 = phi i32 [ 0, %146 ], [ %131, %91 ], [ 0, %._crit_edge296 ], [ %.1218, %222 ]
  %.2216 = phi double [ %147, %146 ], [ %129, %91 ], [ %129, %._crit_edge296 ], [ %.1215, %222 ]
  %223 = getelementptr inbounds i8, ptr %0, i64 1000
  %224 = load ptr, ptr %223, align 8, !tbaa !51
  %.not239 = icmp eq ptr %224, null
  br i1 %.not239, label %.preheader284, label %239

.preheader284:                                    ; preds = %.loopexit
  %225 = icmp sgt i32 %95, 0
  br i1 %225, label %.lr.ph307, label %.preheader

.lr.ph307:                                        ; preds = %.preheader284
  %226 = load ptr, ptr %12, align 8, !tbaa !38
  %wide.trip.count341 = zext nneg i32 %95 to i64
  %min.iters.check376 = icmp ult i32 %95, 8
  %227 = ptrtoint ptr %226 to i64
  %228 = sub i64 %122, %227
  %diff.check373 = icmp ult i64 %228, 32
  %or.cond390 = select i1 %min.iters.check376, i1 true, i1 %diff.check373
  br i1 %or.cond390, label %scalar.ph375.preheader, label %vector.ph377

scalar.ph375.preheader:                           ; preds = %middle.block374, %.lr.ph307
  %indvars.iv338.ph = phi i64 [ 0, %.lr.ph307 ], [ %n.vec379, %middle.block374 ]
  %xtraiter392 = and i64 %wide.trip.count341, 3
  %lcmp.mod393.not = icmp eq i64 %xtraiter392, 0
  br i1 %lcmp.mod393.not, label %scalar.ph375.prol.loopexit, label %scalar.ph375.prol

scalar.ph375.prol:                                ; preds = %scalar.ph375.preheader, %scalar.ph375.prol
  %indvars.iv338.prol = phi i64 [ %indvars.iv.next339.prol, %scalar.ph375.prol ], [ %indvars.iv338.ph, %scalar.ph375.preheader ]
  %prol.iter394 = phi i64 [ %prol.iter394.next, %scalar.ph375.prol ], [ 0, %scalar.ph375.preheader ]
  %229 = getelementptr inbounds i32, ptr %226, i64 %indvars.iv338.prol
  %230 = load i32, ptr %229, align 4, !tbaa !5
  %231 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv338.prol
  store i32 %230, ptr %231, align 4, !tbaa !5
  %indvars.iv.next339.prol = add nuw nsw i64 %indvars.iv338.prol, 1
  %prol.iter394.next = add i64 %prol.iter394, 1
  %prol.iter394.cmp.not = icmp eq i64 %prol.iter394.next, %xtraiter392
  br i1 %prol.iter394.cmp.not, label %scalar.ph375.prol.loopexit, label %scalar.ph375.prol, !llvm.loop !52

scalar.ph375.prol.loopexit:                       ; preds = %scalar.ph375.prol, %scalar.ph375.preheader
  %indvars.iv338.unr = phi i64 [ %indvars.iv338.ph, %scalar.ph375.preheader ], [ %indvars.iv.next339.prol, %scalar.ph375.prol ]
  %232 = sub nsw i64 %indvars.iv338.ph, %wide.trip.count341
  %233 = icmp ugt i64 %232, -4
  br i1 %233, label %.preheader, label %scalar.ph375

vector.ph377:                                     ; preds = %.lr.ph307
  %n.vec379 = and i64 %wide.trip.count341, 2147483640
  br label %vector.body381

vector.body381:                                   ; preds = %vector.body381, %vector.ph377
  %index382 = phi i64 [ 0, %vector.ph377 ], [ %index.next385, %vector.body381 ]
  %234 = getelementptr inbounds i32, ptr %226, i64 %index382
  %235 = getelementptr inbounds i8, ptr %234, i64 16
  %wide.load383 = load <4 x i32>, ptr %234, align 4, !tbaa !5
  %wide.load384 = load <4 x i32>, ptr %235, align 4, !tbaa !5
  %236 = getelementptr inbounds i32, ptr %121, i64 %index382
  %237 = getelementptr inbounds i8, ptr %236, i64 16
  store <4 x i32> %wide.load383, ptr %236, align 4, !tbaa !5
  store <4 x i32> %wide.load384, ptr %237, align 4, !tbaa !5
  %index.next385 = add nuw i64 %index382, 8
  %238 = icmp eq i64 %index.next385, %n.vec379
  br i1 %238, label %middle.block374, label %vector.body381, !llvm.loop !53

middle.block374:                                  ; preds = %vector.body381
  %cmp.n386 = icmp eq i64 %n.vec379, %wide.trip.count341
  br i1 %cmp.n386, label %.preheader, label %scalar.ph375.preheader

239:                                              ; preds = %.loopexit
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.17)
  %240 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %241 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %240, i32 noundef 11, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1958, i32 noundef 1)
  br label %.thread273

.preheader:                                       ; preds = %scalar.ph375.prol.loopexit, %scalar.ph375, %middle.block374, %.preheader284
  %242 = load i32, ptr %48, align 8, !tbaa !30
  %243 = icmp sgt i32 %242, 0
  br i1 %243, label %.lr.ph310, label %._crit_edge311

.lr.ph310:                                        ; preds = %.preheader
  %244 = getelementptr inbounds i8, ptr %0, i64 1136
  %245 = load ptr, ptr %244, align 8, !tbaa !31
  %246 = getelementptr inbounds i8, ptr %0, i64 1128
  %247 = load ptr, ptr %246, align 8
  %wide.trip.count346 = zext nneg i32 %242 to i64
  br label %268

scalar.ph375:                                     ; preds = %scalar.ph375.prol.loopexit, %scalar.ph375
  %indvars.iv338 = phi i64 [ %indvars.iv.next339.3, %scalar.ph375 ], [ %indvars.iv338.unr, %scalar.ph375.prol.loopexit ]
  %248 = getelementptr inbounds i32, ptr %226, i64 %indvars.iv338
  %249 = load i32, ptr %248, align 4, !tbaa !5
  %250 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv338
  store i32 %249, ptr %250, align 4, !tbaa !5
  %indvars.iv.next339 = add nuw nsw i64 %indvars.iv338, 1
  %251 = getelementptr inbounds i32, ptr %226, i64 %indvars.iv.next339
  %252 = load i32, ptr %251, align 4, !tbaa !5
  %253 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv.next339
  store i32 %252, ptr %253, align 4, !tbaa !5
  %indvars.iv.next339.1 = add nuw nsw i64 %indvars.iv338, 2
  %254 = getelementptr inbounds i32, ptr %226, i64 %indvars.iv.next339.1
  %255 = load i32, ptr %254, align 4, !tbaa !5
  %256 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv.next339.1
  store i32 %255, ptr %256, align 4, !tbaa !5
  %indvars.iv.next339.2 = add nuw nsw i64 %indvars.iv338, 3
  %257 = getelementptr inbounds i32, ptr %226, i64 %indvars.iv.next339.2
  %258 = load i32, ptr %257, align 4, !tbaa !5
  %259 = getelementptr inbounds i32, ptr %121, i64 %indvars.iv.next339.2
  store i32 %258, ptr %259, align 4, !tbaa !5
  %indvars.iv.next339.3 = add nuw nsw i64 %indvars.iv338, 4
  %exitcond342.not.3 = icmp eq i64 %indvars.iv.next339.3, %wide.trip.count341
  br i1 %exitcond342.not.3, label %.preheader, label %scalar.ph375, !llvm.loop !54

._crit_edge311:                                   ; preds = %282, %.preheader
  %.2202.lcssa = phi i32 [ %95, %.preheader ], [ %.3203, %282 ]
  %260 = getelementptr inbounds i8, ptr %0, i64 808
  %261 = load ptr, ptr %260, align 8, !tbaa !55
  %262 = load ptr, ptr %261, align 8, !tbaa !46
  %263 = getelementptr inbounds i8, ptr %262, i64 112
  %264 = load ptr, ptr %263, align 8
  %265 = call noundef i32 %264(ptr noundef nonnull align 8 dereferenceable(12) %261, i32 noundef %.2202.lcssa, ptr noundef nonnull %121, i32 noundef 1, ptr noundef nonnull %6, i32 noundef 0, i32 noundef 0, ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull %116, ptr noundef nonnull %117, ptr noundef nonnull %120, i32 noundef 0)
  %266 = load i32, ptr %13, align 4, !tbaa !5
  %267 = icmp sgt i32 %266, 0
  br i1 %267, label %.lr.ph317.preheader, label %._crit_edge318

.lr.ph317.preheader:                              ; preds = %._crit_edge311
  %wide.trip.count351 = zext nneg i32 %266 to i64
  br label %.lr.ph317

268:                                              ; preds = %.lr.ph310, %282
  %indvars.iv343 = phi i64 [ 0, %.lr.ph310 ], [ %indvars.iv.next344, %282 ]
  %.2202308 = phi i32 [ %95, %.lr.ph310 ], [ %.3203, %282 ]
  %269 = getelementptr inbounds i32, ptr %245, i64 %indvars.iv343
  %270 = load i32, ptr %269, align 4, !tbaa !32
  %271 = icmp eq i32 %270, 2
  br i1 %271, label %272, label %282

272:                                              ; preds = %268
  %273 = getelementptr inbounds i32, ptr %247, i64 %indvars.iv343
  %274 = load i32, ptr %273, align 4, !tbaa !5
  %275 = sext i32 %.2202308 to i64
  %276 = getelementptr inbounds i32, ptr %121, i64 %275
  store i32 %274, ptr %276, align 4, !tbaa !5
  %277 = sub nsw i32 %.2202308, %95
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds i32, ptr %127, i64 %278
  %280 = trunc nuw nsw i64 %indvars.iv343 to i32
  store i32 %280, ptr %279, align 4, !tbaa !5
  %281 = add nsw i32 %.2202308, 1
  br label %282

282:                                              ; preds = %268, %272
  %.3203 = phi i32 [ %281, %272 ], [ %.2202308, %268 ]
  %indvars.iv.next344 = add nuw nsw i64 %indvars.iv343, 1
  %exitcond347.not = icmp eq i64 %indvars.iv.next344, %wide.trip.count346
  br i1 %exitcond347.not, label %._crit_edge311, label %268, !llvm.loop !56

.lr.ph317:                                        ; preds = %.lr.ph317.preheader, %305
  %indvars.iv348 = phi i64 [ 0, %.lr.ph317.preheader ], [ %indvars.iv.next349, %305 ]
  %.3220314 = phi i32 [ %.2219, %.lr.ph317.preheader ], [ %.4221, %305 ]
  %.3225313 = phi i32 [ %.2224, %.lr.ph317.preheader ], [ %.4226, %305 ]
  %283 = getelementptr inbounds i32, ptr %116, i64 %indvars.iv348
  %284 = load i32, ptr %283, align 4, !tbaa !5
  %285 = icmp slt i32 %284, %95
  br i1 %285, label %286, label %294

286:                                              ; preds = %.lr.ph317
  %287 = add nsw i32 %284, %93
  %288 = sext i32 %.3220314 to i64
  %289 = getelementptr inbounds i32, ptr %105, i64 %288
  store i32 %287, ptr %289, align 4, !tbaa !5
  %290 = getelementptr inbounds double, ptr %120, i64 %indvars.iv348
  %291 = load double, ptr %290, align 8, !tbaa !49
  %292 = getelementptr inbounds double, ptr %108, i64 %288
  store double %291, ptr %292, align 8, !tbaa !49
  %293 = add nsw i32 %.3220314, 1
  br label %305

294:                                              ; preds = %.lr.ph317
  %295 = sub nsw i32 %284, %95
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds i32, ptr %127, i64 %296
  %298 = load i32, ptr %297, align 4, !tbaa !5
  %299 = sext i32 %.3225313 to i64
  %300 = getelementptr inbounds i32, ptr %109, i64 %299
  store i32 %298, ptr %300, align 4, !tbaa !5
  %301 = getelementptr inbounds double, ptr %120, i64 %indvars.iv348
  %302 = load double, ptr %301, align 8, !tbaa !49
  %303 = getelementptr inbounds double, ptr %110, i64 %299
  store double %302, ptr %303, align 8, !tbaa !49
  %304 = add nsw i32 %.3225313, 1
  br label %305

305:                                              ; preds = %286, %294
  %.4226 = phi i32 [ %.3225313, %286 ], [ %304, %294 ]
  %.4221 = phi i32 [ %293, %286 ], [ %.3220314, %294 ]
  %indvars.iv.next349 = add nuw nsw i64 %indvars.iv348, 1
  %exitcond352.not = icmp eq i64 %indvars.iv.next349, %wide.trip.count351
  br i1 %exitcond352.not, label %._crit_edge318, label %.lr.ph317, !llvm.loop !57

._crit_edge318:                                   ; preds = %305, %._crit_edge311
  %.3225.lcssa = phi i32 [ %.2224, %._crit_edge311 ], [ %.4226, %305 ]
  %.3220.lcssa = phi i32 [ %.2219, %._crit_edge311 ], [ %.4221, %305 ]
  call void @_ZdaPv(ptr noundef nonnull %127) #10
  call void @_ZdaPv(ptr noundef nonnull %121) #10
  call void @_ZdaPv(ptr noundef nonnull %120) #10
  call void @_ZdaPv(ptr noundef nonnull %117) #10
  call void @_ZdaPv(ptr noundef nonnull %116) #10
  %306 = load i32, ptr %6, align 4, !tbaa !5
  %307 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20addToSchurComplementEiNS_15SchurUpdateTypeEiPKiPKdiS3_S5_d(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %306, i32 noundef 1, i32 noundef %.3220.lcssa, ptr noundef nonnull %105, ptr noundef nonnull %108, i32 noundef %.3225.lcssa, ptr noundef nonnull %109, ptr noundef nonnull %110, double noundef %.2216)
  call void @_ZdaPv(ptr noundef nonnull %108) #10
  call void @_ZdaPv(ptr noundef nonnull %105) #10
  call void @_ZdaPv(ptr noundef nonnull %110) #10
  call void @_ZdaPv(ptr noundef nonnull %109) #10
  %.not240 = icmp eq i32 %307, 0
  br i1 %.not240, label %311, label %308

308:                                              ; preds = %._crit_edge318
  %309 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %310 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %309, i32 noundef 81, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2004, i32 noundef 1)
  br label %.thread273

.thread273:                                       ; preds = %239, %308
  %.2.ph = phi i32 [ %310, %308 ], [ %241, %239 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %.thread279

311:                                              ; preds = %._crit_edge318
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %.thread263

.thread263:                                       ; preds = %78, %67, %311
  %.0199.ph267 = phi i32 [ -1, %311 ], [ %68, %67 ], [ -1, %78 ]
  %.3198 = phi i32 [ 1, %311 ], [ 2, %67 ], [ 3, %78 ]
  %312 = getelementptr inbounds i8, ptr %0, i64 272
  %313 = getelementptr inbounds i8, ptr %0, i64 284
  %314 = load i32, ptr %313, align 4, !tbaa !58
  %315 = icmp eq i32 %314, 1
  %316 = icmp eq i32 %3, 1
  %or.cond = and i1 %316, %315
  %317 = load i32, ptr %10, align 4
  %318 = icmp eq i32 %317, 0
  %or.cond7 = select i1 %or.cond, i1 %318, i1 false
  br i1 %or.cond7, label %319, label %426

319:                                              ; preds = %.thread263
  switch i32 %.3198, label %default.unreachable354 [
    i32 1, label %320
    i32 2, label %357
    i32 3, label %393
  ]

320:                                              ; preds = %319
  %321 = call noundef double @_ZN7qpOASES14SQProblemSchur12calcDetSchurEi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0199.ph267)
  %322 = fmul double %43, %321
  %323 = fcmp ogt double %322, 0.000000e+00
  br i1 %323, label %324, label %355

324:                                              ; preds = %320
  %325 = getelementptr inbounds i8, ptr %0, i64 220
  store i32 4, ptr %325, align 4, !tbaa !37
  %326 = load i32, ptr %48, align 8, !tbaa !30
  %327 = add nsw i32 %326, -1
  store i32 %327, ptr %48, align 8, !tbaa !30
  %328 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %328, ptr %45, align 8, !tbaa !59
  %329 = getelementptr inbounds i8, ptr %0, i64 784
  store i32 2, ptr %329, align 8, !tbaa !60
  switch i32 %41, label %352 [
    i32 -1, label %330
    i32 1, label %341
  ]

330:                                              ; preds = %324
  %331 = call noundef i32 @_ZN7qpOASES6Bounds15moveFreeToFixedEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %14, i32 noundef %328, i32 noundef 1)
  %332 = getelementptr inbounds i8, ptr %0, i64 32
  %333 = load ptr, ptr %332, align 8, !tbaa !61
  %334 = load i32, ptr %6, align 4, !tbaa !5
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds double, ptr %333, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !49
  %338 = getelementptr inbounds i8, ptr %0, i64 40
  %339 = load ptr, ptr %338, align 8, !tbaa !62
  %340 = getelementptr inbounds double, ptr %339, i64 %335
  store double %337, ptr %340, align 8, !tbaa !49
  br label %428

341:                                              ; preds = %324
  %342 = call noundef i32 @_ZN7qpOASES6Bounds15moveFreeToFixedEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %14, i32 noundef %328, i32 noundef -1)
  %343 = getelementptr inbounds i8, ptr %0, i64 40
  %344 = load ptr, ptr %343, align 8, !tbaa !62
  %345 = load i32, ptr %6, align 4, !tbaa !5
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %344, i64 %346
  %348 = load double, ptr %347, align 8, !tbaa !49
  %349 = getelementptr inbounds i8, ptr %0, i64 32
  %350 = load ptr, ptr %349, align 8, !tbaa !61
  %351 = getelementptr inbounds double, ptr %350, i64 %346
  store double %348, ptr %351, align 8, !tbaa !49
  br label %428

352:                                              ; preds = %324
  %353 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %354 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %353, i32 noundef 25, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2046, i32 noundef 1)
  br label %.thread279

355:                                              ; preds = %320
  %356 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0199.ph267)
  br label %428

357:                                              ; preds = %319
  %358 = call noundef double @_ZN7qpOASES14SQProblemSchur12calcDetSchurEi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0199.ph267)
  %359 = fmul double %43, %358
  %360 = fcmp olt double %359, 0.000000e+00
  br i1 %360, label %361, label %391

361:                                              ; preds = %357
  %362 = getelementptr inbounds i8, ptr %0, i64 220
  store i32 4, ptr %362, align 4, !tbaa !37
  %363 = call noundef i32 @_ZN7qpOASES14SQProblemSchur29undoDeleteFromSchurComplementEi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0199.ph267)
  %364 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %364, ptr %45, align 8, !tbaa !59
  %365 = getelementptr inbounds i8, ptr %0, i64 784
  store i32 2, ptr %365, align 8, !tbaa !60
  switch i32 %41, label %388 [
    i32 -1, label %366
    i32 1, label %377
  ]

366:                                              ; preds = %361
  %367 = call noundef i32 @_ZN7qpOASES6Bounds15moveFreeToFixedEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %14, i32 noundef %364, i32 noundef 1)
  %368 = getelementptr inbounds i8, ptr %0, i64 32
  %369 = load ptr, ptr %368, align 8, !tbaa !61
  %370 = load i32, ptr %6, align 4, !tbaa !5
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds double, ptr %369, i64 %371
  %373 = load double, ptr %372, align 8, !tbaa !49
  %374 = getelementptr inbounds i8, ptr %0, i64 40
  %375 = load ptr, ptr %374, align 8, !tbaa !62
  %376 = getelementptr inbounds double, ptr %375, i64 %371
  store double %373, ptr %376, align 8, !tbaa !49
  br label %428

377:                                              ; preds = %361
  %378 = call noundef i32 @_ZN7qpOASES6Bounds15moveFreeToFixedEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %14, i32 noundef %364, i32 noundef -1)
  %379 = getelementptr inbounds i8, ptr %0, i64 40
  %380 = load ptr, ptr %379, align 8, !tbaa !62
  %381 = load i32, ptr %6, align 4, !tbaa !5
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds double, ptr %380, i64 %382
  %384 = load double, ptr %383, align 8, !tbaa !49
  %385 = getelementptr inbounds i8, ptr %0, i64 32
  %386 = load ptr, ptr %385, align 8, !tbaa !61
  %387 = getelementptr inbounds double, ptr %386, i64 %382
  store double %384, ptr %387, align 8, !tbaa !49
  br label %428

388:                                              ; preds = %361
  %389 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %390 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %389, i32 noundef 25, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2081, i32 noundef 1)
  br label %.thread279

391:                                              ; preds = %357
  %392 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0199.ph267)
  br label %428

393:                                              ; preds = %319
  %394 = getelementptr inbounds i8, ptr %0, i64 1064
  %395 = load ptr, ptr %394, align 8, !tbaa !63
  %396 = load ptr, ptr %395, align 8, !tbaa !46
  %397 = getelementptr inbounds i8, ptr %396, i64 56
  %398 = load ptr, ptr %397, align 8
  %399 = call noundef i32 %398(ptr noundef nonnull align 8 dereferenceable(8) %395)
  %400 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %401 = icmp sgt i32 %399, %400
  br i1 %401, label %402, label %421

402:                                              ; preds = %393
  %403 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %403, ptr %45, align 8, !tbaa !59
  %404 = getelementptr inbounds i8, ptr %0, i64 784
  store i32 2, ptr %404, align 8, !tbaa !60
  switch i32 %41, label %406 [
    i32 -1, label %.sink.split
    i32 1, label %405
  ]

405:                                              ; preds = %402
  br label %.sink.split

406:                                              ; preds = %402
  %407 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %408 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %407, i32 noundef 25, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2110, i32 noundef 1)
  br label %.thread279

.sink.split:                                      ; preds = %402, %405
  %.sink369 = phi i64 [ 40, %405 ], [ 32, %402 ]
  %.sink364 = phi i64 [ 32, %405 ], [ 40, %402 ]
  %.sink = phi i32 [ -1, %405 ], [ 1, %402 ]
  %409 = getelementptr inbounds i8, ptr %0, i64 %.sink369
  %410 = load ptr, ptr %409, align 8, !tbaa !38
  %411 = sext i32 %403 to i64
  %412 = getelementptr inbounds double, ptr %410, i64 %411
  %413 = load double, ptr %412, align 8, !tbaa !49
  %414 = getelementptr inbounds i8, ptr %0, i64 %.sink364
  %415 = load ptr, ptr %414, align 8, !tbaa !38
  %416 = getelementptr inbounds double, ptr %415, i64 %411
  store double %413, ptr %416, align 8, !tbaa !49
  %417 = load ptr, ptr %0, align 8, !tbaa !46
  %418 = getelementptr inbounds i8, ptr %417, i64 224
  %419 = load ptr, ptr %418, align 8
  %420 = call noundef i32 %419(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %403, i32 noundef %.sink, i32 noundef 1, i32 noundef 0)
  br label %421

421:                                              ; preds = %.sink.split, %393
  %422 = call noundef i32 @_ZN7qpOASES14SQProblemSchur14correctInertiaEv(ptr noundef nonnull align 8 dereferenceable(1256) %0)
  %.not243 = icmp eq i32 %422, 0
  br i1 %.not243, label %428, label %423

423:                                              ; preds = %421
  %424 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %425 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %424, i32 noundef 81, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2116, i32 noundef 1)
  br label %.thread279

default.unreachable354:                           ; preds = %319
  unreachable

426:                                              ; preds = %.thread263
  %427 = call noundef i32 @_ZN7qpOASES14SQProblemSchur13updateSchurQREi(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %.0199.ph267)
  br label %428

428:                                              ; preds = %421, %330, %341, %355, %391, %377, %366, %426
  %429 = getelementptr inbounds i8, ptr %0, i64 1112
  %430 = load double, ptr %429, align 8, !tbaa !64
  %431 = getelementptr inbounds i8, ptr %0, i64 464
  %432 = load double, ptr %431, align 8, !tbaa !65
  %433 = fcmp olt double %430, %432
  br i1 %433, label %434, label %.thread282

434:                                              ; preds = %428
  %435 = call noundef i32 @_ZN7qpOASES14SQProblemSchur20resetSchurComplementENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef 1)
  %.not244 = icmp eq i32 %435, 0
  br i1 %.not244, label %.thread282, label %436

436:                                              ; preds = %434
  %437 = icmp eq i32 %435, 142
  %438 = load i32, ptr %312, align 8
  %439 = icmp eq i32 %438, 3
  %or.cond253 = select i1 %437, i1 %439, i1 false
  br i1 %or.cond253, label %440, label %441

440:                                              ; preds = %436
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.15)
  br label %443

441:                                              ; preds = %436
  br i1 %439, label %442, label %443

442:                                              ; preds = %441
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.16, i32 noundef %435)
  br label %443

443:                                              ; preds = %440, %442, %441
  %444 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %445 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %444, i32 noundef 76, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2138, i32 noundef 1)
  br label %.thread279

.thread282:                                       ; preds = %434, %428
  %446 = load i32, ptr %10, align 4, !tbaa !9
  %447 = icmp eq i32 %446, 1
  br i1 %447, label %448, label %.thread279

448:                                              ; preds = %.thread282
  %449 = load i32, ptr %8, align 4, !tbaa !9
  %.not245 = icmp eq i32 %449, 0
  %450 = load i32, ptr %7, align 4, !tbaa !5
  %451 = load i32, ptr %9, align 4, !tbaa !66
  %452 = load ptr, ptr %0, align 8, !tbaa !46
  br i1 %.not245, label %458, label %453

453:                                              ; preds = %448
  %454 = getelementptr inbounds i8, ptr %452, i64 224
  %455 = load ptr, ptr %454, align 8
  %456 = call noundef i32 %455(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %450, i32 noundef %451, i32 noundef 1, i32 noundef 0)
  %457 = getelementptr inbounds i8, ptr %0, i64 784
  store i32 1, ptr %457, align 8, !tbaa !60
  br label %.thread279

458:                                              ; preds = %448
  %459 = getelementptr inbounds i8, ptr %452, i64 200
  %460 = load ptr, ptr %459, align 8
  %461 = call noundef i32 %460(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %450, i32 noundef %451, i32 noundef 1, i32 noundef 0)
  %462 = getelementptr inbounds i8, ptr %0, i64 792
  store i32 1, ptr %462, align 8, !tbaa !67
  br label %.thread279

.thread279:                                       ; preds = %423, %406, %443, %.thread273, %88, %71, %352, %388, %453, %458, %.thread282, %37, %56, %32, %17
  %.8 = phi i32 [ %19, %17 ], [ %34, %32 ], [ %58, %56 ], [ %38, %37 ], [ %354, %352 ], [ %445, %443 ], [ %390, %388 ], [ %90, %88 ], [ %73, %71 ], [ 0, %453 ], [ 0, %458 ], [ 0, %.thread282 ], [ %.2.ph, %.thread273 ], [ %425, %423 ], [ %408, %406 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #8
  ret i32 %.8
}

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

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

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


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