; 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
@.str.32 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [12 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 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: 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)) #4 align 2

declare noundef i32 @_ZN7qpOASES15MessageHandling12throwWarningENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28), i32 noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef, i32 noundef) #0

declare noundef double @_ZN7qpOASES10getCPUtimeEv() #0

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN7qpOASES9QProblemB25getRelativeHomotopyLengthEPKdS2_S2_(ptr noundef nonnull align 8 dereferenceable(800), ptr noundef, ptr noundef, ptr noundef) #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES9QProblemB7solveQPEPKdS2_S2_RiPdiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef %5, i32 noundef %6, i32 noundef %7) #5 align 2 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca double, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  %33 = alloca [160 x i8], align 16
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store i32 %6, ptr %16, align 4, !tbaa !9
  store i32 %7, ptr %17, align 4, !tbaa !11
  %34 = load ptr, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  %35 = call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %34)
  store i32 %35, ptr %19, align 4, !tbaa !9
  %36 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %34)
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %44, label %38

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

41:                                               ; preds = %38
  %42 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %34)
  %43 = icmp eq i32 %42, 3
  br i1 %43, label %44, label %47

44:                                               ; preds = %41, %38, %8
  %45 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %46 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %45, i32 noundef 54, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2421, i32 noundef 1)
  store i32 %46, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %567

47:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  store double 0.000000e+00, ptr %21, align 8, !tbaa !13
  %48 = load ptr, ptr %15, align 8, !tbaa !5
  %49 = icmp ne ptr %48, null
  br i1 %49, label %50, label %52

50:                                               ; preds = %47
  %51 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  store double %51, ptr %21, align 8, !tbaa !13
  br label %52

52:                                               ; preds = %50, %47
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %53 = load i32, ptr %19, align 4, !tbaa !9
  %54 = sext i32 %53 to i64
  %55 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %54, i64 8)
  %56 = extractvalue { i64, i1 } %55, 1
  %57 = extractvalue { i64, i1 } %55, 0
  %58 = select i1 %56, i64 -1, i64 %57
  %59 = call noalias noundef nonnull ptr @_Znam(i64 noundef %58) #10
  store ptr %59, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %60 = load i32, ptr %19, align 4, !tbaa !9
  %61 = sext i32 %60 to i64
  %62 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %61, i64 8)
  %63 = extractvalue { i64, i1 } %62, 1
  %64 = extractvalue { i64, i1 } %62, 0
  %65 = select i1 %63, i64 -1, i64 %64
  %66 = call noalias noundef nonnull ptr @_Znam(i64 noundef %65) #10
  store ptr %66, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %67 = load i32, ptr %19, align 4, !tbaa !9
  %68 = sext i32 %67 to i64
  %69 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %68, i64 8)
  %70 = extractvalue { i64, i1 } %69, 1
  %71 = extractvalue { i64, i1 } %69, 0
  %72 = select i1 %70, i64 -1, i64 %71
  %73 = call noalias noundef nonnull ptr @_Znam(i64 noundef %72) #10
  store ptr %73, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %74 = load i32, ptr %19, align 4, !tbaa !9
  %75 = sext i32 %74 to i64
  %76 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %75, i64 8)
  %77 = extractvalue { i64, i1 } %76, 1
  %78 = extractvalue { i64, i1 } %76, 0
  %79 = select i1 %77, i64 -1, i64 %78
  %80 = call noalias noundef nonnull ptr @_Znam(i64 noundef %79) #10
  store ptr %80, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %81 = load i32, ptr %19, align 4, !tbaa !9
  %82 = sext i32 %81 to i64
  %83 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %82, i64 8)
  %84 = extractvalue { i64, i1 } %83, 1
  %85 = extractvalue { i64, i1 } %83, 0
  %86 = select i1 %84, i64 -1, i64 %85
  %87 = call noalias noundef nonnull ptr @_Znam(i64 noundef %86) #10
  store ptr %87, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %88 = load i32, ptr %19, align 4, !tbaa !9
  %89 = sext i32 %88 to i64
  %90 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %89, i64 8)
  %91 = extractvalue { i64, i1 } %90, 1
  %92 = extractvalue { i64, i1 } %90, 0
  %93 = select i1 %91, i64 -1, i64 %92
  %94 = call noalias noundef nonnull ptr @_Znam(i64 noundef %93) #10
  store ptr %94, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  call void @llvm.lifetime.start.p0(i64 160, ptr %33) #9
  %95 = load ptr, ptr %12, align 8, !tbaa !5
  %96 = load ptr, ptr %13, align 8, !tbaa !5
  %97 = load ptr, ptr %34, align 8, !tbaa !15
  %98 = getelementptr inbounds ptr, ptr %97, i64 11
  %99 = load ptr, ptr %98, align 8
  %100 = call noundef i32 %99(ptr noundef nonnull align 8 dereferenceable(800) %34, ptr noundef %95, ptr noundef %96)
  %101 = icmp ne i32 %100, 0
  br i1 %101, label %102, label %105

102:                                              ; preds = %52
  %103 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %104 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %103, i32 noundef 52, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2456, i32 noundef 1)
  store i32 %104, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

105:                                              ; preds = %52
  %106 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 13
  store i32 0, ptr %106, align 4, !tbaa !17
  %107 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 14
  store i32 0, ptr %107, align 8, !tbaa !30
  %108 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %108, ptr %18, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %518, %105
  %110 = load i32, ptr %18, align 4, !tbaa !9
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = icmp slt i32 %110, %112
  br i1 %113, label %114, label %521

114:                                              ; preds = %109
  %115 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 25
  %116 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %115, i32 0, i32 3
  store i32 -1, ptr %116, align 4, !tbaa !31
  %117 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 25
  %118 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %117, i32 0, i32 2
  store i32 -1, ptr %118, align 8, !tbaa !32
  %119 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 25
  %120 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %119, i32 0, i32 1
  store i32 -1, ptr %120, align 4, !tbaa !33
  %121 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 25
  %122 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %121, i32 0, i32 0
  store i32 -1, ptr %122, align 8, !tbaa !34
  %123 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 25
  %124 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %123, i32 0, i32 7
  store i32 0, ptr %124, align 4, !tbaa !35
  %125 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 25
  %126 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %125, i32 0, i32 6
  store i32 0, ptr %126, align 8, !tbaa !36
  %127 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 25
  %128 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %127, i32 0, i32 5
  store i32 0, ptr %128, align 4, !tbaa !37
  %129 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 25
  %130 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %129, i32 0, i32 4
  store i32 0, ptr %130, align 8, !tbaa !38
  %131 = load ptr, ptr %15, align 8, !tbaa !5
  %132 = load double, ptr %21, align 8, !tbaa !13
  %133 = load i32, ptr %18, align 4, !tbaa !9
  %134 = load i32, ptr %16, align 4, !tbaa !9
  %135 = sub nsw i32 %133, %134
  %136 = call noundef i32 @_ZNK7qpOASES9QProblemB22isCPUtimeLimitExceededEPKddi(ptr noundef nonnull align 8 dereferenceable(800) %34, ptr noundef %131, double noundef %132, i32 noundef %135)
  %137 = icmp eq i32 %136, 1
  br i1 %137, label %138, label %149

138:                                              ; preds = %114
  %139 = load i32, ptr %18, align 4, !tbaa !9
  %140 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %139, ptr %140, align 4, !tbaa !9
  %141 = load ptr, ptr %15, align 8, !tbaa !5
  %142 = icmp ne ptr %141, null
  br i1 %142, label %143, label %148

143:                                              ; preds = %138
  %144 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %145 = load double, ptr %21, align 8, !tbaa !13
  %146 = fsub double %144, %145
  %147 = load ptr, ptr %15, align 8, !tbaa !5
  store double %146, ptr %147, align 8, !tbaa !13
  br label %148

148:                                              ; preds = %143, %138
  br label %521

149:                                              ; preds = %114
  %150 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 12
  store i32 3, ptr %150, align 8, !tbaa !39
  %151 = load i32, ptr %17, align 4, !tbaa !11
  %152 = icmp eq i32 %151, 1
  br i1 %152, label %153, label %157

153:                                              ; preds = %149
  %154 = getelementptr inbounds [160 x i8], ptr %33, i64 0, i64 0
  %155 = load i32, ptr %18, align 4, !tbaa !9
  %156 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %154, i64 noundef 160, ptr noundef @.str.32, i32 noundef %155) #9
  br label %161

157:                                              ; preds = %149
  %158 = getelementptr inbounds [160 x i8], ptr %33, i64 0, i64 0
  %159 = load i32, ptr %18, align 4, !tbaa !9
  %160 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %158, i64 noundef 160, ptr noundef @.str.33, i32 noundef %159) #9
  br label %161

161:                                              ; preds = %157, %153
  %162 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %163 = getelementptr inbounds [160 x i8], ptr %33, i64 0, i64 0
  %164 = call noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %162, i32 noundef 55, ptr noundef %163, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2486, i32 noundef 1)
  %165 = load ptr, ptr %11, align 8, !tbaa !5
  %166 = load ptr, ptr %12, align 8, !tbaa !5
  %167 = load ptr, ptr %13, align 8, !tbaa !5
  %168 = load ptr, ptr %25, align 8, !tbaa !5
  %169 = load ptr, ptr %26, align 8, !tbaa !5
  %170 = load ptr, ptr %27, align 8, !tbaa !5
  %171 = call noundef i32 @_ZN7qpOASES9QProblemB18determineDataShiftEPKdS2_S2_PdS3_S3_RNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %34, ptr noundef %165, ptr noundef %166, ptr noundef %167, ptr noundef %168, ptr noundef %169, ptr noundef %170, ptr noundef nonnull align 4 dereferenceable(4) %29)
  store i32 %171, ptr %28, align 4, !tbaa !40
  %172 = load i32, ptr %28, align 4, !tbaa !40
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %174, label %212

174:                                              ; preds = %161
  %175 = load ptr, ptr %24, align 8, !tbaa !5
  %176 = icmp eq ptr %175, null
  br i1 %176, label %178, label %177

177:                                              ; preds = %174
  call void @_ZdaPv(ptr noundef %175) #11
  br label %178

178:                                              ; preds = %177, %174
  %179 = load ptr, ptr %23, align 8, !tbaa !5
  %180 = icmp eq ptr %179, null
  br i1 %180, label %182, label %181

181:                                              ; preds = %178
  call void @_ZdaPv(ptr noundef %179) #11
  br label %182

182:                                              ; preds = %181, %178
  %183 = load ptr, ptr %22, align 8, !tbaa !5
  %184 = icmp eq ptr %183, null
  br i1 %184, label %186, label %185

185:                                              ; preds = %182
  call void @_ZdaPv(ptr noundef %183) #11
  br label %186

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

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

190:                                              ; preds = %189, %186
  %191 = load ptr, ptr %26, align 8, !tbaa !5
  %192 = icmp eq ptr %191, null
  br i1 %192, label %194, label %193

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

194:                                              ; preds = %193, %190
  %195 = load ptr, ptr %25, align 8, !tbaa !5
  %196 = icmp eq ptr %195, null
  br i1 %196, label %198, label %197

197:                                              ; preds = %194
  call void @_ZdaPv(ptr noundef %195) #11
  br label %198

198:                                              ; preds = %197, %194
  %199 = load i32, ptr %18, align 4, !tbaa !9
  %200 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %199, ptr %200, align 4, !tbaa !9
  %201 = load ptr, ptr %15, align 8, !tbaa !5
  %202 = icmp ne ptr %201, null
  br i1 %202, label %203, label %208

203:                                              ; preds = %198
  %204 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %205 = load double, ptr %21, align 8, !tbaa !13
  %206 = fsub double %204, %205
  %207 = load ptr, ptr %15, align 8, !tbaa !5
  store double %206, ptr %207, align 8, !tbaa !13
  br label %208

208:                                              ; preds = %203, %198
  %209 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %210 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %209, i32 noundef 56, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2504, i32 noundef 1)
  %211 = load i32, ptr %28, align 4, !tbaa !40
  store i32 %211, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

212:                                              ; preds = %161
  %213 = load ptr, ptr %25, align 8, !tbaa !5
  %214 = load ptr, ptr %26, align 8, !tbaa !5
  %215 = load ptr, ptr %27, align 8, !tbaa !5
  %216 = load i32, ptr %29, align 4, !tbaa !11
  %217 = load ptr, ptr %23, align 8, !tbaa !5
  %218 = load ptr, ptr %22, align 8, !tbaa !5
  %219 = load ptr, ptr %24, align 8, !tbaa !5
  %220 = call noundef i32 @_ZN7qpOASES9QProblemB22determineStepDirectionEPKdS2_S2_NS_11BooleanTypeEPdS4_S4_(ptr noundef nonnull align 8 dereferenceable(800) %34, ptr noundef %213, ptr noundef %214, ptr noundef %215, i32 noundef %216, ptr noundef %217, ptr noundef %218, ptr noundef %219)
  store i32 %220, ptr %28, align 4, !tbaa !40
  %221 = load i32, ptr %28, align 4, !tbaa !40
  %222 = icmp ne i32 %221, 0
  br i1 %222, label %223, label %261

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

226:                                              ; preds = %223
  call void @_ZdaPv(ptr noundef %224) #11
  br label %227

227:                                              ; preds = %226, %223
  %228 = load ptr, ptr %23, align 8, !tbaa !5
  %229 = icmp eq ptr %228, null
  br i1 %229, label %231, label %230

230:                                              ; preds = %227
  call void @_ZdaPv(ptr noundef %228) #11
  br label %231

231:                                              ; preds = %230, %227
  %232 = load ptr, ptr %22, align 8, !tbaa !5
  %233 = icmp eq ptr %232, null
  br i1 %233, label %235, label %234

234:                                              ; preds = %231
  call void @_ZdaPv(ptr noundef %232) #11
  br label %235

235:                                              ; preds = %234, %231
  %236 = load ptr, ptr %27, align 8, !tbaa !5
  %237 = icmp eq ptr %236, null
  br i1 %237, label %239, label %238

238:                                              ; preds = %235
  call void @_ZdaPv(ptr noundef %236) #11
  br label %239

239:                                              ; preds = %238, %235
  %240 = load ptr, ptr %26, align 8, !tbaa !5
  %241 = icmp eq ptr %240, null
  br i1 %241, label %243, label %242

242:                                              ; preds = %239
  call void @_ZdaPv(ptr noundef %240) #11
  br label %243

243:                                              ; preds = %242, %239
  %244 = load ptr, ptr %25, align 8, !tbaa !5
  %245 = icmp eq ptr %244, null
  br i1 %245, label %247, label %246

246:                                              ; preds = %243
  call void @_ZdaPv(ptr noundef %244) #11
  br label %247

247:                                              ; preds = %246, %243
  %248 = load i32, ptr %18, align 4, !tbaa !9
  %249 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %248, ptr %249, align 4, !tbaa !9
  %250 = load ptr, ptr %15, align 8, !tbaa !5
  %251 = icmp ne ptr %250, null
  br i1 %251, label %252, label %257

252:                                              ; preds = %247
  %253 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %254 = load double, ptr %21, align 8, !tbaa !13
  %255 = fsub double %253, %254
  %256 = load ptr, ptr %15, align 8, !tbaa !5
  store double %255, ptr %256, align 8, !tbaa !13
  br label %257

257:                                              ; preds = %252, %247
  %258 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %259 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %258, i32 noundef 57, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2523, i32 noundef 1)
  %260 = load i32, ptr %28, align 4, !tbaa !40
  store i32 %260, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

261:                                              ; preds = %212
  %262 = load ptr, ptr %25, align 8, !tbaa !5
  %263 = load ptr, ptr %26, align 8, !tbaa !5
  %264 = load ptr, ptr %27, align 8, !tbaa !5
  %265 = load ptr, ptr %23, align 8, !tbaa !5
  %266 = load ptr, ptr %22, align 8, !tbaa !5
  %267 = load ptr, ptr %24, align 8, !tbaa !5
  %268 = call noundef i32 @_ZN7qpOASES9QProblemB11performStepEPKdS2_S2_S2_S2_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(800) %34, ptr noundef %262, ptr noundef %263, ptr noundef %264, ptr noundef %265, ptr noundef %266, ptr noundef %267, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 4 dereferenceable(4) %31)
  store i32 %268, ptr %28, align 4, !tbaa !40
  %269 = load i32, ptr %28, align 4, !tbaa !40
  %270 = icmp ne i32 %269, 0
  br i1 %270, label %271, label %309

271:                                              ; preds = %261
  %272 = load ptr, ptr %24, align 8, !tbaa !5
  %273 = icmp eq ptr %272, null
  br i1 %273, label %275, label %274

274:                                              ; preds = %271
  call void @_ZdaPv(ptr noundef %272) #11
  br label %275

275:                                              ; preds = %274, %271
  %276 = load ptr, ptr %23, align 8, !tbaa !5
  %277 = icmp eq ptr %276, null
  br i1 %277, label %279, label %278

278:                                              ; preds = %275
  call void @_ZdaPv(ptr noundef %276) #11
  br label %279

279:                                              ; preds = %278, %275
  %280 = load ptr, ptr %22, align 8, !tbaa !5
  %281 = icmp eq ptr %280, null
  br i1 %281, label %283, label %282

282:                                              ; preds = %279
  call void @_ZdaPv(ptr noundef %280) #11
  br label %283

283:                                              ; preds = %282, %279
  %284 = load ptr, ptr %27, align 8, !tbaa !5
  %285 = icmp eq ptr %284, null
  br i1 %285, label %287, label %286

286:                                              ; preds = %283
  call void @_ZdaPv(ptr noundef %284) #11
  br label %287

287:                                              ; preds = %286, %283
  %288 = load ptr, ptr %26, align 8, !tbaa !5
  %289 = icmp eq ptr %288, null
  br i1 %289, label %291, label %290

290:                                              ; preds = %287
  call void @_ZdaPv(ptr noundef %288) #11
  br label %291

291:                                              ; preds = %290, %287
  %292 = load ptr, ptr %25, align 8, !tbaa !5
  %293 = icmp eq ptr %292, null
  br i1 %293, label %295, label %294

294:                                              ; preds = %291
  call void @_ZdaPv(ptr noundef %292) #11
  br label %295

295:                                              ; preds = %294, %291
  %296 = load i32, ptr %18, align 4, !tbaa !9
  %297 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %296, ptr %297, align 4, !tbaa !9
  %298 = load ptr, ptr %15, align 8, !tbaa !5
  %299 = icmp ne ptr %298, null
  br i1 %299, label %300, label %305

300:                                              ; preds = %295
  %301 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %302 = load double, ptr %21, align 8, !tbaa !13
  %303 = fsub double %301, %302
  %304 = load ptr, ptr %15, align 8, !tbaa !5
  store double %303, ptr %304, align 8, !tbaa !13
  br label %305

305:                                              ; preds = %300, %295
  %306 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %307 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %306, i32 noundef 58, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2544, i32 noundef 1)
  %308 = load i32, ptr %28, align 4, !tbaa !40
  store i32 %308, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

309:                                              ; preds = %261
  %310 = load ptr, ptr %11, align 8, !tbaa !5
  %311 = load ptr, ptr %12, align 8, !tbaa !5
  %312 = load ptr, ptr %13, align 8, !tbaa !5
  %313 = call noundef double @_ZN7qpOASES9QProblemB25getRelativeHomotopyLengthEPKdS2_S2_(ptr noundef nonnull align 8 dereferenceable(800) %34, ptr noundef %310, ptr noundef %311, ptr noundef %312)
  store double %313, ptr %32, align 8, !tbaa !13
  %314 = load double, ptr %32, align 8, !tbaa !13
  %315 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 23
  %316 = getelementptr inbounds %"class.qpOASES::Options", ptr %315, i32 0, i32 10
  %317 = load double, ptr %316, align 8, !tbaa !42
  %318 = fcmp ole double %314, %317
  br i1 %318, label %319, label %368

319:                                              ; preds = %309
  %320 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 12
  store i32 5, ptr %320, align 8, !tbaa !39
  %321 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %322 = call noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %321, i32 noundef 59, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2554, i32 noundef 1)
  %323 = load i32, ptr %18, align 4, !tbaa !9
  %324 = load i32, ptr %30, align 4, !tbaa !9
  %325 = load i32, ptr %31, align 4, !tbaa !43
  %326 = load double, ptr %32, align 8, !tbaa !13
  %327 = load i32, ptr %17, align 4, !tbaa !11
  %328 = call noundef i32 @_ZN7qpOASES9QProblemB14printIterationEiiNS_15SubjectToStatusEdNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %34, i32 noundef %323, i32 noundef %324, i32 noundef %325, double noundef %326, i32 noundef %327)
  %329 = icmp ne i32 %328, 0
  br i1 %329, label %330, label %333

330:                                              ; preds = %319
  %331 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %332 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %331, i32 noundef 103, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2557, i32 noundef 1)
  br label %333

333:                                              ; preds = %330, %319
  %334 = load i32, ptr %18, align 4, !tbaa !9
  %335 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %334, ptr %335, align 4, !tbaa !9
  %336 = load ptr, ptr %15, align 8, !tbaa !5
  %337 = icmp ne ptr %336, null
  br i1 %337, label %338, label %343

338:                                              ; preds = %333
  %339 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %340 = load double, ptr %21, align 8, !tbaa !13
  %341 = fsub double %339, %340
  %342 = load ptr, ptr %15, align 8, !tbaa !5
  store double %341, ptr %342, align 8, !tbaa !13
  br label %343

343:                                              ; preds = %338, %333
  %344 = load ptr, ptr %24, align 8, !tbaa !5
  %345 = icmp eq ptr %344, null
  br i1 %345, label %347, label %346

346:                                              ; preds = %343
  call void @_ZdaPv(ptr noundef %344) #11
  br label %347

347:                                              ; preds = %346, %343
  %348 = load ptr, ptr %23, align 8, !tbaa !5
  %349 = icmp eq ptr %348, null
  br i1 %349, label %351, label %350

350:                                              ; preds = %347
  call void @_ZdaPv(ptr noundef %348) #11
  br label %351

351:                                              ; preds = %350, %347
  %352 = load ptr, ptr %22, align 8, !tbaa !5
  %353 = icmp eq ptr %352, null
  br i1 %353, label %355, label %354

354:                                              ; preds = %351
  call void @_ZdaPv(ptr noundef %352) #11
  br label %355

355:                                              ; preds = %354, %351
  %356 = load ptr, ptr %27, align 8, !tbaa !5
  %357 = icmp eq ptr %356, null
  br i1 %357, label %359, label %358

358:                                              ; preds = %355
  call void @_ZdaPv(ptr noundef %356) #11
  br label %359

359:                                              ; preds = %358, %355
  %360 = load ptr, ptr %26, align 8, !tbaa !5
  %361 = icmp eq ptr %360, null
  br i1 %361, label %363, label %362

362:                                              ; preds = %359
  call void @_ZdaPv(ptr noundef %360) #11
  br label %363

363:                                              ; preds = %362, %359
  %364 = load ptr, ptr %25, align 8, !tbaa !5
  %365 = icmp eq ptr %364, null
  br i1 %365, label %367, label %366

366:                                              ; preds = %363
  call void @_ZdaPv(ptr noundef %364) #11
  br label %367

367:                                              ; preds = %366, %363
  store i32 0, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

368:                                              ; preds = %309
  %369 = load i32, ptr %30, align 4, !tbaa !9
  %370 = load i32, ptr %31, align 4, !tbaa !43
  %371 = call noundef i32 @_ZN7qpOASES9QProblemB15changeActiveSetEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(800) %34, i32 noundef %369, i32 noundef %370)
  store i32 %371, ptr %28, align 4, !tbaa !40
  %372 = load i32, ptr %28, align 4, !tbaa !40
  %373 = icmp ne i32 %372, 0
  br i1 %373, label %374, label %426

374:                                              ; preds = %368
  %375 = load ptr, ptr %24, align 8, !tbaa !5
  %376 = icmp eq ptr %375, null
  br i1 %376, label %378, label %377

377:                                              ; preds = %374
  call void @_ZdaPv(ptr noundef %375) #11
  br label %378

378:                                              ; preds = %377, %374
  %379 = load ptr, ptr %23, align 8, !tbaa !5
  %380 = icmp eq ptr %379, null
  br i1 %380, label %382, label %381

381:                                              ; preds = %378
  call void @_ZdaPv(ptr noundef %379) #11
  br label %382

382:                                              ; preds = %381, %378
  %383 = load ptr, ptr %22, align 8, !tbaa !5
  %384 = icmp eq ptr %383, null
  br i1 %384, label %386, label %385

385:                                              ; preds = %382
  call void @_ZdaPv(ptr noundef %383) #11
  br label %386

386:                                              ; preds = %385, %382
  %387 = load ptr, ptr %27, align 8, !tbaa !5
  %388 = icmp eq ptr %387, null
  br i1 %388, label %390, label %389

389:                                              ; preds = %386
  call void @_ZdaPv(ptr noundef %387) #11
  br label %390

390:                                              ; preds = %389, %386
  %391 = load ptr, ptr %26, align 8, !tbaa !5
  %392 = icmp eq ptr %391, null
  br i1 %392, label %394, label %393

393:                                              ; preds = %390
  call void @_ZdaPv(ptr noundef %391) #11
  br label %394

394:                                              ; preds = %393, %390
  %395 = load ptr, ptr %25, align 8, !tbaa !5
  %396 = icmp eq ptr %395, null
  br i1 %396, label %398, label %397

397:                                              ; preds = %394
  call void @_ZdaPv(ptr noundef %395) #11
  br label %398

398:                                              ; preds = %397, %394
  %399 = load i32, ptr %18, align 4, !tbaa !9
  %400 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 %399, ptr %400, align 4, !tbaa !9
  %401 = load ptr, ptr %15, align 8, !tbaa !5
  %402 = icmp ne ptr %401, null
  br i1 %402, label %403, label %408

403:                                              ; preds = %398
  %404 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %405 = load double, ptr %21, align 8, !tbaa !13
  %406 = fsub double %404, %405
  %407 = load ptr, ptr %15, align 8, !tbaa !5
  store double %406, ptr %407, align 8, !tbaa !13
  br label %408

408:                                              ; preds = %403, %398
  %409 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 13
  %410 = load i32, ptr %409, align 4, !tbaa !17
  %411 = icmp eq i32 %410, 1
  br i1 %411, label %412, label %415

412:                                              ; preds = %408
  %413 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 12
  store i32 4, ptr %413, align 8, !tbaa !39
  %414 = call noundef i32 @_ZN7qpOASES9QProblemB20setInfeasibilityFlagENS_11returnValueENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %34, i32 noundef 61, i32 noundef 0)
  store i32 %414, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

415:                                              ; preds = %408
  %416 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 14
  %417 = load i32, ptr %416, align 8, !tbaa !30
  %418 = icmp eq i32 %417, 1
  br i1 %418, label %419, label %422

419:                                              ; preds = %415
  %420 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %421 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %420, i32 noundef 62, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2591, i32 noundef 1)
  store i32 %421, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

422:                                              ; preds = %415
  %423 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %424 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %423, i32 noundef 60, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2594, i32 noundef 1)
  %425 = load i32, ptr %28, align 4, !tbaa !40
  store i32 %425, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

426:                                              ; preds = %368
  %427 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 23
  %428 = getelementptr inbounds %"class.qpOASES::Options", ptr %427, i32 0, i32 8
  %429 = load i32, ptr %428, align 8, !tbaa !44
  %430 = icmp sgt i32 %429, 0
  br i1 %430, label %431, label %472

431:                                              ; preds = %426
  %432 = load i32, ptr %18, align 4, !tbaa !9
  %433 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 23
  %434 = getelementptr inbounds %"class.qpOASES::Options", ptr %433, i32 0, i32 8
  %435 = load i32, ptr %434, align 8, !tbaa !44
  %436 = srem i32 %432, %435
  %437 = icmp eq i32 %436, 0
  br i1 %437, label %438, label %472

438:                                              ; preds = %431
  %439 = load ptr, ptr %34, align 8, !tbaa !15
  %440 = getelementptr inbounds ptr, ptr %439, i64 12
  %441 = load ptr, ptr %440, align 8
  %442 = call noundef i32 %441(ptr noundef nonnull align 8 dereferenceable(800) %34)
  store i32 %442, ptr %28, align 4, !tbaa !40
  %443 = load i32, ptr %28, align 4, !tbaa !40
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %445, label %471

445:                                              ; preds = %438
  %446 = load ptr, ptr %24, align 8, !tbaa !5
  %447 = icmp eq ptr %446, null
  br i1 %447, label %449, label %448

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

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

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

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

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

457:                                              ; preds = %456, %453
  %458 = load ptr, ptr %27, align 8, !tbaa !5
  %459 = icmp eq ptr %458, null
  br i1 %459, label %461, label %460

460:                                              ; preds = %457
  call void @_ZdaPv(ptr noundef %458) #11
  br label %461

461:                                              ; preds = %460, %457
  %462 = load ptr, ptr %26, align 8, !tbaa !5
  %463 = icmp eq ptr %462, null
  br i1 %463, label %465, label %464

464:                                              ; preds = %461
  call void @_ZdaPv(ptr noundef %462) #11
  br label %465

465:                                              ; preds = %464, %461
  %466 = load ptr, ptr %25, align 8, !tbaa !5
  %467 = icmp eq ptr %466, null
  br i1 %467, label %469, label %468

468:                                              ; preds = %465
  call void @_ZdaPv(ptr noundef %466) #11
  br label %469

469:                                              ; preds = %468, %465
  %470 = load i32, ptr %28, align 4, !tbaa !40
  store i32 %470, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

471:                                              ; preds = %438
  br label %472

472:                                              ; preds = %471, %431, %426
  %473 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 11
  %474 = load double, ptr %473, align 8, !tbaa !45
  %475 = fcmp ole double %474, 2.221000e-16
  br i1 %475, label %476, label %486

476:                                              ; preds = %472
  %477 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 23
  %478 = getelementptr inbounds %"class.qpOASES::Options", ptr %477, i32 0, i32 1
  %479 = load i32, ptr %478, align 4, !tbaa !46
  %480 = icmp eq i32 %479, 1
  br i1 %480, label %481, label %486

481:                                              ; preds = %476
  %482 = load ptr, ptr %34, align 8, !tbaa !15
  %483 = getelementptr inbounds ptr, ptr %482, i64 16
  %484 = load ptr, ptr %483, align 8
  %485 = call noundef i32 %484(ptr noundef nonnull align 8 dereferenceable(800) %34)
  br label %505

486:                                              ; preds = %476, %472
  %487 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 23
  %488 = getelementptr inbounds %"class.qpOASES::Options", ptr %487, i32 0, i32 7
  %489 = load i32, ptr %488, align 4, !tbaa !47
  %490 = icmp sgt i32 %489, 0
  br i1 %490, label %491, label %504

491:                                              ; preds = %486
  %492 = load i32, ptr %18, align 4, !tbaa !9
  %493 = add nsw i32 %492, 1
  %494 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 23
  %495 = getelementptr inbounds %"class.qpOASES::Options", ptr %494, i32 0, i32 7
  %496 = load i32, ptr %495, align 4, !tbaa !47
  %497 = srem i32 %493, %496
  %498 = icmp eq i32 %497, 0
  br i1 %498, label %499, label %504

499:                                              ; preds = %491
  %500 = load ptr, ptr %34, align 8, !tbaa !15
  %501 = getelementptr inbounds ptr, ptr %500, i64 18
  %502 = load ptr, ptr %501, align 8
  %503 = call noundef i32 %502(ptr noundef nonnull align 8 dereferenceable(800) %34)
  br label %504

504:                                              ; preds = %499, %491, %486
  br label %505

505:                                              ; preds = %504, %481
  %506 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 12
  store i32 4, ptr %506, align 8, !tbaa !39
  %507 = load i32, ptr %18, align 4, !tbaa !9
  %508 = load i32, ptr %30, align 4, !tbaa !9
  %509 = load i32, ptr %31, align 4, !tbaa !43
  %510 = load double, ptr %32, align 8, !tbaa !13
  %511 = load i32, ptr %17, align 4, !tbaa !11
  %512 = call noundef i32 @_ZN7qpOASES9QProblemB14printIterationEiiNS_15SubjectToStatusEdNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %34, i32 noundef %507, i32 noundef %508, i32 noundef %509, double noundef %510, i32 noundef %511)
  %513 = icmp ne i32 %512, 0
  br i1 %513, label %514, label %517

514:                                              ; preds = %505
  %515 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %516 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %515, i32 noundef 103, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2622, i32 noundef 1)
  br label %517

517:                                              ; preds = %514, %505
  br label %518

518:                                              ; preds = %517
  %519 = load i32, ptr %18, align 4, !tbaa !9
  %520 = add nsw i32 %519, 1
  store i32 %520, ptr %18, align 4, !tbaa !9
  br label %109, !llvm.loop !48

521:                                              ; preds = %148, %109
  %522 = load ptr, ptr %24, align 8, !tbaa !5
  %523 = icmp eq ptr %522, null
  br i1 %523, label %525, label %524

524:                                              ; preds = %521
  call void @_ZdaPv(ptr noundef %522) #11
  br label %525

525:                                              ; preds = %524, %521
  %526 = load ptr, ptr %23, align 8, !tbaa !5
  %527 = icmp eq ptr %526, null
  br i1 %527, label %529, label %528

528:                                              ; preds = %525
  call void @_ZdaPv(ptr noundef %526) #11
  br label %529

529:                                              ; preds = %528, %525
  %530 = load ptr, ptr %22, align 8, !tbaa !5
  %531 = icmp eq ptr %530, null
  br i1 %531, label %533, label %532

532:                                              ; preds = %529
  call void @_ZdaPv(ptr noundef %530) #11
  br label %533

533:                                              ; preds = %532, %529
  %534 = load ptr, ptr %27, align 8, !tbaa !5
  %535 = icmp eq ptr %534, null
  br i1 %535, label %537, label %536

536:                                              ; preds = %533
  call void @_ZdaPv(ptr noundef %534) #11
  br label %537

537:                                              ; preds = %536, %533
  %538 = load ptr, ptr %26, align 8, !tbaa !5
  %539 = icmp eq ptr %538, null
  br i1 %539, label %541, label %540

540:                                              ; preds = %537
  call void @_ZdaPv(ptr noundef %538) #11
  br label %541

541:                                              ; preds = %540, %537
  %542 = load ptr, ptr %25, align 8, !tbaa !5
  %543 = icmp eq ptr %542, null
  br i1 %543, label %545, label %544

544:                                              ; preds = %541
  call void @_ZdaPv(ptr noundef %542) #11
  br label %545

545:                                              ; preds = %544, %541
  %546 = load ptr, ptr %15, align 8, !tbaa !5
  %547 = icmp ne ptr %546, null
  br i1 %547, label %548, label %553

548:                                              ; preds = %545
  %549 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %550 = load double, ptr %21, align 8, !tbaa !13
  %551 = fsub double %549, %550
  %552 = load ptr, ptr %15, align 8, !tbaa !5
  store double %551, ptr %552, align 8, !tbaa !13
  br label %553

553:                                              ; preds = %548, %545
  %554 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %34, i32 0, i32 23
  %555 = getelementptr inbounds %"class.qpOASES::Options", ptr %554, i32 0, i32 0
  %556 = load i32, ptr %555, align 8, !tbaa !50
  %557 = icmp eq i32 %556, 3
  br i1 %557, label %558, label %565

558:                                              ; preds = %553
  %559 = getelementptr inbounds [160 x i8], ptr %33, i64 0, i64 0
  %560 = load i32, ptr %18, align 4, !tbaa !9
  %561 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %559, i64 noundef 160, ptr noundef @.str.34, i32 noundef %560) #9
  %562 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %563 = getelementptr inbounds [160 x i8], ptr %33, i64 0, i64 0
  %564 = call noundef i32 @_ZN7qpOASES15MessageHandling12throwWarningENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %562, i32 noundef 64, ptr noundef %563, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2639, i32 noundef 1)
  store i32 %564, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

565:                                              ; preds = %553
  store i32 64, ptr %9, align 4
  store i32 1, ptr %20, align 4
  br label %566

566:                                              ; preds = %565, %558, %469, %422, %419, %412, %367, %305, %257, %208, %102
  call void @llvm.lifetime.end.p0(i64 160, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, 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
  br label %567

567:                                              ; preds = %566, %44
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  %568 = load i32, ptr %9, align 4
  ret i32 %568
}

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

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

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

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

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 = { 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 = { 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 = { 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 = { 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 #7 = { 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 #8 = { 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 #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 = !{!"_ZTSN7qpOASES11BooleanTypeE", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"vtable pointer", !8, i64 0}
!17 = !{!18, !12, i64 212}
!18 = !{!"_ZTSN7qpOASES9QProblemBE", !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !19, i64 48, !6, i64 168, !12, i64 176, !6, i64 184, !6, i64 192, !14, i64 200, !22, i64 208, !12, i64 212, !12, i64 216, !23, i64 220, !14, i64 224, !10, i64 232, !6, i64 240, !14, i64 248, !14, i64 256, !10, i64 264, !24, i64 272, !27, i64 496, !29, i64 768}
!19 = !{!"_ZTSN7qpOASES6BoundsE", !20, i64 0, !21, i64 40, !21, i64 80}
!20 = !{!"_ZTSN7qpOASES9SubjectToE", !10, i64 8, !6, i64 16, !6, i64 24, !12, i64 32, !12, i64 36}
!21 = !{!"_ZTSN7qpOASES9IndexlistE", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32}
!22 = !{!"_ZTSN7qpOASES14QProblemStatusE", !7, i64 0}
!23 = !{!"_ZTSN7qpOASES11HessianTypeE", !7, i64 0}
!24 = !{!"_ZTSN7qpOASES7OptionsE", !25, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !10, i64 28, !10, i64 32, !12, 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, !26, 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, !12, i64 200, !12, i64 204, !10, i64 208, !10, i64 212, !10, i64 216}
!25 = !{!"_ZTSN7qpOASES10PrintLevelE", !7, i64 0}
!26 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !7, i64 0}
!27 = !{!"_ZTSN7qpOASES7FlipperE", !10, i64 0, !10, i64 4, !19, i64 8, !28, i64 128, !6, i64 248, !6, i64 256, !6, i64 264}
!28 = !{!"_ZTSN7qpOASES11ConstraintsE", !20, i64 0, !21, i64 40, !21, i64 80}
!29 = !{!"_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}
!30 = !{!18, !12, i64 216}
!31 = !{!18, !10, i64 780}
!32 = !{!18, !10, i64 776}
!33 = !{!18, !10, i64 772}
!34 = !{!18, !10, i64 768}
!35 = !{!18, !10, i64 796}
!36 = !{!18, !10, i64 792}
!37 = !{!18, !10, i64 788}
!38 = !{!18, !10, i64 784}
!39 = !{!18, !22, i64 208}
!40 = !{!41, !41, i64 0}
!41 = !{!"_ZTSN7qpOASES11returnValueE", !7, i64 0}
!42 = !{!18, !14, i64 312}
!43 = !{!26, !26, i64 0}
!44 = !{!18, !10, i64 304}
!45 = !{!18, !14, i64 200}
!46 = !{!18, !12, i64 276}
!47 = !{!18, !10, i64 300}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = !{!18, !25, i64 272}


; 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
@.str.32 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [12 x i8], align 1

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() local_unnamed_addr #0

; Function Attrs: mustprogress 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) local_unnamed_addr #0

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

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

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

declare noundef i32 @_ZN7qpOASES15MessageHandling12throwWarningENS_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

declare noundef double @_ZN7qpOASES10getCPUtimeEv() local_unnamed_addr #0

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef double @_ZN7qpOASES9QProblemB25getRelativeHomotopyLengthEPKdS2_S2_(ptr noundef nonnull align 8 dereferenceable(800), ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES9QProblemB7solveQPEPKdS2_S2_RiPdiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef nonnull align 4 dereferenceable(4) %4, ptr noundef %5, i32 noundef %6, i32 noundef %7) local_unnamed_addr #4 align 2 {
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca [160 x i8], align 16
  %13 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %14 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %15 = icmp eq i32 %14, 0
  br i1 %15, label %22, label %16

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

19:                                               ; preds = %16
  %20 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %21 = icmp eq i32 %20, 3
  br i1 %21, label %22, label %25

22:                                               ; preds = %19, %16, %8
  %23 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %24 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %23, i32 noundef 54, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2421, i32 noundef 1)
  br label %189

25:                                               ; preds = %19
  %.not = icmp eq ptr %5, null
  br i1 %.not, label %28, label %26

26:                                               ; preds = %25
  %27 = tail call noundef double @_ZN7qpOASES10getCPUtimeEv()
  br label %28

28:                                               ; preds = %26, %25
  %.0138 = phi double [ %27, %26 ], [ 0.000000e+00, %25 ]
  %29 = zext nneg i32 %13 to i64
  %30 = icmp slt i32 %13, 0
  %31 = shl nuw nsw i64 %29, 3
  %32 = select i1 %30, i64 -1, i64 %31
  %33 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %32) #9
  %34 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %32) #9
  %35 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %32) #9
  %36 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %32) #9
  %37 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %32) #9
  %38 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %32) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %12) #10
  %39 = load ptr, ptr %0, align 8, !tbaa !5
  %40 = getelementptr inbounds i8, ptr %39, i64 88
  %41 = load ptr, ptr %40, align 8
  %42 = tail call noundef i32 %41(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %2, ptr noundef %3)
  %.not150 = icmp eq i32 %42, 0
  br i1 %.not150, label %46, label %43

43:                                               ; preds = %28
  %44 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %45 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %44, i32 noundef 52, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2456, i32 noundef 1)
  br label %188

46:                                               ; preds = %28
  %47 = getelementptr inbounds i8, ptr %0, i64 212
  store i32 0, ptr %47, align 4, !tbaa !8
  %48 = getelementptr inbounds i8, ptr %0, i64 216
  store i32 0, ptr %48, align 8, !tbaa !26
  %49 = load i32, ptr %4, align 4, !tbaa !27
  %50 = icmp sgt i32 %49, %6
  br i1 %50, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %46
  %51 = getelementptr inbounds i8, ptr %0, i64 768
  %52 = getelementptr inbounds i8, ptr %0, i64 784
  %53 = getelementptr inbounds i8, ptr %0, i64 208
  %54 = icmp eq i32 %7, 1
  %55 = getelementptr inbounds i8, ptr %0, i64 312
  %56 = getelementptr inbounds i8, ptr %0, i64 304
  %57 = getelementptr inbounds i8, ptr %0, i64 200
  %58 = getelementptr inbounds i8, ptr %0, i64 276
  %59 = getelementptr inbounds i8, ptr %0, i64 300
  %.str.32..str.33 = select i1 %54, ptr @.str.32, ptr @.str.33
  br label %60

60:                                               ; preds = %.lr.ph, %173
  %.0137195 = phi i32 [ %6, %.lr.ph ], [ %174, %173 ]
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %51, i8 -1, i64 16, i1 false)
  %61 = sub nsw i32 %.0137195, %6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %52, i8 0, i64 16, i1 false)
  %62 = call noundef i32 @_ZNK7qpOASES9QProblemB22isCPUtimeLimitExceededEPKddi(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %5, double noundef %.0138, i32 noundef %61)
  %63 = icmp eq i32 %62, 1
  br i1 %63, label %64, label %68

64:                                               ; preds = %60
  store i32 %.0137195, ptr %4, align 4, !tbaa !27
  br i1 %.not, label %.critedge, label %65

65:                                               ; preds = %64
  %66 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %67 = fsub double %66, %.0138
  store double %67, ptr %5, align 8, !tbaa !28
  br label %.loopexit

68:                                               ; preds = %60
  store i32 3, ptr %53, align 8, !tbaa !29
  %69 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %12, i64 noundef 160, ptr noundef nonnull %.str.32..str.33, i32 noundef %.0137195) #10
  %70 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %71 = call noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %70, i32 noundef 55, ptr noundef nonnull %12, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2486, i32 noundef 1)
  %72 = call noundef i32 @_ZN7qpOASES9QProblemB18determineDataShiftEPKdS2_S2_PdS3_S3_RNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull align 4 dereferenceable(4) %9)
  %.not151 = icmp eq i32 %72, 0
  br i1 %.not151, label %80, label %73

73:                                               ; preds = %68
  call void @_ZdaPv(ptr noundef nonnull %35) #11
  call void @_ZdaPv(ptr noundef nonnull %34) #11
  call void @_ZdaPv(ptr noundef nonnull %33) #11
  call void @_ZdaPv(ptr noundef nonnull %38) #11
  call void @_ZdaPv(ptr noundef nonnull %37) #11
  call void @_ZdaPv(ptr noundef nonnull %36) #11
  store i32 %.0137195, ptr %4, align 4, !tbaa !27
  br i1 %.not, label %77, label %74

74:                                               ; preds = %73
  %75 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %76 = fsub double %75, %.0138
  store double %76, ptr %5, align 8, !tbaa !28
  br label %77

77:                                               ; preds = %74, %73
  %78 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %79 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %78, i32 noundef 56, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2504, i32 noundef 1)
  br label %188

80:                                               ; preds = %68
  %81 = load i32, ptr %9, align 4, !tbaa !30
  %82 = call noundef i32 @_ZN7qpOASES9QProblemB22determineStepDirectionEPKdS2_S2_NS_11BooleanTypeEPdS4_S4_(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %38, i32 noundef %81, ptr noundef nonnull %34, ptr noundef nonnull %33, ptr noundef nonnull %35)
  %.not152 = icmp eq i32 %82, 0
  br i1 %.not152, label %90, label %83

83:                                               ; preds = %80
  call void @_ZdaPv(ptr noundef nonnull %35) #11
  call void @_ZdaPv(ptr noundef nonnull %34) #11
  call void @_ZdaPv(ptr noundef nonnull %33) #11
  call void @_ZdaPv(ptr noundef nonnull %38) #11
  call void @_ZdaPv(ptr noundef nonnull %37) #11
  call void @_ZdaPv(ptr noundef nonnull %36) #11
  store i32 %.0137195, ptr %4, align 4, !tbaa !27
  br i1 %.not, label %87, label %84

84:                                               ; preds = %83
  %85 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %86 = fsub double %85, %.0138
  store double %86, ptr %5, align 8, !tbaa !28
  br label %87

87:                                               ; preds = %84, %83
  %88 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %89 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %88, i32 noundef 57, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2523, i32 noundef 1)
  br label %188

90:                                               ; preds = %80
  %91 = call noundef i32 @_ZN7qpOASES9QProblemB11performStepEPKdS2_S2_S2_S2_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %34, ptr noundef nonnull %33, ptr noundef nonnull %35, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11)
  %.not153 = icmp eq i32 %91, 0
  br i1 %.not153, label %99, label %92

92:                                               ; preds = %90
  call void @_ZdaPv(ptr noundef nonnull %35) #11
  call void @_ZdaPv(ptr noundef nonnull %34) #11
  call void @_ZdaPv(ptr noundef nonnull %33) #11
  call void @_ZdaPv(ptr noundef nonnull %38) #11
  call void @_ZdaPv(ptr noundef nonnull %37) #11
  call void @_ZdaPv(ptr noundef nonnull %36) #11
  store i32 %.0137195, ptr %4, align 4, !tbaa !27
  br i1 %.not, label %96, label %93

93:                                               ; preds = %92
  %94 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %95 = fsub double %94, %.0138
  store double %95, ptr %5, align 8, !tbaa !28
  br label %96

96:                                               ; preds = %93, %92
  %97 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %98 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %97, i32 noundef 58, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2544, i32 noundef 1)
  br label %188

99:                                               ; preds = %90
  %100 = call noundef double @_ZN7qpOASES9QProblemB25getRelativeHomotopyLengthEPKdS2_S2_(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3)
  %101 = load double, ptr %55, align 8, !tbaa !31
  %102 = fcmp ugt double %100, %101
  br i1 %102, label %117, label %103

103:                                              ; preds = %99
  store i32 5, ptr %53, align 8, !tbaa !29
  %104 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %105 = call noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %104, i32 noundef 59, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2554, i32 noundef 1)
  %106 = load i32, ptr %10, align 4, !tbaa !27
  %107 = load i32, ptr %11, align 4, !tbaa !32
  %108 = call noundef i32 @_ZN7qpOASES9QProblemB14printIterationEiiNS_15SubjectToStatusEdNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %0, i32 noundef %.0137195, i32 noundef %106, i32 noundef %107, double noundef %100, i32 noundef %7)
  %.not157 = icmp eq i32 %108, 0
  br i1 %.not157, label %112, label %109

109:                                              ; preds = %103
  %110 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %111 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %110, i32 noundef 103, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2557, i32 noundef 1)
  br label %112

112:                                              ; preds = %109, %103
  store i32 %.0137195, ptr %4, align 4, !tbaa !27
  br i1 %.not, label %116, label %113

113:                                              ; preds = %112
  %114 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %115 = fsub double %114, %.0138
  store double %115, ptr %5, align 8, !tbaa !28
  br label %116

116:                                              ; preds = %112, %113
  call void @_ZdaPv(ptr noundef nonnull %35) #11
  call void @_ZdaPv(ptr noundef nonnull %34) #11
  call void @_ZdaPv(ptr noundef nonnull %33) #11
  call void @_ZdaPv(ptr noundef nonnull %38) #11
  call void @_ZdaPv(ptr noundef nonnull %37) #11
  call void @_ZdaPv(ptr noundef nonnull %36) #11
  br label %188

117:                                              ; preds = %99
  %118 = load i32, ptr %10, align 4, !tbaa !27
  %119 = load i32, ptr %11, align 4, !tbaa !32
  %120 = call noundef i32 @_ZN7qpOASES9QProblemB15changeActiveSetEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(800) %0, i32 noundef %118, i32 noundef %119)
  %.not154 = icmp eq i32 %120, 0
  br i1 %.not154, label %138, label %121

121:                                              ; preds = %117
  call void @_ZdaPv(ptr noundef nonnull %35) #11
  call void @_ZdaPv(ptr noundef nonnull %34) #11
  call void @_ZdaPv(ptr noundef nonnull %33) #11
  call void @_ZdaPv(ptr noundef nonnull %38) #11
  call void @_ZdaPv(ptr noundef nonnull %37) #11
  call void @_ZdaPv(ptr noundef nonnull %36) #11
  store i32 %.0137195, ptr %4, align 4, !tbaa !27
  br i1 %.not, label %125, label %122

122:                                              ; preds = %121
  %123 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %124 = fsub double %123, %.0138
  store double %124, ptr %5, align 8, !tbaa !28
  br label %125

125:                                              ; preds = %122, %121
  %126 = load i32, ptr %47, align 4, !tbaa !8
  %127 = icmp eq i32 %126, 1
  br i1 %127, label %128, label %130

128:                                              ; preds = %125
  store i32 4, ptr %53, align 8, !tbaa !29
  %129 = call noundef i32 @_ZN7qpOASES9QProblemB20setInfeasibilityFlagENS_11returnValueENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %0, i32 noundef 61, i32 noundef 0)
  br label %188

130:                                              ; preds = %125
  %131 = load i32, ptr %48, align 8, !tbaa !26
  %132 = icmp eq i32 %131, 1
  %133 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  br i1 %132, label %134, label %136

134:                                              ; preds = %130
  %135 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %133, i32 noundef 62, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2591, i32 noundef 1)
  br label %188

136:                                              ; preds = %130
  %137 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %133, i32 noundef 60, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2594, i32 noundef 1)
  br label %188

138:                                              ; preds = %117
  %139 = load i32, ptr %56, align 8, !tbaa !33
  %140 = icmp sgt i32 %139, 0
  br i1 %140, label %141, label %150

141:                                              ; preds = %138
  %142 = srem i32 %.0137195, %139
  %143 = icmp eq i32 %142, 0
  br i1 %143, label %144, label %150

144:                                              ; preds = %141
  %145 = load ptr, ptr %0, align 8, !tbaa !5
  %146 = getelementptr inbounds i8, ptr %145, i64 96
  %147 = load ptr, ptr %146, align 8
  %148 = call noundef i32 %147(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %.not155 = icmp eq i32 %148, 0
  br i1 %.not155, label %150, label %149

149:                                              ; preds = %144
  call void @_ZdaPv(ptr noundef nonnull %35) #11
  call void @_ZdaPv(ptr noundef nonnull %34) #11
  call void @_ZdaPv(ptr noundef nonnull %33) #11
  call void @_ZdaPv(ptr noundef nonnull %38) #11
  call void @_ZdaPv(ptr noundef nonnull %37) #11
  call void @_ZdaPv(ptr noundef nonnull %36) #11
  br label %188

150:                                              ; preds = %144, %141, %138
  %151 = load double, ptr %57, align 8, !tbaa !34
  %152 = fcmp ole double %151, 2.221000e-16
  %153 = load i32, ptr %58, align 4
  %154 = icmp eq i32 %153, 1
  %or.cond = select i1 %152, i1 %154, i1 false
  br i1 %or.cond, label %.sink.split, label %155

155:                                              ; preds = %150
  %156 = load i32, ptr %59, align 4, !tbaa !35
  %157 = icmp sgt i32 %156, 0
  br i1 %157, label %158, label %166

158:                                              ; preds = %155
  %159 = add nsw i32 %.0137195, 1
  %160 = srem i32 %159, %156
  %161 = icmp eq i32 %160, 0
  br i1 %161, label %.sink.split, label %166

.sink.split:                                      ; preds = %158, %150
  %.sink263 = phi i64 [ 128, %150 ], [ 144, %158 ]
  %162 = load ptr, ptr %0, align 8, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %162, i64 %.sink263
  %164 = load ptr, ptr %163, align 8
  %165 = call noundef i32 %164(ptr noundef nonnull align 8 dereferenceable(800) %0)
  br label %166

166:                                              ; preds = %.sink.split, %155, %158
  store i32 4, ptr %53, align 8, !tbaa !29
  %167 = load i32, ptr %10, align 4, !tbaa !27
  %168 = load i32, ptr %11, align 4, !tbaa !32
  %169 = call noundef i32 @_ZN7qpOASES9QProblemB14printIterationEiiNS_15SubjectToStatusEdNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %0, i32 noundef %.0137195, i32 noundef %167, i32 noundef %168, double noundef %100, i32 noundef %7)
  %.not156 = icmp eq i32 %169, 0
  br i1 %.not156, label %173, label %170

170:                                              ; preds = %166
  %171 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %172 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %171, i32 noundef 103, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2622, i32 noundef 1)
  br label %173

173:                                              ; preds = %166, %170
  %174 = add nsw i32 %.0137195, 1
  %175 = load i32, ptr %4, align 4, !tbaa !27
  %176 = icmp slt i32 %174, %175
  br i1 %176, label %60, label %.loopexit, !llvm.loop !36

.loopexit:                                        ; preds = %173, %46, %65
  %.0137168 = phi i32 [ %.0137195, %65 ], [ %6, %46 ], [ %174, %173 ]
  call void @_ZdaPv(ptr noundef nonnull %35) #11
  call void @_ZdaPv(ptr noundef nonnull %34) #11
  call void @_ZdaPv(ptr noundef nonnull %33) #11
  call void @_ZdaPv(ptr noundef nonnull %38) #11
  call void @_ZdaPv(ptr noundef nonnull %37) #11
  call void @_ZdaPv(ptr noundef nonnull %36) #11
  br i1 %.not, label %180, label %177

177:                                              ; preds = %.loopexit
  %178 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %179 = fsub double %178, %.0138
  store double %179, ptr %5, align 8, !tbaa !28
  br label %180

.critedge:                                        ; preds = %64
  call void @_ZdaPv(ptr noundef nonnull %35) #11
  call void @_ZdaPv(ptr noundef nonnull %34) #11
  call void @_ZdaPv(ptr noundef nonnull %33) #11
  call void @_ZdaPv(ptr noundef nonnull %38) #11
  call void @_ZdaPv(ptr noundef nonnull %37) #11
  call void @_ZdaPv(ptr noundef nonnull %36) #11
  br label %180

180:                                              ; preds = %.critedge, %177, %.loopexit
  %.0137167 = phi i32 [ %.0137195, %.critedge ], [ %.0137168, %177 ], [ %.0137168, %.loopexit ]
  %181 = getelementptr inbounds i8, ptr %0, i64 272
  %182 = load i32, ptr %181, align 8, !tbaa !38
  %183 = icmp eq i32 %182, 3
  br i1 %183, label %184, label %188

184:                                              ; preds = %180
  %185 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %12, i64 noundef 160, ptr noundef nonnull @.str.34, i32 noundef %.0137167) #10
  %186 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %187 = call noundef i32 @_ZN7qpOASES15MessageHandling12throwWarningENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %186, i32 noundef 64, ptr noundef nonnull %12, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2639, i32 noundef 1)
  br label %188

188:                                              ; preds = %180, %184, %149, %136, %134, %128, %116, %96, %87, %77, %43
  %.0 = phi i32 [ %45, %43 ], [ %187, %184 ], [ %72, %77 ], [ %82, %87 ], [ %91, %96 ], [ 0, %116 ], [ %129, %128 ], [ %135, %134 ], [ %120, %136 ], [ %148, %149 ], [ 64, %180 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  br label %189

189:                                              ; preds = %188, %22
  %.1 = phi i32 [ %24, %22 ], [ %.0, %188 ]
  ret i32 %.1
}

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

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

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

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

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

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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #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 = { 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 #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { nounwind }
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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !10, i64 212}
!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 = !{!9, !10, i64 216}
!27 = !{!15, !15, i64 0}
!28 = !{!17, !17, i64 0}
!29 = !{!9, !18, i64 208}
!30 = !{!10, !10, i64 0}
!31 = !{!9, !17, i64 312}
!32 = !{!22, !22, i64 0}
!33 = !{!9, !15, i64 304}
!34 = !{!9, !17, i64 200}
!35 = !{!9, !15, i64 300}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!9, !21, i64 272}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass