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

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

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

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.start.p0(i64 immarg, ptr nocapture) #2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES9SQProblem19setupNewAuxiliaryQPEPNS_15SymmetricMatrixEPNS_6MatrixEPKdS6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %"class.qpOASES::Bounds", align 8
  %22 = alloca %"class.qpOASES::Constraints", align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  %30 = load ptr, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %31 = call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %30)
  store i32 %31, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %32 = call noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064) %30)
  store i32 %32, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %33 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %30)
  %34 = icmp eq i32 %33, 0
  br i1 %34, label %41, label %35

35:                                               ; preds = %7
  %36 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %30)
  %37 = icmp eq i32 %36, 1
  br i1 %37, label %41, label %38

38:                                               ; preds = %35
  %39 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %30)
  %40 = icmp eq i32 %39, 3
  br i1 %40, label %41, label %44

41:                                               ; preds = %38, %35, %7
  %42 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %43 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %42, i32 noundef 126, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 353, i32 noundef 1)
  store i32 %43, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %506

44:                                               ; preds = %38
  %45 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 12
  store i32 1, ptr %45, align 8, !tbaa !11
  %46 = load i32, ptr %18, align 4, !tbaa !9
  %47 = icmp sgt i32 %46, 0
  br i1 %47, label %48, label %169

48:                                               ; preds = %44
  %49 = load ptr, ptr %11, align 8, !tbaa !5
  %50 = icmp eq ptr %49, null
  br i1 %50, label %51, label %54

51:                                               ; preds = %48
  %52 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %53 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %52, i32 noundef 3, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 366, i32 noundef 1)
  store i32 %53, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %506

54:                                               ; preds = %48
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %55

55:                                               ; preds = %83, %54
  %56 = load i32, ptr %16, align 4, !tbaa !9
  %57 = load i32, ptr %18, align 4, !tbaa !9
  %58 = icmp slt i32 %56, %57
  br i1 %58, label %59, label %86

59:                                               ; preds = %55
  %60 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 10
  %61 = load ptr, ptr %60, align 8, !tbaa !26
  %62 = load i32, ptr %16, align 4, !tbaa !9
  %63 = sext i32 %62 to i64
  %64 = getelementptr inbounds double, ptr %61, i64 %63
  %65 = load double, ptr %64, align 8, !tbaa !28
  %66 = fneg double %65
  %67 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 3
  %68 = load ptr, ptr %67, align 8, !tbaa !29
  %69 = load i32, ptr %16, align 4, !tbaa !9
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds double, ptr %68, i64 %70
  store double %66, ptr %71, align 8, !tbaa !28
  %72 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 11
  %73 = load ptr, ptr %72, align 8, !tbaa !30
  %74 = load i32, ptr %16, align 4, !tbaa !9
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds double, ptr %73, i64 %75
  %77 = load double, ptr %76, align 8, !tbaa !28
  %78 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 4
  %79 = load ptr, ptr %78, align 8, !tbaa !31
  %80 = load i32, ptr %16, align 4, !tbaa !9
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds double, ptr %79, i64 %81
  store double %77, ptr %82, align 8, !tbaa !28
  br label %83

83:                                               ; preds = %59
  %84 = load i32, ptr %16, align 4, !tbaa !9
  %85 = add nsw i32 %84, 1
  store i32 %85, ptr %16, align 4, !tbaa !9
  br label %55, !llvm.loop !32

86:                                               ; preds = %55
  %87 = load ptr, ptr %11, align 8, !tbaa !5
  %88 = call noundef i32 @_ZN7qpOASES8QProblem4setAEPNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(1064) %30, ptr noundef %87)
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %89

89:                                               ; preds = %120, %86
  %90 = load i32, ptr %16, align 4, !tbaa !9
  %91 = load i32, ptr %18, align 4, !tbaa !9
  %92 = icmp slt i32 %90, %91
  br i1 %92, label %93, label %123

93:                                               ; preds = %89
  %94 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 9
  %95 = load ptr, ptr %94, align 8, !tbaa !34
  %96 = load i32, ptr %16, align 4, !tbaa !9
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds double, ptr %95, i64 %97
  %99 = load double, ptr %98, align 8, !tbaa !28
  %100 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 3
  %101 = load ptr, ptr %100, align 8, !tbaa !29
  %102 = load i32, ptr %16, align 4, !tbaa !9
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds double, ptr %101, i64 %103
  %105 = load double, ptr %104, align 8, !tbaa !28
  %106 = fadd double %105, %99
  store double %106, ptr %104, align 8, !tbaa !28
  %107 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 9
  %108 = load ptr, ptr %107, align 8, !tbaa !34
  %109 = load i32, ptr %16, align 4, !tbaa !9
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds double, ptr %108, i64 %110
  %112 = load double, ptr %111, align 8, !tbaa !28
  %113 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 4
  %114 = load ptr, ptr %113, align 8, !tbaa !31
  %115 = load i32, ptr %16, align 4, !tbaa !9
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds double, ptr %114, i64 %116
  %118 = load double, ptr %117, align 8, !tbaa !28
  %119 = fadd double %118, %112
  store double %119, ptr %117, align 8, !tbaa !28
  br label %120

120:                                              ; preds = %93
  %121 = load i32, ptr %16, align 4, !tbaa !9
  %122 = add nsw i32 %121, 1
  store i32 %122, ptr %16, align 4, !tbaa !9
  br label %89, !llvm.loop !35

123:                                              ; preds = %89
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %124

124:                                              ; preds = %165, %123
  %125 = load i32, ptr %16, align 4, !tbaa !9
  %126 = load i32, ptr %18, align 4, !tbaa !9
  %127 = icmp slt i32 %125, %126
  br i1 %127, label %128, label %168

128:                                              ; preds = %124
  %129 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 4
  %130 = load ptr, ptr %129, align 8, !tbaa !31
  %131 = load i32, ptr %16, align 4, !tbaa !9
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds double, ptr %130, i64 %132
  %134 = load double, ptr %133, align 8, !tbaa !28
  %135 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 9
  %136 = load ptr, ptr %135, align 8, !tbaa !34
  %137 = load i32, ptr %16, align 4, !tbaa !9
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds double, ptr %136, i64 %138
  %140 = load double, ptr %139, align 8, !tbaa !28
  %141 = fsub double %134, %140
  %142 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 11
  %143 = load ptr, ptr %142, align 8, !tbaa !30
  %144 = load i32, ptr %16, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %143, i64 %145
  store double %141, ptr %146, align 8, !tbaa !28
  %147 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 9
  %148 = load ptr, ptr %147, align 8, !tbaa !34
  %149 = load i32, ptr %16, align 4, !tbaa !9
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds double, ptr %148, i64 %150
  %152 = load double, ptr %151, align 8, !tbaa !28
  %153 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 3
  %154 = load ptr, ptr %153, align 8, !tbaa !29
  %155 = load i32, ptr %16, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds double, ptr %154, i64 %156
  %158 = load double, ptr %157, align 8, !tbaa !28
  %159 = fsub double %152, %158
  %160 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 10
  %161 = load ptr, ptr %160, align 8, !tbaa !26
  %162 = load i32, ptr %16, align 4, !tbaa !9
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds double, ptr %161, i64 %163
  store double %159, ptr %164, align 8, !tbaa !28
  br label %165

165:                                              ; preds = %128
  %166 = load i32, ptr %16, align 4, !tbaa !9
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr %16, align 4, !tbaa !9
  br label %124, !llvm.loop !36

168:                                              ; preds = %124
  br label %169

169:                                              ; preds = %168, %44
  %170 = load ptr, ptr %10, align 8, !tbaa !5
  %171 = icmp ne ptr %170, null
  br i1 %171, label %172, label %201

172:                                              ; preds = %169
  %173 = load ptr, ptr %10, align 8, !tbaa !5
  %174 = call noundef i32 @_ZN7qpOASES9QProblemB4setHEPNS_15SymmetricMatrixE(ptr noundef nonnull align 8 dereferenceable(800) %30, ptr noundef %173)
  %175 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 15
  store i32 6, ptr %175, align 4, !tbaa !37
  %176 = call noundef i32 @_ZN7qpOASES9QProblemB20determineHessianTypeEv(ptr noundef nonnull align 8 dereferenceable(800) %30)
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %178, label %181

178:                                              ; preds = %172
  %179 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %180 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %179, i32 noundef 43, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 401, i32 noundef 1)
  store i32 %180, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %506

181:                                              ; preds = %172
  %182 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 15
  %183 = load i32, ptr %182, align 4, !tbaa !37
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %192, label %185

185:                                              ; preds = %181
  %186 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 15
  %187 = load i32, ptr %186, align 4, !tbaa !37
  %188 = icmp eq i32 %187, 4
  br i1 %188, label %192, label %189

189:                                              ; preds = %185
  %190 = call noundef i32 @_ZNK7qpOASES9QProblemB19usingRegularisationEv(ptr noundef nonnull align 8 dereferenceable(800) %30)
  %191 = icmp eq i32 %190, 1
  br i1 %191, label %192, label %200

192:                                              ; preds = %189, %185, %181
  %193 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 16
  store double 0.000000e+00, ptr %193, align 8, !tbaa !38
  %194 = call noundef i32 @_ZN7qpOASES9QProblemB17regulariseHessianEv(ptr noundef nonnull align 8 dereferenceable(800) %30)
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %196, label %199

196:                                              ; preds = %192
  %197 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %198 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %197, i32 noundef 43, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 411, i32 noundef 1)
  store i32 %198, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %506

199:                                              ; preds = %192
  br label %200

200:                                              ; preds = %199, %189
  br label %209

201:                                              ; preds = %169
  %202 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 2
  %203 = load ptr, ptr %202, align 8, !tbaa !39
  %204 = icmp ne ptr %203, null
  br i1 %204, label %205, label %208

205:                                              ; preds = %201
  %206 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %207 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %206, i32 noundef 109, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 419, i32 noundef 1)
  store i32 %207, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %506

208:                                              ; preds = %201
  br label %209

209:                                              ; preds = %208, %200
  %210 = call noundef i32 @_ZN7qpOASES8QProblem24setupAuxiliaryQPgradientEv(ptr noundef nonnull align 8 dereferenceable(1064) %30)
  %211 = icmp ne i32 %210, 0
  br i1 %211, label %212, label %215

212:                                              ; preds = %209
  %213 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %214 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %213, i32 noundef 43, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 424, i32 noundef 1)
  store i32 %214, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %506

215:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 120, ptr %21) #6
  %216 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 6
  call void @_ZN7qpOASES6BoundsC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120) %21, ptr noundef nonnull align 8 dereferenceable(120) %216)
  call void @llvm.lifetime.start.p0(i64 120, ptr %22) #6
  %217 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 5
  invoke void @_ZN7qpOASES11ConstraintsC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120) %22, ptr noundef nonnull align 8 dereferenceable(120) %217)
          to label %218 unwind label %231

218:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %464, %218
  %220 = load i32, ptr %25, align 4, !tbaa !9
  %221 = icmp slt i32 %220, 2
  br i1 %221, label %222, label %467

222:                                              ; preds = %219
  %223 = load i32, ptr %25, align 4, !tbaa !9
  %224 = icmp sgt i32 %223, 0
  br i1 %224, label %225, label %256

225:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %226

226:                                              ; preds = %252, %225
  %227 = load i32, ptr %26, align 4, !tbaa !9
  %228 = load i32, ptr %17, align 4, !tbaa !9
  %229 = icmp slt i32 %227, %228
  br i1 %229, label %235, label %230

230:                                              ; preds = %226
  store i32 14, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %255

231:                                              ; preds = %215
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %23, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %24, align 4
  br label %505

235:                                              ; preds = %226
  %236 = load i32, ptr %26, align 4, !tbaa !9
  %237 = invoke noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %21, i32 noundef %236)
          to label %238 unwind label %247

238:                                              ; preds = %235
  %239 = icmp eq i32 %237, 0
  br i1 %239, label %240, label %251

240:                                              ; preds = %238
  %241 = load i32, ptr %26, align 4, !tbaa !9
  %242 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 23
  %243 = getelementptr inbounds %"class.qpOASES::Options", ptr %242, i32 0, i32 21
  %244 = load i32, ptr %243, align 8, !tbaa !40
  %245 = invoke noundef i32 @_ZN7qpOASES9SubjectTo9setStatusEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(40) %21, i32 noundef %241, i32 noundef %244)
          to label %246 unwind label %247

246:                                              ; preds = %240
  br label %251

247:                                              ; preds = %240, %235
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %23, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %504

251:                                              ; preds = %246, %238
  br label %252

252:                                              ; preds = %251
  %253 = load i32, ptr %26, align 4, !tbaa !9
  %254 = add nsw i32 %253, 1
  store i32 %254, ptr %26, align 4, !tbaa !9
  br label %226, !llvm.loop !41

255:                                              ; preds = %230
  br label %256

256:                                              ; preds = %255, %222
  %257 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 6
  %258 = load i32, ptr %17, align 4, !tbaa !9
  %259 = invoke noundef i32 @_ZN7qpOASES6Bounds4initEi(ptr noundef nonnull align 8 dereferenceable(120) %257, i32 noundef %258)
          to label %260 unwind label %280

260:                                              ; preds = %256
  %261 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 5
  %262 = load i32, ptr %18, align 4, !tbaa !9
  %263 = invoke noundef i32 @_ZN7qpOASES11Constraints4initEi(ptr noundef nonnull align 8 dereferenceable(120) %261, i32 noundef %262)
          to label %264 unwind label %280

264:                                              ; preds = %260
  %265 = load ptr, ptr %12, align 8, !tbaa !5
  %266 = load ptr, ptr %13, align 8, !tbaa !5
  %267 = load ptr, ptr %14, align 8, !tbaa !5
  %268 = load ptr, ptr %15, align 8, !tbaa !5
  %269 = load ptr, ptr %30, align 8, !tbaa !42
  %270 = getelementptr inbounds ptr, ptr %269, i64 21
  %271 = load ptr, ptr %270, align 8
  %272 = invoke noundef i32 %271(ptr noundef nonnull align 8 dereferenceable(1064) %30, ptr noundef %265, ptr noundef %266, ptr noundef %267, ptr noundef %268)
          to label %273 unwind label %280

273:                                              ; preds = %264
  %274 = icmp ne i32 %272, 0
  br i1 %274, label %275, label %284

275:                                              ; preds = %273
  %276 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %277 unwind label %280

277:                                              ; preds = %275
  %278 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %276, i32 noundef 43, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 456, i32 noundef 1)
          to label %279 unwind label %280

279:                                              ; preds = %277
  store i32 %278, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %503

280:                                              ; preds = %496, %454, %451, %449, %442, %313, %311, %304, %301, %299, %294, %291, %289, %284, %277, %275, %264, %260, %256
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %23, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %24, align 4
  br label %504

284:                                              ; preds = %273
  %285 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 6
  %286 = invoke noundef i32 @_ZN7qpOASES6Bounds12setupAllFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %285)
          to label %287 unwind label %280

287:                                              ; preds = %284
  %288 = icmp ne i32 %286, 0
  br i1 %288, label %289, label %294

289:                                              ; preds = %287
  %290 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %291 unwind label %280

291:                                              ; preds = %289
  %292 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %290, i32 noundef 43, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 459, i32 noundef 1)
          to label %293 unwind label %280

293:                                              ; preds = %291
  store i32 %292, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %503

294:                                              ; preds = %287
  %295 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 5
  %296 = invoke noundef i32 @_ZN7qpOASES11Constraints16setupAllInactiveEv(ptr noundef nonnull align 8 dereferenceable(120) %295)
          to label %297 unwind label %280

297:                                              ; preds = %294
  %298 = icmp ne i32 %296, 0
  br i1 %298, label %299, label %304

299:                                              ; preds = %297
  %300 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %301 unwind label %280

301:                                              ; preds = %299
  %302 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %300, i32 noundef 43, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 462, i32 noundef 1)
          to label %303 unwind label %280

303:                                              ; preds = %301
  store i32 %302, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %503

304:                                              ; preds = %297
  %305 = load ptr, ptr %30, align 8, !tbaa !42
  %306 = getelementptr inbounds ptr, ptr %305, i64 23
  %307 = load ptr, ptr %306, align 8
  %308 = invoke noundef i32 %307(ptr noundef nonnull align 8 dereferenceable(1064) %30)
          to label %309 unwind label %280

309:                                              ; preds = %304
  %310 = icmp ne i32 %308, 0
  br i1 %310, label %311, label %316

311:                                              ; preds = %309
  %312 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %313 unwind label %280

313:                                              ; preds = %311
  %314 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %312, i32 noundef 43, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 466, i32 noundef 1)
          to label %315 unwind label %280

315:                                              ; preds = %313
  store i32 %314, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %503

316:                                              ; preds = %309
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store i32 0, ptr %27, align 4, !tbaa !9
  br label %317

317:                                              ; preds = %378, %316
  %318 = load i32, ptr %27, align 4, !tbaa !9
  %319 = load i32, ptr %18, align 4, !tbaa !9
  %320 = icmp slt i32 %318, %319
  br i1 %320, label %322, label %321

321:                                              ; preds = %317
  store i32 17, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %381

322:                                              ; preds = %317
  %323 = load i32, ptr %27, align 4, !tbaa !9
  %324 = invoke noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %22, i32 noundef %323)
          to label %325 unwind label %352

325:                                              ; preds = %322
  %326 = icmp eq i32 %324, 2
  br i1 %326, label %327, label %377

327:                                              ; preds = %325
  %328 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 5
  %329 = load i32, ptr %27, align 4, !tbaa !9
  %330 = invoke noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %328, i32 noundef %329)
          to label %331 unwind label %352

331:                                              ; preds = %327
  %332 = icmp eq i32 %330, 1
  br i1 %332, label %333, label %377

333:                                              ; preds = %331
  %334 = load i32, ptr %27, align 4, !tbaa !9
  %335 = invoke noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %22, i32 noundef %334)
          to label %336 unwind label %352

336:                                              ; preds = %333
  %337 = icmp eq i32 %335, -1
  br i1 %337, label %338, label %356

338:                                              ; preds = %336
  %339 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 10
  %340 = load ptr, ptr %339, align 8, !tbaa !44
  %341 = load i32, ptr %17, align 4, !tbaa !9
  %342 = load i32, ptr %27, align 4, !tbaa !9
  %343 = add nsw i32 %341, %342
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds double, ptr %340, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !28
  %347 = fcmp olt double %346, 0.000000e+00
  br i1 %347, label %348, label %356

348:                                              ; preds = %338
  %349 = load i32, ptr %27, align 4, !tbaa !9
  %350 = invoke noundef i32 @_ZN7qpOASES9SubjectTo9setStatusEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(40) %22, i32 noundef %349, i32 noundef 1)
          to label %351 unwind label %352

351:                                              ; preds = %348
  br label %376

352:                                              ; preds = %371, %356, %348, %333, %327, %322
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %23, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %504

356:                                              ; preds = %338, %336
  %357 = load i32, ptr %27, align 4, !tbaa !9
  %358 = invoke noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %22, i32 noundef %357)
          to label %359 unwind label %352

359:                                              ; preds = %356
  %360 = icmp eq i32 %358, 1
  br i1 %360, label %361, label %375

361:                                              ; preds = %359
  %362 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 10
  %363 = load ptr, ptr %362, align 8, !tbaa !44
  %364 = load i32, ptr %17, align 4, !tbaa !9
  %365 = load i32, ptr %27, align 4, !tbaa !9
  %366 = add nsw i32 %364, %365
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds double, ptr %363, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !28
  %370 = fcmp ogt double %369, 0.000000e+00
  br i1 %370, label %371, label %375

371:                                              ; preds = %361
  %372 = load i32, ptr %27, align 4, !tbaa !9
  %373 = invoke noundef i32 @_ZN7qpOASES9SubjectTo9setStatusEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(40) %22, i32 noundef %372, i32 noundef -1)
          to label %374 unwind label %352

374:                                              ; preds = %371
  br label %375

375:                                              ; preds = %374, %361, %359
  br label %376

376:                                              ; preds = %375, %351
  br label %377

377:                                              ; preds = %376, %331, %325
  br label %378

378:                                              ; preds = %377
  %379 = load i32, ptr %27, align 4, !tbaa !9
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr %27, align 4, !tbaa !9
  br label %317, !llvm.loop !45

381:                                              ; preds = %321
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %382

382:                                              ; preds = %439, %381
  %383 = load i32, ptr %28, align 4, !tbaa !9
  %384 = load i32, ptr %17, align 4, !tbaa !9
  %385 = icmp slt i32 %383, %384
  br i1 %385, label %387, label %386

386:                                              ; preds = %382
  store i32 20, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %442

387:                                              ; preds = %382
  %388 = load i32, ptr %28, align 4, !tbaa !9
  %389 = invoke noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %21, i32 noundef %388)
          to label %390 unwind label %415

390:                                              ; preds = %387
  %391 = icmp eq i32 %389, 2
  br i1 %391, label %392, label %438

392:                                              ; preds = %390
  %393 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 6
  %394 = load i32, ptr %28, align 4, !tbaa !9
  %395 = invoke noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %393, i32 noundef %394)
          to label %396 unwind label %415

396:                                              ; preds = %392
  %397 = icmp eq i32 %395, 1
  br i1 %397, label %398, label %438

398:                                              ; preds = %396
  %399 = load i32, ptr %28, align 4, !tbaa !9
  %400 = invoke noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %21, i32 noundef %399)
          to label %401 unwind label %415

401:                                              ; preds = %398
  %402 = icmp eq i32 %400, -1
  br i1 %402, label %403, label %419

403:                                              ; preds = %401
  %404 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 10
  %405 = load ptr, ptr %404, align 8, !tbaa !44
  %406 = load i32, ptr %28, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %405, i64 %407
  %409 = load double, ptr %408, align 8, !tbaa !28
  %410 = fcmp olt double %409, 0.000000e+00
  br i1 %410, label %411, label %419

411:                                              ; preds = %403
  %412 = load i32, ptr %28, align 4, !tbaa !9
  %413 = invoke noundef i32 @_ZN7qpOASES9SubjectTo9setStatusEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(40) %21, i32 noundef %412, i32 noundef 1)
          to label %414 unwind label %415

414:                                              ; preds = %411
  br label %437

415:                                              ; preds = %432, %419, %411, %398, %392, %387
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %23, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  br label %504

419:                                              ; preds = %403, %401
  %420 = load i32, ptr %28, align 4, !tbaa !9
  %421 = invoke noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %21, i32 noundef %420)
          to label %422 unwind label %415

422:                                              ; preds = %419
  %423 = icmp eq i32 %421, 1
  br i1 %423, label %424, label %436

424:                                              ; preds = %422
  %425 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 10
  %426 = load ptr, ptr %425, align 8, !tbaa !44
  %427 = load i32, ptr %28, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %426, i64 %428
  %430 = load double, ptr %429, align 8, !tbaa !28
  %431 = fcmp ogt double %430, 0.000000e+00
  br i1 %431, label %432, label %436

432:                                              ; preds = %424
  %433 = load i32, ptr %28, align 4, !tbaa !9
  %434 = invoke noundef i32 @_ZN7qpOASES9SubjectTo9setStatusEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(40) %21, i32 noundef %433, i32 noundef -1)
          to label %435 unwind label %415

435:                                              ; preds = %432
  br label %436

436:                                              ; preds = %435, %424, %422
  br label %437

437:                                              ; preds = %436, %414
  br label %438

438:                                              ; preds = %437, %396, %390
  br label %439

439:                                              ; preds = %438
  %440 = load i32, ptr %28, align 4, !tbaa !9
  %441 = add nsw i32 %440, 1
  store i32 %441, ptr %28, align 4, !tbaa !9
  br label %382, !llvm.loop !46

442:                                              ; preds = %386
  %443 = load ptr, ptr %30, align 8, !tbaa !42
  %444 = getelementptr inbounds ptr, ptr %443, i64 24
  %445 = load ptr, ptr %444, align 8
  %446 = invoke noundef i32 %445(ptr noundef nonnull align 8 dereferenceable(1064) %30, ptr noundef %21, ptr noundef %22, i32 noundef 1)
          to label %447 unwind label %280

447:                                              ; preds = %442
  %448 = icmp ne i32 %446, 0
  br i1 %448, label %449, label %454

449:                                              ; preds = %447
  %450 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %451 unwind label %280

451:                                              ; preds = %449
  %452 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %450, i32 noundef 43, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 491, i32 noundef 1)
          to label %453 unwind label %280

453:                                              ; preds = %451
  store i32 %452, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %503

454:                                              ; preds = %447
  %455 = load ptr, ptr %30, align 8, !tbaa !42
  %456 = getelementptr inbounds ptr, ptr %455, i64 22
  %457 = load ptr, ptr %456, align 8
  %458 = invoke noundef i32 %457(ptr noundef nonnull align 8 dereferenceable(1064) %30)
          to label %459 unwind label %280

459:                                              ; preds = %454
  store i32 %458, ptr %19, align 4, !tbaa !47
  %460 = load i32, ptr %19, align 4, !tbaa !47
  %461 = icmp eq i32 %460, 0
  br i1 %461, label %462, label %463

462:                                              ; preds = %459
  br label %467

463:                                              ; preds = %459
  br label %464

464:                                              ; preds = %463
  %465 = load i32, ptr %25, align 4, !tbaa !9
  %466 = add nsw i32 %465, 1
  store i32 %466, ptr %25, align 4, !tbaa !9
  br label %219, !llvm.loop !49

467:                                              ; preds = %462, %219
  %468 = load i32, ptr %25, align 4, !tbaa !9
  %469 = icmp sgt i32 %468, 0
  br i1 %469, label %470, label %501

470:                                              ; preds = %467
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %471

471:                                              ; preds = %493, %470
  %472 = load i32, ptr %29, align 4, !tbaa !9
  %473 = load i32, ptr %18, align 4, !tbaa !9
  %474 = icmp slt i32 %472, %473
  br i1 %474, label %476, label %475

475:                                              ; preds = %471
  store i32 23, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %496

476:                                              ; preds = %471
  %477 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 9
  %478 = load ptr, ptr %477, align 8, !tbaa !34
  %479 = load i32, ptr %29, align 4, !tbaa !9
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds double, ptr %478, i64 %480
  %482 = load double, ptr %481, align 8, !tbaa !28
  %483 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 11
  %484 = load ptr, ptr %483, align 8, !tbaa !30
  %485 = load i32, ptr %29, align 4, !tbaa !9
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %484, i64 %486
  store double %482, ptr %487, align 8, !tbaa !28
  %488 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 10
  %489 = load ptr, ptr %488, align 8, !tbaa !26
  %490 = load i32, ptr %29, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %489, i64 %491
  store double %482, ptr %492, align 8, !tbaa !28
  br label %493

493:                                              ; preds = %476
  %494 = load i32, ptr %29, align 4, !tbaa !9
  %495 = add nsw i32 %494, 1
  store i32 %495, ptr %29, align 4, !tbaa !9
  br label %471, !llvm.loop !50

496:                                              ; preds = %475
  %497 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 6
  %498 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %30, i32 0, i32 5
  %499 = invoke noundef i32 @_ZN7qpOASES8QProblem22setupAuxiliaryQPboundsEPKNS_6BoundsEPKNS_11ConstraintsENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1064) %30, ptr noundef %497, ptr noundef %498, i32 noundef 0)
          to label %500 unwind label %280

500:                                              ; preds = %496
  br label %501

501:                                              ; preds = %500, %467
  %502 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %30, i32 0, i32 12
  store i32 2, ptr %502, align 8, !tbaa !11
  store i32 0, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %503

503:                                              ; preds = %501, %453, %315, %303, %293, %279
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @_ZN7qpOASES11ConstraintsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %22) #6
  call void @llvm.lifetime.end.p0(i64 120, ptr %22) #6
  call void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %21) #6
  call void @llvm.lifetime.end.p0(i64 120, ptr %21) #6
  br label %506

504:                                              ; preds = %415, %352, %280, %247
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @_ZN7qpOASES11ConstraintsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %22) #6
  br label %505

505:                                              ; preds = %504, %231
  call void @llvm.lifetime.end.p0(i64 120, ptr %22) #6
  call void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %21) #6
  call void @llvm.lifetime.end.p0(i64 120, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %508

506:                                              ; preds = %503, %212, %205, %196, %178, %51, %41
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  %507 = load i32, ptr %8, align 4
  ret i32 %507

508:                                              ; preds = %505
  %509 = load ptr, ptr %23, align 8
  %510 = load i32, ptr %24, align 4
  %511 = insertvalue { ptr, i32 } poison, ptr %509, 0
  %512 = insertvalue { ptr, i32 } %511, i32 %510, 1
  resume { ptr, i32 } %512
}

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

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

declare noundef i32 @_ZN7qpOASES9QProblemB20determineHessianTypeEv(ptr noundef nonnull align 8 dereferenceable(800)) #1

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

declare noundef i32 @_ZN7qpOASES9QProblemB17regulariseHessianEv(ptr noundef nonnull align 8 dereferenceable(800)) #1

declare noundef i32 @_ZN7qpOASES8QProblem24setupAuxiliaryQPgradientEv(ptr noundef nonnull align 8 dereferenceable(1064)) #1

declare void @_ZN7qpOASES6BoundsC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #1

declare void @_ZN7qpOASES11ConstraintsC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

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

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

declare noundef i32 @_ZN7qpOASES6Bounds4initEi(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) #1

declare noundef i32 @_ZN7qpOASES11Constraints4initEi(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) #1

declare noundef i32 @_ZN7qpOASES6Bounds12setupAllFreeEv(ptr noundef nonnull align 8 dereferenceable(120)) #1

declare noundef i32 @_ZN7qpOASES11Constraints16setupAllInactiveEv(ptr noundef nonnull align 8 dereferenceable(120)) #1

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

declare noundef i32 @_ZN7qpOASES8QProblem22setupAuxiliaryQPboundsEPKNS_6BoundsEPKNS_11ConstraintsENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1064), ptr noundef, ptr noundef, i32 noundef) #1

; Function Attrs: nounwind
declare void @_ZN7qpOASES11ConstraintsD1Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #5

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

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

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


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

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

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

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

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.start.p0(i64 immarg, ptr nocapture) #2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES9SQProblem19setupNewAuxiliaryQPEPNS_15SymmetricMatrixEPNS_6MatrixEPKdS6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6) unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"class.qpOASES::Bounds", align 8
  %9 = alloca %"class.qpOASES::Constraints", align 8
  %10 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %11 = tail call noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %12 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %13 = icmp eq i32 %12, 0
  br i1 %13, label %20, label %14

14:                                               ; preds = %7
  %15 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %16 = icmp eq i32 %15, 1
  br i1 %16, label %20, label %17

17:                                               ; preds = %14
  %18 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %19 = icmp eq i32 %18, 3
  br i1 %19, label %20, label %23

20:                                               ; preds = %17, %14, %7
  %21 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %22 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %21, i32 noundef 126, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 353, i32 noundef 1)
  br label %454

23:                                               ; preds = %17
  %24 = getelementptr inbounds i8, ptr %0, i64 208
  store i32 1, ptr %24, align 8, !tbaa !5
  %25 = icmp sgt i32 %11, 0
  br i1 %25, label %26, label %.loopexit110

26:                                               ; preds = %23
  %27 = icmp eq ptr %2, null
  br i1 %27, label %65, label %.lr.ph

.lr.ph:                                           ; preds = %26
  %28 = getelementptr inbounds i8, ptr %0, i64 984
  %29 = load ptr, ptr %28, align 8, !tbaa !24
  %30 = getelementptr inbounds i8, ptr %0, i64 816
  %31 = load ptr, ptr %30, align 8, !tbaa !26
  %32 = getelementptr inbounds i8, ptr %0, i64 992
  %33 = load ptr, ptr %32, align 8, !tbaa !27
  %34 = getelementptr inbounds i8, ptr %0, i64 824
  %35 = load ptr, ptr %34, align 8, !tbaa !28
  %wide.trip.count = zext nneg i32 %11 to i64
  %min.iters.check = icmp ult i32 %11, 20
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph ], [ %n.vec, %middle.block ]
  %xtraiter = and i64 %wide.trip.count, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %36 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.ph
  %37 = load double, ptr %36, align 8, !tbaa !29
  %38 = fneg double %37
  %39 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.ph
  store double %38, ptr %39, align 8, !tbaa !29
  %40 = getelementptr inbounds double, ptr %33, i64 %indvars.iv.ph
  %41 = load double, ptr %40, align 8, !tbaa !29
  %42 = getelementptr inbounds double, ptr %35, i64 %indvars.iv.ph
  store double %41, ptr %42, align 8, !tbaa !29
  %indvars.iv.next.prol = or disjoint i64 %indvars.iv.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph.preheader ], [ %indvars.iv.next.prol, %scalar.ph.prol ]
  %43 = add nsw i64 %wide.trip.count, -1
  %44 = icmp eq i64 %indvars.iv.ph, %43
  br i1 %44, label %.lr.ph124, label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph
  %45 = ptrtoint ptr %35 to i64
  %46 = ptrtoint ptr %33 to i64
  %47 = ptrtoint ptr %31 to i64
  %48 = ptrtoint ptr %29 to i64
  %49 = sub i64 %45, %47
  %diff.check = icmp ult i64 %49, 32
  %50 = sub i64 %47, %48
  %diff.check192 = icmp ult i64 %50, 32
  %conflict.rdx = or i1 %diff.check, %diff.check192
  %51 = sub i64 %46, %47
  %diff.check193 = icmp ult i64 %51, 32
  %conflict.rdx194 = or i1 %conflict.rdx, %diff.check193
  %52 = sub i64 %45, %48
  %diff.check195 = icmp ult i64 %52, 32
  %conflict.rdx196 = or i1 %conflict.rdx194, %diff.check195
  %53 = sub i64 %45, %46
  %diff.check197 = icmp ult i64 %53, 32
  %conflict.rdx198 = or i1 %conflict.rdx196, %diff.check197
  br i1 %conflict.rdx198, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %wide.trip.count, 2147483644
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %54 = getelementptr inbounds double, ptr %29, i64 %index
  %55 = getelementptr inbounds i8, ptr %54, i64 16
  %wide.load = load <2 x double>, ptr %54, align 8, !tbaa !29
  %wide.load199 = load <2 x double>, ptr %55, align 8, !tbaa !29
  %56 = fneg <2 x double> %wide.load
  %57 = fneg <2 x double> %wide.load199
  %58 = getelementptr inbounds double, ptr %31, i64 %index
  %59 = getelementptr inbounds i8, ptr %58, i64 16
  store <2 x double> %56, ptr %58, align 8, !tbaa !29
  store <2 x double> %57, ptr %59, align 8, !tbaa !29
  %60 = getelementptr inbounds double, ptr %33, i64 %index
  %61 = getelementptr inbounds i8, ptr %60, i64 16
  %wide.load200 = load <2 x double>, ptr %60, align 8, !tbaa !29
  %wide.load201 = load <2 x double>, ptr %61, align 8, !tbaa !29
  %62 = getelementptr inbounds double, ptr %35, i64 %index
  %63 = getelementptr inbounds i8, ptr %62, i64 16
  store <2 x double> %wide.load200, ptr %62, align 8, !tbaa !29
  store <2 x double> %wide.load201, ptr %63, align 8, !tbaa !29
  %index.next = add nuw i64 %index, 4
  %64 = icmp eq i64 %index.next, %n.vec
  br i1 %64, label %middle.block, label %vector.body, !llvm.loop !30

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

65:                                               ; preds = %26
  %66 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %67 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %66, i32 noundef 3, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 366, i32 noundef 1)
  br label %454

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %68 = getelementptr inbounds double, ptr %29, i64 %indvars.iv
  %69 = load double, ptr %68, align 8, !tbaa !29
  %70 = fneg double %69
  %71 = getelementptr inbounds double, ptr %31, i64 %indvars.iv
  store double %70, ptr %71, align 8, !tbaa !29
  %72 = getelementptr inbounds double, ptr %33, i64 %indvars.iv
  %73 = load double, ptr %72, align 8, !tbaa !29
  %74 = getelementptr inbounds double, ptr %35, i64 %indvars.iv
  store double %73, ptr %74, align 8, !tbaa !29
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %75 = getelementptr inbounds double, ptr %29, i64 %indvars.iv.next
  %76 = load double, ptr %75, align 8, !tbaa !29
  %77 = fneg double %76
  %78 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next
  store double %77, ptr %78, align 8, !tbaa !29
  %79 = getelementptr inbounds double, ptr %33, i64 %indvars.iv.next
  %80 = load double, ptr %79, align 8, !tbaa !29
  %81 = getelementptr inbounds double, ptr %35, i64 %indvars.iv.next
  store double %80, ptr %81, align 8, !tbaa !29
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %wide.trip.count
  br i1 %exitcond.not.1, label %.lr.ph124, label %scalar.ph, !llvm.loop !34

.lr.ph124:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %82 = tail call noundef i32 @_ZN7qpOASES8QProblem4setAEPNS_6MatrixE(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef nonnull %2)
  %83 = getelementptr inbounds i8, ptr %0, i64 976
  %84 = load ptr, ptr %83, align 8, !tbaa !35
  %85 = getelementptr inbounds i8, ptr %0, i64 816
  %86 = load ptr, ptr %85, align 8, !tbaa !26
  %87 = getelementptr inbounds i8, ptr %0, i64 824
  %88 = load ptr, ptr %87, align 8, !tbaa !28
  %smax = tail call i32 @llvm.smax.i32(i32 %11, i32 1)
  %wide.trip.count144 = zext nneg i32 %smax to i64
  %min.iters.check215 = icmp slt i32 %11, 10
  br i1 %min.iters.check215, label %scalar.ph214.preheader, label %vector.memcheck202

scalar.ph214.preheader:                           ; preds = %middle.block213, %vector.memcheck202, %.lr.ph124
  %indvars.iv141.ph = phi i64 [ 0, %vector.memcheck202 ], [ 0, %.lr.ph124 ], [ %n.vec218, %middle.block213 ]
  %xtraiter305 = and i64 %wide.trip.count144, 1
  %lcmp.mod306.not = icmp eq i64 %xtraiter305, 0
  br i1 %lcmp.mod306.not, label %scalar.ph214.prol.loopexit, label %scalar.ph214.prol

scalar.ph214.prol:                                ; preds = %scalar.ph214.preheader
  %89 = getelementptr inbounds double, ptr %84, i64 %indvars.iv141.ph
  %90 = load double, ptr %89, align 8, !tbaa !29
  %91 = getelementptr inbounds double, ptr %86, i64 %indvars.iv141.ph
  %92 = load double, ptr %91, align 8, !tbaa !29
  %93 = fadd double %90, %92
  store double %93, ptr %91, align 8, !tbaa !29
  %94 = load double, ptr %89, align 8, !tbaa !29
  %95 = getelementptr inbounds double, ptr %88, i64 %indvars.iv141.ph
  %96 = load double, ptr %95, align 8, !tbaa !29
  %97 = fadd double %94, %96
  store double %97, ptr %95, align 8, !tbaa !29
  %indvars.iv.next142.prol = or disjoint i64 %indvars.iv141.ph, 1
  br label %scalar.ph214.prol.loopexit

scalar.ph214.prol.loopexit:                       ; preds = %scalar.ph214.prol, %scalar.ph214.preheader
  %indvars.iv141.unr = phi i64 [ %indvars.iv141.ph, %scalar.ph214.preheader ], [ %indvars.iv.next142.prol, %scalar.ph214.prol ]
  %98 = add nsw i64 %wide.trip.count144, -1
  %99 = icmp eq i64 %indvars.iv141.ph, %98
  br i1 %99, label %.lr.ph126, label %scalar.ph214

vector.memcheck202:                               ; preds = %.lr.ph124
  %100 = shl nuw nsw i64 %wide.trip.count144, 3
  %scevgep = getelementptr i8, ptr %86, i64 %100
  %scevgep203 = getelementptr i8, ptr %88, i64 %100
  %scevgep204 = getelementptr i8, ptr %84, i64 %100
  %bound0 = icmp ult ptr %86, %scevgep203
  %bound1 = icmp ult ptr %88, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0205 = icmp ult ptr %86, %scevgep204
  %bound1206 = icmp ult ptr %84, %scevgep
  %found.conflict207 = and i1 %bound0205, %bound1206
  %conflict.rdx208 = or i1 %found.conflict, %found.conflict207
  %bound0209 = icmp ult ptr %88, %scevgep204
  %bound1210 = icmp ult ptr %84, %scevgep203
  %found.conflict211 = and i1 %bound0209, %bound1210
  %conflict.rdx212 = or i1 %conflict.rdx208, %found.conflict211
  br i1 %conflict.rdx212, label %scalar.ph214.preheader, label %vector.ph216

vector.ph216:                                     ; preds = %vector.memcheck202
  %n.vec218 = and i64 %wide.trip.count144, 2147483646
  br label %vector.body220

vector.body220:                                   ; preds = %vector.body220, %vector.ph216
  %index221 = phi i64 [ 0, %vector.ph216 ], [ %index.next226, %vector.body220 ]
  %101 = getelementptr inbounds double, ptr %84, i64 %index221
  %wide.load222 = load <2 x double>, ptr %101, align 8, !tbaa !29, !alias.scope !36
  %102 = getelementptr inbounds double, ptr %86, i64 %index221
  %wide.load223 = load <2 x double>, ptr %102, align 8, !tbaa !29, !alias.scope !39, !noalias !41
  %103 = fadd <2 x double> %wide.load222, %wide.load223
  store <2 x double> %103, ptr %102, align 8, !tbaa !29, !alias.scope !39, !noalias !41
  %104 = getelementptr inbounds double, ptr %88, i64 %index221
  %wide.load225 = load <2 x double>, ptr %104, align 8, !tbaa !29, !alias.scope !43, !noalias !36
  %105 = fadd <2 x double> %wide.load222, %wide.load225
  store <2 x double> %105, ptr %104, align 8, !tbaa !29, !alias.scope !43, !noalias !36
  %index.next226 = add nuw i64 %index221, 2
  %106 = icmp eq i64 %index.next226, %n.vec218
  br i1 %106, label %middle.block213, label %vector.body220, !llvm.loop !44

middle.block213:                                  ; preds = %vector.body220
  %cmp.n227 = icmp eq i64 %n.vec218, %wide.trip.count144
  br i1 %cmp.n227, label %.lr.ph126, label %scalar.ph214.preheader

.lr.ph126:                                        ; preds = %scalar.ph214.prol.loopexit, %scalar.ph214, %middle.block213
  %107 = getelementptr inbounds i8, ptr %0, i64 824
  %108 = load ptr, ptr %107, align 8, !tbaa !28
  %109 = getelementptr inbounds i8, ptr %0, i64 976
  %110 = load ptr, ptr %109, align 8, !tbaa !35
  %111 = getelementptr inbounds i8, ptr %0, i64 992
  %112 = load ptr, ptr %111, align 8, !tbaa !27
  %113 = getelementptr inbounds i8, ptr %0, i64 816
  %114 = load ptr, ptr %113, align 8, !tbaa !26
  %115 = getelementptr inbounds i8, ptr %0, i64 984
  %116 = load ptr, ptr %115, align 8, !tbaa !24
  %smax149 = tail call i32 @llvm.smax.i32(i32 %11, i32 1)
  %wide.trip.count150 = zext nneg i32 %smax149 to i64
  %min.iters.check263 = icmp slt i32 %11, 24
  br i1 %min.iters.check263, label %scalar.ph262.preheader, label %vector.memcheck228

scalar.ph262.preheader:                           ; preds = %middle.block261, %vector.memcheck228, %.lr.ph126
  %indvars.iv146.ph = phi i64 [ 0, %vector.memcheck228 ], [ 0, %.lr.ph126 ], [ %n.vec266, %middle.block261 ]
  %xtraiter307 = and i64 %wide.trip.count144, 1
  %lcmp.mod308.not = icmp eq i64 %xtraiter307, 0
  br i1 %lcmp.mod308.not, label %scalar.ph262.prol.loopexit, label %scalar.ph262.prol

scalar.ph262.prol:                                ; preds = %scalar.ph262.preheader
  %117 = getelementptr inbounds double, ptr %108, i64 %indvars.iv146.ph
  %118 = load double, ptr %117, align 8, !tbaa !29
  %119 = getelementptr inbounds double, ptr %110, i64 %indvars.iv146.ph
  %120 = load double, ptr %119, align 8, !tbaa !29
  %121 = fsub double %118, %120
  %122 = getelementptr inbounds double, ptr %112, i64 %indvars.iv146.ph
  store double %121, ptr %122, align 8, !tbaa !29
  %123 = load double, ptr %119, align 8, !tbaa !29
  %124 = getelementptr inbounds double, ptr %114, i64 %indvars.iv146.ph
  %125 = load double, ptr %124, align 8, !tbaa !29
  %126 = fsub double %123, %125
  %127 = getelementptr inbounds double, ptr %116, i64 %indvars.iv146.ph
  store double %126, ptr %127, align 8, !tbaa !29
  %indvars.iv.next147.prol = or disjoint i64 %indvars.iv146.ph, 1
  br label %scalar.ph262.prol.loopexit

scalar.ph262.prol.loopexit:                       ; preds = %scalar.ph262.prol, %scalar.ph262.preheader
  %indvars.iv146.unr = phi i64 [ %indvars.iv146.ph, %scalar.ph262.preheader ], [ %indvars.iv.next147.prol, %scalar.ph262.prol ]
  %128 = add nsw i64 %wide.trip.count144, -1
  %129 = icmp eq i64 %indvars.iv146.ph, %128
  br i1 %129, label %.loopexit110, label %scalar.ph262

vector.memcheck228:                               ; preds = %.lr.ph126
  %130 = shl nuw nsw i64 %wide.trip.count144, 3
  %scevgep229 = getelementptr i8, ptr %112, i64 %130
  %scevgep230 = getelementptr i8, ptr %116, i64 %130
  %scevgep231 = getelementptr i8, ptr %108, i64 %130
  %scevgep232 = getelementptr i8, ptr %110, i64 %130
  %scevgep233 = getelementptr i8, ptr %114, i64 %130
  %bound0234 = icmp ult ptr %112, %scevgep230
  %bound1235 = icmp ult ptr %116, %scevgep229
  %found.conflict236 = and i1 %bound0234, %bound1235
  %bound0237 = icmp ult ptr %112, %scevgep231
  %bound1238 = icmp ult ptr %108, %scevgep229
  %found.conflict239 = and i1 %bound0237, %bound1238
  %conflict.rdx240 = or i1 %found.conflict236, %found.conflict239
  %bound0241 = icmp ult ptr %112, %scevgep232
  %bound1242 = icmp ult ptr %110, %scevgep229
  %found.conflict243 = and i1 %bound0241, %bound1242
  %conflict.rdx244 = or i1 %conflict.rdx240, %found.conflict243
  %bound0245 = icmp ult ptr %112, %scevgep233
  %bound1246 = icmp ult ptr %114, %scevgep229
  %found.conflict247 = and i1 %bound0245, %bound1246
  %conflict.rdx248 = or i1 %conflict.rdx244, %found.conflict247
  %bound0249 = icmp ult ptr %116, %scevgep231
  %bound1250 = icmp ult ptr %108, %scevgep230
  %found.conflict251 = and i1 %bound0249, %bound1250
  %conflict.rdx252 = or i1 %conflict.rdx248, %found.conflict251
  %bound0253 = icmp ult ptr %116, %scevgep232
  %bound1254 = icmp ult ptr %110, %scevgep230
  %found.conflict255 = and i1 %bound0253, %bound1254
  %conflict.rdx256 = or i1 %conflict.rdx252, %found.conflict255
  %bound0257 = icmp ult ptr %116, %scevgep233
  %bound1258 = icmp ult ptr %114, %scevgep230
  %found.conflict259 = and i1 %bound0257, %bound1258
  %conflict.rdx260 = or i1 %conflict.rdx256, %found.conflict259
  br i1 %conflict.rdx260, label %scalar.ph262.preheader, label %vector.ph264

vector.ph264:                                     ; preds = %vector.memcheck228
  %n.vec266 = and i64 %wide.trip.count144, 2147483646
  br label %vector.body268

vector.body268:                                   ; preds = %vector.body268, %vector.ph264
  %index269 = phi i64 [ 0, %vector.ph264 ], [ %index.next274, %vector.body268 ]
  %131 = getelementptr inbounds double, ptr %108, i64 %index269
  %wide.load270 = load <2 x double>, ptr %131, align 8, !tbaa !29, !alias.scope !45
  %132 = getelementptr inbounds double, ptr %110, i64 %index269
  %wide.load271 = load <2 x double>, ptr %132, align 8, !tbaa !29, !alias.scope !48
  %133 = fsub <2 x double> %wide.load270, %wide.load271
  %134 = getelementptr inbounds double, ptr %112, i64 %index269
  store <2 x double> %133, ptr %134, align 8, !tbaa !29, !alias.scope !50, !noalias !52
  %135 = getelementptr inbounds double, ptr %114, i64 %index269
  %wide.load273 = load <2 x double>, ptr %135, align 8, !tbaa !29, !alias.scope !55
  %136 = fsub <2 x double> %wide.load271, %wide.load273
  %137 = getelementptr inbounds double, ptr %116, i64 %index269
  store <2 x double> %136, ptr %137, align 8, !tbaa !29, !alias.scope !56, !noalias !57
  %index.next274 = add nuw i64 %index269, 2
  %138 = icmp eq i64 %index.next274, %n.vec266
  br i1 %138, label %middle.block261, label %vector.body268, !llvm.loop !58

middle.block261:                                  ; preds = %vector.body268
  %cmp.n275 = icmp eq i64 %n.vec266, %wide.trip.count144
  br i1 %cmp.n275, label %.loopexit110, label %scalar.ph262.preheader

scalar.ph214:                                     ; preds = %scalar.ph214.prol.loopexit, %scalar.ph214
  %indvars.iv141 = phi i64 [ %indvars.iv.next142.1, %scalar.ph214 ], [ %indvars.iv141.unr, %scalar.ph214.prol.loopexit ]
  %139 = getelementptr inbounds double, ptr %84, i64 %indvars.iv141
  %140 = load double, ptr %139, align 8, !tbaa !29
  %141 = getelementptr inbounds double, ptr %86, i64 %indvars.iv141
  %142 = load double, ptr %141, align 8, !tbaa !29
  %143 = fadd double %140, %142
  store double %143, ptr %141, align 8, !tbaa !29
  %144 = load double, ptr %139, align 8, !tbaa !29
  %145 = getelementptr inbounds double, ptr %88, i64 %indvars.iv141
  %146 = load double, ptr %145, align 8, !tbaa !29
  %147 = fadd double %144, %146
  store double %147, ptr %145, align 8, !tbaa !29
  %indvars.iv.next142 = add nuw nsw i64 %indvars.iv141, 1
  %148 = getelementptr inbounds double, ptr %84, i64 %indvars.iv.next142
  %149 = load double, ptr %148, align 8, !tbaa !29
  %150 = getelementptr inbounds double, ptr %86, i64 %indvars.iv.next142
  %151 = load double, ptr %150, align 8, !tbaa !29
  %152 = fadd double %149, %151
  store double %152, ptr %150, align 8, !tbaa !29
  %153 = load double, ptr %148, align 8, !tbaa !29
  %154 = getelementptr inbounds double, ptr %88, i64 %indvars.iv.next142
  %155 = load double, ptr %154, align 8, !tbaa !29
  %156 = fadd double %153, %155
  store double %156, ptr %154, align 8, !tbaa !29
  %indvars.iv.next142.1 = add nuw nsw i64 %indvars.iv141, 2
  %exitcond145.not.1 = icmp eq i64 %indvars.iv.next142.1, %wide.trip.count144
  br i1 %exitcond145.not.1, label %.lr.ph126, label %scalar.ph214, !llvm.loop !59

scalar.ph262:                                     ; preds = %scalar.ph262.prol.loopexit, %scalar.ph262
  %indvars.iv146 = phi i64 [ %indvars.iv.next147.1, %scalar.ph262 ], [ %indvars.iv146.unr, %scalar.ph262.prol.loopexit ]
  %157 = getelementptr inbounds double, ptr %108, i64 %indvars.iv146
  %158 = load double, ptr %157, align 8, !tbaa !29
  %159 = getelementptr inbounds double, ptr %110, i64 %indvars.iv146
  %160 = load double, ptr %159, align 8, !tbaa !29
  %161 = fsub double %158, %160
  %162 = getelementptr inbounds double, ptr %112, i64 %indvars.iv146
  store double %161, ptr %162, align 8, !tbaa !29
  %163 = load double, ptr %159, align 8, !tbaa !29
  %164 = getelementptr inbounds double, ptr %114, i64 %indvars.iv146
  %165 = load double, ptr %164, align 8, !tbaa !29
  %166 = fsub double %163, %165
  %167 = getelementptr inbounds double, ptr %116, i64 %indvars.iv146
  store double %166, ptr %167, align 8, !tbaa !29
  %indvars.iv.next147 = add nuw nsw i64 %indvars.iv146, 1
  %168 = getelementptr inbounds double, ptr %108, i64 %indvars.iv.next147
  %169 = load double, ptr %168, align 8, !tbaa !29
  %170 = getelementptr inbounds double, ptr %110, i64 %indvars.iv.next147
  %171 = load double, ptr %170, align 8, !tbaa !29
  %172 = fsub double %169, %171
  %173 = getelementptr inbounds double, ptr %112, i64 %indvars.iv.next147
  store double %172, ptr %173, align 8, !tbaa !29
  %174 = load double, ptr %170, align 8, !tbaa !29
  %175 = getelementptr inbounds double, ptr %114, i64 %indvars.iv.next147
  %176 = load double, ptr %175, align 8, !tbaa !29
  %177 = fsub double %174, %176
  %178 = getelementptr inbounds double, ptr %116, i64 %indvars.iv.next147
  store double %177, ptr %178, align 8, !tbaa !29
  %indvars.iv.next147.1 = add nuw nsw i64 %indvars.iv146, 2
  %exitcond151.not.1 = icmp eq i64 %indvars.iv.next147.1, %wide.trip.count150
  br i1 %exitcond151.not.1, label %.loopexit110, label %scalar.ph262, !llvm.loop !60

.loopexit110:                                     ; preds = %scalar.ph262.prol.loopexit, %scalar.ph262, %middle.block261, %23
  %.not = icmp eq ptr %1, null
  br i1 %.not, label %197, label %179

179:                                              ; preds = %.loopexit110
  %180 = tail call noundef i32 @_ZN7qpOASES9QProblemB4setHEPNS_15SymmetricMatrixE(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef nonnull %1)
  %181 = getelementptr inbounds i8, ptr %0, i64 220
  store i32 6, ptr %181, align 4, !tbaa !61
  %182 = tail call noundef i32 @_ZN7qpOASES9QProblemB20determineHessianTypeEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %.not93 = icmp eq i32 %182, 0
  br i1 %.not93, label %186, label %183

183:                                              ; preds = %179
  %184 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %185 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %184, i32 noundef 43, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 401, i32 noundef 1)
  br label %454

186:                                              ; preds = %179
  %187 = load i32, ptr %181, align 4, !tbaa !61
  switch i32 %187, label %188 [
    i32 0, label %191
    i32 4, label %191
  ]

188:                                              ; preds = %186
  %189 = tail call noundef i32 @_ZNK7qpOASES9QProblemB19usingRegularisationEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %190 = icmp eq i32 %189, 1
  br i1 %190, label %191, label %203

191:                                              ; preds = %186, %186, %188
  %192 = getelementptr inbounds i8, ptr %0, i64 224
  store double 0.000000e+00, ptr %192, align 8, !tbaa !62
  %193 = tail call noundef i32 @_ZN7qpOASES9QProblemB17regulariseHessianEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %.not94 = icmp eq i32 %193, 0
  br i1 %.not94, label %203, label %194

194:                                              ; preds = %191
  %195 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %196 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %195, i32 noundef 43, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 411, i32 noundef 1)
  br label %454

197:                                              ; preds = %.loopexit110
  %198 = getelementptr inbounds i8, ptr %0, i64 16
  %199 = load ptr, ptr %198, align 8, !tbaa !63
  %.not92 = icmp eq ptr %199, null
  br i1 %.not92, label %203, label %200

200:                                              ; preds = %197
  %201 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %202 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %201, i32 noundef 109, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 419, i32 noundef 1)
  br label %454

203:                                              ; preds = %197, %188, %191
  %204 = tail call noundef i32 @_ZN7qpOASES8QProblem24setupAuxiliaryQPgradientEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %.not95 = icmp eq i32 %204, 0
  br i1 %.not95, label %208, label %205

205:                                              ; preds = %203
  %206 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %207 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %206, i32 noundef 43, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 424, i32 noundef 1)
  br label %454

208:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %8) #7
  %209 = getelementptr inbounds i8, ptr %0, i64 48
  call void @_ZN7qpOASES6BoundsC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120) %8, ptr noundef nonnull align 8 dereferenceable(120) %209)
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %9) #7
  %210 = getelementptr inbounds i8, ptr %0, i64 832
  invoke void @_ZN7qpOASES11ConstraintsC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120) %9, ptr noundef nonnull align 8 dereferenceable(120) %210)
          to label %.preheader107 unwind label %217

.preheader107:                                    ; preds = %208
  %211 = icmp slt i32 %10, 1
  %212 = getelementptr inbounds i8, ptr %0, i64 400
  %213 = getelementptr inbounds i8, ptr %0, i64 192
  %214 = icmp sgt i32 %10, 0
  %215 = sext i32 %10 to i64
  %wide.trip.count156 = zext i32 %11 to i64
  %wide.trip.count161 = zext nneg i32 %10 to i64
  %216 = invoke noundef i32 @_ZN7qpOASES6Bounds4initEi(ptr noundef nonnull align 8 dereferenceable(120) %209, i32 noundef %10)
          to label %219 unwind label %.loopexit108

217:                                              ; preds = %208
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %453

.loopexit.split-lp310:                            ; preds = %319
  %lpad.loopexit.split-lp312 = landingpad { ptr, i32 }
          cleanup
  br label %452

219:                                              ; preds = %.preheader107
  %220 = invoke noundef i32 @_ZN7qpOASES11Constraints4initEi(ptr noundef nonnull align 8 dereferenceable(120) %210, i32 noundef %11)
          to label %221 unwind label %.loopexit108

221:                                              ; preds = %219
  %222 = load ptr, ptr %0, align 8, !tbaa !64
  %223 = getelementptr inbounds i8, ptr %222, i64 168
  %224 = load ptr, ptr %223, align 8
  %225 = invoke noundef i32 %224(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6)
          to label %226 unwind label %.loopexit108

226:                                              ; preds = %221
  %.not96 = icmp eq i32 %225, 0
  br i1 %.not96, label %232, label %227

227:                                              ; preds = %332, %226
  %228 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke unwind label %.loopexit.split-lp

.invoke:                                          ; preds = %227, %307, %248, %240, %235
  %229 = phi ptr [ %236, %235 ], [ %241, %240 ], [ %249, %248 ], [ %308, %307 ], [ %228, %227 ]
  %230 = phi i64 [ 459, %235 ], [ 462, %240 ], [ 466, %248 ], [ 491, %307 ], [ 456, %227 ]
  %231 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %229, i32 noundef 43, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef %230, i32 noundef 1)
          to label %451 unwind label %.loopexit.split-lp

.loopexit108:                                     ; preds = %402, %._crit_edge133.1, %339, %336, %333, %327, %325, %.loopexit.1, %.preheader107, %219, %221, %232, %237, %242, %._crit_edge133, %309
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %452

.loopexit.split-lp:                               ; preds = %.invoke, %227, %235, %240, %248, %307, %._crit_edge137
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %452

232:                                              ; preds = %226
  %233 = invoke noundef i32 @_ZN7qpOASES6Bounds12setupAllFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %209)
          to label %234 unwind label %.loopexit108

234:                                              ; preds = %232
  %.not97 = icmp eq i32 %233, 0
  br i1 %.not97, label %237, label %235

235:                                              ; preds = %335, %234
  %236 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke unwind label %.loopexit.split-lp

237:                                              ; preds = %234
  %238 = invoke noundef i32 @_ZN7qpOASES11Constraints16setupAllInactiveEv(ptr noundef nonnull align 8 dereferenceable(120) %210)
          to label %239 unwind label %.loopexit108

239:                                              ; preds = %237
  %.not98 = icmp eq i32 %238, 0
  br i1 %.not98, label %242, label %240

240:                                              ; preds = %338, %239
  %241 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke unwind label %.loopexit.split-lp

242:                                              ; preds = %239
  %243 = load ptr, ptr %0, align 8, !tbaa !64
  %244 = getelementptr inbounds i8, ptr %243, i64 184
  %245 = load ptr, ptr %244, align 8
  %246 = invoke noundef i32 %245(ptr noundef nonnull align 8 dereferenceable(1064) %0)
          to label %247 unwind label %.loopexit108

247:                                              ; preds = %242
  %.not99 = icmp eq i32 %246, 0
  br i1 %.not99, label %.preheader105, label %248

.preheader105:                                    ; preds = %247
  br i1 %25, label %.lr.ph130, label %.preheader104

248:                                              ; preds = %344, %247
  %249 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke unwind label %.loopexit.split-lp

.preheader104:                                    ; preds = %276, %.preheader105
  br i1 %214, label %.lr.ph132, label %._crit_edge133

.lr.ph130:                                        ; preds = %.preheader105, %276
  %indvars.iv153 = phi i64 [ %indvars.iv.next154, %276 ], [ 0, %.preheader105 ]
  %250 = trunc nuw nsw i64 %indvars.iv153 to i32
  %251 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %9, i32 noundef %250)
  %252 = icmp eq i32 %251, 2
  br i1 %252, label %253, label %276

253:                                              ; preds = %.lr.ph130
  %254 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %210, i32 noundef %250)
  %255 = icmp eq i32 %254, 1
  br i1 %255, label %256, label %276

256:                                              ; preds = %253
  %257 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %9, i32 noundef %250)
  %258 = icmp eq i32 %257, -1
  br i1 %258, label %259, label %265

259:                                              ; preds = %256
  %260 = load ptr, ptr %213, align 8, !tbaa !66
  %261 = getelementptr double, ptr %260, i64 %indvars.iv153
  %262 = getelementptr double, ptr %261, i64 %215
  %263 = load double, ptr %262, align 8, !tbaa !29
  %264 = fcmp olt double %263, 0.000000e+00
  br i1 %264, label %.invoke180, label %265

.loopexit313:                                     ; preds = %.invoke180
  %lpad.loopexit315 = landingpad { ptr, i32 }
          cleanup
  br label %452

.loopexit.split-lp314:                            ; preds = %.invoke180.1
  %lpad.loopexit.split-lp316 = landingpad { ptr, i32 }
          cleanup
  br label %452

265:                                              ; preds = %259, %256
  %266 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %9, i32 noundef %250)
  %267 = icmp eq i32 %266, 1
  br i1 %267, label %268, label %276

268:                                              ; preds = %265
  %269 = load ptr, ptr %213, align 8, !tbaa !66
  %270 = getelementptr double, ptr %269, i64 %indvars.iv153
  %271 = getelementptr double, ptr %270, i64 %215
  %272 = load double, ptr %271, align 8, !tbaa !29
  %273 = fcmp ogt double %272, 0.000000e+00
  br i1 %273, label %.invoke180, label %276

.invoke180:                                       ; preds = %259, %268
  %274 = phi i32 [ -1, %268 ], [ 1, %259 ]
  %275 = invoke noundef i32 @_ZN7qpOASES9SubjectTo9setStatusEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(40) %9, i32 noundef %250, i32 noundef %274)
          to label %276 unwind label %.loopexit313

276:                                              ; preds = %.invoke180, %.lr.ph130, %253, %265, %268
  %indvars.iv.next154 = add nuw nsw i64 %indvars.iv153, 1
  %exitcond157.not = icmp eq i64 %indvars.iv.next154, %wide.trip.count156
  br i1 %exitcond157.not, label %.preheader104, label %.lr.ph130, !llvm.loop !67

._crit_edge133:                                   ; preds = %305, %.preheader104
  %277 = load ptr, ptr %0, align 8, !tbaa !64
  %278 = getelementptr inbounds i8, ptr %277, i64 192
  %279 = load ptr, ptr %278, align 8
  %280 = invoke noundef i32 %279(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef nonnull %8, ptr noundef nonnull %9, i32 noundef 1)
          to label %306 unwind label %.loopexit108

.lr.ph132:                                        ; preds = %.preheader104, %305
  %indvars.iv158 = phi i64 [ %indvars.iv.next159, %305 ], [ 0, %.preheader104 ]
  %281 = trunc nuw nsw i64 %indvars.iv158 to i32
  %282 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %8, i32 noundef %281)
  %283 = icmp eq i32 %282, 2
  br i1 %283, label %284, label %305

284:                                              ; preds = %.lr.ph132
  %285 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %209, i32 noundef %281)
  %286 = icmp eq i32 %285, 1
  br i1 %286, label %287, label %305

287:                                              ; preds = %284
  %288 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %8, i32 noundef %281)
  %289 = icmp eq i32 %288, -1
  br i1 %289, label %290, label %295

290:                                              ; preds = %287
  %291 = load ptr, ptr %213, align 8, !tbaa !66
  %292 = getelementptr inbounds double, ptr %291, i64 %indvars.iv158
  %293 = load double, ptr %292, align 8, !tbaa !29
  %294 = fcmp olt double %293, 0.000000e+00
  br i1 %294, label %.invoke181, label %295

.loopexit318:                                     ; preds = %.invoke181
  %lpad.loopexit320 = landingpad { ptr, i32 }
          cleanup
  br label %452

.loopexit.split-lp319:                            ; preds = %.invoke181.1
  %lpad.loopexit.split-lp321 = landingpad { ptr, i32 }
          cleanup
  br label %452

295:                                              ; preds = %290, %287
  %296 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %8, i32 noundef %281)
  %297 = icmp eq i32 %296, 1
  br i1 %297, label %298, label %305

298:                                              ; preds = %295
  %299 = load ptr, ptr %213, align 8, !tbaa !66
  %300 = getelementptr inbounds double, ptr %299, i64 %indvars.iv158
  %301 = load double, ptr %300, align 8, !tbaa !29
  %302 = fcmp ogt double %301, 0.000000e+00
  br i1 %302, label %.invoke181, label %305

.invoke181:                                       ; preds = %290, %298
  %303 = phi i32 [ -1, %298 ], [ 1, %290 ]
  %304 = invoke noundef i32 @_ZN7qpOASES9SubjectTo9setStatusEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(40) %8, i32 noundef %281, i32 noundef %303)
          to label %305 unwind label %.loopexit318

305:                                              ; preds = %.invoke181, %.lr.ph132, %284, %295, %298
  %indvars.iv.next159 = add nuw nsw i64 %indvars.iv158, 1
  %exitcond162.not = icmp eq i64 %indvars.iv.next159, %wide.trip.count161
  br i1 %exitcond162.not, label %._crit_edge133, label %.lr.ph132, !llvm.loop !68

306:                                              ; preds = %._crit_edge133
  %.not100 = icmp eq i32 %280, 0
  br i1 %.not100, label %309, label %307

307:                                              ; preds = %401, %306
  %308 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke unwind label %.loopexit.split-lp

309:                                              ; preds = %306
  %310 = load ptr, ptr %0, align 8, !tbaa !64
  %311 = getelementptr inbounds i8, ptr %310, i64 176
  %312 = load ptr, ptr %311, align 8
  %313 = invoke noundef i32 %312(ptr noundef nonnull align 8 dereferenceable(1064) %0)
          to label %314 unwind label %.loopexit108

314:                                              ; preds = %309
  %315 = icmp eq i32 %313, 0
  br i1 %315, label %.critedge, label %316

316:                                              ; preds = %314
  br i1 %211, label %.loopexit.1, label %.lr.ph128.1

.lr.ph128.1:                                      ; preds = %316, %322
  %.079127.1 = phi i32 [ %323, %322 ], [ 0, %316 ]
  %317 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %8, i32 noundef %.079127.1)
  %318 = icmp eq i32 %317, 0
  br i1 %318, label %319, label %322

319:                                              ; preds = %.lr.ph128.1
  %320 = load i32, ptr %212, align 8, !tbaa !69
  %321 = invoke noundef i32 @_ZN7qpOASES9SubjectTo9setStatusEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(40) %8, i32 noundef %.079127.1, i32 noundef %320)
          to label %322 unwind label %.loopexit.split-lp310

322:                                              ; preds = %319, %.lr.ph128.1
  %323 = add nuw nsw i32 %.079127.1, 1
  %exitcond152.not.1 = icmp eq i32 %323, %10
  br i1 %exitcond152.not.1, label %.loopexit.1, label %.lr.ph128.1, !llvm.loop !70

.loopexit.1:                                      ; preds = %322, %316
  %324 = invoke noundef i32 @_ZN7qpOASES6Bounds4initEi(ptr noundef nonnull align 8 dereferenceable(120) %209, i32 noundef %10)
          to label %325 unwind label %.loopexit108

325:                                              ; preds = %.loopexit.1
  %326 = invoke noundef i32 @_ZN7qpOASES11Constraints4initEi(ptr noundef nonnull align 8 dereferenceable(120) %210, i32 noundef %11)
          to label %327 unwind label %.loopexit108

327:                                              ; preds = %325
  %328 = load ptr, ptr %0, align 8, !tbaa !64
  %329 = getelementptr inbounds i8, ptr %328, i64 168
  %330 = load ptr, ptr %329, align 8
  %331 = invoke noundef i32 %330(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6)
          to label %332 unwind label %.loopexit108

332:                                              ; preds = %327
  %.not96.1 = icmp eq i32 %331, 0
  br i1 %.not96.1, label %333, label %227

333:                                              ; preds = %332
  %334 = invoke noundef i32 @_ZN7qpOASES6Bounds12setupAllFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %209)
          to label %335 unwind label %.loopexit108

335:                                              ; preds = %333
  %.not97.1 = icmp eq i32 %334, 0
  br i1 %.not97.1, label %336, label %235

336:                                              ; preds = %335
  %337 = invoke noundef i32 @_ZN7qpOASES11Constraints16setupAllInactiveEv(ptr noundef nonnull align 8 dereferenceable(120) %210)
          to label %338 unwind label %.loopexit108

338:                                              ; preds = %336
  %.not98.1 = icmp eq i32 %337, 0
  br i1 %.not98.1, label %339, label %240

339:                                              ; preds = %338
  %340 = load ptr, ptr %0, align 8, !tbaa !64
  %341 = getelementptr inbounds i8, ptr %340, i64 184
  %342 = load ptr, ptr %341, align 8
  %343 = invoke noundef i32 %342(ptr noundef nonnull align 8 dereferenceable(1064) %0)
          to label %344 unwind label %.loopexit108

344:                                              ; preds = %339
  %.not99.1 = icmp eq i32 %343, 0
  br i1 %.not99.1, label %.preheader105.1, label %248

.preheader105.1:                                  ; preds = %344
  br i1 %25, label %.lr.ph130.1, label %.preheader104.1

.lr.ph130.1:                                      ; preds = %.preheader105.1, %371
  %indvars.iv153.1 = phi i64 [ %indvars.iv.next154.1, %371 ], [ 0, %.preheader105.1 ]
  %345 = trunc nuw nsw i64 %indvars.iv153.1 to i32
  %346 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %9, i32 noundef %345)
  %347 = icmp eq i32 %346, 2
  br i1 %347, label %348, label %371

348:                                              ; preds = %.lr.ph130.1
  %349 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %210, i32 noundef %345)
  %350 = icmp eq i32 %349, 1
  br i1 %350, label %351, label %371

351:                                              ; preds = %348
  %352 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %9, i32 noundef %345)
  %353 = icmp eq i32 %352, -1
  br i1 %353, label %354, label %360

354:                                              ; preds = %351
  %355 = load ptr, ptr %213, align 8, !tbaa !66
  %356 = getelementptr double, ptr %355, i64 %indvars.iv153.1
  %357 = getelementptr double, ptr %356, i64 %215
  %358 = load double, ptr %357, align 8, !tbaa !29
  %359 = fcmp olt double %358, 0.000000e+00
  br i1 %359, label %.invoke180.1, label %360

360:                                              ; preds = %354, %351
  %361 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %9, i32 noundef %345)
  %362 = icmp eq i32 %361, 1
  br i1 %362, label %363, label %371

363:                                              ; preds = %360
  %364 = load ptr, ptr %213, align 8, !tbaa !66
  %365 = getelementptr double, ptr %364, i64 %indvars.iv153.1
  %366 = getelementptr double, ptr %365, i64 %215
  %367 = load double, ptr %366, align 8, !tbaa !29
  %368 = fcmp ogt double %367, 0.000000e+00
  br i1 %368, label %.invoke180.1, label %371

.invoke180.1:                                     ; preds = %363, %354
  %369 = phi i32 [ -1, %363 ], [ 1, %354 ]
  %370 = invoke noundef i32 @_ZN7qpOASES9SubjectTo9setStatusEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(40) %9, i32 noundef %345, i32 noundef %369)
          to label %371 unwind label %.loopexit.split-lp314

371:                                              ; preds = %.invoke180.1, %363, %360, %348, %.lr.ph130.1
  %indvars.iv.next154.1 = add nuw nsw i64 %indvars.iv153.1, 1
  %exitcond157.not.1 = icmp eq i64 %indvars.iv.next154.1, %wide.trip.count156
  br i1 %exitcond157.not.1, label %.preheader104.1, label %.lr.ph130.1, !llvm.loop !67

.preheader104.1:                                  ; preds = %371, %.preheader105.1
  br i1 %214, label %.lr.ph132.1, label %._crit_edge133.1

.lr.ph132.1:                                      ; preds = %.preheader104.1, %396
  %indvars.iv158.1 = phi i64 [ %indvars.iv.next159.1, %396 ], [ 0, %.preheader104.1 ]
  %372 = trunc nuw nsw i64 %indvars.iv158.1 to i32
  %373 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %8, i32 noundef %372)
  %374 = icmp eq i32 %373, 2
  br i1 %374, label %375, label %396

375:                                              ; preds = %.lr.ph132.1
  %376 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %209, i32 noundef %372)
  %377 = icmp eq i32 %376, 1
  br i1 %377, label %378, label %396

378:                                              ; preds = %375
  %379 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %8, i32 noundef %372)
  %380 = icmp eq i32 %379, -1
  br i1 %380, label %381, label %386

381:                                              ; preds = %378
  %382 = load ptr, ptr %213, align 8, !tbaa !66
  %383 = getelementptr inbounds double, ptr %382, i64 %indvars.iv158.1
  %384 = load double, ptr %383, align 8, !tbaa !29
  %385 = fcmp olt double %384, 0.000000e+00
  br i1 %385, label %.invoke181.1, label %386

386:                                              ; preds = %381, %378
  %387 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %8, i32 noundef %372)
  %388 = icmp eq i32 %387, 1
  br i1 %388, label %389, label %396

389:                                              ; preds = %386
  %390 = load ptr, ptr %213, align 8, !tbaa !66
  %391 = getelementptr inbounds double, ptr %390, i64 %indvars.iv158.1
  %392 = load double, ptr %391, align 8, !tbaa !29
  %393 = fcmp ogt double %392, 0.000000e+00
  br i1 %393, label %.invoke181.1, label %396

.invoke181.1:                                     ; preds = %389, %381
  %394 = phi i32 [ -1, %389 ], [ 1, %381 ]
  %395 = invoke noundef i32 @_ZN7qpOASES9SubjectTo9setStatusEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(40) %8, i32 noundef %372, i32 noundef %394)
          to label %396 unwind label %.loopexit.split-lp319

396:                                              ; preds = %.invoke181.1, %389, %386, %375, %.lr.ph132.1
  %indvars.iv.next159.1 = add nuw nsw i64 %indvars.iv158.1, 1
  %exitcond162.not.1 = icmp eq i64 %indvars.iv.next159.1, %wide.trip.count161
  br i1 %exitcond162.not.1, label %._crit_edge133.1, label %.lr.ph132.1, !llvm.loop !68

._crit_edge133.1:                                 ; preds = %396, %.preheader104.1
  %397 = load ptr, ptr %0, align 8, !tbaa !64
  %398 = getelementptr inbounds i8, ptr %397, i64 192
  %399 = load ptr, ptr %398, align 8
  %400 = invoke noundef i32 %399(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef nonnull %8, ptr noundef nonnull %9, i32 noundef 1)
          to label %401 unwind label %.loopexit108

401:                                              ; preds = %._crit_edge133.1
  %.not100.1 = icmp eq i32 %400, 0
  br i1 %.not100.1, label %402, label %307

402:                                              ; preds = %401
  %403 = load ptr, ptr %0, align 8, !tbaa !64
  %404 = getelementptr inbounds i8, ptr %403, i64 176
  %405 = load ptr, ptr %404, align 8
  %406 = invoke noundef i32 %405(ptr noundef nonnull align 8 dereferenceable(1064) %0)
          to label %407 unwind label %.loopexit108

407:                                              ; preds = %402
  %408 = icmp eq i32 %406, 0
  %.not325 = xor i1 %408, true
  %.not326 = xor i1 %315, true
  %brmerge = or i1 %.not325, %.not326
  br i1 %brmerge, label %.preheader, label %.critedge

.preheader:                                       ; preds = %407
  br i1 %25, label %.lr.ph136, label %._crit_edge137

.lr.ph136:                                        ; preds = %.preheader
  %409 = getelementptr inbounds i8, ptr %0, i64 976
  %410 = load ptr, ptr %409, align 8, !tbaa !35
  %411 = getelementptr inbounds i8, ptr %0, i64 992
  %412 = load ptr, ptr %411, align 8, !tbaa !27
  %413 = getelementptr inbounds i8, ptr %0, i64 984
  %414 = load ptr, ptr %413, align 8, !tbaa !24
  %wide.trip.count166 = zext nneg i32 %11 to i64
  %min.iters.check284 = icmp ult i32 %11, 16
  br i1 %min.iters.check284, label %scalar.ph283.preheader, label %vector.memcheck276

scalar.ph283.preheader:                           ; preds = %middle.block282, %vector.memcheck276, %.lr.ph136
  %indvars.iv163.ph = phi i64 [ 0, %vector.memcheck276 ], [ 0, %.lr.ph136 ], [ %n.vec287, %middle.block282 ]
  %xtraiter323 = and i64 %wide.trip.count156, 3
  %lcmp.mod324.not = icmp eq i64 %xtraiter323, 0
  br i1 %lcmp.mod324.not, label %scalar.ph283.prol.loopexit, label %scalar.ph283.prol

scalar.ph283.prol:                                ; preds = %scalar.ph283.preheader, %scalar.ph283.prol
  %indvars.iv163.prol = phi i64 [ %indvars.iv.next164.prol, %scalar.ph283.prol ], [ %indvars.iv163.ph, %scalar.ph283.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph283.prol ], [ 0, %scalar.ph283.preheader ]
  %415 = getelementptr inbounds double, ptr %410, i64 %indvars.iv163.prol
  %416 = load double, ptr %415, align 8, !tbaa !29
  %417 = getelementptr inbounds double, ptr %412, i64 %indvars.iv163.prol
  store double %416, ptr %417, align 8, !tbaa !29
  %418 = getelementptr inbounds double, ptr %414, i64 %indvars.iv163.prol
  store double %416, ptr %418, align 8, !tbaa !29
  %indvars.iv.next164.prol = add nuw nsw i64 %indvars.iv163.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter323
  br i1 %prol.iter.cmp.not, label %scalar.ph283.prol.loopexit, label %scalar.ph283.prol, !llvm.loop !71

scalar.ph283.prol.loopexit:                       ; preds = %scalar.ph283.prol, %scalar.ph283.preheader
  %indvars.iv163.unr = phi i64 [ %indvars.iv163.ph, %scalar.ph283.preheader ], [ %indvars.iv.next164.prol, %scalar.ph283.prol ]
  %419 = sub nsw i64 %indvars.iv163.ph, %wide.trip.count156
  %420 = icmp ugt i64 %419, -4
  br i1 %420, label %._crit_edge137, label %scalar.ph283

vector.memcheck276:                               ; preds = %.lr.ph136
  %421 = ptrtoint ptr %414 to i64
  %422 = ptrtoint ptr %412 to i64
  %423 = ptrtoint ptr %410 to i64
  %424 = sub i64 %421, %422
  %diff.check277 = icmp ult i64 %424, 32
  %425 = sub i64 %422, %423
  %diff.check278 = icmp ult i64 %425, 32
  %conflict.rdx279 = or i1 %diff.check277, %diff.check278
  %426 = sub i64 %421, %423
  %diff.check280 = icmp ult i64 %426, 32
  %conflict.rdx281 = or i1 %conflict.rdx279, %diff.check280
  br i1 %conflict.rdx281, label %scalar.ph283.preheader, label %vector.ph285

vector.ph285:                                     ; preds = %vector.memcheck276
  %n.vec287 = and i64 %wide.trip.count156, 2147483644
  br label %vector.body289

vector.body289:                                   ; preds = %vector.body289, %vector.ph285
  %index290 = phi i64 [ 0, %vector.ph285 ], [ %index.next293, %vector.body289 ]
  %427 = getelementptr inbounds double, ptr %410, i64 %index290
  %428 = getelementptr inbounds i8, ptr %427, i64 16
  %wide.load291 = load <2 x double>, ptr %427, align 8, !tbaa !29
  %wide.load292 = load <2 x double>, ptr %428, align 8, !tbaa !29
  %429 = getelementptr inbounds double, ptr %412, i64 %index290
  %430 = getelementptr inbounds i8, ptr %429, i64 16
  store <2 x double> %wide.load291, ptr %429, align 8, !tbaa !29
  store <2 x double> %wide.load292, ptr %430, align 8, !tbaa !29
  %431 = getelementptr inbounds double, ptr %414, i64 %index290
  %432 = getelementptr inbounds i8, ptr %431, i64 16
  store <2 x double> %wide.load291, ptr %431, align 8, !tbaa !29
  store <2 x double> %wide.load292, ptr %432, align 8, !tbaa !29
  %index.next293 = add nuw i64 %index290, 4
  %433 = icmp eq i64 %index.next293, %n.vec287
  br i1 %433, label %middle.block282, label %vector.body289, !llvm.loop !73

middle.block282:                                  ; preds = %vector.body289
  %cmp.n294 = icmp eq i64 %n.vec287, %wide.trip.count156
  br i1 %cmp.n294, label %._crit_edge137, label %scalar.ph283.preheader

._crit_edge137:                                   ; preds = %scalar.ph283.prol.loopexit, %scalar.ph283, %middle.block282, %.preheader
  %434 = invoke noundef i32 @_ZN7qpOASES8QProblem22setupAuxiliaryQPboundsEPKNS_6BoundsEPKNS_11ConstraintsENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef nonnull %209, ptr noundef nonnull %210, i32 noundef 0)
          to label %.critedge unwind label %.loopexit.split-lp

scalar.ph283:                                     ; preds = %scalar.ph283.prol.loopexit, %scalar.ph283
  %indvars.iv163 = phi i64 [ %indvars.iv.next164.3, %scalar.ph283 ], [ %indvars.iv163.unr, %scalar.ph283.prol.loopexit ]
  %435 = getelementptr inbounds double, ptr %410, i64 %indvars.iv163
  %436 = load double, ptr %435, align 8, !tbaa !29
  %437 = getelementptr inbounds double, ptr %412, i64 %indvars.iv163
  store double %436, ptr %437, align 8, !tbaa !29
  %438 = getelementptr inbounds double, ptr %414, i64 %indvars.iv163
  store double %436, ptr %438, align 8, !tbaa !29
  %indvars.iv.next164 = add nuw nsw i64 %indvars.iv163, 1
  %439 = getelementptr inbounds double, ptr %410, i64 %indvars.iv.next164
  %440 = load double, ptr %439, align 8, !tbaa !29
  %441 = getelementptr inbounds double, ptr %412, i64 %indvars.iv.next164
  store double %440, ptr %441, align 8, !tbaa !29
  %442 = getelementptr inbounds double, ptr %414, i64 %indvars.iv.next164
  store double %440, ptr %442, align 8, !tbaa !29
  %indvars.iv.next164.1 = add nuw nsw i64 %indvars.iv163, 2
  %443 = getelementptr inbounds double, ptr %410, i64 %indvars.iv.next164.1
  %444 = load double, ptr %443, align 8, !tbaa !29
  %445 = getelementptr inbounds double, ptr %412, i64 %indvars.iv.next164.1
  store double %444, ptr %445, align 8, !tbaa !29
  %446 = getelementptr inbounds double, ptr %414, i64 %indvars.iv.next164.1
  store double %444, ptr %446, align 8, !tbaa !29
  %indvars.iv.next164.2 = add nuw nsw i64 %indvars.iv163, 3
  %447 = getelementptr inbounds double, ptr %410, i64 %indvars.iv.next164.2
  %448 = load double, ptr %447, align 8, !tbaa !29
  %449 = getelementptr inbounds double, ptr %412, i64 %indvars.iv.next164.2
  store double %448, ptr %449, align 8, !tbaa !29
  %450 = getelementptr inbounds double, ptr %414, i64 %indvars.iv.next164.2
  store double %448, ptr %450, align 8, !tbaa !29
  %indvars.iv.next164.3 = add nuw nsw i64 %indvars.iv163, 4
  %exitcond167.not.3 = icmp eq i64 %indvars.iv.next164.3, %wide.trip.count166
  br i1 %exitcond167.not.3, label %._crit_edge137, label %scalar.ph283, !llvm.loop !74

.critedge:                                        ; preds = %314, %407, %._crit_edge137
  store i32 2, ptr %24, align 8, !tbaa !5
  br label %451

451:                                              ; preds = %.invoke, %.critedge
  %.084 = phi i32 [ 0, %.critedge ], [ %231, %.invoke ]
  call void @_ZN7qpOASES11ConstraintsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %9) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %9) #7
  call void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %8) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %8) #7
  br label %454

452:                                              ; preds = %.loopexit318, %.loopexit.split-lp319, %.loopexit313, %.loopexit.split-lp314, %.loopexit108, %.loopexit.split-lp, %.loopexit.split-lp310
  %.pn = phi { ptr, i32 } [ %lpad.loopexit.split-lp312, %.loopexit.split-lp310 ], [ %lpad.loopexit, %.loopexit108 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit315, %.loopexit313 ], [ %lpad.loopexit.split-lp316, %.loopexit.split-lp314 ], [ %lpad.loopexit320, %.loopexit318 ], [ %lpad.loopexit.split-lp321, %.loopexit.split-lp319 ]
  call void @_ZN7qpOASES11ConstraintsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %9) #7
  br label %453

453:                                              ; preds = %452, %217
  %.pn.pn = phi { ptr, i32 } [ %.pn, %452 ], [ %218, %217 ]
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %9) #7
  call void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %8) #7
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %8) #7
  resume { ptr, i32 } %.pn.pn

454:                                              ; preds = %451, %205, %200, %194, %183, %65, %20
  %.185 = phi i32 [ %22, %20 ], [ %67, %65 ], [ %185, %183 ], [ %196, %194 ], [ %207, %205 ], [ %.084, %451 ], [ %202, %200 ]
  ret i32 %.185
}

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

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

declare noundef i32 @_ZN7qpOASES9QProblemB20determineHessianTypeEv(ptr noundef nonnull align 8 dereferenceable(800)) local_unnamed_addr #1

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

declare noundef i32 @_ZN7qpOASES9QProblemB17regulariseHessianEv(ptr noundef nonnull align 8 dereferenceable(800)) local_unnamed_addr #1

declare noundef i32 @_ZN7qpOASES8QProblem24setupAuxiliaryQPgradientEv(ptr noundef nonnull align 8 dereferenceable(1064)) local_unnamed_addr #1

declare void @_ZN7qpOASES6BoundsC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #1

declare void @_ZN7qpOASES11ConstraintsC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #1

declare i32 @__gxx_personality_v0(...)

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

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

declare noundef i32 @_ZN7qpOASES6Bounds4initEi(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) local_unnamed_addr #1

declare noundef i32 @_ZN7qpOASES11Constraints4initEi(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) local_unnamed_addr #1

declare noundef i32 @_ZN7qpOASES6Bounds12setupAllFreeEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #1

declare noundef i32 @_ZN7qpOASES11Constraints16setupAllInactiveEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #1

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

declare noundef i32 @_ZN7qpOASES8QProblem22setupAuxiliaryQPboundsEPKNS_6BoundsEPKNS_11ConstraintsENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1064), ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: nounwind
declare void @_ZN7qpOASES11ConstraintsD1Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #5

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

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


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