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

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

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

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

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800), double noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6 align 2

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

declare noundef i32 @_ZN7qpOASES7Flipper3setEPKNS_6BoundsEPKdPKNS_11ConstraintsES5_S5_(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

declare noundef i32 @_ZNK7qpOASES7Flipper3getEPNS_6BoundsEPdPNS_11ConstraintsES3_S3_(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #1

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

45:                                               ; preds = %5
  %46 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %47 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %46, i32 noundef 98, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4034, i32 noundef 1)
  store i32 %47, ptr %6, align 4
  store i32 1, ptr %21, align 4
  br label %858

48:                                               ; preds = %5
  %49 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %40)
  %50 = icmp eq i32 %49, 0
  br i1 %50, label %60, label %51

51:                                               ; preds = %48
  %52 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %40)
  %53 = icmp eq i32 %52, 2
  br i1 %53, label %60, label %54

54:                                               ; preds = %51
  %55 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %40)
  %56 = icmp eq i32 %55, 4
  br i1 %56, label %60, label %57

57:                                               ; preds = %54
  %58 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %40)
  %59 = icmp eq i32 %58, 5
  br i1 %59, label %60, label %63

60:                                               ; preds = %57, %54, %51, %48
  %61 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %62 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %61, i32 noundef 9, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4041, i32 noundef 1)
  store i32 %62, ptr %6, align 4
  store i32 1, ptr %21, align 4
  br label %858

63:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %64 = call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %40)
  store i32 %64, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #8
  %65 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFREv(ptr noundef nonnull align 8 dereferenceable(800) %40)
  store i32 %65, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  %66 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %40)
  store i32 %66, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  %67 = load ptr, ptr %40, align 8, !tbaa !15
  %68 = getelementptr inbounds ptr, ptr %67, i64 7
  %69 = load ptr, ptr %68, align 8
  %70 = call noundef i32 %69(ptr noundef nonnull align 8 dereferenceable(1064) %40)
  store i32 %70, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  %71 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 8
  %72 = load i32, ptr %71, align 8, !tbaa !17
  %73 = load i32, ptr %24, align 4, !tbaa !9
  %74 = sub nsw i32 %72, %73
  store i32 %74, ptr %26, align 4, !tbaa !9
  %75 = load i32, ptr %11, align 4, !tbaa !11
  %76 = icmp eq i32 %75, 1
  br i1 %76, label %77, label %85

77:                                               ; preds = %63
  %78 = load i32, ptr %8, align 4, !tbaa !9
  %79 = call noundef i32 @_ZN7qpOASES8QProblem22ensureNonzeroCurvatureENS_11BooleanTypeEiRS1_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064) %40, i32 noundef 1, i32 noundef %78, ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %19)
  store i32 %79, ptr %16, align 4, !tbaa !13
  %80 = load i32, ptr %16, align 4, !tbaa !13
  %81 = icmp ne i32 %80, 0
  br i1 %81, label %82, label %84

82:                                               ; preds = %77
  %83 = load i32, ptr %16, align 4, !tbaa !13
  store i32 %83, ptr %6, align 4
  store i32 1, ptr %21, align 4
  br label %857

84:                                               ; preds = %77
  br label %85

85:                                               ; preds = %84, %63
  %86 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 23
  %87 = getelementptr inbounds %"class.qpOASES::Options", ptr %86, i32 0, i32 3
  %88 = load i32, ptr %87, align 4, !tbaa !32
  %89 = icmp eq i32 %88, 1
  br i1 %89, label %90, label %107

90:                                               ; preds = %85
  %91 = load i32, ptr %10, align 4, !tbaa !11
  %92 = icmp eq i32 %91, 1
  br i1 %92, label %93, label %107

93:                                               ; preds = %90
  %94 = load i32, ptr %20, align 4, !tbaa !11
  %95 = icmp eq i32 %94, 0
  br i1 %95, label %96, label %107

96:                                               ; preds = %93
  %97 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 24
  %98 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 6
  %99 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 7
  %100 = load ptr, ptr %99, align 8, !tbaa !33
  %101 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 5
  %102 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %103 = load ptr, ptr %102, align 8, !tbaa !34
  %104 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 6
  %105 = load ptr, ptr %104, align 8, !tbaa !35
  %106 = call noundef i32 @_ZN7qpOASES7Flipper3setEPKNS_6BoundsEPKdPKNS_11ConstraintsES5_S5_(ptr noundef nonnull align 8 dereferenceable(272) %97, ptr noundef %98, ptr noundef %100, ptr noundef %101, ptr noundef %103, ptr noundef %105)
  br label %107

107:                                              ; preds = %96, %93, %90, %85
  %108 = load i32, ptr %8, align 4, !tbaa !9
  %109 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 25
  %110 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %109, i32 0, i32 1
  store i32 %108, ptr %110, align 4, !tbaa !36
  %111 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 6
  %112 = load i32, ptr %8, align 4, !tbaa !9
  %113 = call noundef i32 @_ZN7qpOASES6Bounds15moveFixedToFreeEi(ptr noundef nonnull align 8 dereferenceable(120) %111, i32 noundef %112)
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %115, label %118

115:                                              ; preds = %107
  %116 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %117 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %116, i32 noundef 81, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4068, i32 noundef 1)
  store i32 %117, ptr %6, align 4
  store i32 1, ptr %21, align 4
  br label %857

118:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %119 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 6
  %120 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %119)
  %121 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %120, ptr noundef %27)
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  %122 = load ptr, ptr %27, align 8, !tbaa !5
  %123 = load i32, ptr %23, align 4, !tbaa !9
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds i32, ptr %122, i64 %124
  %126 = load i32, ptr %125, align 4, !tbaa !9
  store i32 %126, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %155, %118
  %128 = load i32, ptr %12, align 4, !tbaa !9
  %129 = load i32, ptr %23, align 4, !tbaa !9
  %130 = icmp slt i32 %128, %129
  br i1 %130, label %131, label %158

131:                                              ; preds = %127
  %132 = load ptr, ptr %27, align 8, !tbaa !5
  %133 = load i32, ptr %12, align 4, !tbaa !9
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds i32, ptr %132, i64 %134
  %136 = load i32, ptr %135, align 4, !tbaa !9
  store i32 %136, ptr %14, align 4, !tbaa !9
  %137 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %138 = load ptr, ptr %137, align 8, !tbaa !34
  %139 = load i32, ptr %14, align 4, !tbaa !9
  %140 = load i32, ptr %22, align 4, !tbaa !9
  %141 = load i32, ptr %23, align 4, !tbaa !9
  %142 = mul nsw i32 %140, %141
  %143 = add nsw i32 %139, %142
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds double, ptr %138, i64 %144
  store double 0.000000e+00, ptr %145, align 8, !tbaa !37
  %146 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %147 = load ptr, ptr %146, align 8, !tbaa !34
  %148 = load i32, ptr %28, align 4, !tbaa !9
  %149 = load i32, ptr %22, align 4, !tbaa !9
  %150 = load i32, ptr %12, align 4, !tbaa !9
  %151 = mul nsw i32 %149, %150
  %152 = add nsw i32 %148, %151
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds double, ptr %147, i64 %153
  store double 0.000000e+00, ptr %154, align 8, !tbaa !37
  br label %155

155:                                              ; preds = %131
  %156 = load i32, ptr %12, align 4, !tbaa !9
  %157 = add nsw i32 %156, 1
  store i32 %157, ptr %12, align 4, !tbaa !9
  br label %127, !llvm.loop !38

158:                                              ; preds = %127
  %159 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %160 = load ptr, ptr %159, align 8, !tbaa !34
  %161 = load i32, ptr %28, align 4, !tbaa !9
  %162 = load i32, ptr %22, align 4, !tbaa !9
  %163 = load i32, ptr %23, align 4, !tbaa !9
  %164 = mul nsw i32 %162, %163
  %165 = add nsw i32 %161, %164
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds double, ptr %160, i64 %166
  store double 1.000000e+00, ptr %167, align 8, !tbaa !37
  %168 = load i32, ptr %24, align 4, !tbaa !9
  %169 = icmp sgt i32 %168, 0
  br i1 %169, label %170, label %369

170:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %171 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 5
  %172 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %171)
  %173 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %172, ptr noundef %29)
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %174 = load i32, ptr %24, align 4, !tbaa !9
  %175 = sext i32 %174 to i64
  %176 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %175, i64 8)
  %177 = extractvalue { i64, i1 } %176, 1
  %178 = extractvalue { i64, i1 } %176, 0
  %179 = select i1 %177, i64 -1, i64 %178
  %180 = call noalias noundef nonnull ptr @_Znam(i64 noundef %179) #9
  store ptr %180, ptr %30, align 8, !tbaa !5
  %181 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 2
  %182 = load ptr, ptr %181, align 8, !tbaa !40
  %183 = load i32, ptr %8, align 4, !tbaa !9
  %184 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 5
  %185 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %184)
  %186 = load ptr, ptr %30, align 8, !tbaa !5
  %187 = load ptr, ptr %182, align 8, !tbaa !15
  %188 = getelementptr inbounds ptr, ptr %187, i64 10
  %189 = load ptr, ptr %188, align 8
  %190 = call noundef i32 %189(ptr noundef nonnull align 8 dereferenceable(12) %182, i32 noundef %183, ptr noundef %185, double noundef 1.000000e+00, ptr noundef %186)
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %191 = load i32, ptr %24, align 4, !tbaa !9
  %192 = sub nsw i32 %191, 1
  store i32 %192, ptr %13, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %361, %170
  %194 = load i32, ptr %13, align 4, !tbaa !9
  %195 = icmp sge i32 %194, 0
  br i1 %195, label %196, label %364

196:                                              ; preds = %193
  %197 = load ptr, ptr %30, align 8, !tbaa !5
  %198 = load i32, ptr %24, align 4, !tbaa !9
  %199 = sub nsw i32 %198, 1
  %200 = load i32, ptr %13, align 4, !tbaa !9
  %201 = sub nsw i32 %199, %200
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds double, ptr %197, i64 %202
  %204 = load double, ptr %203, align 8, !tbaa !37
  %205 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 6
  %206 = load ptr, ptr %205, align 8, !tbaa !35
  %207 = load i32, ptr %24, align 4, !tbaa !9
  %208 = sub nsw i32 %207, 1
  %209 = load i32, ptr %13, align 4, !tbaa !9
  %210 = sub nsw i32 %208, %209
  %211 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 8
  %212 = load i32, ptr %211, align 8, !tbaa !17
  %213 = mul nsw i32 %210, %212
  %214 = load i32, ptr %26, align 4, !tbaa !9
  %215 = load i32, ptr %13, align 4, !tbaa !9
  %216 = add nsw i32 %214, %215
  %217 = add nsw i32 %213, %216
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds double, ptr %206, i64 %218
  %220 = load double, ptr %219, align 8, !tbaa !37
  %221 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 6
  %222 = load ptr, ptr %221, align 8, !tbaa !35
  %223 = load i32, ptr %24, align 4, !tbaa !9
  %224 = sub nsw i32 %223, 1
  %225 = load i32, ptr %13, align 4, !tbaa !9
  %226 = sub nsw i32 %224, %225
  %227 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 8
  %228 = load i32, ptr %227, align 8, !tbaa !17
  %229 = mul nsw i32 %226, %228
  %230 = load i32, ptr %26, align 4, !tbaa !9
  %231 = load i32, ptr %13, align 4, !tbaa !9
  %232 = add nsw i32 %230, %231
  %233 = add nsw i32 %229, %232
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds double, ptr %222, i64 %234
  %236 = load ptr, ptr %30, align 8, !tbaa !5
  %237 = load i32, ptr %24, align 4, !tbaa !9
  %238 = sub nsw i32 %237, 1
  %239 = load i32, ptr %13, align 4, !tbaa !9
  %240 = sub nsw i32 %238, %239
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds double, ptr %236, i64 %241
  call void @_ZNK7qpOASES9QProblemB13computeGivensEddRdS1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(800) %40, double noundef %204, double noundef %220, ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32)
  %243 = load double, ptr %32, align 8, !tbaa !37
  %244 = load double, ptr %31, align 8, !tbaa !37
  %245 = fadd double 1.000000e+00, %244
  %246 = fdiv double %243, %245
  store double %246, ptr %33, align 8, !tbaa !37
  %247 = load i32, ptr %24, align 4, !tbaa !9
  %248 = load i32, ptr %13, align 4, !tbaa !9
  %249 = sub nsw i32 %247, %248
  store i32 %249, ptr %12, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %292, %196
  %251 = load i32, ptr %12, align 4, !tbaa !9
  %252 = load i32, ptr %24, align 4, !tbaa !9
  %253 = icmp slt i32 %251, %252
  br i1 %253, label %254, label %295

254:                                              ; preds = %250
  %255 = load double, ptr %31, align 8, !tbaa !37
  %256 = load double, ptr %32, align 8, !tbaa !37
  %257 = load double, ptr %33, align 8, !tbaa !37
  %258 = load ptr, ptr %30, align 8, !tbaa !5
  %259 = load i32, ptr %12, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds double, ptr %258, i64 %260
  %262 = load double, ptr %261, align 8, !tbaa !37
  %263 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 6
  %264 = load ptr, ptr %263, align 8, !tbaa !35
  %265 = load i32, ptr %12, align 4, !tbaa !9
  %266 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 8
  %267 = load i32, ptr %266, align 8, !tbaa !17
  %268 = mul nsw i32 %265, %267
  %269 = load i32, ptr %26, align 4, !tbaa !9
  %270 = load i32, ptr %13, align 4, !tbaa !9
  %271 = add nsw i32 %269, %270
  %272 = add nsw i32 %268, %271
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds double, ptr %264, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !37
  %276 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 6
  %277 = load ptr, ptr %276, align 8, !tbaa !35
  %278 = load i32, ptr %12, align 4, !tbaa !9
  %279 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 8
  %280 = load i32, ptr %279, align 8, !tbaa !17
  %281 = mul nsw i32 %278, %280
  %282 = load i32, ptr %26, align 4, !tbaa !9
  %283 = load i32, ptr %13, align 4, !tbaa !9
  %284 = add nsw i32 %282, %283
  %285 = add nsw i32 %281, %284
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds double, ptr %277, i64 %286
  %288 = load ptr, ptr %30, align 8, !tbaa !5
  %289 = load i32, ptr %12, align 4, !tbaa !9
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds double, ptr %288, i64 %290
  call void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800) %40, double noundef %255, double noundef %256, double noundef %257, double noundef %262, double noundef %275, ptr noundef nonnull align 8 dereferenceable(8) %287, ptr noundef nonnull align 8 dereferenceable(8) %291)
  br label %292

292:                                              ; preds = %254
  %293 = load i32, ptr %12, align 4, !tbaa !9
  %294 = add nsw i32 %293, 1
  store i32 %294, ptr %12, align 4, !tbaa !9
  br label %250, !llvm.loop !41

295:                                              ; preds = %250
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %357, %295
  %297 = load i32, ptr %12, align 4, !tbaa !9
  %298 = load i32, ptr %23, align 4, !tbaa !9
  %299 = icmp sle i32 %297, %298
  br i1 %299, label %300, label %360

300:                                              ; preds = %296
  %301 = load ptr, ptr %27, align 8, !tbaa !5
  %302 = load i32, ptr %12, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds i32, ptr %301, i64 %303
  %305 = load i32, ptr %304, align 4, !tbaa !9
  store i32 %305, ptr %14, align 4, !tbaa !9
  %306 = load double, ptr %31, align 8, !tbaa !37
  %307 = load double, ptr %32, align 8, !tbaa !37
  %308 = load double, ptr %33, align 8, !tbaa !37
  %309 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %310 = load ptr, ptr %309, align 8, !tbaa !34
  %311 = load i32, ptr %14, align 4, !tbaa !9
  %312 = load i32, ptr %22, align 4, !tbaa !9
  %313 = load i32, ptr %25, align 4, !tbaa !9
  %314 = add nsw i32 %313, 1
  %315 = load i32, ptr %13, align 4, !tbaa !9
  %316 = add nsw i32 %314, %315
  %317 = mul nsw i32 %312, %316
  %318 = add nsw i32 %311, %317
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds double, ptr %310, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !37
  %322 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %323 = load ptr, ptr %322, align 8, !tbaa !34
  %324 = load i32, ptr %14, align 4, !tbaa !9
  %325 = load i32, ptr %22, align 4, !tbaa !9
  %326 = load i32, ptr %25, align 4, !tbaa !9
  %327 = load i32, ptr %13, align 4, !tbaa !9
  %328 = add nsw i32 %326, %327
  %329 = mul nsw i32 %325, %328
  %330 = add nsw i32 %324, %329
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds double, ptr %323, i64 %331
  %333 = load double, ptr %332, align 8, !tbaa !37
  %334 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %335 = load ptr, ptr %334, align 8, !tbaa !34
  %336 = load i32, ptr %14, align 4, !tbaa !9
  %337 = load i32, ptr %22, align 4, !tbaa !9
  %338 = load i32, ptr %25, align 4, !tbaa !9
  %339 = add nsw i32 %338, 1
  %340 = load i32, ptr %13, align 4, !tbaa !9
  %341 = add nsw i32 %339, %340
  %342 = mul nsw i32 %337, %341
  %343 = add nsw i32 %336, %342
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds double, ptr %335, i64 %344
  %346 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %347 = load ptr, ptr %346, align 8, !tbaa !34
  %348 = load i32, ptr %14, align 4, !tbaa !9
  %349 = load i32, ptr %22, align 4, !tbaa !9
  %350 = load i32, ptr %25, align 4, !tbaa !9
  %351 = load i32, ptr %13, align 4, !tbaa !9
  %352 = add nsw i32 %350, %351
  %353 = mul nsw i32 %349, %352
  %354 = add nsw i32 %348, %353
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds double, ptr %347, i64 %355
  call void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800) %40, double noundef %306, double noundef %307, double noundef %308, double noundef %321, double noundef %333, ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull align 8 dereferenceable(8) %356)
  br label %357

357:                                              ; preds = %300
  %358 = load i32, ptr %12, align 4, !tbaa !9
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr %12, align 4, !tbaa !9
  br label %296, !llvm.loop !42

360:                                              ; preds = %296
  br label %361

361:                                              ; preds = %360
  %362 = load i32, ptr %13, align 4, !tbaa !9
  %363 = add nsw i32 %362, -1
  store i32 %363, ptr %13, align 4, !tbaa !9
  br label %193, !llvm.loop !43

364:                                              ; preds = %193
  %365 = load ptr, ptr %30, align 8, !tbaa !5
  %366 = icmp eq ptr %365, null
  br i1 %366, label %368, label %367

367:                                              ; preds = %364
  call void @_ZdaPv(ptr noundef %365) #10
  br label %368

368:                                              ; preds = %367, %364
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %369

369:                                              ; preds = %368, %158
  %370 = load i32, ptr %9, align 4, !tbaa !11
  %371 = icmp eq i32 %370, 1
  br i1 %371, label %372, label %855

372:                                              ; preds = %369
  %373 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 15
  %374 = load i32, ptr %373, align 4, !tbaa !44
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %855

376:                                              ; preds = %372
  %377 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 15
  %378 = load i32, ptr %377, align 4, !tbaa !44
  %379 = icmp ne i32 %378, 1
  br i1 %379, label %380, label %855

380:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %381 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %382 = load ptr, ptr %381, align 8, !tbaa !34
  %383 = load i32, ptr %28, align 4, !tbaa !9
  %384 = load i32, ptr %22, align 4, !tbaa !9
  %385 = load i32, ptr %25, align 4, !tbaa !9
  %386 = mul nsw i32 %384, %385
  %387 = add nsw i32 %383, %386
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds double, ptr %382, i64 %388
  %390 = load double, ptr %389, align 8, !tbaa !37
  store double %390, ptr %34, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %391 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 2
  %392 = load ptr, ptr %391, align 8, !tbaa !45
  %393 = load ptr, ptr %392, align 8, !tbaa !15
  %394 = getelementptr i8, ptr %393, i64 -24
  %395 = load i64, ptr %394, align 8
  %396 = getelementptr inbounds i8, ptr %392, i64 %395
  %397 = load i32, ptr %28, align 4, !tbaa !9
  %398 = load ptr, ptr %396, align 8, !tbaa !15
  %399 = getelementptr inbounds ptr, ptr %398, i64 4
  %400 = load ptr, ptr %399, align 8
  %401 = call noundef double %400(ptr noundef nonnull align 8 dereferenceable(12) %396, i32 noundef %397)
  %402 = load double, ptr %34, align 8, !tbaa !37
  %403 = fmul double %401, %402
  %404 = load double, ptr %34, align 8, !tbaa !37
  %405 = fmul double %403, %404
  store double %405, ptr %35, align 8, !tbaa !37
  %406 = load i32, ptr %23, align 4, !tbaa !9
  %407 = icmp sgt i32 %406, 0
  br i1 %407, label %408, label %696

408:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %409 = load i32, ptr %23, align 4, !tbaa !9
  %410 = add nsw i32 %409, 1
  %411 = sext i32 %410 to i64
  %412 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %411, i64 8)
  %413 = extractvalue { i64, i1 } %412, 1
  %414 = extractvalue { i64, i1 } %412, 0
  %415 = select i1 %413, i64 -1, i64 %414
  %416 = call noalias noundef nonnull ptr @_Znam(i64 noundef %415) #9
  store ptr %416, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %417 = load i32, ptr %23, align 4, !tbaa !9
  %418 = add nsw i32 %417, 1
  %419 = sext i32 %418 to i64
  %420 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %419, i64 8)
  %421 = extractvalue { i64, i1 } %420, 1
  %422 = extractvalue { i64, i1 } %420, 0
  %423 = select i1 %421, i64 -1, i64 %422
  %424 = call noalias noundef nonnull ptr @_Znam(i64 noundef %423) #9
  store ptr %424, ptr %37, align 8, !tbaa !5
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %425

425:                                              ; preds = %448, %408
  %426 = load i32, ptr %13, align 4, !tbaa !9
  %427 = load i32, ptr %23, align 4, !tbaa !9
  %428 = icmp slt i32 %426, %427
  br i1 %428, label %429, label %451

429:                                              ; preds = %425
  %430 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %431 = load ptr, ptr %430, align 8, !tbaa !34
  %432 = load ptr, ptr %27, align 8, !tbaa !5
  %433 = load i32, ptr %13, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds i32, ptr %432, i64 %434
  %436 = load i32, ptr %435, align 4, !tbaa !9
  %437 = load i32, ptr %22, align 4, !tbaa !9
  %438 = load i32, ptr %25, align 4, !tbaa !9
  %439 = mul nsw i32 %437, %438
  %440 = add nsw i32 %436, %439
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %431, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !37
  %444 = load ptr, ptr %37, align 8, !tbaa !5
  %445 = load i32, ptr %13, align 4, !tbaa !9
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds double, ptr %444, i64 %446
  store double %443, ptr %447, align 8, !tbaa !37
  br label %448

448:                                              ; preds = %429
  %449 = load i32, ptr %13, align 4, !tbaa !9
  %450 = add nsw i32 %449, 1
  store i32 %450, ptr %13, align 4, !tbaa !9
  br label %425, !llvm.loop !46

451:                                              ; preds = %425
  %452 = load ptr, ptr %37, align 8, !tbaa !5
  %453 = load i32, ptr %23, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %452, i64 %454
  store double 0.000000e+00, ptr %455, align 8, !tbaa !37
  %456 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 2
  %457 = load ptr, ptr %456, align 8, !tbaa !45
  %458 = load ptr, ptr %457, align 8, !tbaa !15
  %459 = getelementptr i8, ptr %458, i64 -24
  %460 = load i64, ptr %459, align 8
  %461 = getelementptr inbounds i8, ptr %457, i64 %460
  %462 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 6
  %463 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %462)
  %464 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 6
  %465 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %464)
  %466 = load ptr, ptr %37, align 8, !tbaa !5
  %467 = load i32, ptr %23, align 4, !tbaa !9
  %468 = add nsw i32 %467, 1
  %469 = load ptr, ptr %36, align 8, !tbaa !5
  %470 = load i32, ptr %23, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  %472 = load ptr, ptr %461, align 8, !tbaa !15
  %473 = getelementptr inbounds ptr, ptr %472, i64 17
  %474 = load ptr, ptr %473, align 8
  %475 = call noundef i32 %474(ptr noundef nonnull align 8 dereferenceable(12) %461, ptr noundef %463, ptr noundef %465, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %466, i32 noundef %468, double noundef 0.000000e+00, ptr noundef %469, i32 noundef %471, i32 noundef 1)
  %476 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 2
  %477 = load ptr, ptr %476, align 8, !tbaa !45
  %478 = load ptr, ptr %477, align 8, !tbaa !15
  %479 = getelementptr i8, ptr %478, i64 -24
  %480 = load i64, ptr %479, align 8
  %481 = getelementptr inbounds i8, ptr %477, i64 %480
  %482 = load i32, ptr %28, align 4, !tbaa !9
  %483 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 6
  %484 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %483)
  %485 = load ptr, ptr %37, align 8, !tbaa !5
  %486 = load ptr, ptr %481, align 8, !tbaa !15
  %487 = getelementptr inbounds ptr, ptr %486, i64 10
  %488 = load ptr, ptr %487, align 8
  %489 = call noundef i32 %488(ptr noundef nonnull align 8 dereferenceable(12) %481, i32 noundef %482, ptr noundef %484, double noundef 1.000000e+00, ptr noundef %485)
  %490 = load i32, ptr %25, align 4, !tbaa !9
  %491 = icmp sgt i32 %490, 0
  br i1 %491, label %492, label %645

492:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %493 = load i32, ptr %25, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %494, i64 8)
  %496 = extractvalue { i64, i1 } %495, 1
  %497 = extractvalue { i64, i1 } %495, 0
  %498 = select i1 %496, i64 -1, i64 %497
  %499 = call noalias noundef nonnull ptr @_Znam(i64 noundef %498) #9
  store ptr %499, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %500 = load i32, ptr %25, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %501, i64 8)
  %503 = extractvalue { i64, i1 } %502, 1
  %504 = extractvalue { i64, i1 } %502, 0
  %505 = select i1 %503, i64 -1, i64 %504
  %506 = call noalias noundef nonnull ptr @_Znam(i64 noundef %505) #9
  store ptr %506, ptr %39, align 8, !tbaa !5
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %507

507:                                              ; preds = %516, %492
  %508 = load i32, ptr %12, align 4, !tbaa !9
  %509 = load i32, ptr %25, align 4, !tbaa !9
  %510 = icmp slt i32 %508, %509
  br i1 %510, label %511, label %519

511:                                              ; preds = %507
  %512 = load ptr, ptr %39, align 8, !tbaa !5
  %513 = load i32, ptr %12, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds double, ptr %512, i64 %514
  store double 0.000000e+00, ptr %515, align 8, !tbaa !37
  br label %516

516:                                              ; preds = %511
  %517 = load i32, ptr %12, align 4, !tbaa !9
  %518 = add nsw i32 %517, 1
  store i32 %518, ptr %12, align 4, !tbaa !9
  br label %507, !llvm.loop !47

519:                                              ; preds = %507
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %520

520:                                              ; preds = %567, %519
  %521 = load i32, ptr %13, align 4, !tbaa !9
  %522 = load i32, ptr %23, align 4, !tbaa !9
  %523 = icmp slt i32 %521, %522
  br i1 %523, label %524, label %570

524:                                              ; preds = %520
  %525 = load ptr, ptr %27, align 8, !tbaa !5
  %526 = load i32, ptr %13, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds i32, ptr %525, i64 %527
  %529 = load i32, ptr %528, align 4, !tbaa !9
  store i32 %529, ptr %15, align 4, !tbaa !9
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %530

530:                                              ; preds = %563, %524
  %531 = load i32, ptr %12, align 4, !tbaa !9
  %532 = load i32, ptr %25, align 4, !tbaa !9
  %533 = icmp slt i32 %531, %532
  br i1 %533, label %534, label %566

534:                                              ; preds = %530
  %535 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %536 = load ptr, ptr %535, align 8, !tbaa !34
  %537 = load i32, ptr %15, align 4, !tbaa !9
  %538 = load i32, ptr %22, align 4, !tbaa !9
  %539 = load i32, ptr %12, align 4, !tbaa !9
  %540 = mul nsw i32 %538, %539
  %541 = add nsw i32 %537, %540
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds double, ptr %536, i64 %542
  %544 = load double, ptr %543, align 8, !tbaa !37
  %545 = load ptr, ptr %36, align 8, !tbaa !5
  %546 = load i32, ptr %13, align 4, !tbaa !9
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds double, ptr %545, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !37
  %550 = load double, ptr %34, align 8, !tbaa !37
  %551 = load ptr, ptr %37, align 8, !tbaa !5
  %552 = load i32, ptr %13, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %551, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !37
  %556 = call double @llvm.fmuladd.f64(double %550, double %555, double %549)
  %557 = load ptr, ptr %39, align 8, !tbaa !5
  %558 = load i32, ptr %12, align 4, !tbaa !9
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds double, ptr %557, i64 %559
  %561 = load double, ptr %560, align 8, !tbaa !37
  %562 = call double @llvm.fmuladd.f64(double %544, double %556, double %561)
  store double %562, ptr %560, align 8, !tbaa !37
  br label %563

563:                                              ; preds = %534
  %564 = load i32, ptr %12, align 4, !tbaa !9
  %565 = add nsw i32 %564, 1
  store i32 %565, ptr %12, align 4, !tbaa !9
  br label %530, !llvm.loop !48

566:                                              ; preds = %530
  br label %567

567:                                              ; preds = %566
  %568 = load i32, ptr %13, align 4, !tbaa !9
  %569 = add nsw i32 %568, 1
  store i32 %569, ptr %13, align 4, !tbaa !9
  br label %520, !llvm.loop !49

570:                                              ; preds = %520
  %571 = load ptr, ptr %39, align 8, !tbaa !5
  %572 = load ptr, ptr %38, align 8, !tbaa !5
  %573 = load ptr, ptr %40, align 8, !tbaa !15
  %574 = getelementptr inbounds ptr, ptr %573, i64 15
  %575 = load ptr, ptr %574, align 8
  %576 = call noundef i32 %575(ptr noundef nonnull align 8 dereferenceable(800) %40, ptr noundef %571, i32 noundef 1, i32 noundef 1, ptr noundef %572)
  %577 = icmp ne i32 %576, 0
  br i1 %577, label %578, label %597

578:                                              ; preds = %570
  %579 = load ptr, ptr %37, align 8, !tbaa !5
  %580 = icmp eq ptr %579, null
  br i1 %580, label %582, label %581

581:                                              ; preds = %578
  call void @_ZdaPv(ptr noundef %579) #10
  br label %582

582:                                              ; preds = %581, %578
  %583 = load ptr, ptr %36, align 8, !tbaa !5
  %584 = icmp eq ptr %583, null
  br i1 %584, label %586, label %585

585:                                              ; preds = %582
  call void @_ZdaPv(ptr noundef %583) #10
  br label %586

586:                                              ; preds = %585, %582
  %587 = load ptr, ptr %38, align 8, !tbaa !5
  %588 = icmp eq ptr %587, null
  br i1 %588, label %590, label %589

589:                                              ; preds = %586
  call void @_ZdaPv(ptr noundef %587) #10
  br label %590

590:                                              ; preds = %589, %586
  %591 = load ptr, ptr %39, align 8, !tbaa !5
  %592 = icmp eq ptr %591, null
  br i1 %592, label %594, label %593

593:                                              ; preds = %590
  call void @_ZdaPv(ptr noundef %591) #10
  br label %594

594:                                              ; preds = %593, %590
  %595 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %596 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %595, i32 noundef 81, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4162, i32 noundef 1)
  store i32 %596, ptr %6, align 4
  store i32 1, ptr %21, align 4
  br label %642

597:                                              ; preds = %570
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %598

598:                                              ; preds = %630, %597
  %599 = load i32, ptr %12, align 4, !tbaa !9
  %600 = load i32, ptr %25, align 4, !tbaa !9
  %601 = icmp slt i32 %599, %600
  br i1 %601, label %602, label %633

602:                                              ; preds = %598
  %603 = load ptr, ptr %38, align 8, !tbaa !5
  %604 = load i32, ptr %12, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds double, ptr %603, i64 %605
  %607 = load double, ptr %606, align 8, !tbaa !37
  %608 = load ptr, ptr %38, align 8, !tbaa !5
  %609 = load i32, ptr %12, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds double, ptr %608, i64 %610
  %612 = load double, ptr %611, align 8, !tbaa !37
  %613 = load double, ptr %35, align 8, !tbaa !37
  %614 = fneg double %607
  %615 = call double @llvm.fmuladd.f64(double %614, double %612, double %613)
  store double %615, ptr %35, align 8, !tbaa !37
  %616 = load ptr, ptr %38, align 8, !tbaa !5
  %617 = load i32, ptr %12, align 4, !tbaa !9
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds double, ptr %616, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !37
  %621 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 7
  %622 = load ptr, ptr %621, align 8, !tbaa !33
  %623 = load i32, ptr %12, align 4, !tbaa !9
  %624 = load i32, ptr %22, align 4, !tbaa !9
  %625 = load i32, ptr %25, align 4, !tbaa !9
  %626 = mul nsw i32 %624, %625
  %627 = add nsw i32 %623, %626
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds double, ptr %622, i64 %628
  store double %620, ptr %629, align 8, !tbaa !37
  br label %630

630:                                              ; preds = %602
  %631 = load i32, ptr %12, align 4, !tbaa !9
  %632 = add nsw i32 %631, 1
  store i32 %632, ptr %12, align 4, !tbaa !9
  br label %598, !llvm.loop !50

633:                                              ; preds = %598
  %634 = load ptr, ptr %39, align 8, !tbaa !5
  %635 = icmp eq ptr %634, null
  br i1 %635, label %637, label %636

636:                                              ; preds = %633
  call void @_ZdaPv(ptr noundef %634) #10
  br label %637

637:                                              ; preds = %636, %633
  %638 = load ptr, ptr %38, align 8, !tbaa !5
  %639 = icmp eq ptr %638, null
  br i1 %639, label %641, label %640

640:                                              ; preds = %637
  call void @_ZdaPv(ptr noundef %638) #10
  br label %641

641:                                              ; preds = %640, %637
  store i32 0, ptr %21, align 4
  br label %642

642:                                              ; preds = %641, %594
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  %643 = load i32, ptr %21, align 4
  switch i32 %643, label %693 [
    i32 0, label %644
  ]

644:                                              ; preds = %642
  br label %645

645:                                              ; preds = %644, %451
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %646

646:                                              ; preds = %681, %645
  %647 = load i32, ptr %13, align 4, !tbaa !9
  %648 = load i32, ptr %23, align 4, !tbaa !9
  %649 = icmp slt i32 %647, %648
  br i1 %649, label %650, label %684

650:                                              ; preds = %646
  %651 = load ptr, ptr %27, align 8, !tbaa !5
  %652 = load i32, ptr %13, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds i32, ptr %651, i64 %653
  %655 = load i32, ptr %654, align 4, !tbaa !9
  store i32 %655, ptr %15, align 4, !tbaa !9
  %656 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %657 = load ptr, ptr %656, align 8, !tbaa !34
  %658 = load i32, ptr %15, align 4, !tbaa !9
  %659 = load i32, ptr %22, align 4, !tbaa !9
  %660 = load i32, ptr %25, align 4, !tbaa !9
  %661 = mul nsw i32 %659, %660
  %662 = add nsw i32 %658, %661
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %657, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !37
  %666 = load ptr, ptr %36, align 8, !tbaa !5
  %667 = load i32, ptr %13, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds double, ptr %666, i64 %668
  %670 = load double, ptr %669, align 8, !tbaa !37
  %671 = load double, ptr %34, align 8, !tbaa !37
  %672 = fmul double 2.000000e+00, %671
  %673 = load ptr, ptr %37, align 8, !tbaa !5
  %674 = load i32, ptr %13, align 4, !tbaa !9
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds double, ptr %673, i64 %675
  %677 = load double, ptr %676, align 8, !tbaa !37
  %678 = call double @llvm.fmuladd.f64(double %672, double %677, double %670)
  %679 = load double, ptr %35, align 8, !tbaa !37
  %680 = call double @llvm.fmuladd.f64(double %665, double %678, double %679)
  store double %680, ptr %35, align 8, !tbaa !37
  br label %681

681:                                              ; preds = %650
  %682 = load i32, ptr %13, align 4, !tbaa !9
  %683 = add nsw i32 %682, 1
  store i32 %683, ptr %13, align 4, !tbaa !9
  br label %646, !llvm.loop !51

684:                                              ; preds = %646
  %685 = load ptr, ptr %37, align 8, !tbaa !5
  %686 = icmp eq ptr %685, null
  br i1 %686, label %688, label %687

687:                                              ; preds = %684
  call void @_ZdaPv(ptr noundef %685) #10
  br label %688

688:                                              ; preds = %687, %684
  %689 = load ptr, ptr %36, align 8, !tbaa !5
  %690 = icmp eq ptr %689, null
  br i1 %690, label %692, label %691

691:                                              ; preds = %688
  call void @_ZdaPv(ptr noundef %689) #10
  br label %692

692:                                              ; preds = %691, %688
  store i32 0, ptr %21, align 4
  br label %693

693:                                              ; preds = %692, %642
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  %694 = load i32, ptr %21, align 4
  switch i32 %694, label %852 [
    i32 0, label %695
  ]

695:                                              ; preds = %693
  br label %696

696:                                              ; preds = %695, %380
  %697 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 23
  %698 = getelementptr inbounds %"class.qpOASES::Options", ptr %697, i32 0, i32 3
  %699 = load i32, ptr %698, align 4, !tbaa !32
  %700 = icmp eq i32 %699, 1
  br i1 %700, label %701, label %782

701:                                              ; preds = %696
  %702 = load i32, ptr %10, align 4, !tbaa !11
  %703 = icmp eq i32 %702, 1
  br i1 %703, label %704, label %782

704:                                              ; preds = %701
  %705 = load i32, ptr %20, align 4, !tbaa !11
  %706 = icmp eq i32 %705, 0
  br i1 %706, label %707, label %782

707:                                              ; preds = %704
  %708 = load double, ptr %35, align 8, !tbaa !37
  %709 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 23
  %710 = getelementptr inbounds %"class.qpOASES::Options", ptr %709, i32 0, i32 23
  %711 = load double, ptr %710, align 8, !tbaa !52
  %712 = fcmp ogt double %708, %711
  br i1 %712, label %713, label %725

713:                                              ; preds = %707
  %714 = load double, ptr %35, align 8, !tbaa !37
  %715 = call noundef double @_ZN7qpOASES7getSqrtEd(double noundef %714)
  %716 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 7
  %717 = load ptr, ptr %716, align 8, !tbaa !33
  %718 = load i32, ptr %25, align 4, !tbaa !9
  %719 = load i32, ptr %22, align 4, !tbaa !9
  %720 = load i32, ptr %25, align 4, !tbaa !9
  %721 = mul nsw i32 %719, %720
  %722 = add nsw i32 %718, %721
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds double, ptr %717, i64 %723
  store double %715, ptr %724, align 8, !tbaa !37
  br label %781

725:                                              ; preds = %707
  %726 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 15
  %727 = load i32, ptr %726, align 4, !tbaa !44
  %728 = icmp ne i32 %727, 0
  br i1 %728, label %729, label %731

729:                                              ; preds = %725
  %730 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 15
  store i32 4, ptr %730, align 4, !tbaa !44
  br label %731

731:                                              ; preds = %729, %725
  %732 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 24
  %733 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 6
  %734 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 7
  %735 = load ptr, ptr %734, align 8, !tbaa !33
  %736 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 5
  %737 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 7
  %738 = load ptr, ptr %737, align 8, !tbaa !34
  %739 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %40, i32 0, i32 6
  %740 = load ptr, ptr %739, align 8, !tbaa !35
  %741 = call noundef i32 @_ZNK7qpOASES7Flipper3getEPNS_6BoundsEPdPNS_11ConstraintsES3_S3_(ptr noundef nonnull align 8 dereferenceable(272) %732, ptr noundef %733, ptr noundef %735, ptr noundef %736, ptr noundef %738, ptr noundef %740)
  %742 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 6
  %743 = load i32, ptr %8, align 4, !tbaa !9
  %744 = call noundef i32 @_ZN7qpOASES6Bounds9flipFixedEi(ptr noundef nonnull align 8 dereferenceable(120) %742, i32 noundef %743)
  %745 = load i32, ptr %8, align 4, !tbaa !9
  %746 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 25
  %747 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %746, i32 0, i32 0
  store i32 %745, ptr %747, align 8, !tbaa !53
  %748 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 25
  %749 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %748, i32 0, i32 4
  store i32 2, ptr %749, align 8, !tbaa !54
  %750 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 6
  %751 = load i32, ptr %8, align 4, !tbaa !9
  %752 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %750, i32 noundef %751)
  switch i32 %752, label %777 [
    i32 -1, label %753
    i32 1, label %765
  ]

753:                                              ; preds = %731
  %754 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 5
  %755 = load ptr, ptr %754, align 8, !tbaa !55
  %756 = load i32, ptr %8, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds double, ptr %755, i64 %757
  %759 = load double, ptr %758, align 8, !tbaa !37
  %760 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 4
  %761 = load ptr, ptr %760, align 8, !tbaa !56
  %762 = load i32, ptr %8, align 4, !tbaa !9
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds double, ptr %761, i64 %763
  store double %759, ptr %764, align 8, !tbaa !37
  br label %780

765:                                              ; preds = %731
  %766 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 4
  %767 = load ptr, ptr %766, align 8, !tbaa !56
  %768 = load i32, ptr %8, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds double, ptr %767, i64 %769
  %771 = load double, ptr %770, align 8, !tbaa !37
  %772 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 5
  %773 = load ptr, ptr %772, align 8, !tbaa !55
  %774 = load i32, ptr %8, align 4, !tbaa !9
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds double, ptr %773, i64 %775
  store double %771, ptr %776, align 8, !tbaa !37
  br label %780

777:                                              ; preds = %731
  %778 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %779 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %778, i32 noundef 25, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4211, i32 noundef 1)
  store i32 %779, ptr %6, align 4
  store i32 1, ptr %21, align 4
  br label %852

780:                                              ; preds = %765, %753
  br label %781

781:                                              ; preds = %780, %713
  br label %851

782:                                              ; preds = %704, %701, %696
  %783 = load i32, ptr %20, align 4, !tbaa !11
  %784 = icmp eq i32 %783, 0
  br i1 %784, label %785, label %819

785:                                              ; preds = %782
  %786 = load double, ptr %35, align 8, !tbaa !37
  %787 = fcmp ogt double %786, 1.000000e-25
  br i1 %787, label %788, label %800

788:                                              ; preds = %785
  %789 = load double, ptr %35, align 8, !tbaa !37
  %790 = call noundef double @_ZN7qpOASES7getSqrtEd(double noundef %789)
  %791 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 7
  %792 = load ptr, ptr %791, align 8, !tbaa !33
  %793 = load i32, ptr %25, align 4, !tbaa !9
  %794 = load i32, ptr %22, align 4, !tbaa !9
  %795 = load i32, ptr %25, align 4, !tbaa !9
  %796 = mul nsw i32 %794, %795
  %797 = add nsw i32 %793, %796
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds double, ptr %792, i64 %798
  store double %790, ptr %799, align 8, !tbaa !37
  br label %818

800:                                              ; preds = %785
  %801 = load i32, ptr %10, align 4, !tbaa !11
  %802 = icmp eq i32 %801, 0
  br i1 %802, label %803, label %813

803:                                              ; preds = %800
  %804 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 7
  %805 = load ptr, ptr %804, align 8, !tbaa !33
  %806 = load i32, ptr %25, align 4, !tbaa !9
  %807 = load i32, ptr %22, align 4, !tbaa !9
  %808 = load i32, ptr %25, align 4, !tbaa !9
  %809 = mul nsw i32 %807, %808
  %810 = add nsw i32 %806, %809
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds double, ptr %805, i64 %811
  store double 2.221000e-14, ptr %812, align 8, !tbaa !37
  br label %817

813:                                              ; preds = %800
  %814 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 15
  store i32 4, ptr %814, align 4, !tbaa !44
  %815 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %816 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %815, i32 noundef 99, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 4227, i32 noundef 1)
  store i32 %816, ptr %6, align 4
  store i32 1, ptr %21, align 4
  br label %852

817:                                              ; preds = %803
  br label %818

818:                                              ; preds = %817, %788
  br label %850

819:                                              ; preds = %782
  %820 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 7
  %821 = load ptr, ptr %820, align 8, !tbaa !33
  %822 = load i32, ptr %25, align 4, !tbaa !9
  %823 = load i32, ptr %22, align 4, !tbaa !9
  %824 = load i32, ptr %25, align 4, !tbaa !9
  %825 = mul nsw i32 %823, %824
  %826 = add nsw i32 %822, %825
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds double, ptr %821, i64 %827
  store double 0.000000e+00, ptr %828, align 8, !tbaa !37
  %829 = load i32, ptr %18, align 4, !tbaa !11
  %830 = icmp ne i32 %829, 0
  br i1 %830, label %831, label %840

831:                                              ; preds = %819
  %832 = load i32, ptr %17, align 4, !tbaa !9
  %833 = load i32, ptr %19, align 4, !tbaa !57
  %834 = load ptr, ptr %40, align 8, !tbaa !15
  %835 = getelementptr inbounds ptr, ptr %834, i64 28
  %836 = load ptr, ptr %835, align 8
  %837 = call noundef i32 %836(ptr noundef nonnull align 8 dereferenceable(1064) %40, i32 noundef %832, i32 noundef %833, i32 noundef 1, i32 noundef 0)
  %838 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 25
  %839 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %838, i32 0, i32 4
  store i32 1, ptr %839, align 8, !tbaa !54
  br label %849

840:                                              ; preds = %819
  %841 = load i32, ptr %17, align 4, !tbaa !9
  %842 = load i32, ptr %19, align 4, !tbaa !57
  %843 = load ptr, ptr %40, align 8, !tbaa !15
  %844 = getelementptr inbounds ptr, ptr %843, i64 25
  %845 = load ptr, ptr %844, align 8
  %846 = call noundef i32 %845(ptr noundef nonnull align 8 dereferenceable(1064) %40, i32 noundef %841, i32 noundef %842, i32 noundef 1, i32 noundef 0)
  %847 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %40, i32 0, i32 25
  %848 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %847, i32 0, i32 6
  store i32 1, ptr %848, align 8, !tbaa !58
  br label %849

849:                                              ; preds = %840, %831
  br label %850

850:                                              ; preds = %849, %818
  br label %851

851:                                              ; preds = %850, %781
  store i32 0, ptr %21, align 4
  br label %852

852:                                              ; preds = %851, %813, %777, %693
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  %853 = load i32, ptr %21, align 4
  switch i32 %853, label %856 [
    i32 0, label %854
  ]

854:                                              ; preds = %852
  br label %855

855:                                              ; preds = %854, %376, %372, %369
  store i32 0, ptr %6, align 4
  store i32 1, ptr %21, align 4
  br label %856

856:                                              ; preds = %855, %852
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  br label %857

857:                                              ; preds = %856, %115, %82
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %858

858:                                              ; preds = %857, %60, %45
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  %859 = load i32, ptr %6, align 4
  ret i32 %859
}

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

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

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


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

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

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800), double noundef, double noundef, double noundef, double noundef, double noundef, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

declare noundef i32 @_ZN7qpOASES7Flipper3setEPKNS_6BoundsEPKdPKNS_11ConstraintsES5_S5_(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

declare noundef i32 @_ZNK7qpOASES7Flipper3getEPNS_6BoundsEPdPNS_11ConstraintsES3_S3_(ptr noundef nonnull align 8 dereferenceable(272), ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES8QProblem11removeBoundEiNS_11BooleanTypeES1_S1_(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) unnamed_addr #7 align 2 {
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #10
  store i32 0, ptr %9, align 4, !tbaa !5
  %14 = getelementptr inbounds i8, ptr %0, i64 48
  %15 = tail call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %14, i32 noundef %1)
  %16 = icmp eq i32 %15, 0
  br i1 %16, label %17, label %20

17:                                               ; preds = %5
  %18 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %19 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %18, i32 noundef 98, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4034, i32 noundef 1)
  br label %463

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

23:                                               ; preds = %20
  %24 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %25 = icmp eq i32 %24, 2
  br i1 %25, label %32, label %26

26:                                               ; preds = %23
  %27 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %28 = icmp eq i32 %27, 4
  br i1 %28, label %32, label %29

29:                                               ; preds = %26
  %30 = tail call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %31 = icmp eq i32 %30, 5
  br i1 %31, label %32, label %35

32:                                               ; preds = %29, %26, %23, %20
  %33 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %34 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %33, i32 noundef 9, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4041, i32 noundef 1)
  br label %463

35:                                               ; preds = %29
  %36 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %37 = tail call noundef i32 @_ZNK7qpOASES9QProblemB6getNFREv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %38 = tail call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %39 = load ptr, ptr %0, align 8, !tbaa !9
  %40 = getelementptr inbounds i8, ptr %39, i64 56
  %41 = load ptr, ptr %40, align 8
  %42 = tail call noundef i32 %41(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %43 = getelementptr inbounds i8, ptr %0, i64 968
  %44 = load i32, ptr %43, align 8, !tbaa !11
  %45 = sub nsw i32 %44, %38
  %46 = icmp eq i32 %4, 1
  br i1 %46, label %47, label %49

47:                                               ; preds = %35
  %48 = call noundef i32 @_ZN7qpOASES8QProblem22ensureNonzeroCurvatureENS_11BooleanTypeEiRS1_S2_RiRNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef 1, i32 noundef %1, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %.not = icmp eq i32 %48, 0
  br i1 %.not, label %._crit_edge325, label %463

._crit_edge325:                                   ; preds = %47
  %.pre = load i32, ptr %9, align 4
  br label %49

49:                                               ; preds = %._crit_edge325, %35
  %50 = phi i32 [ %.pre, %._crit_edge325 ], [ 0, %35 ]
  %51 = getelementptr inbounds i8, ptr %0, i64 284
  %52 = load i32, ptr %51, align 4, !tbaa !28
  %53 = icmp eq i32 %52, 1
  %54 = icmp eq i32 %3, 1
  %or.cond = and i1 %54, %53
  %55 = icmp eq i32 %50, 0
  %or.cond5 = select i1 %or.cond, i1 %55, i1 false
  br i1 %or.cond5, label %56, label %66

56:                                               ; preds = %49
  %57 = getelementptr inbounds i8, ptr %0, i64 496
  %58 = getelementptr inbounds i8, ptr %0, i64 168
  %59 = load ptr, ptr %58, align 8, !tbaa !29
  %60 = getelementptr inbounds i8, ptr %0, i64 832
  %61 = getelementptr inbounds i8, ptr %0, i64 960
  %62 = load ptr, ptr %61, align 8, !tbaa !30
  %63 = getelementptr inbounds i8, ptr %0, i64 952
  %64 = load ptr, ptr %63, align 8, !tbaa !31
  %65 = call noundef i32 @_ZN7qpOASES7Flipper3setEPKNS_6BoundsEPKdPKNS_11ConstraintsES5_S5_(ptr noundef nonnull align 8 dereferenceable(272) %57, ptr noundef nonnull %14, ptr noundef %59, ptr noundef nonnull %60, ptr noundef %62, ptr noundef %64)
  br label %66

66:                                               ; preds = %56, %49
  %67 = getelementptr inbounds i8, ptr %0, i64 768
  %68 = getelementptr inbounds i8, ptr %0, i64 772
  store i32 %1, ptr %68, align 4, !tbaa !32
  %69 = call noundef i32 @_ZN7qpOASES6Bounds15moveFixedToFreeEi(ptr noundef nonnull align 8 dereferenceable(120) %14, i32 noundef %1)
  %.not232 = icmp eq i32 %69, 0
  br i1 %.not232, label %73, label %70

70:                                               ; preds = %66
  %71 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %72 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %71, i32 noundef 81, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4068, i32 noundef 1)
  br label %463

73:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  %74 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %14)
  %75 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %74, ptr noundef nonnull %10)
  %76 = load ptr, ptr %10, align 8, !tbaa !33
  %77 = sext i32 %37 to i64
  %78 = getelementptr inbounds i32, ptr %76, i64 %77
  %79 = load i32, ptr %78, align 4, !tbaa !34
  %80 = icmp sgt i32 %37, 0
  %81 = getelementptr inbounds i8, ptr %0, i64 960
  %82 = load ptr, ptr %81, align 8, !tbaa !30
  %83 = mul nsw i32 %37, %36
  br i1 %80, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %73
  %84 = sext i32 %36 to i64
  %85 = sext i32 %79 to i64
  %wide.trip.count = zext nneg i32 %37 to i64
  %invariant.gep = getelementptr double, ptr %82, i64 %85
  %xtraiter = and i64 %wide.trip.count, 1
  %86 = icmp eq i32 %37, 1
  br i1 %86, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph
  %unroll_iter = and i64 %wide.trip.count, 2147483646
  br label %87

87:                                               ; preds = %87, %.lr.ph.new
  %indvars.iv = phi i64 [ 0, %.lr.ph.new ], [ %indvars.iv.next.1, %87 ]
  %niter = phi i64 [ 0, %.lr.ph.new ], [ %niter.next.1, %87 ]
  %88 = getelementptr inbounds i32, ptr %76, i64 %indvars.iv
  %89 = load i32, ptr %88, align 4, !tbaa !34
  %90 = add nsw i32 %89, %83
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds double, ptr %82, i64 %91
  store double 0.000000e+00, ptr %92, align 8, !tbaa !35
  %93 = mul nsw i64 %indvars.iv, %84
  %gep = getelementptr double, ptr %invariant.gep, i64 %93
  store double 0.000000e+00, ptr %gep, align 8, !tbaa !35
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %94 = getelementptr inbounds i32, ptr %76, i64 %indvars.iv.next
  %95 = load i32, ptr %94, align 4, !tbaa !34
  %96 = add nsw i32 %95, %83
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds double, ptr %82, i64 %97
  store double 0.000000e+00, ptr %98, align 8, !tbaa !35
  %99 = mul nsw i64 %indvars.iv.next, %84
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %99
  store double 0.000000e+00, ptr %gep.1, align 8, !tbaa !35
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %87, !llvm.loop !36

._crit_edge.loopexit.unr-lcssa:                   ; preds = %87, %.lr.ph
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next.1, %87 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %._crit_edge.loopexit.epilog-lcssa

._crit_edge.loopexit.epilog-lcssa:                ; preds = %._crit_edge.loopexit.unr-lcssa
  %100 = getelementptr inbounds i32, ptr %76, i64 %indvars.iv.unr
  %101 = load i32, ptr %100, align 4, !tbaa !34
  %102 = add nsw i32 %101, %83
  %103 = sext i32 %102 to i64
  %104 = getelementptr inbounds double, ptr %82, i64 %103
  store double 0.000000e+00, ptr %104, align 8, !tbaa !35
  %105 = mul nsw i64 %indvars.iv.unr, %84
  %gep.epil = getelementptr double, ptr %invariant.gep, i64 %105
  store double 0.000000e+00, ptr %gep.epil, align 8, !tbaa !35
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit.epilog-lcssa, %._crit_edge.loopexit.unr-lcssa, %73
  %106 = getelementptr inbounds i8, ptr %0, i64 960
  %107 = add nsw i32 %79, %83
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds double, ptr %82, i64 %108
  store double 1.000000e+00, ptr %109, align 8, !tbaa !35
  %110 = icmp sgt i32 %38, 0
  br i1 %110, label %111, label %186

111:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  %112 = getelementptr inbounds i8, ptr %0, i64 832
  %113 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %112)
  %114 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %113, ptr noundef nonnull %11)
  %115 = zext nneg i32 %38 to i64
  %116 = shl nuw nsw i64 %115, 3
  %117 = call noalias noundef nonnull ptr @_Znam(i64 noundef %116) #11
  %118 = getelementptr inbounds i8, ptr %0, i64 808
  %119 = load ptr, ptr %118, align 8, !tbaa !38
  %120 = call noundef ptr @_ZN7qpOASES11Constraints9getActiveEv(ptr noundef nonnull align 8 dereferenceable(120) %112)
  %121 = load ptr, ptr %119, align 8, !tbaa !9
  %122 = getelementptr inbounds i8, ptr %121, i64 80
  %123 = load ptr, ptr %122, align 8
  %124 = call noundef i32 %123(ptr noundef nonnull align 8 dereferenceable(12) %119, i32 noundef %1, ptr noundef %120, double noundef 1.000000e+00, ptr noundef nonnull %117)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  %125 = add nsw i32 %38, -1
  %126 = getelementptr inbounds i8, ptr %0, i64 952
  %.not238255 = icmp slt i32 %37, 0
  %127 = add nsw i32 %42, 1
  %128 = zext nneg i32 %38 to i64
  %129 = add i32 %37, 1
  %130 = zext nneg i32 %125 to i64
  %131 = sext i32 %127 to i64
  %132 = sext i32 %36 to i64
  %133 = sext i32 %42 to i64
  %wide.trip.count290 = zext i32 %129 to i64
  br label %134

134:                                              ; preds = %111, %._crit_edge258
  %indvars.iv292.in = phi i64 [ %128, %111 ], [ %indvars.iv292, %._crit_edge258 ]
  %indvars.iv282 = phi i32 [ 1, %111 ], [ %indvars.iv.next283, %._crit_edge258 ]
  %indvars.iv292 = add nsw i64 %indvars.iv292.in, -1
  %135 = sub nuw nsw i64 %130, %indvars.iv292
  %136 = getelementptr inbounds double, ptr %117, i64 %135
  %137 = load double, ptr %136, align 8, !tbaa !35
  %138 = load ptr, ptr %126, align 8, !tbaa !31
  %139 = load i32, ptr %43, align 8, !tbaa !11
  %140 = trunc nuw nsw i64 %135 to i32
  %141 = mul nsw i32 %139, %140
  %142 = trunc nuw nsw i64 %indvars.iv292 to i32
  %143 = add nsw i32 %45, %142
  %144 = add nsw i32 %141, %143
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %138, i64 %145
  %147 = load double, ptr %146, align 8, !tbaa !35
  call void @_ZNK7qpOASES9QProblemB13computeGivensEddRdS1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(800) %0, double noundef %137, double noundef %147, ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13)
  %148 = load double, ptr %13, align 8, !tbaa !35
  %149 = load double, ptr %12, align 8, !tbaa !35
  %150 = fadd double %149, 1.000000e+00
  %151 = fdiv double %148, %150
  %152 = icmp sgt i64 %indvars.iv292.in, 1
  br i1 %152, label %.lr.ph254.preheader, label %.preheader250

.lr.ph254.preheader:                              ; preds = %134
  %153 = sext i32 %indvars.iv282 to i64
  br label %.lr.ph254

.preheader250:                                    ; preds = %.lr.ph254, %134
  br i1 %.not238255, label %._crit_edge258, label %.lr.ph257

.lr.ph257:                                        ; preds = %.preheader250
  %154 = add nsw i64 %indvars.iv292, %131
  %155 = mul nsw i64 %154, %132
  %156 = add nsw i64 %indvars.iv292, %133
  %157 = mul nsw i64 %156, %132
  br label %171

.lr.ph254:                                        ; preds = %.lr.ph254.preheader, %.lr.ph254
  %indvars.iv284 = phi i64 [ %153, %.lr.ph254.preheader ], [ %indvars.iv.next285, %.lr.ph254 ]
  %158 = load double, ptr %12, align 8, !tbaa !35
  %159 = load double, ptr %13, align 8, !tbaa !35
  %160 = getelementptr inbounds double, ptr %117, i64 %indvars.iv284
  %161 = load double, ptr %160, align 8, !tbaa !35
  %162 = load ptr, ptr %126, align 8, !tbaa !31
  %163 = load i32, ptr %43, align 8, !tbaa !11
  %164 = trunc nsw i64 %indvars.iv284 to i32
  %165 = mul nsw i32 %163, %164
  %166 = add nsw i32 %165, %143
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds double, ptr %162, i64 %167
  %169 = load double, ptr %168, align 8, !tbaa !35
  call void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800) %0, double noundef %158, double noundef %159, double noundef %151, double noundef %161, double noundef %169, ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull align 8 dereferenceable(8) %160)
  %indvars.iv.next285 = add nsw i64 %indvars.iv284, 1
  %170 = icmp slt i64 %indvars.iv.next285, %128
  br i1 %170, label %.lr.ph254, label %.preheader250, !llvm.loop !39

171:                                              ; preds = %.lr.ph257, %171
  %indvars.iv287 = phi i64 [ 0, %.lr.ph257 ], [ %indvars.iv.next288, %171 ]
  %172 = load ptr, ptr %10, align 8, !tbaa !33
  %173 = getelementptr inbounds i32, ptr %172, i64 %indvars.iv287
  %174 = load i32, ptr %173, align 4, !tbaa !34
  %175 = load double, ptr %12, align 8, !tbaa !35
  %176 = load double, ptr %13, align 8, !tbaa !35
  %177 = load ptr, ptr %106, align 8, !tbaa !30
  %178 = sext i32 %174 to i64
  %179 = getelementptr double, ptr %177, i64 %155
  %180 = getelementptr double, ptr %179, i64 %178
  %181 = load double, ptr %180, align 8, !tbaa !35
  %182 = getelementptr double, ptr %177, i64 %157
  %183 = getelementptr double, ptr %182, i64 %178
  %184 = load double, ptr %183, align 8, !tbaa !35
  call void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800) %0, double noundef %175, double noundef %176, double noundef %151, double noundef %181, double noundef %184, ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull align 8 dereferenceable(8) %183)
  %indvars.iv.next288 = add nuw nsw i64 %indvars.iv287, 1
  %exitcond291.not = icmp eq i64 %indvars.iv.next288, %wide.trip.count290
  br i1 %exitcond291.not, label %._crit_edge258, label %171, !llvm.loop !40

._crit_edge258:                                   ; preds = %171, %.preheader250
  %indvars.iv.next283 = add nuw i32 %indvars.iv282, 1
  %exitcond295.not = icmp eq i32 %indvars.iv282, %38
  br i1 %exitcond295.not, label %185, label %134, !llvm.loop !41

185:                                              ; preds = %._crit_edge258
  call void @_ZdaPv(ptr noundef nonnull %117) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  br label %186

186:                                              ; preds = %185, %._crit_edge
  %187 = icmp eq i32 %2, 1
  br i1 %187, label %188, label %.thread241

188:                                              ; preds = %186
  %189 = getelementptr inbounds i8, ptr %0, i64 220
  %190 = load i32, ptr %189, align 4, !tbaa !42
  %switch = icmp ult i32 %190, 2
  br i1 %switch, label %.thread241, label %191

191:                                              ; preds = %188
  %192 = load ptr, ptr %106, align 8, !tbaa !30
  %193 = mul nsw i32 %42, %36
  %194 = add nsw i32 %79, %193
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds double, ptr %192, i64 %195
  %197 = load double, ptr %196, align 8, !tbaa !35
  %198 = getelementptr inbounds i8, ptr %0, i64 16
  %199 = load ptr, ptr %198, align 8, !tbaa !43
  %200 = load ptr, ptr %199, align 8, !tbaa !9
  %201 = getelementptr i8, ptr %200, i64 -24
  %202 = load i64, ptr %201, align 8
  %203 = getelementptr inbounds i8, ptr %199, i64 %202
  %204 = load ptr, ptr %203, align 8, !tbaa !9
  %205 = getelementptr inbounds i8, ptr %204, i64 32
  %206 = load ptr, ptr %205, align 8
  %207 = call noundef double %206(ptr noundef nonnull align 8 dereferenceable(12) %203, i32 noundef %79)
  %208 = fmul double %197, %207
  %209 = fmul double %197, %208
  br i1 %80, label %210, label %370

210:                                              ; preds = %191
  %211 = add nuw nsw i32 %37, 1
  %212 = zext nneg i32 %211 to i64
  %213 = shl nuw nsw i64 %212, 3
  %214 = call noalias noundef nonnull ptr @_Znam(i64 noundef %213) #11
  %215 = call noalias noundef nonnull ptr @_Znam(i64 noundef %213) #11
  %216 = load ptr, ptr %106, align 8, !tbaa !30
  %217 = load ptr, ptr %10, align 8, !tbaa !33
  %wide.trip.count299 = zext nneg i32 %37 to i64
  %xtraiter342 = and i64 %wide.trip.count299, 1
  %218 = icmp eq i32 %37, 1
  br i1 %218, label %.unr-lcssa, label %.new

.new:                                             ; preds = %210
  %unroll_iter344 = and i64 %wide.trip.count299, 2147483646
  br label %219

219:                                              ; preds = %219, %.new
  %indvars.iv296 = phi i64 [ 0, %.new ], [ %indvars.iv.next297.1, %219 ]
  %niter345 = phi i64 [ 0, %.new ], [ %niter345.next.1, %219 ]
  %220 = getelementptr inbounds i32, ptr %217, i64 %indvars.iv296
  %221 = load i32, ptr %220, align 4, !tbaa !34
  %222 = add nsw i32 %221, %193
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds double, ptr %216, i64 %223
  %225 = load double, ptr %224, align 8, !tbaa !35
  %226 = getelementptr inbounds double, ptr %215, i64 %indvars.iv296
  store double %225, ptr %226, align 8, !tbaa !35
  %indvars.iv.next297 = or disjoint i64 %indvars.iv296, 1
  %227 = getelementptr inbounds i32, ptr %217, i64 %indvars.iv.next297
  %228 = load i32, ptr %227, align 4, !tbaa !34
  %229 = add nsw i32 %228, %193
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds double, ptr %216, i64 %230
  %232 = load double, ptr %231, align 8, !tbaa !35
  %233 = getelementptr inbounds double, ptr %215, i64 %indvars.iv.next297
  store double %232, ptr %233, align 8, !tbaa !35
  %indvars.iv.next297.1 = add nuw nsw i64 %indvars.iv296, 2
  %niter345.next.1 = add i64 %niter345, 2
  %niter345.ncmp.1 = icmp eq i64 %niter345.next.1, %unroll_iter344
  br i1 %niter345.ncmp.1, label %.unr-lcssa, label %219, !llvm.loop !44

.unr-lcssa:                                       ; preds = %219, %210
  %indvars.iv296.unr = phi i64 [ 0, %210 ], [ %indvars.iv.next297.1, %219 ]
  %lcmp.mod343.not = icmp eq i64 %xtraiter342, 0
  br i1 %lcmp.mod343.not, label %241, label %.epilog-lcssa

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %234 = getelementptr inbounds i32, ptr %217, i64 %indvars.iv296.unr
  %235 = load i32, ptr %234, align 4, !tbaa !34
  %236 = add nsw i32 %235, %193
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %216, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !35
  %240 = getelementptr inbounds double, ptr %215, i64 %indvars.iv296.unr
  store double %239, ptr %240, align 8, !tbaa !35
  br label %241

241:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %242 = getelementptr inbounds double, ptr %215, i64 %77
  store double 0.000000e+00, ptr %242, align 8, !tbaa !35
  %243 = load ptr, ptr %198, align 8, !tbaa !43
  %244 = load ptr, ptr %243, align 8, !tbaa !9
  %245 = getelementptr i8, ptr %244, i64 -24
  %246 = load i64, ptr %245, align 8
  %247 = getelementptr inbounds i8, ptr %243, i64 %246
  %248 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %14)
  %249 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %14)
  %250 = load ptr, ptr %247, align 8, !tbaa !9
  %251 = getelementptr inbounds i8, ptr %250, i64 136
  %252 = load ptr, ptr %251, align 8
  %253 = call noundef i32 %252(ptr noundef nonnull align 8 dereferenceable(12) %247, ptr noundef %248, ptr noundef %249, i32 noundef 1, double noundef 1.000000e+00, ptr noundef nonnull %215, i32 noundef %211, double noundef 0.000000e+00, ptr noundef nonnull %214, i32 noundef %211, i32 noundef 1)
  %254 = load ptr, ptr %198, align 8, !tbaa !43
  %255 = load ptr, ptr %254, align 8, !tbaa !9
  %256 = getelementptr i8, ptr %255, i64 -24
  %257 = load i64, ptr %256, align 8
  %258 = getelementptr inbounds i8, ptr %254, i64 %257
  %259 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %14)
  %260 = load ptr, ptr %258, align 8, !tbaa !9
  %261 = getelementptr inbounds i8, ptr %260, i64 80
  %262 = load ptr, ptr %261, align 8
  %263 = call noundef i32 %262(ptr noundef nonnull align 8 dereferenceable(12) %258, i32 noundef %79, ptr noundef %259, double noundef 1.000000e+00, ptr noundef nonnull %215)
  %264 = icmp sgt i32 %42, 0
  br i1 %264, label %.lr.ph264.us.preheader, label %.lr.ph276

.lr.ph264.us.preheader:                           ; preds = %241
  %265 = zext nneg i32 %42 to i64
  %266 = shl nuw nsw i64 %265, 3
  %267 = call noalias noundef nonnull ptr @_Znam(i64 noundef %266) #11
  %268 = call noalias noundef nonnull ptr @_Znam(i64 noundef %266) #11
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %268, i8 0, i64 %266, i1 false), !tbaa !35
  %269 = load ptr, ptr %10, align 8, !tbaa !33
  %270 = load ptr, ptr %106, align 8
  %271 = sext i32 %36 to i64
  %272 = shl nuw nsw i64 %265, 3
  %scevgep = getelementptr i8, ptr %268, i64 %272
  %scevgep334 = getelementptr i8, ptr %270, i64 %272
  %min.iters.check = icmp ugt i32 %42, 3
  %ident.check.not = icmp eq i32 %36, 1
  %or.cond339 = and i1 %min.iters.check, %ident.check.not
  %n.vec = and i64 %265, 2147483644
  %cmp.n = icmp eq i64 %n.vec, %265
  %xtraiter346 = and i64 %265, 1
  %lcmp.mod347.not = icmp eq i64 %xtraiter346, 0
  %273 = add nsw i64 %265, -1
  br label %.lr.ph264.us

.lr.ph264.us:                                     ; preds = %.lr.ph264.us.preheader, %._crit_edge265.us
  %indvars.iv309 = phi i64 [ 0, %.lr.ph264.us.preheader ], [ %indvars.iv.next310, %._crit_edge265.us ]
  %274 = getelementptr inbounds i32, ptr %269, i64 %indvars.iv309
  %275 = load i32, ptr %274, align 4, !tbaa !34
  %276 = getelementptr inbounds double, ptr %214, i64 %indvars.iv309
  %277 = load double, ptr %276, align 8, !tbaa !35
  %278 = getelementptr inbounds double, ptr %215, i64 %indvars.iv309
  %279 = load double, ptr %278, align 8, !tbaa !35
  %280 = call double @llvm.fmuladd.f64(double %197, double %279, double %277)
  %281 = sext i32 %275 to i64
  %invariant.gep329 = getelementptr double, ptr %270, i64 %281
  br i1 %or.cond339, label %vector.memcheck, label %scalar.ph.preheader

vector.memcheck:                                  ; preds = %.lr.ph264.us
  %282 = shl nsw i64 %281, 3
  %scevgep335 = getelementptr i8, ptr %scevgep334, i64 %282
  %bound0 = icmp ult ptr %268, %scevgep335
  %bound1 = icmp ult ptr %invariant.gep329, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %broadcast.splatinsert = insertelement <2 x double> poison, double %280, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %283 = getelementptr double, ptr %invariant.gep329, i64 %index
  %284 = getelementptr i8, ptr %283, i64 16
  %wide.load = load <2 x double>, ptr %283, align 8, !tbaa !35, !alias.scope !45
  %wide.load336 = load <2 x double>, ptr %284, align 8, !tbaa !35, !alias.scope !45
  %285 = getelementptr inbounds double, ptr %268, i64 %index
  %286 = getelementptr inbounds i8, ptr %285, i64 16
  %wide.load337 = load <2 x double>, ptr %285, align 8, !tbaa !35, !alias.scope !48, !noalias !45
  %wide.load338 = load <2 x double>, ptr %286, align 8, !tbaa !35, !alias.scope !48, !noalias !45
  %287 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load, <2 x double> %broadcast.splat, <2 x double> %wide.load337)
  %288 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load336, <2 x double> %broadcast.splat, <2 x double> %wide.load338)
  store <2 x double> %287, ptr %285, align 8, !tbaa !35, !alias.scope !48, !noalias !45
  store <2 x double> %288, ptr %286, align 8, !tbaa !35, !alias.scope !48, !noalias !45
  %index.next = add nuw i64 %index, 4
  %289 = icmp eq i64 %index.next, %n.vec
  br i1 %289, label %middle.block, label %vector.body, !llvm.loop !50

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

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

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %290 = mul nsw i64 %indvars.iv304.ph, %271
  %gep330.prol = getelementptr double, ptr %invariant.gep329, i64 %290
  %291 = load double, ptr %gep330.prol, align 8, !tbaa !35
  %292 = getelementptr inbounds double, ptr %268, i64 %indvars.iv304.ph
  %293 = load double, ptr %292, align 8, !tbaa !35
  %294 = call double @llvm.fmuladd.f64(double %291, double %280, double %293)
  store double %294, ptr %292, align 8, !tbaa !35
  %indvars.iv.next305.prol = or disjoint i64 %indvars.iv304.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv304.unr = phi i64 [ %indvars.iv304.ph, %scalar.ph.preheader ], [ %indvars.iv.next305.prol, %scalar.ph.prol ]
  %295 = icmp eq i64 %indvars.iv304.ph, %273
  br i1 %295, label %._crit_edge265.us, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv304 = phi i64 [ %indvars.iv.next305.1, %scalar.ph ], [ %indvars.iv304.unr, %scalar.ph.prol.loopexit ]
  %296 = mul nsw i64 %indvars.iv304, %271
  %gep330 = getelementptr double, ptr %invariant.gep329, i64 %296
  %297 = load double, ptr %gep330, align 8, !tbaa !35
  %298 = getelementptr inbounds double, ptr %268, i64 %indvars.iv304
  %299 = load double, ptr %298, align 8, !tbaa !35
  %300 = call double @llvm.fmuladd.f64(double %297, double %280, double %299)
  store double %300, ptr %298, align 8, !tbaa !35
  %indvars.iv.next305 = add nuw nsw i64 %indvars.iv304, 1
  %301 = mul nsw i64 %indvars.iv.next305, %271
  %gep330.1 = getelementptr double, ptr %invariant.gep329, i64 %301
  %302 = load double, ptr %gep330.1, align 8, !tbaa !35
  %303 = getelementptr inbounds double, ptr %268, i64 %indvars.iv.next305
  %304 = load double, ptr %303, align 8, !tbaa !35
  %305 = call double @llvm.fmuladd.f64(double %302, double %280, double %304)
  store double %305, ptr %303, align 8, !tbaa !35
  %indvars.iv.next305.1 = add nuw nsw i64 %indvars.iv304, 2
  %exitcond308.not.1 = icmp eq i64 %indvars.iv.next305.1, %265
  br i1 %exitcond308.not.1, label %._crit_edge265.us, label %scalar.ph, !llvm.loop !53

._crit_edge265.us:                                ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next310 = add nuw nsw i64 %indvars.iv309, 1
  %exitcond313.not = icmp eq i64 %indvars.iv.next310, %wide.trip.count299
  br i1 %exitcond313.not, label %._crit_edge268, label %.lr.ph264.us, !llvm.loop !54

._crit_edge268:                                   ; preds = %._crit_edge265.us
  %306 = load ptr, ptr %0, align 8, !tbaa !9
  %307 = getelementptr inbounds i8, ptr %306, i64 120
  %308 = load ptr, ptr %307, align 8
  %309 = call noundef i32 %308(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef nonnull %268, i32 noundef 1, i32 noundef 1, ptr noundef nonnull %267)
  %.not235 = icmp eq i32 %309, 0
  br i1 %.not235, label %.lr.ph271, label %.thread

.lr.ph271:                                        ; preds = %._crit_edge268
  %310 = getelementptr inbounds i8, ptr %0, i64 168
  %311 = load ptr, ptr %310, align 8, !tbaa !29
  %312 = sext i32 %193 to i64
  %smax = call i32 @llvm.smax.i32(i32 %42, i32 1)
  %wide.trip.count317 = zext nneg i32 %smax to i64
  %invariant.gep331 = getelementptr double, ptr %311, i64 %312
  %xtraiter349 = and i64 %wide.trip.count317, 1
  %313 = icmp eq i32 %42, 1
  br i1 %313, label %._crit_edge272.unr-lcssa, label %.lr.ph271.new

.lr.ph271.new:                                    ; preds = %.lr.ph271
  %unroll_iter352 = and i64 %wide.trip.count317, 2147483646
  br label %316

.thread:                                          ; preds = %._crit_edge268
  call void @_ZdaPv(ptr noundef nonnull %215) #12
  call void @_ZdaPv(ptr noundef nonnull %214) #12
  call void @_ZdaPv(ptr noundef nonnull %267) #12
  call void @_ZdaPv(ptr noundef nonnull %268) #12
  %314 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %315 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %314, i32 noundef 81, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4162, i32 noundef 1)
  br label %.thread241

316:                                              ; preds = %316, %.lr.ph271.new
  %indvars.iv314 = phi i64 [ 0, %.lr.ph271.new ], [ %indvars.iv.next315.1, %316 ]
  %.0217269 = phi double [ %209, %.lr.ph271.new ], [ %324, %316 ]
  %niter353 = phi i64 [ 0, %.lr.ph271.new ], [ %niter353.next.1, %316 ]
  %317 = getelementptr inbounds double, ptr %267, i64 %indvars.iv314
  %318 = load double, ptr %317, align 8, !tbaa !35
  %319 = fneg double %318
  %320 = call double @llvm.fmuladd.f64(double %319, double %318, double %.0217269)
  %gep332 = getelementptr double, ptr %invariant.gep331, i64 %indvars.iv314
  store double %318, ptr %gep332, align 8, !tbaa !35
  %indvars.iv.next315 = or disjoint i64 %indvars.iv314, 1
  %321 = getelementptr inbounds double, ptr %267, i64 %indvars.iv.next315
  %322 = load double, ptr %321, align 8, !tbaa !35
  %323 = fneg double %322
  %324 = call double @llvm.fmuladd.f64(double %323, double %322, double %320)
  %gep332.1 = getelementptr double, ptr %invariant.gep331, i64 %indvars.iv.next315
  store double %322, ptr %gep332.1, align 8, !tbaa !35
  %indvars.iv.next315.1 = add nuw nsw i64 %indvars.iv314, 2
  %niter353.next.1 = add i64 %niter353, 2
  %niter353.ncmp.1 = icmp eq i64 %niter353.next.1, %unroll_iter352
  br i1 %niter353.ncmp.1, label %._crit_edge272.unr-lcssa, label %316, !llvm.loop !55

._crit_edge272.unr-lcssa:                         ; preds = %316, %.lr.ph271
  %.lcssa340.ph = phi double [ poison, %.lr.ph271 ], [ %324, %316 ]
  %indvars.iv314.unr = phi i64 [ 0, %.lr.ph271 ], [ %indvars.iv.next315.1, %316 ]
  %.0217269.unr = phi double [ %209, %.lr.ph271 ], [ %324, %316 ]
  %lcmp.mod350.not = icmp eq i64 %xtraiter349, 0
  br i1 %lcmp.mod350.not, label %._crit_edge272, label %._crit_edge272.epilog-lcssa

._crit_edge272.epilog-lcssa:                      ; preds = %._crit_edge272.unr-lcssa
  %325 = getelementptr inbounds double, ptr %267, i64 %indvars.iv314.unr
  %326 = load double, ptr %325, align 8, !tbaa !35
  %327 = fneg double %326
  %328 = call double @llvm.fmuladd.f64(double %327, double %326, double %.0217269.unr)
  %gep332.epil = getelementptr double, ptr %invariant.gep331, i64 %indvars.iv314.unr
  store double %326, ptr %gep332.epil, align 8, !tbaa !35
  br label %._crit_edge272

._crit_edge272:                                   ; preds = %._crit_edge272.unr-lcssa, %._crit_edge272.epilog-lcssa
  %.lcssa340 = phi double [ %.lcssa340.ph, %._crit_edge272.unr-lcssa ], [ %328, %._crit_edge272.epilog-lcssa ]
  call void @_ZdaPv(ptr noundef nonnull %268) #12
  call void @_ZdaPv(ptr noundef nonnull %267) #12
  br label %.lr.ph276

.lr.ph276:                                        ; preds = %241, %._crit_edge272
  %.2219 = phi double [ %.lcssa340, %._crit_edge272 ], [ %209, %241 ]
  %329 = load ptr, ptr %10, align 8, !tbaa !33
  %330 = load ptr, ptr %106, align 8, !tbaa !30
  %331 = fmul double %197, 2.000000e+00
  %smax322 = call i32 @llvm.smax.i32(i32 %37, i32 1)
  %wide.trip.count323 = zext nneg i32 %smax322 to i64
  %xtraiter355 = and i64 %wide.trip.count323, 1
  %332 = icmp eq i32 %37, 1
  br i1 %332, label %._crit_edge277.unr-lcssa, label %.lr.ph276.new

.lr.ph276.new:                                    ; preds = %.lr.ph276
  %unroll_iter358 = and i64 %wide.trip.count323, 2147483646
  br label %333

333:                                              ; preds = %333, %.lr.ph276.new
  %indvars.iv319 = phi i64 [ 0, %.lr.ph276.new ], [ %indvars.iv.next320.1, %333 ]
  %.3220273 = phi double [ %.2219, %.lr.ph276.new ], [ %357, %333 ]
  %niter359 = phi i64 [ 0, %.lr.ph276.new ], [ %niter359.next.1, %333 ]
  %334 = getelementptr inbounds i32, ptr %329, i64 %indvars.iv319
  %335 = load i32, ptr %334, align 4, !tbaa !34
  %336 = add nsw i32 %335, %193
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds double, ptr %330, i64 %337
  %339 = load double, ptr %338, align 8, !tbaa !35
  %340 = getelementptr inbounds double, ptr %214, i64 %indvars.iv319
  %341 = load double, ptr %340, align 8, !tbaa !35
  %342 = getelementptr inbounds double, ptr %215, i64 %indvars.iv319
  %343 = load double, ptr %342, align 8, !tbaa !35
  %344 = call double @llvm.fmuladd.f64(double %331, double %343, double %341)
  %345 = call double @llvm.fmuladd.f64(double %339, double %344, double %.3220273)
  %indvars.iv.next320 = or disjoint i64 %indvars.iv319, 1
  %346 = getelementptr inbounds i32, ptr %329, i64 %indvars.iv.next320
  %347 = load i32, ptr %346, align 4, !tbaa !34
  %348 = add nsw i32 %347, %193
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds double, ptr %330, i64 %349
  %351 = load double, ptr %350, align 8, !tbaa !35
  %352 = getelementptr inbounds double, ptr %214, i64 %indvars.iv.next320
  %353 = load double, ptr %352, align 8, !tbaa !35
  %354 = getelementptr inbounds double, ptr %215, i64 %indvars.iv.next320
  %355 = load double, ptr %354, align 8, !tbaa !35
  %356 = call double @llvm.fmuladd.f64(double %331, double %355, double %353)
  %357 = call double @llvm.fmuladd.f64(double %351, double %356, double %345)
  %indvars.iv.next320.1 = add nuw nsw i64 %indvars.iv319, 2
  %niter359.next.1 = add i64 %niter359, 2
  %niter359.ncmp.1 = icmp eq i64 %niter359.next.1, %unroll_iter358
  br i1 %niter359.ncmp.1, label %._crit_edge277.unr-lcssa, label %333, !llvm.loop !56

._crit_edge277.unr-lcssa:                         ; preds = %333, %.lr.ph276
  %.lcssa.ph = phi double [ poison, %.lr.ph276 ], [ %357, %333 ]
  %indvars.iv319.unr = phi i64 [ 0, %.lr.ph276 ], [ %indvars.iv.next320.1, %333 ]
  %.3220273.unr = phi double [ %.2219, %.lr.ph276 ], [ %357, %333 ]
  %lcmp.mod356.not = icmp eq i64 %xtraiter355, 0
  br i1 %lcmp.mod356.not, label %._crit_edge277, label %._crit_edge277.epilog-lcssa

._crit_edge277.epilog-lcssa:                      ; preds = %._crit_edge277.unr-lcssa
  %358 = getelementptr inbounds i32, ptr %329, i64 %indvars.iv319.unr
  %359 = load i32, ptr %358, align 4, !tbaa !34
  %360 = add nsw i32 %359, %193
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %330, i64 %361
  %363 = load double, ptr %362, align 8, !tbaa !35
  %364 = getelementptr inbounds double, ptr %214, i64 %indvars.iv319.unr
  %365 = load double, ptr %364, align 8, !tbaa !35
  %366 = getelementptr inbounds double, ptr %215, i64 %indvars.iv319.unr
  %367 = load double, ptr %366, align 8, !tbaa !35
  %368 = call double @llvm.fmuladd.f64(double %331, double %367, double %365)
  %369 = call double @llvm.fmuladd.f64(double %363, double %368, double %.3220273.unr)
  br label %._crit_edge277

._crit_edge277:                                   ; preds = %._crit_edge277.unr-lcssa, %._crit_edge277.epilog-lcssa
  %.lcssa = phi double [ %.lcssa.ph, %._crit_edge277.unr-lcssa ], [ %369, %._crit_edge277.epilog-lcssa ]
  call void @_ZdaPv(ptr noundef nonnull %215) #12
  call void @_ZdaPv(ptr noundef nonnull %214) #12
  br label %370

370:                                              ; preds = %._crit_edge277, %191
  %.5222 = phi double [ %.lcssa, %._crit_edge277 ], [ %209, %191 ]
  %371 = load i32, ptr %51, align 4, !tbaa !28
  %372 = icmp eq i32 %371, 1
  %or.cond7 = and i1 %54, %372
  %373 = load i32, ptr %9, align 4
  %374 = icmp eq i32 %373, 0
  %or.cond9 = select i1 %or.cond7, i1 %374, i1 false
  br i1 %or.cond9, label %375, label %422

375:                                              ; preds = %370
  %376 = getelementptr inbounds i8, ptr %0, i64 408
  %377 = load double, ptr %376, align 8, !tbaa !57
  %378 = fcmp ogt double %.5222, %377
  br i1 %378, label %379, label %386

379:                                              ; preds = %375
  %380 = call noundef double @_ZN7qpOASES7getSqrtEd(double noundef %.5222)
  %381 = getelementptr inbounds i8, ptr %0, i64 168
  %382 = load ptr, ptr %381, align 8, !tbaa !29
  %383 = add nsw i32 %193, %42
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds double, ptr %382, i64 %384
  store double %380, ptr %385, align 8, !tbaa !35
  br label %.thread241

386:                                              ; preds = %375
  %387 = load i32, ptr %189, align 4, !tbaa !42
  %.not237 = icmp eq i32 %387, 0
  br i1 %.not237, label %389, label %388

388:                                              ; preds = %386
  store i32 4, ptr %189, align 4, !tbaa !42
  br label %389

389:                                              ; preds = %388, %386
  %390 = getelementptr inbounds i8, ptr %0, i64 496
  %391 = getelementptr inbounds i8, ptr %0, i64 168
  %392 = load ptr, ptr %391, align 8, !tbaa !29
  %393 = getelementptr inbounds i8, ptr %0, i64 832
  %394 = load ptr, ptr %106, align 8, !tbaa !30
  %395 = getelementptr inbounds i8, ptr %0, i64 952
  %396 = load ptr, ptr %395, align 8, !tbaa !31
  %397 = call noundef i32 @_ZNK7qpOASES7Flipper3getEPNS_6BoundsEPdPNS_11ConstraintsES3_S3_(ptr noundef nonnull align 8 dereferenceable(272) %390, ptr noundef nonnull %14, ptr noundef %392, ptr noundef nonnull %393, ptr noundef %394, ptr noundef %396)
  %398 = call noundef i32 @_ZN7qpOASES6Bounds9flipFixedEi(ptr noundef nonnull align 8 dereferenceable(120) %14, i32 noundef %1)
  store i32 %1, ptr %67, align 8, !tbaa !58
  %399 = getelementptr inbounds i8, ptr %0, i64 784
  store i32 2, ptr %399, align 8, !tbaa !59
  %400 = call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %14, i32 noundef %1)
  switch i32 %400, label %419 [
    i32 -1, label %401
    i32 1, label %410
  ]

401:                                              ; preds = %389
  %402 = getelementptr inbounds i8, ptr %0, i64 40
  %403 = load ptr, ptr %402, align 8, !tbaa !60
  %404 = sext i32 %1 to i64
  %405 = getelementptr inbounds double, ptr %403, i64 %404
  %406 = load double, ptr %405, align 8, !tbaa !35
  %407 = getelementptr inbounds i8, ptr %0, i64 32
  %408 = load ptr, ptr %407, align 8, !tbaa !61
  %409 = getelementptr inbounds double, ptr %408, i64 %404
  store double %406, ptr %409, align 8, !tbaa !35
  br label %.thread241

410:                                              ; preds = %389
  %411 = getelementptr inbounds i8, ptr %0, i64 32
  %412 = load ptr, ptr %411, align 8, !tbaa !61
  %413 = sext i32 %1 to i64
  %414 = getelementptr inbounds double, ptr %412, i64 %413
  %415 = load double, ptr %414, align 8, !tbaa !35
  %416 = getelementptr inbounds i8, ptr %0, i64 40
  %417 = load ptr, ptr %416, align 8, !tbaa !60
  %418 = getelementptr inbounds double, ptr %417, i64 %413
  store double %415, ptr %418, align 8, !tbaa !35
  br label %.thread241

419:                                              ; preds = %389
  %420 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %421 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %420, i32 noundef 25, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4211, i32 noundef 1)
  br label %.thread241

422:                                              ; preds = %370
  br i1 %374, label %423, label %443

423:                                              ; preds = %422
  %424 = fcmp ogt double %.5222, 1.000000e-25
  br i1 %424, label %425, label %432

425:                                              ; preds = %423
  %426 = call noundef double @_ZN7qpOASES7getSqrtEd(double noundef %.5222)
  %427 = getelementptr inbounds i8, ptr %0, i64 168
  %428 = load ptr, ptr %427, align 8, !tbaa !29
  %429 = add nsw i32 %193, %42
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds double, ptr %428, i64 %430
  store double %426, ptr %431, align 8, !tbaa !35
  br label %.thread241

432:                                              ; preds = %423
  %433 = icmp eq i32 %3, 0
  br i1 %433, label %434, label %440

434:                                              ; preds = %432
  %435 = getelementptr inbounds i8, ptr %0, i64 168
  %436 = load ptr, ptr %435, align 8, !tbaa !29
  %437 = add nsw i32 %193, %42
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %436, i64 %438
  store double 2.221000e-14, ptr %439, align 8, !tbaa !35
  br label %.thread241

440:                                              ; preds = %432
  store i32 4, ptr %189, align 4, !tbaa !42
  %441 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %442 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %441, i32 noundef 99, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 4227, i32 noundef 1)
  br label %.thread241

443:                                              ; preds = %422
  %444 = getelementptr inbounds i8, ptr %0, i64 168
  %445 = load ptr, ptr %444, align 8, !tbaa !29
  %446 = add nsw i32 %193, %42
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds double, ptr %445, i64 %447
  store double 0.000000e+00, ptr %448, align 8, !tbaa !35
  %449 = load i32, ptr %7, align 4, !tbaa !5
  %.not236 = icmp eq i32 %449, 0
  %450 = load i32, ptr %6, align 4, !tbaa !34
  %451 = load i32, ptr %8, align 4, !tbaa !62
  %452 = load ptr, ptr %0, align 8, !tbaa !9
  br i1 %.not236, label %458, label %453

453:                                              ; preds = %443
  %454 = getelementptr inbounds i8, ptr %452, i64 224
  %455 = load ptr, ptr %454, align 8
  %456 = call noundef i32 %455(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %450, i32 noundef %451, i32 noundef 1, i32 noundef 0)
  %457 = getelementptr inbounds i8, ptr %0, i64 784
  store i32 1, ptr %457, align 8, !tbaa !59
  br label %.thread241

458:                                              ; preds = %443
  %459 = getelementptr inbounds i8, ptr %452, i64 200
  %460 = load ptr, ptr %459, align 8
  %461 = call noundef i32 %460(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %450, i32 noundef %451, i32 noundef 1, i32 noundef 0)
  %462 = getelementptr inbounds i8, ptr %0, i64 792
  store i32 1, ptr %462, align 8, !tbaa !63
  br label %.thread241

.thread241:                                       ; preds = %401, %410, %379, %453, %458, %425, %434, %.thread, %186, %188, %419, %440
  %.5 = phi i32 [ %421, %419 ], [ %442, %440 ], [ 0, %188 ], [ 0, %186 ], [ %315, %.thread ], [ 0, %434 ], [ 0, %425 ], [ 0, %458 ], [ 0, %453 ], [ 0, %379 ], [ 0, %410 ], [ 0, %401 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  br label %463

463:                                              ; preds = %70, %.thread241, %47, %32, %17
  %.7 = phi i32 [ %19, %17 ], [ %34, %32 ], [ %72, %70 ], [ %.5, %.thread241 ], [ %48, %47 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10
  ret i32 %.7
}

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

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

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

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

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

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

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

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


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