; 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
@__const._ZN7qpOASES8QProblem14printIterationEiiNS_15SubjectToStatusENS_11BooleanTypeEdS2_.excStr = external hidden unnamed_addr constant [4 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [62 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 uwtable
declare dso_local noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064)) #5 align 2

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

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

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

declare noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef) #1

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES8QProblem14printIterationEiiNS_15SubjectToStatusENS_11BooleanTypeEdS2_(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, double noundef %5, i32 noundef %6) #9 align 2 {
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  %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 double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca [160 x i8], align 16
  %31 = alloca [160 x i8], align 16
  %32 = alloca [4 x i8], align 1
  store ptr %0, ptr %9, align 8, !tbaa !5
  store i32 %1, ptr %10, align 4, !tbaa !9
  store i32 %2, ptr %11, align 4, !tbaa !9
  store i32 %3, ptr %12, align 4, !tbaa !11
  store i32 %4, ptr %13, align 4, !tbaa !13
  store double %5, ptr %14, align 8, !tbaa !15
  store i32 %6, ptr %15, align 4, !tbaa !13
  %33 = load ptr, ptr %9, align 8
  %34 = load i32, ptr %10, align 4, !tbaa !9
  %35 = icmp slt i32 %34, 0
  br i1 %35, label %36, label %39

36:                                               ; preds = %7
  %37 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %38 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %37, i32 noundef 3, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 6021, i32 noundef 1)
  store i32 %38, ptr %8, align 4
  br label %1011

39:                                               ; preds = %7
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #10
  %40 = call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %33)
  store i32 %40, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #10
  %41 = call noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064) %33)
  store i32 %41, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  %42 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %33)
  store i32 %42, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  store ptr null, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  store ptr null, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.start.p0(i64 160, ptr %30) #10
  call void @llvm.lifetime.start.p0(i64 160, ptr %31) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %32, ptr align 1 @__const._ZN7qpOASES8QProblem14printIterationEiiNS_15SubjectToStatusENS_11BooleanTypeEdS2_.excStr, i64 4, i1 false)
  %43 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 23
  %44 = getelementptr inbounds %"class.qpOASES::Options", ptr %43, i32 0, i32 0
  %45 = load i32, ptr %44, align 8, !tbaa !17
  switch i32 %45, label %1009 [
    i32 -2, label %46
    i32 -1, label %805
    i32 2, label %926
  ]

46:                                               ; preds = %39
  %47 = load i32, ptr %17, align 4, !tbaa !9
  %48 = sext i32 %47 to i64
  %49 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %48, i64 8)
  %50 = extractvalue { i64, i1 } %49, 1
  %51 = extractvalue { i64, i1 } %49, 0
  %52 = select i1 %50, i64 -1, i64 %51
  %53 = call noalias noundef nonnull ptr @_Znam(i64 noundef %52) #11
  store ptr %53, ptr %26, align 8, !tbaa !5
  %54 = load i32, ptr %18, align 4, !tbaa !9
  %55 = sext i32 %54 to i64
  %56 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %55, i64 8)
  %57 = extractvalue { i64, i1 } %56, 1
  %58 = extractvalue { i64, i1 } %56, 0
  %59 = select i1 %57, i64 -1, i64 %58
  %60 = call noalias noundef nonnull ptr @_Znam(i64 noundef %59) #11
  store ptr %60, ptr %27, align 8, !tbaa !5
  store double 0.000000e+00, ptr %25, align 8, !tbaa !15
  store double 0.000000e+00, ptr %24, align 8, !tbaa !15
  store double 0.000000e+00, ptr %23, align 8, !tbaa !15
  store double 0.000000e+00, ptr %22, align 8, !tbaa !15
  store double 0.000000e+00, ptr %21, align 8, !tbaa !15
  store double 0.000000e+00, ptr %20, align 8, !tbaa !15
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %61

61:                                               ; preds = %83, %46
  %62 = load i32, ptr %16, align 4, !tbaa !9
  %63 = load i32, ptr %17, align 4, !tbaa !9
  %64 = icmp slt i32 %62, %63
  br i1 %64, label %65, label %86

65:                                               ; preds = %61
  %66 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 3
  %67 = load ptr, ptr %66, align 8, !tbaa !29
  %68 = load i32, ptr %16, align 4, !tbaa !9
  %69 = sext i32 %68 to i64
  %70 = getelementptr inbounds double, ptr %67, i64 %69
  %71 = load double, ptr %70, align 8, !tbaa !15
  %72 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %73 = load ptr, ptr %72, align 8, !tbaa !30
  %74 = load i32, ptr %16, align 4, !tbaa !9
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds double, ptr %73, i64 %75
  %77 = load double, ptr %76, align 8, !tbaa !15
  %78 = fsub double %71, %77
  %79 = load ptr, ptr %26, align 8, !tbaa !5
  %80 = load i32, ptr %16, align 4, !tbaa !9
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds double, ptr %79, i64 %81
  store double %78, ptr %82, align 8, !tbaa !15
  br label %83

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

86:                                               ; preds = %61
  %87 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 15
  %88 = load i32, ptr %87, align 4, !tbaa !33
  switch i32 %88, label %135 [
    i32 0, label %89
    i32 1, label %113
  ]

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

90:                                               ; preds = %109, %89
  %91 = load i32, ptr %16, align 4, !tbaa !9
  %92 = load i32, ptr %17, align 4, !tbaa !9
  %93 = icmp slt i32 %91, %92
  br i1 %93, label %94, label %112

94:                                               ; preds = %90
  %95 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 16
  %96 = load double, ptr %95, align 8, !tbaa !34
  %97 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %98 = load ptr, ptr %97, align 8, !tbaa !35
  %99 = load i32, ptr %16, align 4, !tbaa !9
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds double, ptr %98, i64 %100
  %102 = load double, ptr %101, align 8, !tbaa !15
  %103 = load ptr, ptr %26, align 8, !tbaa !5
  %104 = load i32, ptr %16, align 4, !tbaa !9
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds double, ptr %103, i64 %105
  %107 = load double, ptr %106, align 8, !tbaa !15
  %108 = call double @llvm.fmuladd.f64(double %96, double %102, double %107)
  store double %108, ptr %106, align 8, !tbaa !15
  br label %109

109:                                              ; preds = %94
  %110 = load i32, ptr %16, align 4, !tbaa !9
  %111 = add nsw i32 %110, 1
  store i32 %111, ptr %16, align 4, !tbaa !9
  br label %90, !llvm.loop !36

112:                                              ; preds = %90
  br label %151

113:                                              ; preds = %86
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %114

114:                                              ; preds = %131, %113
  %115 = load i32, ptr %16, align 4, !tbaa !9
  %116 = load i32, ptr %17, align 4, !tbaa !9
  %117 = icmp slt i32 %115, %116
  br i1 %117, label %118, label %134

118:                                              ; preds = %114
  %119 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %120 = load ptr, ptr %119, align 8, !tbaa !35
  %121 = load i32, ptr %16, align 4, !tbaa !9
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds double, ptr %120, i64 %122
  %124 = load double, ptr %123, align 8, !tbaa !15
  %125 = load ptr, ptr %26, align 8, !tbaa !5
  %126 = load i32, ptr %16, align 4, !tbaa !9
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds double, ptr %125, i64 %127
  %129 = load double, ptr %128, align 8, !tbaa !15
  %130 = call double @llvm.fmuladd.f64(double 1.000000e+00, double %124, double %129)
  store double %130, ptr %128, align 8, !tbaa !15
  br label %131

131:                                              ; preds = %118
  %132 = load i32, ptr %16, align 4, !tbaa !9
  %133 = add nsw i32 %132, 1
  store i32 %133, ptr %16, align 4, !tbaa !9
  br label %114, !llvm.loop !37

134:                                              ; preds = %114
  br label %151

135:                                              ; preds = %86
  %136 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 2
  %137 = load ptr, ptr %136, align 8, !tbaa !38
  %138 = load ptr, ptr %137, align 8, !tbaa !39
  %139 = getelementptr i8, ptr %138, i64 -24
  %140 = load i64, ptr %139, align 8
  %141 = getelementptr inbounds i8, ptr %137, i64 %140
  %142 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %143 = load ptr, ptr %142, align 8, !tbaa !35
  %144 = load i32, ptr %17, align 4, !tbaa !9
  %145 = load ptr, ptr %26, align 8, !tbaa !5
  %146 = load i32, ptr %17, align 4, !tbaa !9
  %147 = load ptr, ptr %141, align 8, !tbaa !39
  %148 = getelementptr inbounds ptr, ptr %147, i64 15
  %149 = load ptr, ptr %148, align 8
  %150 = call noundef i32 %149(ptr noundef nonnull align 8 dereferenceable(12) %141, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %143, i32 noundef %144, double noundef 1.000000e+00, ptr noundef %145, i32 noundef %146)
  br label %151

151:                                              ; preds = %135, %134, %112
  %152 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 2
  %153 = load ptr, ptr %152, align 8, !tbaa !41
  %154 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %155 = load ptr, ptr %154, align 8, !tbaa !30
  %156 = load i32, ptr %17, align 4, !tbaa !9
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds double, ptr %155, i64 %157
  %159 = load i32, ptr %18, align 4, !tbaa !9
  %160 = load ptr, ptr %26, align 8, !tbaa !5
  %161 = load i32, ptr %17, align 4, !tbaa !9
  %162 = load ptr, ptr %153, align 8, !tbaa !39
  %163 = getelementptr inbounds ptr, ptr %162, i64 16
  %164 = load ptr, ptr %163, align 8
  %165 = call noundef i32 %164(ptr noundef nonnull align 8 dereferenceable(12) %153, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %158, i32 noundef %159, double noundef 1.000000e+00, ptr noundef %160, i32 noundef %161)
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %166

166:                                              ; preds = %187, %151
  %167 = load i32, ptr %16, align 4, !tbaa !9
  %168 = load i32, ptr %17, align 4, !tbaa !9
  %169 = icmp slt i32 %167, %168
  br i1 %169, label %170, label %190

170:                                              ; preds = %166
  %171 = load ptr, ptr %26, align 8, !tbaa !5
  %172 = load i32, ptr %16, align 4, !tbaa !9
  %173 = sext i32 %172 to i64
  %174 = getelementptr inbounds double, ptr %171, i64 %173
  %175 = load double, ptr %174, align 8, !tbaa !15
  %176 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %175)
  %177 = load double, ptr %20, align 8, !tbaa !15
  %178 = fcmp ogt double %176, %177
  br i1 %178, label %179, label %186

179:                                              ; preds = %170
  %180 = load ptr, ptr %26, align 8, !tbaa !5
  %181 = load i32, ptr %16, align 4, !tbaa !9
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds double, ptr %180, i64 %182
  %184 = load double, ptr %183, align 8, !tbaa !15
  %185 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %184)
  store double %185, ptr %20, align 8, !tbaa !15
  br label %186

186:                                              ; preds = %179, %170
  br label %187

187:                                              ; preds = %186
  %188 = load i32, ptr %16, align 4, !tbaa !9
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr %16, align 4, !tbaa !9
  br label %166, !llvm.loop !43

190:                                              ; preds = %166
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %191

191:                                              ; preds = %226, %190
  %192 = load i32, ptr %16, align 4, !tbaa !9
  %193 = load i32, ptr %17, align 4, !tbaa !9
  %194 = icmp slt i32 %192, %193
  br i1 %194, label %195, label %229

195:                                              ; preds = %191
  %196 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 4
  %197 = load ptr, ptr %196, align 8, !tbaa !44
  %198 = load i32, ptr %16, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds double, ptr %197, i64 %199
  %201 = load double, ptr %200, align 8, !tbaa !15
  %202 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %203 = load ptr, ptr %202, align 8, !tbaa !35
  %204 = load i32, ptr %16, align 4, !tbaa !9
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds double, ptr %203, i64 %205
  %207 = load double, ptr %206, align 8, !tbaa !15
  %208 = fsub double %201, %207
  %209 = load double, ptr %21, align 8, !tbaa !15
  %210 = fcmp ogt double %208, %209
  br i1 %210, label %211, label %225

211:                                              ; preds = %195
  %212 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 4
  %213 = load ptr, ptr %212, align 8, !tbaa !44
  %214 = load i32, ptr %16, align 4, !tbaa !9
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %213, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !15
  %218 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %219 = load ptr, ptr %218, align 8, !tbaa !35
  %220 = load i32, ptr %16, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds double, ptr %219, i64 %221
  %223 = load double, ptr %222, align 8, !tbaa !15
  %224 = fsub double %217, %223
  store double %224, ptr %21, align 8, !tbaa !15
  br label %225

225:                                              ; preds = %211, %195
  br label %226

226:                                              ; preds = %225
  %227 = load i32, ptr %16, align 4, !tbaa !9
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr %16, align 4, !tbaa !9
  br label %191, !llvm.loop !45

229:                                              ; preds = %191
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %230

230:                                              ; preds = %265, %229
  %231 = load i32, ptr %16, align 4, !tbaa !9
  %232 = load i32, ptr %17, align 4, !tbaa !9
  %233 = icmp slt i32 %231, %232
  br i1 %233, label %234, label %268

234:                                              ; preds = %230
  %235 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %236 = load ptr, ptr %235, align 8, !tbaa !35
  %237 = load i32, ptr %16, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds double, ptr %236, i64 %238
  %240 = load double, ptr %239, align 8, !tbaa !15
  %241 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 5
  %242 = load ptr, ptr %241, align 8, !tbaa !46
  %243 = load i32, ptr %16, align 4, !tbaa !9
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds double, ptr %242, i64 %244
  %246 = load double, ptr %245, align 8, !tbaa !15
  %247 = fsub double %240, %246
  %248 = load double, ptr %21, align 8, !tbaa !15
  %249 = fcmp ogt double %247, %248
  br i1 %249, label %250, label %264

250:                                              ; preds = %234
  %251 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %252 = load ptr, ptr %251, align 8, !tbaa !35
  %253 = load i32, ptr %16, align 4, !tbaa !9
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds double, ptr %252, i64 %254
  %256 = load double, ptr %255, align 8, !tbaa !15
  %257 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 5
  %258 = load ptr, ptr %257, align 8, !tbaa !46
  %259 = load i32, ptr %16, 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 !15
  %263 = fsub double %256, %262
  store double %263, ptr %21, align 8, !tbaa !15
  br label %264

264:                                              ; preds = %250, %234
  br label %265

265:                                              ; preds = %264
  %266 = load i32, ptr %16, align 4, !tbaa !9
  %267 = add nsw i32 %266, 1
  store i32 %267, ptr %16, align 4, !tbaa !9
  br label %230, !llvm.loop !47

268:                                              ; preds = %230
  %269 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 2
  %270 = load ptr, ptr %269, align 8, !tbaa !41
  %271 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %272 = load ptr, ptr %271, align 8, !tbaa !35
  %273 = load i32, ptr %17, align 4, !tbaa !9
  %274 = load ptr, ptr %27, align 8, !tbaa !5
  %275 = load i32, ptr %18, align 4, !tbaa !9
  %276 = load ptr, ptr %270, align 8, !tbaa !39
  %277 = getelementptr inbounds ptr, ptr %276, i64 15
  %278 = load ptr, ptr %277, align 8
  %279 = call noundef i32 %278(ptr noundef nonnull align 8 dereferenceable(12) %270, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %272, i32 noundef %273, double noundef 0.000000e+00, ptr noundef %274, i32 noundef %275)
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %280

280:                                              ; preds = %313, %268
  %281 = load i32, ptr %16, align 4, !tbaa !9
  %282 = load i32, ptr %18, align 4, !tbaa !9
  %283 = icmp slt i32 %281, %282
  br i1 %283, label %284, label %316

284:                                              ; preds = %280
  %285 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 3
  %286 = load ptr, ptr %285, align 8, !tbaa !48
  %287 = load i32, ptr %16, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds double, ptr %286, i64 %288
  %290 = load double, ptr %289, align 8, !tbaa !15
  %291 = load ptr, ptr %27, align 8, !tbaa !5
  %292 = load i32, ptr %16, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %291, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !15
  %296 = fsub double %290, %295
  %297 = load double, ptr %22, align 8, !tbaa !15
  %298 = fcmp ogt double %296, %297
  br i1 %298, label %299, label %312

299:                                              ; preds = %284
  %300 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 3
  %301 = load ptr, ptr %300, align 8, !tbaa !48
  %302 = load i32, ptr %16, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds double, ptr %301, i64 %303
  %305 = load double, ptr %304, align 8, !tbaa !15
  %306 = load ptr, ptr %27, align 8, !tbaa !5
  %307 = load i32, ptr %16, align 4, !tbaa !9
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds double, ptr %306, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !15
  %311 = fsub double %305, %310
  store double %311, ptr %22, align 8, !tbaa !15
  br label %312

312:                                              ; preds = %299, %284
  br label %313

313:                                              ; preds = %312
  %314 = load i32, ptr %16, align 4, !tbaa !9
  %315 = add nsw i32 %314, 1
  store i32 %315, ptr %16, align 4, !tbaa !9
  br label %280, !llvm.loop !49

316:                                              ; preds = %280
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %317

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

321:                                              ; preds = %317
  %322 = load ptr, ptr %27, align 8, !tbaa !5
  %323 = load i32, ptr %16, align 4, !tbaa !9
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %322, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !15
  %327 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 4
  %328 = load ptr, ptr %327, align 8, !tbaa !50
  %329 = load i32, ptr %16, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds double, ptr %328, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !15
  %333 = fsub double %326, %332
  %334 = load double, ptr %22, align 8, !tbaa !15
  %335 = fcmp ogt double %333, %334
  br i1 %335, label %336, label %349

336:                                              ; preds = %321
  %337 = load ptr, ptr %27, align 8, !tbaa !5
  %338 = load i32, ptr %16, align 4, !tbaa !9
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds double, ptr %337, i64 %339
  %341 = load double, ptr %340, align 8, !tbaa !15
  %342 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 4
  %343 = load ptr, ptr %342, align 8, !tbaa !50
  %344 = load i32, ptr %16, align 4, !tbaa !9
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds double, ptr %343, i64 %345
  %347 = load double, ptr %346, align 8, !tbaa !15
  %348 = fsub double %341, %347
  store double %348, ptr %22, align 8, !tbaa !15
  br label %349

349:                                              ; preds = %336, %321
  br label %350

350:                                              ; preds = %349
  %351 = load i32, ptr %16, align 4, !tbaa !9
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %16, align 4, !tbaa !9
  br label %317, !llvm.loop !51

353:                                              ; preds = %317
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %354

354:                                              ; preds = %413, %353
  %355 = load i32, ptr %16, align 4, !tbaa !9
  %356 = load i32, ptr %17, align 4, !tbaa !9
  %357 = icmp slt i32 %355, %356
  br i1 %357, label %358, label %416

358:                                              ; preds = %354
  %359 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %360 = load ptr, ptr %359, align 8, !tbaa !30
  %361 = load i32, ptr %16, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %360, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !15
  %365 = fcmp ogt double %364, 2.221000e-16
  br i1 %365, label %366, label %412

366:                                              ; preds = %358
  %367 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 4
  %368 = load ptr, ptr %367, align 8, !tbaa !44
  %369 = load i32, ptr %16, align 4, !tbaa !9
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds double, ptr %368, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !15
  %373 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %374 = load ptr, ptr %373, align 8, !tbaa !35
  %375 = load i32, ptr %16, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds double, ptr %374, i64 %376
  %378 = load double, ptr %377, align 8, !tbaa !15
  %379 = fsub double %372, %378
  %380 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %381 = load ptr, ptr %380, align 8, !tbaa !30
  %382 = load i32, ptr %16, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds double, ptr %381, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !15
  %386 = fmul double %379, %385
  %387 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %386)
  %388 = load double, ptr %23, align 8, !tbaa !15
  %389 = fcmp ogt double %387, %388
  br i1 %389, label %390, label %412

390:                                              ; preds = %366
  %391 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 4
  %392 = load ptr, ptr %391, align 8, !tbaa !44
  %393 = load i32, ptr %16, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds double, ptr %392, i64 %394
  %396 = load double, ptr %395, align 8, !tbaa !15
  %397 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %398 = load ptr, ptr %397, align 8, !tbaa !35
  %399 = load i32, ptr %16, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds double, ptr %398, i64 %400
  %402 = load double, ptr %401, align 8, !tbaa !15
  %403 = fsub double %396, %402
  %404 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %405 = load ptr, ptr %404, align 8, !tbaa !30
  %406 = load i32, ptr %16, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %405, i64 %407
  %409 = load double, ptr %408, align 8, !tbaa !15
  %410 = fmul double %403, %409
  %411 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %410)
  store double %411, ptr %23, align 8, !tbaa !15
  br label %412

412:                                              ; preds = %390, %366, %358
  br label %413

413:                                              ; preds = %412
  %414 = load i32, ptr %16, align 4, !tbaa !9
  %415 = add nsw i32 %414, 1
  store i32 %415, ptr %16, align 4, !tbaa !9
  br label %354, !llvm.loop !52

416:                                              ; preds = %354
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %417

417:                                              ; preds = %476, %416
  %418 = load i32, ptr %16, align 4, !tbaa !9
  %419 = load i32, ptr %17, align 4, !tbaa !9
  %420 = icmp slt i32 %418, %419
  br i1 %420, label %421, label %479

421:                                              ; preds = %417
  %422 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %423 = load ptr, ptr %422, align 8, !tbaa !30
  %424 = load i32, ptr %16, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds double, ptr %423, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !15
  %428 = fcmp olt double %427, -2.221000e-16
  br i1 %428, label %429, label %475

429:                                              ; preds = %421
  %430 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 5
  %431 = load ptr, ptr %430, align 8, !tbaa !46
  %432 = load i32, ptr %16, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds double, ptr %431, i64 %433
  %435 = load double, ptr %434, align 8, !tbaa !15
  %436 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %437 = load ptr, ptr %436, align 8, !tbaa !35
  %438 = load i32, ptr %16, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %437, i64 %439
  %441 = load double, ptr %440, align 8, !tbaa !15
  %442 = fsub double %435, %441
  %443 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %444 = load ptr, ptr %443, align 8, !tbaa !30
  %445 = load i32, ptr %16, align 4, !tbaa !9
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds double, ptr %444, i64 %446
  %448 = load double, ptr %447, align 8, !tbaa !15
  %449 = fmul double %442, %448
  %450 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %449)
  %451 = load double, ptr %23, align 8, !tbaa !15
  %452 = fcmp ogt double %450, %451
  br i1 %452, label %453, label %475

453:                                              ; preds = %429
  %454 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 5
  %455 = load ptr, ptr %454, align 8, !tbaa !46
  %456 = load i32, ptr %16, align 4, !tbaa !9
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds double, ptr %455, i64 %457
  %459 = load double, ptr %458, align 8, !tbaa !15
  %460 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 9
  %461 = load ptr, ptr %460, align 8, !tbaa !35
  %462 = load i32, ptr %16, align 4, !tbaa !9
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds double, ptr %461, i64 %463
  %465 = load double, ptr %464, align 8, !tbaa !15
  %466 = fsub double %459, %465
  %467 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %468 = load ptr, ptr %467, align 8, !tbaa !30
  %469 = load i32, ptr %16, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %468, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !15
  %473 = fmul double %466, %472
  %474 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %473)
  store double %474, ptr %23, align 8, !tbaa !15
  br label %475

475:                                              ; preds = %453, %429, %421
  br label %476

476:                                              ; preds = %475
  %477 = load i32, ptr %16, align 4, !tbaa !9
  %478 = add nsw i32 %477, 1
  store i32 %478, ptr %16, align 4, !tbaa !9
  br label %417, !llvm.loop !53

479:                                              ; preds = %417
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %480

480:                                              ; preds = %543, %479
  %481 = load i32, ptr %16, align 4, !tbaa !9
  %482 = load i32, ptr %18, align 4, !tbaa !9
  %483 = icmp slt i32 %481, %482
  br i1 %483, label %484, label %546

484:                                              ; preds = %480
  %485 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %486 = load ptr, ptr %485, align 8, !tbaa !30
  %487 = load i32, ptr %17, align 4, !tbaa !9
  %488 = load i32, ptr %16, align 4, !tbaa !9
  %489 = add nsw i32 %487, %488
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds double, ptr %486, i64 %490
  %492 = load double, ptr %491, align 8, !tbaa !15
  %493 = fcmp ogt double %492, 2.221000e-16
  br i1 %493, label %494, label %542

494:                                              ; preds = %484
  %495 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 3
  %496 = load ptr, ptr %495, align 8, !tbaa !48
  %497 = load i32, ptr %16, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %496, i64 %498
  %500 = load double, ptr %499, align 8, !tbaa !15
  %501 = load ptr, ptr %27, align 8, !tbaa !5
  %502 = load i32, ptr %16, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds double, ptr %501, i64 %503
  %505 = load double, ptr %504, align 8, !tbaa !15
  %506 = fsub double %500, %505
  %507 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %508 = load ptr, ptr %507, align 8, !tbaa !30
  %509 = load i32, ptr %17, align 4, !tbaa !9
  %510 = load i32, ptr %16, align 4, !tbaa !9
  %511 = add nsw i32 %509, %510
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds double, ptr %508, i64 %512
  %514 = load double, ptr %513, align 8, !tbaa !15
  %515 = fmul double %506, %514
  %516 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %515)
  %517 = load double, ptr %24, align 8, !tbaa !15
  %518 = fcmp ogt double %516, %517
  br i1 %518, label %519, label %542

519:                                              ; preds = %494
  %520 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 3
  %521 = load ptr, ptr %520, align 8, !tbaa !48
  %522 = load i32, ptr %16, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds double, ptr %521, i64 %523
  %525 = load double, ptr %524, align 8, !tbaa !15
  %526 = load ptr, ptr %27, align 8, !tbaa !5
  %527 = load i32, ptr %16, align 4, !tbaa !9
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds double, ptr %526, i64 %528
  %530 = load double, ptr %529, align 8, !tbaa !15
  %531 = fsub double %525, %530
  %532 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %533 = load ptr, ptr %532, align 8, !tbaa !30
  %534 = load i32, ptr %17, align 4, !tbaa !9
  %535 = load i32, ptr %16, align 4, !tbaa !9
  %536 = add nsw i32 %534, %535
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds double, ptr %533, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !15
  %540 = fmul double %531, %539
  %541 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %540)
  store double %541, ptr %24, align 8, !tbaa !15
  br label %542

542:                                              ; preds = %519, %494, %484
  br label %543

543:                                              ; preds = %542
  %544 = load i32, ptr %16, align 4, !tbaa !9
  %545 = add nsw i32 %544, 1
  store i32 %545, ptr %16, align 4, !tbaa !9
  br label %480, !llvm.loop !54

546:                                              ; preds = %480
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %547

547:                                              ; preds = %610, %546
  %548 = load i32, ptr %16, align 4, !tbaa !9
  %549 = load i32, ptr %18, align 4, !tbaa !9
  %550 = icmp slt i32 %548, %549
  br i1 %550, label %551, label %613

551:                                              ; preds = %547
  %552 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %553 = load ptr, ptr %552, align 8, !tbaa !30
  %554 = load i32, ptr %17, align 4, !tbaa !9
  %555 = load i32, ptr %16, align 4, !tbaa !9
  %556 = add nsw i32 %554, %555
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds double, ptr %553, i64 %557
  %559 = load double, ptr %558, align 8, !tbaa !15
  %560 = fcmp olt double %559, -2.221000e-16
  br i1 %560, label %561, label %609

561:                                              ; preds = %551
  %562 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 4
  %563 = load ptr, ptr %562, align 8, !tbaa !50
  %564 = load i32, ptr %16, align 4, !tbaa !9
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds double, ptr %563, i64 %565
  %567 = load double, ptr %566, align 8, !tbaa !15
  %568 = load ptr, ptr %27, align 8, !tbaa !5
  %569 = load i32, ptr %16, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds double, ptr %568, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !15
  %573 = fsub double %567, %572
  %574 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %575 = load ptr, ptr %574, align 8, !tbaa !30
  %576 = load i32, ptr %17, align 4, !tbaa !9
  %577 = load i32, ptr %16, align 4, !tbaa !9
  %578 = add nsw i32 %576, %577
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds double, ptr %575, i64 %579
  %581 = load double, ptr %580, align 8, !tbaa !15
  %582 = fmul double %573, %581
  %583 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %582)
  %584 = load double, ptr %24, align 8, !tbaa !15
  %585 = fcmp ogt double %583, %584
  br i1 %585, label %586, label %609

586:                                              ; preds = %561
  %587 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 4
  %588 = load ptr, ptr %587, align 8, !tbaa !50
  %589 = load i32, ptr %16, align 4, !tbaa !9
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds double, ptr %588, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !15
  %593 = load ptr, ptr %27, align 8, !tbaa !5
  %594 = load i32, ptr %16, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds double, ptr %593, i64 %595
  %597 = load double, ptr %596, align 8, !tbaa !15
  %598 = fsub double %592, %597
  %599 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 10
  %600 = load ptr, ptr %599, align 8, !tbaa !30
  %601 = load i32, ptr %17, align 4, !tbaa !9
  %602 = load i32, ptr %16, align 4, !tbaa !9
  %603 = add nsw i32 %601, %602
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds double, ptr %600, i64 %604
  %606 = load double, ptr %605, align 8, !tbaa !15
  %607 = fmul double %598, %606
  %608 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %607)
  store double %608, ptr %24, align 8, !tbaa !15
  br label %609

609:                                              ; preds = %586, %561, %551
  br label %610

610:                                              ; preds = %609
  %611 = load i32, ptr %16, align 4, !tbaa !9
  %612 = add nsw i32 %611, 1
  store i32 %612, ptr %16, align 4, !tbaa !9
  br label %547, !llvm.loop !55

613:                                              ; preds = %547
  store double 1.000000e+16, ptr %28, align 8, !tbaa !15
  store double 0.000000e+00, ptr %29, align 8, !tbaa !15
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %614

614:                                              ; preds = %692, %613
  %615 = load i32, ptr %16, align 4, !tbaa !9
  %616 = load i32, ptr %19, align 4, !tbaa !9
  %617 = icmp slt i32 %615, %616
  br i1 %617, label %618, label %695

618:                                              ; preds = %614
  %619 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 6
  %620 = load ptr, ptr %619, align 8, !tbaa !56
  %621 = load i32, ptr %16, align 4, !tbaa !9
  %622 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 8
  %623 = load i32, ptr %622, align 8, !tbaa !57
  %624 = mul nsw i32 %621, %623
  %625 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 8
  %626 = load i32, ptr %625, align 8, !tbaa !57
  %627 = load i32, ptr %16, align 4, !tbaa !9
  %628 = sub nsw i32 %626, %627
  %629 = sub nsw i32 %628, 1
  %630 = add nsw i32 %624, %629
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds double, ptr %620, i64 %631
  %633 = load double, ptr %632, align 8, !tbaa !15
  %634 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %633)
  %635 = load double, ptr %28, align 8, !tbaa !15
  %636 = fcmp olt double %634, %635
  br i1 %636, label %637, label %654

637:                                              ; preds = %618
  %638 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 6
  %639 = load ptr, ptr %638, align 8, !tbaa !56
  %640 = load i32, ptr %16, align 4, !tbaa !9
  %641 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 8
  %642 = load i32, ptr %641, align 8, !tbaa !57
  %643 = mul nsw i32 %640, %642
  %644 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 8
  %645 = load i32, ptr %644, align 8, !tbaa !57
  %646 = load i32, ptr %16, align 4, !tbaa !9
  %647 = sub nsw i32 %645, %646
  %648 = sub nsw i32 %647, 1
  %649 = add nsw i32 %643, %648
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %639, i64 %650
  %652 = load double, ptr %651, align 8, !tbaa !15
  %653 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %652)
  store double %653, ptr %28, align 8, !tbaa !15
  br label %691

654:                                              ; preds = %618
  %655 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 6
  %656 = load ptr, ptr %655, align 8, !tbaa !56
  %657 = load i32, ptr %16, align 4, !tbaa !9
  %658 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 8
  %659 = load i32, ptr %658, align 8, !tbaa !57
  %660 = mul nsw i32 %657, %659
  %661 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 8
  %662 = load i32, ptr %661, align 8, !tbaa !57
  %663 = load i32, ptr %16, align 4, !tbaa !9
  %664 = sub nsw i32 %662, %663
  %665 = sub nsw i32 %664, 1
  %666 = add nsw i32 %660, %665
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds double, ptr %656, i64 %667
  %669 = load double, ptr %668, align 8, !tbaa !15
  %670 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %669)
  %671 = load double, ptr %29, align 8, !tbaa !15
  %672 = fcmp ogt double %670, %671
  br i1 %672, label %673, label %690

673:                                              ; preds = %654
  %674 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 6
  %675 = load ptr, ptr %674, align 8, !tbaa !56
  %676 = load i32, ptr %16, align 4, !tbaa !9
  %677 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 8
  %678 = load i32, ptr %677, align 8, !tbaa !57
  %679 = mul nsw i32 %676, %678
  %680 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %33, i32 0, i32 8
  %681 = load i32, ptr %680, align 8, !tbaa !57
  %682 = load i32, ptr %16, align 4, !tbaa !9
  %683 = sub nsw i32 %681, %682
  %684 = sub nsw i32 %683, 1
  %685 = add nsw i32 %679, %684
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %675, i64 %686
  %688 = load double, ptr %687, align 8, !tbaa !15
  %689 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %688)
  store double %689, ptr %29, align 8, !tbaa !15
  br label %690

690:                                              ; preds = %673, %654
  br label %691

691:                                              ; preds = %690, %637
  br label %692

692:                                              ; preds = %691
  %693 = load i32, ptr %16, align 4, !tbaa !9
  %694 = add nsw i32 %693, 1
  store i32 %694, ptr %16, align 4, !tbaa !9
  br label %614, !llvm.loop !58

695:                                              ; preds = %614
  %696 = load double, ptr %29, align 8, !tbaa !15
  %697 = load double, ptr %28, align 8, !tbaa !15
  %698 = fdiv double %696, %697
  store double %698, ptr %25, align 8, !tbaa !15
  %699 = load i32, ptr %10, align 4, !tbaa !9
  %700 = srem i32 %699, 10
  %701 = icmp eq i32 %700, 0
  br i1 %701, label %702, label %710

702:                                              ; preds = %695
  %703 = load i32, ptr %15, align 4, !tbaa !13
  %704 = icmp eq i32 %703, 1
  br i1 %704, label %705, label %710

705:                                              ; preds = %702
  %706 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %707 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %706, i64 noundef 160, ptr noundef @.str.51, ptr noundef @.str.52, ptr noundef @.str.53, ptr noundef @.str.54, ptr noundef @.str.55, ptr noundef @.str.56, ptr noundef @.str.57, ptr noundef @.str.58, ptr noundef @.str.59, ptr noundef @.str.60, ptr noundef @.str.61, ptr noundef @.str.62, ptr noundef @.str.63, ptr noundef @.str.64) #10
  %708 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %709 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %708)
  br label %710

710:                                              ; preds = %705, %702, %695
  %711 = load i32, ptr %15, align 4, !tbaa !13
  %712 = icmp eq i32 %711, 1
  br i1 %712, label %713, label %717

713:                                              ; preds = %710
  %714 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %715 = load i32, ptr %10, align 4, !tbaa !9
  %716 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %714, i64 noundef 160, ptr noundef @.str.65, i32 noundef %715) #10
  br label %721

717:                                              ; preds = %710
  %718 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %719 = load i32, ptr %10, align 4, !tbaa !9
  %720 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %718, i64 noundef 160, ptr noundef @.str.66, i32 noundef %719) #10
  br label %721

721:                                              ; preds = %717, %713
  %722 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %723 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %722)
  %724 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %725 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %724, i32 0, i32 0
  %726 = load i32, ptr %725, align 8, !tbaa !59
  %727 = icmp sge i32 %726, 0
  br i1 %727, label %728, label %736

728:                                              ; preds = %721
  %729 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %730 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %731 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %730, i32 0, i32 0
  %732 = load i32, ptr %731, align 8, !tbaa !59
  %733 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %729, i64 noundef 160, ptr noundef @.str.67, i32 noundef %732) #10
  %734 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %735 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %734)
  br label %738

736:                                              ; preds = %721
  %737 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef @.str.68)
  br label %738

738:                                              ; preds = %736, %728
  %739 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %740 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %739, i32 0, i32 1
  %741 = load i32, ptr %740, align 4, !tbaa !60
  %742 = icmp sge i32 %741, 0
  br i1 %742, label %743, label %751

743:                                              ; preds = %738
  %744 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %745 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %746 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %745, i32 0, i32 1
  %747 = load i32, ptr %746, align 4, !tbaa !60
  %748 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %744, i64 noundef 160, ptr noundef @.str.67, i32 noundef %747) #10
  %749 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %750 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %749)
  br label %753

751:                                              ; preds = %738
  %752 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef @.str.68)
  br label %753

753:                                              ; preds = %751, %743
  %754 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %755 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %754, i32 0, i32 2
  %756 = load i32, ptr %755, align 8, !tbaa !61
  %757 = icmp sge i32 %756, 0
  br i1 %757, label %758, label %766

758:                                              ; preds = %753
  %759 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %760 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %761 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %760, i32 0, i32 2
  %762 = load i32, ptr %761, align 8, !tbaa !61
  %763 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %759, i64 noundef 160, ptr noundef @.str.67, i32 noundef %762) #10
  %764 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %765 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %764)
  br label %768

766:                                              ; preds = %753
  %767 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef @.str.68)
  br label %768

768:                                              ; preds = %766, %758
  %769 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %770 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %769, i32 0, i32 3
  %771 = load i32, ptr %770, align 4, !tbaa !62
  %772 = icmp sge i32 %771, 0
  br i1 %772, label %773, label %781

773:                                              ; preds = %768
  %774 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %775 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %776 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %775, i32 0, i32 3
  %777 = load i32, ptr %776, align 4, !tbaa !62
  %778 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %774, i64 noundef 160, ptr noundef @.str.67, i32 noundef %777) #10
  %779 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %780 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %779)
  br label %783

781:                                              ; preds = %768
  %782 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef @.str.68)
  br label %783

783:                                              ; preds = %781, %773
  %784 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %785 = load double, ptr %14, align 8, !tbaa !15
  %786 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 11
  %787 = load double, ptr %786, align 8, !tbaa !63
  %788 = load double, ptr %20, align 8, !tbaa !15
  %789 = load double, ptr %21, align 8, !tbaa !15
  %790 = load double, ptr %22, align 8, !tbaa !15
  %791 = load double, ptr %23, align 8, !tbaa !15
  %792 = load double, ptr %24, align 8, !tbaa !15
  %793 = load double, ptr %28, align 8, !tbaa !15
  %794 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %784, i64 noundef 160, ptr noundef @.str.69, double noundef %785, double noundef %787, double noundef %788, double noundef %789, double noundef %790, double noundef %791, double noundef %792, double noundef %793) #10
  %795 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %796 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %795)
  %797 = load ptr, ptr %27, align 8, !tbaa !5
  %798 = icmp eq ptr %797, null
  br i1 %798, label %800, label %799

799:                                              ; preds = %783
  call void @_ZdaPv(ptr noundef %797) #12
  br label %800

800:                                              ; preds = %799, %783
  %801 = load ptr, ptr %26, align 8, !tbaa !5
  %802 = icmp eq ptr %801, null
  br i1 %802, label %804, label %803

803:                                              ; preds = %800
  call void @_ZdaPv(ptr noundef %801) #12
  br label %804

804:                                              ; preds = %803, %800
  br label %1010

805:                                              ; preds = %39
  %806 = load i32, ptr %10, align 4, !tbaa !9
  %807 = srem i32 %806, 10
  %808 = icmp eq i32 %807, 0
  br i1 %808, label %809, label %817

809:                                              ; preds = %805
  %810 = load i32, ptr %15, align 4, !tbaa !13
  %811 = icmp eq i32 %810, 1
  br i1 %811, label %812, label %817

812:                                              ; preds = %809
  %813 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %814 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %813, i64 noundef 160, ptr noundef @.str.70, ptr noundef @.str.52, ptr noundef @.str.53, ptr noundef @.str.54, ptr noundef @.str.55, ptr noundef @.str.56, ptr noundef @.str.57, ptr noundef @.str.58) #10
  %815 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %816 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %815)
  br label %817

817:                                              ; preds = %812, %809, %805
  %818 = load i32, ptr %15, align 4, !tbaa !13
  %819 = icmp eq i32 %818, 1
  br i1 %819, label %820, label %824

820:                                              ; preds = %817
  %821 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %822 = load i32, ptr %10, align 4, !tbaa !9
  %823 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %821, i64 noundef 160, ptr noundef @.str.65, i32 noundef %822) #10
  br label %828

824:                                              ; preds = %817
  %825 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %826 = load i32, ptr %10, align 4, !tbaa !9
  %827 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %825, i64 noundef 160, ptr noundef @.str.66, i32 noundef %826) #10
  br label %828

828:                                              ; preds = %824, %820
  %829 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %830 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %829)
  %831 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %832 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %831, i32 0, i32 0
  %833 = load i32, ptr %832, align 8, !tbaa !59
  %834 = icmp sge i32 %833, 0
  br i1 %834, label %835, label %850

835:                                              ; preds = %828
  %836 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %837 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %838 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %837, i32 0, i32 0
  %839 = load i32, ptr %838, align 8, !tbaa !59
  %840 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %841 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %840, i32 0, i32 4
  %842 = load i32, ptr %841, align 8, !tbaa !64
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds [4 x i8], ptr %32, i64 0, i64 %843
  %845 = load i8, ptr %844, align 1, !tbaa !65
  %846 = sext i8 %845 to i32
  %847 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %836, i64 noundef 160, ptr noundef @.str.71, i32 noundef %839, i32 noundef %846) #10
  %848 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %849 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %848)
  br label %852

850:                                              ; preds = %828
  %851 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef @.str.72)
  br label %852

852:                                              ; preds = %850, %835
  %853 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %854 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %853, i32 0, i32 1
  %855 = load i32, ptr %854, align 4, !tbaa !60
  %856 = icmp sge i32 %855, 0
  br i1 %856, label %857, label %872

857:                                              ; preds = %852
  %858 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %859 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %860 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %859, i32 0, i32 1
  %861 = load i32, ptr %860, align 4, !tbaa !60
  %862 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %863 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %862, i32 0, i32 5
  %864 = load i32, ptr %863, align 4, !tbaa !66
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds [4 x i8], ptr %32, i64 0, i64 %865
  %867 = load i8, ptr %866, align 1, !tbaa !65
  %868 = sext i8 %867 to i32
  %869 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %858, i64 noundef 160, ptr noundef @.str.71, i32 noundef %861, i32 noundef %868) #10
  %870 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %871 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %870)
  br label %874

872:                                              ; preds = %852
  %873 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef @.str.72)
  br label %874

874:                                              ; preds = %872, %857
  %875 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %876 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %875, i32 0, i32 2
  %877 = load i32, ptr %876, align 8, !tbaa !61
  %878 = icmp sge i32 %877, 0
  br i1 %878, label %879, label %894

879:                                              ; preds = %874
  %880 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %881 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %882 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %881, i32 0, i32 2
  %883 = load i32, ptr %882, align 8, !tbaa !61
  %884 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %885 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %884, i32 0, i32 6
  %886 = load i32, ptr %885, align 8, !tbaa !67
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds [4 x i8], ptr %32, i64 0, i64 %887
  %889 = load i8, ptr %888, align 1, !tbaa !65
  %890 = sext i8 %889 to i32
  %891 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %880, i64 noundef 160, ptr noundef @.str.71, i32 noundef %883, i32 noundef %890) #10
  %892 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %893 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %892)
  br label %896

894:                                              ; preds = %874
  %895 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef @.str.72)
  br label %896

896:                                              ; preds = %894, %879
  %897 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %898 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %897, i32 0, i32 3
  %899 = load i32, ptr %898, align 4, !tbaa !62
  %900 = icmp sge i32 %899, 0
  br i1 %900, label %901, label %916

901:                                              ; preds = %896
  %902 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %903 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %904 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %903, i32 0, i32 3
  %905 = load i32, ptr %904, align 4, !tbaa !62
  %906 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 25
  %907 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %906, i32 0, i32 7
  %908 = load i32, ptr %907, align 4, !tbaa !68
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds [4 x i8], ptr %32, i64 0, i64 %909
  %911 = load i8, ptr %910, align 1, !tbaa !65
  %912 = sext i8 %911 to i32
  %913 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %902, i64 noundef 160, ptr noundef @.str.71, i32 noundef %905, i32 noundef %912) #10
  %914 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %915 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %914)
  br label %918

916:                                              ; preds = %896
  %917 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef @.str.72)
  br label %918

918:                                              ; preds = %916, %901
  %919 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %920 = load double, ptr %14, align 8, !tbaa !15
  %921 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 11
  %922 = load double, ptr %921, align 8, !tbaa !63
  %923 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %919, i64 noundef 160, ptr noundef @.str.73, double noundef %920, double noundef %922) #10
  %924 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %925 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %924)
  br label %1010

926:                                              ; preds = %39
  %927 = load i32, ptr %10, align 4, !tbaa !9
  %928 = icmp eq i32 %927, 0
  br i1 %928, label %929, label %941

929:                                              ; preds = %926
  %930 = load i32, ptr %15, align 4, !tbaa !13
  %931 = icmp eq i32 %930, 1
  br i1 %931, label %932, label %941

932:                                              ; preds = %929
  %933 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %934 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 17
  %935 = load i32, ptr %934, align 8, !tbaa !69
  %936 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %933, i64 noundef 160, ptr noundef @.str.74, i32 noundef %935) #10
  %937 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %938 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %937)
  %939 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef @.str.75)
  %940 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef @.str.76)
  br label %941

941:                                              ; preds = %932, %929, %926
  %942 = load i32, ptr %12, align 4, !tbaa !11
  %943 = icmp eq i32 %942, 4
  br i1 %943, label %944, label %978

944:                                              ; preds = %941
  %945 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 15
  %946 = load i32, ptr %945, align 4, !tbaa !33
  %947 = icmp eq i32 %946, 0
  br i1 %947, label %948, label %951

948:                                              ; preds = %944
  %949 = getelementptr inbounds [160 x i8], ptr %31, i64 0, i64 0
  %950 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %949, i64 noundef 3, ptr noundef @.str.77) #10
  br label %954

951:                                              ; preds = %944
  %952 = getelementptr inbounds [160 x i8], ptr %31, i64 0, i64 0
  %953 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %952, i64 noundef 3, ptr noundef @.str.78) #10
  br label %954

954:                                              ; preds = %951, %948
  %955 = load i32, ptr %15, align 4, !tbaa !13
  %956 = icmp eq i32 %955, 1
  br i1 %956, label %957, label %966

957:                                              ; preds = %954
  %958 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %959 = load i32, ptr %10, align 4, !tbaa !9
  %960 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 11
  %961 = load double, ptr %960, align 8, !tbaa !63
  %962 = getelementptr inbounds [160 x i8], ptr %31, i64 0, i64 0
  %963 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFXEv(ptr noundef nonnull align 8 dereferenceable(800) %33)
  %964 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %33)
  %965 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %958, i64 noundef 160, ptr noundef @.str.79, i32 noundef %959, double noundef %961, ptr noundef %962, i32 noundef %963, i32 noundef %964) #10
  br label %975

966:                                              ; preds = %954
  %967 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %968 = load i32, ptr %10, align 4, !tbaa !9
  %969 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 11
  %970 = load double, ptr %969, align 8, !tbaa !63
  %971 = getelementptr inbounds [160 x i8], ptr %31, i64 0, i64 0
  %972 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFXEv(ptr noundef nonnull align 8 dereferenceable(800) %33)
  %973 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %33)
  %974 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %967, i64 noundef 160, ptr noundef @.str.80, i32 noundef %968, double noundef %970, ptr noundef %971, i32 noundef %972, i32 noundef %973) #10
  br label %975

975:                                              ; preds = %966, %957
  %976 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %977 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %976)
  br label %1008

978:                                              ; preds = %941
  %979 = load i32, ptr %12, align 4, !tbaa !11
  %980 = icmp eq i32 %979, 0
  br i1 %980, label %981, label %984

981:                                              ; preds = %978
  %982 = getelementptr inbounds [160 x i8], ptr %31, i64 0, i64 0
  %983 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %982, i64 noundef 5, ptr noundef @.str.81) #10
  br label %987

984:                                              ; preds = %978
  %985 = getelementptr inbounds [160 x i8], ptr %31, i64 0, i64 0
  %986 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %985, i64 noundef 5, ptr noundef @.str.82) #10
  br label %987

987:                                              ; preds = %984, %981
  %988 = load i32, ptr %13, align 4, !tbaa !13
  %989 = icmp eq i32 %988, 1
  br i1 %989, label %990, label %993

990:                                              ; preds = %987
  %991 = getelementptr inbounds [160 x i8], ptr %31, i64 0, i64 4
  %992 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %991, i64 noundef 4, ptr noundef @.str.83) #10
  br label %996

993:                                              ; preds = %987
  %994 = getelementptr inbounds [160 x i8], ptr %31, i64 0, i64 4
  %995 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %994, i64 noundef 4, ptr noundef @.str.84) #10
  br label %996

996:                                              ; preds = %993, %990
  %997 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %998 = load i32, ptr %10, align 4, !tbaa !9
  %999 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %33, i32 0, i32 11
  %1000 = load double, ptr %999, align 8, !tbaa !63
  %1001 = getelementptr inbounds [160 x i8], ptr %31, i64 0, i64 0
  %1002 = load i32, ptr %11, align 4, !tbaa !9
  %1003 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFXEv(ptr noundef nonnull align 8 dereferenceable(800) %33)
  %1004 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %33)
  %1005 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %997, i64 noundef 160, ptr noundef @.str.85, i32 noundef %998, double noundef %1000, ptr noundef %1001, i32 noundef %1002, i32 noundef %1003, i32 noundef %1004) #10
  %1006 = getelementptr inbounds [160 x i8], ptr %30, i64 0, i64 0
  %1007 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef %1006)
  br label %1008

1008:                                             ; preds = %996, %975
  br label %1010

1009:                                             ; preds = %39
  br label %1010

1010:                                             ; preds = %1009, %1008, %918, %804
  store i32 0, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 160, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 160, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #10
  br label %1011

1011:                                             ; preds = %1010, %36
  %1012 = load i32, ptr %8, align 4
  ret i32 %1012
}

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

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


; 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
@__const._ZN7qpOASES8QProblem14printIterationEiiNS_15SubjectToStatusENS_11BooleanTypeEdS2_.excStr = external hidden unnamed_addr constant [4 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [49 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [77 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [72 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [62 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 uwtable
declare dso_local noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064)) local_unnamed_addr #4 align 2

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

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

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

declare noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES8QProblem14printIterationEiiNS_15SubjectToStatusENS_11BooleanTypeEdS2_(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4, double noundef %5, i32 noundef %6) local_unnamed_addr #7 align 2 {
  %8 = alloca [160 x i8], align 16
  %9 = alloca [160 x i8], align 16
  %10 = icmp slt i32 %1, 0
  br i1 %10, label %11, label %14

11:                                               ; preds = %7
  %12 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %13 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %12, i32 noundef 3, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 6021, i32 noundef 1)
  br label %582

14:                                               ; preds = %7
  %15 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %16 = tail call noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %17 = tail call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %9) #10
  %18 = getelementptr inbounds i8, ptr %0, i64 272
  %19 = load i32, ptr %18, align 8, !tbaa !5
  switch i32 %19, label %581 [
    i32 -2, label %20
    i32 -1, label %481
    i32 2, label %547
  ]

20:                                               ; preds = %14
  %21 = sext i32 %15 to i64
  %22 = icmp slt i32 %15, 0
  %23 = shl nsw i64 %21, 3
  %24 = select i1 %22, i64 -1, i64 %23
  %25 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %24) #11
  %26 = ptrtoint ptr %25 to i64
  %27 = zext i32 %16 to i64
  %28 = icmp slt i32 %16, 0
  %29 = shl nuw nsw i64 %27, 3
  %30 = select i1 %28, i64 -1, i64 %29
  %31 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %30) #11
  %32 = icmp sgt i32 %15, 0
  br i1 %32, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %20
  %33 = getelementptr inbounds i8, ptr %0, i64 24
  %34 = load ptr, ptr %33, align 8, !tbaa !24
  %35 = getelementptr inbounds i8, ptr %0, i64 192
  %36 = load ptr, ptr %35, align 8, !tbaa !25
  %wide.trip.count = zext nneg i32 %15 to i64
  %min.iters.check = icmp ult i32 %15, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %37 = ptrtoint ptr %36 to i64
  %38 = ptrtoint ptr %34 to i64
  %39 = sub i64 %26, %38
  %diff.check = icmp ult i64 %39, 32
  %40 = sub i64 %26, %37
  %diff.check365 = icmp ult i64 %40, 32
  %conflict.rdx = or i1 %diff.check, %diff.check365
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %41 = getelementptr inbounds double, ptr %34, i64 %index
  %42 = getelementptr inbounds i8, ptr %41, i64 16
  %wide.load = load <2 x double>, ptr %41, align 8, !tbaa !26
  %wide.load366 = load <2 x double>, ptr %42, align 8, !tbaa !26
  %43 = getelementptr inbounds double, ptr %36, i64 %index
  %44 = getelementptr inbounds i8, ptr %43, i64 16
  %wide.load367 = load <2 x double>, ptr %43, align 8, !tbaa !26
  %wide.load368 = load <2 x double>, ptr %44, align 8, !tbaa !26
  %45 = fsub <2 x double> %wide.load, %wide.load367
  %46 = fsub <2 x double> %wide.load366, %wide.load368
  %47 = getelementptr inbounds double, ptr %25, i64 %index
  %48 = getelementptr inbounds i8, ptr %47, i64 16
  store <2 x double> %45, ptr %47, align 8, !tbaa !26
  store <2 x double> %46, ptr %48, align 8, !tbaa !26
  %index.next = add nuw i64 %index, 4
  %49 = icmp eq i64 %index.next, %n.vec
  br i1 %49, label %middle.block, label %vector.body, !llvm.loop !27

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

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

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %scalar.ph.prol ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %50 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.prol
  %51 = load double, ptr %50, align 8, !tbaa !26
  %52 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.prol
  %53 = load double, ptr %52, align 8, !tbaa !26
  %54 = fsub double %51, %53
  %55 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.prol
  store double %54, ptr %55, align 8, !tbaa !26
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !31

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph.preheader ], [ %indvars.iv.next.prol, %scalar.ph.prol ]
  %56 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %57 = icmp ugt i64 %56, -4
  br i1 %57, label %._crit_edge, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %58 = getelementptr inbounds double, ptr %34, i64 %indvars.iv
  %59 = load double, ptr %58, align 8, !tbaa !26
  %60 = getelementptr inbounds double, ptr %36, i64 %indvars.iv
  %61 = load double, ptr %60, align 8, !tbaa !26
  %62 = fsub double %59, %61
  %63 = getelementptr inbounds double, ptr %25, i64 %indvars.iv
  store double %62, ptr %63, align 8, !tbaa !26
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %64 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next
  %65 = load double, ptr %64, align 8, !tbaa !26
  %66 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next
  %67 = load double, ptr %66, align 8, !tbaa !26
  %68 = fsub double %65, %67
  %69 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.next
  store double %68, ptr %69, align 8, !tbaa !26
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %70 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next.1
  %71 = load double, ptr %70, align 8, !tbaa !26
  %72 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next.1
  %73 = load double, ptr %72, align 8, !tbaa !26
  %74 = fsub double %71, %73
  %75 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.next.1
  store double %74, ptr %75, align 8, !tbaa !26
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %76 = getelementptr inbounds double, ptr %34, i64 %indvars.iv.next.2
  %77 = load double, ptr %76, align 8, !tbaa !26
  %78 = getelementptr inbounds double, ptr %36, i64 %indvars.iv.next.2
  %79 = load double, ptr %78, align 8, !tbaa !26
  %80 = fsub double %77, %79
  %81 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.next.2
  store double %80, ptr %81, align 8, !tbaa !26
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %._crit_edge, label %scalar.ph, !llvm.loop !33

._crit_edge:                                      ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %20
  %82 = getelementptr inbounds i8, ptr %0, i64 220
  %83 = load i32, ptr %82, align 4, !tbaa !34
  switch i32 %83, label %150 [
    i32 0, label %.preheader232
    i32 1, label %.preheader233
  ]

.preheader233:                                    ; preds = %._crit_edge
  br i1 %32, label %.lr.ph237, label %.loopexit

.lr.ph237:                                        ; preds = %.preheader233
  %84 = getelementptr inbounds i8, ptr %0, i64 184
  %85 = load ptr, ptr %84, align 8, !tbaa !35
  %wide.trip.count289 = zext nneg i32 %15 to i64
  %min.iters.check373 = icmp ult i32 %15, 6
  br i1 %min.iters.check373, label %scalar.ph372.preheader, label %vector.memcheck369

scalar.ph372.preheader:                           ; preds = %middle.block371, %vector.memcheck369, %.lr.ph237
  %indvars.iv286.ph = phi i64 [ 0, %vector.memcheck369 ], [ 0, %.lr.ph237 ], [ %n.vec376, %middle.block371 ]
  %xtraiter408 = and i64 %wide.trip.count289, 3
  %lcmp.mod409.not = icmp eq i64 %xtraiter408, 0
  br i1 %lcmp.mod409.not, label %scalar.ph372.prol.loopexit, label %scalar.ph372.prol

scalar.ph372.prol:                                ; preds = %scalar.ph372.preheader, %scalar.ph372.prol
  %indvars.iv286.prol = phi i64 [ %indvars.iv.next287.prol, %scalar.ph372.prol ], [ %indvars.iv286.ph, %scalar.ph372.preheader ]
  %prol.iter410 = phi i64 [ %prol.iter410.next, %scalar.ph372.prol ], [ 0, %scalar.ph372.preheader ]
  %86 = getelementptr inbounds double, ptr %85, i64 %indvars.iv286.prol
  %87 = load double, ptr %86, align 8, !tbaa !26
  %88 = getelementptr inbounds double, ptr %25, i64 %indvars.iv286.prol
  %89 = load double, ptr %88, align 8, !tbaa !26
  %90 = fadd double %87, %89
  store double %90, ptr %88, align 8, !tbaa !26
  %indvars.iv.next287.prol = add nuw nsw i64 %indvars.iv286.prol, 1
  %prol.iter410.next = add i64 %prol.iter410, 1
  %prol.iter410.cmp.not = icmp eq i64 %prol.iter410.next, %xtraiter408
  br i1 %prol.iter410.cmp.not, label %scalar.ph372.prol.loopexit, label %scalar.ph372.prol, !llvm.loop !36

scalar.ph372.prol.loopexit:                       ; preds = %scalar.ph372.prol, %scalar.ph372.preheader
  %indvars.iv286.unr = phi i64 [ %indvars.iv286.ph, %scalar.ph372.preheader ], [ %indvars.iv.next287.prol, %scalar.ph372.prol ]
  %91 = sub nsw i64 %indvars.iv286.ph, %wide.trip.count289
  %92 = icmp ugt i64 %91, -4
  br i1 %92, label %.loopexit, label %scalar.ph372

vector.memcheck369:                               ; preds = %.lr.ph237
  %93 = shl nuw nsw i64 %wide.trip.count289, 3
  %scevgep = getelementptr i8, ptr %25, i64 %93
  %scevgep370 = getelementptr i8, ptr %85, i64 %93
  %bound0 = icmp ult ptr %25, %scevgep370
  %bound1 = icmp ult ptr %85, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph372.preheader, label %vector.ph374

vector.ph374:                                     ; preds = %vector.memcheck369
  %n.vec376 = and i64 %wide.trip.count289, 2147483644
  br label %vector.body378

vector.body378:                                   ; preds = %vector.body378, %vector.ph374
  %index379 = phi i64 [ 0, %vector.ph374 ], [ %index.next384, %vector.body378 ]
  %94 = getelementptr inbounds double, ptr %85, i64 %index379
  %95 = getelementptr inbounds i8, ptr %94, i64 16
  %wide.load380 = load <2 x double>, ptr %94, align 8, !tbaa !26, !alias.scope !37
  %wide.load381 = load <2 x double>, ptr %95, align 8, !tbaa !26, !alias.scope !37
  %96 = getelementptr inbounds double, ptr %25, i64 %index379
  %97 = getelementptr inbounds i8, ptr %96, i64 16
  %wide.load382 = load <2 x double>, ptr %96, align 8, !tbaa !26, !alias.scope !40, !noalias !37
  %wide.load383 = load <2 x double>, ptr %97, align 8, !tbaa !26, !alias.scope !40, !noalias !37
  %98 = fadd <2 x double> %wide.load380, %wide.load382
  %99 = fadd <2 x double> %wide.load381, %wide.load383
  store <2 x double> %98, ptr %96, align 8, !tbaa !26, !alias.scope !40, !noalias !37
  store <2 x double> %99, ptr %97, align 8, !tbaa !26, !alias.scope !40, !noalias !37
  %index.next384 = add nuw i64 %index379, 4
  %100 = icmp eq i64 %index.next384, %n.vec376
  br i1 %100, label %middle.block371, label %vector.body378, !llvm.loop !42

middle.block371:                                  ; preds = %vector.body378
  %cmp.n385 = icmp eq i64 %n.vec376, %wide.trip.count289
  br i1 %cmp.n385, label %.loopexit, label %scalar.ph372.preheader

.preheader232:                                    ; preds = %._crit_edge
  br i1 %32, label %.lr.ph239, label %.loopexit

.lr.ph239:                                        ; preds = %.preheader232
  %101 = getelementptr inbounds i8, ptr %0, i64 224
  %102 = load double, ptr %101, align 8, !tbaa !43
  %103 = getelementptr inbounds i8, ptr %0, i64 184
  %104 = load ptr, ptr %103, align 8, !tbaa !35
  %wide.trip.count294 = zext nneg i32 %15 to i64
  %min.iters.check394 = icmp ult i32 %15, 6
  br i1 %min.iters.check394, label %scalar.ph393.preheader, label %vector.memcheck386

vector.memcheck386:                               ; preds = %.lr.ph239
  %105 = shl nuw nsw i64 %wide.trip.count294, 3
  %scevgep387 = getelementptr i8, ptr %25, i64 %105
  %scevgep388 = getelementptr i8, ptr %104, i64 %105
  %bound0389 = icmp ult ptr %25, %scevgep388
  %bound1390 = icmp ult ptr %104, %scevgep387
  %found.conflict391 = and i1 %bound0389, %bound1390
  br i1 %found.conflict391, label %scalar.ph393.preheader, label %vector.ph395

vector.ph395:                                     ; preds = %vector.memcheck386
  %n.vec397 = and i64 %wide.trip.count294, 2147483644
  %broadcast.splatinsert = insertelement <2 x double> poison, double %102, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body399

vector.body399:                                   ; preds = %vector.body399, %vector.ph395
  %index400 = phi i64 [ 0, %vector.ph395 ], [ %index.next405, %vector.body399 ]
  %106 = getelementptr inbounds double, ptr %104, i64 %index400
  %107 = getelementptr inbounds i8, ptr %106, i64 16
  %wide.load401 = load <2 x double>, ptr %106, align 8, !tbaa !26, !alias.scope !44
  %wide.load402 = load <2 x double>, ptr %107, align 8, !tbaa !26, !alias.scope !44
  %108 = getelementptr inbounds double, ptr %25, i64 %index400
  %109 = getelementptr inbounds i8, ptr %108, i64 16
  %wide.load403 = load <2 x double>, ptr %108, align 8, !tbaa !26, !alias.scope !47, !noalias !44
  %wide.load404 = load <2 x double>, ptr %109, align 8, !tbaa !26, !alias.scope !47, !noalias !44
  %110 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat, <2 x double> %wide.load401, <2 x double> %wide.load403)
  %111 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat, <2 x double> %wide.load402, <2 x double> %wide.load404)
  store <2 x double> %110, ptr %108, align 8, !tbaa !26, !alias.scope !47, !noalias !44
  store <2 x double> %111, ptr %109, align 8, !tbaa !26, !alias.scope !47, !noalias !44
  %index.next405 = add nuw i64 %index400, 4
  %112 = icmp eq i64 %index.next405, %n.vec397
  br i1 %112, label %middle.block392, label %vector.body399, !llvm.loop !49

middle.block392:                                  ; preds = %vector.body399
  %cmp.n406 = icmp eq i64 %n.vec397, %wide.trip.count294
  br i1 %cmp.n406, label %.loopexit, label %scalar.ph393.preheader

scalar.ph393.preheader:                           ; preds = %middle.block392, %vector.memcheck386, %.lr.ph239
  %indvars.iv291.ph = phi i64 [ 0, %vector.memcheck386 ], [ 0, %.lr.ph239 ], [ %n.vec397, %middle.block392 ]
  %xtraiter411 = and i64 %wide.trip.count294, 1
  %lcmp.mod412.not = icmp eq i64 %xtraiter411, 0
  br i1 %lcmp.mod412.not, label %scalar.ph393.prol.loopexit, label %scalar.ph393.prol

scalar.ph393.prol:                                ; preds = %scalar.ph393.preheader
  %113 = getelementptr inbounds double, ptr %104, i64 %indvars.iv291.ph
  %114 = load double, ptr %113, align 8, !tbaa !26
  %115 = getelementptr inbounds double, ptr %25, i64 %indvars.iv291.ph
  %116 = load double, ptr %115, align 8, !tbaa !26
  %117 = tail call double @llvm.fmuladd.f64(double %102, double %114, double %116)
  store double %117, ptr %115, align 8, !tbaa !26
  %indvars.iv.next292.prol = or disjoint i64 %indvars.iv291.ph, 1
  br label %scalar.ph393.prol.loopexit

scalar.ph393.prol.loopexit:                       ; preds = %scalar.ph393.prol, %scalar.ph393.preheader
  %indvars.iv291.unr = phi i64 [ %indvars.iv291.ph, %scalar.ph393.preheader ], [ %indvars.iv.next292.prol, %scalar.ph393.prol ]
  %118 = add nsw i64 %wide.trip.count294, -1
  %119 = icmp eq i64 %indvars.iv291.ph, %118
  br i1 %119, label %.loopexit, label %scalar.ph393

scalar.ph393:                                     ; preds = %scalar.ph393.prol.loopexit, %scalar.ph393
  %indvars.iv291 = phi i64 [ %indvars.iv.next292.1, %scalar.ph393 ], [ %indvars.iv291.unr, %scalar.ph393.prol.loopexit ]
  %120 = getelementptr inbounds double, ptr %104, i64 %indvars.iv291
  %121 = load double, ptr %120, align 8, !tbaa !26
  %122 = getelementptr inbounds double, ptr %25, i64 %indvars.iv291
  %123 = load double, ptr %122, align 8, !tbaa !26
  %124 = tail call double @llvm.fmuladd.f64(double %102, double %121, double %123)
  store double %124, ptr %122, align 8, !tbaa !26
  %indvars.iv.next292 = add nuw nsw i64 %indvars.iv291, 1
  %125 = getelementptr inbounds double, ptr %104, i64 %indvars.iv.next292
  %126 = load double, ptr %125, align 8, !tbaa !26
  %127 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.next292
  %128 = load double, ptr %127, align 8, !tbaa !26
  %129 = tail call double @llvm.fmuladd.f64(double %102, double %126, double %128)
  store double %129, ptr %127, align 8, !tbaa !26
  %indvars.iv.next292.1 = add nuw nsw i64 %indvars.iv291, 2
  %exitcond295.not.1 = icmp eq i64 %indvars.iv.next292.1, %wide.trip.count294
  br i1 %exitcond295.not.1, label %.loopexit, label %scalar.ph393, !llvm.loop !50

scalar.ph372:                                     ; preds = %scalar.ph372.prol.loopexit, %scalar.ph372
  %indvars.iv286 = phi i64 [ %indvars.iv.next287.3, %scalar.ph372 ], [ %indvars.iv286.unr, %scalar.ph372.prol.loopexit ]
  %130 = getelementptr inbounds double, ptr %85, i64 %indvars.iv286
  %131 = load double, ptr %130, align 8, !tbaa !26
  %132 = getelementptr inbounds double, ptr %25, i64 %indvars.iv286
  %133 = load double, ptr %132, align 8, !tbaa !26
  %134 = fadd double %131, %133
  store double %134, ptr %132, align 8, !tbaa !26
  %indvars.iv.next287 = add nuw nsw i64 %indvars.iv286, 1
  %135 = getelementptr inbounds double, ptr %85, i64 %indvars.iv.next287
  %136 = load double, ptr %135, align 8, !tbaa !26
  %137 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.next287
  %138 = load double, ptr %137, align 8, !tbaa !26
  %139 = fadd double %136, %138
  store double %139, ptr %137, align 8, !tbaa !26
  %indvars.iv.next287.1 = add nuw nsw i64 %indvars.iv286, 2
  %140 = getelementptr inbounds double, ptr %85, i64 %indvars.iv.next287.1
  %141 = load double, ptr %140, align 8, !tbaa !26
  %142 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.next287.1
  %143 = load double, ptr %142, align 8, !tbaa !26
  %144 = fadd double %141, %143
  store double %144, ptr %142, align 8, !tbaa !26
  %indvars.iv.next287.2 = add nuw nsw i64 %indvars.iv286, 3
  %145 = getelementptr inbounds double, ptr %85, i64 %indvars.iv.next287.2
  %146 = load double, ptr %145, align 8, !tbaa !26
  %147 = getelementptr inbounds double, ptr %25, i64 %indvars.iv.next287.2
  %148 = load double, ptr %147, align 8, !tbaa !26
  %149 = fadd double %146, %148
  store double %149, ptr %147, align 8, !tbaa !26
  %indvars.iv.next287.3 = add nuw nsw i64 %indvars.iv286, 4
  %exitcond290.not.3 = icmp eq i64 %indvars.iv.next287.3, %wide.trip.count289
  br i1 %exitcond290.not.3, label %.loopexit, label %scalar.ph372, !llvm.loop !51

150:                                              ; preds = %._crit_edge
  %151 = getelementptr inbounds i8, ptr %0, i64 16
  %152 = load ptr, ptr %151, align 8, !tbaa !52
  %153 = load ptr, ptr %152, align 8, !tbaa !53
  %154 = getelementptr i8, ptr %153, i64 -24
  %155 = load i64, ptr %154, align 8
  %156 = getelementptr inbounds i8, ptr %152, i64 %155
  %157 = getelementptr inbounds i8, ptr %0, i64 184
  %158 = load ptr, ptr %157, align 8, !tbaa !35
  %159 = load ptr, ptr %156, align 8, !tbaa !53
  %160 = getelementptr inbounds i8, ptr %159, i64 120
  %161 = load ptr, ptr %160, align 8
  %162 = tail call noundef i32 %161(ptr noundef nonnull align 8 dereferenceable(12) %156, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %158, i32 noundef %15, double noundef 1.000000e+00, ptr noundef nonnull %25, i32 noundef %15)
  br label %.loopexit

.loopexit:                                        ; preds = %scalar.ph372.prol.loopexit, %scalar.ph372, %scalar.ph393.prol.loopexit, %scalar.ph393, %middle.block371, %middle.block392, %.preheader233, %.preheader232, %150
  %163 = getelementptr inbounds i8, ptr %0, i64 808
  %164 = load ptr, ptr %163, align 8, !tbaa !55
  %165 = getelementptr inbounds i8, ptr %0, i64 192
  %166 = load ptr, ptr %165, align 8, !tbaa !25
  %167 = getelementptr inbounds double, ptr %166, i64 %21
  %168 = load ptr, ptr %164, align 8, !tbaa !53
  %169 = getelementptr inbounds i8, ptr %168, i64 128
  %170 = load ptr, ptr %169, align 8
  %171 = tail call noundef i32 %170(ptr noundef nonnull align 8 dereferenceable(12) %164, i32 noundef 1, double noundef -1.000000e+00, ptr noundef %167, i32 noundef %16, double noundef 1.000000e+00, ptr noundef nonnull %25, i32 noundef %15)
  br i1 %32, label %.lr.ph243.preheader, label %.preheader230.._crit_edge251_crit_edge

.lr.ph243.preheader:                              ; preds = %.loopexit
  %wide.trip.count299 = zext nneg i32 %15 to i64
  br label %.lr.ph243

.preheader231:                                    ; preds = %185
  br i1 %32, label %.lr.ph246, label %.preheader230.._crit_edge251_crit_edge

.lr.ph246:                                        ; preds = %.preheader231
  %172 = getelementptr inbounds i8, ptr %0, i64 32
  %173 = load ptr, ptr %172, align 8, !tbaa !57
  %174 = getelementptr inbounds i8, ptr %0, i64 184
  %175 = load ptr, ptr %174, align 8, !tbaa !35
  %176 = add nsw i64 %wide.trip.count299, -1
  %xtraiter414 = and i64 %wide.trip.count299, 1
  %177 = icmp eq i64 %176, 0
  br i1 %177, label %.preheader230.unr-lcssa, label %.lr.ph246.new

.lr.ph246.new:                                    ; preds = %.lr.ph246
  %unroll_iter = and i64 %wide.trip.count299, 2147483646
  br label %197

.lr.ph243:                                        ; preds = %.lr.ph243.preheader, %185
  %indvars.iv296 = phi i64 [ 0, %.lr.ph243.preheader ], [ %indvars.iv.next297, %185 ]
  %.0197241 = phi double [ 0.000000e+00, %.lr.ph243.preheader ], [ %.1198, %185 ]
  %178 = getelementptr inbounds double, ptr %25, i64 %indvars.iv296
  %179 = load double, ptr %178, align 8, !tbaa !26
  %180 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %179)
  %181 = fcmp ogt double %180, %.0197241
  br i1 %181, label %182, label %185

182:                                              ; preds = %.lr.ph243
  %183 = load double, ptr %178, align 8, !tbaa !26
  %184 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %183)
  br label %185

185:                                              ; preds = %.lr.ph243, %182
  %.1198 = phi double [ %184, %182 ], [ %.0197241, %.lr.ph243 ]
  %indvars.iv.next297 = add nuw nsw i64 %indvars.iv296, 1
  %exitcond300.not = icmp eq i64 %indvars.iv.next297, %wide.trip.count299
  br i1 %exitcond300.not, label %.preheader231, label %.lr.ph243, !llvm.loop !58

.preheader230.unr-lcssa:                          ; preds = %197, %.lr.ph246
  %.1194.lcssa.ph = phi double [ poison, %.lr.ph246 ], [ %.1194.1, %197 ]
  %indvars.iv301.unr = phi i64 [ 0, %.lr.ph246 ], [ %indvars.iv.next302.1, %197 ]
  %.0193245.unr = phi double [ 0.000000e+00, %.lr.ph246 ], [ %.1194.1, %197 ]
  %lcmp.mod415.not = icmp eq i64 %xtraiter414, 0
  br i1 %lcmp.mod415.not, label %.preheader230, label %.preheader230.epilog-lcssa

.preheader230.epilog-lcssa:                       ; preds = %.preheader230.unr-lcssa
  %186 = getelementptr inbounds double, ptr %173, i64 %indvars.iv301.unr
  %187 = load double, ptr %186, align 8, !tbaa !26
  %188 = getelementptr inbounds double, ptr %175, i64 %indvars.iv301.unr
  %189 = load double, ptr %188, align 8, !tbaa !26
  %190 = fsub double %187, %189
  %191 = fcmp ogt double %190, %.0193245.unr
  %.1194.epil = select i1 %191, double %190, double %.0193245.unr
  br label %.preheader230

.preheader230:                                    ; preds = %.preheader230.unr-lcssa, %.preheader230.epilog-lcssa
  %.1194.lcssa = phi double [ %.1194.lcssa.ph, %.preheader230.unr-lcssa ], [ %.1194.epil, %.preheader230.epilog-lcssa ]
  br i1 %32, label %.lr.ph250, label %.preheader230.._crit_edge251_crit_edge

.preheader230.._crit_edge251_crit_edge:           ; preds = %.loopexit, %.preheader231, %.preheader230
  %.0193.lcssa348 = phi double [ %.1194.lcssa, %.preheader230 ], [ 0.000000e+00, %.preheader231 ], [ 0.000000e+00, %.loopexit ]
  %.0197.lcssa343347 = phi double [ %.1198, %.preheader230 ], [ %.1198, %.preheader231 ], [ 0.000000e+00, %.loopexit ]
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 184
  %.pre = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !35
  br label %._crit_edge251

.lr.ph250:                                        ; preds = %.preheader230
  %192 = getelementptr inbounds i8, ptr %0, i64 184
  %193 = load ptr, ptr %192, align 8, !tbaa !35
  %194 = getelementptr inbounds i8, ptr %0, i64 40
  %195 = load ptr, ptr %194, align 8, !tbaa !59
  %wide.trip.count309 = zext nneg i32 %15 to i64
  %xtraiter418 = and i64 %wide.trip.count309, 1
  %196 = icmp eq i64 %176, 0
  br i1 %196, label %._crit_edge251.loopexit.unr-lcssa, label %.lr.ph250.new

.lr.ph250.new:                                    ; preds = %.lr.ph250
  %unroll_iter421 = and i64 %wide.trip.count309, 2147483646
  br label %210

197:                                              ; preds = %197, %.lr.ph246.new
  %indvars.iv301 = phi i64 [ 0, %.lr.ph246.new ], [ %indvars.iv.next302.1, %197 ]
  %.0193245 = phi double [ 0.000000e+00, %.lr.ph246.new ], [ %.1194.1, %197 ]
  %niter = phi i64 [ 0, %.lr.ph246.new ], [ %niter.next.1, %197 ]
  %198 = getelementptr inbounds double, ptr %173, i64 %indvars.iv301
  %199 = load double, ptr %198, align 8, !tbaa !26
  %200 = getelementptr inbounds double, ptr %175, i64 %indvars.iv301
  %201 = load double, ptr %200, align 8, !tbaa !26
  %202 = fsub double %199, %201
  %203 = fcmp ogt double %202, %.0193245
  %.1194 = select i1 %203, double %202, double %.0193245
  %indvars.iv.next302 = or disjoint i64 %indvars.iv301, 1
  %204 = getelementptr inbounds double, ptr %173, i64 %indvars.iv.next302
  %205 = load double, ptr %204, align 8, !tbaa !26
  %206 = getelementptr inbounds double, ptr %175, i64 %indvars.iv.next302
  %207 = load double, ptr %206, align 8, !tbaa !26
  %208 = fsub double %205, %207
  %209 = fcmp ogt double %208, %.1194
  %.1194.1 = select i1 %209, double %208, double %.1194
  %indvars.iv.next302.1 = add nuw nsw i64 %indvars.iv301, 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 %.preheader230.unr-lcssa, label %197, !llvm.loop !60

210:                                              ; preds = %210, %.lr.ph250.new
  %indvars.iv306 = phi i64 [ 0, %.lr.ph250.new ], [ %indvars.iv.next307.1, %210 ]
  %.2195249 = phi double [ %.1194.lcssa, %.lr.ph250.new ], [ %.3196.1, %210 ]
  %niter422 = phi i64 [ 0, %.lr.ph250.new ], [ %niter422.next.1, %210 ]
  %211 = getelementptr inbounds double, ptr %193, i64 %indvars.iv306
  %212 = load double, ptr %211, align 8, !tbaa !26
  %213 = getelementptr inbounds double, ptr %195, i64 %indvars.iv306
  %214 = load double, ptr %213, align 8, !tbaa !26
  %215 = fsub double %212, %214
  %216 = fcmp ogt double %215, %.2195249
  %.3196 = select i1 %216, double %215, double %.2195249
  %indvars.iv.next307 = or disjoint i64 %indvars.iv306, 1
  %217 = getelementptr inbounds double, ptr %193, i64 %indvars.iv.next307
  %218 = load double, ptr %217, align 8, !tbaa !26
  %219 = getelementptr inbounds double, ptr %195, i64 %indvars.iv.next307
  %220 = load double, ptr %219, align 8, !tbaa !26
  %221 = fsub double %218, %220
  %222 = fcmp ogt double %221, %.3196
  %.3196.1 = select i1 %222, double %221, double %.3196
  %indvars.iv.next307.1 = add nuw nsw i64 %indvars.iv306, 2
  %niter422.next.1 = add i64 %niter422, 2
  %niter422.ncmp.1 = icmp eq i64 %niter422.next.1, %unroll_iter421
  br i1 %niter422.ncmp.1, label %._crit_edge251.loopexit.unr-lcssa, label %210, !llvm.loop !61

._crit_edge251.loopexit.unr-lcssa:                ; preds = %210, %.lr.ph250
  %.3196.lcssa.ph = phi double [ poison, %.lr.ph250 ], [ %.3196.1, %210 ]
  %indvars.iv306.unr = phi i64 [ 0, %.lr.ph250 ], [ %indvars.iv.next307.1, %210 ]
  %.2195249.unr = phi double [ %.1194.lcssa, %.lr.ph250 ], [ %.3196.1, %210 ]
  %lcmp.mod419.not = icmp eq i64 %xtraiter418, 0
  br i1 %lcmp.mod419.not, label %._crit_edge251, label %._crit_edge251.loopexit.epilog-lcssa

._crit_edge251.loopexit.epilog-lcssa:             ; preds = %._crit_edge251.loopexit.unr-lcssa
  %223 = getelementptr inbounds double, ptr %193, i64 %indvars.iv306.unr
  %224 = load double, ptr %223, align 8, !tbaa !26
  %225 = getelementptr inbounds double, ptr %195, i64 %indvars.iv306.unr
  %226 = load double, ptr %225, align 8, !tbaa !26
  %227 = fsub double %224, %226
  %228 = fcmp ogt double %227, %.2195249.unr
  %.3196.epil = select i1 %228, double %227, double %.2195249.unr
  br label %._crit_edge251

._crit_edge251:                                   ; preds = %._crit_edge251.loopexit.epilog-lcssa, %._crit_edge251.loopexit.unr-lcssa, %.preheader230.._crit_edge251_crit_edge
  %.0197.lcssa343346 = phi double [ %.0197.lcssa343347, %.preheader230.._crit_edge251_crit_edge ], [ %.1198, %._crit_edge251.loopexit.unr-lcssa ], [ %.1198, %._crit_edge251.loopexit.epilog-lcssa ]
  %229 = phi ptr [ %.pre, %.preheader230.._crit_edge251_crit_edge ], [ %193, %._crit_edge251.loopexit.unr-lcssa ], [ %193, %._crit_edge251.loopexit.epilog-lcssa ]
  %.2195.lcssa = phi double [ %.0193.lcssa348, %.preheader230.._crit_edge251_crit_edge ], [ %.3196.lcssa.ph, %._crit_edge251.loopexit.unr-lcssa ], [ %.3196.epil, %._crit_edge251.loopexit.epilog-lcssa ]
  %230 = load ptr, ptr %163, align 8, !tbaa !55
  %231 = getelementptr inbounds i8, ptr %0, i64 184
  %232 = load ptr, ptr %230, align 8, !tbaa !53
  %233 = getelementptr inbounds i8, ptr %232, i64 120
  %234 = load ptr, ptr %233, align 8
  %235 = tail call noundef i32 %234(ptr noundef nonnull align 8 dereferenceable(12) %230, i32 noundef 1, double noundef 1.000000e+00, ptr noundef %229, i32 noundef %15, double noundef 0.000000e+00, ptr noundef nonnull %31, i32 noundef %16)
  %236 = icmp sgt i32 %16, 0
  br i1 %236, label %.lr.ph256, label %.preheader228

.lr.ph256:                                        ; preds = %._crit_edge251
  %237 = getelementptr inbounds i8, ptr %0, i64 816
  %238 = load ptr, ptr %237, align 8, !tbaa !62
  %239 = add nsw i64 %27, -1
  %xtraiter424 = and i64 %27, 1
  %240 = icmp eq i64 %239, 0
  br i1 %240, label %.preheader229.unr-lcssa, label %.lr.ph256.new

.lr.ph256.new:                                    ; preds = %.lr.ph256
  %unroll_iter427 = and i64 %27, 2147483646
  br label %250

.preheader229.unr-lcssa:                          ; preds = %250, %.lr.ph256
  %.1190.lcssa.ph = phi double [ poison, %.lr.ph256 ], [ %.1190.1, %250 ]
  %indvars.iv311.unr = phi i64 [ 0, %.lr.ph256 ], [ %indvars.iv.next312.1, %250 ]
  %.0189254.unr = phi double [ 0.000000e+00, %.lr.ph256 ], [ %.1190.1, %250 ]
  %lcmp.mod425.not = icmp eq i64 %xtraiter424, 0
  br i1 %lcmp.mod425.not, label %.preheader229, label %.preheader229.epilog-lcssa

.preheader229.epilog-lcssa:                       ; preds = %.preheader229.unr-lcssa
  %241 = getelementptr inbounds double, ptr %238, i64 %indvars.iv311.unr
  %242 = load double, ptr %241, align 8, !tbaa !26
  %243 = getelementptr inbounds double, ptr %31, i64 %indvars.iv311.unr
  %244 = load double, ptr %243, align 8, !tbaa !26
  %245 = fsub double %242, %244
  %246 = fcmp ogt double %245, %.0189254.unr
  %.1190.epil = select i1 %246, double %245, double %.0189254.unr
  br label %.preheader229

.preheader229:                                    ; preds = %.preheader229.unr-lcssa, %.preheader229.epilog-lcssa
  %.1190.lcssa = phi double [ %.1190.lcssa.ph, %.preheader229.unr-lcssa ], [ %.1190.epil, %.preheader229.epilog-lcssa ]
  br i1 %236, label %.lr.ph260, label %.preheader228

.lr.ph260:                                        ; preds = %.preheader229
  %247 = getelementptr inbounds i8, ptr %0, i64 824
  %248 = load ptr, ptr %247, align 8, !tbaa !63
  %xtraiter430 = and i64 %27, 1
  %249 = icmp eq i64 %239, 0
  br i1 %249, label %.preheader228.loopexit.unr-lcssa, label %.lr.ph260.new

.lr.ph260.new:                                    ; preds = %.lr.ph260
  %unroll_iter433 = and i64 %27, 2147483646
  br label %270

250:                                              ; preds = %250, %.lr.ph256.new
  %indvars.iv311 = phi i64 [ 0, %.lr.ph256.new ], [ %indvars.iv.next312.1, %250 ]
  %.0189254 = phi double [ 0.000000e+00, %.lr.ph256.new ], [ %.1190.1, %250 ]
  %niter428 = phi i64 [ 0, %.lr.ph256.new ], [ %niter428.next.1, %250 ]
  %251 = getelementptr inbounds double, ptr %238, i64 %indvars.iv311
  %252 = load double, ptr %251, align 8, !tbaa !26
  %253 = getelementptr inbounds double, ptr %31, i64 %indvars.iv311
  %254 = load double, ptr %253, align 8, !tbaa !26
  %255 = fsub double %252, %254
  %256 = fcmp ogt double %255, %.0189254
  %.1190 = select i1 %256, double %255, double %.0189254
  %indvars.iv.next312 = or disjoint i64 %indvars.iv311, 1
  %257 = getelementptr inbounds double, ptr %238, i64 %indvars.iv.next312
  %258 = load double, ptr %257, align 8, !tbaa !26
  %259 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next312
  %260 = load double, ptr %259, align 8, !tbaa !26
  %261 = fsub double %258, %260
  %262 = fcmp ogt double %261, %.1190
  %.1190.1 = select i1 %262, double %261, double %.1190
  %indvars.iv.next312.1 = add nuw nsw i64 %indvars.iv311, 2
  %niter428.next.1 = add i64 %niter428, 2
  %niter428.ncmp.1 = icmp eq i64 %niter428.next.1, %unroll_iter427
  br i1 %niter428.ncmp.1, label %.preheader229.unr-lcssa, label %250, !llvm.loop !64

.preheader228.loopexit.unr-lcssa:                 ; preds = %270, %.lr.ph260
  %.3192.lcssa.ph = phi double [ poison, %.lr.ph260 ], [ %.3192.1, %270 ]
  %indvars.iv316.unr = phi i64 [ 0, %.lr.ph260 ], [ %indvars.iv.next317.1, %270 ]
  %.2191259.unr = phi double [ %.1190.lcssa, %.lr.ph260 ], [ %.3192.1, %270 ]
  %lcmp.mod431.not = icmp eq i64 %xtraiter430, 0
  br i1 %lcmp.mod431.not, label %.preheader228, label %.preheader228.loopexit.epilog-lcssa

.preheader228.loopexit.epilog-lcssa:              ; preds = %.preheader228.loopexit.unr-lcssa
  %263 = getelementptr inbounds double, ptr %31, i64 %indvars.iv316.unr
  %264 = load double, ptr %263, align 8, !tbaa !26
  %265 = getelementptr inbounds double, ptr %248, i64 %indvars.iv316.unr
  %266 = load double, ptr %265, align 8, !tbaa !26
  %267 = fsub double %264, %266
  %268 = fcmp ogt double %267, %.2191259.unr
  %.3192.epil = select i1 %268, double %267, double %.2191259.unr
  br label %.preheader228

.preheader228:                                    ; preds = %.preheader228.loopexit.epilog-lcssa, %.preheader228.loopexit.unr-lcssa, %._crit_edge251, %.preheader229
  %.2191.lcssa = phi double [ %.1190.lcssa, %.preheader229 ], [ 0.000000e+00, %._crit_edge251 ], [ %.3192.lcssa.ph, %.preheader228.loopexit.unr-lcssa ], [ %.3192.epil, %.preheader228.loopexit.epilog-lcssa ]
  br i1 %32, label %.lr.ph264, label %.preheader226

.lr.ph264:                                        ; preds = %.preheader228
  %269 = getelementptr inbounds i8, ptr %0, i64 32
  %wide.trip.count324 = zext nneg i32 %15 to i64
  br label %284

270:                                              ; preds = %270, %.lr.ph260.new
  %indvars.iv316 = phi i64 [ 0, %.lr.ph260.new ], [ %indvars.iv.next317.1, %270 ]
  %.2191259 = phi double [ %.1190.lcssa, %.lr.ph260.new ], [ %.3192.1, %270 ]
  %niter434 = phi i64 [ 0, %.lr.ph260.new ], [ %niter434.next.1, %270 ]
  %271 = getelementptr inbounds double, ptr %31, i64 %indvars.iv316
  %272 = load double, ptr %271, align 8, !tbaa !26
  %273 = getelementptr inbounds double, ptr %248, i64 %indvars.iv316
  %274 = load double, ptr %273, align 8, !tbaa !26
  %275 = fsub double %272, %274
  %276 = fcmp ogt double %275, %.2191259
  %.3192 = select i1 %276, double %275, double %.2191259
  %indvars.iv.next317 = or disjoint i64 %indvars.iv316, 1
  %277 = getelementptr inbounds double, ptr %31, i64 %indvars.iv.next317
  %278 = load double, ptr %277, align 8, !tbaa !26
  %279 = getelementptr inbounds double, ptr %248, i64 %indvars.iv.next317
  %280 = load double, ptr %279, align 8, !tbaa !26
  %281 = fsub double %278, %280
  %282 = fcmp ogt double %281, %.3192
  %.3192.1 = select i1 %282, double %281, double %.3192
  %indvars.iv.next317.1 = add nuw nsw i64 %indvars.iv316, 2
  %niter434.next.1 = add i64 %niter434, 2
  %niter434.ncmp.1 = icmp eq i64 %niter434.next.1, %unroll_iter433
  br i1 %niter434.ncmp.1, label %.preheader228.loopexit.unr-lcssa, label %270, !llvm.loop !65

.preheader227:                                    ; preds = %313
  br i1 %32, label %.lr.ph268, label %.preheader226

.lr.ph268:                                        ; preds = %.preheader227
  %283 = getelementptr inbounds i8, ptr %0, i64 40
  %wide.trip.count329 = zext nneg i32 %15 to i64
  br label %315

284:                                              ; preds = %.lr.ph264, %313
  %indvars.iv321 = phi i64 [ 0, %.lr.ph264 ], [ %indvars.iv.next322, %313 ]
  %.0185263 = phi double [ 0.000000e+00, %.lr.ph264 ], [ %.1186, %313 ]
  %285 = load ptr, ptr %165, align 8, !tbaa !25
  %286 = getelementptr inbounds double, ptr %285, i64 %indvars.iv321
  %287 = load double, ptr %286, align 8, !tbaa !26
  %288 = fcmp ogt double %287, 2.221000e-16
  br i1 %288, label %289, label %313

289:                                              ; preds = %284
  %290 = load ptr, ptr %269, align 8, !tbaa !57
  %291 = getelementptr inbounds double, ptr %290, i64 %indvars.iv321
  %292 = load double, ptr %291, align 8, !tbaa !26
  %293 = load ptr, ptr %231, align 8, !tbaa !35
  %294 = getelementptr inbounds double, ptr %293, i64 %indvars.iv321
  %295 = load double, ptr %294, align 8, !tbaa !26
  %296 = fsub double %292, %295
  %297 = fmul double %287, %296
  %298 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %297)
  %299 = fcmp ogt double %298, %.0185263
  br i1 %299, label %300, label %313

300:                                              ; preds = %289
  %301 = load ptr, ptr %269, align 8, !tbaa !57
  %302 = getelementptr inbounds double, ptr %301, i64 %indvars.iv321
  %303 = load double, ptr %302, align 8, !tbaa !26
  %304 = load ptr, ptr %231, align 8, !tbaa !35
  %305 = getelementptr inbounds double, ptr %304, i64 %indvars.iv321
  %306 = load double, ptr %305, align 8, !tbaa !26
  %307 = fsub double %303, %306
  %308 = load ptr, ptr %165, align 8, !tbaa !25
  %309 = getelementptr inbounds double, ptr %308, i64 %indvars.iv321
  %310 = load double, ptr %309, align 8, !tbaa !26
  %311 = fmul double %307, %310
  %312 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %311)
  br label %313

313:                                              ; preds = %284, %289, %300
  %.1186 = phi double [ %312, %300 ], [ %.0185263, %289 ], [ %.0185263, %284 ]
  %indvars.iv.next322 = add nuw nsw i64 %indvars.iv321, 1
  %exitcond325.not = icmp eq i64 %indvars.iv.next322, %wide.trip.count324
  br i1 %exitcond325.not, label %.preheader227, label %284, !llvm.loop !66

.preheader226:                                    ; preds = %344, %.preheader228, %.preheader227
  %.2187.lcssa = phi double [ %.1186, %.preheader227 ], [ 0.000000e+00, %.preheader228 ], [ %.3188, %344 ]
  br i1 %236, label %.lr.ph272, label %.preheader

.lr.ph272:                                        ; preds = %.preheader226
  %314 = getelementptr inbounds i8, ptr %0, i64 816
  br label %346

315:                                              ; preds = %.lr.ph268, %344
  %indvars.iv326 = phi i64 [ 0, %.lr.ph268 ], [ %indvars.iv.next327, %344 ]
  %.2187267 = phi double [ %.1186, %.lr.ph268 ], [ %.3188, %344 ]
  %316 = load ptr, ptr %165, align 8, !tbaa !25
  %317 = getelementptr inbounds double, ptr %316, i64 %indvars.iv326
  %318 = load double, ptr %317, align 8, !tbaa !26
  %319 = fcmp olt double %318, -2.221000e-16
  br i1 %319, label %320, label %344

320:                                              ; preds = %315
  %321 = load ptr, ptr %283, align 8, !tbaa !59
  %322 = getelementptr inbounds double, ptr %321, i64 %indvars.iv326
  %323 = load double, ptr %322, align 8, !tbaa !26
  %324 = load ptr, ptr %231, align 8, !tbaa !35
  %325 = getelementptr inbounds double, ptr %324, i64 %indvars.iv326
  %326 = load double, ptr %325, align 8, !tbaa !26
  %327 = fsub double %323, %326
  %328 = fmul double %318, %327
  %329 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %328)
  %330 = fcmp ogt double %329, %.2187267
  br i1 %330, label %331, label %344

331:                                              ; preds = %320
  %332 = load ptr, ptr %283, align 8, !tbaa !59
  %333 = getelementptr inbounds double, ptr %332, i64 %indvars.iv326
  %334 = load double, ptr %333, align 8, !tbaa !26
  %335 = load ptr, ptr %231, align 8, !tbaa !35
  %336 = getelementptr inbounds double, ptr %335, i64 %indvars.iv326
  %337 = load double, ptr %336, align 8, !tbaa !26
  %338 = fsub double %334, %337
  %339 = load ptr, ptr %165, align 8, !tbaa !25
  %340 = getelementptr inbounds double, ptr %339, i64 %indvars.iv326
  %341 = load double, ptr %340, align 8, !tbaa !26
  %342 = fmul double %338, %341
  %343 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %342)
  br label %344

344:                                              ; preds = %315, %320, %331
  %.3188 = phi double [ %343, %331 ], [ %.2187267, %320 ], [ %.2187267, %315 ]
  %indvars.iv.next327 = add nuw nsw i64 %indvars.iv326, 1
  %exitcond330.not = icmp eq i64 %indvars.iv.next327, %wide.trip.count329
  br i1 %exitcond330.not, label %.preheader226, label %315, !llvm.loop !67

.preheader225:                                    ; preds = %373
  br i1 %236, label %.lr.ph276, label %.preheader

.lr.ph276:                                        ; preds = %.preheader225
  %345 = getelementptr inbounds i8, ptr %0, i64 824
  br label %377

346:                                              ; preds = %.lr.ph272, %373
  %indvars.iv331 = phi i64 [ 0, %.lr.ph272 ], [ %indvars.iv.next332, %373 ]
  %.0183271 = phi double [ 0.000000e+00, %.lr.ph272 ], [ %.1184, %373 ]
  %347 = load ptr, ptr %165, align 8, !tbaa !25
  %348 = add nsw i64 %indvars.iv331, %21
  %349 = getelementptr inbounds double, ptr %347, i64 %348
  %350 = load double, ptr %349, align 8, !tbaa !26
  %351 = fcmp ogt double %350, 2.221000e-16
  br i1 %351, label %352, label %373

352:                                              ; preds = %346
  %353 = load ptr, ptr %314, align 8, !tbaa !62
  %354 = getelementptr inbounds double, ptr %353, i64 %indvars.iv331
  %355 = load double, ptr %354, align 8, !tbaa !26
  %356 = getelementptr inbounds double, ptr %31, i64 %indvars.iv331
  %357 = load double, ptr %356, align 8, !tbaa !26
  %358 = fsub double %355, %357
  %359 = fmul double %350, %358
  %360 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %359)
  %361 = fcmp ogt double %360, %.0183271
  br i1 %361, label %362, label %373

362:                                              ; preds = %352
  %363 = load ptr, ptr %314, align 8, !tbaa !62
  %364 = getelementptr inbounds double, ptr %363, i64 %indvars.iv331
  %365 = load double, ptr %364, align 8, !tbaa !26
  %366 = load double, ptr %356, align 8, !tbaa !26
  %367 = fsub double %365, %366
  %368 = load ptr, ptr %165, align 8, !tbaa !25
  %369 = getelementptr inbounds double, ptr %368, i64 %348
  %370 = load double, ptr %369, align 8, !tbaa !26
  %371 = fmul double %367, %370
  %372 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %371)
  br label %373

373:                                              ; preds = %346, %352, %362
  %.1184 = phi double [ %372, %362 ], [ %.0183271, %352 ], [ %.0183271, %346 ]
  %indvars.iv.next332 = add nuw nsw i64 %indvars.iv331, 1
  %exitcond335.not = icmp eq i64 %indvars.iv.next332, %27
  br i1 %exitcond335.not, label %.preheader225, label %346, !llvm.loop !68

.preheader:                                       ; preds = %404, %.preheader226, %.preheader225
  %.2.lcssa = phi double [ %.1184, %.preheader225 ], [ 0.000000e+00, %.preheader226 ], [ %.3, %404 ]
  %374 = icmp sgt i32 %17, 0
  br i1 %374, label %.lr.ph281, label %._crit_edge282

.lr.ph281:                                        ; preds = %.preheader
  %375 = getelementptr inbounds i8, ptr %0, i64 952
  %376 = getelementptr inbounds i8, ptr %0, i64 968
  br label %405

377:                                              ; preds = %.lr.ph276, %404
  %indvars.iv336 = phi i64 [ 0, %.lr.ph276 ], [ %indvars.iv.next337, %404 ]
  %.2275 = phi double [ %.1184, %.lr.ph276 ], [ %.3, %404 ]
  %378 = load ptr, ptr %165, align 8, !tbaa !25
  %379 = add nsw i64 %indvars.iv336, %21
  %380 = getelementptr inbounds double, ptr %378, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !26
  %382 = fcmp olt double %381, -2.221000e-16
  br i1 %382, label %383, label %404

383:                                              ; preds = %377
  %384 = load ptr, ptr %345, align 8, !tbaa !63
  %385 = getelementptr inbounds double, ptr %384, i64 %indvars.iv336
  %386 = load double, ptr %385, align 8, !tbaa !26
  %387 = getelementptr inbounds double, ptr %31, i64 %indvars.iv336
  %388 = load double, ptr %387, align 8, !tbaa !26
  %389 = fsub double %386, %388
  %390 = fmul double %381, %389
  %391 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %390)
  %392 = fcmp ogt double %391, %.2275
  br i1 %392, label %393, label %404

393:                                              ; preds = %383
  %394 = load ptr, ptr %345, align 8, !tbaa !63
  %395 = getelementptr inbounds double, ptr %394, i64 %indvars.iv336
  %396 = load double, ptr %395, align 8, !tbaa !26
  %397 = load double, ptr %387, align 8, !tbaa !26
  %398 = fsub double %396, %397
  %399 = load ptr, ptr %165, align 8, !tbaa !25
  %400 = getelementptr inbounds double, ptr %399, i64 %379
  %401 = load double, ptr %400, align 8, !tbaa !26
  %402 = fmul double %398, %401
  %403 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %402)
  br label %404

404:                                              ; preds = %377, %383, %393
  %.3 = phi double [ %403, %393 ], [ %.2275, %383 ], [ %.2275, %377 ]
  %indvars.iv.next337 = add nuw nsw i64 %indvars.iv336, 1
  %exitcond340.not = icmp eq i64 %indvars.iv.next337, %27
  br i1 %exitcond340.not, label %.preheader, label %377, !llvm.loop !69

405:                                              ; preds = %.lr.ph281, %438
  %.0280 = phi double [ 0.000000e+00, %.lr.ph281 ], [ %.1, %438 ]
  %.0181279 = phi double [ 1.000000e+16, %.lr.ph281 ], [ %.1182, %438 ]
  %.12278 = phi i32 [ 0, %.lr.ph281 ], [ %439, %438 ]
  %406 = load ptr, ptr %375, align 8, !tbaa !70
  %407 = load i32, ptr %376, align 8, !tbaa !71
  %408 = mul nsw i32 %407, %.12278
  %409 = xor i32 %.12278, -1
  %410 = add i32 %407, %409
  %411 = add nsw i32 %410, %408
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %406, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !26
  %415 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %414)
  %416 = fcmp olt double %415, %.0181279
  %417 = load ptr, ptr %375, align 8, !tbaa !70
  %418 = load i32, ptr %376, align 8, !tbaa !71
  %419 = mul nsw i32 %418, %.12278
  %420 = add i32 %418, %409
  %421 = add nsw i32 %420, %419
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %417, i64 %422
  %424 = load double, ptr %423, align 8, !tbaa !26
  %425 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %424)
  br i1 %416, label %438, label %426

426:                                              ; preds = %405
  %427 = fcmp ogt double %425, %.0280
  br i1 %427, label %428, label %438

428:                                              ; preds = %426
  %429 = load ptr, ptr %375, align 8, !tbaa !70
  %430 = load i32, ptr %376, align 8, !tbaa !71
  %431 = mul nsw i32 %430, %.12278
  %432 = add i32 %430, %409
  %433 = add nsw i32 %432, %431
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds double, ptr %429, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !26
  %437 = tail call noundef double @_ZN7qpOASES6getAbsEd(double noundef %436)
  br label %438

438:                                              ; preds = %405, %428, %426
  %.1182 = phi double [ %.0181279, %428 ], [ %.0181279, %426 ], [ %425, %405 ]
  %.1 = phi double [ %437, %428 ], [ %.0280, %426 ], [ %.0280, %405 ]
  %439 = add nuw nsw i32 %.12278, 1
  %exitcond341.not = icmp eq i32 %439, %17
  br i1 %exitcond341.not, label %._crit_edge282, label %405, !llvm.loop !72

._crit_edge282:                                   ; preds = %438, %.preheader
  %.0181.lcssa = phi double [ 1.000000e+16, %.preheader ], [ %.1182, %438 ]
  %440 = urem i32 %1, 10
  %441 = icmp eq i32 %440, 0
  %442 = icmp eq i32 %6, 1
  %or.cond = and i1 %441, %442
  br i1 %or.cond, label %.thread, label %445

.thread:                                          ; preds = %._crit_edge282
  %443 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.64) #10
  %444 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %8)
  br label %446

445:                                              ; preds = %._crit_edge282
  %spec.select = select i1 %442, ptr @.str.65, ptr @.str.66
  br label %446

446:                                              ; preds = %445, %.thread
  %.str.66.sink = phi ptr [ @.str.65, %.thread ], [ %spec.select, %445 ]
  %447 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull %.str.66.sink, i32 noundef %1) #10
  %448 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %8)
  %449 = getelementptr inbounds i8, ptr %0, i64 768
  %450 = load i32, ptr %449, align 8, !tbaa !73
  %451 = icmp sgt i32 %450, -1
  br i1 %451, label %452, label %454

452:                                              ; preds = %446
  %453 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.67, i32 noundef %450) #10
  br label %454

454:                                              ; preds = %446, %452
  %.str.68.sink = phi ptr [ %8, %452 ], [ @.str.68, %446 ]
  %455 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %.str.68.sink)
  %456 = getelementptr inbounds i8, ptr %0, i64 772
  %457 = load i32, ptr %456, align 4, !tbaa !74
  %458 = icmp sgt i32 %457, -1
  br i1 %458, label %459, label %461

459:                                              ; preds = %454
  %460 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.67, i32 noundef %457) #10
  br label %461

461:                                              ; preds = %454, %459
  %.str.68.sink353 = phi ptr [ %8, %459 ], [ @.str.68, %454 ]
  %462 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %.str.68.sink353)
  %463 = getelementptr inbounds i8, ptr %0, i64 776
  %464 = load i32, ptr %463, align 8, !tbaa !75
  %465 = icmp sgt i32 %464, -1
  br i1 %465, label %466, label %468

466:                                              ; preds = %461
  %467 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.67, i32 noundef %464) #10
  br label %468

468:                                              ; preds = %461, %466
  %.str.68.sink354 = phi ptr [ %8, %466 ], [ @.str.68, %461 ]
  %469 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %.str.68.sink354)
  %470 = getelementptr inbounds i8, ptr %0, i64 780
  %471 = load i32, ptr %470, align 4, !tbaa !76
  %472 = icmp sgt i32 %471, -1
  br i1 %472, label %473, label %475

473:                                              ; preds = %468
  %474 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.67, i32 noundef %471) #10
  br label %475

475:                                              ; preds = %468, %473
  %.str.68.sink355 = phi ptr [ %8, %473 ], [ @.str.68, %468 ]
  %476 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %.str.68.sink355)
  %477 = getelementptr inbounds i8, ptr %0, i64 200
  %478 = load double, ptr %477, align 8, !tbaa !77
  %479 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.69, double noundef %5, double noundef %478, double noundef %.0197.lcssa343346, double noundef %.2195.lcssa, double noundef %.2191.lcssa, double noundef %.2187.lcssa, double noundef %.2.lcssa, double noundef %.0181.lcssa) #10
  %480 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %8)
  call void @_ZdaPv(ptr noundef nonnull %31) #12
  call void @_ZdaPv(ptr noundef nonnull %25) #12
  br label %581

481:                                              ; preds = %14
  %482 = urem i32 %1, 10
  %483 = icmp eq i32 %482, 0
  %484 = icmp eq i32 %6, 1
  %or.cond3 = and i1 %483, %484
  br i1 %or.cond3, label %.thread224, label %487

.thread224:                                       ; preds = %481
  %485 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.70, ptr noundef nonnull @.str.52, ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.58) #10
  %486 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %8)
  br label %488

487:                                              ; preds = %481
  %spec.select363 = select i1 %484, ptr @.str.65, ptr @.str.66
  br label %488

488:                                              ; preds = %487, %.thread224
  %.str.66.sink356 = phi ptr [ @.str.65, %.thread224 ], [ %spec.select363, %487 ]
  %489 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull %.str.66.sink356, i32 noundef %1) #10
  %490 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %8)
  %491 = getelementptr inbounds i8, ptr %0, i64 768
  %492 = load i32, ptr %491, align 8, !tbaa !73
  %493 = icmp sgt i32 %492, -1
  br i1 %493, label %494, label %502

494:                                              ; preds = %488
  %495 = getelementptr inbounds i8, ptr %0, i64 784
  %496 = load i32, ptr %495, align 8, !tbaa !78
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds [4 x i8], ptr @__const._ZN7qpOASES8QProblem14printIterationEiiNS_15SubjectToStatusENS_11BooleanTypeEdS2_.excStr, i64 0, i64 %497
  %499 = load i8, ptr %498, align 1, !tbaa !79
  %500 = sext i8 %499 to i32
  %501 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.71, i32 noundef %492, i32 noundef %500) #10
  br label %502

502:                                              ; preds = %488, %494
  %.str.72.sink = phi ptr [ %8, %494 ], [ @.str.72, %488 ]
  %503 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %.str.72.sink)
  %504 = getelementptr inbounds i8, ptr %0, i64 772
  %505 = load i32, ptr %504, align 4, !tbaa !74
  %506 = icmp sgt i32 %505, -1
  br i1 %506, label %507, label %515

507:                                              ; preds = %502
  %508 = getelementptr inbounds i8, ptr %0, i64 788
  %509 = load i32, ptr %508, align 4, !tbaa !80
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds [4 x i8], ptr @__const._ZN7qpOASES8QProblem14printIterationEiiNS_15SubjectToStatusENS_11BooleanTypeEdS2_.excStr, i64 0, i64 %510
  %512 = load i8, ptr %511, align 1, !tbaa !79
  %513 = sext i8 %512 to i32
  %514 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.71, i32 noundef %505, i32 noundef %513) #10
  br label %515

515:                                              ; preds = %502, %507
  %.str.72.sink357 = phi ptr [ %8, %507 ], [ @.str.72, %502 ]
  %516 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %.str.72.sink357)
  %517 = getelementptr inbounds i8, ptr %0, i64 776
  %518 = load i32, ptr %517, align 8, !tbaa !75
  %519 = icmp sgt i32 %518, -1
  br i1 %519, label %520, label %528

520:                                              ; preds = %515
  %521 = getelementptr inbounds i8, ptr %0, i64 792
  %522 = load i32, ptr %521, align 8, !tbaa !81
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds [4 x i8], ptr @__const._ZN7qpOASES8QProblem14printIterationEiiNS_15SubjectToStatusENS_11BooleanTypeEdS2_.excStr, i64 0, i64 %523
  %525 = load i8, ptr %524, align 1, !tbaa !79
  %526 = sext i8 %525 to i32
  %527 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.71, i32 noundef %518, i32 noundef %526) #10
  br label %528

528:                                              ; preds = %515, %520
  %.str.72.sink358 = phi ptr [ %8, %520 ], [ @.str.72, %515 ]
  %529 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %.str.72.sink358)
  %530 = getelementptr inbounds i8, ptr %0, i64 780
  %531 = load i32, ptr %530, align 4, !tbaa !76
  %532 = icmp sgt i32 %531, -1
  br i1 %532, label %533, label %541

533:                                              ; preds = %528
  %534 = getelementptr inbounds i8, ptr %0, i64 796
  %535 = load i32, ptr %534, align 4, !tbaa !82
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds [4 x i8], ptr @__const._ZN7qpOASES8QProblem14printIterationEiiNS_15SubjectToStatusENS_11BooleanTypeEdS2_.excStr, i64 0, i64 %536
  %538 = load i8, ptr %537, align 1, !tbaa !79
  %539 = sext i8 %538 to i32
  %540 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.71, i32 noundef %531, i32 noundef %539) #10
  br label %541

541:                                              ; preds = %528, %533
  %.str.72.sink359 = phi ptr [ %8, %533 ], [ @.str.72, %528 ]
  %542 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %.str.72.sink359)
  %543 = getelementptr inbounds i8, ptr %0, i64 200
  %544 = load double, ptr %543, align 8, !tbaa !77
  %545 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.73, double noundef %5, double noundef %544) #10
  %546 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %8)
  br label %581

547:                                              ; preds = %14
  %548 = icmp eq i32 %1, 0
  %549 = icmp eq i32 %6, 1
  %or.cond5 = and i1 %548, %549
  br i1 %or.cond5, label %550, label %557

550:                                              ; preds = %547
  %551 = getelementptr inbounds i8, ptr %0, i64 232
  %552 = load i32, ptr %551, align 8, !tbaa !83
  %553 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.74, i32 noundef %552) #10
  %554 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %8)
  %555 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull @.str.75)
  %556 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull @.str.76)
  br label %557

557:                                              ; preds = %550, %547
  switch i32 %3, label %569 [
    i32 4, label %558
    i32 0, label %570
  ]

558:                                              ; preds = %557
  %559 = getelementptr inbounds i8, ptr %0, i64 220
  %560 = load i32, ptr %559, align 4, !tbaa !34
  %561 = icmp eq i32 %560, 0
  %.str.77..str.78 = select i1 %561, ptr @.str.77, ptr @.str.78
  %562 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %9, i64 noundef 3, ptr noundef nonnull %.str.77..str.78) #10
  %.str.80.sink = select i1 %549, ptr @.str.79, ptr @.str.80
  %563 = getelementptr inbounds i8, ptr %0, i64 200
  %564 = load double, ptr %563, align 8, !tbaa !77
  %565 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFXEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %566 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %567 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull %.str.80.sink, i32 noundef %1, double noundef %564, ptr noundef nonnull %9, i32 noundef %565, i32 noundef %566) #10
  %568 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %8)
  br label %581

569:                                              ; preds = %557
  br label %570

570:                                              ; preds = %557, %569
  %.str.82.sink = phi ptr [ @.str.82, %569 ], [ @.str.81, %557 ]
  %571 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %9, i64 noundef 5, ptr noundef nonnull %.str.82.sink) #10
  %572 = icmp eq i32 %4, 1
  %.str.83..str.84 = select i1 %572, ptr @.str.83, ptr @.str.84
  %573 = getelementptr inbounds i8, ptr %9, i64 4
  %574 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %573, i64 noundef 4, ptr noundef nonnull %.str.83..str.84) #10
  %575 = getelementptr inbounds i8, ptr %0, i64 200
  %576 = load double, ptr %575, align 8, !tbaa !77
  %577 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFXEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %578 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %579 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %8, i64 noundef 160, ptr noundef nonnull @.str.85, i32 noundef %1, double noundef %576, ptr noundef nonnull %9, i32 noundef %2, i32 noundef %577, i32 noundef %578) #10
  %580 = call noundef i32 @_ZN7qpOASES8myPrintfEPKc(ptr noundef nonnull %8)
  br label %581

581:                                              ; preds = %14, %558, %570, %475, %541
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %8) #10
  br label %582

582:                                              ; preds = %581, %11
  %.0199 = phi i32 [ %13, %11 ], [ 0, %581 ]
  ret i32 %.0199
}

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

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


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