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

@.str = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [103 x i8], align 1

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

61:                                               ; preds = %12
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %62

62:                                               ; preds = %97, %61
  %63 = load i32, ptr %26, align 4, !tbaa !11
  %64 = load i32, ptr %33, align 4, !tbaa !11
  %65 = icmp slt i32 %63, %64
  br i1 %65, label %66, label %100

66:                                               ; preds = %62
  %67 = load ptr, ptr %37, align 8, !tbaa !5
  %68 = load i32, ptr %26, align 4, !tbaa !11
  %69 = sext i32 %68 to i64
  %70 = getelementptr inbounds i32, ptr %67, i64 %69
  %71 = load i32, ptr %70, align 4, !tbaa !11
  store i32 %71, ptr %28, align 4, !tbaa !11
  %72 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %73 = load i32, ptr %28, align 4, !tbaa !11
  %74 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %72, i32 noundef %73)
  %75 = icmp eq i32 %74, -1
  br i1 %75, label %76, label %86

76:                                               ; preds = %66
  %77 = load ptr, ptr %18, align 8, !tbaa !5
  %78 = load i32, ptr %28, align 4, !tbaa !11
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds double, ptr %77, i64 %79
  %81 = load double, ptr %80, align 8, !tbaa !15
  %82 = load ptr, ptr %22, align 8, !tbaa !5
  %83 = load i32, ptr %26, align 4, !tbaa !11
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds double, ptr %82, i64 %84
  store double %81, ptr %85, align 8, !tbaa !15
  br label %96

86:                                               ; preds = %66
  %87 = load ptr, ptr %19, align 8, !tbaa !5
  %88 = load i32, ptr %28, align 4, !tbaa !11
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds double, ptr %87, i64 %89
  %91 = load double, ptr %90, align 8, !tbaa !15
  %92 = load ptr, ptr %22, align 8, !tbaa !5
  %93 = load i32, ptr %26, align 4, !tbaa !11
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds double, ptr %92, i64 %94
  store double %91, ptr %95, align 8, !tbaa !15
  br label %96

96:                                               ; preds = %86, %76
  br label %97

97:                                               ; preds = %96
  %98 = load i32, ptr %26, align 4, !tbaa !11
  %99 = add nsw i32 %98, 1
  store i32 %99, ptr %26, align 4, !tbaa !11
  br label %62, !llvm.loop !17

100:                                              ; preds = %62
  br label %115

101:                                              ; preds = %12
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %102

102:                                              ; preds = %111, %101
  %103 = load i32, ptr %26, align 4, !tbaa !11
  %104 = load i32, ptr %33, align 4, !tbaa !11
  %105 = icmp slt i32 %103, %104
  br i1 %105, label %106, label %114

106:                                              ; preds = %102
  %107 = load ptr, ptr %22, align 8, !tbaa !5
  %108 = load i32, ptr %26, align 4, !tbaa !11
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds double, ptr %107, i64 %109
  store double 0.000000e+00, ptr %110, align 8, !tbaa !15
  br label %111

111:                                              ; preds = %106
  %112 = load i32, ptr %26, align 4, !tbaa !11
  %113 = add nsw i32 %112, 1
  store i32 %113, ptr %26, align 4, !tbaa !11
  br label %102, !llvm.loop !19

114:                                              ; preds = %102
  br label %115

115:                                              ; preds = %114, %100
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %116

116:                                              ; preds = %140, %115
  %117 = load i32, ptr %26, align 4, !tbaa !11
  %118 = load i32, ptr %32, align 4, !tbaa !11
  %119 = icmp slt i32 %117, %118
  br i1 %119, label %120, label %143

120:                                              ; preds = %116
  %121 = load ptr, ptr %36, align 8, !tbaa !5
  %122 = load i32, ptr %26, align 4, !tbaa !11
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds i32, ptr %121, i64 %123
  %125 = load i32, ptr %124, align 4, !tbaa !11
  store i32 %125, ptr %28, align 4, !tbaa !11
  %126 = load ptr, ptr %15, align 8, !tbaa !5
  %127 = load i32, ptr %28, align 4, !tbaa !11
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds double, ptr %126, i64 %128
  %130 = load double, ptr %129, align 8, !tbaa !15
  %131 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %132 = load ptr, ptr %131, align 8, !tbaa !20
  %133 = load i32, ptr %26, align 4, !tbaa !11
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds double, ptr %132, i64 %134
  store double %130, ptr %135, align 8, !tbaa !15
  %136 = load ptr, ptr %23, align 8, !tbaa !5
  %137 = load i32, ptr %26, align 4, !tbaa !11
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds double, ptr %136, i64 %138
  store double 0.000000e+00, ptr %139, align 8, !tbaa !15
  br label %140

140:                                              ; preds = %120
  %141 = load i32, ptr %26, align 4, !tbaa !11
  %142 = add nsw i32 %141, 1
  store i32 %142, ptr %26, align 4, !tbaa !11
  br label %116, !llvm.loop !34

143:                                              ; preds = %116
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %144

144:                                              ; preds = %153, %143
  %145 = load i32, ptr %26, align 4, !tbaa !11
  %146 = load i32, ptr %34, align 4, !tbaa !11
  %147 = icmp slt i32 %145, %146
  br i1 %147, label %148, label %156

148:                                              ; preds = %144
  %149 = load ptr, ptr %24, align 8, !tbaa !5
  %150 = load i32, ptr %26, align 4, !tbaa !11
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds double, ptr %149, i64 %151
  store double 0.000000e+00, ptr %152, align 8, !tbaa !15
  br label %153

153:                                              ; preds = %148
  %154 = load i32, ptr %26, align 4, !tbaa !11
  %155 = add nsw i32 %154, 1
  store i32 %155, ptr %26, align 4, !tbaa !11
  br label %144, !llvm.loop !35

156:                                              ; preds = %144
  %157 = load i32, ptr %20, align 4, !tbaa !9
  %158 = icmp eq i32 %157, 0
  br i1 %158, label %159, label %201

159:                                              ; preds = %156
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %160

160:                                              ; preds = %197, %159
  %161 = load i32, ptr %26, align 4, !tbaa !11
  %162 = load i32, ptr %34, align 4, !tbaa !11
  %163 = icmp slt i32 %161, %162
  br i1 %163, label %164, label %200

164:                                              ; preds = %160
  %165 = load ptr, ptr %38, align 8, !tbaa !5
  %166 = load i32, ptr %26, align 4, !tbaa !11
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds i32, ptr %165, i64 %167
  %169 = load i32, ptr %168, align 4, !tbaa !11
  store i32 %169, ptr %28, align 4, !tbaa !11
  %170 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 5
  %171 = load i32, ptr %28, align 4, !tbaa !11
  %172 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %170, i32 noundef %171)
  %173 = icmp eq i32 %172, -1
  br i1 %173, label %174, label %185

174:                                              ; preds = %164
  %175 = load ptr, ptr %16, align 8, !tbaa !5
  %176 = load i32, ptr %28, align 4, !tbaa !11
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds double, ptr %175, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !15
  %180 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %181 = load ptr, ptr %180, align 8, !tbaa !36
  %182 = load i32, ptr %26, align 4, !tbaa !11
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds double, ptr %181, i64 %183
  store double %179, ptr %184, align 8, !tbaa !15
  br label %196

185:                                              ; preds = %164
  %186 = load ptr, ptr %17, align 8, !tbaa !5
  %187 = load i32, ptr %28, align 4, !tbaa !11
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds double, ptr %186, i64 %188
  %190 = load double, ptr %189, align 8, !tbaa !15
  %191 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %192 = load ptr, ptr %191, align 8, !tbaa !36
  %193 = load i32, ptr %26, align 4, !tbaa !11
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds double, ptr %192, i64 %194
  store double %190, ptr %195, align 8, !tbaa !15
  br label %196

196:                                              ; preds = %185, %174
  br label %197

197:                                              ; preds = %196
  %198 = load i32, ptr %26, align 4, !tbaa !11
  %199 = add nsw i32 %198, 1
  store i32 %199, ptr %26, align 4, !tbaa !11
  br label %160, !llvm.loop !37

200:                                              ; preds = %160
  br label %216

201:                                              ; preds = %156
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %202

202:                                              ; preds = %212, %201
  %203 = load i32, ptr %26, align 4, !tbaa !11
  %204 = load i32, ptr %34, align 4, !tbaa !11
  %205 = icmp slt i32 %203, %204
  br i1 %205, label %206, label %215

206:                                              ; preds = %202
  %207 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %208 = load ptr, ptr %207, align 8, !tbaa !36
  %209 = load i32, ptr %26, align 4, !tbaa !11
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds double, ptr %208, i64 %210
  store double 0.000000e+00, ptr %211, align 8, !tbaa !15
  br label %212

212:                                              ; preds = %206
  %213 = load i32, ptr %26, align 4, !tbaa !11
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %26, align 4, !tbaa !11
  br label %202, !llvm.loop !38

215:                                              ; preds = %202
  br label %216

216:                                              ; preds = %215, %200
  store i32 0, ptr %30, align 4, !tbaa !11
  br label %217

217:                                              ; preds = %1210, %216
  %218 = load i32, ptr %30, align 4, !tbaa !11
  %219 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 23
  %220 = getelementptr inbounds %"class.qpOASES::Options", ptr %219, i32 0, i32 27
  %221 = load i32, ptr %220, align 8, !tbaa !39
  %222 = icmp sle i32 %218, %221
  br i1 %222, label %223, label %1213

223:                                              ; preds = %217
  %224 = load i32, ptr %32, align 4, !tbaa !11
  %225 = icmp sgt i32 %224, 0
  br i1 %225, label %226, label %656

226:                                              ; preds = %223
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %227

227:                                              ; preds = %237, %226
  %228 = load i32, ptr %26, align 4, !tbaa !11
  %229 = load i32, ptr %32, align 4, !tbaa !11
  %230 = icmp slt i32 %228, %229
  br i1 %230, label %231, label %240

231:                                              ; preds = %227
  %232 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 18
  %233 = load ptr, ptr %232, align 8, !tbaa !40
  %234 = load i32, ptr %26, align 4, !tbaa !11
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds double, ptr %233, i64 %235
  store double 0.000000e+00, ptr %236, align 8, !tbaa !15
  br label %237

237:                                              ; preds = %231
  %238 = load i32, ptr %26, align 4, !tbaa !11
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr %26, align 4, !tbaa !11
  br label %227, !llvm.loop !41

240:                                              ; preds = %227
  %241 = load i32, ptr %34, align 4, !tbaa !11
  %242 = icmp sgt i32 %241, 0
  br i1 %242, label %243, label %349

243:                                              ; preds = %240
  %244 = load i32, ptr %20, align 4, !tbaa !9
  %245 = icmp eq i32 %244, 1
  br i1 %245, label %246, label %264

246:                                              ; preds = %243
  %247 = load i32, ptr %21, align 4, !tbaa !9
  %248 = icmp eq i32 %247, 1
  br i1 %248, label %249, label %264

249:                                              ; preds = %246
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %250

250:                                              ; preds = %260, %249
  %251 = load i32, ptr %26, align 4, !tbaa !11
  %252 = load i32, ptr %34, align 4, !tbaa !11
  %253 = icmp slt i32 %251, %252
  br i1 %253, label %254, label %263

254:                                              ; preds = %250
  %255 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 16
  %256 = load ptr, ptr %255, align 8, !tbaa !42
  %257 = load i32, ptr %26, align 4, !tbaa !11
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds double, ptr %256, i64 %258
  store double 0.000000e+00, ptr %259, align 8, !tbaa !15
  br label %260

260:                                              ; preds = %254
  %261 = load i32, ptr %26, align 4, !tbaa !11
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr %26, align 4, !tbaa !11
  br label %250, !llvm.loop !43

263:                                              ; preds = %250
  br label %348

264:                                              ; preds = %246, %243
  %265 = load i32, ptr %21, align 4, !tbaa !9
  %266 = icmp eq i32 %265, 0
  br i1 %266, label %267, label %286

267:                                              ; preds = %264
  %268 = load i32, ptr %30, align 4, !tbaa !11
  %269 = icmp eq i32 %268, 0
  br i1 %269, label %270, label %286

270:                                              ; preds = %267
  %271 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 2
  %272 = load ptr, ptr %271, align 8, !tbaa !44
  %273 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 5
  %274 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %273)
  %275 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %276 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %275)
  %277 = load ptr, ptr %22, align 8, !tbaa !5
  %278 = load i32, ptr %33, align 4, !tbaa !11
  %279 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %280 = load ptr, ptr %279, align 8, !tbaa !36
  %281 = load i32, ptr %34, align 4, !tbaa !11
  %282 = load ptr, ptr %272, align 8, !tbaa !13
  %283 = getelementptr inbounds ptr, ptr %282, i64 17
  %284 = load ptr, ptr %283, align 8
  %285 = call noundef i32 %284(ptr noundef nonnull align 8 dereferenceable(12) %272, ptr noundef %274, ptr noundef %276, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %277, i32 noundef %278, double noundef 1.000000e+00, ptr noundef %280, i32 noundef %281, i32 noundef 1)
  br label %286

286:                                              ; preds = %270, %267, %264
  %287 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %288 = load ptr, ptr %287, align 8, !tbaa !36
  %289 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 16
  %290 = load ptr, ptr %289, align 8, !tbaa !42
  %291 = load ptr, ptr %41, align 8, !tbaa !13
  %292 = getelementptr inbounds ptr, ptr %291, i64 33
  %293 = load ptr, ptr %292, align 8
  %294 = call noundef i32 %293(ptr noundef nonnull align 8 dereferenceable(1064) %41, ptr noundef %288, i32 noundef 0, ptr noundef %290)
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %296, label %299

296:                                              ; preds = %286
  %297 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %298 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %297, i32 noundef 68, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4732, i32 noundef 1)
  store i32 %298, ptr %13, align 4
  store i32 1, ptr %39, align 4
  br label %1342

299:                                              ; preds = %286
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %300

300:                                              ; preds = %344, %299
  %301 = load i32, ptr %26, align 4, !tbaa !11
  %302 = load i32, ptr %32, align 4, !tbaa !11
  %303 = icmp slt i32 %301, %302
  br i1 %303, label %304, label %347

304:                                              ; preds = %300
  %305 = load ptr, ptr %36, align 8, !tbaa !5
  %306 = load i32, ptr %26, align 4, !tbaa !11
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds i32, ptr %305, i64 %307
  %309 = load i32, ptr %308, align 4, !tbaa !11
  store i32 %309, ptr %28, align 4, !tbaa !11
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %310

310:                                              ; preds = %340, %304
  %311 = load i32, ptr %27, align 4, !tbaa !11
  %312 = load i32, ptr %34, align 4, !tbaa !11
  %313 = icmp slt i32 %311, %312
  br i1 %313, label %314, label %343

314:                                              ; preds = %310
  %315 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 7
  %316 = load ptr, ptr %315, align 8, !tbaa !45
  %317 = load i32, ptr %28, align 4, !tbaa !11
  %318 = load i32, ptr %31, align 4, !tbaa !11
  %319 = load i32, ptr %35, align 4, !tbaa !11
  %320 = load i32, ptr %27, align 4, !tbaa !11
  %321 = add nsw i32 %319, %320
  %322 = mul nsw i32 %318, %321
  %323 = add nsw i32 %317, %322
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %316, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !15
  %327 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 16
  %328 = load ptr, ptr %327, align 8, !tbaa !42
  %329 = load i32, ptr %27, align 4, !tbaa !11
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds double, ptr %328, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !15
  %333 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 18
  %334 = load ptr, ptr %333, align 8, !tbaa !40
  %335 = load i32, ptr %26, align 4, !tbaa !11
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %334, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !15
  %339 = call double @llvm.fmuladd.f64(double %326, double %332, double %338)
  store double %339, ptr %337, align 8, !tbaa !15
  br label %340

340:                                              ; preds = %314
  %341 = load i32, ptr %27, align 4, !tbaa !11
  %342 = add nsw i32 %341, 1
  store i32 %342, ptr %27, align 4, !tbaa !11
  br label %310, !llvm.loop !46

343:                                              ; preds = %310
  br label %344

344:                                              ; preds = %343
  %345 = load i32, ptr %26, align 4, !tbaa !11
  %346 = add nsw i32 %345, 1
  store i32 %346, ptr %26, align 4, !tbaa !11
  br label %300, !llvm.loop !47

347:                                              ; preds = %300
  br label %348

348:                                              ; preds = %347, %263
  br label %349

349:                                              ; preds = %348, %240
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %350

350:                                              ; preds = %360, %349
  %351 = load i32, ptr %26, align 4, !tbaa !11
  %352 = load i32, ptr %35, align 4, !tbaa !11
  %353 = icmp slt i32 %351, %352
  br i1 %353, label %354, label %363

354:                                              ; preds = %350
  %355 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 17
  %356 = load ptr, ptr %355, align 8, !tbaa !48
  %357 = load i32, ptr %26, align 4, !tbaa !11
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds double, ptr %356, i64 %358
  store double 0.000000e+00, ptr %359, align 8, !tbaa !15
  br label %360

360:                                              ; preds = %354
  %361 = load i32, ptr %26, align 4, !tbaa !11
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr %26, align 4, !tbaa !11
  br label %350, !llvm.loop !49

363:                                              ; preds = %350
  %364 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 15
  %365 = load i32, ptr %364, align 4, !tbaa !50
  %366 = icmp eq i32 %365, 0
  br i1 %366, label %371, label %367

367:                                              ; preds = %363
  %368 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 15
  %369 = load i32, ptr %368, align 4, !tbaa !50
  %370 = icmp eq i32 %369, 1
  br i1 %370, label %371, label %453

371:                                              ; preds = %367, %363
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %372

372:                                              ; preds = %415, %371
  %373 = load i32, ptr %27, align 4, !tbaa !11
  %374 = load i32, ptr %32, align 4, !tbaa !11
  %375 = icmp slt i32 %373, %374
  br i1 %375, label %376, label %418

376:                                              ; preds = %372
  %377 = load ptr, ptr %36, align 8, !tbaa !5
  %378 = load i32, ptr %27, align 4, !tbaa !11
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds i32, ptr %377, i64 %379
  %381 = load i32, ptr %380, align 4, !tbaa !11
  store i32 %381, ptr %29, align 4, !tbaa !11
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %382

382:                                              ; preds = %411, %376
  %383 = load i32, ptr %26, align 4, !tbaa !11
  %384 = load i32, ptr %35, align 4, !tbaa !11
  %385 = icmp slt i32 %383, %384
  br i1 %385, label %386, label %414

386:                                              ; preds = %382
  %387 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 7
  %388 = load ptr, ptr %387, align 8, !tbaa !45
  %389 = load i32, ptr %29, align 4, !tbaa !11
  %390 = load i32, ptr %31, align 4, !tbaa !11
  %391 = load i32, ptr %26, align 4, !tbaa !11
  %392 = mul nsw i32 %390, %391
  %393 = add nsw i32 %389, %392
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds double, ptr %388, i64 %394
  %396 = load double, ptr %395, align 8, !tbaa !15
  %397 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %398 = load ptr, ptr %397, align 8, !tbaa !20
  %399 = load i32, ptr %27, align 4, !tbaa !11
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds double, ptr %398, i64 %400
  %402 = load double, ptr %401, align 8, !tbaa !15
  %403 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 17
  %404 = load ptr, ptr %403, align 8, !tbaa !48
  %405 = load i32, ptr %26, align 4, !tbaa !11
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %404, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !15
  %409 = fneg double %396
  %410 = call double @llvm.fmuladd.f64(double %409, double %402, double %408)
  store double %410, ptr %407, align 8, !tbaa !15
  br label %411

411:                                              ; preds = %386
  %412 = load i32, ptr %26, align 4, !tbaa !11
  %413 = add nsw i32 %412, 1
  store i32 %413, ptr %26, align 4, !tbaa !11
  br label %382, !llvm.loop !51

414:                                              ; preds = %382
  br label %415

415:                                              ; preds = %414
  %416 = load i32, ptr %27, align 4, !tbaa !11
  %417 = add nsw i32 %416, 1
  store i32 %417, ptr %27, align 4, !tbaa !11
  br label %372, !llvm.loop !52

418:                                              ; preds = %372
  %419 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 15
  %420 = load i32, ptr %419, align 4, !tbaa !50
  %421 = icmp eq i32 %420, 0
  br i1 %421, label %422, label %452

422:                                              ; preds = %418
  %423 = call noundef i32 @_ZNK7qpOASES9QProblemB19usingRegularisationEv(ptr noundef nonnull align 8 dereferenceable(800) %41)
  %424 = icmp eq i32 %423, 1
  br i1 %424, label %425, label %444

425:                                              ; preds = %422
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %426

426:                                              ; preds = %440, %425
  %427 = load i32, ptr %26, align 4, !tbaa !11
  %428 = load i32, ptr %35, align 4, !tbaa !11
  %429 = icmp slt i32 %427, %428
  br i1 %429, label %430, label %443

430:                                              ; preds = %426
  %431 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 16
  %432 = load double, ptr %431, align 8, !tbaa !53
  %433 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 17
  %434 = load ptr, ptr %433, align 8, !tbaa !48
  %435 = load i32, ptr %26, align 4, !tbaa !11
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %434, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !15
  %439 = fdiv double %438, %432
  store double %439, ptr %437, align 8, !tbaa !15
  br label %440

440:                                              ; preds = %430
  %441 = load i32, ptr %26, align 4, !tbaa !11
  %442 = add nsw i32 %441, 1
  store i32 %442, ptr %26, align 4, !tbaa !11
  br label %426, !llvm.loop !54

443:                                              ; preds = %426
  br label %451

444:                                              ; preds = %422
  %445 = load i32, ptr %35, align 4, !tbaa !11
  %446 = icmp sgt i32 %445, 0
  br i1 %446, label %447, label %450

447:                                              ; preds = %444
  %448 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %449 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %448, i32 noundef 9, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4769, i32 noundef 1)
  store i32 %449, ptr %13, align 4
  store i32 1, ptr %39, align 4
  br label %1342

450:                                              ; preds = %444
  br label %451

451:                                              ; preds = %450, %443
  br label %452

452:                                              ; preds = %451, %418
  br label %587

453:                                              ; preds = %367
  %454 = load i32, ptr %21, align 4, !tbaa !9
  %455 = icmp eq i32 %454, 0
  br i1 %455, label %456, label %479

456:                                              ; preds = %453
  %457 = load i32, ptr %30, align 4, !tbaa !11
  %458 = icmp eq i32 %457, 0
  br i1 %458, label %459, label %479

459:                                              ; preds = %456
  %460 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 2
  %461 = load ptr, ptr %460, align 8, !tbaa !55
  %462 = load ptr, ptr %461, align 8, !tbaa !13
  %463 = getelementptr i8, ptr %462, i64 -24
  %464 = load i64, ptr %463, align 8
  %465 = getelementptr inbounds i8, ptr %461, i64 %464
  %466 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %467 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %466)
  %468 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %469 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %468)
  %470 = load ptr, ptr %22, align 8, !tbaa !5
  %471 = load i32, ptr %33, align 4, !tbaa !11
  %472 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %473 = load ptr, ptr %472, align 8, !tbaa !20
  %474 = load i32, ptr %32, align 4, !tbaa !11
  %475 = load ptr, ptr %465, align 8, !tbaa !13
  %476 = getelementptr inbounds ptr, ptr %475, i64 17
  %477 = load ptr, ptr %476, align 8
  %478 = call noundef i32 %477(ptr noundef nonnull align 8 dereferenceable(12) %465, ptr noundef %467, ptr noundef %469, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %470, i32 noundef %471, double noundef 1.000000e+00, ptr noundef %473, i32 noundef %474, i32 noundef 1)
  br label %479

479:                                              ; preds = %459, %456, %453
  %480 = load i32, ptr %34, align 4, !tbaa !11
  %481 = icmp sgt i32 %480, 0
  br i1 %481, label %482, label %509

482:                                              ; preds = %479
  %483 = load i32, ptr %20, align 4, !tbaa !9
  %484 = icmp eq i32 %483, 0
  br i1 %484, label %488, label %485

485:                                              ; preds = %482
  %486 = load i32, ptr %21, align 4, !tbaa !9
  %487 = icmp eq i32 %486, 0
  br i1 %487, label %488, label %509

488:                                              ; preds = %485, %482
  %489 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 2
  %490 = load ptr, ptr %489, align 8, !tbaa !55
  %491 = load ptr, ptr %490, align 8, !tbaa !13
  %492 = getelementptr i8, ptr %491, i64 -24
  %493 = load i64, ptr %492, align 8
  %494 = getelementptr inbounds i8, ptr %490, i64 %493
  %495 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %496 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %495)
  %497 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %498 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %497)
  %499 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 18
  %500 = load ptr, ptr %499, align 8, !tbaa !40
  %501 = load i32, ptr %32, align 4, !tbaa !11
  %502 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %503 = load ptr, ptr %502, align 8, !tbaa !20
  %504 = load i32, ptr %32, align 4, !tbaa !11
  %505 = load ptr, ptr %494, align 8, !tbaa !13
  %506 = getelementptr inbounds ptr, ptr %505, i64 17
  %507 = load ptr, ptr %506, align 8
  %508 = call noundef i32 %507(ptr noundef nonnull align 8 dereferenceable(12) %494, ptr noundef %496, ptr noundef %498, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %500, i32 noundef %501, double noundef 1.000000e+00, ptr noundef %503, i32 noundef %504, i32 noundef 1)
  br label %509

509:                                              ; preds = %488, %485, %479
  %510 = load i32, ptr %35, align 4, !tbaa !11
  %511 = icmp sgt i32 %510, 0
  br i1 %511, label %512, label %586

512:                                              ; preds = %509
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %513

513:                                              ; preds = %556, %512
  %514 = load i32, ptr %27, align 4, !tbaa !11
  %515 = load i32, ptr %32, align 4, !tbaa !11
  %516 = icmp slt i32 %514, %515
  br i1 %516, label %517, label %559

517:                                              ; preds = %513
  %518 = load ptr, ptr %36, align 8, !tbaa !5
  %519 = load i32, ptr %27, align 4, !tbaa !11
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds i32, ptr %518, i64 %520
  %522 = load i32, ptr %521, align 4, !tbaa !11
  store i32 %522, ptr %29, align 4, !tbaa !11
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %523

523:                                              ; preds = %552, %517
  %524 = load i32, ptr %26, align 4, !tbaa !11
  %525 = load i32, ptr %35, align 4, !tbaa !11
  %526 = icmp slt i32 %524, %525
  br i1 %526, label %527, label %555

527:                                              ; preds = %523
  %528 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 7
  %529 = load ptr, ptr %528, align 8, !tbaa !45
  %530 = load i32, ptr %29, align 4, !tbaa !11
  %531 = load i32, ptr %31, align 4, !tbaa !11
  %532 = load i32, ptr %26, align 4, !tbaa !11
  %533 = mul nsw i32 %531, %532
  %534 = add nsw i32 %530, %533
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds double, ptr %529, i64 %535
  %537 = load double, ptr %536, align 8, !tbaa !15
  %538 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %539 = load ptr, ptr %538, align 8, !tbaa !20
  %540 = load i32, ptr %27, align 4, !tbaa !11
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds double, ptr %539, i64 %541
  %543 = load double, ptr %542, align 8, !tbaa !15
  %544 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 17
  %545 = load ptr, ptr %544, align 8, !tbaa !48
  %546 = load i32, ptr %26, align 4, !tbaa !11
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds double, ptr %545, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !15
  %550 = fneg double %537
  %551 = call double @llvm.fmuladd.f64(double %550, double %543, double %549)
  store double %551, ptr %548, align 8, !tbaa !15
  br label %552

552:                                              ; preds = %527
  %553 = load i32, ptr %26, align 4, !tbaa !11
  %554 = add nsw i32 %553, 1
  store i32 %554, ptr %26, align 4, !tbaa !11
  br label %523, !llvm.loop !56

555:                                              ; preds = %523
  br label %556

556:                                              ; preds = %555
  %557 = load i32, ptr %27, align 4, !tbaa !11
  %558 = add nsw i32 %557, 1
  store i32 %558, ptr %27, align 4, !tbaa !11
  br label %513, !llvm.loop !57

559:                                              ; preds = %513
  %560 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 17
  %561 = load ptr, ptr %560, align 8, !tbaa !48
  %562 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 17
  %563 = load ptr, ptr %562, align 8, !tbaa !48
  %564 = load ptr, ptr %41, align 8, !tbaa !13
  %565 = getelementptr inbounds ptr, ptr %564, i64 14
  %566 = load ptr, ptr %565, align 8
  %567 = call noundef i32 %566(ptr noundef nonnull align 8 dereferenceable(800) %41, ptr noundef %561, i32 noundef 1, ptr noundef %563)
  %568 = icmp ne i32 %567, 0
  br i1 %568, label %569, label %572

569:                                              ; preds = %559
  %570 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %571 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %570, i32 noundef 69, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4794, i32 noundef 1)
  store i32 %571, ptr %13, align 4
  store i32 1, ptr %39, align 4
  br label %1342

572:                                              ; preds = %559
  %573 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 17
  %574 = load ptr, ptr %573, align 8, !tbaa !48
  %575 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 17
  %576 = load ptr, ptr %575, align 8, !tbaa !48
  %577 = load ptr, ptr %41, align 8, !tbaa !13
  %578 = getelementptr inbounds ptr, ptr %577, i64 14
  %579 = load ptr, ptr %578, align 8
  %580 = call noundef i32 %579(ptr noundef nonnull align 8 dereferenceable(800) %41, ptr noundef %574, i32 noundef 0, ptr noundef %576)
  %581 = icmp ne i32 %580, 0
  br i1 %581, label %582, label %585

582:                                              ; preds = %572
  %583 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %584 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %583, i32 noundef 69, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4797, i32 noundef 1)
  store i32 %584, ptr %13, align 4
  store i32 1, ptr %39, align 4
  br label %1342

585:                                              ; preds = %572
  br label %586

586:                                              ; preds = %585, %509
  br label %587

587:                                              ; preds = %586, %452
  %588 = load i32, ptr %35, align 4, !tbaa !11
  %589 = icmp sgt i32 %588, 0
  br i1 %589, label %590, label %655

590:                                              ; preds = %587
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %591

591:                                              ; preds = %651, %590
  %592 = load i32, ptr %26, align 4, !tbaa !11
  %593 = load i32, ptr %32, align 4, !tbaa !11
  %594 = icmp slt i32 %592, %593
  br i1 %594, label %595, label %654

595:                                              ; preds = %591
  %596 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 15
  %597 = load ptr, ptr %596, align 8, !tbaa !58
  %598 = load i32, ptr %26, align 4, !tbaa !11
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds double, ptr %597, i64 %599
  store double 0.000000e+00, ptr %600, align 8, !tbaa !15
  %601 = load ptr, ptr %36, align 8, !tbaa !5
  %602 = load i32, ptr %26, align 4, !tbaa !11
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds i32, ptr %601, i64 %603
  %605 = load i32, ptr %604, align 4, !tbaa !11
  store i32 %605, ptr %28, align 4, !tbaa !11
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %606

606:                                              ; preds = %634, %595
  %607 = load i32, ptr %27, align 4, !tbaa !11
  %608 = load i32, ptr %35, align 4, !tbaa !11
  %609 = icmp slt i32 %607, %608
  br i1 %609, label %610, label %637

610:                                              ; preds = %606
  %611 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 7
  %612 = load ptr, ptr %611, align 8, !tbaa !45
  %613 = load i32, ptr %28, align 4, !tbaa !11
  %614 = load i32, ptr %31, align 4, !tbaa !11
  %615 = load i32, ptr %27, align 4, !tbaa !11
  %616 = mul nsw i32 %614, %615
  %617 = add nsw i32 %613, %616
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds double, ptr %612, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !15
  %621 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 17
  %622 = load ptr, ptr %621, align 8, !tbaa !48
  %623 = load i32, ptr %27, align 4, !tbaa !11
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds double, ptr %622, i64 %624
  %626 = load double, ptr %625, align 8, !tbaa !15
  %627 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 15
  %628 = load ptr, ptr %627, align 8, !tbaa !58
  %629 = load i32, ptr %26, align 4, !tbaa !11
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds double, ptr %628, i64 %630
  %632 = load double, ptr %631, align 8, !tbaa !15
  %633 = call double @llvm.fmuladd.f64(double %620, double %626, double %632)
  store double %633, ptr %631, align 8, !tbaa !15
  br label %634

634:                                              ; preds = %610
  %635 = load i32, ptr %27, align 4, !tbaa !11
  %636 = add nsw i32 %635, 1
  store i32 %636, ptr %27, align 4, !tbaa !11
  br label %606, !llvm.loop !59

637:                                              ; preds = %606
  %638 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 15
  %639 = load ptr, ptr %638, align 8, !tbaa !58
  %640 = load i32, ptr %26, align 4, !tbaa !11
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds double, ptr %639, i64 %641
  %643 = load double, ptr %642, align 8, !tbaa !15
  %644 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 18
  %645 = load ptr, ptr %644, align 8, !tbaa !40
  %646 = load i32, ptr %26, align 4, !tbaa !11
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds double, ptr %645, i64 %647
  %649 = load double, ptr %648, align 8, !tbaa !15
  %650 = fadd double %649, %643
  store double %650, ptr %648, align 8, !tbaa !15
  br label %651

651:                                              ; preds = %637
  %652 = load i32, ptr %26, align 4, !tbaa !11
  %653 = add nsw i32 %652, 1
  store i32 %653, ptr %26, align 4, !tbaa !11
  br label %591, !llvm.loop !60

654:                                              ; preds = %591
  br label %655

655:                                              ; preds = %654, %587
  br label %656

656:                                              ; preds = %655, %223
  %657 = load i32, ptr %34, align 4, !tbaa !11
  %658 = icmp sgt i32 %657, 0
  br i1 %658, label %659, label %876

659:                                              ; preds = %656
  %660 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 15
  %661 = load i32, ptr %660, align 4, !tbaa !50
  %662 = icmp eq i32 %661, 0
  br i1 %662, label %667, label %663

663:                                              ; preds = %659
  %664 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 15
  %665 = load i32, ptr %664, align 4, !tbaa !50
  %666 = icmp eq i32 %665, 1
  br i1 %666, label %667, label %784

667:                                              ; preds = %663, %659
  %668 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 15
  %669 = load i32, ptr %668, align 4, !tbaa !50
  %670 = icmp eq i32 %669, 1
  br i1 %670, label %671, label %692

671:                                              ; preds = %667
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %672

672:                                              ; preds = %688, %671
  %673 = load i32, ptr %27, align 4, !tbaa !11
  %674 = load i32, ptr %34, align 4, !tbaa !11
  %675 = icmp slt i32 %673, %674
  br i1 %675, label %676, label %691

676:                                              ; preds = %672
  %677 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 16
  %678 = load ptr, ptr %677, align 8, !tbaa !42
  %679 = load i32, ptr %27, align 4, !tbaa !11
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %678, i64 %680
  %682 = load double, ptr %681, align 8, !tbaa !15
  %683 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %684 = load ptr, ptr %683, align 8, !tbaa !36
  %685 = load i32, ptr %27, align 4, !tbaa !11
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %684, i64 %686
  store double %682, ptr %687, align 8, !tbaa !15
  br label %688

688:                                              ; preds = %676
  %689 = load i32, ptr %27, align 4, !tbaa !11
  %690 = add nsw i32 %689, 1
  store i32 %690, ptr %27, align 4, !tbaa !11
  br label %672, !llvm.loop !61

691:                                              ; preds = %672
  br label %735

692:                                              ; preds = %667
  %693 = call noundef i32 @_ZNK7qpOASES9QProblemB19usingRegularisationEv(ptr noundef nonnull align 8 dereferenceable(800) %41)
  %694 = icmp eq i32 %693, 1
  br i1 %694, label %695, label %719

695:                                              ; preds = %692
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %696

696:                                              ; preds = %715, %695
  %697 = load i32, ptr %27, align 4, !tbaa !11
  %698 = load i32, ptr %34, align 4, !tbaa !11
  %699 = icmp slt i32 %697, %698
  br i1 %699, label %700, label %718

700:                                              ; preds = %696
  %701 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 16
  %702 = load double, ptr %701, align 8, !tbaa !53
  %703 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 16
  %704 = load ptr, ptr %703, align 8, !tbaa !42
  %705 = load i32, ptr %27, align 4, !tbaa !11
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds double, ptr %704, i64 %706
  %708 = load double, ptr %707, align 8, !tbaa !15
  %709 = fmul double %702, %708
  %710 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %711 = load ptr, ptr %710, align 8, !tbaa !36
  %712 = load i32, ptr %27, align 4, !tbaa !11
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds double, ptr %711, i64 %713
  store double %709, ptr %714, align 8, !tbaa !15
  br label %715

715:                                              ; preds = %700
  %716 = load i32, ptr %27, align 4, !tbaa !11
  %717 = add nsw i32 %716, 1
  store i32 %717, ptr %27, align 4, !tbaa !11
  br label %696, !llvm.loop !62

718:                                              ; preds = %696
  br label %734

719:                                              ; preds = %692
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %720

720:                                              ; preds = %730, %719
  %721 = load i32, ptr %27, align 4, !tbaa !11
  %722 = load i32, ptr %34, align 4, !tbaa !11
  %723 = icmp slt i32 %721, %722
  br i1 %723, label %724, label %733

724:                                              ; preds = %720
  %725 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %726 = load ptr, ptr %725, align 8, !tbaa !36
  %727 = load i32, ptr %27, align 4, !tbaa !11
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds double, ptr %726, i64 %728
  store double 0.000000e+00, ptr %729, align 8, !tbaa !15
  br label %730

730:                                              ; preds = %724
  %731 = load i32, ptr %27, align 4, !tbaa !11
  %732 = add nsw i32 %731, 1
  store i32 %732, ptr %27, align 4, !tbaa !11
  br label %720, !llvm.loop !63

733:                                              ; preds = %720
  br label %734

734:                                              ; preds = %733, %718
  br label %735

735:                                              ; preds = %734, %691
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %736

736:                                              ; preds = %780, %735
  %737 = load i32, ptr %27, align 4, !tbaa !11
  %738 = load i32, ptr %34, align 4, !tbaa !11
  %739 = icmp slt i32 %737, %738
  br i1 %739, label %740, label %783

740:                                              ; preds = %736
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %741

741:                                              ; preds = %776, %740
  %742 = load i32, ptr %26, align 4, !tbaa !11
  %743 = load i32, ptr %32, align 4, !tbaa !11
  %744 = icmp slt i32 %742, %743
  br i1 %744, label %745, label %779

745:                                              ; preds = %741
  %746 = load ptr, ptr %36, align 8, !tbaa !5
  %747 = load i32, ptr %26, align 4, !tbaa !11
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds i32, ptr %746, i64 %748
  %750 = load i32, ptr %749, align 4, !tbaa !11
  store i32 %750, ptr %28, align 4, !tbaa !11
  %751 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 7
  %752 = load ptr, ptr %751, align 8, !tbaa !45
  %753 = load i32, ptr %28, align 4, !tbaa !11
  %754 = load i32, ptr %31, align 4, !tbaa !11
  %755 = load i32, ptr %35, align 4, !tbaa !11
  %756 = load i32, ptr %27, align 4, !tbaa !11
  %757 = add nsw i32 %755, %756
  %758 = mul nsw i32 %754, %757
  %759 = add nsw i32 %753, %758
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds double, ptr %752, i64 %760
  %762 = load double, ptr %761, align 8, !tbaa !15
  %763 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %764 = load ptr, ptr %763, align 8, !tbaa !20
  %765 = load i32, ptr %26, align 4, !tbaa !11
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds double, ptr %764, i64 %766
  %768 = load double, ptr %767, align 8, !tbaa !15
  %769 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %770 = load ptr, ptr %769, align 8, !tbaa !36
  %771 = load i32, ptr %27, align 4, !tbaa !11
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds double, ptr %770, i64 %772
  %774 = load double, ptr %773, align 8, !tbaa !15
  %775 = call double @llvm.fmuladd.f64(double %762, double %768, double %774)
  store double %775, ptr %773, align 8, !tbaa !15
  br label %776

776:                                              ; preds = %745
  %777 = load i32, ptr %26, align 4, !tbaa !11
  %778 = add nsw i32 %777, 1
  store i32 %778, ptr %26, align 4, !tbaa !11
  br label %741, !llvm.loop !64

779:                                              ; preds = %741
  br label %780

780:                                              ; preds = %779
  %781 = load i32, ptr %27, align 4, !tbaa !11
  %782 = add nsw i32 %781, 1
  store i32 %782, ptr %27, align 4, !tbaa !11
  br label %736, !llvm.loop !65

783:                                              ; preds = %736
  br label %862

784:                                              ; preds = %663
  %785 = load i32, ptr %35, align 4, !tbaa !11
  %786 = icmp sgt i32 %785, 0
  br i1 %786, label %787, label %808

787:                                              ; preds = %784
  %788 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 2
  %789 = load ptr, ptr %788, align 8, !tbaa !55
  %790 = load ptr, ptr %789, align 8, !tbaa !13
  %791 = getelementptr i8, ptr %790, i64 -24
  %792 = load i64, ptr %791, align 8
  %793 = getelementptr inbounds i8, ptr %789, i64 %792
  %794 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %795 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %794)
  %796 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %797 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %796)
  %798 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 15
  %799 = load ptr, ptr %798, align 8, !tbaa !58
  %800 = load i32, ptr %32, align 4, !tbaa !11
  %801 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %802 = load ptr, ptr %801, align 8, !tbaa !20
  %803 = load i32, ptr %32, align 4, !tbaa !11
  %804 = load ptr, ptr %793, align 8, !tbaa !13
  %805 = getelementptr inbounds ptr, ptr %804, i64 17
  %806 = load ptr, ptr %805, align 8
  %807 = call noundef i32 %806(ptr noundef nonnull align 8 dereferenceable(12) %793, ptr noundef %795, ptr noundef %797, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %799, i32 noundef %800, double noundef 1.000000e+00, ptr noundef %802, i32 noundef %803, i32 noundef 1)
  br label %808

808:                                              ; preds = %787, %784
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %809

809:                                              ; preds = %858, %808
  %810 = load i32, ptr %26, align 4, !tbaa !11
  %811 = load i32, ptr %34, align 4, !tbaa !11
  %812 = icmp slt i32 %810, %811
  br i1 %812, label %813, label %861

813:                                              ; preds = %809
  %814 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %815 = load ptr, ptr %814, align 8, !tbaa !36
  %816 = load i32, ptr %26, align 4, !tbaa !11
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds double, ptr %815, i64 %817
  store double 0.000000e+00, ptr %818, align 8, !tbaa !15
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %819

819:                                              ; preds = %854, %813
  %820 = load i32, ptr %27, align 4, !tbaa !11
  %821 = load i32, ptr %32, align 4, !tbaa !11
  %822 = icmp slt i32 %820, %821
  br i1 %822, label %823, label %857

823:                                              ; preds = %819
  %824 = load ptr, ptr %36, align 8, !tbaa !5
  %825 = load i32, ptr %27, align 4, !tbaa !11
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds i32, ptr %824, i64 %826
  %828 = load i32, ptr %827, align 4, !tbaa !11
  store i32 %828, ptr %29, align 4, !tbaa !11
  %829 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 7
  %830 = load ptr, ptr %829, align 8, !tbaa !45
  %831 = load i32, ptr %29, align 4, !tbaa !11
  %832 = load i32, ptr %31, align 4, !tbaa !11
  %833 = load i32, ptr %35, align 4, !tbaa !11
  %834 = load i32, ptr %26, align 4, !tbaa !11
  %835 = add nsw i32 %833, %834
  %836 = mul nsw i32 %832, %835
  %837 = add nsw i32 %831, %836
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds double, ptr %830, i64 %838
  %840 = load double, ptr %839, align 8, !tbaa !15
  %841 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %842 = load ptr, ptr %841, align 8, !tbaa !20
  %843 = load i32, ptr %27, align 4, !tbaa !11
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds double, ptr %842, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !15
  %847 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %848 = load ptr, ptr %847, align 8, !tbaa !36
  %849 = load i32, ptr %26, align 4, !tbaa !11
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %848, i64 %850
  %852 = load double, ptr %851, align 8, !tbaa !15
  %853 = call double @llvm.fmuladd.f64(double %840, double %846, double %852)
  store double %853, ptr %851, align 8, !tbaa !15
  br label %854

854:                                              ; preds = %823
  %855 = load i32, ptr %27, align 4, !tbaa !11
  %856 = add nsw i32 %855, 1
  store i32 %856, ptr %27, align 4, !tbaa !11
  br label %819, !llvm.loop !66

857:                                              ; preds = %819
  br label %858

858:                                              ; preds = %857
  %859 = load i32, ptr %26, align 4, !tbaa !11
  %860 = add nsw i32 %859, 1
  store i32 %860, ptr %26, align 4, !tbaa !11
  br label %809, !llvm.loop !67

861:                                              ; preds = %809
  br label %862

862:                                              ; preds = %861, %783
  %863 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %864 = load ptr, ptr %863, align 8, !tbaa !36
  %865 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 18
  %866 = load ptr, ptr %865, align 8, !tbaa !68
  %867 = load ptr, ptr %41, align 8, !tbaa !13
  %868 = getelementptr inbounds ptr, ptr %867, i64 33
  %869 = load ptr, ptr %868, align 8
  %870 = call noundef i32 %869(ptr noundef nonnull align 8 dereferenceable(1064) %41, ptr noundef %864, i32 noundef 1, ptr noundef %866)
  %871 = icmp ne i32 %870, 0
  br i1 %871, label %872, label %875

872:                                              ; preds = %862
  %873 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %874 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %873, i32 noundef 68, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4875, i32 noundef 1)
  store i32 %874, ptr %13, align 4
  store i32 1, ptr %39, align 4
  br label %1342

875:                                              ; preds = %862
  br label %876

876:                                              ; preds = %875, %656
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %877

877:                                              ; preds = %894, %876
  %878 = load i32, ptr %26, align 4, !tbaa !11
  %879 = load i32, ptr %32, align 4, !tbaa !11
  %880 = icmp slt i32 %878, %879
  br i1 %880, label %881, label %897

881:                                              ; preds = %877
  %882 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 18
  %883 = load ptr, ptr %882, align 8, !tbaa !40
  %884 = load i32, ptr %26, align 4, !tbaa !11
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds double, ptr %883, i64 %885
  %887 = load double, ptr %886, align 8, !tbaa !15
  %888 = load ptr, ptr %23, align 8, !tbaa !5
  %889 = load i32, ptr %26, 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 !15
  %893 = fadd double %892, %887
  store double %893, ptr %891, align 8, !tbaa !15
  br label %894

894:                                              ; preds = %881
  %895 = load i32, ptr %26, align 4, !tbaa !11
  %896 = add nsw i32 %895, 1
  store i32 %896, ptr %26, align 4, !tbaa !11
  br label %877, !llvm.loop !69

897:                                              ; preds = %877
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %898

898:                                              ; preds = %915, %897
  %899 = load i32, ptr %26, align 4, !tbaa !11
  %900 = load i32, ptr %34, align 4, !tbaa !11
  %901 = icmp slt i32 %899, %900
  br i1 %901, label %902, label %918

902:                                              ; preds = %898
  %903 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 18
  %904 = load ptr, ptr %903, align 8, !tbaa !68
  %905 = load i32, ptr %26, align 4, !tbaa !11
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds double, ptr %904, i64 %906
  %908 = load double, ptr %907, align 8, !tbaa !15
  %909 = load ptr, ptr %24, align 8, !tbaa !5
  %910 = load i32, ptr %26, align 4, !tbaa !11
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds double, ptr %909, i64 %911
  %913 = load double, ptr %912, align 8, !tbaa !15
  %914 = fadd double %913, %908
  store double %914, ptr %912, align 8, !tbaa !15
  br label %915

915:                                              ; preds = %902
  %916 = load i32, ptr %26, align 4, !tbaa !11
  %917 = add nsw i32 %916, 1
  store i32 %917, ptr %26, align 4, !tbaa !11
  br label %898, !llvm.loop !70

918:                                              ; preds = %898
  %919 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 23
  %920 = getelementptr inbounds %"class.qpOASES::Options", ptr %919, i32 0, i32 27
  %921 = load i32, ptr %920, align 8, !tbaa !39
  %922 = icmp sgt i32 %921, 0
  br i1 %922, label %923, label %1209

923:                                              ; preds = %918
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %924

924:                                              ; preds = %944, %923
  %925 = load i32, ptr %26, align 4, !tbaa !11
  %926 = load i32, ptr %32, align 4, !tbaa !11
  %927 = icmp slt i32 %925, %926
  br i1 %927, label %928, label %947

928:                                              ; preds = %924
  %929 = load ptr, ptr %36, align 8, !tbaa !5
  %930 = load i32, ptr %26, align 4, !tbaa !11
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds i32, ptr %929, i64 %931
  %933 = load i32, ptr %932, align 4, !tbaa !11
  store i32 %933, ptr %28, align 4, !tbaa !11
  %934 = load ptr, ptr %15, align 8, !tbaa !5
  %935 = load i32, ptr %28, align 4, !tbaa !11
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds double, ptr %934, i64 %936
  %938 = load double, ptr %937, align 8, !tbaa !15
  %939 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %940 = load ptr, ptr %939, align 8, !tbaa !20
  %941 = load i32, ptr %26, align 4, !tbaa !11
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds double, ptr %940, i64 %942
  store double %938, ptr %943, align 8, !tbaa !15
  br label %944

944:                                              ; preds = %928
  %945 = load i32, ptr %26, align 4, !tbaa !11
  %946 = add nsw i32 %945, 1
  store i32 %946, ptr %26, align 4, !tbaa !11
  br label %924, !llvm.loop !71

947:                                              ; preds = %924
  %948 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 15
  %949 = load i32, ptr %948, align 4, !tbaa !50
  switch i32 %949, label %1000 [
    i32 0, label %950
    i32 1, label %978
  ]

950:                                              ; preds = %947
  %951 = call noundef i32 @_ZNK7qpOASES9QProblemB19usingRegularisationEv(ptr noundef nonnull align 8 dereferenceable(800) %41)
  %952 = icmp eq i32 %951, 1
  br i1 %952, label %953, label %977

953:                                              ; preds = %950
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %954

954:                                              ; preds = %973, %953
  %955 = load i32, ptr %26, align 4, !tbaa !11
  %956 = load i32, ptr %32, align 4, !tbaa !11
  %957 = icmp slt i32 %955, %956
  br i1 %957, label %958, label %976

958:                                              ; preds = %954
  %959 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 16
  %960 = load double, ptr %959, align 8, !tbaa !53
  %961 = load ptr, ptr %23, align 8, !tbaa !5
  %962 = load i32, ptr %26, align 4, !tbaa !11
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds double, ptr %961, i64 %963
  %965 = load double, ptr %964, align 8, !tbaa !15
  %966 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %967 = load ptr, ptr %966, align 8, !tbaa !20
  %968 = load i32, ptr %26, align 4, !tbaa !11
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %967, i64 %969
  %971 = load double, ptr %970, align 8, !tbaa !15
  %972 = call double @llvm.fmuladd.f64(double %960, double %965, double %971)
  store double %972, ptr %970, align 8, !tbaa !15
  br label %973

973:                                              ; preds = %958
  %974 = load i32, ptr %26, align 4, !tbaa !11
  %975 = add nsw i32 %974, 1
  store i32 %975, ptr %26, align 4, !tbaa !11
  br label %954, !llvm.loop !72

976:                                              ; preds = %954
  br label %977

977:                                              ; preds = %976, %950
  br label %1039

978:                                              ; preds = %947
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %979

979:                                              ; preds = %996, %978
  %980 = load i32, ptr %26, align 4, !tbaa !11
  %981 = load i32, ptr %32, align 4, !tbaa !11
  %982 = icmp slt i32 %980, %981
  br i1 %982, label %983, label %999

983:                                              ; preds = %979
  %984 = load ptr, ptr %23, align 8, !tbaa !5
  %985 = load i32, ptr %26, align 4, !tbaa !11
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds double, ptr %984, i64 %986
  %988 = load double, ptr %987, align 8, !tbaa !15
  %989 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %990 = load ptr, ptr %989, align 8, !tbaa !20
  %991 = load i32, ptr %26, align 4, !tbaa !11
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds double, ptr %990, i64 %992
  %994 = load double, ptr %993, align 8, !tbaa !15
  %995 = fadd double %994, %988
  store double %995, ptr %993, align 8, !tbaa !15
  br label %996

996:                                              ; preds = %983
  %997 = load i32, ptr %26, align 4, !tbaa !11
  %998 = add nsw i32 %997, 1
  store i32 %998, ptr %26, align 4, !tbaa !11
  br label %979, !llvm.loop !73

999:                                              ; preds = %979
  br label %1039

1000:                                             ; preds = %947
  %1001 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 2
  %1002 = load ptr, ptr %1001, align 8, !tbaa !55
  %1003 = load ptr, ptr %1002, align 8, !tbaa !13
  %1004 = getelementptr i8, ptr %1003, i64 -24
  %1005 = load i64, ptr %1004, align 8
  %1006 = getelementptr inbounds i8, ptr %1002, i64 %1005
  %1007 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1008 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %1007)
  %1009 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1010 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %1009)
  %1011 = load ptr, ptr %23, align 8, !tbaa !5
  %1012 = load i32, ptr %32, align 4, !tbaa !11
  %1013 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %1014 = load ptr, ptr %1013, align 8, !tbaa !20
  %1015 = load i32, ptr %32, align 4, !tbaa !11
  %1016 = load ptr, ptr %1006, align 8, !tbaa !13
  %1017 = getelementptr inbounds ptr, ptr %1016, i64 17
  %1018 = load ptr, ptr %1017, align 8
  %1019 = call noundef i32 %1018(ptr noundef nonnull align 8 dereferenceable(12) %1006, ptr noundef %1008, ptr noundef %1010, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %1011, i32 noundef %1012, double noundef 1.000000e+00, ptr noundef %1014, i32 noundef %1015, i32 noundef 1)
  %1020 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 2
  %1021 = load ptr, ptr %1020, align 8, !tbaa !55
  %1022 = load ptr, ptr %1021, align 8, !tbaa !13
  %1023 = getelementptr i8, ptr %1022, i64 -24
  %1024 = load i64, ptr %1023, align 8
  %1025 = getelementptr inbounds i8, ptr %1021, i64 %1024
  %1026 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1027 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %1026)
  %1028 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1029 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %1028)
  %1030 = load ptr, ptr %22, align 8, !tbaa !5
  %1031 = load i32, ptr %33, align 4, !tbaa !11
  %1032 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %1033 = load ptr, ptr %1032, align 8, !tbaa !20
  %1034 = load i32, ptr %32, align 4, !tbaa !11
  %1035 = load ptr, ptr %1025, align 8, !tbaa !13
  %1036 = getelementptr inbounds ptr, ptr %1035, i64 17
  %1037 = load ptr, ptr %1036, align 8
  %1038 = call noundef i32 %1037(ptr noundef nonnull align 8 dereferenceable(12) %1025, ptr noundef %1027, ptr noundef %1029, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %1030, i32 noundef %1031, double noundef 1.000000e+00, ptr noundef %1033, i32 noundef %1034, i32 noundef 1)
  br label %1039

1039:                                             ; preds = %1000, %999, %977
  %1040 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 2
  %1041 = load ptr, ptr %1040, align 8, !tbaa !44
  %1042 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 5
  %1043 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %1042)
  %1044 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1045 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %1044)
  %1046 = load ptr, ptr %24, align 8, !tbaa !5
  %1047 = load i32, ptr %34, align 4, !tbaa !11
  %1048 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %1049 = load ptr, ptr %1048, align 8, !tbaa !20
  %1050 = load i32, ptr %32, align 4, !tbaa !11
  %1051 = load ptr, ptr %1041, align 8, !tbaa !13
  %1052 = getelementptr inbounds ptr, ptr %1051, i64 18
  %1053 = load ptr, ptr %1052, align 8
  %1054 = call noundef i32 %1053(ptr noundef nonnull align 8 dereferenceable(12) %1041, ptr noundef %1043, ptr noundef %1045, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %1046, i32 noundef %1047, double noundef 1.000000e+00, ptr noundef %1049, i32 noundef %1050)
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  store double 0.000000e+00, ptr %40, align 8, !tbaa !15
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %1055

1055:                                             ; preds = %1078, %1039
  %1056 = load i32, ptr %26, align 4, !tbaa !11
  %1057 = load i32, ptr %32, align 4, !tbaa !11
  %1058 = icmp slt i32 %1056, %1057
  br i1 %1058, label %1059, label %1081

1059:                                             ; preds = %1055
  %1060 = load double, ptr %40, align 8, !tbaa !15
  %1061 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %1062 = load ptr, ptr %1061, align 8, !tbaa !20
  %1063 = load i32, ptr %26, align 4, !tbaa !11
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds double, ptr %1062, i64 %1064
  %1066 = load double, ptr %1065, align 8, !tbaa !15
  %1067 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %1066)
  %1068 = fcmp olt double %1060, %1067
  br i1 %1068, label %1069, label %1077

1069:                                             ; preds = %1059
  %1070 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 13
  %1071 = load ptr, ptr %1070, align 8, !tbaa !20
  %1072 = load i32, ptr %26, align 4, !tbaa !11
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds double, ptr %1071, i64 %1073
  %1075 = load double, ptr %1074, align 8, !tbaa !15
  %1076 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %1075)
  store double %1076, ptr %40, align 8, !tbaa !15
  br label %1077

1077:                                             ; preds = %1069, %1059
  br label %1078

1078:                                             ; preds = %1077
  %1079 = load i32, ptr %26, align 4, !tbaa !11
  %1080 = add nsw i32 %1079, 1
  store i32 %1080, ptr %26, align 4, !tbaa !11
  br label %1055, !llvm.loop !74

1081:                                             ; preds = %1055
  %1082 = load i32, ptr %20, align 4, !tbaa !9
  %1083 = icmp ne i32 %1082, 0
  br i1 %1083, label %1126, label %1084

1084:                                             ; preds = %1081
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %1085

1085:                                             ; preds = %1122, %1084
  %1086 = load i32, ptr %26, align 4, !tbaa !11
  %1087 = load i32, ptr %34, align 4, !tbaa !11
  %1088 = icmp slt i32 %1086, %1087
  br i1 %1088, label %1089, label %1125

1089:                                             ; preds = %1085
  %1090 = load ptr, ptr %38, align 8, !tbaa !5
  %1091 = load i32, ptr %26, align 4, !tbaa !11
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds i32, ptr %1090, i64 %1092
  %1094 = load i32, ptr %1093, align 4, !tbaa !11
  store i32 %1094, ptr %28, align 4, !tbaa !11
  %1095 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 5
  %1096 = load i32, ptr %28, align 4, !tbaa !11
  %1097 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %1095, i32 noundef %1096)
  %1098 = icmp eq i32 %1097, -1
  br i1 %1098, label %1099, label %1110

1099:                                             ; preds = %1089
  %1100 = load ptr, ptr %16, align 8, !tbaa !5
  %1101 = load i32, ptr %28, align 4, !tbaa !11
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds double, ptr %1100, i64 %1102
  %1104 = load double, ptr %1103, align 8, !tbaa !15
  %1105 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %1106 = load ptr, ptr %1105, align 8, !tbaa !36
  %1107 = load i32, ptr %26, align 4, !tbaa !11
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds double, ptr %1106, i64 %1108
  store double %1104, ptr %1109, align 8, !tbaa !15
  br label %1121

1110:                                             ; preds = %1089
  %1111 = load ptr, ptr %17, align 8, !tbaa !5
  %1112 = load i32, ptr %28, align 4, !tbaa !11
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds double, ptr %1111, i64 %1113
  %1115 = load double, ptr %1114, align 8, !tbaa !15
  %1116 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %1117 = load ptr, ptr %1116, align 8, !tbaa !36
  %1118 = load i32, ptr %26, align 4, !tbaa !11
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds double, ptr %1117, i64 %1119
  store double %1115, ptr %1120, align 8, !tbaa !15
  br label %1121

1121:                                             ; preds = %1110, %1099
  br label %1122

1122:                                             ; preds = %1121
  %1123 = load i32, ptr %26, align 4, !tbaa !11
  %1124 = add nsw i32 %1123, 1
  store i32 %1124, ptr %26, align 4, !tbaa !11
  br label %1085, !llvm.loop !75

1125:                                             ; preds = %1085
  br label %1141

1126:                                             ; preds = %1081
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %1127

1127:                                             ; preds = %1137, %1126
  %1128 = load i32, ptr %26, align 4, !tbaa !11
  %1129 = load i32, ptr %34, align 4, !tbaa !11
  %1130 = icmp slt i32 %1128, %1129
  br i1 %1130, label %1131, label %1140

1131:                                             ; preds = %1127
  %1132 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %1133 = load ptr, ptr %1132, align 8, !tbaa !36
  %1134 = load i32, ptr %26, align 4, !tbaa !11
  %1135 = sext i32 %1134 to i64
  %1136 = getelementptr inbounds double, ptr %1133, i64 %1135
  store double 0.000000e+00, ptr %1136, align 8, !tbaa !15
  br label %1137

1137:                                             ; preds = %1131
  %1138 = load i32, ptr %26, align 4, !tbaa !11
  %1139 = add nsw i32 %1138, 1
  store i32 %1139, ptr %26, align 4, !tbaa !11
  br label %1127, !llvm.loop !76

1140:                                             ; preds = %1127
  br label %1141

1141:                                             ; preds = %1140, %1125
  %1142 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 2
  %1143 = load ptr, ptr %1142, align 8, !tbaa !44
  %1144 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 5
  %1145 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %1144)
  %1146 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1147 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %1146)
  %1148 = load ptr, ptr %23, align 8, !tbaa !5
  %1149 = load i32, ptr %32, align 4, !tbaa !11
  %1150 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %1151 = load ptr, ptr %1150, align 8, !tbaa !36
  %1152 = load i32, ptr %34, align 4, !tbaa !11
  %1153 = load ptr, ptr %1143, align 8, !tbaa !13
  %1154 = getelementptr inbounds ptr, ptr %1153, i64 17
  %1155 = load ptr, ptr %1154, align 8
  %1156 = call noundef i32 %1155(ptr noundef nonnull align 8 dereferenceable(12) %1143, ptr noundef %1145, ptr noundef %1147, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %1148, i32 noundef %1149, double noundef 1.000000e+00, ptr noundef %1151, i32 noundef %1152, i32 noundef 1)
  %1157 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 2
  %1158 = load ptr, ptr %1157, align 8, !tbaa !44
  %1159 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 5
  %1160 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %1159)
  %1161 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1162 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %1161)
  %1163 = load ptr, ptr %22, align 8, !tbaa !5
  %1164 = load i32, ptr %33, align 4, !tbaa !11
  %1165 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %1166 = load ptr, ptr %1165, align 8, !tbaa !36
  %1167 = load i32, ptr %34, align 4, !tbaa !11
  %1168 = load ptr, ptr %1158, align 8, !tbaa !13
  %1169 = getelementptr inbounds ptr, ptr %1168, i64 17
  %1170 = load ptr, ptr %1169, align 8
  %1171 = call noundef i32 %1170(ptr noundef nonnull align 8 dereferenceable(12) %1158, ptr noundef %1160, ptr noundef %1162, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %1163, i32 noundef %1164, double noundef 1.000000e+00, ptr noundef %1166, i32 noundef %1167, i32 noundef 1)
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %1172

1172:                                             ; preds = %1195, %1141
  %1173 = load i32, ptr %26, align 4, !tbaa !11
  %1174 = load i32, ptr %34, align 4, !tbaa !11
  %1175 = icmp slt i32 %1173, %1174
  br i1 %1175, label %1176, label %1198

1176:                                             ; preds = %1172
  %1177 = load double, ptr %40, align 8, !tbaa !15
  %1178 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %1179 = load ptr, ptr %1178, align 8, !tbaa !36
  %1180 = load i32, ptr %26, align 4, !tbaa !11
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds double, ptr %1179, i64 %1181
  %1183 = load double, ptr %1182, align 8, !tbaa !15
  %1184 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %1183)
  %1185 = fcmp olt double %1177, %1184
  br i1 %1185, label %1186, label %1194

1186:                                             ; preds = %1176
  %1187 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 14
  %1188 = load ptr, ptr %1187, align 8, !tbaa !36
  %1189 = load i32, ptr %26, align 4, !tbaa !11
  %1190 = sext i32 %1189 to i64
  %1191 = getelementptr inbounds double, ptr %1188, i64 %1190
  %1192 = load double, ptr %1191, align 8, !tbaa !15
  %1193 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %1192)
  store double %1193, ptr %40, align 8, !tbaa !15
  br label %1194

1194:                                             ; preds = %1186, %1176
  br label %1195

1195:                                             ; preds = %1194
  %1196 = load i32, ptr %26, align 4, !tbaa !11
  %1197 = add nsw i32 %1196, 1
  store i32 %1197, ptr %26, align 4, !tbaa !11
  br label %1172, !llvm.loop !77

1198:                                             ; preds = %1172
  %1199 = load double, ptr %40, align 8, !tbaa !15
  %1200 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 23
  %1201 = getelementptr inbounds %"class.qpOASES::Options", ptr %1200, i32 0, i32 29
  %1202 = load double, ptr %1201, align 8, !tbaa !78
  %1203 = fcmp olt double %1199, %1202
  br i1 %1203, label %1204, label %1205

1204:                                             ; preds = %1198
  store i32 20, ptr %39, align 4
  br label %1206

1205:                                             ; preds = %1198
  store i32 0, ptr %39, align 4
  br label %1206

1206:                                             ; preds = %1205, %1204
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  %1207 = load i32, ptr %39, align 4
  switch i32 %1207, label %1344 [
    i32 0, label %1208
    i32 20, label %1213
  ]

1208:                                             ; preds = %1206
  br label %1209

1209:                                             ; preds = %1208, %918
  br label %1210

1210:                                             ; preds = %1209
  %1211 = load i32, ptr %30, align 4, !tbaa !11
  %1212 = add nsw i32 %1211, 1
  store i32 %1212, ptr %30, align 4, !tbaa !11
  br label %217, !llvm.loop !79

1213:                                             ; preds = %1206, %217
  %1214 = load i32, ptr %33, align 4, !tbaa !11
  %1215 = icmp sgt i32 %1214, 0
  br i1 %1215, label %1216, label %1341

1216:                                             ; preds = %1213
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %1217

1217:                                             ; preds = %1235, %1216
  %1218 = load i32, ptr %26, align 4, !tbaa !11
  %1219 = load i32, ptr %33, align 4, !tbaa !11
  %1220 = icmp slt i32 %1218, %1219
  br i1 %1220, label %1221, label %1238

1221:                                             ; preds = %1217
  %1222 = load ptr, ptr %15, align 8, !tbaa !5
  %1223 = load ptr, ptr %37, align 8, !tbaa !5
  %1224 = load i32, ptr %26, align 4, !tbaa !11
  %1225 = sext i32 %1224 to i64
  %1226 = getelementptr inbounds i32, ptr %1223, i64 %1225
  %1227 = load i32, ptr %1226, align 4, !tbaa !11
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds double, ptr %1222, i64 %1228
  %1230 = load double, ptr %1229, align 8, !tbaa !15
  %1231 = load ptr, ptr %25, align 8, !tbaa !5
  %1232 = load i32, ptr %26, align 4, !tbaa !11
  %1233 = sext i32 %1232 to i64
  %1234 = getelementptr inbounds double, ptr %1231, i64 %1233
  store double %1230, ptr %1234, align 8, !tbaa !15
  br label %1235

1235:                                             ; preds = %1221
  %1236 = load i32, ptr %26, align 4, !tbaa !11
  %1237 = add nsw i32 %1236, 1
  store i32 %1237, ptr %26, align 4, !tbaa !11
  br label %1217, !llvm.loop !80

1238:                                             ; preds = %1217
  %1239 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 2
  %1240 = load ptr, ptr %1239, align 8, !tbaa !44
  %1241 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %41, i32 0, i32 5
  %1242 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %1241)
  %1243 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1244 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %1243)
  %1245 = load ptr, ptr %24, align 8, !tbaa !5
  %1246 = load i32, ptr %34, align 4, !tbaa !11
  %1247 = load ptr, ptr %25, align 8, !tbaa !5
  %1248 = load i32, ptr %33, align 4, !tbaa !11
  %1249 = load ptr, ptr %1240, align 8, !tbaa !13
  %1250 = getelementptr inbounds ptr, ptr %1249, i64 18
  %1251 = load ptr, ptr %1250, align 8
  %1252 = call noundef i32 %1251(ptr noundef nonnull align 8 dereferenceable(12) %1240, ptr noundef %1242, ptr noundef %1244, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %1245, i32 noundef %1246, double noundef 1.000000e+00, ptr noundef %1247, i32 noundef %1248)
  %1253 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 15
  %1254 = load i32, ptr %1253, align 4, !tbaa !50
  switch i32 %1254, label %1303 [
    i32 0, label %1255
    i32 1, label %1282
  ]

1255:                                             ; preds = %1238
  %1256 = call noundef i32 @_ZNK7qpOASES9QProblemB19usingRegularisationEv(ptr noundef nonnull align 8 dereferenceable(800) %41)
  %1257 = icmp eq i32 %1256, 1
  br i1 %1257, label %1258, label %1281

1258:                                             ; preds = %1255
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %1259

1259:                                             ; preds = %1277, %1258
  %1260 = load i32, ptr %26, align 4, !tbaa !11
  %1261 = load i32, ptr %33, align 4, !tbaa !11
  %1262 = icmp slt i32 %1260, %1261
  br i1 %1262, label %1263, label %1280

1263:                                             ; preds = %1259
  %1264 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 16
  %1265 = load double, ptr %1264, align 8, !tbaa !53
  %1266 = load ptr, ptr %22, align 8, !tbaa !5
  %1267 = load i32, ptr %26, align 4, !tbaa !11
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds double, ptr %1266, i64 %1268
  %1270 = load double, ptr %1269, align 8, !tbaa !15
  %1271 = load ptr, ptr %25, align 8, !tbaa !5
  %1272 = load i32, ptr %26, align 4, !tbaa !11
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds double, ptr %1271, i64 %1273
  %1275 = load double, ptr %1274, align 8, !tbaa !15
  %1276 = call double @llvm.fmuladd.f64(double %1265, double %1270, double %1275)
  store double %1276, ptr %1274, align 8, !tbaa !15
  br label %1277

1277:                                             ; preds = %1263
  %1278 = load i32, ptr %26, align 4, !tbaa !11
  %1279 = add nsw i32 %1278, 1
  store i32 %1279, ptr %26, align 4, !tbaa !11
  br label %1259, !llvm.loop !81

1280:                                             ; preds = %1259
  br label %1281

1281:                                             ; preds = %1280, %1255
  br label %1340

1282:                                             ; preds = %1238
  store i32 0, ptr %26, align 4, !tbaa !11
  br label %1283

1283:                                             ; preds = %1299, %1282
  %1284 = load i32, ptr %26, align 4, !tbaa !11
  %1285 = load i32, ptr %33, align 4, !tbaa !11
  %1286 = icmp slt i32 %1284, %1285
  br i1 %1286, label %1287, label %1302

1287:                                             ; preds = %1283
  %1288 = load ptr, ptr %22, align 8, !tbaa !5
  %1289 = load i32, ptr %26, align 4, !tbaa !11
  %1290 = sext i32 %1289 to i64
  %1291 = getelementptr inbounds double, ptr %1288, i64 %1290
  %1292 = load double, ptr %1291, align 8, !tbaa !15
  %1293 = load ptr, ptr %25, align 8, !tbaa !5
  %1294 = load i32, ptr %26, align 4, !tbaa !11
  %1295 = sext i32 %1294 to i64
  %1296 = getelementptr inbounds double, ptr %1293, i64 %1295
  %1297 = load double, ptr %1296, align 8, !tbaa !15
  %1298 = call double @llvm.fmuladd.f64(double 1.000000e+00, double %1292, double %1297)
  store double %1298, ptr %1296, align 8, !tbaa !15
  br label %1299

1299:                                             ; preds = %1287
  %1300 = load i32, ptr %26, align 4, !tbaa !11
  %1301 = add nsw i32 %1300, 1
  store i32 %1301, ptr %26, align 4, !tbaa !11
  br label %1283, !llvm.loop !82

1302:                                             ; preds = %1283
  br label %1340

1303:                                             ; preds = %1238
  %1304 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 2
  %1305 = load ptr, ptr %1304, align 8, !tbaa !55
  %1306 = load ptr, ptr %1305, align 8, !tbaa !13
  %1307 = getelementptr i8, ptr %1306, i64 -24
  %1308 = load i64, ptr %1307, align 8
  %1309 = getelementptr inbounds i8, ptr %1305, i64 %1308
  %1310 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1311 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %1310)
  %1312 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1313 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %1312)
  %1314 = load ptr, ptr %23, align 8, !tbaa !5
  %1315 = load i32, ptr %32, align 4, !tbaa !11
  %1316 = load ptr, ptr %25, align 8, !tbaa !5
  %1317 = load i32, ptr %33, align 4, !tbaa !11
  %1318 = load ptr, ptr %1309, align 8, !tbaa !13
  %1319 = getelementptr inbounds ptr, ptr %1318, i64 17
  %1320 = load ptr, ptr %1319, align 8
  %1321 = call noundef i32 %1320(ptr noundef nonnull align 8 dereferenceable(12) %1309, ptr noundef %1311, ptr noundef %1313, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %1314, i32 noundef %1315, double noundef 1.000000e+00, ptr noundef %1316, i32 noundef %1317, i32 noundef 1)
  %1322 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 2
  %1323 = load ptr, ptr %1322, align 8, !tbaa !55
  %1324 = load ptr, ptr %1323, align 8, !tbaa !13
  %1325 = getelementptr i8, ptr %1324, i64 -24
  %1326 = load i64, ptr %1325, align 8
  %1327 = getelementptr inbounds i8, ptr %1323, i64 %1326
  %1328 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1329 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %1328)
  %1330 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %41, i32 0, i32 6
  %1331 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %1330)
  %1332 = load ptr, ptr %22, align 8, !tbaa !5
  %1333 = load i32, ptr %33, align 4, !tbaa !11
  %1334 = load ptr, ptr %25, align 8, !tbaa !5
  %1335 = load i32, ptr %33, align 4, !tbaa !11
  %1336 = load ptr, ptr %1327, align 8, !tbaa !13
  %1337 = getelementptr inbounds ptr, ptr %1336, i64 17
  %1338 = load ptr, ptr %1337, align 8
  %1339 = call noundef i32 %1338(ptr noundef nonnull align 8 dereferenceable(12) %1327, ptr noundef %1329, ptr noundef %1331, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %1332, i32 noundef %1333, double noundef 1.000000e+00, ptr noundef %1334, i32 noundef %1335, i32 noundef 1)
  br label %1340

1340:                                             ; preds = %1303, %1302, %1281
  br label %1341

1341:                                             ; preds = %1340, %1213
  store i32 0, ptr %13, align 4
  store i32 1, ptr %39, align 4
  br label %1342

1342:                                             ; preds = %1341, %872, %582, %569, %447, %296
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  %1343 = load i32, ptr %13, align 4
  ret i32 %1343

1344:                                             ; preds = %1206
  unreachable
}

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTSN7qpOASES11BooleanTypeE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"vtable pointer", !8, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = !{!21, !6, i64 1008}
!21 = !{!"_ZTSN7qpOASES8QProblemE", !22, i64 0, !10, i64 800, !6, i64 808, !6, i64 816, !6, i64 824, !32, 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}
!22 = !{!"_ZTSN7qpOASES9QProblemBE", !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !23, i64 48, !6, i64 168, !10, i64 176, !6, i64 184, !6, i64 192, !16, i64 200, !26, i64 208, !10, i64 212, !10, i64 216, !27, i64 220, !16, i64 224, !12, i64 232, !6, i64 240, !16, i64 248, !16, i64 256, !12, i64 264, !28, i64 272, !31, i64 496, !33, i64 768}
!23 = !{!"_ZTSN7qpOASES6BoundsE", !24, i64 0, !25, i64 40, !25, i64 80}
!24 = !{!"_ZTSN7qpOASES9SubjectToE", !12, i64 8, !6, i64 16, !6, i64 24, !10, i64 32, !10, i64 36}
!25 = !{!"_ZTSN7qpOASES9IndexlistE", !6, i64 0, !6, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32}
!26 = !{!"_ZTSN7qpOASES14QProblemStatusE", !7, i64 0}
!27 = !{!"_ZTSN7qpOASES11HessianTypeE", !7, i64 0}
!28 = !{!"_ZTSN7qpOASES7OptionsE", !29, 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, !16, i64 40, !16, i64 48, !16, i64 56, !16, i64 64, !16, i64 72, !16, i64 80, !16, i64 88, !16, i64 96, !16, i64 104, !16, i64 112, !16, i64 120, !30, i64 128, !16, i64 136, !12, i64 144, !16, i64 152, !12, i64 160, !16, i64 168, !16, i64 176, !16, i64 184, !16, i64 192, !10, i64 200, !10, i64 204, !12, i64 208, !12, i64 212, !12, i64 216}
!29 = !{!"_ZTSN7qpOASES10PrintLevelE", !7, i64 0}
!30 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !7, i64 0}
!31 = !{!"_ZTSN7qpOASES7FlipperE", !12, i64 0, !12, i64 4, !23, i64 8, !32, i64 128, !6, i64 248, !6, i64 256, !6, i64 264}
!32 = !{!"_ZTSN7qpOASES11ConstraintsE", !24, i64 0, !25, i64 40, !25, i64 80}
!33 = !{!"_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}
!34 = distinct !{!34, !18}
!35 = distinct !{!35, !18}
!36 = !{!21, !6, i64 1016}
!37 = distinct !{!37, !18}
!38 = distinct !{!38, !18}
!39 = !{!22, !12, i64 432}
!40 = !{!22, !6, i64 240}
!41 = distinct !{!41, !18}
!42 = !{!21, !6, i64 1032}
!43 = distinct !{!43, !18}
!44 = !{!21, !6, i64 808}
!45 = !{!21, !6, i64 960}
!46 = distinct !{!46, !18}
!47 = distinct !{!47, !18}
!48 = !{!21, !6, i64 1040}
!49 = distinct !{!49, !18}
!50 = !{!22, !27, i64 220}
!51 = distinct !{!51, !18}
!52 = distinct !{!52, !18}
!53 = !{!22, !16, i64 224}
!54 = distinct !{!54, !18}
!55 = !{!22, !6, i64 16}
!56 = distinct !{!56, !18}
!57 = distinct !{!57, !18}
!58 = !{!21, !6, i64 1024}
!59 = distinct !{!59, !18}
!60 = distinct !{!60, !18}
!61 = distinct !{!61, !18}
!62 = distinct !{!62, !18}
!63 = distinct !{!63, !18}
!64 = distinct !{!64, !18}
!65 = distinct !{!65, !18}
!66 = distinct !{!66, !18}
!67 = distinct !{!67, !18}
!68 = !{!21, !6, i64 1048}
!69 = distinct !{!69, !18}
!70 = distinct !{!70, !18}
!71 = distinct !{!71, !18}
!72 = distinct !{!72, !18}
!73 = distinct !{!73, !18}
!74 = distinct !{!74, !18}
!75 = distinct !{!75, !18}
!76 = distinct !{!76, !18}
!77 = distinct !{!77, !18}
!78 = !{!22, !16, i64 440}
!79 = distinct !{!79, !18}
!80 = distinct !{!80, !18}
!81 = distinct !{!81, !18}
!82 = distinct !{!82, !18}


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

@.str = external hidden unnamed_addr constant [28 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [103 x i8], align 1

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES8QProblem22determineStepDirectionEPKdS2_S2_S2_S2_NS_11BooleanTypeES3_PdS4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, i32 noundef %6, i32 noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11) unnamed_addr #5 align 2 {
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %17 = tail call noundef i32 @_ZNK7qpOASES9QProblemB6getNFREv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %18 = tail call noundef i32 @_ZNK7qpOASES9QProblemB6getNFXEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %19 = tail call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %20 = load ptr, ptr %0, align 8, !tbaa !5
  %21 = getelementptr inbounds i8, ptr %20, i64 56
  %22 = load ptr, ptr %21, align 8
  %23 = tail call noundef i32 %22(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %24 = getelementptr inbounds i8, ptr %0, i64 48
  %25 = tail call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %26 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %25, ptr noundef nonnull %13)
  %27 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %28 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %27, ptr noundef nonnull %14)
  %29 = getelementptr inbounds i8, ptr %0, i64 832
  %30 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %29)
  %31 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %30, ptr noundef nonnull %15)
  %32 = icmp eq i32 %7, 0
  %33 = icmp sgt i32 %18, 0
  br i1 %32, label %.preheader370, label %.preheader372

.preheader372:                                    ; preds = %12
  br i1 %33, label %.lr.ph.preheader, label %.loopexit371

.lr.ph.preheader:                                 ; preds = %.preheader372
  %34 = zext nneg i32 %18 to i64
  %35 = shl nuw nsw i64 %34, 3
  call void @llvm.memset.p0.i64(ptr align 8 %8, i8 0, i64 %35, i1 false), !tbaa !8
  br label %.loopexit371

.preheader370:                                    ; preds = %12
  br i1 %33, label %.lr.ph376.preheader, label %.loopexit371

.lr.ph376.preheader:                              ; preds = %.preheader370
  %wide.trip.count = zext nneg i32 %18 to i64
  br label %.lr.ph376

.lr.ph376:                                        ; preds = %.lr.ph376.preheader, %.lr.ph376
  %indvars.iv = phi i64 [ 0, %.lr.ph376.preheader ], [ %indvars.iv.next, %.lr.ph376 ]
  %36 = load ptr, ptr %14, align 8, !tbaa !11
  %37 = getelementptr inbounds i32, ptr %36, i64 %indvars.iv
  %38 = load i32, ptr %37, align 4, !tbaa !13
  %39 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %24, i32 noundef %38)
  %40 = icmp eq i32 %39, -1
  %41 = sext i32 %38 to i64
  %. = select i1 %40, ptr %4, ptr %5
  %42 = getelementptr inbounds double, ptr %., i64 %41
  %.sink = load double, ptr %42, align 8, !tbaa !8
  %43 = getelementptr inbounds double, ptr %8, i64 %indvars.iv
  store double %.sink, ptr %43, align 8
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit371, label %.lr.ph376, !llvm.loop !15

.loopexit371:                                     ; preds = %.lr.ph376, %.lr.ph.preheader, %.preheader372, %.preheader370
  %44 = icmp sgt i32 %17, 0
  br i1 %44, label %.lr.ph378, label %.preheader369

.lr.ph378:                                        ; preds = %.loopexit371
  %45 = load ptr, ptr %13, align 8, !tbaa !11
  %46 = getelementptr inbounds i8, ptr %0, i64 1008
  %47 = load ptr, ptr %46, align 8, !tbaa !17
  %wide.trip.count500 = zext nneg i32 %17 to i64
  %xtraiter = and i64 %wide.trip.count500, 1
  %48 = icmp eq i32 %17, 1
  br i1 %48, label %.preheader369.loopexit.unr-lcssa, label %.lr.ph378.new

.lr.ph378.new:                                    ; preds = %.lr.ph378
  %unroll_iter = and i64 %wide.trip.count500, 2147483646
  br label %57

.preheader369.loopexit.unr-lcssa:                 ; preds = %57, %.lr.ph378
  %indvars.iv497.unr = phi i64 [ 0, %.lr.ph378 ], [ %indvars.iv.next498.1, %57 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.preheader369, label %.preheader369.loopexit.epilog-lcssa

.preheader369.loopexit.epilog-lcssa:              ; preds = %.preheader369.loopexit.unr-lcssa
  %49 = getelementptr inbounds i32, ptr %45, i64 %indvars.iv497.unr
  %50 = load i32, ptr %49, align 4, !tbaa !13
  %51 = sext i32 %50 to i64
  %52 = getelementptr inbounds double, ptr %1, i64 %51
  %53 = load double, ptr %52, align 8, !tbaa !8
  %54 = getelementptr inbounds double, ptr %47, i64 %indvars.iv497.unr
  store double %53, ptr %54, align 8, !tbaa !8
  %55 = getelementptr inbounds double, ptr %9, i64 %indvars.iv497.unr
  store double 0.000000e+00, ptr %55, align 8, !tbaa !8
  br label %.preheader369

.preheader369:                                    ; preds = %.preheader369.loopexit.epilog-lcssa, %.preheader369.loopexit.unr-lcssa, %.loopexit371
  %56 = icmp sgt i32 %19, 0
  br i1 %56, label %._crit_edge, label %._crit_edge.thread

57:                                               ; preds = %57, %.lr.ph378.new
  %indvars.iv497 = phi i64 [ 0, %.lr.ph378.new ], [ %indvars.iv.next498.1, %57 ]
  %niter = phi i64 [ 0, %.lr.ph378.new ], [ %niter.next.1, %57 ]
  %58 = getelementptr inbounds i32, ptr %45, i64 %indvars.iv497
  %59 = load i32, ptr %58, align 4, !tbaa !13
  %60 = sext i32 %59 to i64
  %61 = getelementptr inbounds double, ptr %1, i64 %60
  %62 = load double, ptr %61, align 8, !tbaa !8
  %63 = getelementptr inbounds double, ptr %47, i64 %indvars.iv497
  store double %62, ptr %63, align 8, !tbaa !8
  %64 = getelementptr inbounds double, ptr %9, i64 %indvars.iv497
  store double 0.000000e+00, ptr %64, align 8, !tbaa !8
  %indvars.iv.next498 = or disjoint i64 %indvars.iv497, 1
  %65 = getelementptr inbounds i32, ptr %45, i64 %indvars.iv.next498
  %66 = load i32, ptr %65, align 4, !tbaa !13
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds double, ptr %1, i64 %67
  %69 = load double, ptr %68, align 8, !tbaa !8
  %70 = getelementptr inbounds double, ptr %47, i64 %indvars.iv.next498
  store double %69, ptr %70, align 8, !tbaa !8
  %71 = getelementptr inbounds double, ptr %9, i64 %indvars.iv.next498
  store double 0.000000e+00, ptr %71, align 8, !tbaa !8
  %indvars.iv.next498.1 = add nuw nsw i64 %indvars.iv497, 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 %.preheader369.loopexit.unr-lcssa, label %57, !llvm.loop !32

._crit_edge:                                      ; preds = %.preheader369
  %72 = zext nneg i32 %19 to i64
  %73 = shl nuw nsw i64 %72, 3
  call void @llvm.memset.p0.i64(ptr align 8 %10, i8 0, i64 %73, i1 false), !tbaa !8
  %74 = icmp eq i32 %6, 0
  %75 = getelementptr inbounds i8, ptr %0, i64 1016
  br i1 %74, label %.lr.ph384, label %.lr.ph382

._crit_edge.thread:                               ; preds = %.preheader369
  %76 = icmp eq i32 %6, 0
  br label %.loopexit366

.lr.ph382:                                        ; preds = %._crit_edge
  %77 = load ptr, ptr %75, align 8, !tbaa !33
  %78 = zext nneg i32 %19 to i64
  %79 = shl nuw nsw i64 %78, 3
  call void @llvm.memset.p0.i64(ptr align 8 %77, i8 0, i64 %79, i1 false), !tbaa !8
  br label %.loopexit366

.lr.ph384:                                        ; preds = %._crit_edge
  %wide.trip.count511 = zext nneg i32 %19 to i64
  br label %80

80:                                               ; preds = %.lr.ph384, %80
  %indvars.iv508 = phi i64 [ 0, %.lr.ph384 ], [ %indvars.iv.next509, %80 ]
  %81 = load ptr, ptr %15, align 8, !tbaa !11
  %82 = getelementptr inbounds i32, ptr %81, i64 %indvars.iv508
  %83 = load i32, ptr %82, align 4, !tbaa !13
  %84 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %29, i32 noundef %83)
  %85 = icmp eq i32 %84, -1
  %86 = sext i32 %83 to i64
  %87 = load ptr, ptr %75, align 8, !tbaa !33
  %88 = getelementptr inbounds double, ptr %87, i64 %indvars.iv508
  %.676 = select i1 %85, ptr %2, ptr %3
  %89 = getelementptr inbounds double, ptr %.676, i64 %86
  %90 = load double, ptr %89, align 8, !tbaa !8
  store double %90, ptr %88, align 8, !tbaa !8
  %indvars.iv.next509 = add nuw nsw i64 %indvars.iv508, 1
  %exitcond512.not = icmp eq i64 %indvars.iv.next509, %wide.trip.count511
  br i1 %exitcond512.not, label %.loopexit366, label %80, !llvm.loop !34

.loopexit366:                                     ; preds = %80, %._crit_edge.thread, %.lr.ph382
  %91 = phi i1 [ false, %.lr.ph382 ], [ %76, %._crit_edge.thread ], [ true, %80 ]
  %92 = getelementptr inbounds i8, ptr %0, i64 432
  %93 = load i32, ptr %92, align 8, !tbaa !35
  %.not468 = icmp slt i32 %93, 0
  br i1 %.not468, label %._crit_edge473, label %.lr.ph472

.lr.ph472:                                        ; preds = %.loopexit366
  %94 = getelementptr inbounds i8, ptr %0, i64 240
  %95 = icmp eq i32 %6, 1
  %96 = icmp eq i32 %7, 1
  %or.cond = and i1 %95, %96
  %97 = getelementptr inbounds i8, ptr %0, i64 808
  %98 = getelementptr inbounds i8, ptr %0, i64 1016
  %99 = getelementptr inbounds i8, ptr %0, i64 1032
  %100 = getelementptr inbounds i8, ptr %0, i64 960
  %101 = icmp sgt i32 %23, 0
  %102 = getelementptr inbounds i8, ptr %0, i64 1040
  %103 = getelementptr inbounds i8, ptr %0, i64 220
  %104 = getelementptr inbounds i8, ptr %0, i64 16
  %105 = getelementptr inbounds i8, ptr %0, i64 1008
  %or.cond7 = or i1 %91, %32
  %or.cond331 = and i1 %or.cond7, %56
  %106 = getelementptr inbounds i8, ptr %0, i64 224
  %107 = icmp slt i32 %23, 1
  %108 = icmp slt i32 %17, 1
  %109 = getelementptr inbounds i8, ptr %0, i64 1024
  %110 = getelementptr inbounds i8, ptr %0, i64 1048
  %111 = getelementptr inbounds i8, ptr %0, i64 440
  %112 = zext i32 %17 to i64
  %113 = shl nuw nsw i64 %112, 3
  %114 = sext i32 %23 to i64
  %115 = sext i32 %16 to i64
  %116 = zext i32 %19 to i64
  %117 = shl nuw nsw i64 %116, 3
  %118 = zext i32 %23 to i64
  %119 = shl nuw nsw i64 %118, 3
  %brmerge = or i1 %107, %108
  %120 = shl nuw nsw i64 %112, 3
  %scevgep682 = getelementptr inbounds i8, ptr %0, i64 232
  %scevgep683 = getelementptr i8, ptr %9, i64 %120
  %121 = shl nuw nsw i64 %112, 3
  %scevgep694 = getelementptr i8, ptr %9, i64 %121
  %122 = shl nuw nsw i64 %116, 3
  %scevgep714 = getelementptr i8, ptr %10, i64 %122
  %123 = shl nuw nsw i64 %112, 3
  %scevgep735 = getelementptr i8, ptr %9, i64 %123
  %124 = shl nuw nsw i64 %116, 3
  %scevgep771 = getelementptr inbounds i8, ptr %0, i64 232
  %125 = shl nuw nsw i64 %118, 3
  %126 = shl nuw nsw i64 %118, 3
  %127 = shl nuw nsw i64 %112, 3
  %128 = shl nuw nsw i64 %118, 3
  %129 = shl nuw nsw i64 %112, 3
  %130 = add nsw i64 %118, -1
  %131 = add nsw i64 %112, -1
  %xtraiter938 = and i64 %116, 1
  %132 = icmp eq i32 %19, 1
  %unroll_iter940 = and i64 %116, 2147483646
  %lcmp.mod939.not = icmp eq i64 %xtraiter938, 0
  %min.iters.check859 = icmp ugt i32 %23, 5
  %ident.check844.not = icmp eq i32 %16, 1
  %or.cond928 = and i1 %min.iters.check859, %ident.check844.not
  %n.vec862 = and i64 %118, 2147483644
  %cmp.n875 = icmp eq i64 %n.vec862, %118
  %xtraiter942 = and i64 %118, 1
  %lcmp.mod943.not = icmp eq i64 %xtraiter942, 0
  %min.iters.check826 = icmp ugt i32 %23, 5
  %ident.check.not = icmp eq i32 %16, 1
  %or.cond927 = and i1 %min.iters.check826, %ident.check.not
  %n.vec829 = and i64 %118, 2147483644
  %cmp.n842 = icmp eq i64 %n.vec829, %118
  %xtraiter944 = and i64 %118, 1
  %lcmp.mod945.not = icmp eq i64 %xtraiter944, 0
  %133 = add nsw i64 %118, -1
  %min.iters.check802 = icmp eq i32 %23, 1
  %n.vec805 = and i64 %118, 2147483646
  %cmp.n811 = icmp eq i64 %n.vec805, %118
  %xtraiter949 = and i64 %118, 1
  %134 = icmp eq i64 %130, 0
  %unroll_iter953 = and i64 %118, 2147483646
  %lcmp.mod951.not = icmp eq i64 %xtraiter949, 0
  %xtraiter956 = and i64 %112, 1
  %135 = icmp eq i64 %131, 0
  %unroll_iter959 = and i64 %112, 2147483646
  %lcmp.mod958.not = icmp eq i64 %xtraiter956, 0
  %min.iters.check782 = icmp ult i32 %19, 6
  %n.vec785 = and i64 %116, 2147483644
  %cmp.n794 = icmp eq i64 %n.vec785, %116
  %xtraiter961 = and i64 %116, 3
  %lcmp.mod962.not = icmp eq i64 %xtraiter961, 0
  %min.iters.check758 = icmp ult i32 %19, 4
  %n.vec761 = and i64 %116, 2147483644
  %cmp.n768 = icmp eq i64 %n.vec761, %116
  %xtraiter964 = and i64 %116, 3
  %lcmp.mod965.not = icmp eq i64 %xtraiter964, 0
  %xtraiter968 = and i64 %112, 1
  %136 = icmp eq i64 %131, 0
  %unroll_iter971 = and i64 %112, 2147483646
  %lcmp.mod970.not = icmp eq i64 %xtraiter968, 0
  %min.iters.check742 = icmp ult i32 %17, 4
  %n.vec745 = and i64 %112, 2147483644
  %cmp.n754 = icmp eq i64 %n.vec745, %112
  %xtraiter973 = and i64 %112, 3
  %lcmp.mod974.not = icmp eq i64 %xtraiter973, 0
  %min.iters.check721 = icmp ult i32 %19, 4
  %n.vec724 = and i64 %116, 2147483644
  %cmp.n733 = icmp eq i64 %n.vec724, %116
  %xtraiter976 = and i64 %116, 3
  %lcmp.mod977.not = icmp eq i64 %xtraiter976, 0
  %xtraiter980 = and i64 %112, 3
  %137 = icmp ult i32 %17, 4
  %unroll_iter982 = and i64 %112, 2147483644
  %lcmp.mod981.not = icmp eq i64 %xtraiter980, 0
  %min.iters.check700 = icmp ult i32 %17, 4
  %n.vec703 = and i64 %112, 2147483644
  %cmp.n712 = icmp eq i64 %n.vec703, %112
  %xtraiter984 = and i64 %112, 3
  %lcmp.mod985.not = icmp eq i64 %xtraiter984, 0
  %min.iters.check = icmp ult i32 %17, 4
  %n.vec = and i64 %112, 2147483644
  %cmp.n = icmp eq i64 %n.vec, %112
  %xtraiter987 = and i64 %112, 1
  %lcmp.mod988.not = icmp eq i64 %xtraiter987, 0
  %138 = add nsw i64 %112, -1
  br label %139

139:                                              ; preds = %.lr.ph472, %814
  %.0319469 = phi i32 [ 0, %.lr.ph472 ], [ %816, %814 ]
  br i1 %44, label %.preheader364, label %.thread

.preheader364:                                    ; preds = %139
  %140 = load ptr, ptr %94, align 8, !tbaa !36
  call void @llvm.memset.p0.i64(ptr align 8 %140, i8 0, i64 %113, i1 false), !tbaa !8
  br i1 %56, label %141, label %.loopexit361

141:                                              ; preds = %.preheader364
  br i1 %or.cond, label %.lr.ph393, label %143

.lr.ph393:                                        ; preds = %141
  %142 = load ptr, ptr %99, align 8, !tbaa !37
  call void @llvm.memset.p0.i64(ptr align 8 %142, i8 0, i64 %117, i1 false), !tbaa !8
  br label %.loopexit361

143:                                              ; preds = %141
  %144 = or i32 %.0319469, %7
  %or.cond3 = icmp eq i32 %144, 0
  br i1 %or.cond3, label %145, label %154

145:                                              ; preds = %143
  %146 = load ptr, ptr %97, align 8, !tbaa !38
  %147 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %29)
  %148 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %149 = load ptr, ptr %98, align 8, !tbaa !33
  %150 = load ptr, ptr %146, align 8, !tbaa !5
  %151 = getelementptr inbounds i8, ptr %150, i64 136
  %152 = load ptr, ptr %151, align 8
  %153 = call noundef i32 %152(ptr noundef nonnull align 8 dereferenceable(12) %146, ptr noundef %147, ptr noundef %148, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %8, i32 noundef %18, double noundef 1.000000e+00, ptr noundef %149, i32 noundef %19, i32 noundef 1)
  br label %154

154:                                              ; preds = %145, %143
  %155 = load ptr, ptr %98, align 8, !tbaa !33
  %156 = load ptr, ptr %99, align 8, !tbaa !37
  %157 = load ptr, ptr %0, align 8, !tbaa !5
  %158 = getelementptr inbounds i8, ptr %157, i64 264
  %159 = load ptr, ptr %158, align 8
  %160 = call noundef i32 %159(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef %155, i32 noundef 0, ptr noundef %156)
  %.not326 = icmp eq i32 %160, 0
  br i1 %.not326, label %.lr.ph391, label %165

.lr.ph391:                                        ; preds = %154
  %161 = load ptr, ptr %13, align 8, !tbaa !11
  %162 = load ptr, ptr %100, align 8
  %163 = load ptr, ptr %99, align 8
  %164 = load ptr, ptr %94, align 8
  br label %.lr.ph388

165:                                              ; preds = %154
  %166 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %167 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %166, i32 noundef 68, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4732, i32 noundef 1)
  br label %.loopexit

.lr.ph388:                                        ; preds = %._crit_edge389, %.lr.ph391
  %indvars.iv521 = phi i64 [ 0, %.lr.ph391 ], [ %indvars.iv.next522, %._crit_edge389 ]
  %168 = getelementptr inbounds i32, ptr %161, i64 %indvars.iv521
  %169 = load i32, ptr %168, align 4, !tbaa !13
  %170 = getelementptr inbounds double, ptr %164, i64 %indvars.iv521
  %.promoted = load double, ptr %170, align 8, !tbaa !8
  %171 = sext i32 %169 to i64
  %invariant.gep = getelementptr double, ptr %162, i64 %171
  br i1 %132, label %._crit_edge389.unr-lcssa, label %.lr.ph388.new

.lr.ph388.new:                                    ; preds = %.lr.ph388, %.lr.ph388.new
  %indvars.iv516 = phi i64 [ %indvars.iv.next517.1, %.lr.ph388.new ], [ 0, %.lr.ph388 ]
  %172 = phi double [ %184, %.lr.ph388.new ], [ %.promoted, %.lr.ph388 ]
  %niter941 = phi i64 [ %niter941.next.1, %.lr.ph388.new ], [ 0, %.lr.ph388 ]
  %173 = add nsw i64 %indvars.iv516, %114
  %174 = mul nsw i64 %173, %115
  %gep = getelementptr double, ptr %invariant.gep, i64 %174
  %175 = load double, ptr %gep, align 8, !tbaa !8
  %176 = getelementptr inbounds double, ptr %163, i64 %indvars.iv516
  %177 = load double, ptr %176, align 8, !tbaa !8
  %178 = call double @llvm.fmuladd.f64(double %175, double %177, double %172)
  store double %178, ptr %170, align 8, !tbaa !8
  %indvars.iv.next517 = or disjoint i64 %indvars.iv516, 1
  %179 = add nsw i64 %indvars.iv.next517, %114
  %180 = mul nsw i64 %179, %115
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %180
  %181 = load double, ptr %gep.1, align 8, !tbaa !8
  %182 = getelementptr inbounds double, ptr %163, i64 %indvars.iv.next517
  %183 = load double, ptr %182, align 8, !tbaa !8
  %184 = call double @llvm.fmuladd.f64(double %181, double %183, double %178)
  store double %184, ptr %170, align 8, !tbaa !8
  %indvars.iv.next517.1 = add nuw nsw i64 %indvars.iv516, 2
  %niter941.next.1 = add i64 %niter941, 2
  %niter941.ncmp.1 = icmp eq i64 %niter941.next.1, %unroll_iter940
  br i1 %niter941.ncmp.1, label %._crit_edge389.unr-lcssa, label %.lr.ph388.new, !llvm.loop !39

._crit_edge389.unr-lcssa:                         ; preds = %.lr.ph388.new, %.lr.ph388
  %indvars.iv516.unr = phi i64 [ 0, %.lr.ph388 ], [ %indvars.iv.next517.1, %.lr.ph388.new ]
  %.unr = phi double [ %.promoted, %.lr.ph388 ], [ %184, %.lr.ph388.new ]
  br i1 %lcmp.mod939.not, label %._crit_edge389, label %._crit_edge389.epilog-lcssa

._crit_edge389.epilog-lcssa:                      ; preds = %._crit_edge389.unr-lcssa
  %185 = add nsw i64 %indvars.iv516.unr, %114
  %186 = mul nsw i64 %185, %115
  %gep.epil = getelementptr double, ptr %invariant.gep, i64 %186
  %187 = load double, ptr %gep.epil, align 8, !tbaa !8
  %188 = getelementptr inbounds double, ptr %163, i64 %indvars.iv516.unr
  %189 = load double, ptr %188, align 8, !tbaa !8
  %190 = call double @llvm.fmuladd.f64(double %187, double %189, double %.unr)
  store double %190, ptr %170, align 8, !tbaa !8
  br label %._crit_edge389

._crit_edge389:                                   ; preds = %._crit_edge389.unr-lcssa, %._crit_edge389.epilog-lcssa
  %indvars.iv.next522 = add nuw nsw i64 %indvars.iv521, 1
  %exitcond525.not = icmp eq i64 %indvars.iv.next522, %112
  br i1 %exitcond525.not, label %.loopexit361, label %.lr.ph388, !llvm.loop !40

.loopexit361:                                     ; preds = %._crit_edge389, %.lr.ph393, %.preheader364
  br i1 %101, label %.lr.ph396, label %._crit_edge397

.lr.ph396:                                        ; preds = %.loopexit361
  %191 = load ptr, ptr %102, align 8, !tbaa !41
  call void @llvm.memset.p0.i64(ptr align 8 %191, i8 0, i64 %119, i1 false), !tbaa !8
  br label %._crit_edge397

._crit_edge397:                                   ; preds = %.lr.ph396, %.loopexit361
  %192 = load i32, ptr %103, align 4, !tbaa !42
  %switch = icmp ult i32 %192, 2
  br i1 %switch, label %.lr.ph410, label %268

.lr.ph410:                                        ; preds = %._crit_edge397
  %193 = load ptr, ptr %13, align 8, !tbaa !11
  %194 = load ptr, ptr %100, align 8
  %195 = load ptr, ptr %105, align 8
  %196 = load ptr, ptr %102, align 8
  %scevgep813 = getelementptr i8, ptr %196, i64 %126
  %scevgep814 = getelementptr i8, ptr %194, i64 %126
  %scevgep816 = getelementptr i8, ptr %195, i64 %127
  %bound0820 = icmp ult ptr %196, %scevgep816
  %bound1821 = icmp ult ptr %195, %scevgep813
  %found.conflict822 = and i1 %bound0820, %bound1821
  br label %197

197:                                              ; preds = %.lr.ph410, %._crit_edge408
  %indvars.iv547 = phi i64 [ 0, %.lr.ph410 ], [ %indvars.iv.next548, %._crit_edge408 ]
  br i1 %101, label %.lr.ph407, label %._crit_edge408

.lr.ph407:                                        ; preds = %197
  %198 = getelementptr inbounds i32, ptr %193, i64 %indvars.iv547
  %199 = load i32, ptr %198, align 4, !tbaa !13
  %200 = getelementptr inbounds double, ptr %195, i64 %indvars.iv547
  %201 = sext i32 %199 to i64
  %invariant.gep665 = getelementptr double, ptr %194, i64 %201
  br i1 %or.cond927, label %vector.memcheck812, label %scalar.ph825.preheader

vector.memcheck812:                               ; preds = %.lr.ph407
  %202 = shl nsw i64 %201, 3
  %scevgep815 = getelementptr i8, ptr %scevgep814, i64 %202
  %bound0817 = icmp ult ptr %196, %scevgep815
  %bound1818 = icmp ult ptr %invariant.gep665, %scevgep813
  %found.conflict819 = and i1 %bound0817, %bound1818
  %conflict.rdx823 = or i1 %found.conflict819, %found.conflict822
  br i1 %conflict.rdx823, label %scalar.ph825.preheader, label %vector.ph827

vector.ph827:                                     ; preds = %vector.memcheck812
  %203 = load double, ptr %200, align 8, !tbaa !8, !alias.scope !43
  %broadcast.splatinsert839 = insertelement <2 x double> poison, double %203, i64 0
  %broadcast.splat840 = shufflevector <2 x double> %broadcast.splatinsert839, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body831

vector.body831:                                   ; preds = %vector.body831, %vector.ph827
  %index832 = phi i64 [ 0, %vector.ph827 ], [ %index.next841, %vector.body831 ]
  %204 = getelementptr double, ptr %invariant.gep665, i64 %index832
  %205 = getelementptr i8, ptr %204, i64 16
  %wide.load833 = load <2 x double>, ptr %204, align 8, !tbaa !8, !alias.scope !46
  %wide.load834 = load <2 x double>, ptr %205, align 8, !tbaa !8, !alias.scope !46
  %206 = getelementptr inbounds double, ptr %196, i64 %index832
  %207 = getelementptr inbounds i8, ptr %206, i64 16
  %wide.load835 = load <2 x double>, ptr %206, align 8, !tbaa !8, !alias.scope !48, !noalias !50
  %wide.load836 = load <2 x double>, ptr %207, align 8, !tbaa !8, !alias.scope !48, !noalias !50
  %208 = fneg <2 x double> %wide.load833
  %209 = fneg <2 x double> %wide.load834
  %210 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %208, <2 x double> %broadcast.splat840, <2 x double> %wide.load835)
  %211 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %209, <2 x double> %broadcast.splat840, <2 x double> %wide.load836)
  store <2 x double> %210, ptr %206, align 8, !tbaa !8, !alias.scope !48, !noalias !50
  store <2 x double> %211, ptr %207, align 8, !tbaa !8, !alias.scope !48, !noalias !50
  %index.next841 = add nuw i64 %index832, 4
  %212 = icmp eq i64 %index.next841, %n.vec829
  br i1 %212, label %middle.block824, label %vector.body831, !llvm.loop !51

middle.block824:                                  ; preds = %vector.body831
  br i1 %cmp.n842, label %._crit_edge408, label %scalar.ph825.preheader

scalar.ph825.preheader:                           ; preds = %middle.block824, %vector.memcheck812, %.lr.ph407
  %indvars.iv542.ph = phi i64 [ 0, %vector.memcheck812 ], [ 0, %.lr.ph407 ], [ %n.vec829, %middle.block824 ]
  br i1 %lcmp.mod945.not, label %scalar.ph825.prol.loopexit, label %scalar.ph825.prol

scalar.ph825.prol:                                ; preds = %scalar.ph825.preheader
  %213 = mul nsw i64 %indvars.iv542.ph, %115
  %gep666.prol = getelementptr double, ptr %invariant.gep665, i64 %213
  %214 = load double, ptr %gep666.prol, align 8, !tbaa !8
  %215 = load double, ptr %200, align 8, !tbaa !8
  %216 = getelementptr inbounds double, ptr %196, i64 %indvars.iv542.ph
  %217 = load double, ptr %216, align 8, !tbaa !8
  %218 = fneg double %214
  %219 = call double @llvm.fmuladd.f64(double %218, double %215, double %217)
  store double %219, ptr %216, align 8, !tbaa !8
  %indvars.iv.next543.prol = or disjoint i64 %indvars.iv542.ph, 1
  br label %scalar.ph825.prol.loopexit

scalar.ph825.prol.loopexit:                       ; preds = %scalar.ph825.prol, %scalar.ph825.preheader
  %indvars.iv542.unr = phi i64 [ %indvars.iv542.ph, %scalar.ph825.preheader ], [ %indvars.iv.next543.prol, %scalar.ph825.prol ]
  %220 = icmp eq i64 %indvars.iv542.ph, %133
  br i1 %220, label %._crit_edge408, label %scalar.ph825

scalar.ph825:                                     ; preds = %scalar.ph825.prol.loopexit, %scalar.ph825
  %indvars.iv542 = phi i64 [ %indvars.iv.next543.1, %scalar.ph825 ], [ %indvars.iv542.unr, %scalar.ph825.prol.loopexit ]
  %221 = mul nsw i64 %indvars.iv542, %115
  %gep666 = getelementptr double, ptr %invariant.gep665, i64 %221
  %222 = load double, ptr %gep666, align 8, !tbaa !8
  %223 = load double, ptr %200, align 8, !tbaa !8
  %224 = getelementptr inbounds double, ptr %196, i64 %indvars.iv542
  %225 = load double, ptr %224, align 8, !tbaa !8
  %226 = fneg double %222
  %227 = call double @llvm.fmuladd.f64(double %226, double %223, double %225)
  store double %227, ptr %224, align 8, !tbaa !8
  %indvars.iv.next543 = add nuw nsw i64 %indvars.iv542, 1
  %228 = mul nsw i64 %indvars.iv.next543, %115
  %gep666.1 = getelementptr double, ptr %invariant.gep665, i64 %228
  %229 = load double, ptr %gep666.1, align 8, !tbaa !8
  %230 = load double, ptr %200, align 8, !tbaa !8
  %231 = getelementptr inbounds double, ptr %196, i64 %indvars.iv.next543
  %232 = load double, ptr %231, align 8, !tbaa !8
  %233 = fneg double %229
  %234 = call double @llvm.fmuladd.f64(double %233, double %230, double %232)
  store double %234, ptr %231, align 8, !tbaa !8
  %indvars.iv.next543.1 = add nuw nsw i64 %indvars.iv542, 2
  %exitcond546.not.1 = icmp eq i64 %indvars.iv.next543.1, %118
  br i1 %exitcond546.not.1, label %._crit_edge408, label %scalar.ph825, !llvm.loop !54

._crit_edge408:                                   ; preds = %scalar.ph825.prol.loopexit, %scalar.ph825, %middle.block824, %197
  %indvars.iv.next548 = add nuw nsw i64 %indvars.iv547, 1
  %exitcond551.not = icmp eq i64 %indvars.iv.next548, %112
  br i1 %exitcond551.not, label %._crit_edge411, label %197, !llvm.loop !55

._crit_edge411:                                   ; preds = %._crit_edge408
  %235 = icmp eq i32 %192, 0
  br i1 %235, label %236, label %.loopexit357

236:                                              ; preds = %._crit_edge411
  %237 = call noundef i32 @_ZNK7qpOASES9QProblemB19usingRegularisationEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %238 = icmp eq i32 %237, 1
  br i1 %238, label %.preheader356, label %264

.preheader356:                                    ; preds = %236
  br i1 %101, label %.lr.ph413, label %.thread

.lr.ph413:                                        ; preds = %.preheader356
  %239 = load ptr, ptr %102, align 8, !tbaa !41
  br i1 %min.iters.check802, label %scalar.ph801.preheader, label %vector.memcheck795

vector.memcheck795:                               ; preds = %.lr.ph413
  %scevgep796 = getelementptr i8, ptr %239, i64 %125
  %bound0797 = icmp ult ptr %239, %scevgep771
  %bound1798 = icmp ult ptr %106, %scevgep796
  %found.conflict799 = and i1 %bound0797, %bound1798
  br i1 %found.conflict799, label %scalar.ph801.preheader, label %vector.body807

vector.body807:                                   ; preds = %vector.memcheck795, %vector.body807
  %index808 = phi i64 [ %index.next810, %vector.body807 ], [ 0, %vector.memcheck795 ]
  %240 = load <2 x double>, ptr %106, align 8
  %broadcast.splat = shufflevector <2 x double> %240, <2 x double> poison, <2 x i32> zeroinitializer
  %241 = getelementptr inbounds double, ptr %239, i64 %index808
  %wide.load809 = load <2 x double>, ptr %241, align 8, !tbaa !8, !alias.scope !56, !noalias !59
  %242 = fdiv <2 x double> %wide.load809, %broadcast.splat
  store <2 x double> %242, ptr %241, align 8, !tbaa !8, !alias.scope !56, !noalias !59
  %index.next810 = add nuw i64 %index808, 2
  %243 = icmp eq i64 %index.next810, %n.vec805
  br i1 %243, label %middle.block800, label %vector.body807, !llvm.loop !61

middle.block800:                                  ; preds = %vector.body807
  br i1 %cmp.n811, label %.loopexit357, label %scalar.ph801.preheader

scalar.ph801.preheader:                           ; preds = %middle.block800, %vector.memcheck795, %.lr.ph413
  %indvars.iv552.ph = phi i64 [ 0, %vector.memcheck795 ], [ 0, %.lr.ph413 ], [ %n.vec805, %middle.block800 ]
  %244 = sub nsw i64 %118, %indvars.iv552.ph
  %xtraiter946 = and i64 %244, 3
  %lcmp.mod947.not = icmp eq i64 %xtraiter946, 0
  br i1 %lcmp.mod947.not, label %scalar.ph801.prol.loopexit, label %scalar.ph801.prol

scalar.ph801.prol:                                ; preds = %scalar.ph801.preheader, %scalar.ph801.prol
  %indvars.iv552.prol = phi i64 [ %indvars.iv.next553.prol, %scalar.ph801.prol ], [ %indvars.iv552.ph, %scalar.ph801.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph801.prol ], [ 0, %scalar.ph801.preheader ]
  %245 = load double, ptr %106, align 8, !tbaa !62
  %246 = getelementptr inbounds double, ptr %239, i64 %indvars.iv552.prol
  %247 = load double, ptr %246, align 8, !tbaa !8
  %248 = fdiv double %247, %245
  store double %248, ptr %246, align 8, !tbaa !8
  %indvars.iv.next553.prol = add nuw nsw i64 %indvars.iv552.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter946
  br i1 %prol.iter.cmp.not, label %scalar.ph801.prol.loopexit, label %scalar.ph801.prol, !llvm.loop !63

scalar.ph801.prol.loopexit:                       ; preds = %scalar.ph801.prol, %scalar.ph801.preheader
  %indvars.iv552.unr = phi i64 [ %indvars.iv552.ph, %scalar.ph801.preheader ], [ %indvars.iv.next553.prol, %scalar.ph801.prol ]
  %249 = sub nsw i64 %indvars.iv552.ph, %118
  %250 = icmp ugt i64 %249, -4
  br i1 %250, label %.loopexit357, label %scalar.ph801.preheader.new

scalar.ph801.preheader.new:                       ; preds = %scalar.ph801.prol.loopexit
  %invariant.gep1006 = getelementptr i8, ptr %239, i64 8
  %invariant.gep1008 = getelementptr i8, ptr %239, i64 16
  %invariant.gep1010 = getelementptr i8, ptr %239, i64 24
  br label %scalar.ph801

scalar.ph801:                                     ; preds = %scalar.ph801, %scalar.ph801.preheader.new
  %indvars.iv552 = phi i64 [ %indvars.iv552.unr, %scalar.ph801.preheader.new ], [ %indvars.iv.next553.3, %scalar.ph801 ]
  %251 = load double, ptr %106, align 8, !tbaa !62
  %252 = getelementptr inbounds double, ptr %239, i64 %indvars.iv552
  %253 = load double, ptr %252, align 8, !tbaa !8
  %254 = fdiv double %253, %251
  store double %254, ptr %252, align 8, !tbaa !8
  %255 = load double, ptr %106, align 8, !tbaa !62
  %gep1007 = getelementptr double, ptr %invariant.gep1006, i64 %indvars.iv552
  %256 = load double, ptr %gep1007, align 8, !tbaa !8
  %257 = fdiv double %256, %255
  store double %257, ptr %gep1007, align 8, !tbaa !8
  %258 = load double, ptr %106, align 8, !tbaa !62
  %gep1009 = getelementptr double, ptr %invariant.gep1008, i64 %indvars.iv552
  %259 = load double, ptr %gep1009, align 8, !tbaa !8
  %260 = fdiv double %259, %258
  store double %260, ptr %gep1009, align 8, !tbaa !8
  %261 = load double, ptr %106, align 8, !tbaa !62
  %gep1011 = getelementptr double, ptr %invariant.gep1010, i64 %indvars.iv552
  %262 = load double, ptr %gep1011, align 8, !tbaa !8
  %263 = fdiv double %262, %261
  store double %263, ptr %gep1011, align 8, !tbaa !8
  %indvars.iv.next553.3 = add nuw nsw i64 %indvars.iv552, 4
  %exitcond556.not.3 = icmp eq i64 %indvars.iv.next553.3, %118
  br i1 %exitcond556.not.3, label %.loopexit357, label %scalar.ph801, !llvm.loop !65

264:                                              ; preds = %236
  br i1 %101, label %265, label %.thread

265:                                              ; preds = %264
  %266 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %267 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %266, i32 noundef 9, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4769, i32 noundef 1)
  br label %.loopexit

268:                                              ; preds = %._crit_edge397
  %269 = or i32 %.0319469, %7
  %or.cond5 = icmp eq i32 %269, 0
  br i1 %or.cond5, label %270, label %283

270:                                              ; preds = %268
  %271 = load ptr, ptr %104, align 8, !tbaa !66
  %272 = load ptr, ptr %271, align 8, !tbaa !5
  %273 = getelementptr i8, ptr %272, i64 -24
  %274 = load i64, ptr %273, align 8
  %275 = getelementptr inbounds i8, ptr %271, i64 %274
  %276 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %277 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %278 = load ptr, ptr %105, align 8, !tbaa !17
  %279 = load ptr, ptr %275, align 8, !tbaa !5
  %280 = getelementptr inbounds i8, ptr %279, i64 136
  %281 = load ptr, ptr %280, align 8
  %282 = call noundef i32 %281(ptr noundef nonnull align 8 dereferenceable(12) %275, ptr noundef %276, ptr noundef %277, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %8, i32 noundef %18, double noundef 1.000000e+00, ptr noundef %278, i32 noundef %17, i32 noundef 1)
  br label %283

283:                                              ; preds = %270, %268
  br i1 %or.cond331, label %284, label %298

284:                                              ; preds = %283
  %285 = load ptr, ptr %104, align 8, !tbaa !66
  %286 = load ptr, ptr %285, align 8, !tbaa !5
  %287 = getelementptr i8, ptr %286, i64 -24
  %288 = load i64, ptr %287, align 8
  %289 = getelementptr inbounds i8, ptr %285, i64 %288
  %290 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %291 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %292 = load ptr, ptr %94, align 8, !tbaa !36
  %293 = load ptr, ptr %105, align 8, !tbaa !17
  %294 = load ptr, ptr %289, align 8, !tbaa !5
  %295 = getelementptr inbounds i8, ptr %294, i64 136
  %296 = load ptr, ptr %295, align 8
  %297 = call noundef i32 %296(ptr noundef nonnull align 8 dereferenceable(12) %289, ptr noundef %290, ptr noundef %291, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %292, i32 noundef %17, double noundef 1.000000e+00, ptr noundef %293, i32 noundef %17, i32 noundef 1)
  br label %298

298:                                              ; preds = %284, %283
  br i1 %101, label %.lr.ph403, label %.thread

.lr.ph403:                                        ; preds = %298
  %299 = load ptr, ptr %13, align 8, !tbaa !11
  %300 = load ptr, ptr %100, align 8
  %301 = load ptr, ptr %105, align 8
  %302 = load ptr, ptr %102, align 8
  %scevgep846 = getelementptr i8, ptr %302, i64 %128
  %scevgep847 = getelementptr i8, ptr %300, i64 %128
  %scevgep849 = getelementptr i8, ptr %301, i64 %129
  %bound0853 = icmp ult ptr %302, %scevgep849
  %bound1854 = icmp ult ptr %301, %scevgep846
  %found.conflict855 = and i1 %bound0853, %bound1854
  br label %.lr.ph400

.lr.ph400:                                        ; preds = %._crit_edge401, %.lr.ph403
  %indvars.iv537 = phi i64 [ 0, %.lr.ph403 ], [ %indvars.iv.next538, %._crit_edge401 ]
  %303 = getelementptr inbounds i32, ptr %299, i64 %indvars.iv537
  %304 = load i32, ptr %303, align 4, !tbaa !13
  %305 = getelementptr inbounds double, ptr %301, i64 %indvars.iv537
  %306 = sext i32 %304 to i64
  %invariant.gep663 = getelementptr double, ptr %300, i64 %306
  br i1 %or.cond928, label %vector.memcheck845, label %scalar.ph858.preheader

vector.memcheck845:                               ; preds = %.lr.ph400
  %307 = shl nsw i64 %306, 3
  %scevgep848 = getelementptr i8, ptr %scevgep847, i64 %307
  %bound0850 = icmp ult ptr %302, %scevgep848
  %bound1851 = icmp ult ptr %invariant.gep663, %scevgep846
  %found.conflict852 = and i1 %bound0850, %bound1851
  %conflict.rdx856 = or i1 %found.conflict852, %found.conflict855
  br i1 %conflict.rdx856, label %scalar.ph858.preheader, label %vector.ph860

vector.ph860:                                     ; preds = %vector.memcheck845
  %308 = load double, ptr %305, align 8, !tbaa !8, !alias.scope !67
  %broadcast.splatinsert872 = insertelement <2 x double> poison, double %308, i64 0
  %broadcast.splat873 = shufflevector <2 x double> %broadcast.splatinsert872, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body864

vector.body864:                                   ; preds = %vector.body864, %vector.ph860
  %index865 = phi i64 [ 0, %vector.ph860 ], [ %index.next874, %vector.body864 ]
  %309 = getelementptr double, ptr %invariant.gep663, i64 %index865
  %310 = getelementptr i8, ptr %309, i64 16
  %wide.load866 = load <2 x double>, ptr %309, align 8, !tbaa !8, !alias.scope !70
  %wide.load867 = load <2 x double>, ptr %310, align 8, !tbaa !8, !alias.scope !70
  %311 = getelementptr inbounds double, ptr %302, i64 %index865
  %312 = getelementptr inbounds i8, ptr %311, i64 16
  %wide.load868 = load <2 x double>, ptr %311, align 8, !tbaa !8, !alias.scope !72, !noalias !74
  %wide.load869 = load <2 x double>, ptr %312, align 8, !tbaa !8, !alias.scope !72, !noalias !74
  %313 = fneg <2 x double> %wide.load866
  %314 = fneg <2 x double> %wide.load867
  %315 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %313, <2 x double> %broadcast.splat873, <2 x double> %wide.load868)
  %316 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %314, <2 x double> %broadcast.splat873, <2 x double> %wide.load869)
  store <2 x double> %315, ptr %311, align 8, !tbaa !8, !alias.scope !72, !noalias !74
  store <2 x double> %316, ptr %312, align 8, !tbaa !8, !alias.scope !72, !noalias !74
  %index.next874 = add nuw i64 %index865, 4
  %317 = icmp eq i64 %index.next874, %n.vec862
  br i1 %317, label %middle.block857, label %vector.body864, !llvm.loop !75

middle.block857:                                  ; preds = %vector.body864
  br i1 %cmp.n875, label %._crit_edge401, label %scalar.ph858.preheader

scalar.ph858.preheader:                           ; preds = %middle.block857, %vector.memcheck845, %.lr.ph400
  %indvars.iv532.ph = phi i64 [ 0, %vector.memcheck845 ], [ 0, %.lr.ph400 ], [ %n.vec862, %middle.block857 ]
  br i1 %lcmp.mod943.not, label %scalar.ph858.prol.loopexit, label %scalar.ph858.prol

scalar.ph858.prol:                                ; preds = %scalar.ph858.preheader
  %318 = mul nsw i64 %indvars.iv532.ph, %115
  %gep664.prol = getelementptr double, ptr %invariant.gep663, i64 %318
  %319 = load double, ptr %gep664.prol, align 8, !tbaa !8
  %320 = load double, ptr %305, align 8, !tbaa !8
  %321 = getelementptr inbounds double, ptr %302, i64 %indvars.iv532.ph
  %322 = load double, ptr %321, align 8, !tbaa !8
  %323 = fneg double %319
  %324 = call double @llvm.fmuladd.f64(double %323, double %320, double %322)
  store double %324, ptr %321, align 8, !tbaa !8
  %indvars.iv.next533.prol = or disjoint i64 %indvars.iv532.ph, 1
  br label %scalar.ph858.prol.loopexit

scalar.ph858.prol.loopexit:                       ; preds = %scalar.ph858.prol, %scalar.ph858.preheader
  %indvars.iv532.unr = phi i64 [ %indvars.iv532.ph, %scalar.ph858.preheader ], [ %indvars.iv.next533.prol, %scalar.ph858.prol ]
  %325 = icmp eq i64 %130, %indvars.iv532.ph
  br i1 %325, label %._crit_edge401, label %scalar.ph858

scalar.ph858:                                     ; preds = %scalar.ph858.prol.loopexit, %scalar.ph858
  %indvars.iv532 = phi i64 [ %indvars.iv.next533.1, %scalar.ph858 ], [ %indvars.iv532.unr, %scalar.ph858.prol.loopexit ]
  %326 = mul nsw i64 %indvars.iv532, %115
  %gep664 = getelementptr double, ptr %invariant.gep663, i64 %326
  %327 = load double, ptr %gep664, align 8, !tbaa !8
  %328 = load double, ptr %305, align 8, !tbaa !8
  %329 = getelementptr inbounds double, ptr %302, i64 %indvars.iv532
  %330 = load double, ptr %329, align 8, !tbaa !8
  %331 = fneg double %327
  %332 = call double @llvm.fmuladd.f64(double %331, double %328, double %330)
  store double %332, ptr %329, align 8, !tbaa !8
  %indvars.iv.next533 = add nuw nsw i64 %indvars.iv532, 1
  %333 = mul nsw i64 %indvars.iv.next533, %115
  %gep664.1 = getelementptr double, ptr %invariant.gep663, i64 %333
  %334 = load double, ptr %gep664.1, align 8, !tbaa !8
  %335 = load double, ptr %305, align 8, !tbaa !8
  %336 = getelementptr inbounds double, ptr %302, i64 %indvars.iv.next533
  %337 = load double, ptr %336, align 8, !tbaa !8
  %338 = fneg double %334
  %339 = call double @llvm.fmuladd.f64(double %338, double %335, double %337)
  store double %339, ptr %336, align 8, !tbaa !8
  %indvars.iv.next533.1 = add nuw nsw i64 %indvars.iv532, 2
  %exitcond536.not.1 = icmp eq i64 %indvars.iv.next533.1, %118
  br i1 %exitcond536.not.1, label %._crit_edge401, label %scalar.ph858, !llvm.loop !76

._crit_edge401:                                   ; preds = %scalar.ph858.prol.loopexit, %scalar.ph858, %middle.block857
  %indvars.iv.next538 = add nuw nsw i64 %indvars.iv537, 1
  %exitcond541.not = icmp eq i64 %indvars.iv.next538, %112
  br i1 %exitcond541.not, label %._crit_edge404, label %.lr.ph400, !llvm.loop !77

._crit_edge404:                                   ; preds = %._crit_edge401
  %340 = load ptr, ptr %102, align 8, !tbaa !41
  %341 = load ptr, ptr %0, align 8, !tbaa !5
  %342 = getelementptr inbounds i8, ptr %341, i64 112
  %343 = load ptr, ptr %342, align 8
  %344 = call noundef i32 %343(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %340, i32 noundef 1, ptr noundef %340)
  %.not327 = icmp eq i32 %344, 0
  br i1 %.not327, label %348, label %345

345:                                              ; preds = %._crit_edge404
  %346 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %347 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %346, i32 noundef 69, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4794, i32 noundef 1)
  br label %.loopexit

348:                                              ; preds = %._crit_edge404
  %349 = load ptr, ptr %102, align 8, !tbaa !41
  %350 = load ptr, ptr %0, align 8, !tbaa !5
  %351 = getelementptr inbounds i8, ptr %350, i64 112
  %352 = load ptr, ptr %351, align 8
  %353 = call noundef i32 %352(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %349, i32 noundef 0, ptr noundef %349)
  %.not328 = icmp eq i32 %353, 0
  br i1 %.not328, label %.loopexit357, label %354

354:                                              ; preds = %348
  %355 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %356 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %355, i32 noundef 69, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4797, i32 noundef 1)
  br label %.loopexit

.loopexit357:                                     ; preds = %scalar.ph801.prol.loopexit, %scalar.ph801, %middle.block800, %348, %._crit_edge411
  br i1 %brmerge, label %.thread, label %.lr.ph420

.lr.ph420:                                        ; preds = %.loopexit357
  %357 = load ptr, ptr %109, align 8, !tbaa !78
  %358 = load ptr, ptr %13, align 8, !tbaa !11
  %359 = load ptr, ptr %100, align 8
  %360 = load ptr, ptr %102, align 8
  %361 = load ptr, ptr %94, align 8, !tbaa !36
  br label %362

362:                                              ; preds = %.lr.ph420, %._crit_edge417
  %indvars.iv562 = phi i64 [ 0, %.lr.ph420 ], [ %indvars.iv.next563, %._crit_edge417 ]
  %363 = getelementptr inbounds double, ptr %357, i64 %indvars.iv562
  store double 0.000000e+00, ptr %363, align 8, !tbaa !8
  br i1 %101, label %.lr.ph416, label %._crit_edge417

.lr.ph416:                                        ; preds = %362
  %364 = getelementptr inbounds i32, ptr %358, i64 %indvars.iv562
  %365 = load i32, ptr %364, align 4, !tbaa !13
  %366 = sext i32 %365 to i64
  %invariant.gep667 = getelementptr double, ptr %359, i64 %366
  br i1 %134, label %._crit_edge417.loopexit.unr-lcssa, label %.lr.ph416.new

.lr.ph416.new:                                    ; preds = %.lr.ph416, %.lr.ph416.new
  %indvars.iv557 = phi i64 [ %indvars.iv.next558.1, %.lr.ph416.new ], [ 0, %.lr.ph416 ]
  %367 = phi double [ %377, %.lr.ph416.new ], [ 0.000000e+00, %.lr.ph416 ]
  %niter954 = phi i64 [ %niter954.next.1, %.lr.ph416.new ], [ 0, %.lr.ph416 ]
  %368 = mul nsw i64 %indvars.iv557, %115
  %gep668 = getelementptr double, ptr %invariant.gep667, i64 %368
  %369 = load double, ptr %gep668, align 8, !tbaa !8
  %370 = getelementptr inbounds double, ptr %360, i64 %indvars.iv557
  %371 = load double, ptr %370, align 8, !tbaa !8
  %372 = call double @llvm.fmuladd.f64(double %369, double %371, double %367)
  store double %372, ptr %363, align 8, !tbaa !8
  %indvars.iv.next558 = or disjoint i64 %indvars.iv557, 1
  %373 = mul nsw i64 %indvars.iv.next558, %115
  %gep668.1 = getelementptr double, ptr %invariant.gep667, i64 %373
  %374 = load double, ptr %gep668.1, align 8, !tbaa !8
  %375 = getelementptr inbounds double, ptr %360, i64 %indvars.iv.next558
  %376 = load double, ptr %375, align 8, !tbaa !8
  %377 = call double @llvm.fmuladd.f64(double %374, double %376, double %372)
  store double %377, ptr %363, align 8, !tbaa !8
  %indvars.iv.next558.1 = add nuw nsw i64 %indvars.iv557, 2
  %niter954.next.1 = add i64 %niter954, 2
  %niter954.ncmp.1 = icmp eq i64 %niter954.next.1, %unroll_iter953
  br i1 %niter954.ncmp.1, label %._crit_edge417.loopexit.unr-lcssa, label %.lr.ph416.new, !llvm.loop !79

._crit_edge417.loopexit.unr-lcssa:                ; preds = %.lr.ph416.new, %.lr.ph416
  %.lcssa.ph = phi double [ poison, %.lr.ph416 ], [ %377, %.lr.ph416.new ]
  %indvars.iv557.unr = phi i64 [ 0, %.lr.ph416 ], [ %indvars.iv.next558.1, %.lr.ph416.new ]
  %.unr950 = phi double [ 0.000000e+00, %.lr.ph416 ], [ %377, %.lr.ph416.new ]
  br i1 %lcmp.mod951.not, label %._crit_edge417, label %._crit_edge417.loopexit.epilog-lcssa

._crit_edge417.loopexit.epilog-lcssa:             ; preds = %._crit_edge417.loopexit.unr-lcssa
  %378 = mul nsw i64 %indvars.iv557.unr, %115
  %gep668.epil = getelementptr double, ptr %invariant.gep667, i64 %378
  %379 = load double, ptr %gep668.epil, align 8, !tbaa !8
  %380 = getelementptr inbounds double, ptr %360, i64 %indvars.iv557.unr
  %381 = load double, ptr %380, align 8, !tbaa !8
  %382 = call double @llvm.fmuladd.f64(double %379, double %381, double %.unr950)
  store double %382, ptr %363, align 8, !tbaa !8
  br label %._crit_edge417

._crit_edge417:                                   ; preds = %._crit_edge417.loopexit.epilog-lcssa, %._crit_edge417.loopexit.unr-lcssa, %362
  %383 = phi double [ 0.000000e+00, %362 ], [ %.lcssa.ph, %._crit_edge417.loopexit.unr-lcssa ], [ %382, %._crit_edge417.loopexit.epilog-lcssa ]
  %384 = getelementptr inbounds double, ptr %361, i64 %indvars.iv562
  %385 = load double, ptr %384, align 8, !tbaa !8
  %386 = fadd double %383, %385
  store double %386, ptr %384, align 8, !tbaa !8
  %indvars.iv.next563 = add nuw nsw i64 %indvars.iv562, 1
  %exitcond566.not = icmp eq i64 %indvars.iv.next563, %112
  br i1 %exitcond566.not, label %.thread, label %362, !llvm.loop !80

.thread:                                          ; preds = %._crit_edge417, %.preheader356, %.loopexit357, %264, %298, %139
  br i1 %56, label %387, label %550

387:                                              ; preds = %.thread
  %388 = load i32, ptr %103, align 4, !tbaa !42
  %switch332 = icmp ult i32 %388, 2
  br i1 %switch332, label %389, label %492

389:                                              ; preds = %387
  %390 = icmp eq i32 %388, 1
  br i1 %390, label %.lr.ph434, label %418

.lr.ph434:                                        ; preds = %389
  %391 = load ptr, ptr %99, align 8, !tbaa !37
  %392 = load ptr, ptr %98, align 8, !tbaa !33
  %393 = ptrtoint ptr %392 to i64
  %394 = ptrtoint ptr %391 to i64
  %395 = sub i64 %393, %394
  %diff.check = icmp ult i64 %395, 32
  %or.cond931 = select i1 %min.iters.check758, i1 true, i1 %diff.check
  br i1 %or.cond931, label %scalar.ph757.preheader, label %vector.body763

vector.body763:                                   ; preds = %.lr.ph434, %vector.body763
  %index764 = phi i64 [ %index.next767, %vector.body763 ], [ 0, %.lr.ph434 ]
  %396 = getelementptr inbounds double, ptr %391, i64 %index764
  %397 = getelementptr inbounds i8, ptr %396, i64 16
  %wide.load765 = load <2 x double>, ptr %396, align 8, !tbaa !8
  %wide.load766 = load <2 x double>, ptr %397, align 8, !tbaa !8
  %398 = getelementptr inbounds double, ptr %392, i64 %index764
  %399 = getelementptr inbounds i8, ptr %398, i64 16
  store <2 x double> %wide.load765, ptr %398, align 8, !tbaa !8
  store <2 x double> %wide.load766, ptr %399, align 8, !tbaa !8
  %index.next767 = add nuw i64 %index764, 4
  %400 = icmp eq i64 %index.next767, %n.vec761
  br i1 %400, label %middle.block756, label %vector.body763, !llvm.loop !81

middle.block756:                                  ; preds = %vector.body763
  br i1 %cmp.n768, label %.preheader336.lr.ph, label %scalar.ph757.preheader

scalar.ph757.preheader:                           ; preds = %middle.block756, %.lr.ph434
  %indvars.iv585.ph = phi i64 [ 0, %.lr.ph434 ], [ %n.vec761, %middle.block756 ]
  br i1 %lcmp.mod965.not, label %scalar.ph757.prol.loopexit, label %scalar.ph757.prol

scalar.ph757.prol:                                ; preds = %scalar.ph757.preheader, %scalar.ph757.prol
  %indvars.iv585.prol = phi i64 [ %indvars.iv.next586.prol, %scalar.ph757.prol ], [ %indvars.iv585.ph, %scalar.ph757.preheader ]
  %prol.iter966 = phi i64 [ %prol.iter966.next, %scalar.ph757.prol ], [ 0, %scalar.ph757.preheader ]
  %401 = getelementptr inbounds double, ptr %391, i64 %indvars.iv585.prol
  %402 = load double, ptr %401, align 8, !tbaa !8
  %403 = getelementptr inbounds double, ptr %392, i64 %indvars.iv585.prol
  store double %402, ptr %403, align 8, !tbaa !8
  %indvars.iv.next586.prol = add nuw nsw i64 %indvars.iv585.prol, 1
  %prol.iter966.next = add i64 %prol.iter966, 1
  %prol.iter966.cmp.not = icmp eq i64 %prol.iter966.next, %xtraiter964
  br i1 %prol.iter966.cmp.not, label %scalar.ph757.prol.loopexit, label %scalar.ph757.prol, !llvm.loop !82

scalar.ph757.prol.loopexit:                       ; preds = %scalar.ph757.prol, %scalar.ph757.preheader
  %indvars.iv585.unr = phi i64 [ %indvars.iv585.ph, %scalar.ph757.preheader ], [ %indvars.iv.next586.prol, %scalar.ph757.prol ]
  %404 = sub nsw i64 %indvars.iv585.ph, %116
  %405 = icmp ugt i64 %404, -4
  br i1 %405, label %.preheader336.lr.ph, label %scalar.ph757

scalar.ph757:                                     ; preds = %scalar.ph757.prol.loopexit, %scalar.ph757
  %indvars.iv585 = phi i64 [ %indvars.iv.next586.3, %scalar.ph757 ], [ %indvars.iv585.unr, %scalar.ph757.prol.loopexit ]
  %406 = getelementptr inbounds double, ptr %391, i64 %indvars.iv585
  %407 = load double, ptr %406, align 8, !tbaa !8
  %408 = getelementptr inbounds double, ptr %392, i64 %indvars.iv585
  store double %407, ptr %408, align 8, !tbaa !8
  %indvars.iv.next586 = add nuw nsw i64 %indvars.iv585, 1
  %409 = getelementptr inbounds double, ptr %391, i64 %indvars.iv.next586
  %410 = load double, ptr %409, align 8, !tbaa !8
  %411 = getelementptr inbounds double, ptr %392, i64 %indvars.iv.next586
  store double %410, ptr %411, align 8, !tbaa !8
  %indvars.iv.next586.1 = add nuw nsw i64 %indvars.iv585, 2
  %412 = getelementptr inbounds double, ptr %391, i64 %indvars.iv.next586.1
  %413 = load double, ptr %412, align 8, !tbaa !8
  %414 = getelementptr inbounds double, ptr %392, i64 %indvars.iv.next586.1
  store double %413, ptr %414, align 8, !tbaa !8
  %indvars.iv.next586.2 = add nuw nsw i64 %indvars.iv585, 3
  %415 = getelementptr inbounds double, ptr %391, i64 %indvars.iv.next586.2
  %416 = load double, ptr %415, align 8, !tbaa !8
  %417 = getelementptr inbounds double, ptr %392, i64 %indvars.iv.next586.2
  store double %416, ptr %417, align 8, !tbaa !8
  %indvars.iv.next586.3 = add nuw nsw i64 %indvars.iv585, 4
  %exitcond589.not.3 = icmp eq i64 %indvars.iv.next586.3, %116
  br i1 %exitcond589.not.3, label %.preheader336.lr.ph, label %scalar.ph757, !llvm.loop !83

418:                                              ; preds = %389
  %419 = call noundef i32 @_ZNK7qpOASES9QProblemB19usingRegularisationEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %420 = icmp eq i32 %419, 1
  br i1 %420, label %.lr.ph432, label %.lr.ph430

.lr.ph430:                                        ; preds = %418
  %421 = load ptr, ptr %98, align 8, !tbaa !33
  call void @llvm.memset.p0.i64(ptr align 8 %421, i8 0, i64 %117, i1 false), !tbaa !8
  br label %.preheader336.lr.ph

.lr.ph432:                                        ; preds = %418
  %422 = load ptr, ptr %99, align 8, !tbaa !37
  %423 = load ptr, ptr %98, align 8, !tbaa !33
  br i1 %min.iters.check782, label %scalar.ph781.preheader, label %vector.memcheck769

vector.memcheck769:                               ; preds = %.lr.ph432
  %scevgep770 = getelementptr i8, ptr %423, i64 %124
  %scevgep772 = getelementptr i8, ptr %422, i64 %124
  %bound0773 = icmp ult ptr %423, %scevgep771
  %bound1774 = icmp ult ptr %106, %scevgep770
  %found.conflict775 = and i1 %bound0773, %bound1774
  %bound0776 = icmp ult ptr %423, %scevgep772
  %bound1777 = icmp ult ptr %422, %scevgep770
  %found.conflict778 = and i1 %bound0776, %bound1777
  %conflict.rdx779 = or i1 %found.conflict775, %found.conflict778
  br i1 %conflict.rdx779, label %scalar.ph781.preheader, label %vector.body787

vector.body787:                                   ; preds = %vector.memcheck769, %vector.body787
  %index788 = phi i64 [ %index.next793, %vector.body787 ], [ 0, %vector.memcheck769 ]
  %424 = load <2 x double>, ptr %106, align 8
  %broadcast.splat792 = shufflevector <2 x double> %424, <2 x double> poison, <2 x i32> zeroinitializer
  %425 = getelementptr inbounds double, ptr %422, i64 %index788
  %426 = getelementptr inbounds i8, ptr %425, i64 16
  %wide.load789 = load <2 x double>, ptr %425, align 8, !tbaa !8, !alias.scope !84
  %wide.load790 = load <2 x double>, ptr %426, align 8, !tbaa !8, !alias.scope !84
  %427 = fmul <2 x double> %broadcast.splat792, %wide.load789
  %428 = fmul <2 x double> %broadcast.splat792, %wide.load790
  %429 = getelementptr inbounds double, ptr %423, i64 %index788
  %430 = getelementptr inbounds i8, ptr %429, i64 16
  store <2 x double> %427, ptr %429, align 8, !tbaa !8, !alias.scope !87, !noalias !89
  store <2 x double> %428, ptr %430, align 8, !tbaa !8, !alias.scope !87, !noalias !89
  %index.next793 = add nuw i64 %index788, 4
  %431 = icmp eq i64 %index.next793, %n.vec785
  br i1 %431, label %middle.block780, label %vector.body787, !llvm.loop !91

middle.block780:                                  ; preds = %vector.body787
  br i1 %cmp.n794, label %.preheader336.lr.ph, label %scalar.ph781.preheader

scalar.ph781.preheader:                           ; preds = %middle.block780, %vector.memcheck769, %.lr.ph432
  %indvars.iv580.ph = phi i64 [ 0, %vector.memcheck769 ], [ 0, %.lr.ph432 ], [ %n.vec785, %middle.block780 ]
  br i1 %lcmp.mod962.not, label %scalar.ph781.prol.loopexit, label %scalar.ph781.prol

scalar.ph781.prol:                                ; preds = %scalar.ph781.preheader, %scalar.ph781.prol
  %indvars.iv580.prol = phi i64 [ %indvars.iv.next581.prol, %scalar.ph781.prol ], [ %indvars.iv580.ph, %scalar.ph781.preheader ]
  %prol.iter963 = phi i64 [ %prol.iter963.next, %scalar.ph781.prol ], [ 0, %scalar.ph781.preheader ]
  %432 = load double, ptr %106, align 8, !tbaa !62
  %433 = getelementptr inbounds double, ptr %422, i64 %indvars.iv580.prol
  %434 = load double, ptr %433, align 8, !tbaa !8
  %435 = fmul double %432, %434
  %436 = getelementptr inbounds double, ptr %423, i64 %indvars.iv580.prol
  store double %435, ptr %436, align 8, !tbaa !8
  %indvars.iv.next581.prol = add nuw nsw i64 %indvars.iv580.prol, 1
  %prol.iter963.next = add i64 %prol.iter963, 1
  %prol.iter963.cmp.not = icmp eq i64 %prol.iter963.next, %xtraiter961
  br i1 %prol.iter963.cmp.not, label %scalar.ph781.prol.loopexit, label %scalar.ph781.prol, !llvm.loop !92

scalar.ph781.prol.loopexit:                       ; preds = %scalar.ph781.prol, %scalar.ph781.preheader
  %indvars.iv580.unr = phi i64 [ %indvars.iv580.ph, %scalar.ph781.preheader ], [ %indvars.iv.next581.prol, %scalar.ph781.prol ]
  %437 = sub nsw i64 %indvars.iv580.ph, %116
  %438 = icmp ugt i64 %437, -4
  br i1 %438, label %.preheader336.lr.ph, label %scalar.ph781

scalar.ph781:                                     ; preds = %scalar.ph781.prol.loopexit, %scalar.ph781
  %indvars.iv580 = phi i64 [ %indvars.iv.next581.3, %scalar.ph781 ], [ %indvars.iv580.unr, %scalar.ph781.prol.loopexit ]
  %439 = load double, ptr %106, align 8, !tbaa !62
  %440 = getelementptr inbounds double, ptr %422, i64 %indvars.iv580
  %441 = load double, ptr %440, align 8, !tbaa !8
  %442 = fmul double %439, %441
  %443 = getelementptr inbounds double, ptr %423, i64 %indvars.iv580
  store double %442, ptr %443, align 8, !tbaa !8
  %indvars.iv.next581 = add nuw nsw i64 %indvars.iv580, 1
  %444 = load double, ptr %106, align 8, !tbaa !62
  %445 = getelementptr inbounds double, ptr %422, i64 %indvars.iv.next581
  %446 = load double, ptr %445, align 8, !tbaa !8
  %447 = fmul double %444, %446
  %448 = getelementptr inbounds double, ptr %423, i64 %indvars.iv.next581
  store double %447, ptr %448, align 8, !tbaa !8
  %indvars.iv.next581.1 = add nuw nsw i64 %indvars.iv580, 2
  %449 = load double, ptr %106, align 8, !tbaa !62
  %450 = getelementptr inbounds double, ptr %422, i64 %indvars.iv.next581.1
  %451 = load double, ptr %450, align 8, !tbaa !8
  %452 = fmul double %449, %451
  %453 = getelementptr inbounds double, ptr %423, i64 %indvars.iv.next581.1
  store double %452, ptr %453, align 8, !tbaa !8
  %indvars.iv.next581.2 = add nuw nsw i64 %indvars.iv580, 3
  %454 = load double, ptr %106, align 8, !tbaa !62
  %455 = getelementptr inbounds double, ptr %422, i64 %indvars.iv.next581.2
  %456 = load double, ptr %455, align 8, !tbaa !8
  %457 = fmul double %454, %456
  %458 = getelementptr inbounds double, ptr %423, i64 %indvars.iv.next581.2
  store double %457, ptr %458, align 8, !tbaa !8
  %indvars.iv.next581.3 = add nuw nsw i64 %indvars.iv580, 4
  %exitcond584.not.3 = icmp eq i64 %indvars.iv.next581.3, %116
  br i1 %exitcond584.not.3, label %.preheader336.lr.ph, label %scalar.ph781, !llvm.loop !93

.preheader336.lr.ph:                              ; preds = %scalar.ph781.prol.loopexit, %scalar.ph781, %scalar.ph757.prol.loopexit, %scalar.ph757, %middle.block780, %middle.block756, %.lr.ph430
  %459 = load ptr, ptr %13, align 8
  %460 = load ptr, ptr %100, align 8
  %461 = load ptr, ptr %105, align 8
  %462 = load ptr, ptr %98, align 8
  br label %.preheader336

.preheader336:                                    ; preds = %.preheader336.lr.ph, %._crit_edge437
  %indvars.iv595 = phi i64 [ 0, %.preheader336.lr.ph ], [ %indvars.iv.next596, %._crit_edge437 ]
  br i1 %44, label %.lr.ph436, label %._crit_edge437

.lr.ph436:                                        ; preds = %.preheader336
  %463 = add nsw i64 %indvars.iv595, %114
  %464 = mul nsw i64 %463, %115
  %465 = getelementptr inbounds double, ptr %462, i64 %indvars.iv595
  %.promoted438 = load double, ptr %465, align 8, !tbaa !8
  %466 = getelementptr double, ptr %460, i64 %464
  br i1 %136, label %._crit_edge437.loopexit.unr-lcssa, label %.lr.ph436.new

.lr.ph436.new:                                    ; preds = %.lr.ph436, %.lr.ph436.new
  %indvars.iv590 = phi i64 [ %indvars.iv.next591.1, %.lr.ph436.new ], [ 0, %.lr.ph436 ]
  %467 = phi double [ %483, %.lr.ph436.new ], [ %.promoted438, %.lr.ph436 ]
  %niter972 = phi i64 [ %niter972.next.1, %.lr.ph436.new ], [ 0, %.lr.ph436 ]
  %468 = getelementptr inbounds i32, ptr %459, i64 %indvars.iv590
  %469 = load i32, ptr %468, align 4, !tbaa !13
  %470 = sext i32 %469 to i64
  %471 = getelementptr double, ptr %466, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !8
  %473 = getelementptr inbounds double, ptr %461, i64 %indvars.iv590
  %474 = load double, ptr %473, align 8, !tbaa !8
  %475 = call double @llvm.fmuladd.f64(double %472, double %474, double %467)
  store double %475, ptr %465, align 8, !tbaa !8
  %indvars.iv.next591 = or disjoint i64 %indvars.iv590, 1
  %476 = getelementptr inbounds i32, ptr %459, i64 %indvars.iv.next591
  %477 = load i32, ptr %476, align 4, !tbaa !13
  %478 = sext i32 %477 to i64
  %479 = getelementptr double, ptr %466, i64 %478
  %480 = load double, ptr %479, align 8, !tbaa !8
  %481 = getelementptr inbounds double, ptr %461, i64 %indvars.iv.next591
  %482 = load double, ptr %481, align 8, !tbaa !8
  %483 = call double @llvm.fmuladd.f64(double %480, double %482, double %475)
  store double %483, ptr %465, align 8, !tbaa !8
  %indvars.iv.next591.1 = add nuw nsw i64 %indvars.iv590, 2
  %niter972.next.1 = add i64 %niter972, 2
  %niter972.ncmp.1 = icmp eq i64 %niter972.next.1, %unroll_iter971
  br i1 %niter972.ncmp.1, label %._crit_edge437.loopexit.unr-lcssa, label %.lr.ph436.new, !llvm.loop !94

._crit_edge437.loopexit.unr-lcssa:                ; preds = %.lr.ph436.new, %.lr.ph436
  %indvars.iv590.unr = phi i64 [ 0, %.lr.ph436 ], [ %indvars.iv.next591.1, %.lr.ph436.new ]
  %.unr969 = phi double [ %.promoted438, %.lr.ph436 ], [ %483, %.lr.ph436.new ]
  br i1 %lcmp.mod970.not, label %._crit_edge437, label %._crit_edge437.loopexit.epilog-lcssa

._crit_edge437.loopexit.epilog-lcssa:             ; preds = %._crit_edge437.loopexit.unr-lcssa
  %484 = getelementptr inbounds i32, ptr %459, i64 %indvars.iv590.unr
  %485 = load i32, ptr %484, align 4, !tbaa !13
  %486 = sext i32 %485 to i64
  %487 = getelementptr double, ptr %466, i64 %486
  %488 = load double, ptr %487, align 8, !tbaa !8
  %489 = getelementptr inbounds double, ptr %461, i64 %indvars.iv590.unr
  %490 = load double, ptr %489, align 8, !tbaa !8
  %491 = call double @llvm.fmuladd.f64(double %488, double %490, double %.unr969)
  store double %491, ptr %465, align 8, !tbaa !8
  br label %._crit_edge437

._crit_edge437:                                   ; preds = %._crit_edge437.loopexit.epilog-lcssa, %._crit_edge437.loopexit.unr-lcssa, %.preheader336
  %indvars.iv.next596 = add nuw nsw i64 %indvars.iv595, 1
  %exitcond599.not = icmp eq i64 %indvars.iv.next596, %116
  br i1 %exitcond599.not, label %.loopexit347, label %.preheader336, !llvm.loop !95

492:                                              ; preds = %387
  br i1 %101, label %493, label %.lr.ph428

493:                                              ; preds = %492
  %494 = load ptr, ptr %104, align 8, !tbaa !66
  %495 = load ptr, ptr %494, align 8, !tbaa !5
  %496 = getelementptr i8, ptr %495, i64 -24
  %497 = load i64, ptr %496, align 8
  %498 = getelementptr inbounds i8, ptr %494, i64 %497
  %499 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %500 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %501 = load ptr, ptr %109, align 8, !tbaa !78
  %502 = load ptr, ptr %105, align 8, !tbaa !17
  %503 = load ptr, ptr %498, align 8, !tbaa !5
  %504 = getelementptr inbounds i8, ptr %503, i64 136
  %505 = load ptr, ptr %504, align 8
  %506 = call noundef i32 %505(ptr noundef nonnull align 8 dereferenceable(12) %498, ptr noundef %499, ptr noundef %500, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %501, i32 noundef %17, double noundef 1.000000e+00, ptr noundef %502, i32 noundef %17, i32 noundef 1)
  br label %.lr.ph428

.lr.ph428:                                        ; preds = %492, %493
  %507 = load ptr, ptr %98, align 8, !tbaa !33
  %508 = load ptr, ptr %13, align 8
  %509 = load ptr, ptr %100, align 8
  %510 = load ptr, ptr %105, align 8
  br label %511

511:                                              ; preds = %.lr.ph428, %._crit_edge424
  %indvars.iv572 = phi i64 [ 0, %.lr.ph428 ], [ %indvars.iv.next573, %._crit_edge424 ]
  %512 = getelementptr inbounds double, ptr %507, i64 %indvars.iv572
  store double 0.000000e+00, ptr %512, align 8, !tbaa !8
  br i1 %44, label %.lr.ph423, label %._crit_edge424

.lr.ph423:                                        ; preds = %511
  %513 = add nsw i64 %indvars.iv572, %114
  %514 = mul nsw i64 %513, %115
  %515 = getelementptr double, ptr %509, i64 %514
  br i1 %135, label %._crit_edge424.loopexit.unr-lcssa, label %.lr.ph423.new

.lr.ph423.new:                                    ; preds = %.lr.ph423, %.lr.ph423.new
  %indvars.iv567 = phi i64 [ %indvars.iv.next568.1, %.lr.ph423.new ], [ 0, %.lr.ph423 ]
  %516 = phi double [ %532, %.lr.ph423.new ], [ 0.000000e+00, %.lr.ph423 ]
  %niter960 = phi i64 [ %niter960.next.1, %.lr.ph423.new ], [ 0, %.lr.ph423 ]
  %517 = getelementptr inbounds i32, ptr %508, i64 %indvars.iv567
  %518 = load i32, ptr %517, align 4, !tbaa !13
  %519 = sext i32 %518 to i64
  %520 = getelementptr double, ptr %515, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !8
  %522 = getelementptr inbounds double, ptr %510, i64 %indvars.iv567
  %523 = load double, ptr %522, align 8, !tbaa !8
  %524 = call double @llvm.fmuladd.f64(double %521, double %523, double %516)
  store double %524, ptr %512, align 8, !tbaa !8
  %indvars.iv.next568 = or disjoint i64 %indvars.iv567, 1
  %525 = getelementptr inbounds i32, ptr %508, i64 %indvars.iv.next568
  %526 = load i32, ptr %525, align 4, !tbaa !13
  %527 = sext i32 %526 to i64
  %528 = getelementptr double, ptr %515, i64 %527
  %529 = load double, ptr %528, align 8, !tbaa !8
  %530 = getelementptr inbounds double, ptr %510, i64 %indvars.iv.next568
  %531 = load double, ptr %530, align 8, !tbaa !8
  %532 = call double @llvm.fmuladd.f64(double %529, double %531, double %524)
  store double %532, ptr %512, align 8, !tbaa !8
  %indvars.iv.next568.1 = add nuw nsw i64 %indvars.iv567, 2
  %niter960.next.1 = add i64 %niter960, 2
  %niter960.ncmp.1 = icmp eq i64 %niter960.next.1, %unroll_iter959
  br i1 %niter960.ncmp.1, label %._crit_edge424.loopexit.unr-lcssa, label %.lr.ph423.new, !llvm.loop !96

._crit_edge424.loopexit.unr-lcssa:                ; preds = %.lr.ph423.new, %.lr.ph423
  %indvars.iv567.unr = phi i64 [ 0, %.lr.ph423 ], [ %indvars.iv.next568.1, %.lr.ph423.new ]
  %.unr957 = phi double [ 0.000000e+00, %.lr.ph423 ], [ %532, %.lr.ph423.new ]
  br i1 %lcmp.mod958.not, label %._crit_edge424, label %._crit_edge424.loopexit.epilog-lcssa

._crit_edge424.loopexit.epilog-lcssa:             ; preds = %._crit_edge424.loopexit.unr-lcssa
  %533 = getelementptr inbounds i32, ptr %508, i64 %indvars.iv567.unr
  %534 = load i32, ptr %533, align 4, !tbaa !13
  %535 = sext i32 %534 to i64
  %536 = getelementptr double, ptr %515, i64 %535
  %537 = load double, ptr %536, align 8, !tbaa !8
  %538 = getelementptr inbounds double, ptr %510, i64 %indvars.iv567.unr
  %539 = load double, ptr %538, align 8, !tbaa !8
  %540 = call double @llvm.fmuladd.f64(double %537, double %539, double %.unr957)
  store double %540, ptr %512, align 8, !tbaa !8
  br label %._crit_edge424

._crit_edge424:                                   ; preds = %._crit_edge424.loopexit.epilog-lcssa, %._crit_edge424.loopexit.unr-lcssa, %511
  %indvars.iv.next573 = add nuw nsw i64 %indvars.iv572, 1
  %exitcond576.not = icmp eq i64 %indvars.iv.next573, %116
  br i1 %exitcond576.not, label %.loopexit347, label %511, !llvm.loop !97

.loopexit347:                                     ; preds = %._crit_edge424, %._crit_edge437
  %541 = load ptr, ptr %98, align 8, !tbaa !33
  %542 = load ptr, ptr %110, align 8, !tbaa !98
  %543 = load ptr, ptr %0, align 8, !tbaa !5
  %544 = getelementptr inbounds i8, ptr %543, i64 264
  %545 = load ptr, ptr %544, align 8
  %546 = call noundef i32 %545(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef %541, i32 noundef 1, ptr noundef %542)
  %.not329 = icmp eq i32 %546, 0
  br i1 %.not329, label %550, label %547

547:                                              ; preds = %.loopexit347
  %548 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %549 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %548, i32 noundef 68, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4875, i32 noundef 1)
  br label %.loopexit

550:                                              ; preds = %.loopexit347, %.thread
  br i1 %44, label %.lr.ph442, label %.preheader346

.lr.ph442:                                        ; preds = %550
  %551 = load ptr, ptr %94, align 8, !tbaa !36
  br i1 %min.iters.check742, label %scalar.ph741.preheader, label %vector.memcheck734

scalar.ph741.preheader:                           ; preds = %middle.block740, %vector.memcheck734, %.lr.ph442
  %indvars.iv600.ph = phi i64 [ 0, %vector.memcheck734 ], [ 0, %.lr.ph442 ], [ %n.vec745, %middle.block740 ]
  br i1 %lcmp.mod974.not, label %scalar.ph741.prol.loopexit, label %scalar.ph741.prol

scalar.ph741.prol:                                ; preds = %scalar.ph741.preheader, %scalar.ph741.prol
  %indvars.iv600.prol = phi i64 [ %indvars.iv.next601.prol, %scalar.ph741.prol ], [ %indvars.iv600.ph, %scalar.ph741.preheader ]
  %prol.iter975 = phi i64 [ %prol.iter975.next, %scalar.ph741.prol ], [ 0, %scalar.ph741.preheader ]
  %552 = getelementptr inbounds double, ptr %551, i64 %indvars.iv600.prol
  %553 = load double, ptr %552, align 8, !tbaa !8
  %554 = getelementptr inbounds double, ptr %9, i64 %indvars.iv600.prol
  %555 = load double, ptr %554, align 8, !tbaa !8
  %556 = fadd double %553, %555
  store double %556, ptr %554, align 8, !tbaa !8
  %indvars.iv.next601.prol = add nuw nsw i64 %indvars.iv600.prol, 1
  %prol.iter975.next = add i64 %prol.iter975, 1
  %prol.iter975.cmp.not = icmp eq i64 %prol.iter975.next, %xtraiter973
  br i1 %prol.iter975.cmp.not, label %scalar.ph741.prol.loopexit, label %scalar.ph741.prol, !llvm.loop !99

scalar.ph741.prol.loopexit:                       ; preds = %scalar.ph741.prol, %scalar.ph741.preheader
  %indvars.iv600.unr = phi i64 [ %indvars.iv600.ph, %scalar.ph741.preheader ], [ %indvars.iv.next601.prol, %scalar.ph741.prol ]
  %557 = sub nsw i64 %indvars.iv600.ph, %112
  %558 = icmp ugt i64 %557, -4
  br i1 %558, label %.preheader346, label %scalar.ph741

vector.memcheck734:                               ; preds = %.lr.ph442
  %scevgep736 = getelementptr i8, ptr %551, i64 %123
  %bound0737 = icmp ugt ptr %scevgep736, %9
  %bound1738 = icmp ult ptr %551, %scevgep735
  %found.conflict739 = and i1 %bound0737, %bound1738
  br i1 %found.conflict739, label %scalar.ph741.preheader, label %vector.body747

vector.body747:                                   ; preds = %vector.memcheck734, %vector.body747
  %index748 = phi i64 [ %index.next753, %vector.body747 ], [ 0, %vector.memcheck734 ]
  %559 = getelementptr inbounds double, ptr %551, i64 %index748
  %560 = getelementptr inbounds i8, ptr %559, i64 16
  %wide.load749 = load <2 x double>, ptr %559, align 8, !tbaa !8, !alias.scope !100
  %wide.load750 = load <2 x double>, ptr %560, align 8, !tbaa !8, !alias.scope !100
  %561 = getelementptr inbounds double, ptr %9, i64 %index748
  %562 = getelementptr inbounds i8, ptr %561, i64 16
  %wide.load751 = load <2 x double>, ptr %561, align 8, !tbaa !8, !alias.scope !103, !noalias !100
  %wide.load752 = load <2 x double>, ptr %562, align 8, !tbaa !8, !alias.scope !103, !noalias !100
  %563 = fadd <2 x double> %wide.load749, %wide.load751
  %564 = fadd <2 x double> %wide.load750, %wide.load752
  store <2 x double> %563, ptr %561, align 8, !tbaa !8, !alias.scope !103, !noalias !100
  store <2 x double> %564, ptr %562, align 8, !tbaa !8, !alias.scope !103, !noalias !100
  %index.next753 = add nuw i64 %index748, 4
  %565 = icmp eq i64 %index.next753, %n.vec745
  br i1 %565, label %middle.block740, label %vector.body747, !llvm.loop !105

middle.block740:                                  ; preds = %vector.body747
  br i1 %cmp.n754, label %.preheader346, label %scalar.ph741.preheader

.preheader346:                                    ; preds = %scalar.ph741.prol.loopexit, %scalar.ph741, %middle.block740, %550
  br i1 %56, label %.lr.ph444, label %._crit_edge445

.lr.ph444:                                        ; preds = %.preheader346
  %566 = load ptr, ptr %110, align 8, !tbaa !98
  br i1 %min.iters.check721, label %scalar.ph720.preheader, label %vector.memcheck713

scalar.ph720.preheader:                           ; preds = %middle.block719, %vector.memcheck713, %.lr.ph444
  %indvars.iv605.ph = phi i64 [ 0, %vector.memcheck713 ], [ 0, %.lr.ph444 ], [ %n.vec724, %middle.block719 ]
  br i1 %lcmp.mod977.not, label %scalar.ph720.prol.loopexit, label %scalar.ph720.prol

scalar.ph720.prol:                                ; preds = %scalar.ph720.preheader, %scalar.ph720.prol
  %indvars.iv605.prol = phi i64 [ %indvars.iv.next606.prol, %scalar.ph720.prol ], [ %indvars.iv605.ph, %scalar.ph720.preheader ]
  %prol.iter978 = phi i64 [ %prol.iter978.next, %scalar.ph720.prol ], [ 0, %scalar.ph720.preheader ]
  %567 = getelementptr inbounds double, ptr %566, i64 %indvars.iv605.prol
  %568 = load double, ptr %567, align 8, !tbaa !8
  %569 = getelementptr inbounds double, ptr %10, i64 %indvars.iv605.prol
  %570 = load double, ptr %569, align 8, !tbaa !8
  %571 = fadd double %568, %570
  store double %571, ptr %569, align 8, !tbaa !8
  %indvars.iv.next606.prol = add nuw nsw i64 %indvars.iv605.prol, 1
  %prol.iter978.next = add i64 %prol.iter978, 1
  %prol.iter978.cmp.not = icmp eq i64 %prol.iter978.next, %xtraiter976
  br i1 %prol.iter978.cmp.not, label %scalar.ph720.prol.loopexit, label %scalar.ph720.prol, !llvm.loop !106

scalar.ph720.prol.loopexit:                       ; preds = %scalar.ph720.prol, %scalar.ph720.preheader
  %indvars.iv605.unr = phi i64 [ %indvars.iv605.ph, %scalar.ph720.preheader ], [ %indvars.iv.next606.prol, %scalar.ph720.prol ]
  %572 = sub nsw i64 %indvars.iv605.ph, %116
  %573 = icmp ugt i64 %572, -4
  br i1 %573, label %._crit_edge445, label %scalar.ph720

vector.memcheck713:                               ; preds = %.lr.ph444
  %scevgep715 = getelementptr i8, ptr %566, i64 %122
  %bound0716 = icmp ugt ptr %scevgep715, %10
  %bound1717 = icmp ult ptr %566, %scevgep714
  %found.conflict718 = and i1 %bound0716, %bound1717
  br i1 %found.conflict718, label %scalar.ph720.preheader, label %vector.body726

vector.body726:                                   ; preds = %vector.memcheck713, %vector.body726
  %index727 = phi i64 [ %index.next732, %vector.body726 ], [ 0, %vector.memcheck713 ]
  %574 = getelementptr inbounds double, ptr %566, i64 %index727
  %575 = getelementptr inbounds i8, ptr %574, i64 16
  %wide.load728 = load <2 x double>, ptr %574, align 8, !tbaa !8, !alias.scope !107
  %wide.load729 = load <2 x double>, ptr %575, align 8, !tbaa !8, !alias.scope !107
  %576 = getelementptr inbounds double, ptr %10, i64 %index727
  %577 = getelementptr inbounds i8, ptr %576, i64 16
  %wide.load730 = load <2 x double>, ptr %576, align 8, !tbaa !8, !alias.scope !110, !noalias !107
  %wide.load731 = load <2 x double>, ptr %577, align 8, !tbaa !8, !alias.scope !110, !noalias !107
  %578 = fadd <2 x double> %wide.load728, %wide.load730
  %579 = fadd <2 x double> %wide.load729, %wide.load731
  store <2 x double> %578, ptr %576, align 8, !tbaa !8, !alias.scope !110, !noalias !107
  store <2 x double> %579, ptr %577, align 8, !tbaa !8, !alias.scope !110, !noalias !107
  %index.next732 = add nuw i64 %index727, 4
  %580 = icmp eq i64 %index.next732, %n.vec724
  br i1 %580, label %middle.block719, label %vector.body726, !llvm.loop !112

middle.block719:                                  ; preds = %vector.body726
  br i1 %cmp.n733, label %._crit_edge445, label %scalar.ph720.preheader

scalar.ph741:                                     ; preds = %scalar.ph741.prol.loopexit, %scalar.ph741
  %indvars.iv600 = phi i64 [ %indvars.iv.next601.3, %scalar.ph741 ], [ %indvars.iv600.unr, %scalar.ph741.prol.loopexit ]
  %581 = getelementptr inbounds double, ptr %551, i64 %indvars.iv600
  %582 = load double, ptr %581, align 8, !tbaa !8
  %583 = getelementptr inbounds double, ptr %9, i64 %indvars.iv600
  %584 = load double, ptr %583, align 8, !tbaa !8
  %585 = fadd double %582, %584
  store double %585, ptr %583, align 8, !tbaa !8
  %indvars.iv.next601 = add nuw nsw i64 %indvars.iv600, 1
  %586 = getelementptr inbounds double, ptr %551, i64 %indvars.iv.next601
  %587 = load double, ptr %586, align 8, !tbaa !8
  %588 = getelementptr inbounds double, ptr %9, i64 %indvars.iv.next601
  %589 = load double, ptr %588, align 8, !tbaa !8
  %590 = fadd double %587, %589
  store double %590, ptr %588, align 8, !tbaa !8
  %indvars.iv.next601.1 = add nuw nsw i64 %indvars.iv600, 2
  %591 = getelementptr inbounds double, ptr %551, i64 %indvars.iv.next601.1
  %592 = load double, ptr %591, align 8, !tbaa !8
  %593 = getelementptr inbounds double, ptr %9, i64 %indvars.iv.next601.1
  %594 = load double, ptr %593, align 8, !tbaa !8
  %595 = fadd double %592, %594
  store double %595, ptr %593, align 8, !tbaa !8
  %indvars.iv.next601.2 = add nuw nsw i64 %indvars.iv600, 3
  %596 = getelementptr inbounds double, ptr %551, i64 %indvars.iv.next601.2
  %597 = load double, ptr %596, align 8, !tbaa !8
  %598 = getelementptr inbounds double, ptr %9, i64 %indvars.iv.next601.2
  %599 = load double, ptr %598, align 8, !tbaa !8
  %600 = fadd double %597, %599
  store double %600, ptr %598, align 8, !tbaa !8
  %indvars.iv.next601.3 = add nuw nsw i64 %indvars.iv600, 4
  %exitcond604.not.3 = icmp eq i64 %indvars.iv.next601.3, %112
  br i1 %exitcond604.not.3, label %.preheader346, label %scalar.ph741, !llvm.loop !113

scalar.ph720:                                     ; preds = %scalar.ph720.prol.loopexit, %scalar.ph720
  %indvars.iv605 = phi i64 [ %indvars.iv.next606.3, %scalar.ph720 ], [ %indvars.iv605.unr, %scalar.ph720.prol.loopexit ]
  %601 = getelementptr inbounds double, ptr %566, i64 %indvars.iv605
  %602 = load double, ptr %601, align 8, !tbaa !8
  %603 = getelementptr inbounds double, ptr %10, i64 %indvars.iv605
  %604 = load double, ptr %603, align 8, !tbaa !8
  %605 = fadd double %602, %604
  store double %605, ptr %603, align 8, !tbaa !8
  %indvars.iv.next606 = add nuw nsw i64 %indvars.iv605, 1
  %606 = getelementptr inbounds double, ptr %566, i64 %indvars.iv.next606
  %607 = load double, ptr %606, align 8, !tbaa !8
  %608 = getelementptr inbounds double, ptr %10, i64 %indvars.iv.next606
  %609 = load double, ptr %608, align 8, !tbaa !8
  %610 = fadd double %607, %609
  store double %610, ptr %608, align 8, !tbaa !8
  %indvars.iv.next606.1 = add nuw nsw i64 %indvars.iv605, 2
  %611 = getelementptr inbounds double, ptr %566, i64 %indvars.iv.next606.1
  %612 = load double, ptr %611, align 8, !tbaa !8
  %613 = getelementptr inbounds double, ptr %10, i64 %indvars.iv.next606.1
  %614 = load double, ptr %613, align 8, !tbaa !8
  %615 = fadd double %612, %614
  store double %615, ptr %613, align 8, !tbaa !8
  %indvars.iv.next606.2 = add nuw nsw i64 %indvars.iv605, 3
  %616 = getelementptr inbounds double, ptr %566, i64 %indvars.iv.next606.2
  %617 = load double, ptr %616, align 8, !tbaa !8
  %618 = getelementptr inbounds double, ptr %10, i64 %indvars.iv.next606.2
  %619 = load double, ptr %618, align 8, !tbaa !8
  %620 = fadd double %617, %619
  store double %620, ptr %618, align 8, !tbaa !8
  %indvars.iv.next606.3 = add nuw nsw i64 %indvars.iv605, 4
  %exitcond609.not.3 = icmp eq i64 %indvars.iv.next606.3, %116
  br i1 %exitcond609.not.3, label %._crit_edge445, label %scalar.ph720, !llvm.loop !114

._crit_edge445:                                   ; preds = %scalar.ph720.prol.loopexit, %scalar.ph720, %middle.block719, %.preheader346
  %621 = load i32, ptr %92, align 8, !tbaa !35
  %622 = icmp sgt i32 %621, 0
  br i1 %622, label %.preheader345, label %814

.preheader345:                                    ; preds = %._crit_edge445
  br i1 %44, label %.lr.ph447, label %._crit_edge448

.lr.ph447:                                        ; preds = %.preheader345
  %623 = load ptr, ptr %13, align 8, !tbaa !11
  %624 = load ptr, ptr %105, align 8, !tbaa !17
  br i1 %137, label %._crit_edge448.loopexit.unr-lcssa, label %.lr.ph447.new

.lr.ph447.new:                                    ; preds = %.lr.ph447, %.lr.ph447.new
  %indvars.iv610 = phi i64 [ %indvars.iv.next611.3, %.lr.ph447.new ], [ 0, %.lr.ph447 ]
  %niter983 = phi i64 [ %niter983.next.3, %.lr.ph447.new ], [ 0, %.lr.ph447 ]
  %625 = getelementptr inbounds i32, ptr %623, i64 %indvars.iv610
  %626 = load i32, ptr %625, align 4, !tbaa !13
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds double, ptr %1, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !8
  %630 = getelementptr inbounds double, ptr %624, i64 %indvars.iv610
  store double %629, ptr %630, align 8, !tbaa !8
  %indvars.iv.next611 = or disjoint i64 %indvars.iv610, 1
  %631 = getelementptr inbounds i32, ptr %623, i64 %indvars.iv.next611
  %632 = load i32, ptr %631, align 4, !tbaa !13
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds double, ptr %1, i64 %633
  %635 = load double, ptr %634, align 8, !tbaa !8
  %636 = getelementptr inbounds double, ptr %624, i64 %indvars.iv.next611
  store double %635, ptr %636, align 8, !tbaa !8
  %indvars.iv.next611.1 = or disjoint i64 %indvars.iv610, 2
  %637 = getelementptr inbounds i32, ptr %623, i64 %indvars.iv.next611.1
  %638 = load i32, ptr %637, align 4, !tbaa !13
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds double, ptr %1, i64 %639
  %641 = load double, ptr %640, align 8, !tbaa !8
  %642 = getelementptr inbounds double, ptr %624, i64 %indvars.iv.next611.1
  store double %641, ptr %642, align 8, !tbaa !8
  %indvars.iv.next611.2 = or disjoint i64 %indvars.iv610, 3
  %643 = getelementptr inbounds i32, ptr %623, i64 %indvars.iv.next611.2
  %644 = load i32, ptr %643, align 4, !tbaa !13
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %1, i64 %645
  %647 = load double, ptr %646, align 8, !tbaa !8
  %648 = getelementptr inbounds double, ptr %624, i64 %indvars.iv.next611.2
  store double %647, ptr %648, align 8, !tbaa !8
  %indvars.iv.next611.3 = add nuw nsw i64 %indvars.iv610, 4
  %niter983.next.3 = add i64 %niter983, 4
  %niter983.ncmp.3 = icmp eq i64 %niter983.next.3, %unroll_iter982
  br i1 %niter983.ncmp.3, label %._crit_edge448.loopexit.unr-lcssa, label %.lr.ph447.new, !llvm.loop !115

._crit_edge448.loopexit.unr-lcssa:                ; preds = %.lr.ph447.new, %.lr.ph447
  %indvars.iv610.unr = phi i64 [ 0, %.lr.ph447 ], [ %indvars.iv.next611.3, %.lr.ph447.new ]
  br i1 %lcmp.mod981.not, label %._crit_edge448, label %.epil.preheader979

.epil.preheader979:                               ; preds = %._crit_edge448.loopexit.unr-lcssa, %.epil.preheader979
  %indvars.iv610.epil = phi i64 [ %indvars.iv.next611.epil, %.epil.preheader979 ], [ %indvars.iv610.unr, %._crit_edge448.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader979 ], [ 0, %._crit_edge448.loopexit.unr-lcssa ]
  %649 = getelementptr inbounds i32, ptr %623, i64 %indvars.iv610.epil
  %650 = load i32, ptr %649, align 4, !tbaa !13
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds double, ptr %1, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !8
  %654 = getelementptr inbounds double, ptr %624, i64 %indvars.iv610.epil
  store double %653, ptr %654, align 8, !tbaa !8
  %indvars.iv.next611.epil = add nuw nsw i64 %indvars.iv610.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter980
  br i1 %epil.iter.cmp.not, label %._crit_edge448, label %.epil.preheader979, !llvm.loop !116

._crit_edge448:                                   ; preds = %._crit_edge448.loopexit.unr-lcssa, %.epil.preheader979, %.preheader345
  %655 = load i32, ptr %103, align 4, !tbaa !42
  switch i32 %655, label %722 [
    i32 0, label %671
    i32 1, label %.preheader343
  ]

.preheader343:                                    ; preds = %._crit_edge448
  br i1 %44, label %.lr.ph450, label %._crit_edge457.critedge

.lr.ph450:                                        ; preds = %.preheader343
  %656 = load ptr, ptr %105, align 8, !tbaa !17
  br i1 %min.iters.check700, label %scalar.ph699.preheader, label %vector.memcheck692

scalar.ph699.preheader:                           ; preds = %middle.block698, %vector.memcheck692, %.lr.ph450
  %indvars.iv615.ph = phi i64 [ 0, %vector.memcheck692 ], [ 0, %.lr.ph450 ], [ %n.vec703, %middle.block698 ]
  br i1 %lcmp.mod985.not, label %scalar.ph699.prol.loopexit, label %scalar.ph699.prol

scalar.ph699.prol:                                ; preds = %scalar.ph699.preheader, %scalar.ph699.prol
  %indvars.iv615.prol = phi i64 [ %indvars.iv.next616.prol, %scalar.ph699.prol ], [ %indvars.iv615.ph, %scalar.ph699.preheader ]
  %prol.iter986 = phi i64 [ %prol.iter986.next, %scalar.ph699.prol ], [ 0, %scalar.ph699.preheader ]
  %657 = getelementptr inbounds double, ptr %9, i64 %indvars.iv615.prol
  %658 = load double, ptr %657, align 8, !tbaa !8
  %659 = getelementptr inbounds double, ptr %656, i64 %indvars.iv615.prol
  %660 = load double, ptr %659, align 8, !tbaa !8
  %661 = fadd double %658, %660
  store double %661, ptr %659, align 8, !tbaa !8
  %indvars.iv.next616.prol = add nuw nsw i64 %indvars.iv615.prol, 1
  %prol.iter986.next = add i64 %prol.iter986, 1
  %prol.iter986.cmp.not = icmp eq i64 %prol.iter986.next, %xtraiter984
  br i1 %prol.iter986.cmp.not, label %scalar.ph699.prol.loopexit, label %scalar.ph699.prol, !llvm.loop !117

scalar.ph699.prol.loopexit:                       ; preds = %scalar.ph699.prol, %scalar.ph699.preheader
  %indvars.iv615.unr = phi i64 [ %indvars.iv615.ph, %scalar.ph699.preheader ], [ %indvars.iv.next616.prol, %scalar.ph699.prol ]
  %662 = sub nsw i64 %indvars.iv615.ph, %112
  %663 = icmp ugt i64 %662, -4
  br i1 %663, label %.loopexit342, label %scalar.ph699

vector.memcheck692:                               ; preds = %.lr.ph450
  %scevgep693 = getelementptr i8, ptr %656, i64 %121
  %bound0695 = icmp ult ptr %656, %scevgep694
  %bound1696 = icmp ugt ptr %scevgep693, %9
  %found.conflict697 = and i1 %bound0695, %bound1696
  br i1 %found.conflict697, label %scalar.ph699.preheader, label %vector.body705

vector.body705:                                   ; preds = %vector.memcheck692, %vector.body705
  %index706 = phi i64 [ %index.next711, %vector.body705 ], [ 0, %vector.memcheck692 ]
  %664 = getelementptr inbounds double, ptr %9, i64 %index706
  %665 = getelementptr inbounds i8, ptr %664, i64 16
  %wide.load707 = load <2 x double>, ptr %664, align 8, !tbaa !8, !alias.scope !118
  %wide.load708 = load <2 x double>, ptr %665, align 8, !tbaa !8, !alias.scope !118
  %666 = getelementptr inbounds double, ptr %656, i64 %index706
  %667 = getelementptr inbounds i8, ptr %666, i64 16
  %wide.load709 = load <2 x double>, ptr %666, align 8, !tbaa !8, !alias.scope !121, !noalias !118
  %wide.load710 = load <2 x double>, ptr %667, align 8, !tbaa !8, !alias.scope !121, !noalias !118
  %668 = fadd <2 x double> %wide.load707, %wide.load709
  %669 = fadd <2 x double> %wide.load708, %wide.load710
  store <2 x double> %668, ptr %666, align 8, !tbaa !8, !alias.scope !121, !noalias !118
  store <2 x double> %669, ptr %667, align 8, !tbaa !8, !alias.scope !121, !noalias !118
  %index.next711 = add nuw i64 %index706, 4
  %670 = icmp eq i64 %index.next711, %n.vec703
  br i1 %670, label %middle.block698, label %vector.body705, !llvm.loop !123

middle.block698:                                  ; preds = %vector.body705
  br i1 %cmp.n712, label %.loopexit342, label %scalar.ph699.preheader

671:                                              ; preds = %._crit_edge448
  %672 = call noundef i32 @_ZNK7qpOASES9QProblemB19usingRegularisationEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %673 = icmp ne i32 %672, 1
  %brmerge484 = or i1 %673, %108
  br i1 %brmerge484, label %.loopexit342, label %.lr.ph452

.lr.ph452:                                        ; preds = %671
  %674 = load ptr, ptr %105, align 8, !tbaa !17
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph452
  %scevgep = getelementptr i8, ptr %674, i64 %120
  %bound0 = icmp ult ptr %674, %scevgep682
  %bound1 = icmp ult ptr %106, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0684 = icmp ult ptr %674, %scevgep683
  %bound1685 = icmp ugt ptr %scevgep, %9
  %found.conflict686 = and i1 %bound0684, %bound1685
  %conflict.rdx = or i1 %found.conflict, %found.conflict686
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.memcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.memcheck ]
  %675 = load <2 x double>, ptr %106, align 8
  %broadcast.splat691 = shufflevector <2 x double> %675, <2 x double> poison, <2 x i32> zeroinitializer
  %676 = getelementptr inbounds double, ptr %9, i64 %index
  %677 = getelementptr inbounds i8, ptr %676, i64 16
  %wide.load = load <2 x double>, ptr %676, align 8, !tbaa !8, !alias.scope !124
  %wide.load687 = load <2 x double>, ptr %677, align 8, !tbaa !8, !alias.scope !124
  %678 = getelementptr inbounds double, ptr %674, i64 %index
  %679 = getelementptr inbounds i8, ptr %678, i64 16
  %wide.load688 = load <2 x double>, ptr %678, align 8, !tbaa !8, !alias.scope !127, !noalias !129
  %wide.load689 = load <2 x double>, ptr %679, align 8, !tbaa !8, !alias.scope !127, !noalias !129
  %680 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat691, <2 x double> %wide.load, <2 x double> %wide.load688)
  %681 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat691, <2 x double> %wide.load687, <2 x double> %wide.load689)
  store <2 x double> %680, ptr %678, align 8, !tbaa !8, !alias.scope !127, !noalias !129
  store <2 x double> %681, ptr %679, align 8, !tbaa !8, !alias.scope !127, !noalias !129
  %index.next = add nuw i64 %index, 4
  %682 = icmp eq i64 %index.next, %n.vec
  br i1 %682, label %middle.block, label %vector.body, !llvm.loop !131

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %.loopexit342, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph452
  %indvars.iv620.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph452 ], [ %n.vec, %middle.block ]
  br i1 %lcmp.mod988.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %683 = load double, ptr %106, align 8, !tbaa !62
  %684 = getelementptr inbounds double, ptr %9, i64 %indvars.iv620.ph
  %685 = load double, ptr %684, align 8, !tbaa !8
  %686 = getelementptr inbounds double, ptr %674, i64 %indvars.iv620.ph
  %687 = load double, ptr %686, align 8, !tbaa !8
  %688 = call double @llvm.fmuladd.f64(double %683, double %685, double %687)
  store double %688, ptr %686, align 8, !tbaa !8
  %indvars.iv.next621.prol = or disjoint i64 %indvars.iv620.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv620.unr = phi i64 [ %indvars.iv620.ph, %scalar.ph.preheader ], [ %indvars.iv.next621.prol, %scalar.ph.prol ]
  %689 = icmp eq i64 %indvars.iv620.ph, %138
  br i1 %689, label %.loopexit342, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv620 = phi i64 [ %indvars.iv.next621.1, %scalar.ph ], [ %indvars.iv620.unr, %scalar.ph.prol.loopexit ]
  %690 = load double, ptr %106, align 8, !tbaa !62
  %691 = getelementptr inbounds double, ptr %9, i64 %indvars.iv620
  %692 = load double, ptr %691, align 8, !tbaa !8
  %693 = getelementptr inbounds double, ptr %674, i64 %indvars.iv620
  %694 = load double, ptr %693, align 8, !tbaa !8
  %695 = call double @llvm.fmuladd.f64(double %690, double %692, double %694)
  store double %695, ptr %693, align 8, !tbaa !8
  %indvars.iv.next621 = add nuw nsw i64 %indvars.iv620, 1
  %696 = load double, ptr %106, align 8, !tbaa !62
  %697 = getelementptr inbounds double, ptr %9, i64 %indvars.iv.next621
  %698 = load double, ptr %697, align 8, !tbaa !8
  %699 = getelementptr inbounds double, ptr %674, i64 %indvars.iv.next621
  %700 = load double, ptr %699, align 8, !tbaa !8
  %701 = call double @llvm.fmuladd.f64(double %696, double %698, double %700)
  store double %701, ptr %699, align 8, !tbaa !8
  %indvars.iv.next621.1 = add nuw nsw i64 %indvars.iv620, 2
  %exitcond624.not.1 = icmp eq i64 %indvars.iv.next621.1, %112
  br i1 %exitcond624.not.1, label %.loopexit342, label %scalar.ph, !llvm.loop !132

scalar.ph699:                                     ; preds = %scalar.ph699.prol.loopexit, %scalar.ph699
  %indvars.iv615 = phi i64 [ %indvars.iv.next616.3, %scalar.ph699 ], [ %indvars.iv615.unr, %scalar.ph699.prol.loopexit ]
  %702 = getelementptr inbounds double, ptr %9, i64 %indvars.iv615
  %703 = load double, ptr %702, align 8, !tbaa !8
  %704 = getelementptr inbounds double, ptr %656, i64 %indvars.iv615
  %705 = load double, ptr %704, align 8, !tbaa !8
  %706 = fadd double %703, %705
  store double %706, ptr %704, align 8, !tbaa !8
  %indvars.iv.next616 = add nuw nsw i64 %indvars.iv615, 1
  %707 = getelementptr inbounds double, ptr %9, i64 %indvars.iv.next616
  %708 = load double, ptr %707, align 8, !tbaa !8
  %709 = getelementptr inbounds double, ptr %656, i64 %indvars.iv.next616
  %710 = load double, ptr %709, align 8, !tbaa !8
  %711 = fadd double %708, %710
  store double %711, ptr %709, align 8, !tbaa !8
  %indvars.iv.next616.1 = add nuw nsw i64 %indvars.iv615, 2
  %712 = getelementptr inbounds double, ptr %9, i64 %indvars.iv.next616.1
  %713 = load double, ptr %712, align 8, !tbaa !8
  %714 = getelementptr inbounds double, ptr %656, i64 %indvars.iv.next616.1
  %715 = load double, ptr %714, align 8, !tbaa !8
  %716 = fadd double %713, %715
  store double %716, ptr %714, align 8, !tbaa !8
  %indvars.iv.next616.2 = add nuw nsw i64 %indvars.iv615, 3
  %717 = getelementptr inbounds double, ptr %9, i64 %indvars.iv.next616.2
  %718 = load double, ptr %717, align 8, !tbaa !8
  %719 = getelementptr inbounds double, ptr %656, i64 %indvars.iv.next616.2
  %720 = load double, ptr %719, align 8, !tbaa !8
  %721 = fadd double %718, %720
  store double %721, ptr %719, align 8, !tbaa !8
  %indvars.iv.next616.3 = add nuw nsw i64 %indvars.iv615, 4
  %exitcond619.not.3 = icmp eq i64 %indvars.iv.next616.3, %112
  br i1 %exitcond619.not.3, label %.loopexit342, label %scalar.ph699, !llvm.loop !133

722:                                              ; preds = %._crit_edge448
  %723 = load ptr, ptr %104, align 8, !tbaa !66
  %724 = load ptr, ptr %723, align 8, !tbaa !5
  %725 = getelementptr i8, ptr %724, i64 -24
  %726 = load i64, ptr %725, align 8
  %727 = getelementptr inbounds i8, ptr %723, i64 %726
  %728 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %729 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %730 = load ptr, ptr %105, align 8, !tbaa !17
  %731 = load ptr, ptr %727, align 8, !tbaa !5
  %732 = getelementptr inbounds i8, ptr %731, i64 136
  %733 = load ptr, ptr %732, align 8
  %734 = call noundef i32 %733(ptr noundef nonnull align 8 dereferenceable(12) %727, ptr noundef %728, ptr noundef %729, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %9, i32 noundef %17, double noundef 1.000000e+00, ptr noundef %730, i32 noundef %17, i32 noundef 1)
  %735 = load ptr, ptr %104, align 8, !tbaa !66
  %736 = load ptr, ptr %735, align 8, !tbaa !5
  %737 = getelementptr i8, ptr %736, i64 -24
  %738 = load i64, ptr %737, align 8
  %739 = getelementptr inbounds i8, ptr %735, i64 %738
  %740 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %741 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %742 = load ptr, ptr %105, align 8, !tbaa !17
  %743 = load ptr, ptr %739, align 8, !tbaa !5
  %744 = getelementptr inbounds i8, ptr %743, i64 136
  %745 = load ptr, ptr %744, align 8
  %746 = call noundef i32 %745(ptr noundef nonnull align 8 dereferenceable(12) %739, ptr noundef %740, ptr noundef %741, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %8, i32 noundef %18, double noundef 1.000000e+00, ptr noundef %742, i32 noundef %17, i32 noundef 1)
  br label %.loopexit342

.loopexit342:                                     ; preds = %scalar.ph699.prol.loopexit, %scalar.ph699, %scalar.ph.prol.loopexit, %scalar.ph, %middle.block698, %middle.block, %671, %722
  %747 = load ptr, ptr %97, align 8, !tbaa !38
  %748 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %29)
  %749 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %750 = load ptr, ptr %105, align 8, !tbaa !17
  %751 = load ptr, ptr %747, align 8, !tbaa !5
  %752 = getelementptr inbounds i8, ptr %751, i64 144
  %753 = load ptr, ptr %752, align 8
  %754 = call noundef i32 %753(ptr noundef nonnull align 8 dereferenceable(12) %747, ptr noundef %748, ptr noundef %749, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %10, i32 noundef %19, double noundef 1.000000e+00, ptr noundef %750, i32 noundef %17)
  br i1 %44, label %.lr.ph456, label %._crit_edge457

.lr.ph456:                                        ; preds = %.loopexit342, %765
  %indvars.iv625 = phi i64 [ %indvars.iv.next626, %765 ], [ 0, %.loopexit342 ]
  %.0454 = phi double [ %.1, %765 ], [ 0.000000e+00, %.loopexit342 ]
  %755 = load ptr, ptr %105, align 8, !tbaa !17
  %756 = getelementptr inbounds double, ptr %755, i64 %indvars.iv625
  %757 = load double, ptr %756, align 8, !tbaa !8
  %758 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %757)
  %759 = fcmp olt double %.0454, %758
  br i1 %759, label %760, label %765

760:                                              ; preds = %.lr.ph456
  %761 = load ptr, ptr %105, align 8, !tbaa !17
  %762 = getelementptr inbounds double, ptr %761, i64 %indvars.iv625
  %763 = load double, ptr %762, align 8, !tbaa !8
  %764 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %763)
  br label %765

765:                                              ; preds = %.lr.ph456, %760
  %.1 = phi double [ %764, %760 ], [ %.0454, %.lr.ph456 ]
  %indvars.iv.next626 = add nuw nsw i64 %indvars.iv625, 1
  %exitcond629.not = icmp eq i64 %indvars.iv.next626, %112
  br i1 %exitcond629.not, label %._crit_edge457, label %.lr.ph456, !llvm.loop !134

._crit_edge457.critedge:                          ; preds = %.preheader343
  %766 = load ptr, ptr %97, align 8, !tbaa !38
  %767 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %29)
  %768 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %769 = load ptr, ptr %105, align 8, !tbaa !17
  %770 = load ptr, ptr %766, align 8, !tbaa !5
  %771 = getelementptr inbounds i8, ptr %770, i64 144
  %772 = load ptr, ptr %771, align 8
  %773 = call noundef i32 %772(ptr noundef nonnull align 8 dereferenceable(12) %766, ptr noundef %767, ptr noundef %768, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %10, i32 noundef %19, double noundef 1.000000e+00, ptr noundef %769, i32 noundef %17)
  br label %._crit_edge457

._crit_edge457:                                   ; preds = %765, %._crit_edge457.critedge, %.loopexit342
  %.0.lcssa = phi double [ 0.000000e+00, %.loopexit342 ], [ 0.000000e+00, %._crit_edge457.critedge ], [ %.1, %765 ]
  br i1 %91, label %.preheader337, label %.preheader339

.preheader339:                                    ; preds = %._crit_edge457
  br i1 %56, label %.lr.ph459, label %.loopexit338

.lr.ph459:                                        ; preds = %.preheader339
  %774 = load ptr, ptr %98, align 8, !tbaa !33
  call void @llvm.memset.p0.i64(ptr align 8 %774, i8 0, i64 %117, i1 false), !tbaa !8
  br label %.loopexit338

.preheader337:                                    ; preds = %._crit_edge457
  br i1 %56, label %.lr.ph461, label %.loopexit338

.lr.ph461:                                        ; preds = %.preheader337, %.lr.ph461
  %indvars.iv633 = phi i64 [ %indvars.iv.next634, %.lr.ph461 ], [ 0, %.preheader337 ]
  %775 = load ptr, ptr %15, align 8, !tbaa !11
  %776 = getelementptr inbounds i32, ptr %775, i64 %indvars.iv633
  %777 = load i32, ptr %776, align 4, !tbaa !13
  %778 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %29, i32 noundef %777)
  %779 = icmp eq i32 %778, -1
  %780 = sext i32 %777 to i64
  %781 = load ptr, ptr %98, align 8, !tbaa !33
  %782 = getelementptr inbounds double, ptr %781, i64 %indvars.iv633
  %.677 = select i1 %779, ptr %2, ptr %3
  %783 = getelementptr inbounds double, ptr %.677, i64 %780
  %784 = load double, ptr %783, align 8, !tbaa !8
  store double %784, ptr %782, align 8, !tbaa !8
  %indvars.iv.next634 = add nuw nsw i64 %indvars.iv633, 1
  %exitcond637.not = icmp eq i64 %indvars.iv.next634, %116
  br i1 %exitcond637.not, label %.loopexit338, label %.lr.ph461, !llvm.loop !135

.loopexit338:                                     ; preds = %.lr.ph461, %.lr.ph459, %.preheader339, %.preheader337
  %785 = load ptr, ptr %97, align 8, !tbaa !38
  %786 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %29)
  %787 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %788 = load ptr, ptr %98, align 8, !tbaa !33
  %789 = load ptr, ptr %785, align 8, !tbaa !5
  %790 = getelementptr inbounds i8, ptr %789, i64 136
  %791 = load ptr, ptr %790, align 8
  %792 = call noundef i32 %791(ptr noundef nonnull align 8 dereferenceable(12) %785, ptr noundef %786, ptr noundef %787, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %9, i32 noundef %17, double noundef 1.000000e+00, ptr noundef %788, i32 noundef %19, i32 noundef 1)
  %793 = load ptr, ptr %97, align 8, !tbaa !38
  %794 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %29)
  %795 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %796 = load ptr, ptr %98, align 8, !tbaa !33
  %797 = load ptr, ptr %793, align 8, !tbaa !5
  %798 = getelementptr inbounds i8, ptr %797, i64 136
  %799 = load ptr, ptr %798, align 8
  %800 = call noundef i32 %799(ptr noundef nonnull align 8 dereferenceable(12) %793, ptr noundef %794, ptr noundef %795, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %8, i32 noundef %18, double noundef 1.000000e+00, ptr noundef %796, i32 noundef %19, i32 noundef 1)
  br i1 %56, label %.lr.ph465, label %._crit_edge466

.lr.ph465:                                        ; preds = %.loopexit338, %811
  %indvars.iv638 = phi i64 [ %indvars.iv.next639, %811 ], [ 0, %.loopexit338 ]
  %.2463 = phi double [ %.3, %811 ], [ %.0.lcssa, %.loopexit338 ]
  %801 = load ptr, ptr %98, align 8, !tbaa !33
  %802 = getelementptr inbounds double, ptr %801, i64 %indvars.iv638
  %803 = load double, ptr %802, align 8, !tbaa !8
  %804 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %803)
  %805 = fcmp olt double %.2463, %804
  br i1 %805, label %806, label %811

806:                                              ; preds = %.lr.ph465
  %807 = load ptr, ptr %98, align 8, !tbaa !33
  %808 = getelementptr inbounds double, ptr %807, i64 %indvars.iv638
  %809 = load double, ptr %808, align 8, !tbaa !8
  %810 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %809)
  br label %811

811:                                              ; preds = %.lr.ph465, %806
  %.3 = phi double [ %810, %806 ], [ %.2463, %.lr.ph465 ]
  %indvars.iv.next639 = add nuw nsw i64 %indvars.iv638, 1
  %exitcond642.not = icmp eq i64 %indvars.iv.next639, %116
  br i1 %exitcond642.not, label %._crit_edge466, label %.lr.ph465, !llvm.loop !136

._crit_edge466:                                   ; preds = %811, %.loopexit338
  %.2.lcssa = phi double [ %.0.lcssa, %.loopexit338 ], [ %.3, %811 ]
  %812 = load double, ptr %111, align 8, !tbaa !137
  %813 = fcmp olt double %.2.lcssa, %812
  br i1 %813, label %._crit_edge473, label %._crit_edge466._crit_edge

._crit_edge466._crit_edge:                        ; preds = %._crit_edge466
  %.pre = load i32, ptr %92, align 8, !tbaa !35
  br label %814

814:                                              ; preds = %._crit_edge466._crit_edge, %._crit_edge445
  %815 = phi i32 [ %.pre, %._crit_edge466._crit_edge ], [ %621, %._crit_edge445 ]
  %816 = add nuw nsw i32 %.0319469, 1
  %.not.not = icmp slt i32 %.0319469, %815
  br i1 %.not.not, label %139, label %._crit_edge473, !llvm.loop !138

._crit_edge473:                                   ; preds = %814, %._crit_edge466, %.loopexit366
  %817 = icmp sgt i32 %18, 0
  br i1 %817, label %.preheader335, label %.loopexit

.preheader335:                                    ; preds = %._crit_edge473
  %818 = load ptr, ptr %14, align 8, !tbaa !11
  %wide.trip.count646 = zext nneg i32 %18 to i64
  %xtraiter991 = and i64 %wide.trip.count646, 3
  %819 = icmp ult i32 %18, 4
  br i1 %819, label %.unr-lcssa, label %.preheader335.new

.preheader335.new:                                ; preds = %.preheader335
  %unroll_iter994 = and i64 %wide.trip.count646, 2147483644
  br label %820

820:                                              ; preds = %820, %.preheader335.new
  %indvars.iv643 = phi i64 [ 0, %.preheader335.new ], [ %indvars.iv.next644.3, %820 ]
  %niter995 = phi i64 [ 0, %.preheader335.new ], [ %niter995.next.3, %820 ]
  %821 = getelementptr inbounds i32, ptr %818, i64 %indvars.iv643
  %822 = load i32, ptr %821, align 4, !tbaa !13
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds double, ptr %1, i64 %823
  %825 = load double, ptr %824, align 8, !tbaa !8
  %826 = getelementptr inbounds double, ptr %11, i64 %indvars.iv643
  store double %825, ptr %826, align 8, !tbaa !8
  %indvars.iv.next644 = or disjoint i64 %indvars.iv643, 1
  %827 = getelementptr inbounds i32, ptr %818, i64 %indvars.iv.next644
  %828 = load i32, ptr %827, align 4, !tbaa !13
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds double, ptr %1, i64 %829
  %831 = load double, ptr %830, align 8, !tbaa !8
  %832 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next644
  store double %831, ptr %832, align 8, !tbaa !8
  %indvars.iv.next644.1 = or disjoint i64 %indvars.iv643, 2
  %833 = getelementptr inbounds i32, ptr %818, i64 %indvars.iv.next644.1
  %834 = load i32, ptr %833, align 4, !tbaa !13
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %1, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !8
  %838 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next644.1
  store double %837, ptr %838, align 8, !tbaa !8
  %indvars.iv.next644.2 = or disjoint i64 %indvars.iv643, 3
  %839 = getelementptr inbounds i32, ptr %818, i64 %indvars.iv.next644.2
  %840 = load i32, ptr %839, align 4, !tbaa !13
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds double, ptr %1, i64 %841
  %843 = load double, ptr %842, align 8, !tbaa !8
  %844 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next644.2
  store double %843, ptr %844, align 8, !tbaa !8
  %indvars.iv.next644.3 = add nuw nsw i64 %indvars.iv643, 4
  %niter995.next.3 = add i64 %niter995, 4
  %niter995.ncmp.3 = icmp eq i64 %niter995.next.3, %unroll_iter994
  br i1 %niter995.ncmp.3, label %.unr-lcssa, label %820, !llvm.loop !139

.unr-lcssa:                                       ; preds = %820, %.preheader335
  %indvars.iv643.unr = phi i64 [ 0, %.preheader335 ], [ %indvars.iv.next644.3, %820 ]
  %lcmp.mod993.not = icmp eq i64 %xtraiter991, 0
  br i1 %lcmp.mod993.not, label %.epilog-lcssa, label %.epil.preheader990

.epil.preheader990:                               ; preds = %.unr-lcssa, %.epil.preheader990
  %indvars.iv643.epil = phi i64 [ %indvars.iv.next644.epil, %.epil.preheader990 ], [ %indvars.iv643.unr, %.unr-lcssa ]
  %epil.iter992 = phi i64 [ %epil.iter992.next, %.epil.preheader990 ], [ 0, %.unr-lcssa ]
  %845 = getelementptr inbounds i32, ptr %818, i64 %indvars.iv643.epil
  %846 = load i32, ptr %845, align 4, !tbaa !13
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %1, i64 %847
  %849 = load double, ptr %848, align 8, !tbaa !8
  %850 = getelementptr inbounds double, ptr %11, i64 %indvars.iv643.epil
  store double %849, ptr %850, align 8, !tbaa !8
  %indvars.iv.next644.epil = add nuw nsw i64 %indvars.iv643.epil, 1
  %epil.iter992.next = add i64 %epil.iter992, 1
  %epil.iter992.cmp.not = icmp eq i64 %epil.iter992.next, %xtraiter991
  br i1 %epil.iter992.cmp.not, label %.epilog-lcssa, label %.epil.preheader990, !llvm.loop !140

.epilog-lcssa:                                    ; preds = %.epil.preheader990, %.unr-lcssa
  %851 = getelementptr inbounds i8, ptr %0, i64 808
  %852 = load ptr, ptr %851, align 8, !tbaa !38
  %853 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %29)
  %854 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %855 = load ptr, ptr %852, align 8, !tbaa !5
  %856 = getelementptr inbounds i8, ptr %855, i64 144
  %857 = load ptr, ptr %856, align 8
  %858 = call noundef i32 %857(ptr noundef nonnull align 8 dereferenceable(12) %852, ptr noundef %853, ptr noundef %854, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %10, i32 noundef %19, double noundef 1.000000e+00, ptr noundef nonnull %11, i32 noundef %18)
  %859 = getelementptr inbounds i8, ptr %0, i64 220
  %860 = load i32, ptr %859, align 4, !tbaa !42
  switch i32 %860, label %929 [
    i32 0, label %876
    i32 1, label %.lr.ph477.preheader
  ]

.lr.ph477.preheader:                              ; preds = %.epilog-lcssa
  %min.iters.check884 = icmp ult i32 %18, 6
  br i1 %min.iters.check884, label %.lr.ph477.preheader932, label %vector.memcheck876

.lr.ph477.preheader932:                           ; preds = %middle.block882, %vector.memcheck876, %.lr.ph477.preheader
  %indvars.iv648.ph = phi i64 [ 0, %vector.memcheck876 ], [ 0, %.lr.ph477.preheader ], [ %n.vec887, %middle.block882 ]
  %xtraiter996 = and i64 %wide.trip.count646, 3
  %lcmp.mod997.not = icmp eq i64 %xtraiter996, 0
  br i1 %lcmp.mod997.not, label %.lr.ph477.prol.loopexit, label %.lr.ph477.prol

.lr.ph477.prol:                                   ; preds = %.lr.ph477.preheader932, %.lr.ph477.prol
  %indvars.iv648.prol = phi i64 [ %indvars.iv.next649.prol, %.lr.ph477.prol ], [ %indvars.iv648.ph, %.lr.ph477.preheader932 ]
  %prol.iter998 = phi i64 [ %prol.iter998.next, %.lr.ph477.prol ], [ 0, %.lr.ph477.preheader932 ]
  %861 = getelementptr inbounds double, ptr %8, i64 %indvars.iv648.prol
  %862 = load double, ptr %861, align 8, !tbaa !8
  %863 = getelementptr inbounds double, ptr %11, i64 %indvars.iv648.prol
  %864 = load double, ptr %863, align 8, !tbaa !8
  %865 = fadd double %862, %864
  store double %865, ptr %863, align 8, !tbaa !8
  %indvars.iv.next649.prol = add nuw nsw i64 %indvars.iv648.prol, 1
  %prol.iter998.next = add i64 %prol.iter998, 1
  %prol.iter998.cmp.not = icmp eq i64 %prol.iter998.next, %xtraiter996
  br i1 %prol.iter998.cmp.not, label %.lr.ph477.prol.loopexit, label %.lr.ph477.prol, !llvm.loop !141

.lr.ph477.prol.loopexit:                          ; preds = %.lr.ph477.prol, %.lr.ph477.preheader932
  %indvars.iv648.unr = phi i64 [ %indvars.iv648.ph, %.lr.ph477.preheader932 ], [ %indvars.iv.next649.prol, %.lr.ph477.prol ]
  %866 = sub nsw i64 %indvars.iv648.ph, %wide.trip.count646
  %867 = icmp ugt i64 %866, -4
  br i1 %867, label %.loopexit, label %.lr.ph477

vector.memcheck876:                               ; preds = %.lr.ph477.preheader
  %868 = shl nuw nsw i64 %wide.trip.count646, 3
  %scevgep877 = getelementptr i8, ptr %11, i64 %868
  %scevgep878 = getelementptr i8, ptr %8, i64 %868
  %bound0879 = icmp ugt ptr %scevgep878, %11
  %bound1880 = icmp ugt ptr %scevgep877, %8
  %found.conflict881 = and i1 %bound0879, %bound1880
  br i1 %found.conflict881, label %.lr.ph477.preheader932, label %vector.ph885

vector.ph885:                                     ; preds = %vector.memcheck876
  %n.vec887 = and i64 %wide.trip.count646, 2147483644
  br label %vector.body889

vector.body889:                                   ; preds = %vector.body889, %vector.ph885
  %index890 = phi i64 [ 0, %vector.ph885 ], [ %index.next895, %vector.body889 ]
  %869 = getelementptr inbounds double, ptr %8, i64 %index890
  %870 = getelementptr inbounds i8, ptr %869, i64 16
  %wide.load891 = load <2 x double>, ptr %869, align 8, !tbaa !8, !alias.scope !142
  %wide.load892 = load <2 x double>, ptr %870, align 8, !tbaa !8, !alias.scope !142
  %871 = getelementptr inbounds double, ptr %11, i64 %index890
  %872 = getelementptr inbounds i8, ptr %871, i64 16
  %wide.load893 = load <2 x double>, ptr %871, align 8, !tbaa !8, !alias.scope !145, !noalias !142
  %wide.load894 = load <2 x double>, ptr %872, align 8, !tbaa !8, !alias.scope !145, !noalias !142
  %873 = fadd <2 x double> %wide.load891, %wide.load893
  %874 = fadd <2 x double> %wide.load892, %wide.load894
  store <2 x double> %873, ptr %871, align 8, !tbaa !8, !alias.scope !145, !noalias !142
  store <2 x double> %874, ptr %872, align 8, !tbaa !8, !alias.scope !145, !noalias !142
  %index.next895 = add nuw i64 %index890, 4
  %875 = icmp eq i64 %index.next895, %n.vec887
  br i1 %875, label %middle.block882, label %vector.body889, !llvm.loop !147

middle.block882:                                  ; preds = %vector.body889
  %cmp.n896 = icmp eq i64 %n.vec887, %wide.trip.count646
  br i1 %cmp.n896, label %.loopexit, label %.lr.ph477.preheader932

876:                                              ; preds = %.epilog-lcssa
  %877 = call noundef i32 @_ZNK7qpOASES9QProblemB19usingRegularisationEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %878 = icmp eq i32 %877, 1
  br i1 %878, label %.lr.ph479, label %.loopexit

.lr.ph479:                                        ; preds = %876
  %879 = getelementptr inbounds i8, ptr %0, i64 224
  %min.iters.check910 = icmp ult i32 %18, 8
  br i1 %min.iters.check910, label %scalar.ph909.preheader, label %vector.memcheck897

vector.memcheck897:                               ; preds = %.lr.ph479
  %880 = shl nuw nsw i64 %wide.trip.count646, 3
  %scevgep898 = getelementptr i8, ptr %11, i64 %880
  %scevgep899 = getelementptr inbounds i8, ptr %0, i64 232
  %scevgep900 = getelementptr i8, ptr %8, i64 %880
  %bound0901 = icmp ugt ptr %scevgep899, %11
  %bound1902 = icmp ult ptr %879, %scevgep898
  %found.conflict903 = and i1 %bound0901, %bound1902
  %bound0904 = icmp ugt ptr %scevgep900, %11
  %bound1905 = icmp ugt ptr %scevgep898, %8
  %found.conflict906 = and i1 %bound0904, %bound1905
  %conflict.rdx907 = or i1 %found.conflict903, %found.conflict906
  br i1 %conflict.rdx907, label %scalar.ph909.preheader, label %vector.ph911

vector.ph911:                                     ; preds = %vector.memcheck897
  %n.vec913 = and i64 %wide.trip.count646, 2147483644
  br label %vector.body915

vector.body915:                                   ; preds = %vector.body915, %vector.ph911
  %index916 = phi i64 [ 0, %vector.ph911 ], [ %index.next925, %vector.body915 ]
  %881 = load <2 x double>, ptr %879, align 8
  %broadcast.splat924 = shufflevector <2 x double> %881, <2 x double> poison, <2 x i32> zeroinitializer
  %882 = getelementptr inbounds double, ptr %8, i64 %index916
  %883 = getelementptr inbounds i8, ptr %882, i64 16
  %wide.load917 = load <2 x double>, ptr %882, align 8, !tbaa !8, !alias.scope !148
  %wide.load918 = load <2 x double>, ptr %883, align 8, !tbaa !8, !alias.scope !148
  %884 = getelementptr inbounds double, ptr %11, i64 %index916
  %885 = getelementptr inbounds i8, ptr %884, i64 16
  %wide.load919 = load <2 x double>, ptr %884, align 8, !tbaa !8, !alias.scope !151, !noalias !153
  %wide.load920 = load <2 x double>, ptr %885, align 8, !tbaa !8, !alias.scope !151, !noalias !153
  %886 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat924, <2 x double> %wide.load917, <2 x double> %wide.load919)
  %887 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat924, <2 x double> %wide.load918, <2 x double> %wide.load920)
  store <2 x double> %886, ptr %884, align 8, !tbaa !8, !alias.scope !151, !noalias !153
  store <2 x double> %887, ptr %885, align 8, !tbaa !8, !alias.scope !151, !noalias !153
  %index.next925 = add nuw i64 %index916, 4
  %888 = icmp eq i64 %index.next925, %n.vec913
  br i1 %888, label %middle.block908, label %vector.body915, !llvm.loop !155

middle.block908:                                  ; preds = %vector.body915
  %cmp.n926 = icmp eq i64 %n.vec913, %wide.trip.count646
  br i1 %cmp.n926, label %.loopexit, label %scalar.ph909.preheader

scalar.ph909.preheader:                           ; preds = %middle.block908, %vector.memcheck897, %.lr.ph479
  %indvars.iv653.ph = phi i64 [ 0, %vector.memcheck897 ], [ 0, %.lr.ph479 ], [ %n.vec913, %middle.block908 ]
  %xtraiter999 = and i64 %wide.trip.count646, 1
  %lcmp.mod1000.not = icmp eq i64 %xtraiter999, 0
  br i1 %lcmp.mod1000.not, label %scalar.ph909.prol.loopexit, label %scalar.ph909.prol

scalar.ph909.prol:                                ; preds = %scalar.ph909.preheader
  %889 = load double, ptr %879, align 8, !tbaa !62
  %890 = getelementptr inbounds double, ptr %8, i64 %indvars.iv653.ph
  %891 = load double, ptr %890, align 8, !tbaa !8
  %892 = getelementptr inbounds double, ptr %11, i64 %indvars.iv653.ph
  %893 = load double, ptr %892, align 8, !tbaa !8
  %894 = call double @llvm.fmuladd.f64(double %889, double %891, double %893)
  store double %894, ptr %892, align 8, !tbaa !8
  %indvars.iv.next654.prol = or disjoint i64 %indvars.iv653.ph, 1
  br label %scalar.ph909.prol.loopexit

scalar.ph909.prol.loopexit:                       ; preds = %scalar.ph909.prol, %scalar.ph909.preheader
  %indvars.iv653.unr = phi i64 [ %indvars.iv653.ph, %scalar.ph909.preheader ], [ %indvars.iv.next654.prol, %scalar.ph909.prol ]
  %895 = add nsw i64 %wide.trip.count646, -1
  %896 = icmp eq i64 %indvars.iv653.ph, %895
  br i1 %896, label %.loopexit, label %scalar.ph909

scalar.ph909:                                     ; preds = %scalar.ph909.prol.loopexit, %scalar.ph909
  %indvars.iv653 = phi i64 [ %indvars.iv.next654.1, %scalar.ph909 ], [ %indvars.iv653.unr, %scalar.ph909.prol.loopexit ]
  %897 = load double, ptr %879, align 8, !tbaa !62
  %898 = getelementptr inbounds double, ptr %8, i64 %indvars.iv653
  %899 = load double, ptr %898, align 8, !tbaa !8
  %900 = getelementptr inbounds double, ptr %11, i64 %indvars.iv653
  %901 = load double, ptr %900, align 8, !tbaa !8
  %902 = call double @llvm.fmuladd.f64(double %897, double %899, double %901)
  store double %902, ptr %900, align 8, !tbaa !8
  %indvars.iv.next654 = add nuw nsw i64 %indvars.iv653, 1
  %903 = load double, ptr %879, align 8, !tbaa !62
  %904 = getelementptr inbounds double, ptr %8, i64 %indvars.iv.next654
  %905 = load double, ptr %904, align 8, !tbaa !8
  %906 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next654
  %907 = load double, ptr %906, align 8, !tbaa !8
  %908 = call double @llvm.fmuladd.f64(double %903, double %905, double %907)
  store double %908, ptr %906, align 8, !tbaa !8
  %indvars.iv.next654.1 = add nuw nsw i64 %indvars.iv653, 2
  %exitcond657.not.1 = icmp eq i64 %indvars.iv.next654.1, %wide.trip.count646
  br i1 %exitcond657.not.1, label %.loopexit, label %scalar.ph909, !llvm.loop !156

.lr.ph477:                                        ; preds = %.lr.ph477.prol.loopexit, %.lr.ph477
  %indvars.iv648 = phi i64 [ %indvars.iv.next649.3, %.lr.ph477 ], [ %indvars.iv648.unr, %.lr.ph477.prol.loopexit ]
  %909 = getelementptr inbounds double, ptr %8, i64 %indvars.iv648
  %910 = load double, ptr %909, align 8, !tbaa !8
  %911 = getelementptr inbounds double, ptr %11, i64 %indvars.iv648
  %912 = load double, ptr %911, align 8, !tbaa !8
  %913 = fadd double %910, %912
  store double %913, ptr %911, align 8, !tbaa !8
  %indvars.iv.next649 = add nuw nsw i64 %indvars.iv648, 1
  %914 = getelementptr inbounds double, ptr %8, i64 %indvars.iv.next649
  %915 = load double, ptr %914, align 8, !tbaa !8
  %916 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next649
  %917 = load double, ptr %916, align 8, !tbaa !8
  %918 = fadd double %915, %917
  store double %918, ptr %916, align 8, !tbaa !8
  %indvars.iv.next649.1 = add nuw nsw i64 %indvars.iv648, 2
  %919 = getelementptr inbounds double, ptr %8, i64 %indvars.iv.next649.1
  %920 = load double, ptr %919, align 8, !tbaa !8
  %921 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next649.1
  %922 = load double, ptr %921, align 8, !tbaa !8
  %923 = fadd double %920, %922
  store double %923, ptr %921, align 8, !tbaa !8
  %indvars.iv.next649.2 = add nuw nsw i64 %indvars.iv648, 3
  %924 = getelementptr inbounds double, ptr %8, i64 %indvars.iv.next649.2
  %925 = load double, ptr %924, align 8, !tbaa !8
  %926 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next649.2
  %927 = load double, ptr %926, align 8, !tbaa !8
  %928 = fadd double %925, %927
  store double %928, ptr %926, align 8, !tbaa !8
  %indvars.iv.next649.3 = add nuw nsw i64 %indvars.iv648, 4
  %exitcond652.not.3 = icmp eq i64 %indvars.iv.next649.3, %wide.trip.count646
  br i1 %exitcond652.not.3, label %.loopexit, label %.lr.ph477, !llvm.loop !157

929:                                              ; preds = %.epilog-lcssa
  %930 = getelementptr inbounds i8, ptr %0, i64 16
  %931 = load ptr, ptr %930, align 8, !tbaa !66
  %932 = load ptr, ptr %931, align 8, !tbaa !5
  %933 = getelementptr i8, ptr %932, i64 -24
  %934 = load i64, ptr %933, align 8
  %935 = getelementptr inbounds i8, ptr %931, i64 %934
  %936 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %937 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %938 = load ptr, ptr %935, align 8, !tbaa !5
  %939 = getelementptr inbounds i8, ptr %938, i64 136
  %940 = load ptr, ptr %939, align 8
  %941 = call noundef i32 %940(ptr noundef nonnull align 8 dereferenceable(12) %935, ptr noundef %936, ptr noundef %937, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %9, i32 noundef %17, double noundef 1.000000e+00, ptr noundef nonnull %11, i32 noundef %18, i32 noundef 1)
  %942 = load ptr, ptr %930, align 8, !tbaa !66
  %943 = load ptr, ptr %942, align 8, !tbaa !5
  %944 = getelementptr i8, ptr %943, i64 -24
  %945 = load i64, ptr %944, align 8
  %946 = getelementptr inbounds i8, ptr %942, i64 %945
  %947 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %948 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %24)
  %949 = load ptr, ptr %946, align 8, !tbaa !5
  %950 = getelementptr inbounds i8, ptr %949, i64 136
  %951 = load ptr, ptr %950, align 8
  %952 = call noundef i32 %951(ptr noundef nonnull align 8 dereferenceable(12) %946, ptr noundef %947, ptr noundef %948, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %8, i32 noundef %18, double noundef 1.000000e+00, ptr noundef nonnull %11, i32 noundef %18, i32 noundef 1)
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph477.prol.loopexit, %.lr.ph477, %scalar.ph909.prol.loopexit, %scalar.ph909, %middle.block882, %middle.block908, %._crit_edge473, %876, %929, %547, %354, %345, %265, %165
  %.0305 = phi i32 [ %549, %547 ], [ %267, %265 ], [ %347, %345 ], [ %356, %354 ], [ %167, %165 ], [ 0, %929 ], [ 0, %876 ], [ 0, %._crit_edge473 ], [ 0, %middle.block908 ], [ 0, %middle.block882 ], [ 0, %scalar.ph909 ], [ 0, %scalar.ph909.prol.loopexit ], [ 0, %.lr.ph477 ], [ 0, %.lr.ph477.prol.loopexit ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  ret i32 %.0305
}

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #8 = { 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"double", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !10, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !10, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!18, !12, i64 1008}
!18 = !{!"_ZTSN7qpOASES8QProblemE", !19, i64 0, !20, i64 800, !12, i64 808, !12, i64 816, !12, i64 824, !30, i64 832, !12, i64 952, !12, i64 960, !14, i64 968, !12, i64 976, !12, i64 984, !12, i64 992, !12, i64 1000, !12, i64 1008, !12, i64 1016, !12, i64 1024, !12, i64 1032, !12, i64 1040, !12, i64 1048, !12, i64 1056}
!19 = !{!"_ZTSN7qpOASES9QProblemBE", !20, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !21, i64 48, !12, i64 168, !20, i64 176, !12, i64 184, !12, i64 192, !9, i64 200, !24, i64 208, !20, i64 212, !20, i64 216, !25, i64 220, !9, i64 224, !14, i64 232, !12, i64 240, !9, i64 248, !9, i64 256, !14, i64 264, !26, i64 272, !29, i64 496, !31, i64 768}
!20 = !{!"_ZTSN7qpOASES11BooleanTypeE", !10, i64 0}
!21 = !{!"_ZTSN7qpOASES6BoundsE", !22, i64 0, !23, i64 40, !23, i64 80}
!22 = !{!"_ZTSN7qpOASES9SubjectToE", !14, i64 8, !12, i64 16, !12, i64 24, !20, i64 32, !20, i64 36}
!23 = !{!"_ZTSN7qpOASES9IndexlistE", !12, i64 0, !12, i64 8, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28, !14, i64 32}
!24 = !{!"_ZTSN7qpOASES14QProblemStatusE", !10, i64 0}
!25 = !{!"_ZTSN7qpOASES11HessianTypeE", !10, i64 0}
!26 = !{!"_ZTSN7qpOASES7OptionsE", !27, i64 0, !20, i64 4, !20, i64 8, !20, i64 12, !20, i64 16, !20, i64 20, !20, i64 24, !14, i64 28, !14, i64 32, !20, i64 36, !9, i64 40, !9, i64 48, !9, i64 56, !9, i64 64, !9, i64 72, !9, i64 80, !9, i64 88, !9, i64 96, !9, i64 104, !9, i64 112, !9, i64 120, !28, i64 128, !9, i64 136, !14, i64 144, !9, i64 152, !14, i64 160, !9, i64 168, !9, i64 176, !9, i64 184, !9, i64 192, !20, i64 200, !20, i64 204, !14, i64 208, !14, i64 212, !14, i64 216}
!27 = !{!"_ZTSN7qpOASES10PrintLevelE", !10, i64 0}
!28 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !10, i64 0}
!29 = !{!"_ZTSN7qpOASES7FlipperE", !14, i64 0, !14, i64 4, !21, i64 8, !30, i64 128, !12, i64 248, !12, i64 256, !12, i64 264}
!30 = !{!"_ZTSN7qpOASES11ConstraintsE", !22, i64 0, !23, i64 40, !23, i64 80}
!31 = !{!"_ZTSN7qpOASES13TabularOutputE", !14, i64 0, !14, i64 4, !14, i64 8, !14, i64 12, !14, i64 16, !14, i64 20, !14, i64 24, !14, i64 28}
!32 = distinct !{!32, !16}
!33 = !{!18, !12, i64 1016}
!34 = distinct !{!34, !16}
!35 = !{!19, !14, i64 432}
!36 = !{!19, !12, i64 240}
!37 = !{!18, !12, i64 1032}
!38 = !{!18, !12, i64 808}
!39 = distinct !{!39, !16}
!40 = distinct !{!40, !16}
!41 = !{!18, !12, i64 1040}
!42 = !{!19, !25, i64 220}
!43 = !{!44}
!44 = distinct !{!44, !45}
!45 = distinct !{!45, !"LVerDomain"}
!46 = !{!47}
!47 = distinct !{!47, !45}
!48 = !{!49}
!49 = distinct !{!49, !45}
!50 = !{!47, !44}
!51 = distinct !{!51, !16, !52, !53}
!52 = !{!"llvm.loop.isvectorized", i32 1}
!53 = !{!"llvm.loop.unroll.runtime.disable"}
!54 = distinct !{!54, !16, !52}
!55 = distinct !{!55, !16}
!56 = !{!57}
!57 = distinct !{!57, !58}
!58 = distinct !{!58, !"LVerDomain"}
!59 = !{!60}
!60 = distinct !{!60, !58}
!61 = distinct !{!61, !16, !52, !53}
!62 = !{!19, !9, i64 224}
!63 = distinct !{!63, !64}
!64 = !{!"llvm.loop.unroll.disable"}
!65 = distinct !{!65, !16, !52}
!66 = !{!19, !12, i64 16}
!67 = !{!68}
!68 = distinct !{!68, !69}
!69 = distinct !{!69, !"LVerDomain"}
!70 = !{!71}
!71 = distinct !{!71, !69}
!72 = !{!73}
!73 = distinct !{!73, !69}
!74 = !{!71, !68}
!75 = distinct !{!75, !16, !52, !53}
!76 = distinct !{!76, !16, !52}
!77 = distinct !{!77, !16}
!78 = !{!18, !12, i64 1024}
!79 = distinct !{!79, !16}
!80 = distinct !{!80, !16}
!81 = distinct !{!81, !16, !52, !53}
!82 = distinct !{!82, !64}
!83 = distinct !{!83, !16, !52}
!84 = !{!85}
!85 = distinct !{!85, !86}
!86 = distinct !{!86, !"LVerDomain"}
!87 = !{!88}
!88 = distinct !{!88, !86}
!89 = !{!90, !85}
!90 = distinct !{!90, !86}
!91 = distinct !{!91, !16, !52, !53}
!92 = distinct !{!92, !64}
!93 = distinct !{!93, !16, !52}
!94 = distinct !{!94, !16}
!95 = distinct !{!95, !16}
!96 = distinct !{!96, !16}
!97 = distinct !{!97, !16}
!98 = !{!18, !12, i64 1048}
!99 = distinct !{!99, !64}
!100 = !{!101}
!101 = distinct !{!101, !102}
!102 = distinct !{!102, !"LVerDomain"}
!103 = !{!104}
!104 = distinct !{!104, !102}
!105 = distinct !{!105, !16, !52, !53}
!106 = distinct !{!106, !64}
!107 = !{!108}
!108 = distinct !{!108, !109}
!109 = distinct !{!109, !"LVerDomain"}
!110 = !{!111}
!111 = distinct !{!111, !109}
!112 = distinct !{!112, !16, !52, !53}
!113 = distinct !{!113, !16, !52}
!114 = distinct !{!114, !16, !52}
!115 = distinct !{!115, !16}
!116 = distinct !{!116, !64}
!117 = distinct !{!117, !64}
!118 = !{!119}
!119 = distinct !{!119, !120}
!120 = distinct !{!120, !"LVerDomain"}
!121 = !{!122}
!122 = distinct !{!122, !120}
!123 = distinct !{!123, !16, !52, !53}
!124 = !{!125}
!125 = distinct !{!125, !126}
!126 = distinct !{!126, !"LVerDomain"}
!127 = !{!128}
!128 = distinct !{!128, !126}
!129 = !{!130, !125}
!130 = distinct !{!130, !126}
!131 = distinct !{!131, !16, !52, !53}
!132 = distinct !{!132, !16, !52}
!133 = distinct !{!133, !16, !52}
!134 = distinct !{!134, !16}
!135 = distinct !{!135, !16}
!136 = distinct !{!136, !16}
!137 = !{!19, !9, i64 440}
!138 = distinct !{!138, !16}
!139 = distinct !{!139, !16}
!140 = distinct !{!140, !64}
!141 = distinct !{!141, !64}
!142 = !{!143}
!143 = distinct !{!143, !144}
!144 = distinct !{!144, !"LVerDomain"}
!145 = !{!146}
!146 = distinct !{!146, !144}
!147 = distinct !{!147, !16, !52, !53}
!148 = !{!149}
!149 = distinct !{!149, !150}
!150 = distinct !{!150, !"LVerDomain"}
!151 = !{!152}
!152 = distinct !{!152, !150}
!153 = !{!154, !149}
!154 = distinct !{!154, !150}
!155 = distinct !{!155, !16, !52, !53}
!156 = distinct !{!156, !16, !52}
!157 = distinct !{!157, !16, !52}


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