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

; 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::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 }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES8QProblem22ensureNonzeroCurvatureENS_11BooleanTypeEiRS1_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1, i32 noundef %2, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 4 dereferenceable(4) %6) #7 align 2 {
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %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 i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca i32, align 4
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca ptr, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store i32 %1, ptr %9, align 4, !tbaa !9
  store i32 %2, ptr %10, align 4, !tbaa !11
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  %59 = load ptr, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  store i32 -1, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  store i32 -1, ptr %18, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  store i32 -1, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  store i32 -1, ptr %20, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #9
  store i32 0, ptr %24, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #9
  %60 = call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %59)
  store i32 %60, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  %61 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFREv(ptr noundef nonnull align 8 dereferenceable(800) %59)
  store i32 %61, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  %62 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %59)
  store i32 %62, ptr %27, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  %63 = call noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064) %59)
  store i32 %63, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  %64 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFXEv(ptr noundef nonnull align 8 dereferenceable(800) %59)
  store i32 %64, ptr %29, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  %65 = call noundef i32 @_ZNK7qpOASES8QProblem7getNIACEv(ptr noundef nonnull align 8 dereferenceable(1064) %59)
  store i32 %65, ptr %30, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %66 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 6
  %67 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %66)
  %68 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %67, ptr noundef %31)
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %69 = load i32, ptr %29, align 4, !tbaa !11
  %70 = sext i32 %69 to i64
  %71 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %70, i64 8)
  %72 = extractvalue { i64, i1 } %71, 1
  %73 = extractvalue { i64, i1 } %71, 0
  %74 = select i1 %72, i64 -1, i64 %73
  %75 = call noalias noundef nonnull ptr @_Znam(i64 noundef %74) #10
  store ptr %75, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %76 = load i32, ptr %26, align 4, !tbaa !11
  %77 = sext i32 %76 to i64
  %78 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %77, i64 8)
  %79 = extractvalue { i64, i1 } %78, 1
  %80 = extractvalue { i64, i1 } %78, 0
  %81 = select i1 %79, i64 -1, i64 %80
  %82 = call noalias noundef nonnull ptr @_Znam(i64 noundef %81) #10
  store ptr %82, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %83 = load i32, ptr %27, align 4, !tbaa !11
  %84 = sext i32 %83 to i64
  %85 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %84, i64 8)
  %86 = extractvalue { i64, i1 } %85, 1
  %87 = extractvalue { i64, i1 } %85, 0
  %88 = select i1 %86, i64 -1, i64 %87
  %89 = call noalias noundef nonnull ptr @_Znam(i64 noundef %88) #10
  store ptr %89, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %90 = load i32, ptr %29, align 4, !tbaa !11
  %91 = sext i32 %90 to i64
  %92 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %91, i64 8)
  %93 = extractvalue { i64, i1 } %92, 1
  %94 = extractvalue { i64, i1 } %92, 0
  %95 = select i1 %93, i64 -1, i64 %94
  %96 = call noalias noundef nonnull ptr @_Znam(i64 noundef %95) #10
  store ptr %96, ptr %35, align 8, !tbaa !5
  %97 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 6
  %98 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %97)
  %99 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %98, ptr noundef %21)
  %100 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 5
  %101 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %100)
  %102 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %101, ptr noundef %22)
  %103 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 5
  %104 = call noundef ptr @_ZN7qpOASES11Constraints11getInactiveEv(ptr noundef nonnull align 8 dereferenceable(120) %103)
  %105 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %104, ptr noundef %23)
  %106 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %106, align 4, !tbaa !9
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 0, ptr %107, align 4, !tbaa !15
  %108 = load ptr, ptr %11, align 8, !tbaa !5
  store i32 0, ptr %108, align 4, !tbaa !9
  %109 = load i32, ptr %9, align 4, !tbaa !9
  %110 = icmp ne i32 %109, 0
  br i1 %110, label %111, label %192

111:                                              ; preds = %7
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #9
  %112 = load i32, ptr %25, align 4, !tbaa !11
  %113 = load i32, ptr %28, align 4, !tbaa !11
  %114 = icmp slt i32 %112, %113
  br i1 %114, label %115, label %117

115:                                              ; preds = %111
  %116 = load i32, ptr %28, align 4, !tbaa !11
  br label %119

117:                                              ; preds = %111
  %118 = load i32, ptr %25, align 4, !tbaa !11
  br label %119

119:                                              ; preds = %117, %115
  %120 = phi i32 [ %116, %115 ], [ %118, %117 ]
  store i32 %120, ptr %36, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %121 = load i32, ptr %36, align 4, !tbaa !11
  %122 = sext i32 %121 to i64
  %123 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %122, i64 8)
  %124 = extractvalue { i64, i1 } %123, 1
  %125 = extractvalue { i64, i1 } %123, 0
  %126 = select i1 %124, i64 -1, i64 %125
  %127 = call noalias noundef nonnull ptr @_Znam(i64 noundef %126) #10
  store ptr %127, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %128 = load i32, ptr %25, align 4, !tbaa !11
  %129 = sext i32 %128 to i64
  %130 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %129, i64 8)
  %131 = extractvalue { i64, i1 } %130, 1
  %132 = extractvalue { i64, i1 } %130, 0
  %133 = select i1 %131, i64 -1, i64 %132
  %134 = call noalias noundef nonnull ptr @_Znam(i64 noundef %133) #10
  store ptr %134, ptr %38, align 8, !tbaa !5
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %135

135:                                              ; preds = %144, %119
  %136 = load i32, ptr %16, align 4, !tbaa !11
  %137 = load i32, ptr %36, align 4, !tbaa !11
  %138 = icmp slt i32 %136, %137
  br i1 %138, label %139, label %147

139:                                              ; preds = %135
  %140 = load ptr, ptr %37, align 8, !tbaa !5
  %141 = load i32, ptr %16, align 4, !tbaa !11
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds double, ptr %140, i64 %142
  store double 0.000000e+00, ptr %143, align 8, !tbaa !17
  br label %144

144:                                              ; preds = %139
  %145 = load i32, ptr %16, align 4, !tbaa !11
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr %16, align 4, !tbaa !11
  br label %135, !llvm.loop !19

147:                                              ; preds = %135
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %148

148:                                              ; preds = %157, %147
  %149 = load i32, ptr %16, align 4, !tbaa !11
  %150 = load i32, ptr %25, align 4, !tbaa !11
  %151 = icmp slt i32 %149, %150
  br i1 %151, label %152, label %160

152:                                              ; preds = %148
  %153 = load ptr, ptr %38, align 8, !tbaa !5
  %154 = load i32, ptr %16, align 4, !tbaa !11
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds double, ptr %153, i64 %155
  store double 0.000000e+00, ptr %156, align 8, !tbaa !17
  br label %157

157:                                              ; preds = %152
  %158 = load i32, ptr %16, align 4, !tbaa !11
  %159 = add nsw i32 %158, 1
  store i32 %159, ptr %16, align 4, !tbaa !11
  br label %148, !llvm.loop !21

160:                                              ; preds = %148
  %161 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 6
  %162 = load i32, ptr %10, align 4, !tbaa !11
  %163 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %161, i32 noundef %162)
  %164 = icmp eq i32 %163, -1
  %165 = zext i1 %164 to i64
  %166 = select i1 %164, double 1.000000e+00, double -1.000000e+00
  %167 = load ptr, ptr %38, align 8, !tbaa !5
  %168 = load i32, ptr %10, align 4, !tbaa !11
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds double, ptr %167, i64 %169
  store double %166, ptr %170, align 8, !tbaa !17
  %171 = load ptr, ptr %37, align 8, !tbaa !5
  %172 = load ptr, ptr %37, align 8, !tbaa !5
  %173 = load ptr, ptr %37, align 8, !tbaa !5
  %174 = load ptr, ptr %38, align 8, !tbaa !5
  %175 = load ptr, ptr %38, align 8, !tbaa !5
  %176 = load ptr, ptr %32, align 8, !tbaa !5
  %177 = load ptr, ptr %33, align 8, !tbaa !5
  %178 = load ptr, ptr %34, align 8, !tbaa !5
  %179 = load ptr, ptr %35, align 8, !tbaa !5
  %180 = load ptr, ptr %59, align 8, !tbaa !22
  %181 = getelementptr inbounds ptr, ptr %180, i64 34
  %182 = load ptr, ptr %181, align 8
  %183 = call noundef i32 %182(ptr noundef nonnull align 8 dereferenceable(1064) %59, ptr noundef %171, ptr noundef %172, ptr noundef %173, ptr noundef %174, ptr noundef %175, i32 noundef 0, i32 noundef 0, ptr noundef %176, ptr noundef %177, ptr noundef %178, ptr noundef %179)
  store i32 %183, ptr %24, align 4, !tbaa !13
  %184 = load ptr, ptr %38, align 8, !tbaa !5
  %185 = icmp eq ptr %184, null
  br i1 %185, label %187, label %186

186:                                              ; preds = %160
  call void @_ZdaPv(ptr noundef %184) #11
  br label %187

187:                                              ; preds = %186, %160
  %188 = load ptr, ptr %37, align 8, !tbaa !5
  %189 = icmp eq ptr %188, null
  br i1 %189, label %191, label %190

190:                                              ; preds = %187
  call void @_ZdaPv(ptr noundef %188) #11
  br label %191

191:                                              ; preds = %190, %187
  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 4, ptr %36) #9
  br label %264

192:                                              ; preds = %7
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  %193 = load i32, ptr %25, align 4, !tbaa !11
  %194 = sext i32 %193 to i64
  %195 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %194, i64 8)
  %196 = extractvalue { i64, i1 } %195, 1
  %197 = extractvalue { i64, i1 } %195, 0
  %198 = select i1 %196, i64 -1, i64 %197
  %199 = call noalias noundef nonnull ptr @_Znam(i64 noundef %198) #10
  store ptr %199, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  %200 = load i32, ptr %28, align 4, !tbaa !11
  %201 = sext i32 %200 to i64
  %202 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %201, i64 8)
  %203 = extractvalue { i64, i1 } %202, 1
  %204 = extractvalue { i64, i1 } %202, 0
  %205 = select i1 %203, i64 -1, i64 %204
  %206 = call noalias noundef nonnull ptr @_Znam(i64 noundef %205) #10
  store ptr %206, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %207

207:                                              ; preds = %216, %192
  %208 = load i32, ptr %16, align 4, !tbaa !11
  %209 = load i32, ptr %25, align 4, !tbaa !11
  %210 = icmp slt i32 %208, %209
  br i1 %210, label %211, label %219

211:                                              ; preds = %207
  %212 = load ptr, ptr %39, align 8, !tbaa !5
  %213 = load i32, ptr %16, align 4, !tbaa !11
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds double, ptr %212, i64 %214
  store double 0.000000e+00, ptr %215, align 8, !tbaa !17
  br label %216

216:                                              ; preds = %211
  %217 = load i32, ptr %16, align 4, !tbaa !11
  %218 = add nsw i32 %217, 1
  store i32 %218, ptr %16, align 4, !tbaa !11
  br label %207, !llvm.loop !24

219:                                              ; preds = %207
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %220

220:                                              ; preds = %229, %219
  %221 = load i32, ptr %16, align 4, !tbaa !11
  %222 = load i32, ptr %28, align 4, !tbaa !11
  %223 = icmp slt i32 %221, %222
  br i1 %223, label %224, label %232

224:                                              ; preds = %220
  %225 = load ptr, ptr %40, align 8, !tbaa !5
  %226 = load i32, ptr %16, align 4, !tbaa !11
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds double, ptr %225, i64 %227
  store double 0.000000e+00, ptr %228, align 8, !tbaa !17
  br label %229

229:                                              ; preds = %224
  %230 = load i32, ptr %16, align 4, !tbaa !11
  %231 = add nsw i32 %230, 1
  store i32 %231, ptr %16, align 4, !tbaa !11
  br label %220, !llvm.loop !25

232:                                              ; preds = %220
  %233 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 5
  %234 = load i32, ptr %10, align 4, !tbaa !11
  %235 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %233, i32 noundef %234)
  %236 = icmp eq i32 %235, -1
  %237 = zext i1 %236 to i64
  %238 = select i1 %236, double 1.000000e+00, double -1.000000e+00
  %239 = load ptr, ptr %40, align 8, !tbaa !5
  %240 = load i32, ptr %10, align 4, !tbaa !11
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds double, ptr %239, i64 %241
  store double %238, ptr %242, align 8, !tbaa !17
  %243 = load ptr, ptr %39, align 8, !tbaa !5
  %244 = load ptr, ptr %40, align 8, !tbaa !5
  %245 = load ptr, ptr %40, align 8, !tbaa !5
  %246 = load ptr, ptr %39, align 8, !tbaa !5
  %247 = load ptr, ptr %39, align 8, !tbaa !5
  %248 = load ptr, ptr %32, align 8, !tbaa !5
  %249 = load ptr, ptr %33, align 8, !tbaa !5
  %250 = load ptr, ptr %34, align 8, !tbaa !5
  %251 = load ptr, ptr %35, align 8, !tbaa !5
  %252 = load ptr, ptr %59, align 8, !tbaa !22
  %253 = getelementptr inbounds ptr, ptr %252, i64 34
  %254 = load ptr, ptr %253, align 8
  %255 = call noundef i32 %254(ptr noundef nonnull align 8 dereferenceable(1064) %59, ptr noundef %243, ptr noundef %244, ptr noundef %245, ptr noundef %246, ptr noundef %247, i32 noundef 0, i32 noundef 1, ptr noundef %248, ptr noundef %249, ptr noundef %250, ptr noundef %251)
  store i32 %255, ptr %24, align 4, !tbaa !13
  %256 = load ptr, ptr %40, align 8, !tbaa !5
  %257 = icmp eq ptr %256, null
  br i1 %257, label %259, label %258

258:                                              ; preds = %232
  call void @_ZdaPv(ptr noundef %256) #11
  br label %259

259:                                              ; preds = %258, %232
  %260 = load ptr, ptr %39, align 8, !tbaa !5
  %261 = icmp eq ptr %260, null
  br i1 %261, label %263, label %262

262:                                              ; preds = %259
  call void @_ZdaPv(ptr noundef %260) #11
  br label %263

263:                                              ; preds = %262, %259
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %264

264:                                              ; preds = %263, %191
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  store double 0.000000e+00, ptr %41, align 8, !tbaa !17
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %265

265:                                              ; preds = %282, %264
  %266 = load i32, ptr %16, align 4, !tbaa !11
  %267 = load i32, ptr %27, align 4, !tbaa !11
  %268 = icmp slt i32 %266, %267
  br i1 %268, label %269, label %285

269:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %270 = load ptr, ptr %34, align 8, !tbaa !5
  %271 = load i32, ptr %16, align 4, !tbaa !11
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds double, ptr %270, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !17
  %275 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %274)
  store double %275, ptr %42, align 8, !tbaa !17
  %276 = load double, ptr %41, align 8, !tbaa !17
  %277 = load double, ptr %42, align 8, !tbaa !17
  %278 = fcmp olt double %276, %277
  br i1 %278, label %279, label %281

279:                                              ; preds = %269
  %280 = load double, ptr %42, align 8, !tbaa !17
  store double %280, ptr %41, align 8, !tbaa !17
  br label %281

281:                                              ; preds = %279, %269
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  br label %282

282:                                              ; preds = %281
  %283 = load i32, ptr %16, align 4, !tbaa !11
  %284 = add nsw i32 %283, 1
  store i32 %284, ptr %16, align 4, !tbaa !11
  br label %265, !llvm.loop !26

285:                                              ; preds = %265
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %286

286:                                              ; preds = %303, %285
  %287 = load i32, ptr %16, align 4, !tbaa !11
  %288 = load i32, ptr %29, align 4, !tbaa !11
  %289 = icmp slt i32 %287, %288
  br i1 %289, label %290, label %306

290:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %291 = load ptr, ptr %35, align 8, !tbaa !5
  %292 = load i32, ptr %16, align 4, !tbaa !11
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %291, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !17
  %296 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %295)
  store double %296, ptr %43, align 8, !tbaa !17
  %297 = load double, ptr %41, align 8, !tbaa !17
  %298 = load double, ptr %43, align 8, !tbaa !17
  %299 = fcmp olt double %297, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %290
  %301 = load double, ptr %43, align 8, !tbaa !17
  store double %301, ptr %41, align 8, !tbaa !17
  br label %302

302:                                              ; preds = %300, %290
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %303

303:                                              ; preds = %302
  %304 = load i32, ptr %16, align 4, !tbaa !11
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %16, align 4, !tbaa !11
  br label %286, !llvm.loop !27

306:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  store double 0.000000e+00, ptr %44, align 8, !tbaa !17
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %307

307:                                              ; preds = %324, %306
  %308 = load i32, ptr %16, align 4, !tbaa !11
  %309 = load i32, ptr %29, align 4, !tbaa !11
  %310 = icmp slt i32 %308, %309
  br i1 %310, label %311, label %327

311:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %312 = load ptr, ptr %32, align 8, !tbaa !5
  %313 = load i32, ptr %16, align 4, !tbaa !11
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %312, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !17
  %317 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %316)
  store double %317, ptr %45, align 8, !tbaa !17
  %318 = load double, ptr %44, align 8, !tbaa !17
  %319 = load double, ptr %45, align 8, !tbaa !17
  %320 = fcmp olt double %318, %319
  br i1 %320, label %321, label %323

321:                                              ; preds = %311
  %322 = load double, ptr %45, align 8, !tbaa !17
  store double %322, ptr %44, align 8, !tbaa !17
  br label %323

323:                                              ; preds = %321, %311
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %324

324:                                              ; preds = %323
  %325 = load i32, ptr %16, align 4, !tbaa !11
  %326 = add nsw i32 %325, 1
  store i32 %326, ptr %16, align 4, !tbaa !11
  br label %307, !llvm.loop !28

327:                                              ; preds = %307
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %328

328:                                              ; preds = %345, %327
  %329 = load i32, ptr %16, align 4, !tbaa !11
  %330 = load i32, ptr %26, align 4, !tbaa !11
  %331 = icmp slt i32 %329, %330
  br i1 %331, label %332, label %348

332:                                              ; preds = %328
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %333 = load ptr, ptr %33, align 8, !tbaa !5
  %334 = load i32, ptr %16, align 4, !tbaa !11
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds double, ptr %333, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !17
  %338 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %337)
  store double %338, ptr %46, align 8, !tbaa !17
  %339 = load double, ptr %44, align 8, !tbaa !17
  %340 = load double, ptr %46, align 8, !tbaa !17
  %341 = fcmp olt double %339, %340
  br i1 %341, label %342, label %344

342:                                              ; preds = %332
  %343 = load double, ptr %46, align 8, !tbaa !17
  store double %343, ptr %44, align 8, !tbaa !17
  br label %344

344:                                              ; preds = %342, %332
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %345

345:                                              ; preds = %344
  %346 = load i32, ptr %16, align 4, !tbaa !11
  %347 = add nsw i32 %346, 1
  store i32 %347, ptr %16, align 4, !tbaa !11
  br label %328, !llvm.loop !29

348:                                              ; preds = %328
  %349 = load double, ptr %41, align 8, !tbaa !17
  %350 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %351 = getelementptr inbounds %"class.qpOASES::Options", ptr %350, i32 0, i32 31
  %352 = load double, ptr %351, align 8, !tbaa !30
  %353 = load double, ptr %44, align 8, !tbaa !17
  %354 = fmul double %352, %353
  %355 = fcmp olt double %349, %354
  br i1 %355, label %356, label %919

356:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %357 = load i32, ptr %26, align 4, !tbaa !11
  %358 = call noundef i32 @_ZN7qpOASES6getMaxEii(i32 noundef 1, i32 noundef %357)
  %359 = sext i32 %358 to i64
  %360 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %359, i64 8)
  %361 = extractvalue { i64, i1 } %360, 1
  %362 = extractvalue { i64, i1 } %360, 0
  %363 = select i1 %361, i64 -1, i64 %362
  %364 = call noalias noundef nonnull ptr @_Znam(i64 noundef %363) #10
  store ptr %364, ptr %52, align 8, !tbaa !5
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %365

365:                                              ; preds = %392, %356
  %366 = load i32, ptr %15, align 4, !tbaa !11
  %367 = load i32, ptr %26, align 4, !tbaa !11
  %368 = icmp slt i32 %366, %367
  br i1 %368, label %369, label %395

369:                                              ; preds = %365
  %370 = load ptr, ptr %31, align 8, !tbaa !5
  %371 = load i32, ptr %15, align 4, !tbaa !11
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds i32, ptr %370, i64 %372
  %374 = load i32, ptr %373, align 4, !tbaa !11
  store i32 %374, ptr %16, align 4, !tbaa !11
  %375 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 5
  %376 = load ptr, ptr %375, align 8, !tbaa !42
  %377 = load i32, ptr %16, align 4, !tbaa !11
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %376, i64 %378
  %380 = load double, ptr %379, align 8, !tbaa !17
  %381 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 9
  %382 = load ptr, ptr %381, align 8, !tbaa !43
  %383 = load i32, ptr %16, align 4, !tbaa !11
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds double, ptr %382, i64 %384
  %386 = load double, ptr %385, align 8, !tbaa !17
  %387 = fsub double %380, %386
  %388 = load ptr, ptr %52, align 8, !tbaa !5
  %389 = load i32, ptr %15, align 4, !tbaa !11
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds double, ptr %388, i64 %390
  store double %387, ptr %391, align 8, !tbaa !17
  br label %392

392:                                              ; preds = %369
  %393 = load i32, ptr %15, align 4, !tbaa !11
  %394 = add nsw i32 %393, 1
  store i32 %394, ptr %15, align 4, !tbaa !11
  br label %365, !llvm.loop !44

395:                                              ; preds = %365
  %396 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %397 = getelementptr inbounds %"class.qpOASES::Options", ptr %396, i32 0, i32 15
  %398 = load double, ptr %397, align 8, !tbaa !45
  store double %398, ptr %49, align 8, !tbaa !17
  store i32 -1, ptr %19, align 4, !tbaa !11
  %399 = load i32, ptr %26, align 4, !tbaa !11
  %400 = load ptr, ptr %31, align 8, !tbaa !5
  %401 = load ptr, ptr %52, align 8, !tbaa !5
  %402 = load ptr, ptr %33, align 8, !tbaa !5
  %403 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %404 = getelementptr inbounds %"class.qpOASES::Options", ptr %403, i32 0, i32 13
  %405 = load double, ptr %404, align 8, !tbaa !46
  %406 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %407 = getelementptr inbounds %"class.qpOASES::Options", ptr %406, i32 0, i32 14
  %408 = load double, ptr %407, align 8, !tbaa !47
  %409 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %59, i32 noundef %399, ptr noundef %400, ptr noundef %401, ptr noundef %402, double noundef %405, double noundef %408, ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(4) %19)
  %410 = load i32, ptr %9, align 4, !tbaa !9
  %411 = icmp eq i32 %410, 1
  br i1 %411, label %412, label %441

412:                                              ; preds = %395
  %413 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 6
  %414 = load i32, ptr %10, align 4, !tbaa !11
  %415 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %413, i32 noundef %414)
  %416 = icmp eq i32 %415, -1
  br i1 %416, label %417, label %441

417:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  store double 1.000000e+00, ptr %53, align 8, !tbaa !17
  %418 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 5
  %419 = load ptr, ptr %418, align 8, !tbaa !42
  %420 = load i32, ptr %10, align 4, !tbaa !11
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds double, ptr %419, i64 %421
  %423 = load double, ptr %422, align 8, !tbaa !17
  %424 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 9
  %425 = load ptr, ptr %424, align 8, !tbaa !43
  %426 = load i32, ptr %10, align 4, !tbaa !11
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %425, i64 %427
  %429 = load double, ptr %428, align 8, !tbaa !17
  %430 = fsub double %423, %429
  %431 = load ptr, ptr %52, align 8, !tbaa !5
  %432 = getelementptr inbounds double, ptr %431, i64 0
  store double %430, ptr %432, align 8, !tbaa !17
  %433 = load ptr, ptr %52, align 8, !tbaa !5
  %434 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %435 = getelementptr inbounds %"class.qpOASES::Options", ptr %434, i32 0, i32 13
  %436 = load double, ptr %435, align 8, !tbaa !46
  %437 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %438 = getelementptr inbounds %"class.qpOASES::Options", ptr %437, i32 0, i32 14
  %439 = load double, ptr %438, align 8, !tbaa !47
  %440 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %59, i32 noundef 1, ptr noundef %10, ptr noundef %433, ptr noundef %53, double noundef %436, double noundef %439, ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 4 dereferenceable(4) %19)
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %441

441:                                              ; preds = %417, %412, %395
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %442

442:                                              ; preds = %469, %441
  %443 = load i32, ptr %15, align 4, !tbaa !11
  %444 = load i32, ptr %26, align 4, !tbaa !11
  %445 = icmp slt i32 %443, %444
  br i1 %445, label %446, label %472

446:                                              ; preds = %442
  %447 = load ptr, ptr %31, align 8, !tbaa !5
  %448 = load i32, ptr %15, align 4, !tbaa !11
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds i32, ptr %447, i64 %449
  %451 = load i32, ptr %450, align 4, !tbaa !11
  store i32 %451, ptr %16, align 4, !tbaa !11
  %452 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 9
  %453 = load ptr, ptr %452, align 8, !tbaa !43
  %454 = load i32, ptr %16, align 4, !tbaa !11
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds double, ptr %453, i64 %455
  %457 = load double, ptr %456, align 8, !tbaa !17
  %458 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 4
  %459 = load ptr, ptr %458, align 8, !tbaa !48
  %460 = load i32, ptr %16, align 4, !tbaa !11
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds double, ptr %459, i64 %461
  %463 = load double, ptr %462, align 8, !tbaa !17
  %464 = fsub double %457, %463
  %465 = load ptr, ptr %52, align 8, !tbaa !5
  %466 = load i32, ptr %15, align 4, !tbaa !11
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds double, ptr %465, i64 %467
  store double %464, ptr %468, align 8, !tbaa !17
  br label %469

469:                                              ; preds = %446
  %470 = load i32, ptr %15, align 4, !tbaa !11
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr %15, align 4, !tbaa !11
  br label %442, !llvm.loop !49

472:                                              ; preds = %442
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %473

473:                                              ; preds = %488, %472
  %474 = load i32, ptr %15, align 4, !tbaa !11
  %475 = load i32, ptr %26, align 4, !tbaa !11
  %476 = icmp slt i32 %474, %475
  br i1 %476, label %477, label %491

477:                                              ; preds = %473
  %478 = load ptr, ptr %33, align 8, !tbaa !5
  %479 = load i32, ptr %15, align 4, !tbaa !11
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds double, ptr %478, i64 %480
  %482 = load double, ptr %481, align 8, !tbaa !17
  %483 = fneg double %482
  %484 = load ptr, ptr %33, align 8, !tbaa !5
  %485 = load i32, ptr %15, align 4, !tbaa !11
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %484, i64 %486
  store double %483, ptr %487, align 8, !tbaa !17
  br label %488

488:                                              ; preds = %477
  %489 = load i32, ptr %15, align 4, !tbaa !11
  %490 = add nsw i32 %489, 1
  store i32 %490, ptr %15, align 4, !tbaa !11
  br label %473, !llvm.loop !50

491:                                              ; preds = %473
  %492 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %493 = getelementptr inbounds %"class.qpOASES::Options", ptr %492, i32 0, i32 15
  %494 = load double, ptr %493, align 8, !tbaa !45
  store double %494, ptr %47, align 8, !tbaa !17
  store i32 -1, ptr %17, align 4, !tbaa !11
  %495 = load i32, ptr %26, align 4, !tbaa !11
  %496 = load ptr, ptr %31, align 8, !tbaa !5
  %497 = load ptr, ptr %52, align 8, !tbaa !5
  %498 = load ptr, ptr %33, align 8, !tbaa !5
  %499 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %500 = getelementptr inbounds %"class.qpOASES::Options", ptr %499, i32 0, i32 13
  %501 = load double, ptr %500, align 8, !tbaa !46
  %502 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %503 = getelementptr inbounds %"class.qpOASES::Options", ptr %502, i32 0, i32 14
  %504 = load double, ptr %503, align 8, !tbaa !47
  %505 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %59, i32 noundef %495, ptr noundef %496, ptr noundef %497, ptr noundef %498, double noundef %501, double noundef %504, ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 4 dereferenceable(4) %17)
  %506 = load i32, ptr %9, align 4, !tbaa !9
  %507 = icmp eq i32 %506, 1
  br i1 %507, label %508, label %537

508:                                              ; preds = %491
  %509 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 6
  %510 = load i32, ptr %10, align 4, !tbaa !11
  %511 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %509, i32 noundef %510)
  %512 = icmp eq i32 %511, 1
  br i1 %512, label %513, label %537

513:                                              ; preds = %508
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  store double 1.000000e+00, ptr %54, align 8, !tbaa !17
  %514 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 9
  %515 = load ptr, ptr %514, align 8, !tbaa !43
  %516 = load i32, ptr %10, align 4, !tbaa !11
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds double, ptr %515, i64 %517
  %519 = load double, ptr %518, align 8, !tbaa !17
  %520 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 4
  %521 = load ptr, ptr %520, align 8, !tbaa !48
  %522 = load i32, ptr %10, align 4, !tbaa !11
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds double, ptr %521, i64 %523
  %525 = load double, ptr %524, align 8, !tbaa !17
  %526 = fsub double %519, %525
  %527 = load ptr, ptr %52, align 8, !tbaa !5
  %528 = getelementptr inbounds double, ptr %527, i64 0
  store double %526, ptr %528, align 8, !tbaa !17
  %529 = load ptr, ptr %52, align 8, !tbaa !5
  %530 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %531 = getelementptr inbounds %"class.qpOASES::Options", ptr %530, i32 0, i32 13
  %532 = load double, ptr %531, align 8, !tbaa !46
  %533 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %534 = getelementptr inbounds %"class.qpOASES::Options", ptr %533, i32 0, i32 14
  %535 = load double, ptr %534, align 8, !tbaa !47
  %536 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %59, i32 noundef 1, ptr noundef %10, ptr noundef %529, ptr noundef %54, double noundef %532, double noundef %535, ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 4 dereferenceable(4) %17)
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %537

537:                                              ; preds = %513, %508, %491
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %538

538:                                              ; preds = %553, %537
  %539 = load i32, ptr %15, align 4, !tbaa !11
  %540 = load i32, ptr %26, align 4, !tbaa !11
  %541 = icmp slt i32 %539, %540
  br i1 %541, label %542, label %556

542:                                              ; preds = %538
  %543 = load ptr, ptr %33, align 8, !tbaa !5
  %544 = load i32, ptr %15, align 4, !tbaa !11
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds double, ptr %543, i64 %545
  %547 = load double, ptr %546, align 8, !tbaa !17
  %548 = fneg double %547
  %549 = load ptr, ptr %33, align 8, !tbaa !5
  %550 = load i32, ptr %15, align 4, !tbaa !11
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %549, i64 %551
  store double %548, ptr %552, align 8, !tbaa !17
  br label %553

553:                                              ; preds = %542
  %554 = load i32, ptr %15, align 4, !tbaa !11
  %555 = add nsw i32 %554, 1
  store i32 %555, ptr %15, align 4, !tbaa !11
  br label %538, !llvm.loop !51

556:                                              ; preds = %538
  %557 = load ptr, ptr %52, align 8, !tbaa !5
  %558 = icmp eq ptr %557, null
  br i1 %558, label %560, label %559

559:                                              ; preds = %556
  call void @_ZdaPv(ptr noundef %557) #11
  br label %560

560:                                              ; preds = %559, %556
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  %561 = load i32, ptr %30, align 4, !tbaa !11
  %562 = sext i32 %561 to i64
  %563 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %562, i64 8)
  %564 = extractvalue { i64, i1 } %563, 1
  %565 = extractvalue { i64, i1 } %563, 0
  %566 = select i1 %564, i64 -1, i64 %565
  %567 = call noalias noundef nonnull ptr @_Znam(i64 noundef %566) #10
  store ptr %567, ptr %55, align 8, !tbaa !5
  %568 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 2
  %569 = load ptr, ptr %568, align 8, !tbaa !52
  %570 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 5
  %571 = call noundef ptr @_ZN7qpOASES11Constraints11getInactiveEv(ptr noundef nonnull align 8 dereferenceable(120) %570)
  %572 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 6
  %573 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %572)
  %574 = load ptr, ptr %32, align 8, !tbaa !5
  %575 = load i32, ptr %29, align 4, !tbaa !11
  %576 = load ptr, ptr %55, align 8, !tbaa !5
  %577 = load i32, ptr %30, align 4, !tbaa !11
  %578 = load ptr, ptr %569, align 8, !tbaa !22
  %579 = getelementptr inbounds ptr, ptr %578, i64 17
  %580 = load ptr, ptr %579, align 8
  %581 = call noundef i32 %580(ptr noundef nonnull align 8 dereferenceable(12) %569, ptr noundef %571, ptr noundef %573, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %574, i32 noundef %575, double noundef 0.000000e+00, ptr noundef %576, i32 noundef %577, i32 noundef 1)
  %582 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 2
  %583 = load ptr, ptr %582, align 8, !tbaa !52
  %584 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 5
  %585 = call noundef ptr @_ZN7qpOASES11Constraints11getInactiveEv(ptr noundef nonnull align 8 dereferenceable(120) %584)
  %586 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 6
  %587 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %586)
  %588 = load ptr, ptr %33, align 8, !tbaa !5
  %589 = load i32, ptr %26, align 4, !tbaa !11
  %590 = load ptr, ptr %55, align 8, !tbaa !5
  %591 = load i32, ptr %30, align 4, !tbaa !11
  %592 = load ptr, ptr %583, align 8, !tbaa !22
  %593 = getelementptr inbounds ptr, ptr %592, i64 17
  %594 = load ptr, ptr %593, align 8
  %595 = call noundef i32 %594(ptr noundef nonnull align 8 dereferenceable(12) %583, ptr noundef %585, ptr noundef %587, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %588, i32 noundef %589, double noundef 1.000000e+00, ptr noundef %590, i32 noundef %591, i32 noundef 1)
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #9
  %596 = load i32, ptr %30, align 4, !tbaa !11
  %597 = sext i32 %596 to i64
  %598 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %597, i64 8)
  %599 = extractvalue { i64, i1 } %598, 1
  %600 = extractvalue { i64, i1 } %598, 0
  %601 = select i1 %599, i64 -1, i64 %600
  %602 = call noalias noundef nonnull ptr @_Znam(i64 noundef %601) #10
  store ptr %602, ptr %56, align 8, !tbaa !5
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %603

603:                                              ; preds = %623, %560
  %604 = load i32, ptr %15, align 4, !tbaa !11
  %605 = load i32, ptr %30, align 4, !tbaa !11
  %606 = icmp slt i32 %604, %605
  br i1 %606, label %607, label %626

607:                                              ; preds = %603
  %608 = load ptr, ptr %23, align 8, !tbaa !5
  %609 = load i32, ptr %15, align 4, !tbaa !11
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds i32, ptr %608, i64 %610
  %612 = load i32, ptr %611, align 4, !tbaa !11
  store i32 %612, ptr %16, align 4, !tbaa !11
  %613 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 11
  %614 = load ptr, ptr %613, align 8, !tbaa !54
  %615 = load i32, ptr %16, align 4, !tbaa !11
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %614, i64 %616
  %618 = load double, ptr %617, align 8, !tbaa !17
  %619 = load ptr, ptr %56, align 8, !tbaa !5
  %620 = load i32, ptr %15, align 4, !tbaa !11
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds double, ptr %619, i64 %621
  store double %618, ptr %622, align 8, !tbaa !17
  br label %623

623:                                              ; preds = %607
  %624 = load i32, ptr %15, align 4, !tbaa !11
  %625 = add nsw i32 %624, 1
  store i32 %625, ptr %15, align 4, !tbaa !11
  br label %603, !llvm.loop !55

626:                                              ; preds = %603
  %627 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %628 = getelementptr inbounds %"class.qpOASES::Options", ptr %627, i32 0, i32 15
  %629 = load double, ptr %628, align 8, !tbaa !45
  store double %629, ptr %50, align 8, !tbaa !17
  store i32 -1, ptr %20, align 4, !tbaa !11
  %630 = load i32, ptr %30, align 4, !tbaa !11
  %631 = load ptr, ptr %23, align 8, !tbaa !5
  %632 = load ptr, ptr %56, align 8, !tbaa !5
  %633 = load ptr, ptr %55, align 8, !tbaa !5
  %634 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %635 = getelementptr inbounds %"class.qpOASES::Options", ptr %634, i32 0, i32 13
  %636 = load double, ptr %635, align 8, !tbaa !46
  %637 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %638 = getelementptr inbounds %"class.qpOASES::Options", ptr %637, i32 0, i32 14
  %639 = load double, ptr %638, align 8, !tbaa !47
  %640 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %59, i32 noundef %630, ptr noundef %631, ptr noundef %632, ptr noundef %633, double noundef %636, double noundef %639, ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 4 dereferenceable(4) %20)
  %641 = load i32, ptr %9, align 4, !tbaa !9
  %642 = icmp eq i32 %641, 0
  br i1 %642, label %643, label %661

643:                                              ; preds = %626
  %644 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 5
  %645 = load i32, ptr %10, align 4, !tbaa !11
  %646 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %644, i32 noundef %645)
  %647 = icmp eq i32 %646, -1
  br i1 %647, label %648, label %661

648:                                              ; preds = %643
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #9
  store double 1.000000e+00, ptr %57, align 8, !tbaa !17
  %649 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 11
  %650 = load ptr, ptr %649, align 8, !tbaa !54
  %651 = load i32, ptr %10, align 4, !tbaa !11
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %650, i64 %652
  %654 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %655 = getelementptr inbounds %"class.qpOASES::Options", ptr %654, i32 0, i32 13
  %656 = load double, ptr %655, align 8, !tbaa !46
  %657 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %658 = getelementptr inbounds %"class.qpOASES::Options", ptr %657, i32 0, i32 14
  %659 = load double, ptr %658, align 8, !tbaa !47
  %660 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %59, i32 noundef 1, ptr noundef %10, ptr noundef %653, ptr noundef %57, double noundef %656, double noundef %659, ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 4 dereferenceable(4) %20)
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  br label %661

661:                                              ; preds = %648, %643, %626
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %662

662:                                              ; preds = %682, %661
  %663 = load i32, ptr %15, align 4, !tbaa !11
  %664 = load i32, ptr %30, align 4, !tbaa !11
  %665 = icmp slt i32 %663, %664
  br i1 %665, label %666, label %685

666:                                              ; preds = %662
  %667 = load ptr, ptr %23, align 8, !tbaa !5
  %668 = load i32, ptr %15, align 4, !tbaa !11
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds i32, ptr %667, i64 %669
  %671 = load i32, ptr %670, align 4, !tbaa !11
  store i32 %671, ptr %16, align 4, !tbaa !11
  %672 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 10
  %673 = load ptr, ptr %672, align 8, !tbaa !56
  %674 = load i32, ptr %16, align 4, !tbaa !11
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds double, ptr %673, i64 %675
  %677 = load double, ptr %676, align 8, !tbaa !17
  %678 = load ptr, ptr %56, align 8, !tbaa !5
  %679 = load i32, ptr %15, align 4, !tbaa !11
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %678, i64 %680
  store double %677, ptr %681, align 8, !tbaa !17
  br label %682

682:                                              ; preds = %666
  %683 = load i32, ptr %15, align 4, !tbaa !11
  %684 = add nsw i32 %683, 1
  store i32 %684, ptr %15, align 4, !tbaa !11
  br label %662, !llvm.loop !57

685:                                              ; preds = %662
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %686

686:                                              ; preds = %701, %685
  %687 = load i32, ptr %15, align 4, !tbaa !11
  %688 = load i32, ptr %30, align 4, !tbaa !11
  %689 = icmp slt i32 %687, %688
  br i1 %689, label %690, label %704

690:                                              ; preds = %686
  %691 = load ptr, ptr %55, align 8, !tbaa !5
  %692 = load i32, ptr %15, align 4, !tbaa !11
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds double, ptr %691, i64 %693
  %695 = load double, ptr %694, align 8, !tbaa !17
  %696 = fneg double %695
  %697 = load ptr, ptr %55, align 8, !tbaa !5
  %698 = load i32, ptr %15, align 4, !tbaa !11
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds double, ptr %697, i64 %699
  store double %696, ptr %700, align 8, !tbaa !17
  br label %701

701:                                              ; preds = %690
  %702 = load i32, ptr %15, align 4, !tbaa !11
  %703 = add nsw i32 %702, 1
  store i32 %703, ptr %15, align 4, !tbaa !11
  br label %686, !llvm.loop !58

704:                                              ; preds = %686
  %705 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %706 = getelementptr inbounds %"class.qpOASES::Options", ptr %705, i32 0, i32 15
  %707 = load double, ptr %706, align 8, !tbaa !45
  store double %707, ptr %48, align 8, !tbaa !17
  store i32 -1, ptr %18, align 4, !tbaa !11
  %708 = load i32, ptr %30, align 4, !tbaa !11
  %709 = load ptr, ptr %23, align 8, !tbaa !5
  %710 = load ptr, ptr %56, align 8, !tbaa !5
  %711 = load ptr, ptr %55, align 8, !tbaa !5
  %712 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %713 = getelementptr inbounds %"class.qpOASES::Options", ptr %712, i32 0, i32 13
  %714 = load double, ptr %713, align 8, !tbaa !46
  %715 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %716 = getelementptr inbounds %"class.qpOASES::Options", ptr %715, i32 0, i32 14
  %717 = load double, ptr %716, align 8, !tbaa !47
  %718 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %59, i32 noundef %708, ptr noundef %709, ptr noundef %710, ptr noundef %711, double noundef %714, double noundef %717, ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 4 dereferenceable(4) %18)
  %719 = load i32, ptr %9, align 4, !tbaa !9
  %720 = icmp eq i32 %719, 0
  br i1 %720, label %721, label %739

721:                                              ; preds = %704
  %722 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 5
  %723 = load i32, ptr %10, align 4, !tbaa !11
  %724 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %722, i32 noundef %723)
  %725 = icmp eq i32 %724, 1
  br i1 %725, label %726, label %739

726:                                              ; preds = %721
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #9
  store double 1.000000e+00, ptr %58, align 8, !tbaa !17
  %727 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 10
  %728 = load ptr, ptr %727, align 8, !tbaa !56
  %729 = load i32, ptr %10, align 4, !tbaa !11
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds double, ptr %728, i64 %730
  %732 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %733 = getelementptr inbounds %"class.qpOASES::Options", ptr %732, i32 0, i32 13
  %734 = load double, ptr %733, align 8, !tbaa !46
  %735 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %736 = getelementptr inbounds %"class.qpOASES::Options", ptr %735, i32 0, i32 14
  %737 = load double, ptr %736, align 8, !tbaa !47
  %738 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %59, i32 noundef 1, ptr noundef %10, ptr noundef %731, ptr noundef %58, double noundef %734, double noundef %737, ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 4 dereferenceable(4) %18)
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  br label %739

739:                                              ; preds = %726, %721, %704
  %740 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %741 = getelementptr inbounds %"class.qpOASES::Options", ptr %740, i32 0, i32 15
  %742 = load double, ptr %741, align 8, !tbaa !45
  store double %742, ptr %51, align 8, !tbaa !17
  %743 = load double, ptr %50, align 8, !tbaa !17
  %744 = load double, ptr %51, align 8, !tbaa !17
  %745 = fcmp olt double %743, %744
  br i1 %745, label %746, label %752

746:                                              ; preds = %739
  %747 = load double, ptr %50, align 8, !tbaa !17
  store double %747, ptr %51, align 8, !tbaa !17
  %748 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 1, ptr %748, align 4, !tbaa !15
  %749 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %749, align 4, !tbaa !9
  %750 = load i32, ptr %20, align 4, !tbaa !11
  %751 = load ptr, ptr %13, align 8, !tbaa !5
  store i32 %750, ptr %751, align 4, !tbaa !11
  br label %752

752:                                              ; preds = %746, %739
  %753 = load double, ptr %48, align 8, !tbaa !17
  %754 = load double, ptr %51, align 8, !tbaa !17
  %755 = fcmp olt double %753, %754
  br i1 %755, label %756, label %762

756:                                              ; preds = %752
  %757 = load double, ptr %48, align 8, !tbaa !17
  store double %757, ptr %51, align 8, !tbaa !17
  %758 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 -1, ptr %758, align 4, !tbaa !15
  %759 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %759, align 4, !tbaa !9
  %760 = load i32, ptr %18, align 4, !tbaa !11
  %761 = load ptr, ptr %13, align 8, !tbaa !5
  store i32 %760, ptr %761, align 4, !tbaa !11
  br label %762

762:                                              ; preds = %756, %752
  %763 = load double, ptr %49, align 8, !tbaa !17
  %764 = load double, ptr %51, align 8, !tbaa !17
  %765 = fcmp olt double %763, %764
  br i1 %765, label %766, label %772

766:                                              ; preds = %762
  %767 = load double, ptr %49, align 8, !tbaa !17
  store double %767, ptr %51, align 8, !tbaa !17
  %768 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 1, ptr %768, align 4, !tbaa !15
  %769 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %769, align 4, !tbaa !9
  %770 = load i32, ptr %19, align 4, !tbaa !11
  %771 = load ptr, ptr %13, align 8, !tbaa !5
  store i32 %770, ptr %771, align 4, !tbaa !11
  br label %772

772:                                              ; preds = %766, %762
  %773 = load double, ptr %47, align 8, !tbaa !17
  %774 = load double, ptr %51, align 8, !tbaa !17
  %775 = fcmp olt double %773, %774
  br i1 %775, label %776, label %782

776:                                              ; preds = %772
  %777 = load double, ptr %47, align 8, !tbaa !17
  store double %777, ptr %51, align 8, !tbaa !17
  %778 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 -1, ptr %778, align 4, !tbaa !15
  %779 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %779, align 4, !tbaa !9
  %780 = load i32, ptr %17, align 4, !tbaa !11
  %781 = load ptr, ptr %13, align 8, !tbaa !5
  store i32 %780, ptr %781, align 4, !tbaa !11
  br label %782

782:                                              ; preds = %776, %772
  %783 = load double, ptr %51, align 8, !tbaa !17
  %784 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 23
  %785 = getelementptr inbounds %"class.qpOASES::Options", ptr %784, i32 0, i32 15
  %786 = load double, ptr %785, align 8, !tbaa !45
  %787 = fcmp oge double %783, %786
  br i1 %787, label %788, label %790

788:                                              ; preds = %782
  %789 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 14
  store i32 1, ptr %789, align 8, !tbaa !59
  store i32 62, ptr %24, align 4, !tbaa !13
  br label %910

790:                                              ; preds = %782
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %791

791:                                              ; preds = %813, %790
  %792 = load i32, ptr %15, align 4, !tbaa !11
  %793 = load i32, ptr %26, align 4, !tbaa !11
  %794 = icmp slt i32 %792, %793
  br i1 %794, label %795, label %816

795:                                              ; preds = %791
  %796 = load double, ptr %51, align 8, !tbaa !17
  %797 = load ptr, ptr %33, align 8, !tbaa !5
  %798 = load i32, ptr %15, align 4, !tbaa !11
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %797, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !17
  %802 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 9
  %803 = load ptr, ptr %802, align 8, !tbaa !43
  %804 = load ptr, ptr %31, align 8, !tbaa !5
  %805 = load i32, ptr %15, align 4, !tbaa !11
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds i32, ptr %804, i64 %806
  %808 = load i32, ptr %807, align 4, !tbaa !11
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds double, ptr %803, i64 %809
  %811 = load double, ptr %810, align 8, !tbaa !17
  %812 = call double @llvm.fmuladd.f64(double %796, double %801, double %811)
  store double %812, ptr %810, align 8, !tbaa !17
  br label %813

813:                                              ; preds = %795
  %814 = load i32, ptr %15, align 4, !tbaa !11
  %815 = add nsw i32 %814, 1
  store i32 %815, ptr %15, align 4, !tbaa !11
  br label %791, !llvm.loop !60

816:                                              ; preds = %791
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %817

817:                                              ; preds = %839, %816
  %818 = load i32, ptr %15, align 4, !tbaa !11
  %819 = load i32, ptr %29, align 4, !tbaa !11
  %820 = icmp slt i32 %818, %819
  br i1 %820, label %821, label %842

821:                                              ; preds = %817
  %822 = load double, ptr %51, align 8, !tbaa !17
  %823 = load ptr, ptr %32, align 8, !tbaa !5
  %824 = load i32, ptr %15, align 4, !tbaa !11
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds double, ptr %823, i64 %825
  %827 = load double, ptr %826, align 8, !tbaa !17
  %828 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 9
  %829 = load ptr, ptr %828, align 8, !tbaa !43
  %830 = load ptr, ptr %21, align 8, !tbaa !5
  %831 = load i32, ptr %15, align 4, !tbaa !11
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds i32, ptr %830, i64 %832
  %834 = load i32, ptr %833, align 4, !tbaa !11
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %829, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !17
  %838 = call double @llvm.fmuladd.f64(double %822, double %827, double %837)
  store double %838, ptr %836, align 8, !tbaa !17
  br label %839

839:                                              ; preds = %821
  %840 = load i32, ptr %15, align 4, !tbaa !11
  %841 = add nsw i32 %840, 1
  store i32 %841, ptr %15, align 4, !tbaa !11
  br label %817, !llvm.loop !61

842:                                              ; preds = %817
  %843 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 2
  %844 = load ptr, ptr %843, align 8, !tbaa !52
  %845 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %59, i32 0, i32 9
  %846 = load ptr, ptr %845, align 8, !tbaa !43
  %847 = load i32, ptr %25, align 4, !tbaa !11
  %848 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 9
  %849 = load ptr, ptr %848, align 8, !tbaa !62
  %850 = load i32, ptr %28, align 4, !tbaa !11
  %851 = load ptr, ptr %844, align 8, !tbaa !22
  %852 = getelementptr inbounds ptr, ptr %851, i64 15
  %853 = load ptr, ptr %852, align 8
  %854 = call noundef i32 %853(ptr noundef nonnull align 8 dereferenceable(12) %844, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %846, i32 noundef %847, double noundef 0.000000e+00, ptr noundef %849, i32 noundef %850)
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %855

855:                                              ; preds = %878, %842
  %856 = load i32, ptr %15, align 4, !tbaa !11
  %857 = load i32, ptr %28, align 4, !tbaa !11
  %858 = icmp slt i32 %856, %857
  br i1 %858, label %859, label %881

859:                                              ; preds = %855
  %860 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 4
  %861 = load ptr, ptr %860, align 8, !tbaa !63
  %862 = load i32, ptr %15, align 4, !tbaa !11
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds double, ptr %861, i64 %863
  %865 = load double, ptr %864, align 8, !tbaa !17
  %866 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 9
  %867 = load ptr, ptr %866, align 8, !tbaa !62
  %868 = load i32, ptr %15, align 4, !tbaa !11
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds double, ptr %867, i64 %869
  %871 = load double, ptr %870, align 8, !tbaa !17
  %872 = fsub double %865, %871
  %873 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 11
  %874 = load ptr, ptr %873, align 8, !tbaa !54
  %875 = load i32, ptr %15, align 4, !tbaa !11
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds double, ptr %874, i64 %876
  store double %872, ptr %877, align 8, !tbaa !17
  br label %878

878:                                              ; preds = %859
  %879 = load i32, ptr %15, align 4, !tbaa !11
  %880 = add nsw i32 %879, 1
  store i32 %880, ptr %15, align 4, !tbaa !11
  br label %855, !llvm.loop !64

881:                                              ; preds = %855
  store i32 0, ptr %15, align 4, !tbaa !11
  br label %882

882:                                              ; preds = %905, %881
  %883 = load i32, ptr %15, align 4, !tbaa !11
  %884 = load i32, ptr %28, align 4, !tbaa !11
  %885 = icmp slt i32 %883, %884
  br i1 %885, label %886, label %908

886:                                              ; preds = %882
  %887 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 9
  %888 = load ptr, ptr %887, align 8, !tbaa !62
  %889 = load i32, ptr %15, align 4, !tbaa !11
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds double, ptr %888, i64 %890
  %892 = load double, ptr %891, align 8, !tbaa !17
  %893 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 3
  %894 = load ptr, ptr %893, align 8, !tbaa !65
  %895 = load i32, ptr %15, align 4, !tbaa !11
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds double, ptr %894, i64 %896
  %898 = load double, ptr %897, align 8, !tbaa !17
  %899 = fsub double %892, %898
  %900 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %59, i32 0, i32 10
  %901 = load ptr, ptr %900, align 8, !tbaa !56
  %902 = load i32, ptr %15, align 4, !tbaa !11
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds double, ptr %901, i64 %903
  store double %899, ptr %904, align 8, !tbaa !17
  br label %905

905:                                              ; preds = %886
  %906 = load i32, ptr %15, align 4, !tbaa !11
  %907 = add nsw i32 %906, 1
  store i32 %907, ptr %15, align 4, !tbaa !11
  br label %882, !llvm.loop !66

908:                                              ; preds = %882
  %909 = load ptr, ptr %11, align 8, !tbaa !5
  store i32 1, ptr %909, align 4, !tbaa !9
  br label %910

910:                                              ; preds = %908, %788
  %911 = load ptr, ptr %56, align 8, !tbaa !5
  %912 = icmp eq ptr %911, null
  br i1 %912, label %914, label %913

913:                                              ; preds = %910
  call void @_ZdaPv(ptr noundef %911) #11
  br label %914

914:                                              ; preds = %913, %910
  %915 = load ptr, ptr %55, align 8, !tbaa !5
  %916 = icmp eq ptr %915, null
  br i1 %916, label %918, label %917

917:                                              ; preds = %914
  call void @_ZdaPv(ptr noundef %915) #11
  br label %918

918:                                              ; preds = %917, %914
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %919

919:                                              ; preds = %918, %348
  %920 = load ptr, ptr %35, align 8, !tbaa !5
  %921 = icmp eq ptr %920, null
  br i1 %921, label %923, label %922

922:                                              ; preds = %919
  call void @_ZdaPv(ptr noundef %920) #11
  br label %923

923:                                              ; preds = %922, %919
  %924 = load ptr, ptr %34, align 8, !tbaa !5
  %925 = icmp eq ptr %924, null
  br i1 %925, label %927, label %926

926:                                              ; preds = %923
  call void @_ZdaPv(ptr noundef %924) #11
  br label %927

927:                                              ; preds = %926, %923
  %928 = load ptr, ptr %33, align 8, !tbaa !5
  %929 = icmp eq ptr %928, null
  br i1 %929, label %931, label %930

930:                                              ; preds = %927
  call void @_ZdaPv(ptr noundef %928) #11
  br label %931

931:                                              ; preds = %930, %927
  %932 = load ptr, ptr %32, align 8, !tbaa !5
  %933 = icmp eq ptr %932, null
  br i1 %933, label %935, label %934

934:                                              ; preds = %931
  call void @_ZdaPv(ptr noundef %932) #11
  br label %935

935:                                              ; preds = %934, %931
  %936 = load i32, ptr %24, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #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 8, 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 4, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 4, 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
  ret i32 %936
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN7qpOASES6getMaxEii(i32 noundef, i32 noundef) #5

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { 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 #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { "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 = { 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 #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 = !{!"_ZTSN7qpOASES11BooleanTypeE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !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, !18, i64 0}
!18 = !{!"double", !7, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = !{!23, !23, i64 0}
!23 = !{!"vtable pointer", !8, i64 0}
!24 = distinct !{!24, !20}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !20}
!30 = !{!31, !18, i64 456}
!31 = !{!"_ZTSN7qpOASES9QProblemBE", !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !32, i64 48, !6, i64 168, !10, i64 176, !6, i64 184, !6, i64 192, !18, i64 200, !35, i64 208, !10, i64 212, !10, i64 216, !36, i64 220, !18, i64 224, !12, i64 232, !6, i64 240, !18, i64 248, !18, i64 256, !12, i64 264, !37, i64 272, !39, i64 496, !41, i64 768}
!32 = !{!"_ZTSN7qpOASES6BoundsE", !33, i64 0, !34, i64 40, !34, i64 80}
!33 = !{!"_ZTSN7qpOASES9SubjectToE", !12, i64 8, !6, i64 16, !6, i64 24, !10, i64 32, !10, i64 36}
!34 = !{!"_ZTSN7qpOASES9IndexlistE", !6, i64 0, !6, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32}
!35 = !{!"_ZTSN7qpOASES14QProblemStatusE", !7, i64 0}
!36 = !{!"_ZTSN7qpOASES11HessianTypeE", !7, i64 0}
!37 = !{!"_ZTSN7qpOASES7OptionsE", !38, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !12, i64 28, !12, i64 32, !10, i64 36, !18, i64 40, !18, i64 48, !18, i64 56, !18, i64 64, !18, i64 72, !18, i64 80, !18, i64 88, !18, i64 96, !18, i64 104, !18, i64 112, !18, i64 120, !16, i64 128, !18, i64 136, !12, i64 144, !18, i64 152, !12, i64 160, !18, i64 168, !18, i64 176, !18, i64 184, !18, i64 192, !10, i64 200, !10, i64 204, !12, i64 208, !12, i64 212, !12, i64 216}
!38 = !{!"_ZTSN7qpOASES10PrintLevelE", !7, i64 0}
!39 = !{!"_ZTSN7qpOASES7FlipperE", !12, i64 0, !12, i64 4, !32, i64 8, !40, i64 128, !6, i64 248, !6, i64 256, !6, i64 264}
!40 = !{!"_ZTSN7qpOASES11ConstraintsE", !33, i64 0, !34, i64 40, !34, i64 80}
!41 = !{!"_ZTSN7qpOASES13TabularOutputE", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28}
!42 = !{!31, !6, i64 40}
!43 = !{!31, !6, i64 184}
!44 = distinct !{!44, !20}
!45 = !{!31, !18, i64 352}
!46 = !{!31, !18, i64 336}
!47 = !{!31, !18, i64 344}
!48 = !{!31, !6, i64 32}
!49 = distinct !{!49, !20}
!50 = distinct !{!50, !20}
!51 = distinct !{!51, !20}
!52 = !{!53, !6, i64 808}
!53 = !{!"_ZTSN7qpOASES8QProblemE", !31, i64 0, !10, i64 800, !6, i64 808, !6, i64 816, !6, i64 824, !40, i64 832, !6, i64 952, !6, i64 960, !12, 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}
!54 = !{!53, !6, i64 992}
!55 = distinct !{!55, !20}
!56 = !{!53, !6, i64 984}
!57 = distinct !{!57, !20}
!58 = distinct !{!58, !20}
!59 = !{!31, !10, i64 216}
!60 = distinct !{!60, !20}
!61 = distinct !{!61, !20}
!62 = !{!53, !6, i64 976}
!63 = !{!53, !6, i64 824}
!64 = distinct !{!64, !20}
!65 = !{!53, !6, i64 816}
!66 = distinct !{!66, !20}


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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064)) local_unnamed_addr #3 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 #4 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES8QProblem22ensureNonzeroCurvatureENS_11BooleanTypeEiRS1_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1, i32 noundef %2, ptr nocapture noundef nonnull writeonly align 4 dereferenceable(4) %3, ptr nocapture noundef nonnull writeonly align 4 dereferenceable(4) %4, ptr nocapture noundef nonnull writeonly align 4 dereferenceable(4) %5, ptr nocapture noundef nonnull writeonly align 4 dereferenceable(4) %6) local_unnamed_addr #7 align 2 {
  %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 ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  store i32 %2, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #11
  store i32 -1, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #11
  store i32 -1, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #11
  store i32 -1, ptr %11, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #11
  store i32 -1, ptr %12, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #11
  %25 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %26 = tail call noundef i32 @_ZNK7qpOASES9QProblemB6getNFREv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %27 = tail call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %28 = tail call noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %29 = tail call noundef i32 @_ZNK7qpOASES9QProblemB6getNFXEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %30 = tail call noundef i32 @_ZNK7qpOASES8QProblem7getNIACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #11
  %31 = getelementptr inbounds i8, ptr %0, i64 48
  %32 = tail call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %31)
  %33 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %32, ptr noundef nonnull %16)
  %34 = zext i32 %29 to i64
  %35 = icmp slt i32 %29, 0
  %36 = shl nuw nsw i64 %34, 3
  %37 = select i1 %35, i64 -1, i64 %36
  %38 = call noalias noundef nonnull ptr @_Znam(i64 noundef %37) #12
  %39 = zext i32 %26 to i64
  %40 = icmp slt i32 %26, 0
  %41 = shl nuw nsw i64 %39, 3
  %42 = select i1 %40, i64 -1, i64 %41
  %43 = call noalias noundef nonnull ptr @_Znam(i64 noundef %42) #12
  %44 = zext i32 %27 to i64
  %45 = icmp slt i32 %27, 0
  %46 = shl nuw nsw i64 %44, 3
  %47 = select i1 %45, i64 -1, i64 %46
  %48 = call noalias noundef nonnull ptr @_Znam(i64 noundef %47) #12
  %49 = call noalias noundef nonnull ptr @_Znam(i64 noundef %37) #12
  %50 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %31)
  %51 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %50, ptr noundef nonnull %13)
  %52 = getelementptr inbounds i8, ptr %0, i64 832
  %53 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %52)
  %54 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %53, ptr noundef nonnull %14)
  %55 = call noundef ptr @_ZN7qpOASES11Constraints11getInactiveEv(ptr noundef nonnull align 8 dereferenceable(120) %52)
  %56 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %55, ptr noundef nonnull %15)
  store i32 1, ptr %4, align 4, !tbaa !9
  store i32 0, ptr %6, align 4, !tbaa !11
  store i32 0, ptr %3, align 4, !tbaa !9
  %.not = icmp eq i32 %1, 0
  br i1 %.not, label %81, label %57

57:                                               ; preds = %7
  %58 = call i32 @llvm.smax.i32(i32 %25, i32 %28)
  %59 = zext i32 %58 to i64
  %60 = icmp slt i32 %58, 0
  %61 = shl nuw nsw i64 %59, 3
  %62 = select i1 %60, i64 -1, i64 %61
  %63 = call noalias noundef nonnull ptr @_Znam(i64 noundef %62) #12
  %64 = zext i32 %25 to i64
  %65 = icmp slt i32 %25, 0
  %66 = shl nuw nsw i64 %64, 3
  %67 = select i1 %65, i64 -1, i64 %66
  %68 = call noalias noundef nonnull ptr @_Znam(i64 noundef %67) #12
  %69 = icmp sgt i32 %58, 0
  br i1 %69, label %.lr.ph.preheader, label %.preheader274

.lr.ph.preheader:                                 ; preds = %57
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %63, i8 0, i64 %61, i1 false), !tbaa !13
  br label %.preheader274

.preheader274:                                    ; preds = %.lr.ph.preheader, %57
  %70 = icmp sgt i32 %25, 0
  br i1 %70, label %.lr.ph277.preheader, label %._crit_edge

.lr.ph277.preheader:                              ; preds = %.preheader274
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %68, i8 0, i64 %66, i1 false), !tbaa !13
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph277.preheader, %.preheader274
  %71 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %31, i32 noundef %2)
  %72 = icmp eq i32 %71, -1
  %73 = select i1 %72, double 1.000000e+00, double -1.000000e+00
  %74 = load i32, ptr %8, align 4, !tbaa !5
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds double, ptr %68, i64 %75
  store double %73, ptr %76, align 8, !tbaa !13
  %77 = load ptr, ptr %0, align 8, !tbaa !15
  %78 = getelementptr inbounds i8, ptr %77, i64 272
  %79 = load ptr, ptr %78, align 8
  %80 = call noundef i32 %79(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef nonnull %63, ptr noundef nonnull %63, ptr noundef nonnull %63, ptr noundef nonnull %68, ptr noundef nonnull %68, i32 noundef 0, i32 noundef 0, ptr noundef nonnull %38, ptr noundef nonnull %43, ptr noundef nonnull %48, ptr noundef nonnull %49)
  br label %104

81:                                               ; preds = %7
  %82 = zext i32 %25 to i64
  %83 = icmp slt i32 %25, 0
  %84 = shl nuw nsw i64 %82, 3
  %85 = select i1 %83, i64 -1, i64 %84
  %86 = call noalias noundef nonnull ptr @_Znam(i64 noundef %85) #12
  %87 = zext i32 %28 to i64
  %88 = icmp slt i32 %28, 0
  %89 = shl nuw nsw i64 %87, 3
  %90 = select i1 %88, i64 -1, i64 %89
  %91 = call noalias noundef nonnull ptr @_Znam(i64 noundef %90) #12
  %92 = icmp sgt i32 %25, 0
  br i1 %92, label %.lr.ph280.preheader, label %.preheader273

.lr.ph280.preheader:                              ; preds = %81
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %86, i8 0, i64 %84, i1 false), !tbaa !13
  br label %.preheader273

.preheader273:                                    ; preds = %.lr.ph280.preheader, %81
  %93 = icmp sgt i32 %28, 0
  br i1 %93, label %.lr.ph282.preheader, label %._crit_edge283

.lr.ph282.preheader:                              ; preds = %.preheader273
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %91, i8 0, i64 %89, i1 false), !tbaa !13
  br label %._crit_edge283

._crit_edge283:                                   ; preds = %.lr.ph282.preheader, %.preheader273
  %94 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %52, i32 noundef %2)
  %95 = icmp eq i32 %94, -1
  %96 = select i1 %95, double 1.000000e+00, double -1.000000e+00
  %97 = load i32, ptr %8, align 4, !tbaa !5
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds double, ptr %91, i64 %98
  store double %96, ptr %99, align 8, !tbaa !13
  %100 = load ptr, ptr %0, align 8, !tbaa !15
  %101 = getelementptr inbounds i8, ptr %100, i64 272
  %102 = load ptr, ptr %101, align 8
  %103 = call noundef i32 %102(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef nonnull %86, ptr noundef nonnull %91, ptr noundef nonnull %91, ptr noundef nonnull %86, ptr noundef nonnull %86, i32 noundef 0, i32 noundef 1, ptr noundef nonnull %38, ptr noundef nonnull %43, ptr noundef nonnull %48, ptr noundef nonnull %49)
  br label %104

104:                                              ; preds = %._crit_edge283, %._crit_edge
  %.sink415 = phi ptr [ %91, %._crit_edge283 ], [ %68, %._crit_edge ]
  %.sink = phi ptr [ %86, %._crit_edge283 ], [ %63, %._crit_edge ]
  %.0238 = phi i32 [ %103, %._crit_edge283 ], [ %80, %._crit_edge ]
  call void @_ZdaPv(ptr noundef nonnull %.sink415) #13
  call void @_ZdaPv(ptr noundef nonnull %.sink) #13
  %105 = icmp sgt i32 %27, 0
  br i1 %105, label %.lr.ph287, label %.preheader272

.preheader272:                                    ; preds = %.lr.ph287, %104
  %.0245.lcssa = phi double [ 0.000000e+00, %104 ], [ %.1246, %.lr.ph287 ]
  %106 = icmp sgt i32 %29, 0
  br i1 %106, label %.lr.ph290, label %.preheader270

.lr.ph287:                                        ; preds = %104, %.lr.ph287
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph287 ], [ 0, %104 ]
  %.0245284 = phi double [ %.1246, %.lr.ph287 ], [ 0.000000e+00, %104 ]
  %107 = getelementptr inbounds double, ptr %48, i64 %indvars.iv
  %108 = load double, ptr %107, align 8, !tbaa !13
  %109 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %108)
  %110 = fcmp olt double %.0245284, %109
  %.1246 = select i1 %110, double %109, double %.0245284
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %44
  br i1 %exitcond.not, label %.preheader272, label %.lr.ph287, !llvm.loop !17

.preheader271:                                    ; preds = %.lr.ph290
  br i1 %106, label %.lr.ph294, label %.preheader270

.lr.ph290:                                        ; preds = %.preheader272, %.lr.ph290
  %indvars.iv341 = phi i64 [ %indvars.iv.next342, %.lr.ph290 ], [ 0, %.preheader272 ]
  %.2247288 = phi double [ %.3248, %.lr.ph290 ], [ %.0245.lcssa, %.preheader272 ]
  %111 = getelementptr inbounds double, ptr %49, i64 %indvars.iv341
  %112 = load double, ptr %111, align 8, !tbaa !13
  %113 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %112)
  %114 = fcmp olt double %.2247288, %113
  %.3248 = select i1 %114, double %113, double %.2247288
  %indvars.iv.next342 = add nuw nsw i64 %indvars.iv341, 1
  %exitcond345.not = icmp eq i64 %indvars.iv.next342, %34
  br i1 %exitcond345.not, label %.preheader271, label %.lr.ph290, !llvm.loop !19

.preheader270:                                    ; preds = %.lr.ph294, %.preheader272, %.preheader271
  %.2247.lcssa414 = phi double [ %.3248, %.preheader271 ], [ %.0245.lcssa, %.preheader272 ], [ %.3248, %.lr.ph294 ]
  %.0249.lcssa = phi double [ 0.000000e+00, %.preheader271 ], [ 0.000000e+00, %.preheader272 ], [ %.1250, %.lr.ph294 ]
  %115 = icmp sgt i32 %26, 0
  br i1 %115, label %.lr.ph298, label %._crit_edge299

.lr.ph294:                                        ; preds = %.preheader271, %.lr.ph294
  %indvars.iv346 = phi i64 [ %indvars.iv.next347, %.lr.ph294 ], [ 0, %.preheader271 ]
  %.0249292 = phi double [ %.1250, %.lr.ph294 ], [ 0.000000e+00, %.preheader271 ]
  %116 = getelementptr inbounds double, ptr %38, i64 %indvars.iv346
  %117 = load double, ptr %116, align 8, !tbaa !13
  %118 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %117)
  %119 = fcmp olt double %.0249292, %118
  %.1250 = select i1 %119, double %118, double %.0249292
  %indvars.iv.next347 = add nuw nsw i64 %indvars.iv346, 1
  %exitcond350.not = icmp eq i64 %indvars.iv.next347, %34
  br i1 %exitcond350.not, label %.preheader270, label %.lr.ph294, !llvm.loop !20

.lr.ph298:                                        ; preds = %.preheader270, %.lr.ph298
  %indvars.iv351 = phi i64 [ %indvars.iv.next352, %.lr.ph298 ], [ 0, %.preheader270 ]
  %.2251296 = phi double [ %.3252, %.lr.ph298 ], [ %.0249.lcssa, %.preheader270 ]
  %120 = getelementptr inbounds double, ptr %43, i64 %indvars.iv351
  %121 = load double, ptr %120, align 8, !tbaa !13
  %122 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %121)
  %123 = fcmp olt double %.2251296, %122
  %.3252 = select i1 %123, double %122, double %.2251296
  %indvars.iv.next352 = add nuw nsw i64 %indvars.iv351, 1
  %exitcond355.not = icmp eq i64 %indvars.iv.next352, %39
  br i1 %exitcond355.not, label %._crit_edge299, label %.lr.ph298, !llvm.loop !21

._crit_edge299:                                   ; preds = %.lr.ph298, %.preheader270
  %.2251.lcssa = phi double [ %.0249.lcssa, %.preheader270 ], [ %.3252, %.lr.ph298 ]
  %124 = getelementptr inbounds i8, ptr %0, i64 456
  %125 = load double, ptr %124, align 8, !tbaa !22
  %126 = fmul double %.2251.lcssa, %125
  %127 = fcmp olt double %.2247.lcssa414, %126
  br i1 %127, label %128, label %600

128:                                              ; preds = %._crit_edge299
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #11
  %129 = call noundef i32 @_ZN7qpOASES6getMaxEii(i32 noundef 1, i32 noundef %26)
  %130 = zext nneg i32 %129 to i64
  %131 = icmp slt i32 %129, 0
  %132 = shl nuw nsw i64 %130, 3
  %133 = select i1 %131, i64 -1, i64 %132
  %134 = call noalias noundef nonnull ptr @_Znam(i64 noundef %133) #12
  %.pre = load ptr, ptr %16, align 8, !tbaa !35
  br i1 %115, label %.lr.ph303, label %._crit_edge304

.lr.ph303:                                        ; preds = %128
  %135 = getelementptr inbounds i8, ptr %0, i64 40
  %136 = load ptr, ptr %135, align 8, !tbaa !36
  %137 = getelementptr inbounds i8, ptr %0, i64 184
  %138 = load ptr, ptr %137, align 8, !tbaa !37
  %xtraiter = and i64 %39, 1
  %139 = icmp eq i32 %26, 1
  br i1 %139, label %._crit_edge304.loopexit.unr-lcssa, label %.lr.ph303.new

.lr.ph303.new:                                    ; preds = %.lr.ph303
  %unroll_iter = and i64 %39, 2147483646
  br label %140

140:                                              ; preds = %140, %.lr.ph303.new
  %indvars.iv356 = phi i64 [ 0, %.lr.ph303.new ], [ %indvars.iv.next357.1, %140 ]
  %niter = phi i64 [ 0, %.lr.ph303.new ], [ %niter.next.1, %140 ]
  %141 = getelementptr inbounds i32, ptr %.pre, i64 %indvars.iv356
  %142 = load i32, ptr %141, align 4, !tbaa !5
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds double, ptr %136, i64 %143
  %145 = load double, ptr %144, align 8, !tbaa !13
  %146 = getelementptr inbounds double, ptr %138, i64 %143
  %147 = load double, ptr %146, align 8, !tbaa !13
  %148 = fsub double %145, %147
  %149 = getelementptr inbounds double, ptr %134, i64 %indvars.iv356
  store double %148, ptr %149, align 8, !tbaa !13
  %indvars.iv.next357 = or disjoint i64 %indvars.iv356, 1
  %150 = getelementptr inbounds i32, ptr %.pre, i64 %indvars.iv.next357
  %151 = load i32, ptr %150, align 4, !tbaa !5
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds double, ptr %136, i64 %152
  %154 = load double, ptr %153, align 8, !tbaa !13
  %155 = getelementptr inbounds double, ptr %138, i64 %152
  %156 = load double, ptr %155, align 8, !tbaa !13
  %157 = fsub double %154, %156
  %158 = getelementptr inbounds double, ptr %134, i64 %indvars.iv.next357
  store double %157, ptr %158, align 8, !tbaa !13
  %indvars.iv.next357.1 = add nuw nsw i64 %indvars.iv356, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge304.loopexit.unr-lcssa, label %140, !llvm.loop !38

._crit_edge304.loopexit.unr-lcssa:                ; preds = %140, %.lr.ph303
  %indvars.iv356.unr = phi i64 [ 0, %.lr.ph303 ], [ %indvars.iv.next357.1, %140 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge304, label %._crit_edge304.loopexit.epilog-lcssa

._crit_edge304.loopexit.epilog-lcssa:             ; preds = %._crit_edge304.loopexit.unr-lcssa
  %159 = getelementptr inbounds i32, ptr %.pre, i64 %indvars.iv356.unr
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds double, ptr %136, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !13
  %164 = getelementptr inbounds double, ptr %138, i64 %161
  %165 = load double, ptr %164, align 8, !tbaa !13
  %166 = fsub double %163, %165
  %167 = getelementptr inbounds double, ptr %134, i64 %indvars.iv356.unr
  store double %166, ptr %167, align 8, !tbaa !13
  br label %._crit_edge304

._crit_edge304:                                   ; preds = %._crit_edge304.loopexit.epilog-lcssa, %._crit_edge304.loopexit.unr-lcssa, %128
  %168 = getelementptr inbounds i8, ptr %0, i64 352
  %169 = load double, ptr %168, align 8, !tbaa !39
  store double %169, ptr %19, align 8, !tbaa !13
  store i32 -1, ptr %11, align 4, !tbaa !5
  %170 = getelementptr inbounds i8, ptr %0, i64 336
  %171 = load double, ptr %170, align 8, !tbaa !40
  %172 = getelementptr inbounds i8, ptr %0, i64 344
  %173 = load double, ptr %172, align 8, !tbaa !41
  %174 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %26, ptr noundef %.pre, ptr noundef nonnull %134, ptr noundef nonnull %43, double noundef %171, double noundef %173, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 4 dereferenceable(4) %11)
  %175 = icmp eq i32 %1, 1
  br i1 %175, label %176, label %195

176:                                              ; preds = %._crit_edge304
  %177 = load i32, ptr %8, align 4, !tbaa !5
  %178 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %31, i32 noundef %177)
  %179 = icmp eq i32 %178, -1
  br i1 %179, label %180, label %195

180:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #11
  store double 1.000000e+00, ptr %21, align 8, !tbaa !13
  %181 = getelementptr inbounds i8, ptr %0, i64 40
  %182 = load ptr, ptr %181, align 8, !tbaa !36
  %183 = load i32, ptr %8, align 4, !tbaa !5
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds double, ptr %182, i64 %184
  %186 = load double, ptr %185, align 8, !tbaa !13
  %187 = getelementptr inbounds i8, ptr %0, i64 184
  %188 = load ptr, ptr %187, align 8, !tbaa !37
  %189 = getelementptr inbounds double, ptr %188, i64 %184
  %190 = load double, ptr %189, align 8, !tbaa !13
  %191 = fsub double %186, %190
  store double %191, ptr %134, align 8, !tbaa !13
  %192 = load double, ptr %170, align 8, !tbaa !40
  %193 = load double, ptr %172, align 8, !tbaa !41
  %194 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef 1, ptr noundef nonnull %8, ptr noundef nonnull %134, ptr noundef nonnull %21, double noundef %192, double noundef %193, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 4 dereferenceable(4) %11)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #11
  br label %195

195:                                              ; preds = %180, %176, %._crit_edge304
  br i1 %115, label %.lr.ph307, label %._crit_edge310

.lr.ph307:                                        ; preds = %195
  %196 = load ptr, ptr %16, align 8, !tbaa !35
  %197 = getelementptr inbounds i8, ptr %0, i64 184
  %198 = load ptr, ptr %197, align 8, !tbaa !37
  %199 = getelementptr inbounds i8, ptr %0, i64 32
  %200 = load ptr, ptr %199, align 8, !tbaa !42
  %xtraiter482 = and i64 %39, 1
  %201 = icmp eq i32 %26, 1
  br i1 %201, label %.preheader269.unr-lcssa, label %.lr.ph307.new

.lr.ph307.new:                                    ; preds = %.lr.ph307
  %unroll_iter484 = and i64 %39, 2147483646
  br label %216

.preheader269.unr-lcssa:                          ; preds = %216, %.lr.ph307
  %indvars.iv361.unr = phi i64 [ 0, %.lr.ph307 ], [ %indvars.iv.next362.1, %216 ]
  %lcmp.mod483.not = icmp eq i64 %xtraiter482, 0
  br i1 %lcmp.mod483.not, label %.preheader269, label %.preheader269.epilog-lcssa

.preheader269.epilog-lcssa:                       ; preds = %.preheader269.unr-lcssa
  %202 = getelementptr inbounds i32, ptr %196, i64 %indvars.iv361.unr
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds double, ptr %198, i64 %204
  %206 = load double, ptr %205, align 8, !tbaa !13
  %207 = getelementptr inbounds double, ptr %200, i64 %204
  %208 = load double, ptr %207, align 8, !tbaa !13
  %209 = fsub double %206, %208
  %210 = getelementptr inbounds double, ptr %134, i64 %indvars.iv361.unr
  store double %209, ptr %210, align 8, !tbaa !13
  br label %.preheader269

.preheader269:                                    ; preds = %.preheader269.unr-lcssa, %.preheader269.epilog-lcssa
  br i1 %115, label %.lr.ph309.preheader, label %._crit_edge310

.lr.ph309.preheader:                              ; preds = %.preheader269
  %min.iters.check = icmp ult i32 %26, 4
  br i1 %min.iters.check, label %.lr.ph309.preheader480, label %vector.ph

.lr.ph309.preheader480:                           ; preds = %middle.block, %.lr.ph309.preheader
  %indvars.iv366.ph = phi i64 [ 0, %.lr.ph309.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph309

vector.ph:                                        ; preds = %.lr.ph309.preheader
  %n.vec = and i64 %39, 2147483644
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %211 = getelementptr inbounds double, ptr %43, i64 %index
  %212 = getelementptr inbounds i8, ptr %211, i64 16
  %wide.load = load <2 x double>, ptr %211, align 8, !tbaa !13
  %wide.load416 = load <2 x double>, ptr %212, align 8, !tbaa !13
  %213 = fneg <2 x double> %wide.load
  %214 = fneg <2 x double> %wide.load416
  store <2 x double> %213, ptr %211, align 8, !tbaa !13
  store <2 x double> %214, ptr %212, align 8, !tbaa !13
  %index.next = add nuw i64 %index, 4
  %215 = icmp eq i64 %index.next, %n.vec
  br i1 %215, label %middle.block, label %vector.body, !llvm.loop !43

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %39
  br i1 %cmp.n, label %._crit_edge310, label %.lr.ph309.preheader480

216:                                              ; preds = %216, %.lr.ph307.new
  %indvars.iv361 = phi i64 [ 0, %.lr.ph307.new ], [ %indvars.iv.next362.1, %216 ]
  %niter485 = phi i64 [ 0, %.lr.ph307.new ], [ %niter485.next.1, %216 ]
  %217 = getelementptr inbounds i32, ptr %196, i64 %indvars.iv361
  %218 = load i32, ptr %217, align 4, !tbaa !5
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds double, ptr %198, i64 %219
  %221 = load double, ptr %220, align 8, !tbaa !13
  %222 = getelementptr inbounds double, ptr %200, i64 %219
  %223 = load double, ptr %222, align 8, !tbaa !13
  %224 = fsub double %221, %223
  %225 = getelementptr inbounds double, ptr %134, i64 %indvars.iv361
  store double %224, ptr %225, align 8, !tbaa !13
  %indvars.iv.next362 = or disjoint i64 %indvars.iv361, 1
  %226 = getelementptr inbounds i32, ptr %196, i64 %indvars.iv.next362
  %227 = load i32, ptr %226, align 4, !tbaa !5
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds double, ptr %198, i64 %228
  %230 = load double, ptr %229, align 8, !tbaa !13
  %231 = getelementptr inbounds double, ptr %200, i64 %228
  %232 = load double, ptr %231, align 8, !tbaa !13
  %233 = fsub double %230, %232
  %234 = getelementptr inbounds double, ptr %134, i64 %indvars.iv.next362
  store double %233, ptr %234, align 8, !tbaa !13
  %indvars.iv.next362.1 = add nuw nsw i64 %indvars.iv361, 2
  %niter485.next.1 = add i64 %niter485, 2
  %niter485.ncmp.1 = icmp eq i64 %niter485.next.1, %unroll_iter484
  br i1 %niter485.ncmp.1, label %.preheader269.unr-lcssa, label %216, !llvm.loop !46

.lr.ph309:                                        ; preds = %.lr.ph309.preheader480, %.lr.ph309
  %indvars.iv366 = phi i64 [ %indvars.iv.next367, %.lr.ph309 ], [ %indvars.iv366.ph, %.lr.ph309.preheader480 ]
  %235 = getelementptr inbounds double, ptr %43, i64 %indvars.iv366
  %236 = load double, ptr %235, align 8, !tbaa !13
  %237 = fneg double %236
  store double %237, ptr %235, align 8, !tbaa !13
  %indvars.iv.next367 = add nuw nsw i64 %indvars.iv366, 1
  %exitcond370.not = icmp eq i64 %indvars.iv.next367, %39
  br i1 %exitcond370.not, label %._crit_edge310, label %.lr.ph309, !llvm.loop !47

._crit_edge310:                                   ; preds = %.lr.ph309, %middle.block, %195, %.preheader269
  %238 = load double, ptr %168, align 8, !tbaa !39
  store double %238, ptr %17, align 8, !tbaa !13
  store i32 -1, ptr %9, align 4, !tbaa !5
  %239 = load ptr, ptr %16, align 8, !tbaa !35
  %240 = load double, ptr %170, align 8, !tbaa !40
  %241 = load double, ptr %172, align 8, !tbaa !41
  %242 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %26, ptr noundef %239, ptr noundef nonnull %134, ptr noundef nonnull %43, double noundef %240, double noundef %241, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 4 dereferenceable(4) %9)
  br i1 %175, label %243, label %262

243:                                              ; preds = %._crit_edge310
  %244 = load i32, ptr %8, align 4, !tbaa !5
  %245 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %31, i32 noundef %244)
  %246 = icmp eq i32 %245, 1
  br i1 %246, label %247, label %262

247:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #11
  store double 1.000000e+00, ptr %22, align 8, !tbaa !13
  %248 = getelementptr inbounds i8, ptr %0, i64 184
  %249 = load ptr, ptr %248, align 8, !tbaa !37
  %250 = load i32, ptr %8, align 4, !tbaa !5
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds double, ptr %249, i64 %251
  %253 = load double, ptr %252, align 8, !tbaa !13
  %254 = getelementptr inbounds i8, ptr %0, i64 32
  %255 = load ptr, ptr %254, align 8, !tbaa !42
  %256 = getelementptr inbounds double, ptr %255, i64 %251
  %257 = load double, ptr %256, align 8, !tbaa !13
  %258 = fsub double %253, %257
  store double %258, ptr %134, align 8, !tbaa !13
  %259 = load double, ptr %170, align 8, !tbaa !40
  %260 = load double, ptr %172, align 8, !tbaa !41
  %261 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef 1, ptr noundef nonnull %8, ptr noundef nonnull %134, ptr noundef nonnull %22, double noundef %259, double noundef %260, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 4 dereferenceable(4) %9)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #11
  br label %262

262:                                              ; preds = %247, %243, %._crit_edge310
  br i1 %115, label %.lr.ph313.preheader, label %._crit_edge314

.lr.ph313.preheader:                              ; preds = %262
  %min.iters.check419 = icmp ult i32 %26, 4
  br i1 %min.iters.check419, label %.lr.ph313.preheader479, label %vector.ph420

vector.ph420:                                     ; preds = %.lr.ph313.preheader
  %n.vec422 = and i64 %39, 2147483644
  br label %vector.body424

vector.body424:                                   ; preds = %vector.body424, %vector.ph420
  %index425 = phi i64 [ 0, %vector.ph420 ], [ %index.next428, %vector.body424 ]
  %263 = getelementptr inbounds double, ptr %43, i64 %index425
  %264 = getelementptr inbounds i8, ptr %263, i64 16
  %wide.load426 = load <2 x double>, ptr %263, align 8, !tbaa !13
  %wide.load427 = load <2 x double>, ptr %264, align 8, !tbaa !13
  %265 = fneg <2 x double> %wide.load426
  %266 = fneg <2 x double> %wide.load427
  store <2 x double> %265, ptr %263, align 8, !tbaa !13
  store <2 x double> %266, ptr %264, align 8, !tbaa !13
  %index.next428 = add nuw i64 %index425, 4
  %267 = icmp eq i64 %index.next428, %n.vec422
  br i1 %267, label %middle.block417, label %vector.body424, !llvm.loop !48

middle.block417:                                  ; preds = %vector.body424
  %cmp.n429 = icmp eq i64 %n.vec422, %39
  br i1 %cmp.n429, label %._crit_edge314, label %.lr.ph313.preheader479

.lr.ph313.preheader479:                           ; preds = %middle.block417, %.lr.ph313.preheader
  %indvars.iv371.ph = phi i64 [ 0, %.lr.ph313.preheader ], [ %n.vec422, %middle.block417 ]
  br label %.lr.ph313

.lr.ph313:                                        ; preds = %.lr.ph313.preheader479, %.lr.ph313
  %indvars.iv371 = phi i64 [ %indvars.iv.next372, %.lr.ph313 ], [ %indvars.iv371.ph, %.lr.ph313.preheader479 ]
  %268 = getelementptr inbounds double, ptr %43, i64 %indvars.iv371
  %269 = load double, ptr %268, align 8, !tbaa !13
  %270 = fneg double %269
  store double %270, ptr %268, align 8, !tbaa !13
  %indvars.iv.next372 = add nuw nsw i64 %indvars.iv371, 1
  %exitcond375.not = icmp eq i64 %indvars.iv.next372, %39
  br i1 %exitcond375.not, label %._crit_edge314, label %.lr.ph313, !llvm.loop !49

._crit_edge314:                                   ; preds = %.lr.ph313, %middle.block417, %262
  call void @_ZdaPv(ptr noundef nonnull %134) #13
  %271 = zext i32 %30 to i64
  %272 = icmp slt i32 %30, 0
  %273 = shl nuw nsw i64 %271, 3
  %274 = select i1 %272, i64 -1, i64 %273
  %275 = call noalias noundef nonnull ptr @_Znam(i64 noundef %274) #12
  %276 = getelementptr inbounds i8, ptr %0, i64 808
  %277 = load ptr, ptr %276, align 8, !tbaa !50
  %278 = call noundef ptr @_ZN7qpOASES11Constraints11getInactiveEv(ptr noundef nonnull align 8 dereferenceable(120) %52)
  %279 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %31)
  %280 = load ptr, ptr %277, align 8, !tbaa !15
  %281 = getelementptr inbounds i8, ptr %280, i64 136
  %282 = load ptr, ptr %281, align 8
  %283 = call noundef i32 %282(ptr noundef nonnull align 8 dereferenceable(12) %277, ptr noundef %278, ptr noundef %279, i32 noundef 1, double noundef 1.000000e+00, ptr noundef nonnull %38, i32 noundef %29, double noundef 0.000000e+00, ptr noundef nonnull %275, i32 noundef %30, i32 noundef 1)
  %284 = load ptr, ptr %276, align 8, !tbaa !50
  %285 = call noundef ptr @_ZN7qpOASES11Constraints11getInactiveEv(ptr noundef nonnull align 8 dereferenceable(120) %52)
  %286 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %31)
  %287 = load ptr, ptr %284, align 8, !tbaa !15
  %288 = getelementptr inbounds i8, ptr %287, i64 136
  %289 = load ptr, ptr %288, align 8
  %290 = call noundef i32 %289(ptr noundef nonnull align 8 dereferenceable(12) %284, ptr noundef %285, ptr noundef %286, i32 noundef 1, double noundef 1.000000e+00, ptr noundef nonnull %43, i32 noundef %26, double noundef 1.000000e+00, ptr noundef nonnull %275, i32 noundef %30, i32 noundef 1)
  %291 = call noalias noundef nonnull ptr @_Znam(i64 noundef %274) #12
  %292 = icmp sgt i32 %30, 0
  %.pre411 = load ptr, ptr %15, align 8, !tbaa !35
  br i1 %292, label %.lr.ph317, label %._crit_edge318

.lr.ph317:                                        ; preds = %._crit_edge314
  %293 = getelementptr inbounds i8, ptr %0, i64 992
  %294 = load ptr, ptr %293, align 8, !tbaa !52
  %xtraiter487 = and i64 %271, 3
  %295 = icmp ult i32 %30, 4
  br i1 %295, label %._crit_edge318.loopexit.unr-lcssa, label %.lr.ph317.new

.lr.ph317.new:                                    ; preds = %.lr.ph317
  %unroll_iter489 = and i64 %271, 2147483644
  br label %296

296:                                              ; preds = %296, %.lr.ph317.new
  %indvars.iv376 = phi i64 [ 0, %.lr.ph317.new ], [ %indvars.iv.next377.3, %296 ]
  %niter490 = phi i64 [ 0, %.lr.ph317.new ], [ %niter490.next.3, %296 ]
  %297 = getelementptr inbounds i32, ptr %.pre411, i64 %indvars.iv376
  %298 = load i32, ptr %297, align 4, !tbaa !5
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %294, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !13
  %302 = getelementptr inbounds double, ptr %291, i64 %indvars.iv376
  store double %301, ptr %302, align 8, !tbaa !13
  %indvars.iv.next377 = or disjoint i64 %indvars.iv376, 1
  %303 = getelementptr inbounds i32, ptr %.pre411, i64 %indvars.iv.next377
  %304 = load i32, ptr %303, align 4, !tbaa !5
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %294, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !13
  %308 = getelementptr inbounds double, ptr %291, i64 %indvars.iv.next377
  store double %307, ptr %308, align 8, !tbaa !13
  %indvars.iv.next377.1 = or disjoint i64 %indvars.iv376, 2
  %309 = getelementptr inbounds i32, ptr %.pre411, i64 %indvars.iv.next377.1
  %310 = load i32, ptr %309, align 4, !tbaa !5
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds double, ptr %294, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !13
  %314 = getelementptr inbounds double, ptr %291, i64 %indvars.iv.next377.1
  store double %313, ptr %314, align 8, !tbaa !13
  %indvars.iv.next377.2 = or disjoint i64 %indvars.iv376, 3
  %315 = getelementptr inbounds i32, ptr %.pre411, i64 %indvars.iv.next377.2
  %316 = load i32, ptr %315, align 4, !tbaa !5
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds double, ptr %294, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !13
  %320 = getelementptr inbounds double, ptr %291, i64 %indvars.iv.next377.2
  store double %319, ptr %320, align 8, !tbaa !13
  %indvars.iv.next377.3 = add nuw nsw i64 %indvars.iv376, 4
  %niter490.next.3 = add i64 %niter490, 4
  %niter490.ncmp.3 = icmp eq i64 %niter490.next.3, %unroll_iter489
  br i1 %niter490.ncmp.3, label %._crit_edge318.loopexit.unr-lcssa, label %296, !llvm.loop !53

._crit_edge318.loopexit.unr-lcssa:                ; preds = %296, %.lr.ph317
  %indvars.iv376.unr = phi i64 [ 0, %.lr.ph317 ], [ %indvars.iv.next377.3, %296 ]
  %lcmp.mod488.not = icmp eq i64 %xtraiter487, 0
  br i1 %lcmp.mod488.not, label %._crit_edge318, label %.epil.preheader486

.epil.preheader486:                               ; preds = %._crit_edge318.loopexit.unr-lcssa, %.epil.preheader486
  %indvars.iv376.epil = phi i64 [ %indvars.iv.next377.epil, %.epil.preheader486 ], [ %indvars.iv376.unr, %._crit_edge318.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader486 ], [ 0, %._crit_edge318.loopexit.unr-lcssa ]
  %321 = getelementptr inbounds i32, ptr %.pre411, i64 %indvars.iv376.epil
  %322 = load i32, ptr %321, align 4, !tbaa !5
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds double, ptr %294, i64 %323
  %325 = load double, ptr %324, align 8, !tbaa !13
  %326 = getelementptr inbounds double, ptr %291, i64 %indvars.iv376.epil
  store double %325, ptr %326, align 8, !tbaa !13
  %indvars.iv.next377.epil = add nuw nsw i64 %indvars.iv376.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter487
  br i1 %epil.iter.cmp.not, label %._crit_edge318, label %.epil.preheader486, !llvm.loop !54

._crit_edge318:                                   ; preds = %._crit_edge318.loopexit.unr-lcssa, %.epil.preheader486, %._crit_edge314
  %327 = load double, ptr %168, align 8, !tbaa !39
  store double %327, ptr %20, align 8, !tbaa !13
  store i32 -1, ptr %12, align 4, !tbaa !5
  %328 = load double, ptr %170, align 8, !tbaa !40
  %329 = load double, ptr %172, align 8, !tbaa !41
  %330 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %30, ptr noundef %.pre411, ptr noundef nonnull %291, ptr noundef nonnull %275, double noundef %328, double noundef %329, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(4) %12)
  br i1 %.not, label %331, label %344

331:                                              ; preds = %._crit_edge318
  %332 = load i32, ptr %8, align 4, !tbaa !5
  %333 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %52, i32 noundef %332)
  %334 = icmp eq i32 %333, -1
  br i1 %334, label %335, label %344

335:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #11
  store double 1.000000e+00, ptr %23, align 8, !tbaa !13
  %336 = getelementptr inbounds i8, ptr %0, i64 992
  %337 = load ptr, ptr %336, align 8, !tbaa !52
  %338 = load i32, ptr %8, align 4, !tbaa !5
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds double, ptr %337, i64 %339
  %341 = load double, ptr %170, align 8, !tbaa !40
  %342 = load double, ptr %172, align 8, !tbaa !41
  %343 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef 1, ptr noundef nonnull %8, ptr noundef %340, ptr noundef nonnull %23, double noundef %341, double noundef %342, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(4) %12)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  br label %344

344:                                              ; preds = %335, %331, %._crit_edge318
  br i1 %292, label %.lr.ph321, label %._crit_edge324

.lr.ph321:                                        ; preds = %344
  %345 = load ptr, ptr %15, align 8, !tbaa !35
  %346 = getelementptr inbounds i8, ptr %0, i64 984
  %347 = load ptr, ptr %346, align 8, !tbaa !56
  %xtraiter492 = and i64 %271, 3
  %348 = icmp ult i32 %30, 4
  br i1 %348, label %.preheader268.unr-lcssa, label %.lr.ph321.new

.lr.ph321.new:                                    ; preds = %.lr.ph321
  %unroll_iter495 = and i64 %271, 2147483644
  br label %360

.preheader268.unr-lcssa:                          ; preds = %360, %.lr.ph321
  %indvars.iv381.unr = phi i64 [ 0, %.lr.ph321 ], [ %indvars.iv.next382.3, %360 ]
  %lcmp.mod494.not = icmp eq i64 %xtraiter492, 0
  br i1 %lcmp.mod494.not, label %.preheader268, label %.epil.preheader491

.epil.preheader491:                               ; preds = %.preheader268.unr-lcssa, %.epil.preheader491
  %indvars.iv381.epil = phi i64 [ %indvars.iv.next382.epil, %.epil.preheader491 ], [ %indvars.iv381.unr, %.preheader268.unr-lcssa ]
  %epil.iter493 = phi i64 [ %epil.iter493.next, %.epil.preheader491 ], [ 0, %.preheader268.unr-lcssa ]
  %349 = getelementptr inbounds i32, ptr %345, i64 %indvars.iv381.epil
  %350 = load i32, ptr %349, align 4, !tbaa !5
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %347, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !13
  %354 = getelementptr inbounds double, ptr %291, i64 %indvars.iv381.epil
  store double %353, ptr %354, align 8, !tbaa !13
  %indvars.iv.next382.epil = add nuw nsw i64 %indvars.iv381.epil, 1
  %epil.iter493.next = add i64 %epil.iter493, 1
  %epil.iter493.cmp.not = icmp eq i64 %epil.iter493.next, %xtraiter492
  br i1 %epil.iter493.cmp.not, label %.preheader268, label %.epil.preheader491, !llvm.loop !57

.preheader268:                                    ; preds = %.epil.preheader491, %.preheader268.unr-lcssa
  br i1 %292, label %.lr.ph323.preheader, label %._crit_edge324

.lr.ph323.preheader:                              ; preds = %.preheader268
  %min.iters.check432 = icmp ult i32 %30, 4
  br i1 %min.iters.check432, label %.lr.ph323.preheader478, label %vector.ph433

.lr.ph323.preheader478:                           ; preds = %middle.block430, %.lr.ph323.preheader
  %indvars.iv386.ph = phi i64 [ 0, %.lr.ph323.preheader ], [ %n.vec435, %middle.block430 ]
  br label %.lr.ph323

vector.ph433:                                     ; preds = %.lr.ph323.preheader
  %n.vec435 = and i64 %271, 2147483644
  br label %vector.body437

vector.body437:                                   ; preds = %vector.body437, %vector.ph433
  %index438 = phi i64 [ 0, %vector.ph433 ], [ %index.next441, %vector.body437 ]
  %355 = getelementptr inbounds double, ptr %275, i64 %index438
  %356 = getelementptr inbounds i8, ptr %355, i64 16
  %wide.load439 = load <2 x double>, ptr %355, align 8, !tbaa !13
  %wide.load440 = load <2 x double>, ptr %356, align 8, !tbaa !13
  %357 = fneg <2 x double> %wide.load439
  %358 = fneg <2 x double> %wide.load440
  store <2 x double> %357, ptr %355, align 8, !tbaa !13
  store <2 x double> %358, ptr %356, align 8, !tbaa !13
  %index.next441 = add nuw i64 %index438, 4
  %359 = icmp eq i64 %index.next441, %n.vec435
  br i1 %359, label %middle.block430, label %vector.body437, !llvm.loop !58

middle.block430:                                  ; preds = %vector.body437
  %cmp.n442 = icmp eq i64 %n.vec435, %271
  br i1 %cmp.n442, label %._crit_edge324, label %.lr.ph323.preheader478

360:                                              ; preds = %360, %.lr.ph321.new
  %indvars.iv381 = phi i64 [ 0, %.lr.ph321.new ], [ %indvars.iv.next382.3, %360 ]
  %niter496 = phi i64 [ 0, %.lr.ph321.new ], [ %niter496.next.3, %360 ]
  %361 = getelementptr inbounds i32, ptr %345, i64 %indvars.iv381
  %362 = load i32, ptr %361, align 4, !tbaa !5
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds double, ptr %347, i64 %363
  %365 = load double, ptr %364, align 8, !tbaa !13
  %366 = getelementptr inbounds double, ptr %291, i64 %indvars.iv381
  store double %365, ptr %366, align 8, !tbaa !13
  %indvars.iv.next382 = or disjoint i64 %indvars.iv381, 1
  %367 = getelementptr inbounds i32, ptr %345, i64 %indvars.iv.next382
  %368 = load i32, ptr %367, align 4, !tbaa !5
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %347, i64 %369
  %371 = load double, ptr %370, align 8, !tbaa !13
  %372 = getelementptr inbounds double, ptr %291, i64 %indvars.iv.next382
  store double %371, ptr %372, align 8, !tbaa !13
  %indvars.iv.next382.1 = or disjoint i64 %indvars.iv381, 2
  %373 = getelementptr inbounds i32, ptr %345, i64 %indvars.iv.next382.1
  %374 = load i32, ptr %373, align 4, !tbaa !5
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds double, ptr %347, i64 %375
  %377 = load double, ptr %376, align 8, !tbaa !13
  %378 = getelementptr inbounds double, ptr %291, i64 %indvars.iv.next382.1
  store double %377, ptr %378, align 8, !tbaa !13
  %indvars.iv.next382.2 = or disjoint i64 %indvars.iv381, 3
  %379 = getelementptr inbounds i32, ptr %345, i64 %indvars.iv.next382.2
  %380 = load i32, ptr %379, align 4, !tbaa !5
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds double, ptr %347, i64 %381
  %383 = load double, ptr %382, align 8, !tbaa !13
  %384 = getelementptr inbounds double, ptr %291, i64 %indvars.iv.next382.2
  store double %383, ptr %384, align 8, !tbaa !13
  %indvars.iv.next382.3 = add nuw nsw i64 %indvars.iv381, 4
  %niter496.next.3 = add i64 %niter496, 4
  %niter496.ncmp.3 = icmp eq i64 %niter496.next.3, %unroll_iter495
  br i1 %niter496.ncmp.3, label %.preheader268.unr-lcssa, label %360, !llvm.loop !59

.lr.ph323:                                        ; preds = %.lr.ph323.preheader478, %.lr.ph323
  %indvars.iv386 = phi i64 [ %indvars.iv.next387, %.lr.ph323 ], [ %indvars.iv386.ph, %.lr.ph323.preheader478 ]
  %385 = getelementptr inbounds double, ptr %275, i64 %indvars.iv386
  %386 = load double, ptr %385, align 8, !tbaa !13
  %387 = fneg double %386
  store double %387, ptr %385, align 8, !tbaa !13
  %indvars.iv.next387 = add nuw nsw i64 %indvars.iv386, 1
  %exitcond390.not = icmp eq i64 %indvars.iv.next387, %271
  br i1 %exitcond390.not, label %._crit_edge324, label %.lr.ph323, !llvm.loop !60

._crit_edge324:                                   ; preds = %.lr.ph323, %middle.block430, %344, %.preheader268
  %388 = load double, ptr %168, align 8, !tbaa !39
  store double %388, ptr %18, align 8, !tbaa !13
  store i32 -1, ptr %10, align 4, !tbaa !5
  %389 = load ptr, ptr %15, align 8, !tbaa !35
  %390 = load double, ptr %170, align 8, !tbaa !40
  %391 = load double, ptr %172, align 8, !tbaa !41
  %392 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %30, ptr noundef %389, ptr noundef nonnull %291, ptr noundef nonnull %275, double noundef %390, double noundef %391, ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 4 dereferenceable(4) %10)
  br i1 %.not, label %393, label %406

393:                                              ; preds = %._crit_edge324
  %394 = load i32, ptr %8, align 4, !tbaa !5
  %395 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %52, i32 noundef %394)
  %396 = icmp eq i32 %395, 1
  br i1 %396, label %397, label %406

397:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #11
  store double 1.000000e+00, ptr %24, align 8, !tbaa !13
  %398 = getelementptr inbounds i8, ptr %0, i64 984
  %399 = load ptr, ptr %398, align 8, !tbaa !56
  %400 = load i32, ptr %8, align 4, !tbaa !5
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds double, ptr %399, i64 %401
  %403 = load double, ptr %170, align 8, !tbaa !40
  %404 = load double, ptr %172, align 8, !tbaa !41
  %405 = call noundef i32 @_ZNK7qpOASES8QProblem21performPlainRatioTestEiPKiPKdS4_ddRdRi(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef 1, ptr noundef nonnull %8, ptr noundef %402, ptr noundef nonnull %24, double noundef %403, double noundef %404, ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 4 dereferenceable(4) %10)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #11
  br label %406

406:                                              ; preds = %397, %393, %._crit_edge324
  %407 = load double, ptr %168, align 8, !tbaa !39
  %408 = load double, ptr %20, align 8, !tbaa !13
  %409 = fcmp olt double %408, %407
  br i1 %409, label %410, label %412

410:                                              ; preds = %406
  store i32 1, ptr %6, align 4, !tbaa !11
  store i32 0, ptr %4, align 4, !tbaa !9
  %411 = load i32, ptr %12, align 4, !tbaa !5
  store i32 %411, ptr %5, align 4, !tbaa !5
  br label %412

412:                                              ; preds = %410, %406
  %.0241 = phi double [ %408, %410 ], [ %407, %406 ]
  %413 = load double, ptr %18, align 8, !tbaa !13
  %414 = fcmp olt double %413, %.0241
  br i1 %414, label %415, label %417

415:                                              ; preds = %412
  store i32 -1, ptr %6, align 4, !tbaa !11
  store i32 0, ptr %4, align 4, !tbaa !9
  %416 = load i32, ptr %10, align 4, !tbaa !5
  store i32 %416, ptr %5, align 4, !tbaa !5
  br label %417

417:                                              ; preds = %415, %412
  %.1242 = phi double [ %413, %415 ], [ %.0241, %412 ]
  %418 = load double, ptr %19, align 8, !tbaa !13
  %419 = fcmp olt double %418, %.1242
  br i1 %419, label %420, label %422

420:                                              ; preds = %417
  store i32 1, ptr %6, align 4, !tbaa !11
  store i32 1, ptr %4, align 4, !tbaa !9
  %421 = load i32, ptr %11, align 4, !tbaa !5
  store i32 %421, ptr %5, align 4, !tbaa !5
  br label %422

422:                                              ; preds = %420, %417
  %.2243 = phi double [ %418, %420 ], [ %.1242, %417 ]
  %423 = load double, ptr %17, align 8, !tbaa !13
  %424 = fcmp olt double %423, %.2243
  br i1 %424, label %425, label %427

425:                                              ; preds = %422
  store i32 -1, ptr %6, align 4, !tbaa !11
  store i32 1, ptr %4, align 4, !tbaa !9
  %426 = load i32, ptr %9, align 4, !tbaa !5
  store i32 %426, ptr %5, align 4, !tbaa !5
  br label %427

427:                                              ; preds = %425, %422
  %.3244 = phi double [ %423, %425 ], [ %.2243, %422 ]
  %428 = fcmp ult double %.3244, %407
  br i1 %428, label %.preheader267, label %433

.preheader267:                                    ; preds = %427
  br i1 %115, label %.lr.ph326, label %.preheader266

.lr.ph326:                                        ; preds = %.preheader267
  %429 = getelementptr inbounds i8, ptr %0, i64 184
  %430 = load ptr, ptr %429, align 8, !tbaa !37
  %431 = load ptr, ptr %16, align 8, !tbaa !35
  %xtraiter498 = and i64 %39, 1
  %432 = icmp eq i32 %26, 1
  br i1 %432, label %.preheader266.loopexit.unr-lcssa, label %.lr.ph326.new

.lr.ph326.new:                                    ; preds = %.lr.ph326
  %unroll_iter501 = and i64 %39, 2147483646
  br label %447

433:                                              ; preds = %427
  %434 = getelementptr inbounds i8, ptr %0, i64 216
  store i32 1, ptr %434, align 8, !tbaa !61
  br label %599

.preheader266.loopexit.unr-lcssa:                 ; preds = %447, %.lr.ph326
  %indvars.iv391.unr = phi i64 [ 0, %.lr.ph326 ], [ %indvars.iv.next392.1, %447 ]
  %lcmp.mod500.not = icmp eq i64 %xtraiter498, 0
  br i1 %lcmp.mod500.not, label %.preheader266, label %.preheader266.loopexit.epilog-lcssa

.preheader266.loopexit.epilog-lcssa:              ; preds = %.preheader266.loopexit.unr-lcssa
  %435 = getelementptr inbounds double, ptr %43, i64 %indvars.iv391.unr
  %436 = load double, ptr %435, align 8, !tbaa !13
  %437 = getelementptr inbounds i32, ptr %431, i64 %indvars.iv391.unr
  %438 = load i32, ptr %437, align 4, !tbaa !5
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %430, i64 %439
  %441 = load double, ptr %440, align 8, !tbaa !13
  %442 = call double @llvm.fmuladd.f64(double %.3244, double %436, double %441)
  store double %442, ptr %440, align 8, !tbaa !13
  br label %.preheader266

.preheader266:                                    ; preds = %.preheader266.loopexit.epilog-lcssa, %.preheader266.loopexit.unr-lcssa, %.preheader267
  %443 = getelementptr inbounds i8, ptr %0, i64 184
  %444 = load ptr, ptr %443, align 8, !tbaa !37
  br i1 %106, label %.lr.ph328, label %._crit_edge329

.lr.ph328:                                        ; preds = %.preheader266
  %445 = load ptr, ptr %13, align 8, !tbaa !35
  %xtraiter504 = and i64 %34, 1
  %446 = icmp eq i32 %29, 1
  br i1 %446, label %._crit_edge329.loopexit.unr-lcssa, label %.lr.ph328.new

.lr.ph328.new:                                    ; preds = %.lr.ph328
  %unroll_iter507 = and i64 %34, 2147483646
  br label %464

447:                                              ; preds = %447, %.lr.ph326.new
  %indvars.iv391 = phi i64 [ 0, %.lr.ph326.new ], [ %indvars.iv.next392.1, %447 ]
  %niter502 = phi i64 [ 0, %.lr.ph326.new ], [ %niter502.next.1, %447 ]
  %448 = getelementptr inbounds double, ptr %43, i64 %indvars.iv391
  %449 = load double, ptr %448, align 8, !tbaa !13
  %450 = getelementptr inbounds i32, ptr %431, i64 %indvars.iv391
  %451 = load i32, ptr %450, align 4, !tbaa !5
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %430, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !13
  %455 = call double @llvm.fmuladd.f64(double %.3244, double %449, double %454)
  store double %455, ptr %453, align 8, !tbaa !13
  %indvars.iv.next392 = or disjoint i64 %indvars.iv391, 1
  %456 = getelementptr inbounds double, ptr %43, i64 %indvars.iv.next392
  %457 = load double, ptr %456, align 8, !tbaa !13
  %458 = getelementptr inbounds i32, ptr %431, i64 %indvars.iv.next392
  %459 = load i32, ptr %458, align 4, !tbaa !5
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %430, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !13
  %463 = call double @llvm.fmuladd.f64(double %.3244, double %457, double %462)
  store double %463, ptr %461, align 8, !tbaa !13
  %indvars.iv.next392.1 = add nuw nsw i64 %indvars.iv391, 2
  %niter502.next.1 = add i64 %niter502, 2
  %niter502.ncmp.1 = icmp eq i64 %niter502.next.1, %unroll_iter501
  br i1 %niter502.ncmp.1, label %.preheader266.loopexit.unr-lcssa, label %447, !llvm.loop !62

464:                                              ; preds = %464, %.lr.ph328.new
  %indvars.iv396 = phi i64 [ 0, %.lr.ph328.new ], [ %indvars.iv.next397.1, %464 ]
  %niter508 = phi i64 [ 0, %.lr.ph328.new ], [ %niter508.next.1, %464 ]
  %465 = getelementptr inbounds double, ptr %38, i64 %indvars.iv396
  %466 = load double, ptr %465, align 8, !tbaa !13
  %467 = getelementptr inbounds i32, ptr %445, i64 %indvars.iv396
  %468 = load i32, ptr %467, align 4, !tbaa !5
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds double, ptr %444, i64 %469
  %471 = load double, ptr %470, align 8, !tbaa !13
  %472 = call double @llvm.fmuladd.f64(double %.3244, double %466, double %471)
  store double %472, ptr %470, align 8, !tbaa !13
  %indvars.iv.next397 = or disjoint i64 %indvars.iv396, 1
  %473 = getelementptr inbounds double, ptr %38, i64 %indvars.iv.next397
  %474 = load double, ptr %473, align 8, !tbaa !13
  %475 = getelementptr inbounds i32, ptr %445, i64 %indvars.iv.next397
  %476 = load i32, ptr %475, align 4, !tbaa !5
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %444, i64 %477
  %479 = load double, ptr %478, align 8, !tbaa !13
  %480 = call double @llvm.fmuladd.f64(double %.3244, double %474, double %479)
  store double %480, ptr %478, align 8, !tbaa !13
  %indvars.iv.next397.1 = add nuw nsw i64 %indvars.iv396, 2
  %niter508.next.1 = add i64 %niter508, 2
  %niter508.ncmp.1 = icmp eq i64 %niter508.next.1, %unroll_iter507
  br i1 %niter508.ncmp.1, label %._crit_edge329.loopexit.unr-lcssa, label %464, !llvm.loop !63

._crit_edge329.loopexit.unr-lcssa:                ; preds = %464, %.lr.ph328
  %indvars.iv396.unr = phi i64 [ 0, %.lr.ph328 ], [ %indvars.iv.next397.1, %464 ]
  %lcmp.mod506.not = icmp eq i64 %xtraiter504, 0
  br i1 %lcmp.mod506.not, label %._crit_edge329, label %._crit_edge329.loopexit.epilog-lcssa

._crit_edge329.loopexit.epilog-lcssa:             ; preds = %._crit_edge329.loopexit.unr-lcssa
  %481 = getelementptr inbounds double, ptr %38, i64 %indvars.iv396.unr
  %482 = load double, ptr %481, align 8, !tbaa !13
  %483 = getelementptr inbounds i32, ptr %445, i64 %indvars.iv396.unr
  %484 = load i32, ptr %483, align 4, !tbaa !5
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %444, i64 %485
  %487 = load double, ptr %486, align 8, !tbaa !13
  %488 = call double @llvm.fmuladd.f64(double %.3244, double %482, double %487)
  store double %488, ptr %486, align 8, !tbaa !13
  br label %._crit_edge329

._crit_edge329:                                   ; preds = %._crit_edge329.loopexit.epilog-lcssa, %._crit_edge329.loopexit.unr-lcssa, %.preheader266
  %489 = load ptr, ptr %276, align 8, !tbaa !50
  %490 = getelementptr inbounds i8, ptr %0, i64 976
  %491 = load ptr, ptr %490, align 8, !tbaa !64
  %492 = load ptr, ptr %489, align 8, !tbaa !15
  %493 = getelementptr inbounds i8, ptr %492, i64 120
  %494 = load ptr, ptr %493, align 8
  %495 = call noundef i32 %494(ptr noundef nonnull align 8 dereferenceable(12) %489, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %444, i32 noundef %25, double noundef 0.000000e+00, ptr noundef %491, i32 noundef %28)
  %496 = icmp sgt i32 %28, 0
  br i1 %496, label %.lr.ph332, label %._crit_edge335

.lr.ph332:                                        ; preds = %._crit_edge329
  %497 = getelementptr inbounds i8, ptr %0, i64 824
  %498 = load ptr, ptr %497, align 8, !tbaa !65
  %499 = load ptr, ptr %490, align 8, !tbaa !64
  %500 = getelementptr inbounds i8, ptr %0, i64 992
  %501 = load ptr, ptr %500, align 8, !tbaa !52
  %wide.trip.count404 = zext nneg i32 %28 to i64
  %min.iters.check446 = icmp ult i32 %28, 8
  br i1 %min.iters.check446, label %scalar.ph445.preheader, label %vector.memcheck

scalar.ph445.preheader:                           ; preds = %middle.block444, %vector.memcheck, %.lr.ph332
  %indvars.iv401.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph332 ], [ %n.vec449, %middle.block444 ]
  %xtraiter509 = and i64 %wide.trip.count404, 3
  %lcmp.mod510.not = icmp eq i64 %xtraiter509, 0
  br i1 %lcmp.mod510.not, label %scalar.ph445.prol.loopexit, label %scalar.ph445.prol

scalar.ph445.prol:                                ; preds = %scalar.ph445.preheader, %scalar.ph445.prol
  %indvars.iv401.prol = phi i64 [ %indvars.iv.next402.prol, %scalar.ph445.prol ], [ %indvars.iv401.ph, %scalar.ph445.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph445.prol ], [ 0, %scalar.ph445.preheader ]
  %502 = getelementptr inbounds double, ptr %498, i64 %indvars.iv401.prol
  %503 = load double, ptr %502, align 8, !tbaa !13
  %504 = getelementptr inbounds double, ptr %499, i64 %indvars.iv401.prol
  %505 = load double, ptr %504, align 8, !tbaa !13
  %506 = fsub double %503, %505
  %507 = getelementptr inbounds double, ptr %501, i64 %indvars.iv401.prol
  store double %506, ptr %507, align 8, !tbaa !13
  %indvars.iv.next402.prol = add nuw nsw i64 %indvars.iv401.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter509
  br i1 %prol.iter.cmp.not, label %scalar.ph445.prol.loopexit, label %scalar.ph445.prol, !llvm.loop !66

scalar.ph445.prol.loopexit:                       ; preds = %scalar.ph445.prol, %scalar.ph445.preheader
  %indvars.iv401.unr = phi i64 [ %indvars.iv401.ph, %scalar.ph445.preheader ], [ %indvars.iv.next402.prol, %scalar.ph445.prol ]
  %508 = sub nsw i64 %indvars.iv401.ph, %wide.trip.count404
  %509 = icmp ugt i64 %508, -4
  br i1 %509, label %.preheader, label %scalar.ph445

vector.memcheck:                                  ; preds = %.lr.ph332
  %510 = ptrtoint ptr %501 to i64
  %511 = ptrtoint ptr %499 to i64
  %512 = ptrtoint ptr %498 to i64
  %513 = sub i64 %510, %512
  %diff.check = icmp ult i64 %513, 32
  %514 = sub i64 %510, %511
  %diff.check443 = icmp ult i64 %514, 32
  %conflict.rdx = or i1 %diff.check, %diff.check443
  br i1 %conflict.rdx, label %scalar.ph445.preheader, label %vector.ph447

vector.ph447:                                     ; preds = %vector.memcheck
  %n.vec449 = and i64 %wide.trip.count404, 2147483644
  br label %vector.body451

vector.body451:                                   ; preds = %vector.body451, %vector.ph447
  %index452 = phi i64 [ 0, %vector.ph447 ], [ %index.next457, %vector.body451 ]
  %515 = getelementptr inbounds double, ptr %498, i64 %index452
  %516 = getelementptr inbounds i8, ptr %515, i64 16
  %wide.load453 = load <2 x double>, ptr %515, align 8, !tbaa !13
  %wide.load454 = load <2 x double>, ptr %516, align 8, !tbaa !13
  %517 = getelementptr inbounds double, ptr %499, i64 %index452
  %518 = getelementptr inbounds i8, ptr %517, i64 16
  %wide.load455 = load <2 x double>, ptr %517, align 8, !tbaa !13
  %wide.load456 = load <2 x double>, ptr %518, align 8, !tbaa !13
  %519 = fsub <2 x double> %wide.load453, %wide.load455
  %520 = fsub <2 x double> %wide.load454, %wide.load456
  %521 = getelementptr inbounds double, ptr %501, i64 %index452
  %522 = getelementptr inbounds i8, ptr %521, i64 16
  store <2 x double> %519, ptr %521, align 8, !tbaa !13
  store <2 x double> %520, ptr %522, align 8, !tbaa !13
  %index.next457 = add nuw i64 %index452, 4
  %523 = icmp eq i64 %index.next457, %n.vec449
  br i1 %523, label %middle.block444, label %vector.body451, !llvm.loop !67

middle.block444:                                  ; preds = %vector.body451
  %cmp.n458 = icmp eq i64 %n.vec449, %wide.trip.count404
  br i1 %cmp.n458, label %.preheader, label %scalar.ph445.preheader

.preheader:                                       ; preds = %scalar.ph445.prol.loopexit, %scalar.ph445, %middle.block444
  br i1 %496, label %.lr.ph334, label %._crit_edge335

.lr.ph334:                                        ; preds = %.preheader
  %524 = load ptr, ptr %490, align 8, !tbaa !64
  %525 = getelementptr inbounds i8, ptr %0, i64 816
  %526 = load ptr, ptr %525, align 8, !tbaa !68
  %527 = getelementptr inbounds i8, ptr %0, i64 984
  %528 = load ptr, ptr %527, align 8, !tbaa !56
  %wide.trip.count409 = zext nneg i32 %28 to i64
  %min.iters.check465 = icmp ult i32 %28, 8
  br i1 %min.iters.check465, label %scalar.ph464.preheader, label %vector.memcheck459

scalar.ph464.preheader:                           ; preds = %middle.block463, %vector.memcheck459, %.lr.ph334
  %indvars.iv406.ph = phi i64 [ 0, %vector.memcheck459 ], [ 0, %.lr.ph334 ], [ %n.vec468, %middle.block463 ]
  %xtraiter511 = and i64 %wide.trip.count404, 3
  %lcmp.mod512.not = icmp eq i64 %xtraiter511, 0
  br i1 %lcmp.mod512.not, label %scalar.ph464.prol.loopexit, label %scalar.ph464.prol

scalar.ph464.prol:                                ; preds = %scalar.ph464.preheader, %scalar.ph464.prol
  %indvars.iv406.prol = phi i64 [ %indvars.iv.next407.prol, %scalar.ph464.prol ], [ %indvars.iv406.ph, %scalar.ph464.preheader ]
  %prol.iter513 = phi i64 [ %prol.iter513.next, %scalar.ph464.prol ], [ 0, %scalar.ph464.preheader ]
  %529 = getelementptr inbounds double, ptr %524, i64 %indvars.iv406.prol
  %530 = load double, ptr %529, align 8, !tbaa !13
  %531 = getelementptr inbounds double, ptr %526, i64 %indvars.iv406.prol
  %532 = load double, ptr %531, align 8, !tbaa !13
  %533 = fsub double %530, %532
  %534 = getelementptr inbounds double, ptr %528, i64 %indvars.iv406.prol
  store double %533, ptr %534, align 8, !tbaa !13
  %indvars.iv.next407.prol = add nuw nsw i64 %indvars.iv406.prol, 1
  %prol.iter513.next = add i64 %prol.iter513, 1
  %prol.iter513.cmp.not = icmp eq i64 %prol.iter513.next, %xtraiter511
  br i1 %prol.iter513.cmp.not, label %scalar.ph464.prol.loopexit, label %scalar.ph464.prol, !llvm.loop !69

scalar.ph464.prol.loopexit:                       ; preds = %scalar.ph464.prol, %scalar.ph464.preheader
  %indvars.iv406.unr = phi i64 [ %indvars.iv406.ph, %scalar.ph464.preheader ], [ %indvars.iv.next407.prol, %scalar.ph464.prol ]
  %535 = sub nsw i64 %indvars.iv406.ph, %wide.trip.count404
  %536 = icmp ugt i64 %535, -4
  br i1 %536, label %._crit_edge335, label %scalar.ph464

vector.memcheck459:                               ; preds = %.lr.ph334
  %537 = ptrtoint ptr %528 to i64
  %538 = ptrtoint ptr %526 to i64
  %539 = ptrtoint ptr %524 to i64
  %540 = sub i64 %537, %539
  %diff.check460 = icmp ult i64 %540, 32
  %541 = sub i64 %537, %538
  %diff.check461 = icmp ult i64 %541, 32
  %conflict.rdx462 = or i1 %diff.check460, %diff.check461
  br i1 %conflict.rdx462, label %scalar.ph464.preheader, label %vector.ph466

vector.ph466:                                     ; preds = %vector.memcheck459
  %n.vec468 = and i64 %wide.trip.count404, 2147483644
  br label %vector.body470

vector.body470:                                   ; preds = %vector.body470, %vector.ph466
  %index471 = phi i64 [ 0, %vector.ph466 ], [ %index.next476, %vector.body470 ]
  %542 = getelementptr inbounds double, ptr %524, i64 %index471
  %543 = getelementptr inbounds i8, ptr %542, i64 16
  %wide.load472 = load <2 x double>, ptr %542, align 8, !tbaa !13
  %wide.load473 = load <2 x double>, ptr %543, align 8, !tbaa !13
  %544 = getelementptr inbounds double, ptr %526, i64 %index471
  %545 = getelementptr inbounds i8, ptr %544, i64 16
  %wide.load474 = load <2 x double>, ptr %544, align 8, !tbaa !13
  %wide.load475 = load <2 x double>, ptr %545, align 8, !tbaa !13
  %546 = fsub <2 x double> %wide.load472, %wide.load474
  %547 = fsub <2 x double> %wide.load473, %wide.load475
  %548 = getelementptr inbounds double, ptr %528, i64 %index471
  %549 = getelementptr inbounds i8, ptr %548, i64 16
  store <2 x double> %546, ptr %548, align 8, !tbaa !13
  store <2 x double> %547, ptr %549, align 8, !tbaa !13
  %index.next476 = add nuw i64 %index471, 4
  %550 = icmp eq i64 %index.next476, %n.vec468
  br i1 %550, label %middle.block463, label %vector.body470, !llvm.loop !70

middle.block463:                                  ; preds = %vector.body470
  %cmp.n477 = icmp eq i64 %n.vec468, %wide.trip.count404
  br i1 %cmp.n477, label %._crit_edge335, label %scalar.ph464.preheader

scalar.ph445:                                     ; preds = %scalar.ph445.prol.loopexit, %scalar.ph445
  %indvars.iv401 = phi i64 [ %indvars.iv.next402.3, %scalar.ph445 ], [ %indvars.iv401.unr, %scalar.ph445.prol.loopexit ]
  %551 = getelementptr inbounds double, ptr %498, i64 %indvars.iv401
  %552 = load double, ptr %551, align 8, !tbaa !13
  %553 = getelementptr inbounds double, ptr %499, i64 %indvars.iv401
  %554 = load double, ptr %553, align 8, !tbaa !13
  %555 = fsub double %552, %554
  %556 = getelementptr inbounds double, ptr %501, i64 %indvars.iv401
  store double %555, ptr %556, align 8, !tbaa !13
  %indvars.iv.next402 = add nuw nsw i64 %indvars.iv401, 1
  %557 = getelementptr inbounds double, ptr %498, i64 %indvars.iv.next402
  %558 = load double, ptr %557, align 8, !tbaa !13
  %559 = getelementptr inbounds double, ptr %499, i64 %indvars.iv.next402
  %560 = load double, ptr %559, align 8, !tbaa !13
  %561 = fsub double %558, %560
  %562 = getelementptr inbounds double, ptr %501, i64 %indvars.iv.next402
  store double %561, ptr %562, align 8, !tbaa !13
  %indvars.iv.next402.1 = add nuw nsw i64 %indvars.iv401, 2
  %563 = getelementptr inbounds double, ptr %498, i64 %indvars.iv.next402.1
  %564 = load double, ptr %563, align 8, !tbaa !13
  %565 = getelementptr inbounds double, ptr %499, i64 %indvars.iv.next402.1
  %566 = load double, ptr %565, align 8, !tbaa !13
  %567 = fsub double %564, %566
  %568 = getelementptr inbounds double, ptr %501, i64 %indvars.iv.next402.1
  store double %567, ptr %568, align 8, !tbaa !13
  %indvars.iv.next402.2 = add nuw nsw i64 %indvars.iv401, 3
  %569 = getelementptr inbounds double, ptr %498, i64 %indvars.iv.next402.2
  %570 = load double, ptr %569, align 8, !tbaa !13
  %571 = getelementptr inbounds double, ptr %499, i64 %indvars.iv.next402.2
  %572 = load double, ptr %571, align 8, !tbaa !13
  %573 = fsub double %570, %572
  %574 = getelementptr inbounds double, ptr %501, i64 %indvars.iv.next402.2
  store double %573, ptr %574, align 8, !tbaa !13
  %indvars.iv.next402.3 = add nuw nsw i64 %indvars.iv401, 4
  %exitcond405.not.3 = icmp eq i64 %indvars.iv.next402.3, %wide.trip.count404
  br i1 %exitcond405.not.3, label %.preheader, label %scalar.ph445, !llvm.loop !71

scalar.ph464:                                     ; preds = %scalar.ph464.prol.loopexit, %scalar.ph464
  %indvars.iv406 = phi i64 [ %indvars.iv.next407.3, %scalar.ph464 ], [ %indvars.iv406.unr, %scalar.ph464.prol.loopexit ]
  %575 = getelementptr inbounds double, ptr %524, i64 %indvars.iv406
  %576 = load double, ptr %575, align 8, !tbaa !13
  %577 = getelementptr inbounds double, ptr %526, i64 %indvars.iv406
  %578 = load double, ptr %577, align 8, !tbaa !13
  %579 = fsub double %576, %578
  %580 = getelementptr inbounds double, ptr %528, i64 %indvars.iv406
  store double %579, ptr %580, align 8, !tbaa !13
  %indvars.iv.next407 = add nuw nsw i64 %indvars.iv406, 1
  %581 = getelementptr inbounds double, ptr %524, i64 %indvars.iv.next407
  %582 = load double, ptr %581, align 8, !tbaa !13
  %583 = getelementptr inbounds double, ptr %526, i64 %indvars.iv.next407
  %584 = load double, ptr %583, align 8, !tbaa !13
  %585 = fsub double %582, %584
  %586 = getelementptr inbounds double, ptr %528, i64 %indvars.iv.next407
  store double %585, ptr %586, align 8, !tbaa !13
  %indvars.iv.next407.1 = add nuw nsw i64 %indvars.iv406, 2
  %587 = getelementptr inbounds double, ptr %524, i64 %indvars.iv.next407.1
  %588 = load double, ptr %587, align 8, !tbaa !13
  %589 = getelementptr inbounds double, ptr %526, i64 %indvars.iv.next407.1
  %590 = load double, ptr %589, align 8, !tbaa !13
  %591 = fsub double %588, %590
  %592 = getelementptr inbounds double, ptr %528, i64 %indvars.iv.next407.1
  store double %591, ptr %592, align 8, !tbaa !13
  %indvars.iv.next407.2 = add nuw nsw i64 %indvars.iv406, 3
  %593 = getelementptr inbounds double, ptr %524, i64 %indvars.iv.next407.2
  %594 = load double, ptr %593, align 8, !tbaa !13
  %595 = getelementptr inbounds double, ptr %526, i64 %indvars.iv.next407.2
  %596 = load double, ptr %595, align 8, !tbaa !13
  %597 = fsub double %594, %596
  %598 = getelementptr inbounds double, ptr %528, i64 %indvars.iv.next407.2
  store double %597, ptr %598, align 8, !tbaa !13
  %indvars.iv.next407.3 = add nuw nsw i64 %indvars.iv406, 4
  %exitcond410.not.3 = icmp eq i64 %indvars.iv.next407.3, %wide.trip.count409
  br i1 %exitcond410.not.3, label %._crit_edge335, label %scalar.ph464, !llvm.loop !72

._crit_edge335:                                   ; preds = %scalar.ph464.prol.loopexit, %scalar.ph464, %middle.block463, %._crit_edge329, %.preheader
  store i32 1, ptr %3, align 4, !tbaa !9
  br label %599

599:                                              ; preds = %433, %._crit_edge335
  %.1239 = phi i32 [ 62, %433 ], [ %.0238, %._crit_edge335 ]
  call void @_ZdaPv(ptr noundef nonnull %291) #13
  call void @_ZdaPv(ptr noundef nonnull %275) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  br label %600

600:                                              ; preds = %._crit_edge299, %599
  %.2240 = phi i32 [ %.1239, %599 ], [ %.0238, %._crit_edge299 ]
  call void @_ZdaPv(ptr noundef nonnull %49) #13
  call void @_ZdaPv(ptr noundef nonnull %48) #13
  call void @_ZdaPv(ptr noundef nonnull %43) #13
  call void @_ZdaPv(ptr noundef nonnull %38) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #11
  ret i32 %.2240
}

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN7qpOASES6getMaxEii(i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #9

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #10

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { 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 = { 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 #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #10 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #11 = { nounwind }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { 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, !12, i64 0}
!12 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"vtable pointer", !8, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = distinct !{!21, !18}
!22 = !{!23, !14, i64 456}
!23 = !{!"_ZTSN7qpOASES9QProblemBE", !10, i64 8, !24, i64 16, !24, i64 24, !24, i64 32, !24, i64 40, !25, i64 48, !24, i64 168, !10, i64 176, !24, i64 184, !24, i64 192, !14, i64 200, !28, i64 208, !10, i64 212, !10, i64 216, !29, i64 220, !14, i64 224, !6, i64 232, !24, i64 240, !14, i64 248, !14, i64 256, !6, i64 264, !30, i64 272, !32, i64 496, !34, i64 768}
!24 = !{!"any pointer", !7, i64 0}
!25 = !{!"_ZTSN7qpOASES6BoundsE", !26, i64 0, !27, i64 40, !27, i64 80}
!26 = !{!"_ZTSN7qpOASES9SubjectToE", !6, i64 8, !24, i64 16, !24, i64 24, !10, i64 32, !10, i64 36}
!27 = !{!"_ZTSN7qpOASES9IndexlistE", !24, i64 0, !24, i64 8, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32}
!28 = !{!"_ZTSN7qpOASES14QProblemStatusE", !7, i64 0}
!29 = !{!"_ZTSN7qpOASES11HessianTypeE", !7, i64 0}
!30 = !{!"_ZTSN7qpOASES7OptionsE", !31, 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, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !14, i64 72, !14, i64 80, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !14, i64 120, !12, i64 128, !14, i64 136, !6, i64 144, !14, i64 152, !6, i64 160, !14, i64 168, !14, i64 176, !14, i64 184, !14, i64 192, !10, i64 200, !10, i64 204, !6, i64 208, !6, i64 212, !6, i64 216}
!31 = !{!"_ZTSN7qpOASES10PrintLevelE", !7, i64 0}
!32 = !{!"_ZTSN7qpOASES7FlipperE", !6, i64 0, !6, i64 4, !25, i64 8, !33, i64 128, !24, i64 248, !24, i64 256, !24, i64 264}
!33 = !{!"_ZTSN7qpOASES11ConstraintsE", !26, i64 0, !27, i64 40, !27, i64 80}
!34 = !{!"_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}
!35 = !{!24, !24, i64 0}
!36 = !{!23, !24, i64 40}
!37 = !{!23, !24, i64 184}
!38 = distinct !{!38, !18}
!39 = !{!23, !14, i64 352}
!40 = !{!23, !14, i64 336}
!41 = !{!23, !14, i64 344}
!42 = !{!23, !24, i64 32}
!43 = distinct !{!43, !18, !44, !45}
!44 = !{!"llvm.loop.isvectorized", i32 1}
!45 = !{!"llvm.loop.unroll.runtime.disable"}
!46 = distinct !{!46, !18}
!47 = distinct !{!47, !18, !45, !44}
!48 = distinct !{!48, !18, !44, !45}
!49 = distinct !{!49, !18, !45, !44}
!50 = !{!51, !24, i64 808}
!51 = !{!"_ZTSN7qpOASES8QProblemE", !23, i64 0, !10, i64 800, !24, i64 808, !24, i64 816, !24, i64 824, !33, i64 832, !24, i64 952, !24, i64 960, !6, i64 968, !24, i64 976, !24, i64 984, !24, i64 992, !24, i64 1000, !24, i64 1008, !24, i64 1016, !24, i64 1024, !24, i64 1032, !24, i64 1040, !24, i64 1048, !24, i64 1056}
!52 = !{!51, !24, i64 992}
!53 = distinct !{!53, !18}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.unroll.disable"}
!56 = !{!51, !24, i64 984}
!57 = distinct !{!57, !55}
!58 = distinct !{!58, !18, !44, !45}
!59 = distinct !{!59, !18}
!60 = distinct !{!60, !18, !45, !44}
!61 = !{!23, !10, i64 216}
!62 = distinct !{!62, !18}
!63 = distinct !{!63, !18}
!64 = !{!51, !24, i64 976}
!65 = !{!51, !24, i64 824}
!66 = distinct !{!66, !55}
!67 = distinct !{!67, !18, !44, !45}
!68 = !{!51, !24, i64 816}
!69 = distinct !{!69, !55}
!70 = distinct !{!70, !18, !44, !45}
!71 = distinct !{!71, !18, !44}
!72 = distinct !{!72, !18, !44}


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