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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.qpOASES::QProblemB" = type { ptr, i32, ptr, ptr, ptr, ptr, %"class.qpOASES::Bounds", ptr, i32, ptr, ptr, double, i32, i32, i32, i32, double, i32, ptr, double, double, i32, [4 x i8], %"class.qpOASES::Options", %"class.qpOASES::Flipper", %"struct.qpOASES::TabularOutput" }
%"class.qpOASES::Bounds" = type { %"class.qpOASES::SubjectTo", %"class.qpOASES::Indexlist", %"class.qpOASES::Indexlist" }
%"class.qpOASES::SubjectTo" = type { ptr, i32, ptr, ptr, i32, i32 }
%"class.qpOASES::Indexlist" = type <{ ptr, ptr, i32, i32, i32, i32, i32, [4 x i8] }>
%"class.qpOASES::Options" = type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8], double, double, double, double, i32, i32, i32, i32, i32, [4 x i8] }>
%"class.qpOASES::Flipper" = type { i32, i32, %"class.qpOASES::Bounds", %"class.qpOASES::Constraints", ptr, ptr, ptr }
%"class.qpOASES::Constraints" = type { %"class.qpOASES::SubjectTo", %"class.qpOASES::Indexlist", %"class.qpOASES::Indexlist" }
%"struct.qpOASES::TabularOutput" = type { i32, i32, i32, i32, i32, i32, i32, i32 }
%"class.qpOASES::QProblem" = type { %"class.qpOASES::QProblemB", i32, ptr, ptr, ptr, %"class.qpOASES::Constraints", ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }

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

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #7

declare noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_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 speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES8QProblem22addConstraint_ensureLIEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1, i32 noundef %2) unnamed_addr #8 align 2 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca ptr, align 8
  %32 = alloca [160 x i8], align 16
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store i32 %2, ptr %7, align 4, !tbaa !11
  %33 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #9
  %34 = call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %33)
  store i32 %34, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #9
  %35 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFREv(ptr noundef nonnull align 8 dereferenceable(800) %33)
  store i32 %35, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  %36 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFXEv(ptr noundef nonnull align 8 dereferenceable(800) %33)
  store i32 %36, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #9
  %37 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %33)
  store i32 %37, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  %38 = load ptr, ptr %33, align 8, !tbaa !13
  %39 = getelementptr inbounds ptr, ptr %38, i64 7
  %40 = load ptr, ptr %39, align 8
  %41 = call noundef i32 %40(ptr noundef nonnull align 8 dereferenceable(1064) %33)
  store i32 %41, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  %42 = load i32, ptr %6, align 4, !tbaa !9
  %43 = load ptr, ptr %33, align 8, !tbaa !13
  %44 = getelementptr inbounds ptr, ptr %43, i64 26
  %45 = load ptr, ptr %44, align 8
  %46 = call noundef i32 %45(ptr noundef nonnull align 8 dereferenceable(1064) %33, i32 noundef %42)
  store i32 %46, ptr %17, align 4, !tbaa !15
  %47 = load i32, ptr %17, align 4, !tbaa !15
  %48 = icmp eq i32 %47, 14
  br i1 %48, label %49, label %52

49:                                               ; preds = %3
  %50 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %51 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %50, i32 noundef 91, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 3131, i32 noundef 1)
  store i32 %51, ptr %4, align 4
  store i32 1, ptr %18, align 4
  br label %472

52:                                               ; preds = %3
  %53 = load i32, ptr %17, align 4, !tbaa !15
  %54 = icmp eq i32 %53, 89
  br i1 %54, label %55, label %56

55:                                               ; preds = %52
  store i32 0, ptr %4, align 4
  store i32 1, ptr %18, align 4
  br label %472

56:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  %57 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 6
  %58 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %57)
  %59 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %58, ptr noundef %19)
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %60 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 6
  %61 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %60)
  %62 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %61, ptr noundef %20)
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %63 = load i32, ptr %15, align 4, !tbaa !9
  %64 = sext i32 %63 to i64
  %65 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %64, i64 8)
  %66 = extractvalue { i64, i1 } %65, 1
  %67 = extractvalue { i64, i1 } %65, 0
  %68 = select i1 %66, i64 -1, i64 %67
  %69 = call noalias noundef nonnull ptr @_Znam(i64 noundef %68) #10
  store ptr %69, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %70 = load i32, ptr %15, align 4, !tbaa !9
  %71 = sext i32 %70 to i64
  %72 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %71, i64 8)
  %73 = extractvalue { i64, i1 } %72, 1
  %74 = extractvalue { i64, i1 } %72, 0
  %75 = select i1 %73, i64 -1, i64 %74
  %76 = call noalias noundef nonnull ptr @_Znam(i64 noundef %75) #10
  store ptr %76, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %77 = load i32, ptr %14, align 4, !tbaa !9
  %78 = sext i32 %77 to i64
  %79 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %78, i64 8)
  %80 = extractvalue { i64, i1 } %79, 1
  %81 = extractvalue { i64, i1 } %79, 0
  %82 = select i1 %80, i64 -1, i64 %81
  %83 = call noalias noundef nonnull ptr @_Znam(i64 noundef %82) #10
  store ptr %83, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %84 = load i32, ptr %13, align 4, !tbaa !9
  %85 = sext i32 %84 to i64
  %86 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %85, i64 8)
  %87 = extractvalue { i64, i1 } %86, 1
  %88 = extractvalue { i64, i1 } %86, 0
  %89 = select i1 %87, i64 -1, i64 %88
  %90 = call noalias noundef nonnull ptr @_Znam(i64 noundef %89) #10
  store ptr %90, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %91 = load i32, ptr %12, align 4, !tbaa !9
  %92 = sext i32 %91 to i64
  %93 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %92, i64 8)
  %94 = extractvalue { i64, i1 } %93, 1
  %95 = extractvalue { i64, i1 } %93, 0
  %96 = select i1 %94, i64 -1, i64 %95
  %97 = call noalias noundef nonnull ptr @_Znam(i64 noundef %96) #10
  store ptr %97, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #9
  store i32 0, ptr %26, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %98 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 23
  %99 = getelementptr inbounds %"class.qpOASES::Options", ptr %98, i32 0, i32 16
  %100 = load double, ptr %99, align 8, !tbaa !17
  store double %100, ptr %27, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  store i32 -1, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  store i32 -1, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  store i32 0, ptr %30, align 4, !tbaa !32
  %101 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 2
  %102 = load ptr, ptr %101, align 8, !tbaa !33
  %103 = load i32, ptr %6, align 4, !tbaa !9
  %104 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 6
  %105 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %104)
  %106 = load i32, ptr %7, align 4, !tbaa !11
  %107 = icmp eq i32 %106, -1
  %108 = zext i1 %107 to i64
  %109 = select i1 %107, double 1.000000e+00, double -1.000000e+00
  %110 = load ptr, ptr %24, align 8, !tbaa !5
  %111 = load ptr, ptr %102, align 8, !tbaa !13
  %112 = getelementptr inbounds ptr, ptr %111, i64 9
  %113 = load ptr, ptr %112, align 8
  %114 = call noundef i32 %113(ptr noundef nonnull align 8 dereferenceable(12) %102, i32 noundef %103, ptr noundef %105, double noundef %109, ptr noundef %110)
  %115 = load i32, ptr %15, align 4, !tbaa !9
  %116 = icmp sgt i32 %115, 0
  br i1 %116, label %117, label %177

117:                                              ; preds = %56
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %118

118:                                              ; preds = %164, %117
  %119 = load i32, ptr %8, align 4, !tbaa !9
  %120 = load i32, ptr %15, align 4, !tbaa !9
  %121 = icmp slt i32 %119, %120
  br i1 %121, label %122, label %167

122:                                              ; preds = %118
  %123 = load ptr, ptr %22, align 8, !tbaa !5
  %124 = load i32, ptr %8, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds double, ptr %123, i64 %125
  store double 0.000000e+00, ptr %126, align 8, !tbaa !31
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %160, %122
  %128 = load i32, ptr %9, align 4, !tbaa !9
  %129 = load i32, ptr %13, align 4, !tbaa !9
  %130 = icmp slt i32 %128, %129
  br i1 %130, label %131, label %163

131:                                              ; preds = %127
  %132 = load ptr, ptr %19, align 8, !tbaa !5
  %133 = load i32, ptr %9, align 4, !tbaa !9
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds i32, ptr %132, i64 %134
  %136 = load i32, ptr %135, align 4, !tbaa !9
  store i32 %136, ptr %11, align 4, !tbaa !9
  %137 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 7
  %138 = load ptr, ptr %137, align 8, !tbaa !35
  %139 = load i32, ptr %11, align 4, !tbaa !9
  %140 = load i32, ptr %12, align 4, !tbaa !9
  %141 = load i32, ptr %16, align 4, !tbaa !9
  %142 = load i32, ptr %8, align 4, !tbaa !9
  %143 = add nsw i32 %141, %142
  %144 = mul nsw i32 %140, %143
  %145 = add nsw i32 %139, %144
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds double, ptr %138, i64 %146
  %148 = load double, ptr %147, align 8, !tbaa !31
  %149 = load ptr, ptr %24, align 8, !tbaa !5
  %150 = load i32, ptr %9, align 4, !tbaa !9
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds double, ptr %149, i64 %151
  %153 = load double, ptr %152, align 8, !tbaa !31
  %154 = load ptr, ptr %22, align 8, !tbaa !5
  %155 = load i32, ptr %8, 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 !31
  %159 = call double @llvm.fmuladd.f64(double %148, double %153, double %158)
  store double %159, ptr %157, align 8, !tbaa !31
  br label %160

160:                                              ; preds = %131
  %161 = load i32, ptr %9, align 4, !tbaa !9
  %162 = add nsw i32 %161, 1
  store i32 %162, ptr %9, align 4, !tbaa !9
  br label %127, !llvm.loop !36

163:                                              ; preds = %127
  br label %164

164:                                              ; preds = %163
  %165 = load i32, ptr %8, align 4, !tbaa !9
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr %8, align 4, !tbaa !9
  br label %118, !llvm.loop !38

167:                                              ; preds = %118
  %168 = load ptr, ptr %22, align 8, !tbaa !5
  %169 = load ptr, ptr %21, align 8, !tbaa !5
  %170 = load ptr, ptr %33, align 8, !tbaa !13
  %171 = getelementptr inbounds ptr, ptr %170, i64 33
  %172 = load ptr, ptr %171, align 8
  %173 = call noundef i32 %172(ptr noundef nonnull align 8 dereferenceable(1064) %33, ptr noundef %168, i32 noundef 1, ptr noundef %169)
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %176

175:                                              ; preds = %167
  store i32 92, ptr %26, align 4, !tbaa !15
  br label %436

176:                                              ; preds = %167
  br label %177

177:                                              ; preds = %176, %56
  %178 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 5
  %179 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %178)
  %180 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %179, ptr noundef %31)
  %181 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 2
  %182 = load ptr, ptr %181, align 8, !tbaa !33
  %183 = load i32, ptr %6, align 4, !tbaa !9
  %184 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 6
  %185 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %184)
  %186 = load i32, ptr %7, align 4, !tbaa !11
  %187 = icmp eq i32 %186, -1
  %188 = zext i1 %187 to i64
  %189 = select i1 %187, double 1.000000e+00, double -1.000000e+00
  %190 = load ptr, ptr %23, align 8, !tbaa !5
  %191 = load ptr, ptr %182, align 8, !tbaa !13
  %192 = getelementptr inbounds ptr, ptr %191, i64 9
  %193 = load ptr, ptr %192, align 8
  %194 = call noundef i32 %193(ptr noundef nonnull align 8 dereferenceable(12) %182, i32 noundef %183, ptr noundef %185, double noundef %189, ptr noundef %190)
  %195 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 2
  %196 = load ptr, ptr %195, align 8, !tbaa !33
  %197 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 5
  %198 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %197)
  %199 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 6
  %200 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %199)
  %201 = load ptr, ptr %21, align 8, !tbaa !5
  %202 = load i32, ptr %15, align 4, !tbaa !9
  %203 = load ptr, ptr %23, align 8, !tbaa !5
  %204 = load i32, ptr %14, align 4, !tbaa !9
  %205 = load ptr, ptr %196, align 8, !tbaa !13
  %206 = getelementptr inbounds ptr, ptr %205, i64 18
  %207 = load ptr, ptr %206, align 8
  %208 = call noundef i32 %207(ptr noundef nonnull align 8 dereferenceable(12) %196, ptr noundef %198, ptr noundef %200, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %201, i32 noundef %202, double noundef 1.000000e+00, ptr noundef %203, i32 noundef %204)
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %231, %177
  %210 = load i32, ptr %8, align 4, !tbaa !9
  %211 = load i32, ptr %15, align 4, !tbaa !9
  %212 = icmp slt i32 %210, %211
  br i1 %212, label %213, label %234

213:                                              ; preds = %209
  %214 = load ptr, ptr %31, align 8, !tbaa !5
  %215 = load i32, ptr %8, align 4, !tbaa !9
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds i32, ptr %214, i64 %216
  %218 = load i32, ptr %217, align 4, !tbaa !9
  store i32 %218, ptr %10, align 4, !tbaa !9
  %219 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %220 = load ptr, ptr %219, align 8, !tbaa !39
  %221 = load i32, ptr %12, align 4, !tbaa !9
  %222 = load i32, ptr %10, align 4, !tbaa !9
  %223 = add nsw i32 %221, %222
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds double, ptr %220, i64 %224
  %226 = load double, ptr %225, align 8, !tbaa !31
  %227 = load ptr, ptr %25, align 8, !tbaa !5
  %228 = load i32, ptr %8, align 4, !tbaa !9
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds double, ptr %227, i64 %229
  store double %226, ptr %230, align 8, !tbaa !31
  br label %231

231:                                              ; preds = %213
  %232 = load i32, ptr %8, align 4, !tbaa !9
  %233 = add nsw i32 %232, 1
  store i32 %233, ptr %8, align 4, !tbaa !9
  br label %209, !llvm.loop !40

234:                                              ; preds = %209
  %235 = load i32, ptr %15, align 4, !tbaa !9
  %236 = load ptr, ptr %31, align 8, !tbaa !5
  %237 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 5
  %238 = load ptr, ptr %25, align 8, !tbaa !5
  %239 = load ptr, ptr %21, align 8, !tbaa !5
  %240 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 23
  %241 = getelementptr inbounds %"class.qpOASES::Options", ptr %240, i32 0, i32 13
  %242 = load double, ptr %241, align 8, !tbaa !41
  %243 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 23
  %244 = getelementptr inbounds %"class.qpOASES::Options", ptr %243, i32 0, i32 14
  %245 = load double, ptr %244, align 8, !tbaa !42
  %246 = call noundef i32 @_ZNK7qpOASES9QProblemB16performRatioTestEiPKiPKNS_9SubjectToEPKdS7_ddRdRi(ptr noundef nonnull align 8 dereferenceable(800) %33, i32 noundef %235, ptr noundef %236, ptr noundef %237, ptr noundef %238, ptr noundef %239, double noundef %242, double noundef %245, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(4) %28)
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %247

247:                                              ; preds = %267, %234
  %248 = load i32, ptr %8, align 4, !tbaa !9
  %249 = load i32, ptr %14, align 4, !tbaa !9
  %250 = icmp slt i32 %248, %249
  br i1 %250, label %251, label %270

251:                                              ; preds = %247
  %252 = load ptr, ptr %20, align 8, !tbaa !5
  %253 = load i32, ptr %8, align 4, !tbaa !9
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds i32, ptr %252, i64 %254
  %256 = load i32, ptr %255, align 4, !tbaa !9
  store i32 %256, ptr %10, align 4, !tbaa !9
  %257 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %258 = load ptr, ptr %257, align 8, !tbaa !39
  %259 = load i32, ptr %10, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds double, ptr %258, i64 %260
  %262 = load double, ptr %261, align 8, !tbaa !31
  %263 = load ptr, ptr %25, align 8, !tbaa !5
  %264 = load i32, ptr %8, align 4, !tbaa !9
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds double, ptr %263, i64 %265
  store double %262, ptr %266, align 8, !tbaa !31
  br label %267

267:                                              ; preds = %251
  %268 = load i32, ptr %8, align 4, !tbaa !9
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr %8, align 4, !tbaa !9
  br label %247, !llvm.loop !43

270:                                              ; preds = %247
  %271 = load i32, ptr %14, align 4, !tbaa !9
  %272 = load ptr, ptr %20, align 8, !tbaa !5
  %273 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 6
  %274 = load ptr, ptr %25, align 8, !tbaa !5
  %275 = load ptr, ptr %23, align 8, !tbaa !5
  %276 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 23
  %277 = getelementptr inbounds %"class.qpOASES::Options", ptr %276, i32 0, i32 13
  %278 = load double, ptr %277, align 8, !tbaa !41
  %279 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 23
  %280 = getelementptr inbounds %"class.qpOASES::Options", ptr %279, i32 0, i32 14
  %281 = load double, ptr %280, align 8, !tbaa !42
  %282 = call noundef i32 @_ZNK7qpOASES9QProblemB16performRatioTestEiPKiPKNS_9SubjectToEPKdS7_ddRdRi(ptr noundef nonnull align 8 dereferenceable(800) %33, i32 noundef %271, ptr noundef %272, ptr noundef %273, ptr noundef %274, ptr noundef %275, double noundef %278, double noundef %281, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(4) %29)
  %283 = load i32, ptr %29, align 4, !tbaa !9
  %284 = icmp sge i32 %283, 0
  br i1 %284, label %285, label %287

285:                                              ; preds = %270
  %286 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %286, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !32
  br label %287

287:                                              ; preds = %285, %270
  %288 = load i32, ptr %28, align 4, !tbaa !9
  %289 = icmp sge i32 %288, 0
  br i1 %289, label %290, label %420

290:                                              ; preds = %287
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %317, %290
  %292 = load i32, ptr %8, align 4, !tbaa !9
  %293 = load i32, ptr %15, align 4, !tbaa !9
  %294 = icmp slt i32 %292, %293
  br i1 %294, label %295, label %320

295:                                              ; preds = %291
  %296 = load ptr, ptr %31, align 8, !tbaa !5
  %297 = load i32, ptr %8, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds i32, ptr %296, i64 %298
  %300 = load i32, ptr %299, align 4, !tbaa !9
  store i32 %300, ptr %10, align 4, !tbaa !9
  %301 = load double, ptr %27, align 8, !tbaa !31
  %302 = load ptr, ptr %21, align 8, !tbaa !5
  %303 = load i32, ptr %8, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds double, ptr %302, i64 %304
  %306 = load double, ptr %305, align 8, !tbaa !31
  %307 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %308 = load ptr, ptr %307, align 8, !tbaa !39
  %309 = load i32, ptr %12, align 4, !tbaa !9
  %310 = load i32, ptr %10, align 4, !tbaa !9
  %311 = add nsw i32 %309, %310
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds double, ptr %308, i64 %312
  %314 = load double, ptr %313, align 8, !tbaa !31
  %315 = fneg double %301
  %316 = call double @llvm.fmuladd.f64(double %315, double %306, double %314)
  store double %316, ptr %313, align 8, !tbaa !31
  br label %317

317:                                              ; preds = %295
  %318 = load i32, ptr %8, align 4, !tbaa !9
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr %8, align 4, !tbaa !9
  br label %291, !llvm.loop !44

320:                                              ; preds = %291
  store i32 0, ptr %8, align 4, !tbaa !9
  br label %321

321:                                              ; preds = %345, %320
  %322 = load i32, ptr %8, align 4, !tbaa !9
  %323 = load i32, ptr %14, align 4, !tbaa !9
  %324 = icmp slt i32 %322, %323
  br i1 %324, label %325, label %348

325:                                              ; preds = %321
  %326 = load ptr, ptr %20, align 8, !tbaa !5
  %327 = load i32, ptr %8, align 4, !tbaa !9
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds i32, ptr %326, i64 %328
  %330 = load i32, ptr %329, align 4, !tbaa !9
  store i32 %330, ptr %10, align 4, !tbaa !9
  %331 = load double, ptr %27, align 8, !tbaa !31
  %332 = load ptr, ptr %23, align 8, !tbaa !5
  %333 = load i32, ptr %8, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds double, ptr %332, i64 %334
  %336 = load double, ptr %335, align 8, !tbaa !31
  %337 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %338 = load ptr, ptr %337, align 8, !tbaa !39
  %339 = load i32, ptr %10, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds double, ptr %338, i64 %340
  %342 = load double, ptr %341, align 8, !tbaa !31
  %343 = fneg double %331
  %344 = call double @llvm.fmuladd.f64(double %343, double %336, double %342)
  store double %344, ptr %341, align 8, !tbaa !31
  br label %345

345:                                              ; preds = %325
  %346 = load i32, ptr %8, align 4, !tbaa !9
  %347 = add nsw i32 %346, 1
  store i32 %347, ptr %8, align 4, !tbaa !9
  br label %321, !llvm.loop !45

348:                                              ; preds = %321
  %349 = load i32, ptr %7, align 4, !tbaa !11
  %350 = icmp eq i32 %349, -1
  br i1 %350, label %351, label %360

351:                                              ; preds = %348
  %352 = load double, ptr %27, align 8, !tbaa !31
  %353 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %354 = load ptr, ptr %353, align 8, !tbaa !39
  %355 = load i32, ptr %12, align 4, !tbaa !9
  %356 = load i32, ptr %6, align 4, !tbaa !9
  %357 = add nsw i32 %355, %356
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds double, ptr %354, i64 %358
  store double %352, ptr %359, align 8, !tbaa !31
  br label %370

360:                                              ; preds = %348
  %361 = load double, ptr %27, align 8, !tbaa !31
  %362 = fneg double %361
  %363 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %364 = load ptr, ptr %363, align 8, !tbaa !39
  %365 = load i32, ptr %12, align 4, !tbaa !9
  %366 = load i32, ptr %6, align 4, !tbaa !9
  %367 = add nsw i32 %365, %366
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds double, ptr %364, i64 %368
  store double %362, ptr %369, align 8, !tbaa !31
  br label %370

370:                                              ; preds = %360, %351
  %371 = load i32, ptr %30, align 4, !tbaa !32
  %372 = icmp eq i32 %371, 1
  br i1 %372, label %373, label %395

373:                                              ; preds = %370
  %374 = getelementptr inbounds [160 x i8], ptr %32, i64 0, i64 0
  %375 = load i32, ptr %28, align 4, !tbaa !9
  %376 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %374, i64 noundef 160, ptr noundef @.str.42, i32 noundef %375) #9
  %377 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %378 = getelementptr inbounds [160 x i8], ptr %32, i64 0, i64 0
  %379 = call noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %377, i32 noundef 82, ptr noundef %378, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 3247, i32 noundef 1)
  %380 = load i32, ptr %28, align 4, !tbaa !9
  %381 = load ptr, ptr %33, align 8, !tbaa !13
  %382 = getelementptr inbounds ptr, ptr %381, i64 32
  %383 = load ptr, ptr %382, align 8
  %384 = call noundef i32 %383(ptr noundef nonnull align 8 dereferenceable(1064) %33, i32 noundef %380, i32 noundef 1, i32 noundef 0, i32 noundef 0)
  %385 = icmp ne i32 %384, 0
  br i1 %385, label %386, label %387

386:                                              ; preds = %373
  store i32 84, ptr %26, align 4, !tbaa !15
  br label %436

387:                                              ; preds = %373
  %388 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %389 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %388, i32 0, i32 5
  store i32 1, ptr %389, align 4, !tbaa !46
  %390 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %391 = load ptr, ptr %390, align 8, !tbaa !39
  %392 = load i32, ptr %28, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %391, i64 %393
  store double 0.000000e+00, ptr %394, align 8, !tbaa !31
  br label %419

395:                                              ; preds = %370
  %396 = getelementptr inbounds [160 x i8], ptr %32, i64 0, i64 0
  %397 = load i32, ptr %28, align 4, !tbaa !9
  %398 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %396, i64 noundef 160, ptr noundef @.str.43, i32 noundef %397) #9
  %399 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %400 = getelementptr inbounds [160 x i8], ptr %32, i64 0, i64 0
  %401 = call noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %399, i32 noundef 82, ptr noundef %400, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 3263, i32 noundef 1)
  %402 = load i32, ptr %28, align 4, !tbaa !9
  %403 = load ptr, ptr %33, align 8, !tbaa !13
  %404 = getelementptr inbounds ptr, ptr %403, i64 31
  %405 = load ptr, ptr %404, align 8
  %406 = call noundef i32 %405(ptr noundef nonnull align 8 dereferenceable(1064) %33, i32 noundef %402, i32 noundef 1, i32 noundef 0, i32 noundef 0)
  %407 = icmp ne i32 %406, 0
  br i1 %407, label %408, label %409

408:                                              ; preds = %395
  store i32 84, ptr %26, align 4, !tbaa !15
  br label %436

409:                                              ; preds = %395
  %410 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %411 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %410, i32 0, i32 7
  store i32 1, ptr %411, align 4, !tbaa !47
  %412 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %413 = load ptr, ptr %412, align 8, !tbaa !39
  %414 = load i32, ptr %12, align 4, !tbaa !9
  %415 = load i32, ptr %28, align 4, !tbaa !9
  %416 = add nsw i32 %414, %415
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds double, ptr %413, i64 %417
  store double 0.000000e+00, ptr %418, align 8, !tbaa !31
  br label %419

419:                                              ; preds = %409, %387
  br label %435

420:                                              ; preds = %287
  %421 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 23
  %422 = getelementptr inbounds %"class.qpOASES::Options", ptr %421, i32 0, i32 34
  %423 = load i32, ptr %422, align 4, !tbaa !48
  %424 = icmp eq i32 %423, 1
  br i1 %424, label %425, label %431

425:                                              ; preds = %420
  %426 = load i32, ptr %6, align 4, !tbaa !9
  %427 = load i32, ptr %7, align 4, !tbaa !11
  %428 = load ptr, ptr %23, align 8, !tbaa !5
  %429 = load ptr, ptr %21, align 8, !tbaa !5
  %430 = call noundef i32 @_ZN7qpOASES8QProblem15dropInfeasiblesEiNS_15SubjectToStatusENS_11BooleanTypeEPdS3_(ptr noundef nonnull align 8 dereferenceable(1064) %33, i32 noundef %426, i32 noundef %427, i32 noundef 0, ptr noundef %428, ptr noundef %429)
  store i32 %430, ptr %26, align 4, !tbaa !15
  br label %434

431:                                              ; preds = %420
  store i32 93, ptr %26, align 4, !tbaa !15
  %432 = load i32, ptr %26, align 4, !tbaa !15
  %433 = call noundef i32 @_ZN7qpOASES9QProblemB20setInfeasibilityFlagENS_11returnValueENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %33, i32 noundef %432, i32 noundef 0)
  br label %434

434:                                              ; preds = %431, %425
  br label %435

435:                                              ; preds = %434, %419
  br label %436

436:                                              ; preds = %435, %408, %386, %175
  %437 = load ptr, ptr %25, align 8, !tbaa !5
  %438 = icmp eq ptr %437, null
  br i1 %438, label %440, label %439

439:                                              ; preds = %436
  call void @_ZdaPv(ptr noundef %437) #11
  br label %440

440:                                              ; preds = %439, %436
  %441 = load ptr, ptr %24, align 8, !tbaa !5
  %442 = icmp eq ptr %441, null
  br i1 %442, label %444, label %443

443:                                              ; preds = %440
  call void @_ZdaPv(ptr noundef %441) #11
  br label %444

444:                                              ; preds = %443, %440
  %445 = load ptr, ptr %23, align 8, !tbaa !5
  %446 = icmp eq ptr %445, null
  br i1 %446, label %448, label %447

447:                                              ; preds = %444
  call void @_ZdaPv(ptr noundef %445) #11
  br label %448

448:                                              ; preds = %447, %444
  %449 = load ptr, ptr %22, align 8, !tbaa !5
  %450 = icmp eq ptr %449, null
  br i1 %450, label %452, label %451

451:                                              ; preds = %448
  call void @_ZdaPv(ptr noundef %449) #11
  br label %452

452:                                              ; preds = %451, %448
  %453 = load ptr, ptr %21, align 8, !tbaa !5
  %454 = icmp eq ptr %453, null
  br i1 %454, label %456, label %455

455:                                              ; preds = %452
  call void @_ZdaPv(ptr noundef %453) #11
  br label %456

456:                                              ; preds = %455, %452
  %457 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %458 = call noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %457, i32 noundef 90, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 3297, i32 noundef 1)
  %459 = load i32, ptr %26, align 4, !tbaa !15
  %460 = icmp ne i32 %459, 0
  br i1 %460, label %461, label %468

461:                                              ; preds = %456
  %462 = load i32, ptr %26, align 4, !tbaa !15
  %463 = icmp ne i32 %462, 93
  br i1 %463, label %464, label %468

464:                                              ; preds = %461
  %465 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %466 = load i32, ptr %26, align 4, !tbaa !15
  %467 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %465, i32 noundef %466, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 3299, i32 noundef 1)
  br label %470

468:                                              ; preds = %461, %456
  %469 = load i32, ptr %26, align 4, !tbaa !15
  br label %470

470:                                              ; preds = %468, %464
  %471 = phi i32 [ %467, %464 ], [ %469, %468 ]
  store i32 %471, ptr %4, align 4
  store i32 1, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  br label %472

472:                                              ; preds = %470, %55, %49
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  %473 = load i32, ptr %4, align 4
  ret i32 %473
}

declare noundef i32 @_ZNK7qpOASES9QProblemB16performRatioTestEiPKiPKNS_9SubjectToEPKdS7_ddRdRi(ptr noundef nonnull align 8 dereferenceable(800), i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #1

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

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

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

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


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

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

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #6

declare noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_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 speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #7

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES8QProblem22addConstraint_ensureLIEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1, i32 noundef %2) unnamed_addr #8 align 2 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca double, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca [160 x i8], align 16
  %11 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %12 = tail call noundef i32 @_ZNK7qpOASES9QProblemB6getNFREv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %13 = tail call noundef i32 @_ZNK7qpOASES9QProblemB6getNFXEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %14 = tail call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %15 = load ptr, ptr %0, align 8, !tbaa !5
  %16 = getelementptr inbounds i8, ptr %15, i64 56
  %17 = load ptr, ptr %16, align 8
  %18 = tail call noundef i32 %17(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %19 = load ptr, ptr %0, align 8, !tbaa !5
  %20 = getelementptr inbounds i8, ptr %19, i64 208
  %21 = load ptr, ptr %20, align 8
  %22 = tail call noundef i32 %21(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1)
  switch i32 %22, label %26 [
    i32 14, label %23
    i32 89, label %324
  ]

23:                                               ; preds = %3
  %24 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %25 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %24, i32 noundef 91, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 3131, i32 noundef 1)
  br label %324

26:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #10
  %27 = getelementptr inbounds i8, ptr %0, i64 48
  %28 = tail call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %27)
  %29 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %28, ptr noundef nonnull %4)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #10
  %30 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %27)
  %31 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %30, ptr noundef nonnull %5)
  %32 = zext i32 %14 to i64
  %33 = icmp slt i32 %14, 0
  %34 = shl nuw nsw i64 %32, 3
  %35 = select i1 %33, i64 -1, i64 %34
  %36 = call noalias noundef nonnull ptr @_Znam(i64 noundef %35) #11
  %37 = call noalias noundef nonnull ptr @_Znam(i64 noundef %35) #11
  %38 = zext i32 %13 to i64
  %39 = icmp slt i32 %13, 0
  %40 = shl nuw nsw i64 %38, 3
  %41 = select i1 %39, i64 -1, i64 %40
  %42 = call noalias noundef nonnull ptr @_Znam(i64 noundef %41) #11
  %43 = zext i32 %12 to i64
  %44 = icmp slt i32 %12, 0
  %45 = shl nuw nsw i64 %43, 3
  %46 = select i1 %44, i64 -1, i64 %45
  %47 = call noalias noundef nonnull ptr @_Znam(i64 noundef %46) #11
  %48 = zext nneg i32 %11 to i64
  %49 = icmp slt i32 %11, 0
  %50 = shl nuw nsw i64 %48, 3
  %51 = select i1 %49, i64 -1, i64 %50
  %52 = call noalias noundef nonnull ptr @_Znam(i64 noundef %51) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  %53 = getelementptr inbounds i8, ptr %0, i64 360
  %54 = load double, ptr %53, align 8, !tbaa !8
  store double %54, ptr %6, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #10
  store i32 -1, ptr %7, align 4, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #10
  store i32 -1, ptr %8, align 4, !tbaa !27
  %55 = getelementptr inbounds i8, ptr %0, i64 808
  %56 = load ptr, ptr %55, align 8, !tbaa !28
  %57 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %27)
  %58 = icmp eq i32 %2, -1
  %59 = select i1 %58, double 1.000000e+00, double -1.000000e+00
  %60 = load ptr, ptr %56, align 8, !tbaa !5
  %61 = getelementptr inbounds i8, ptr %60, i64 72
  %62 = load ptr, ptr %61, align 8
  %63 = call noundef i32 %62(ptr noundef nonnull align 8 dereferenceable(12) %56, i32 noundef %1, ptr noundef %57, double noundef %59, ptr noundef nonnull %47)
  %64 = icmp sgt i32 %14, 0
  br i1 %64, label %.preheader109, label %105

.preheader109:                                    ; preds = %26
  %65 = icmp sgt i32 %12, 0
  %66 = load ptr, ptr %4, align 8
  %67 = getelementptr inbounds i8, ptr %0, i64 960
  %68 = load ptr, ptr %67, align 8
  br i1 %65, label %.lr.ph.us.preheader, label %.preheader109.split.preheader

.preheader109.split.preheader:                    ; preds = %.preheader109
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %37, i8 0, i64 %34, i1 false), !tbaa !26
  br label %.split.us

.lr.ph.us.preheader:                              ; preds = %.preheader109
  %69 = sext i32 %18 to i64
  %70 = sext i32 %11 to i64
  %xtraiter = and i64 %43, 1
  %71 = icmp eq i32 %12, 1
  %unroll_iter = and i64 %43, 2147483646
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.lr.ph.us

.lr.ph.us:                                        ; preds = %.lr.ph.us.preheader, %._crit_edge.us
  %indvars.iv125 = phi i64 [ 0, %.lr.ph.us.preheader ], [ %indvars.iv.next126, %._crit_edge.us ]
  %72 = getelementptr inbounds double, ptr %37, i64 %indvars.iv125
  store double 0.000000e+00, ptr %72, align 8, !tbaa !26
  %73 = add nsw i64 %indvars.iv125, %69
  %74 = mul nsw i64 %73, %70
  %75 = getelementptr double, ptr %68, i64 %74
  br i1 %71, label %._crit_edge.us.unr-lcssa, label %.lr.ph.us.new

.lr.ph.us.new:                                    ; preds = %.lr.ph.us, %.lr.ph.us.new
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %.lr.ph.us.new ], [ 0, %.lr.ph.us ]
  %76 = phi double [ %92, %.lr.ph.us.new ], [ 0.000000e+00, %.lr.ph.us ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph.us.new ], [ 0, %.lr.ph.us ]
  %77 = getelementptr inbounds i32, ptr %66, i64 %indvars.iv
  %78 = load i32, ptr %77, align 4, !tbaa !27
  %79 = sext i32 %78 to i64
  %80 = getelementptr double, ptr %75, i64 %79
  %81 = load double, ptr %80, align 8, !tbaa !26
  %82 = getelementptr inbounds double, ptr %47, i64 %indvars.iv
  %83 = load double, ptr %82, align 8, !tbaa !26
  %84 = call double @llvm.fmuladd.f64(double %81, double %83, double %76)
  store double %84, ptr %72, align 8, !tbaa !26
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %85 = getelementptr inbounds i32, ptr %66, i64 %indvars.iv.next
  %86 = load i32, ptr %85, align 4, !tbaa !27
  %87 = sext i32 %86 to i64
  %88 = getelementptr double, ptr %75, i64 %87
  %89 = load double, ptr %88, align 8, !tbaa !26
  %90 = getelementptr inbounds double, ptr %47, i64 %indvars.iv.next
  %91 = load double, ptr %90, align 8, !tbaa !26
  %92 = call double @llvm.fmuladd.f64(double %89, double %91, double %84)
  store double %92, ptr %72, align 8, !tbaa !26
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.us.unr-lcssa, label %.lr.ph.us.new, !llvm.loop !30

._crit_edge.us.unr-lcssa:                         ; preds = %.lr.ph.us.new, %.lr.ph.us
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph.us ], [ %indvars.iv.next.1, %.lr.ph.us.new ]
  %.unr = phi double [ 0.000000e+00, %.lr.ph.us ], [ %92, %.lr.ph.us.new ]
  br i1 %lcmp.mod.not, label %._crit_edge.us, label %._crit_edge.us.epilog-lcssa

._crit_edge.us.epilog-lcssa:                      ; preds = %._crit_edge.us.unr-lcssa
  %93 = getelementptr inbounds i32, ptr %66, i64 %indvars.iv.unr
  %94 = load i32, ptr %93, align 4, !tbaa !27
  %95 = sext i32 %94 to i64
  %96 = getelementptr double, ptr %75, i64 %95
  %97 = load double, ptr %96, align 8, !tbaa !26
  %98 = getelementptr inbounds double, ptr %47, i64 %indvars.iv.unr
  %99 = load double, ptr %98, align 8, !tbaa !26
  %100 = call double @llvm.fmuladd.f64(double %97, double %99, double %.unr)
  store double %100, ptr %72, align 8, !tbaa !26
  br label %._crit_edge.us

._crit_edge.us:                                   ; preds = %._crit_edge.us.unr-lcssa, %._crit_edge.us.epilog-lcssa
  %indvars.iv.next126 = add nuw nsw i64 %indvars.iv125, 1
  %exitcond129.not = icmp eq i64 %indvars.iv.next126, %32
  br i1 %exitcond129.not, label %.split.us, label %.lr.ph.us, !llvm.loop !32

.split.us:                                        ; preds = %._crit_edge.us, %.preheader109.split.preheader
  %101 = load ptr, ptr %0, align 8, !tbaa !5
  %102 = getelementptr inbounds i8, ptr %101, i64 264
  %103 = load ptr, ptr %102, align 8
  %104 = call noundef i32 %103(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef nonnull %37, i32 noundef 1, ptr noundef nonnull %36)
  %.not = icmp eq i32 %104, 0
  br i1 %.not, label %105, label %316

105:                                              ; preds = %.split.us, %26
  %106 = getelementptr inbounds i8, ptr %0, i64 832
  %107 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %106)
  %108 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %107, ptr noundef nonnull %9)
  %109 = load ptr, ptr %55, align 8, !tbaa !28
  %110 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %27)
  %111 = load ptr, ptr %109, align 8, !tbaa !5
  %112 = getelementptr inbounds i8, ptr %111, i64 72
  %113 = load ptr, ptr %112, align 8
  %114 = call noundef i32 %113(ptr noundef nonnull align 8 dereferenceable(12) %109, i32 noundef %1, ptr noundef %110, double noundef %59, ptr noundef nonnull %42)
  %115 = load ptr, ptr %55, align 8, !tbaa !28
  %116 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %106)
  %117 = call noundef ptr @_ZN7qpOASES6Bounds8getFixedEv(ptr noundef nonnull align 8 dereferenceable(120) %27)
  %118 = load ptr, ptr %115, align 8, !tbaa !5
  %119 = getelementptr inbounds i8, ptr %118, i64 144
  %120 = load ptr, ptr %119, align 8
  %121 = call noundef i32 %120(ptr noundef nonnull align 8 dereferenceable(12) %115, ptr noundef %116, ptr noundef %117, i32 noundef 1, double noundef -1.000000e+00, ptr noundef nonnull %36, i32 noundef %14, double noundef 1.000000e+00, ptr noundef nonnull %42, i32 noundef %13)
  %.pre = load ptr, ptr %9, align 8, !tbaa !33
  br i1 %64, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %105
  %122 = getelementptr inbounds i8, ptr %0, i64 192
  %123 = load ptr, ptr %122, align 8, !tbaa !34
  %xtraiter157 = and i64 %32, 1
  %124 = icmp eq i32 %14, 1
  br i1 %124, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter159 = and i64 %32, 2147483646
  br label %125

125:                                              ; preds = %125, %.lr.ph.new
  %indvars.iv130 = phi i64 [ 0, %.lr.ph.new ], [ %indvars.iv.next131.1, %125 ]
  %niter160 = phi i64 [ 0, %.lr.ph.new ], [ %niter160.next.1, %125 ]
  %126 = getelementptr inbounds i32, ptr %.pre, i64 %indvars.iv130
  %127 = load i32, ptr %126, align 4, !tbaa !27
  %128 = add nsw i32 %127, %11
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds double, ptr %123, i64 %129
  %131 = load double, ptr %130, align 8, !tbaa !26
  %132 = getelementptr inbounds double, ptr %52, i64 %indvars.iv130
  store double %131, ptr %132, align 8, !tbaa !26
  %indvars.iv.next131 = or disjoint i64 %indvars.iv130, 1
  %133 = getelementptr inbounds i32, ptr %.pre, i64 %indvars.iv.next131
  %134 = load i32, ptr %133, align 4, !tbaa !27
  %135 = add nsw i32 %134, %11
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds double, ptr %123, i64 %136
  %138 = load double, ptr %137, align 8, !tbaa !26
  %139 = getelementptr inbounds double, ptr %52, i64 %indvars.iv.next131
  store double %138, ptr %139, align 8, !tbaa !26
  %indvars.iv.next131.1 = add nuw nsw i64 %indvars.iv130, 2
  %niter160.next.1 = add i64 %niter160, 2
  %niter160.ncmp.1 = icmp eq i64 %niter160.next.1, %unroll_iter159
  br i1 %niter160.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %125, !llvm.loop !35

._crit_edge.loopexit.unr-lcssa:                   ; preds = %125, %.lr.ph
  %indvars.iv130.unr = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next131.1, %125 ]
  %lcmp.mod158.not = icmp eq i64 %xtraiter157, 0
  br i1 %lcmp.mod158.not, label %._crit_edge, label %._crit_edge.loopexit.epilog-lcssa

._crit_edge.loopexit.epilog-lcssa:                ; preds = %._crit_edge.loopexit.unr-lcssa
  %140 = getelementptr inbounds i32, ptr %.pre, i64 %indvars.iv130.unr
  %141 = load i32, ptr %140, align 4, !tbaa !27
  %142 = add nsw i32 %141, %11
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds double, ptr %123, i64 %143
  %145 = load double, ptr %144, align 8, !tbaa !26
  %146 = getelementptr inbounds double, ptr %52, i64 %indvars.iv130.unr
  store double %145, ptr %146, align 8, !tbaa !26
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit.epilog-lcssa, %._crit_edge.loopexit.unr-lcssa, %105
  %147 = getelementptr inbounds i8, ptr %0, i64 336
  %148 = load double, ptr %147, align 8, !tbaa !36
  %149 = getelementptr inbounds i8, ptr %0, i64 344
  %150 = load double, ptr %149, align 8, !tbaa !37
  %151 = call noundef i32 @_ZNK7qpOASES9QProblemB16performRatioTestEiPKiPKNS_9SubjectToEPKdS7_ddRdRi(ptr noundef nonnull align 8 dereferenceable(800) %0, i32 noundef %14, ptr noundef %.pre, ptr noundef nonnull %106, ptr noundef nonnull %52, ptr noundef nonnull %36, double noundef %148, double noundef %150, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 4 dereferenceable(4) %7)
  %152 = icmp sgt i32 %13, 0
  %.pre150 = load ptr, ptr %5, align 8, !tbaa !33
  br i1 %152, label %.lr.ph115, label %._crit_edge116

.lr.ph115:                                        ; preds = %._crit_edge
  %153 = getelementptr inbounds i8, ptr %0, i64 192
  %154 = load ptr, ptr %153, align 8, !tbaa !34
  %xtraiter162 = and i64 %38, 3
  %155 = icmp ult i32 %13, 4
  br i1 %155, label %._crit_edge116.loopexit.unr-lcssa, label %.lr.ph115.new

.lr.ph115.new:                                    ; preds = %.lr.ph115
  %unroll_iter164 = and i64 %38, 2147483644
  br label %156

156:                                              ; preds = %156, %.lr.ph115.new
  %indvars.iv135 = phi i64 [ 0, %.lr.ph115.new ], [ %indvars.iv.next136.3, %156 ]
  %niter165 = phi i64 [ 0, %.lr.ph115.new ], [ %niter165.next.3, %156 ]
  %157 = getelementptr inbounds i32, ptr %.pre150, i64 %indvars.iv135
  %158 = load i32, ptr %157, align 4, !tbaa !27
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds double, ptr %154, i64 %159
  %161 = load double, ptr %160, align 8, !tbaa !26
  %162 = getelementptr inbounds double, ptr %52, i64 %indvars.iv135
  store double %161, ptr %162, align 8, !tbaa !26
  %indvars.iv.next136 = or disjoint i64 %indvars.iv135, 1
  %163 = getelementptr inbounds i32, ptr %.pre150, i64 %indvars.iv.next136
  %164 = load i32, ptr %163, align 4, !tbaa !27
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds double, ptr %154, i64 %165
  %167 = load double, ptr %166, align 8, !tbaa !26
  %168 = getelementptr inbounds double, ptr %52, i64 %indvars.iv.next136
  store double %167, ptr %168, align 8, !tbaa !26
  %indvars.iv.next136.1 = or disjoint i64 %indvars.iv135, 2
  %169 = getelementptr inbounds i32, ptr %.pre150, i64 %indvars.iv.next136.1
  %170 = load i32, ptr %169, align 4, !tbaa !27
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %154, i64 %171
  %173 = load double, ptr %172, align 8, !tbaa !26
  %174 = getelementptr inbounds double, ptr %52, i64 %indvars.iv.next136.1
  store double %173, ptr %174, align 8, !tbaa !26
  %indvars.iv.next136.2 = or disjoint i64 %indvars.iv135, 3
  %175 = getelementptr inbounds i32, ptr %.pre150, i64 %indvars.iv.next136.2
  %176 = load i32, ptr %175, align 4, !tbaa !27
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds double, ptr %154, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !26
  %180 = getelementptr inbounds double, ptr %52, i64 %indvars.iv.next136.2
  store double %179, ptr %180, align 8, !tbaa !26
  %indvars.iv.next136.3 = add nuw nsw i64 %indvars.iv135, 4
  %niter165.next.3 = add i64 %niter165, 4
  %niter165.ncmp.3 = icmp eq i64 %niter165.next.3, %unroll_iter164
  br i1 %niter165.ncmp.3, label %._crit_edge116.loopexit.unr-lcssa, label %156, !llvm.loop !38

._crit_edge116.loopexit.unr-lcssa:                ; preds = %156, %.lr.ph115
  %indvars.iv135.unr = phi i64 [ 0, %.lr.ph115 ], [ %indvars.iv.next136.3, %156 ]
  %lcmp.mod163.not = icmp eq i64 %xtraiter162, 0
  br i1 %lcmp.mod163.not, label %._crit_edge116, label %.epil.preheader161

.epil.preheader161:                               ; preds = %._crit_edge116.loopexit.unr-lcssa, %.epil.preheader161
  %indvars.iv135.epil = phi i64 [ %indvars.iv.next136.epil, %.epil.preheader161 ], [ %indvars.iv135.unr, %._crit_edge116.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader161 ], [ 0, %._crit_edge116.loopexit.unr-lcssa ]
  %181 = getelementptr inbounds i32, ptr %.pre150, i64 %indvars.iv135.epil
  %182 = load i32, ptr %181, align 4, !tbaa !27
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds double, ptr %154, i64 %183
  %185 = load double, ptr %184, align 8, !tbaa !26
  %186 = getelementptr inbounds double, ptr %52, i64 %indvars.iv135.epil
  store double %185, ptr %186, align 8, !tbaa !26
  %indvars.iv.next136.epil = add nuw nsw i64 %indvars.iv135.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter162
  br i1 %epil.iter.cmp.not, label %._crit_edge116, label %.epil.preheader161, !llvm.loop !39

._crit_edge116:                                   ; preds = %._crit_edge116.loopexit.unr-lcssa, %.epil.preheader161, %._crit_edge
  %187 = load double, ptr %147, align 8, !tbaa !36
  %188 = load double, ptr %149, align 8, !tbaa !37
  %189 = call noundef i32 @_ZNK7qpOASES9QProblemB16performRatioTestEiPKiPKNS_9SubjectToEPKdS7_ddRdRi(ptr noundef nonnull align 8 dereferenceable(800) %0, i32 noundef %13, ptr noundef %.pre150, ptr noundef nonnull %27, ptr noundef nonnull %52, ptr noundef nonnull %42, double noundef %187, double noundef %188, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %190 = load i32, ptr %8, align 4, !tbaa !27
  %191 = icmp sgt i32 %190, -1
  br i1 %191, label %.thread, label %192

.thread:                                          ; preds = %._crit_edge116
  store i32 %190, ptr %7, align 4, !tbaa !27
  br label %.preheader108

192:                                              ; preds = %._crit_edge116
  %.pr = load i32, ptr %7, align 4, !tbaa !27
  %193 = icmp sgt i32 %.pr, -1
  br i1 %193, label %.preheader108, label %308

.preheader108:                                    ; preds = %.thread, %192
  %194 = phi i32 [ %190, %.thread ], [ %.pr, %192 ]
  br i1 %64, label %.lr.ph118, label %.preheader

.lr.ph118:                                        ; preds = %.preheader108
  %195 = load ptr, ptr %9, align 8, !tbaa !33
  %196 = getelementptr inbounds i8, ptr %0, i64 192
  %197 = load ptr, ptr %196, align 8, !tbaa !34
  %xtraiter167 = and i64 %32, 1
  %198 = icmp eq i32 %14, 1
  br i1 %198, label %.preheader.loopexit.unr-lcssa, label %.lr.ph118.new

.lr.ph118.new:                                    ; preds = %.lr.ph118
  %unroll_iter170 = and i64 %32, 2147483646
  br label %214

.preheader.loopexit.unr-lcssa:                    ; preds = %214, %.lr.ph118
  %indvars.iv140.unr = phi i64 [ 0, %.lr.ph118 ], [ %indvars.iv.next141.1, %214 ]
  %lcmp.mod169.not = icmp eq i64 %xtraiter167, 0
  br i1 %lcmp.mod169.not, label %.preheader, label %.preheader.loopexit.epilog-lcssa

.preheader.loopexit.epilog-lcssa:                 ; preds = %.preheader.loopexit.unr-lcssa
  %199 = getelementptr inbounds i32, ptr %195, i64 %indvars.iv140.unr
  %200 = load i32, ptr %199, align 4, !tbaa !27
  %201 = load double, ptr %6, align 8, !tbaa !26
  %202 = getelementptr inbounds double, ptr %36, i64 %indvars.iv140.unr
  %203 = load double, ptr %202, align 8, !tbaa !26
  %204 = add nsw i32 %200, %11
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds double, ptr %197, i64 %205
  %207 = load double, ptr %206, align 8, !tbaa !26
  %208 = fneg double %201
  %209 = call double @llvm.fmuladd.f64(double %208, double %203, double %207)
  store double %209, ptr %206, align 8, !tbaa !26
  br label %.preheader

.preheader:                                       ; preds = %.preheader.loopexit.epilog-lcssa, %.preheader.loopexit.unr-lcssa, %.preheader108
  br i1 %152, label %.lr.ph120, label %._crit_edge121

.lr.ph120:                                        ; preds = %.preheader
  %210 = load ptr, ptr %5, align 8, !tbaa !33
  %211 = getelementptr inbounds i8, ptr %0, i64 192
  %212 = load ptr, ptr %211, align 8, !tbaa !34
  %xtraiter173 = and i64 %38, 1
  %213 = icmp eq i32 %13, 1
  br i1 %213, label %._crit_edge121.loopexit.unr-lcssa, label %.lr.ph120.new

.lr.ph120.new:                                    ; preds = %.lr.ph120
  %unroll_iter176 = and i64 %38, 2147483646
  br label %237

214:                                              ; preds = %214, %.lr.ph118.new
  %indvars.iv140 = phi i64 [ 0, %.lr.ph118.new ], [ %indvars.iv.next141.1, %214 ]
  %niter171 = phi i64 [ 0, %.lr.ph118.new ], [ %niter171.next.1, %214 ]
  %215 = getelementptr inbounds i32, ptr %195, i64 %indvars.iv140
  %216 = load i32, ptr %215, align 4, !tbaa !27
  %217 = load double, ptr %6, align 8, !tbaa !26
  %218 = getelementptr inbounds double, ptr %36, i64 %indvars.iv140
  %219 = load double, ptr %218, align 8, !tbaa !26
  %220 = add nsw i32 %216, %11
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds double, ptr %197, i64 %221
  %223 = load double, ptr %222, align 8, !tbaa !26
  %224 = fneg double %217
  %225 = call double @llvm.fmuladd.f64(double %224, double %219, double %223)
  store double %225, ptr %222, align 8, !tbaa !26
  %indvars.iv.next141 = or disjoint i64 %indvars.iv140, 1
  %226 = getelementptr inbounds i32, ptr %195, i64 %indvars.iv.next141
  %227 = load i32, ptr %226, align 4, !tbaa !27
  %228 = load double, ptr %6, align 8, !tbaa !26
  %229 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next141
  %230 = load double, ptr %229, align 8, !tbaa !26
  %231 = add nsw i32 %227, %11
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds double, ptr %197, i64 %232
  %234 = load double, ptr %233, align 8, !tbaa !26
  %235 = fneg double %228
  %236 = call double @llvm.fmuladd.f64(double %235, double %230, double %234)
  store double %236, ptr %233, align 8, !tbaa !26
  %indvars.iv.next141.1 = add nuw nsw i64 %indvars.iv140, 2
  %niter171.next.1 = add i64 %niter171, 2
  %niter171.ncmp.1 = icmp eq i64 %niter171.next.1, %unroll_iter170
  br i1 %niter171.ncmp.1, label %.preheader.loopexit.unr-lcssa, label %214, !llvm.loop !41

237:                                              ; preds = %237, %.lr.ph120.new
  %indvars.iv145 = phi i64 [ 0, %.lr.ph120.new ], [ %indvars.iv.next146.1, %237 ]
  %niter177 = phi i64 [ 0, %.lr.ph120.new ], [ %niter177.next.1, %237 ]
  %238 = getelementptr inbounds i32, ptr %210, i64 %indvars.iv145
  %239 = load i32, ptr %238, align 4, !tbaa !27
  %240 = load double, ptr %6, align 8, !tbaa !26
  %241 = getelementptr inbounds double, ptr %42, i64 %indvars.iv145
  %242 = load double, ptr %241, align 8, !tbaa !26
  %243 = sext i32 %239 to i64
  %244 = getelementptr inbounds double, ptr %212, i64 %243
  %245 = load double, ptr %244, align 8, !tbaa !26
  %246 = fneg double %240
  %247 = call double @llvm.fmuladd.f64(double %246, double %242, double %245)
  store double %247, ptr %244, align 8, !tbaa !26
  %indvars.iv.next146 = or disjoint i64 %indvars.iv145, 1
  %248 = getelementptr inbounds i32, ptr %210, i64 %indvars.iv.next146
  %249 = load i32, ptr %248, align 4, !tbaa !27
  %250 = load double, ptr %6, align 8, !tbaa !26
  %251 = getelementptr inbounds double, ptr %42, i64 %indvars.iv.next146
  %252 = load double, ptr %251, align 8, !tbaa !26
  %253 = sext i32 %249 to i64
  %254 = getelementptr inbounds double, ptr %212, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !26
  %256 = fneg double %250
  %257 = call double @llvm.fmuladd.f64(double %256, double %252, double %255)
  store double %257, ptr %254, align 8, !tbaa !26
  %indvars.iv.next146.1 = add nuw nsw i64 %indvars.iv145, 2
  %niter177.next.1 = add i64 %niter177, 2
  %niter177.ncmp.1 = icmp eq i64 %niter177.next.1, %unroll_iter176
  br i1 %niter177.ncmp.1, label %._crit_edge121.loopexit.unr-lcssa, label %237, !llvm.loop !42

._crit_edge121.loopexit.unr-lcssa:                ; preds = %237, %.lr.ph120
  %indvars.iv145.unr = phi i64 [ 0, %.lr.ph120 ], [ %indvars.iv.next146.1, %237 ]
  %lcmp.mod175.not = icmp eq i64 %xtraiter173, 0
  br i1 %lcmp.mod175.not, label %._crit_edge121, label %._crit_edge121.loopexit.epilog-lcssa

._crit_edge121.loopexit.epilog-lcssa:             ; preds = %._crit_edge121.loopexit.unr-lcssa
  %258 = getelementptr inbounds i32, ptr %210, i64 %indvars.iv145.unr
  %259 = load i32, ptr %258, align 4, !tbaa !27
  %260 = load double, ptr %6, align 8, !tbaa !26
  %261 = getelementptr inbounds double, ptr %42, i64 %indvars.iv145.unr
  %262 = load double, ptr %261, align 8, !tbaa !26
  %263 = sext i32 %259 to i64
  %264 = getelementptr inbounds double, ptr %212, i64 %263
  %265 = load double, ptr %264, align 8, !tbaa !26
  %266 = fneg double %260
  %267 = call double @llvm.fmuladd.f64(double %266, double %262, double %265)
  store double %267, ptr %264, align 8, !tbaa !26
  br label %._crit_edge121

._crit_edge121:                                   ; preds = %._crit_edge121.loopexit.epilog-lcssa, %._crit_edge121.loopexit.unr-lcssa, %.preheader
  %268 = load double, ptr %6, align 8, !tbaa !26
  %269 = fneg double %268
  %.sink = select i1 %58, double %268, double %269
  %270 = getelementptr inbounds i8, ptr %0, i64 192
  %271 = load ptr, ptr %270, align 8, !tbaa !34
  %272 = add nsw i32 %11, %1
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds double, ptr %271, i64 %273
  store double %.sink, ptr %274, align 8, !tbaa !26
  br i1 %191, label %275, label %291

275:                                              ; preds = %._crit_edge121
  %276 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 160, ptr noundef nonnull @.str.42, i32 noundef %194) #10
  %277 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %278 = call noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %277, i32 noundef 82, ptr noundef nonnull %10, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 3247, i32 noundef 1)
  %279 = load i32, ptr %7, align 4, !tbaa !27
  %280 = load ptr, ptr %0, align 8, !tbaa !5
  %281 = getelementptr inbounds i8, ptr %280, i64 256
  %282 = load ptr, ptr %281, align 8
  %283 = call noundef i32 %282(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %279, i32 noundef 1, i32 noundef 0, i32 noundef 0)
  %.not107 = icmp eq i32 %283, 0
  br i1 %.not107, label %284, label %316

284:                                              ; preds = %275
  %285 = getelementptr inbounds i8, ptr %0, i64 788
  store i32 1, ptr %285, align 4, !tbaa !43
  %286 = getelementptr inbounds i8, ptr %0, i64 192
  %287 = load ptr, ptr %286, align 8, !tbaa !34
  %288 = load i32, ptr %7, align 4, !tbaa !27
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds double, ptr %287, i64 %289
  store double 0.000000e+00, ptr %290, align 8, !tbaa !26
  br label %316

291:                                              ; preds = %._crit_edge121
  %292 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %10, i64 noundef 160, ptr noundef nonnull @.str.43, i32 noundef %194) #10
  %293 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %294 = call noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %293, i32 noundef 82, ptr noundef nonnull %10, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 3263, i32 noundef 1)
  %295 = load i32, ptr %7, align 4, !tbaa !27
  %296 = load ptr, ptr %0, align 8, !tbaa !5
  %297 = getelementptr inbounds i8, ptr %296, i64 248
  %298 = load ptr, ptr %297, align 8
  %299 = call noundef i32 %298(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %295, i32 noundef 1, i32 noundef 0, i32 noundef 0)
  %.not106 = icmp eq i32 %299, 0
  br i1 %.not106, label %300, label %316

300:                                              ; preds = %291
  %301 = getelementptr inbounds i8, ptr %0, i64 796
  store i32 1, ptr %301, align 4, !tbaa !44
  %302 = getelementptr inbounds i8, ptr %0, i64 192
  %303 = load ptr, ptr %302, align 8, !tbaa !34
  %304 = load i32, ptr %7, align 4, !tbaa !27
  %305 = add nsw i32 %304, %11
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds double, ptr %303, i64 %306
  store double 0.000000e+00, ptr %307, align 8, !tbaa !26
  br label %316

308:                                              ; preds = %192
  %309 = getelementptr inbounds i8, ptr %0, i64 476
  %310 = load i32, ptr %309, align 4, !tbaa !45
  %311 = icmp eq i32 %310, 1
  br i1 %311, label %312, label %314

312:                                              ; preds = %308
  %313 = call noundef i32 @_ZN7qpOASES8QProblem15dropInfeasiblesEiNS_15SubjectToStatusENS_11BooleanTypeEPdS3_(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1, i32 noundef %2, i32 noundef 0, ptr noundef nonnull %42, ptr noundef nonnull %36)
  br label %316

314:                                              ; preds = %308
  %315 = call noundef i32 @_ZN7qpOASES9QProblemB20setInfeasibilityFlagENS_11returnValueENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %0, i32 noundef 93, i32 noundef 0)
  br label %316

316:                                              ; preds = %312, %314, %284, %300, %.split.us, %275, %291
  %.097 = phi i32 [ 0, %284 ], [ 0, %300 ], [ %313, %312 ], [ 93, %314 ], [ 92, %.split.us ], [ 84, %275 ], [ 84, %291 ]
  call void @_ZdaPv(ptr noundef nonnull %52) #12
  call void @_ZdaPv(ptr noundef nonnull %47) #12
  call void @_ZdaPv(ptr noundef nonnull %42) #12
  call void @_ZdaPv(ptr noundef nonnull %37) #12
  call void @_ZdaPv(ptr noundef nonnull %36) #12
  %317 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %318 = call noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %317, i32 noundef 90, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 3297, i32 noundef 1)
  switch i32 %.097, label %319 [
    i32 93, label %322
    i32 0, label %322
  ]

319:                                              ; preds = %316
  %320 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %321 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %320, i32 noundef %.097, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 3299, i32 noundef 1)
  br label %322

322:                                              ; preds = %316, %316, %319
  %323 = phi i32 [ %321, %319 ], [ %.097, %316 ], [ %.097, %316 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #10
  br label %324

324:                                              ; preds = %3, %322, %23
  %.098 = phi i32 [ %25, %23 ], [ %323, %322 ], [ 0, %3 ]
  ret i32 %.098
}

declare noundef i32 @_ZNK7qpOASES9QProblemB16performRatioTestEiPKiPKNS_9SubjectToEPKdS7_ddRdRi(ptr noundef nonnull align 8 dereferenceable(800), i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, double noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

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

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

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

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

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


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