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

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

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #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) #0

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK7qpOASES9QProblemB25obtainAuxiliaryWorkingSetEPKdS2_PKNS_6BoundsEPS3_(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #4 align 2 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  %15 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  store i32 0, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %16 = call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %15)
  store i32 %16, ptr %13, align 4, !tbaa !9
  %17 = load ptr, ptr %11, align 8, !tbaa !5
  %18 = icmp eq ptr %17, null
  br i1 %18, label %23, label %19

19:                                               ; preds = %5
  %20 = load ptr, ptr %11, align 8, !tbaa !5
  %21 = load ptr, ptr %10, align 8, !tbaa !5
  %22 = icmp eq ptr %20, %21
  br i1 %22, label %23, label %26

23:                                               ; preds = %19, %5
  %24 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %25 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %24, i32 noundef 3, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1489, i32 noundef 1)
  store i32 %25, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

26:                                               ; preds = %19
  %27 = load ptr, ptr %10, align 8, !tbaa !5
  %28 = icmp ne ptr %27, null
  br i1 %28, label %29, label %65

29:                                               ; preds = %26
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %30

30:                                               ; preds = %61, %29
  %31 = load i32, ptr %12, align 4, !tbaa !9
  %32 = load i32, ptr %13, align 4, !tbaa !9
  %33 = icmp slt i32 %31, %32
  br i1 %33, label %34, label %64

34:                                               ; preds = %30
  %35 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %15, i32 0, i32 6
  %36 = load i32, ptr %12, align 4, !tbaa !9
  %37 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %35, i32 noundef %36)
  %38 = icmp eq i32 %37, 2
  br i1 %38, label %39, label %48

39:                                               ; preds = %34
  %40 = load ptr, ptr %11, align 8, !tbaa !5
  %41 = load i32, ptr %12, align 4, !tbaa !9
  %42 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %40, i32 noundef %41, i32 noundef -1)
  %43 = icmp ne i32 %42, 0
  br i1 %43, label %44, label %47

44:                                               ; preds = %39
  %45 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %46 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %45, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1503, i32 noundef 1)
  store i32 %46, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

47:                                               ; preds = %39
  br label %60

48:                                               ; preds = %34
  %49 = load ptr, ptr %11, align 8, !tbaa !5
  %50 = load i32, ptr %12, align 4, !tbaa !9
  %51 = load ptr, ptr %10, align 8, !tbaa !5
  %52 = load i32, ptr %12, align 4, !tbaa !9
  %53 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %51, i32 noundef %52)
  %54 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %49, i32 noundef %50, i32 noundef %53)
  %55 = icmp ne i32 %54, 0
  br i1 %55, label %56, label %59

56:                                               ; preds = %48
  %57 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %58 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %57, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1509, i32 noundef 1)
  store i32 %58, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

59:                                               ; preds = %48
  br label %60

60:                                               ; preds = %59, %47
  br label %61

61:                                               ; preds = %60
  %62 = load i32, ptr %12, align 4, !tbaa !9
  %63 = add nsw i32 %62, 1
  store i32 %63, ptr %12, align 4, !tbaa !9
  br label %30, !llvm.loop !11

64:                                               ; preds = %30
  br label %275

65:                                               ; preds = %26
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = icmp ne ptr %66, null
  br i1 %67, label %68, label %156

68:                                               ; preds = %65
  %69 = load ptr, ptr %9, align 8, !tbaa !5
  %70 = icmp eq ptr %69, null
  br i1 %70, label %71, label %156

71:                                               ; preds = %68
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %72

72:                                               ; preds = %152, %71
  %73 = load i32, ptr %12, align 4, !tbaa !9
  %74 = load i32, ptr %13, align 4, !tbaa !9
  %75 = icmp slt i32 %73, %74
  br i1 %75, label %76, label %155

76:                                               ; preds = %72
  %77 = load ptr, ptr %8, align 8, !tbaa !5
  %78 = load i32, ptr %12, align 4, !tbaa !9
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds double, ptr %77, i64 %79
  %81 = load double, ptr %80, align 8, !tbaa !13
  %82 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %15, i32 0, i32 4
  %83 = load ptr, ptr %82, align 8, !tbaa !15
  %84 = load i32, ptr %12, align 4, !tbaa !9
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds double, ptr %83, i64 %85
  %87 = load double, ptr %86, align 8, !tbaa !13
  %88 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %15, i32 0, i32 23
  %89 = getelementptr inbounds %"class.qpOASES::Options", ptr %88, i32 0, i32 11
  %90 = load double, ptr %89, align 8, !tbaa !29
  %91 = fadd double %87, %90
  %92 = fcmp ole double %81, %91
  br i1 %92, label %93, label %102

93:                                               ; preds = %76
  %94 = load ptr, ptr %11, align 8, !tbaa !5
  %95 = load i32, ptr %12, align 4, !tbaa !9
  %96 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %94, i32 noundef %95, i32 noundef -1)
  %97 = icmp ne i32 %96, 0
  br i1 %97, label %98, label %101

98:                                               ; preds = %93
  %99 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %100 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %99, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1523, i32 noundef 1)
  store i32 %100, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

101:                                              ; preds = %93
  br label %152

102:                                              ; preds = %76
  %103 = load ptr, ptr %8, align 8, !tbaa !5
  %104 = load i32, ptr %12, align 4, !tbaa !9
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds double, ptr %103, i64 %105
  %107 = load double, ptr %106, align 8, !tbaa !13
  %108 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %15, i32 0, i32 5
  %109 = load ptr, ptr %108, align 8, !tbaa !30
  %110 = load i32, ptr %12, align 4, !tbaa !9
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds double, ptr %109, i64 %111
  %113 = load double, ptr %112, align 8, !tbaa !13
  %114 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %15, i32 0, i32 23
  %115 = getelementptr inbounds %"class.qpOASES::Options", ptr %114, i32 0, i32 11
  %116 = load double, ptr %115, align 8, !tbaa !29
  %117 = fsub double %113, %116
  %118 = fcmp oge double %107, %117
  br i1 %118, label %119, label %128

119:                                              ; preds = %102
  %120 = load ptr, ptr %11, align 8, !tbaa !5
  %121 = load i32, ptr %12, align 4, !tbaa !9
  %122 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %120, i32 noundef %121, i32 noundef 1)
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %124, label %127

124:                                              ; preds = %119
  %125 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %126 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %125, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1530, i32 noundef 1)
  store i32 %126, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

127:                                              ; preds = %119
  br label %152

128:                                              ; preds = %102
  %129 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %15, i32 0, i32 6
  %130 = load i32, ptr %12, align 4, !tbaa !9
  %131 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %129, i32 noundef %130)
  %132 = icmp eq i32 %131, 2
  br i1 %132, label %133, label %142

133:                                              ; preds = %128
  %134 = load ptr, ptr %11, align 8, !tbaa !5
  %135 = load i32, ptr %12, align 4, !tbaa !9
  %136 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %134, i32 noundef %135, i32 noundef -1)
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %138, label %141

138:                                              ; preds = %133
  %139 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %140 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %139, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1539, i32 noundef 1)
  store i32 %140, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

141:                                              ; preds = %133
  br label %151

142:                                              ; preds = %128
  %143 = load ptr, ptr %11, align 8, !tbaa !5
  %144 = load i32, ptr %12, align 4, !tbaa !9
  %145 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %143, i32 noundef %144, i32 noundef 0)
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %150

147:                                              ; preds = %142
  %148 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %149 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %148, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1545, i32 noundef 1)
  store i32 %149, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

150:                                              ; preds = %142
  br label %151

151:                                              ; preds = %150, %141
  br label %152

152:                                              ; preds = %151, %127, %101
  %153 = load i32, ptr %12, align 4, !tbaa !9
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %12, align 4, !tbaa !9
  br label %72, !llvm.loop !31

155:                                              ; preds = %72
  br label %156

156:                                              ; preds = %155, %68, %65
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = icmp ne ptr %157, null
  br i1 %158, label %159, label %224

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

160:                                              ; preds = %220, %159
  %161 = load i32, ptr %12, align 4, !tbaa !9
  %162 = load i32, ptr %13, align 4, !tbaa !9
  %163 = icmp slt i32 %161, %162
  br i1 %163, label %164, label %223

164:                                              ; preds = %160
  %165 = load ptr, ptr %9, align 8, !tbaa !5
  %166 = load i32, ptr %12, align 4, !tbaa !9
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds double, ptr %165, i64 %167
  %169 = load double, ptr %168, align 8, !tbaa !13
  %170 = fcmp ogt double %169, 2.221000e-16
  br i1 %170, label %171, label %180

171:                                              ; preds = %164
  %172 = load ptr, ptr %11, align 8, !tbaa !5
  %173 = load i32, ptr %12, align 4, !tbaa !9
  %174 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %172, i32 noundef %173, i32 noundef -1)
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %179

176:                                              ; preds = %171
  %177 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %178 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %177, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1558, i32 noundef 1)
  store i32 %178, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

179:                                              ; preds = %171
  br label %220

180:                                              ; preds = %164
  %181 = load ptr, ptr %9, align 8, !tbaa !5
  %182 = load i32, ptr %12, align 4, !tbaa !9
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds double, ptr %181, i64 %183
  %185 = load double, ptr %184, align 8, !tbaa !13
  %186 = fcmp olt double %185, -2.221000e-16
  br i1 %186, label %187, label %196

187:                                              ; preds = %180
  %188 = load ptr, ptr %11, align 8, !tbaa !5
  %189 = load i32, ptr %12, align 4, !tbaa !9
  %190 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %188, i32 noundef %189, i32 noundef 1)
  %191 = icmp ne i32 %190, 0
  br i1 %191, label %192, label %195

192:                                              ; preds = %187
  %193 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %194 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %193, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1565, i32 noundef 1)
  store i32 %194, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

195:                                              ; preds = %187
  br label %220

196:                                              ; preds = %180
  %197 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %15, i32 0, i32 6
  %198 = load i32, ptr %12, align 4, !tbaa !9
  %199 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %197, i32 noundef %198)
  %200 = icmp eq i32 %199, 2
  br i1 %200, label %201, label %210

201:                                              ; preds = %196
  %202 = load ptr, ptr %11, align 8, !tbaa !5
  %203 = load i32, ptr %12, align 4, !tbaa !9
  %204 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %202, i32 noundef %203, i32 noundef -1)
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %209

206:                                              ; preds = %201
  %207 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %208 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %207, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1574, i32 noundef 1)
  store i32 %208, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

209:                                              ; preds = %201
  br label %219

210:                                              ; preds = %196
  %211 = load ptr, ptr %11, align 8, !tbaa !5
  %212 = load i32, ptr %12, align 4, !tbaa !9
  %213 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %211, i32 noundef %212, i32 noundef 0)
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %218

215:                                              ; preds = %210
  %216 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %217 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %216, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1580, i32 noundef 1)
  store i32 %217, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

218:                                              ; preds = %210
  br label %219

219:                                              ; preds = %218, %209
  br label %220

220:                                              ; preds = %219, %195, %179
  %221 = load i32, ptr %12, align 4, !tbaa !9
  %222 = add nsw i32 %221, 1
  store i32 %222, ptr %12, align 4, !tbaa !9
  br label %160, !llvm.loop !32

223:                                              ; preds = %160
  br label %224

224:                                              ; preds = %223, %156
  %225 = load ptr, ptr %8, align 8, !tbaa !5
  %226 = icmp eq ptr %225, null
  br i1 %226, label %227, label %274

227:                                              ; preds = %224
  %228 = load ptr, ptr %9, align 8, !tbaa !5
  %229 = icmp eq ptr %228, null
  br i1 %229, label %230, label %274

230:                                              ; preds = %227
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %270, %230
  %232 = load i32, ptr %12, align 4, !tbaa !9
  %233 = load i32, ptr %13, align 4, !tbaa !9
  %234 = icmp slt i32 %232, %233
  br i1 %234, label %235, label %273

235:                                              ; preds = %231
  %236 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %15, i32 0, i32 6
  %237 = load i32, ptr %12, align 4, !tbaa !9
  %238 = call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %236, i32 noundef %237)
  switch i32 %238, label %257 [
    i32 0, label %239
    i32 2, label %248
  ]

239:                                              ; preds = %235
  %240 = load ptr, ptr %11, align 8, !tbaa !5
  %241 = load i32, ptr %12, align 4, !tbaa !9
  %242 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %240, i32 noundef %241, i32 noundef 0)
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %244, label %247

244:                                              ; preds = %239
  %245 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %246 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %245, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1596, i32 noundef 1)
  store i32 %246, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

247:                                              ; preds = %239
  br label %269

248:                                              ; preds = %235
  %249 = load ptr, ptr %11, align 8, !tbaa !5
  %250 = load i32, ptr %12, align 4, !tbaa !9
  %251 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %249, i32 noundef %250, i32 noundef -1)
  %252 = icmp ne i32 %251, 0
  br i1 %252, label %253, label %256

253:                                              ; preds = %248
  %254 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %255 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %254, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1603, i32 noundef 1)
  store i32 %255, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

256:                                              ; preds = %248
  br label %269

257:                                              ; preds = %235
  %258 = load ptr, ptr %11, align 8, !tbaa !5
  %259 = load i32, ptr %12, align 4, !tbaa !9
  %260 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %15, i32 0, i32 23
  %261 = getelementptr inbounds %"class.qpOASES::Options", ptr %260, i32 0, i32 21
  %262 = load i32, ptr %261, align 8, !tbaa !33
  %263 = call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %258, i32 noundef %259, i32 noundef %262)
  %264 = icmp ne i32 %263, 0
  br i1 %264, label %265, label %268

265:                                              ; preds = %257
  %266 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %267 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %266, i32 noundef 41, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 1609, i32 noundef 1)
  store i32 %267, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

268:                                              ; preds = %257
  br label %269

269:                                              ; preds = %268, %256, %247
  br label %270

270:                                              ; preds = %269
  %271 = load i32, ptr %12, align 4, !tbaa !9
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr %12, align 4, !tbaa !9
  br label %231, !llvm.loop !34

273:                                              ; preds = %231
  br label %274

274:                                              ; preds = %273, %227, %224
  br label %275

275:                                              ; preds = %274, %64
  store i32 0, ptr %6, align 4
  store i32 1, ptr %14, align 4
  br label %276

276:                                              ; preds = %275, %265, %253, %244, %215, %206, %192, %176, %147, %138, %124, %98, %56, %44, %23
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  %277 = load i32, ptr %6, align 4
  ret i32 %277
}

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

declare noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef, i32 noundef) #0

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

!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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!16, !6, i64 32}
!16 = !{!"_ZTSN7qpOASES9QProblemBE", !17, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !18, i64 48, !6, i64 168, !17, i64 176, !6, i64 184, !6, i64 192, !14, i64 200, !21, i64 208, !17, i64 212, !17, i64 216, !22, i64 220, !14, i64 224, !10, i64 232, !6, i64 240, !14, i64 248, !14, i64 256, !10, i64 264, !23, i64 272, !26, i64 496, !28, i64 768}
!17 = !{!"_ZTSN7qpOASES11BooleanTypeE", !7, i64 0}
!18 = !{!"_ZTSN7qpOASES6BoundsE", !19, i64 0, !20, i64 40, !20, i64 80}
!19 = !{!"_ZTSN7qpOASES9SubjectToE", !10, i64 8, !6, i64 16, !6, i64 24, !17, i64 32, !17, i64 36}
!20 = !{!"_ZTSN7qpOASES9IndexlistE", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32}
!21 = !{!"_ZTSN7qpOASES14QProblemStatusE", !7, i64 0}
!22 = !{!"_ZTSN7qpOASES11HessianTypeE", !7, i64 0}
!23 = !{!"_ZTSN7qpOASES7OptionsE", !24, i64 0, !17, i64 4, !17, i64 8, !17, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !10, i64 28, !10, i64 32, !17, i64 36, !14, i64 40, !14, i64 48, !14, i64 56, !14, i64 64, !14, i64 72, !14, i64 80, !14, i64 88, !14, i64 96, !14, i64 104, !14, i64 112, !14, i64 120, !25, i64 128, !14, i64 136, !10, i64 144, !14, i64 152, !10, i64 160, !14, i64 168, !14, i64 176, !14, i64 184, !14, i64 192, !17, i64 200, !17, i64 204, !10, i64 208, !10, i64 212, !10, i64 216}
!24 = !{!"_ZTSN7qpOASES10PrintLevelE", !7, i64 0}
!25 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !7, i64 0}
!26 = !{!"_ZTSN7qpOASES7FlipperE", !10, i64 0, !10, i64 4, !18, i64 8, !27, i64 128, !6, i64 248, !6, i64 256, !6, i64 264}
!27 = !{!"_ZTSN7qpOASES11ConstraintsE", !19, i64 0, !20, i64 40, !20, i64 80}
!28 = !{!"_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}
!29 = !{!16, !14, i64 320}
!30 = !{!16, !6, i64 40}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = !{!16, !25, i64 400}
!34 = distinct !{!34, !12}


; 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 [104 x i8], align 1

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() local_unnamed_addr #0

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK7qpOASES9QProblemB25obtainAuxiliaryWorkingSetEPKdS2_PKNS_6BoundsEPS3_(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef readonly %1, ptr noundef readonly %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #3 align 2 {
  %6 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %7 = icmp eq ptr %4, null
  %8 = icmp eq ptr %4, %3
  %or.cond88 = or i1 %7, %8
  br i1 %or.cond88, label %9, label %12

9:                                                ; preds = %5
  %10 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %11 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %10, i32 noundef 3, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1489, i32 noundef 1)
  br label %.thread

12:                                               ; preds = %5
  %.not = icmp eq ptr %3, null
  br i1 %.not, label %31, label %.preheader93

.preheader93:                                     ; preds = %12
  %13 = icmp sgt i32 %6, 0
  br i1 %13, label %.lr.ph, label %.thread

.lr.ph:                                           ; preds = %.preheader93
  %14 = getelementptr inbounds i8, ptr %0, i64 48
  br label %15

15:                                               ; preds = %.lr.ph, %29
  %.06795 = phi i32 [ 0, %.lr.ph ], [ %30, %29 ]
  %16 = tail call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %14, i32 noundef %.06795)
  %17 = icmp eq i32 %16, 2
  br i1 %17, label %18, label %23

18:                                               ; preds = %15
  %19 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %.06795, i32 noundef -1)
  %.not87 = icmp eq i32 %19, 0
  br i1 %.not87, label %29, label %20

20:                                               ; preds = %18
  %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 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1503, i32 noundef 1)
  br label %.thread

23:                                               ; preds = %15
  %24 = tail call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %3, i32 noundef %.06795)
  %25 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %.06795, i32 noundef %24)
  %.not86 = icmp eq i32 %25, 0
  br i1 %.not86, label %29, label %26

26:                                               ; preds = %23
  %27 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %28 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %27, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1509, i32 noundef 1)
  br label %.thread

29:                                               ; preds = %18, %23
  %30 = add nuw nsw i32 %.06795, 1
  %exitcond.not = icmp eq i32 %30, %6
  br i1 %exitcond.not, label %.thread, label %15, !llvm.loop !5

31:                                               ; preds = %12
  %32 = icmp ne ptr %1, null
  %33 = icmp eq ptr %2, null
  %34 = icmp sgt i32 %6, 0
  %35 = and i1 %32, %34
  %or.cond102 = and i1 %35, %33
  br i1 %or.cond102, label %.lr.ph97, label %.loopexit

.lr.ph97:                                         ; preds = %31
  %36 = getelementptr inbounds i8, ptr %0, i64 32
  %37 = getelementptr inbounds i8, ptr %0, i64 320
  %38 = getelementptr inbounds i8, ptr %0, i64 40
  %39 = getelementptr inbounds i8, ptr %0, i64 48
  %wide.trip.count = zext nneg i32 %6 to i64
  br label %40

40:                                               ; preds = %.lr.ph97, %80
  %indvars.iv = phi i64 [ 0, %.lr.ph97 ], [ %indvars.iv.next, %80 ]
  %41 = getelementptr inbounds double, ptr %1, i64 %indvars.iv
  %42 = load double, ptr %41, align 8, !tbaa !7
  %43 = load ptr, ptr %36, align 8, !tbaa !11
  %44 = getelementptr inbounds double, ptr %43, i64 %indvars.iv
  %45 = load double, ptr %44, align 8, !tbaa !7
  %46 = load double, ptr %37, align 8, !tbaa !27
  %47 = fadd double %45, %46
  %48 = fcmp ugt double %42, %47
  br i1 %48, label %55, label %49

49:                                               ; preds = %40
  %50 = trunc nuw nsw i64 %indvars.iv to i32
  %51 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %50, i32 noundef -1)
  %.not85 = icmp eq i32 %51, 0
  br i1 %.not85, label %80, label %52

52:                                               ; preds = %49
  %53 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %54 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %53, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1523, i32 noundef 1)
  br label %.thread

55:                                               ; preds = %40
  %56 = load ptr, ptr %38, align 8, !tbaa !28
  %57 = getelementptr inbounds double, ptr %56, i64 %indvars.iv
  %58 = load double, ptr %57, align 8, !tbaa !7
  %59 = fsub double %58, %46
  %60 = fcmp ult double %42, %59
  %61 = trunc nuw nsw i64 %indvars.iv to i32
  br i1 %60, label %67, label %62

62:                                               ; preds = %55
  %63 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %61, i32 noundef 1)
  %.not84 = icmp eq i32 %63, 0
  br i1 %.not84, label %80, label %64

64:                                               ; preds = %62
  %65 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %66 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %65, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1530, i32 noundef 1)
  br label %.thread

67:                                               ; preds = %55
  %68 = tail call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %39, i32 noundef %61)
  %69 = icmp eq i32 %68, 2
  br i1 %69, label %70, label %75

70:                                               ; preds = %67
  %71 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %61, i32 noundef -1)
  %.not83 = icmp eq i32 %71, 0
  br i1 %.not83, label %80, label %72

72:                                               ; preds = %70
  %73 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %74 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %73, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1539, i32 noundef 1)
  br label %.thread

75:                                               ; preds = %67
  %76 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %61, i32 noundef 0)
  %.not82 = icmp eq i32 %76, 0
  br i1 %.not82, label %80, label %77

77:                                               ; preds = %75
  %78 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %79 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %78, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1545, i32 noundef 1)
  br label %.thread

80:                                               ; preds = %70, %75, %62, %49
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond107.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond107.not, label %.loopexit, label %40, !llvm.loop !29

.loopexit:                                        ; preds = %80, %31
  br i1 %33, label %114, label %.preheader90

.preheader90:                                     ; preds = %.loopexit
  br i1 %34, label %.lr.ph99, label %.thread

.lr.ph99:                                         ; preds = %.preheader90
  %81 = getelementptr inbounds i8, ptr %0, i64 48
  %wide.trip.count111 = zext nneg i32 %6 to i64
  br label %82

82:                                               ; preds = %.lr.ph99, %113
  %indvars.iv108 = phi i64 [ 0, %.lr.ph99 ], [ %indvars.iv.next109, %113 ]
  %83 = getelementptr inbounds double, ptr %2, i64 %indvars.iv108
  %84 = load double, ptr %83, align 8, !tbaa !7
  %85 = fcmp ogt double %84, 2.221000e-16
  br i1 %85, label %86, label %92

86:                                               ; preds = %82
  %87 = trunc nuw nsw i64 %indvars.iv108 to i32
  %88 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %87, i32 noundef -1)
  %.not81 = icmp eq i32 %88, 0
  br i1 %.not81, label %113, label %89

89:                                               ; preds = %86
  %90 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %91 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %90, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1558, i32 noundef 1)
  br label %.thread

92:                                               ; preds = %82
  %93 = fcmp olt double %84, -2.221000e-16
  %94 = trunc nuw nsw i64 %indvars.iv108 to i32
  br i1 %93, label %95, label %100

95:                                               ; preds = %92
  %96 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %94, i32 noundef 1)
  %.not80 = icmp eq i32 %96, 0
  br i1 %.not80, label %113, label %97

97:                                               ; preds = %95
  %98 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %99 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %98, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1565, i32 noundef 1)
  br label %.thread

100:                                              ; preds = %92
  %101 = tail call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %81, i32 noundef %94)
  %102 = icmp eq i32 %101, 2
  br i1 %102, label %103, label %108

103:                                              ; preds = %100
  %104 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %94, i32 noundef -1)
  %.not79 = icmp eq i32 %104, 0
  br i1 %.not79, label %113, label %105

105:                                              ; preds = %103
  %106 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %107 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %106, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1574, i32 noundef 1)
  br label %.thread

108:                                              ; preds = %100
  %109 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %94, i32 noundef 0)
  %.not78 = icmp eq i32 %109, 0
  br i1 %.not78, label %113, label %110

110:                                              ; preds = %108
  %111 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %112 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %111, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1580, i32 noundef 1)
  br label %.thread

113:                                              ; preds = %103, %108, %95, %86
  %indvars.iv.next109 = add nuw nsw i64 %indvars.iv108, 1
  %exitcond112.not = icmp eq i64 %indvars.iv.next109, %wide.trip.count111
  br i1 %exitcond112.not, label %.thread, label %82, !llvm.loop !30

114:                                              ; preds = %.loopexit
  %115 = icmp eq ptr %1, null
  %or.cond103 = and i1 %115, %34
  br i1 %or.cond103, label %.lr.ph101, label %.thread

.lr.ph101:                                        ; preds = %114
  %116 = getelementptr inbounds i8, ptr %0, i64 48
  %117 = getelementptr inbounds i8, ptr %0, i64 400
  br label %118

118:                                              ; preds = %.lr.ph101, %136
  %.3100 = phi i32 [ 0, %.lr.ph101 ], [ %137, %136 ]
  %119 = tail call noundef i32 @_ZNK7qpOASES9SubjectTo7getTypeEi(ptr noundef nonnull align 8 dereferenceable(40) %116, i32 noundef %.3100)
  switch i32 %119, label %130 [
    i32 0, label %120
    i32 2, label %125
  ]

120:                                              ; preds = %118
  %121 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %.3100, i32 noundef 0)
  %.not76 = icmp eq i32 %121, 0
  br i1 %.not76, label %136, label %122

122:                                              ; preds = %120
  %123 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %124 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %123, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1596, i32 noundef 1)
  br label %.thread

125:                                              ; preds = %118
  %126 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %.3100, i32 noundef -1)
  %.not75 = icmp eq i32 %126, 0
  br i1 %.not75, label %136, label %127

127:                                              ; preds = %125
  %128 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %129 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %128, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1603, i32 noundef 1)
  br label %.thread

130:                                              ; preds = %118
  %131 = load i32, ptr %117, align 8, !tbaa !31
  %132 = tail call noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %4, i32 noundef %.3100, i32 noundef %131)
  %.not77 = icmp eq i32 %132, 0
  br i1 %.not77, label %136, label %133

133:                                              ; preds = %130
  %134 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %135 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %134, i32 noundef 41, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 1609, i32 noundef 1)
  br label %.thread

136:                                              ; preds = %120, %125, %130
  %137 = add nuw nsw i32 %.3100, 1
  %exitcond113.not = icmp eq i32 %137, %6
  br i1 %exitcond113.not, label %.thread, label %118, !llvm.loop !32

.thread:                                          ; preds = %29, %113, %136, %.preheader93, %.preheader90, %114, %133, %127, %122, %110, %105, %97, %89, %77, %72, %64, %52, %26, %20, %9
  %.0 = phi i32 [ %11, %9 ], [ %22, %20 ], [ %28, %26 ], [ %54, %52 ], [ %66, %64 ], [ %74, %72 ], [ %79, %77 ], [ %91, %89 ], [ %99, %97 ], [ %107, %105 ], [ %112, %110 ], [ %135, %133 ], [ %129, %127 ], [ %124, %122 ], [ 0, %114 ], [ 0, %.preheader90 ], [ 0, %.preheader93 ], [ 0, %136 ], [ 0, %113 ], [ 0, %29 ]
  ret i32 %.0
}

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

declare noundef i32 @_ZN7qpOASES6Bounds10setupBoundEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef, i32 noundef) local_unnamed_addr #0

attributes #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 = { 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 #2 = { 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 #3 = { 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" }

!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 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = !{!8, !8, i64 0}
!8 = !{!"double", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!12, !14, i64 32}
!12 = !{!"_ZTSN7qpOASES9QProblemBE", !13, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !15, i64 48, !14, i64 168, !13, i64 176, !14, i64 184, !14, i64 192, !8, i64 200, !19, i64 208, !13, i64 212, !13, i64 216, !20, i64 220, !8, i64 224, !17, i64 232, !14, i64 240, !8, i64 248, !8, i64 256, !17, i64 264, !21, i64 272, !24, i64 496, !26, i64 768}
!13 = !{!"_ZTSN7qpOASES11BooleanTypeE", !9, i64 0}
!14 = !{!"any pointer", !9, i64 0}
!15 = !{!"_ZTSN7qpOASES6BoundsE", !16, i64 0, !18, i64 40, !18, i64 80}
!16 = !{!"_ZTSN7qpOASES9SubjectToE", !17, i64 8, !14, i64 16, !14, i64 24, !13, i64 32, !13, i64 36}
!17 = !{!"int", !9, i64 0}
!18 = !{!"_ZTSN7qpOASES9IndexlistE", !14, i64 0, !14, i64 8, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28, !17, i64 32}
!19 = !{!"_ZTSN7qpOASES14QProblemStatusE", !9, i64 0}
!20 = !{!"_ZTSN7qpOASES11HessianTypeE", !9, i64 0}
!21 = !{!"_ZTSN7qpOASES7OptionsE", !22, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !17, i64 28, !17, i64 32, !13, i64 36, !8, i64 40, !8, i64 48, !8, i64 56, !8, i64 64, !8, i64 72, !8, i64 80, !8, i64 88, !8, i64 96, !8, i64 104, !8, i64 112, !8, i64 120, !23, i64 128, !8, i64 136, !17, i64 144, !8, i64 152, !17, i64 160, !8, i64 168, !8, i64 176, !8, i64 184, !8, i64 192, !13, i64 200, !13, i64 204, !17, i64 208, !17, i64 212, !17, i64 216}
!22 = !{!"_ZTSN7qpOASES10PrintLevelE", !9, i64 0}
!23 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !9, i64 0}
!24 = !{!"_ZTSN7qpOASES7FlipperE", !17, i64 0, !17, i64 4, !15, i64 8, !25, i64 128, !14, i64 248, !14, i64 256, !14, i64 264}
!25 = !{!"_ZTSN7qpOASES11ConstraintsE", !16, i64 0, !18, i64 40, !18, i64 80}
!26 = !{!"_ZTSN7qpOASES13TabularOutputE", !17, i64 0, !17, i64 4, !17, i64 8, !17, i64 12, !17, i64 16, !17, i64 20, !17, i64 24, !17, i64 28}
!27 = !{!12, !8, i64 320}
!28 = !{!12, !14, i64 40}
!29 = distinct !{!29, !6}
!30 = distinct !{!30, !6}
!31 = !{!12, !23, i64 400}
!32 = distinct !{!32, !6}


; Effective O3 passes: ConstraintEliminationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass