; 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::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 }
%"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 }
%"struct.qpOASES::TabularOutput" = type { i32, i32, i32, i32, i32, i32, i32, i32 }
%"class.qpOASES::Constraints" = type { %"class.qpOASES::SubjectTo", %"class.qpOASES::Indexlist", %"class.qpOASES::Indexlist" }

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

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

33:                                               ; preds = %5
  %34 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %35 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %34, i32 noundef 86, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2828, i32 noundef 1)
  store i32 %35, ptr %6, align 4
  store i32 1, ptr %15, align 4
  br label %599

36:                                               ; preds = %5
  %37 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 5
  %38 = call noundef i32 @_ZNK7qpOASES11Constraints5getNCEv(ptr noundef nonnull align 8 dereferenceable(120) %37)
  %39 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %28)
  %40 = sub nsw i32 %38, %39
  %41 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 5
  %42 = call noundef i32 @_ZNK7qpOASES11Constraints6getNUCEv(ptr noundef nonnull align 8 dereferenceable(120) %41)
  %43 = icmp eq i32 %40, %42
  br i1 %43, label %44, label %47

44:                                               ; preds = %36
  %45 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %46 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %45, i32 noundef 87, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2831, i32 noundef 1)
  store i32 %46, ptr %6, align 4
  store i32 1, ptr %15, align 4
  br label %599

47:                                               ; preds = %36
  %48 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
  %49 = icmp eq i32 %48, 0
  br i1 %49, label %59, label %50

50:                                               ; preds = %47
  %51 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
  %52 = icmp eq i32 %51, 2
  br i1 %52, label %59, label %53

53:                                               ; preds = %50
  %54 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
  %55 = icmp eq i32 %54, 4
  br i1 %55, label %59, label %56

56:                                               ; preds = %53
  %57 = call noundef i32 @_ZNK7qpOASES9QProblemB9getStatusEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
  %58 = icmp eq i32 %57, 5
  br i1 %58, label %59, label %62

59:                                               ; preds = %56, %53, %50, %47
  %60 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %61 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %60, i32 noundef 9, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2838, i32 noundef 1)
  store i32 %61, ptr %6, align 4
  store i32 1, ptr %15, align 4
  br label %599

62:                                               ; preds = %56
  %63 = load i32, ptr %10, align 4, !tbaa !13
  %64 = icmp eq i32 %63, 1
  br i1 %64, label %65, label %86

65:                                               ; preds = %62
  %66 = load i32, ptr %11, align 4, !tbaa !13
  %67 = icmp eq i32 %66, 1
  br i1 %67, label %68, label %86

68:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %69 = load i32, ptr %8, align 4, !tbaa !9
  %70 = load i32, ptr %9, align 4, !tbaa !11
  %71 = load ptr, ptr %28, align 8, !tbaa !15
  %72 = getelementptr inbounds ptr, ptr %71, i64 27
  %73 = load ptr, ptr %72, align 8
  %74 = call noundef i32 %73(ptr noundef nonnull align 8 dereferenceable(1064) %28, i32 noundef %69, i32 noundef %70)
  store i32 %74, ptr %16, align 4, !tbaa !17
  %75 = load i32, ptr %16, align 4, !tbaa !17
  switch i32 %75, label %79 [
    i32 0, label %82
    i32 90, label %82
    i32 93, label %76
    i32 94, label %77
    i32 141, label %78
  ]

76:                                               ; preds = %68
  store i32 77, ptr %6, align 4
  store i32 1, ptr %15, align 4
  br label %83

77:                                               ; preds = %68
  store i32 77, ptr %6, align 4
  store i32 1, ptr %15, align 4
  br label %83

78:                                               ; preds = %68
  store i32 0, ptr %6, align 4
  store i32 1, ptr %15, align 4
  br label %83

79:                                               ; preds = %68
  %80 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %81 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %80, i32 noundef 91, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2867, i32 noundef 1)
  store i32 %81, ptr %6, align 4
  store i32 1, ptr %15, align 4
  br label %83

82:                                               ; preds = %68, %68
  store i32 0, ptr %15, align 4
  br label %83

83:                                               ; preds = %82, %79, %78, %77, %76
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  %84 = load i32, ptr %15, align 4
  switch i32 %84, label %599 [
    i32 0, label %85
  ]

85:                                               ; preds = %83
  br label %86

86:                                               ; preds = %85, %65, %62
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  %87 = call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
  store i32 %87, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  %88 = call noundef i32 @_ZNK7qpOASES9QProblemB6getNFREv(ptr noundef nonnull align 8 dereferenceable(800) %28)
  store i32 %88, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  %89 = call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %28)
  store i32 %89, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  %90 = load ptr, ptr %28, align 8, !tbaa !15
  %91 = getelementptr inbounds ptr, ptr %90, i64 7
  %92 = load ptr, ptr %91, align 8
  %93 = call noundef i32 %92(ptr noundef nonnull align 8 dereferenceable(1064) %28)
  store i32 %93, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %94 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 8
  %95 = load i32, ptr %94, align 8, !tbaa !19
  %96 = load i32, ptr %19, align 4, !tbaa !9
  %97 = sub nsw i32 %95, %96
  store i32 %97, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %98 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 6
  %99 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %98)
  %100 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %99, ptr noundef %22)
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %101 = load i32, ptr %18, align 4, !tbaa !9
  %102 = sext i32 %101 to i64
  %103 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %102, i64 8)
  %104 = extractvalue { i64, i1 } %103, 1
  %105 = extractvalue { i64, i1 } %103, 0
  %106 = select i1 %104, i64 -1, i64 %105
  %107 = call noalias noundef nonnull ptr @_Znam(i64 noundef %106) #9
  store ptr %107, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %108 = load i32, ptr %20, align 4, !tbaa !9
  %109 = sext i32 %108 to i64
  %110 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %109, i64 8)
  %111 = extractvalue { i64, i1 } %110, 1
  %112 = extractvalue { i64, i1 } %110, 0
  %113 = select i1 %111, i64 -1, i64 %112
  %114 = call noalias noundef nonnull ptr @_Znam(i64 noundef %113) #9
  store ptr %114, ptr %24, align 8, !tbaa !5
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %115

115:                                              ; preds = %124, %86
  %116 = load i32, ptr %12, align 4, !tbaa !9
  %117 = load i32, ptr %20, align 4, !tbaa !9
  %118 = icmp slt i32 %116, %117
  br i1 %118, label %119, label %127

119:                                              ; preds = %115
  %120 = load ptr, ptr %24, align 8, !tbaa !5
  %121 = load i32, ptr %12, align 4, !tbaa !9
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds double, ptr %120, i64 %122
  store double 0.000000e+00, ptr %123, align 8, !tbaa !33
  br label %124

124:                                              ; preds = %119
  %125 = load i32, ptr %12, align 4, !tbaa !9
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr %12, align 4, !tbaa !9
  br label %115, !llvm.loop !34

127:                                              ; preds = %115
  %128 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 2
  %129 = load ptr, ptr %128, align 8, !tbaa !36
  %130 = load i32, ptr %8, align 4, !tbaa !9
  %131 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 6
  %132 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %131)
  %133 = load ptr, ptr %23, align 8, !tbaa !5
  %134 = load ptr, ptr %129, align 8, !tbaa !15
  %135 = getelementptr inbounds ptr, ptr %134, i64 9
  %136 = load ptr, ptr %135, align 8
  %137 = call noundef i32 %136(ptr noundef nonnull align 8 dereferenceable(12) %129, i32 noundef %130, ptr noundef %132, double noundef 1.000000e+00, ptr noundef %133)
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %138

138:                                              ; preds = %178, %127
  %139 = load i32, ptr %12, align 4, !tbaa !9
  %140 = load i32, ptr %18, align 4, !tbaa !9
  %141 = icmp slt i32 %139, %140
  br i1 %141, label %142, label %181

142:                                              ; preds = %138
  %143 = load ptr, ptr %22, align 8, !tbaa !5
  %144 = load i32, ptr %12, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds i32, ptr %143, i64 %145
  %147 = load i32, ptr %146, align 4, !tbaa !9
  store i32 %147, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %174, %142
  %149 = load i32, ptr %13, align 4, !tbaa !9
  %150 = load i32, ptr %20, align 4, !tbaa !9
  %151 = icmp slt i32 %149, %150
  br i1 %151, label %152, label %177

152:                                              ; preds = %148
  %153 = load ptr, ptr %23, align 8, !tbaa !5
  %154 = load i32, ptr %12, align 4, !tbaa !9
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds double, ptr %153, i64 %155
  %157 = load double, ptr %156, align 8, !tbaa !33
  %158 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 7
  %159 = load ptr, ptr %158, align 8, !tbaa !37
  %160 = load i32, ptr %14, align 4, !tbaa !9
  %161 = load i32, ptr %17, align 4, !tbaa !9
  %162 = load i32, ptr %13, align 4, !tbaa !9
  %163 = mul nsw i32 %161, %162
  %164 = add nsw i32 %160, %163
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds double, ptr %159, i64 %165
  %167 = load double, ptr %166, align 8, !tbaa !33
  %168 = load ptr, ptr %24, align 8, !tbaa !5
  %169 = load i32, ptr %13, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds double, ptr %168, i64 %170
  %172 = load double, ptr %171, align 8, !tbaa !33
  %173 = call double @llvm.fmuladd.f64(double %157, double %167, double %172)
  store double %173, ptr %171, align 8, !tbaa !33
  br label %174

174:                                              ; preds = %152
  %175 = load i32, ptr %13, align 4, !tbaa !9
  %176 = add nsw i32 %175, 1
  store i32 %176, ptr %13, align 4, !tbaa !9
  br label %148, !llvm.loop !38

177:                                              ; preds = %148
  br label %178

178:                                              ; preds = %177
  %179 = load i32, ptr %12, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %12, align 4, !tbaa !9
  br label %138, !llvm.loop !39

181:                                              ; preds = %138
  %182 = load i32, ptr %19, align 4, !tbaa !9
  %183 = icmp sgt i32 %182, 0
  br i1 %183, label %184, label %260

184:                                              ; preds = %181
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %185

185:                                              ; preds = %202, %184
  %186 = load i32, ptr %13, align 4, !tbaa !9
  %187 = load i32, ptr %19, align 4, !tbaa !9
  %188 = icmp slt i32 %186, %187
  br i1 %188, label %189, label %205

189:                                              ; preds = %185
  %190 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 6
  %191 = load ptr, ptr %190, align 8, !tbaa !40
  %192 = load i32, ptr %19, align 4, !tbaa !9
  %193 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 8
  %194 = load i32, ptr %193, align 8, !tbaa !19
  %195 = mul nsw i32 %192, %194
  %196 = load i32, ptr %21, align 4, !tbaa !9
  %197 = load i32, ptr %13, align 4, !tbaa !9
  %198 = add nsw i32 %196, %197
  %199 = add nsw i32 %195, %198
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds double, ptr %191, i64 %200
  store double 0.000000e+00, ptr %201, align 8, !tbaa !33
  br label %202

202:                                              ; preds = %189
  %203 = load i32, ptr %13, align 4, !tbaa !9
  %204 = add nsw i32 %203, 1
  store i32 %204, ptr %13, align 4, !tbaa !9
  br label %185, !llvm.loop !41

205:                                              ; preds = %185
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %256, %205
  %207 = load i32, ptr %12, align 4, !tbaa !9
  %208 = load i32, ptr %18, align 4, !tbaa !9
  %209 = icmp slt i32 %207, %208
  br i1 %209, label %210, label %259

210:                                              ; preds = %206
  %211 = load ptr, ptr %22, align 8, !tbaa !5
  %212 = load i32, ptr %12, align 4, !tbaa !9
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds i32, ptr %211, i64 %213
  %215 = load i32, ptr %214, align 4, !tbaa !9
  store i32 %215, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %216

216:                                              ; preds = %252, %210
  %217 = load i32, ptr %13, align 4, !tbaa !9
  %218 = load i32, ptr %19, align 4, !tbaa !9
  %219 = icmp slt i32 %217, %218
  br i1 %219, label %220, label %255

220:                                              ; preds = %216
  %221 = load ptr, ptr %23, align 8, !tbaa !5
  %222 = load i32, ptr %12, align 4, !tbaa !9
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds double, ptr %221, i64 %223
  %225 = load double, ptr %224, align 8, !tbaa !33
  %226 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 7
  %227 = load ptr, ptr %226, align 8, !tbaa !37
  %228 = load i32, ptr %14, align 4, !tbaa !9
  %229 = load i32, ptr %17, align 4, !tbaa !9
  %230 = load i32, ptr %20, align 4, !tbaa !9
  %231 = load i32, ptr %13, align 4, !tbaa !9
  %232 = add nsw i32 %230, %231
  %233 = mul nsw i32 %229, %232
  %234 = add nsw i32 %228, %233
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds double, ptr %227, i64 %235
  %237 = load double, ptr %236, align 8, !tbaa !33
  %238 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 6
  %239 = load ptr, ptr %238, align 8, !tbaa !40
  %240 = load i32, ptr %19, align 4, !tbaa !9
  %241 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 8
  %242 = load i32, ptr %241, align 8, !tbaa !19
  %243 = mul nsw i32 %240, %242
  %244 = load i32, ptr %21, align 4, !tbaa !9
  %245 = load i32, ptr %13, align 4, !tbaa !9
  %246 = add nsw i32 %244, %245
  %247 = add nsw i32 %243, %246
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds double, ptr %239, i64 %248
  %250 = load double, ptr %249, align 8, !tbaa !33
  %251 = call double @llvm.fmuladd.f64(double %225, double %237, double %250)
  store double %251, ptr %249, align 8, !tbaa !33
  br label %252

252:                                              ; preds = %220
  %253 = load i32, ptr %13, align 4, !tbaa !9
  %254 = add nsw i32 %253, 1
  store i32 %254, ptr %13, align 4, !tbaa !9
  br label %216, !llvm.loop !42

255:                                              ; preds = %216
  br label %256

256:                                              ; preds = %255
  %257 = load i32, ptr %12, align 4, !tbaa !9
  %258 = add nsw i32 %257, 1
  store i32 %258, ptr %12, align 4, !tbaa !9
  br label %206, !llvm.loop !43

259:                                              ; preds = %206
  br label %260

260:                                              ; preds = %259, %181
  %261 = load ptr, ptr %23, align 8, !tbaa !5
  %262 = icmp eq ptr %261, null
  br i1 %262, label %264, label %263

263:                                              ; preds = %260
  call void @_ZdaPv(ptr noundef %261) #10
  br label %264

264:                                              ; preds = %263, %260
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %265 = load i32, ptr %20, align 4, !tbaa !9
  %266 = icmp sgt i32 %265, 0
  br i1 %266, label %267, label %581

267:                                              ; preds = %264
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %268

268:                                              ; preds = %420, %267
  %269 = load i32, ptr %13, align 4, !tbaa !9
  %270 = load i32, ptr %20, align 4, !tbaa !9
  %271 = sub nsw i32 %270, 1
  %272 = icmp slt i32 %269, %271
  br i1 %272, label %273, label %423

273:                                              ; preds = %268
  %274 = load ptr, ptr %24, align 8, !tbaa !5
  %275 = load i32, ptr %13, align 4, !tbaa !9
  %276 = add nsw i32 %275, 1
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds double, ptr %274, i64 %277
  %279 = load double, ptr %278, align 8, !tbaa !33
  %280 = load ptr, ptr %24, align 8, !tbaa !5
  %281 = load i32, ptr %13, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %280, i64 %282
  %284 = load double, ptr %283, align 8, !tbaa !33
  %285 = load ptr, ptr %24, align 8, !tbaa !5
  %286 = load i32, ptr %13, align 4, !tbaa !9
  %287 = add nsw i32 %286, 1
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds double, ptr %285, i64 %288
  %290 = load ptr, ptr %24, align 8, !tbaa !5
  %291 = load i32, ptr %13, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds double, ptr %290, i64 %292
  call void @_ZNK7qpOASES9QProblemB13computeGivensEddRdS1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(800) %28, double noundef %279, double noundef %284, ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26)
  %294 = load double, ptr %26, align 8, !tbaa !33
  %295 = load double, ptr %25, align 8, !tbaa !33
  %296 = fadd double 1.000000e+00, %295
  %297 = fdiv double %294, %296
  store double %297, ptr %27, align 8, !tbaa !33
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %351, %273
  %299 = load i32, ptr %12, align 4, !tbaa !9
  %300 = load i32, ptr %18, align 4, !tbaa !9
  %301 = icmp slt i32 %299, %300
  br i1 %301, label %302, label %354

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

351:                                              ; preds = %302
  %352 = load i32, ptr %12, align 4, !tbaa !9
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %12, align 4, !tbaa !9
  br label %298, !llvm.loop !44

354:                                              ; preds = %298
  %355 = load i32, ptr %10, align 4, !tbaa !13
  %356 = icmp eq i32 %355, 1
  br i1 %356, label %357, label %419

357:                                              ; preds = %354
  %358 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 15
  %359 = load i32, ptr %358, align 4, !tbaa !45
  %360 = icmp ne i32 %359, 0
  br i1 %360, label %361, label %419

361:                                              ; preds = %357
  %362 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 15
  %363 = load i32, ptr %362, align 4, !tbaa !45
  %364 = icmp ne i32 %363, 1
  br i1 %364, label %365, label %419

365:                                              ; preds = %361
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %415, %365
  %367 = load i32, ptr %12, align 4, !tbaa !9
  %368 = load i32, ptr %13, align 4, !tbaa !9
  %369 = add nsw i32 %368, 1
  %370 = icmp sle i32 %367, %369
  br i1 %370, label %371, label %418

371:                                              ; preds = %366
  %372 = load double, ptr %25, align 8, !tbaa !33
  %373 = load double, ptr %26, align 8, !tbaa !33
  %374 = load double, ptr %27, align 8, !tbaa !33
  %375 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %376 = load ptr, ptr %375, align 8, !tbaa !46
  %377 = load i32, ptr %12, align 4, !tbaa !9
  %378 = load i32, ptr %17, align 4, !tbaa !9
  %379 = load i32, ptr %13, align 4, !tbaa !9
  %380 = add nsw i32 1, %379
  %381 = mul nsw i32 %378, %380
  %382 = add nsw i32 %377, %381
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds double, ptr %376, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !33
  %386 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %387 = load ptr, ptr %386, align 8, !tbaa !46
  %388 = load i32, ptr %12, align 4, !tbaa !9
  %389 = load i32, ptr %17, align 4, !tbaa !9
  %390 = load i32, ptr %13, align 4, !tbaa !9
  %391 = mul nsw i32 %389, %390
  %392 = add nsw i32 %388, %391
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %387, i64 %393
  %395 = load double, ptr %394, align 8, !tbaa !33
  %396 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %397 = load ptr, ptr %396, align 8, !tbaa !46
  %398 = load i32, ptr %12, align 4, !tbaa !9
  %399 = load i32, ptr %17, align 4, !tbaa !9
  %400 = load i32, ptr %13, align 4, !tbaa !9
  %401 = add nsw i32 1, %400
  %402 = mul nsw i32 %399, %401
  %403 = add nsw i32 %398, %402
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds double, ptr %397, i64 %404
  %406 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %407 = load ptr, ptr %406, align 8, !tbaa !46
  %408 = load i32, ptr %12, align 4, !tbaa !9
  %409 = load i32, ptr %17, align 4, !tbaa !9
  %410 = load i32, ptr %13, align 4, !tbaa !9
  %411 = mul nsw i32 %409, %410
  %412 = add nsw i32 %408, %411
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds double, ptr %407, i64 %413
  call void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800) %28, double noundef %372, double noundef %373, double noundef %374, double noundef %385, double noundef %395, ptr noundef nonnull align 8 dereferenceable(8) %405, ptr noundef nonnull align 8 dereferenceable(8) %414)
  br label %415

415:                                              ; preds = %371
  %416 = load i32, ptr %12, align 4, !tbaa !9
  %417 = add nsw i32 %416, 1
  store i32 %417, ptr %12, align 4, !tbaa !9
  br label %366, !llvm.loop !47

418:                                              ; preds = %366
  br label %419

419:                                              ; preds = %418, %361, %357, %354
  br label %420

420:                                              ; preds = %419
  %421 = load i32, ptr %13, align 4, !tbaa !9
  %422 = add nsw i32 %421, 1
  store i32 %422, ptr %13, align 4, !tbaa !9
  br label %268, !llvm.loop !48

423:                                              ; preds = %268
  %424 = load ptr, ptr %24, align 8, !tbaa !5
  %425 = load i32, ptr %20, align 4, !tbaa !9
  %426 = sub nsw i32 %425, 1
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %424, i64 %427
  %429 = load double, ptr %428, align 8, !tbaa !33
  %430 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 6
  %431 = load ptr, ptr %430, align 8, !tbaa !40
  %432 = load i32, ptr %19, align 4, !tbaa !9
  %433 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 8
  %434 = load i32, ptr %433, align 8, !tbaa !19
  %435 = mul nsw i32 %432, %434
  %436 = load i32, ptr %21, align 4, !tbaa !9
  %437 = sub nsw i32 %436, 1
  %438 = add nsw i32 %435, %437
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %431, i64 %439
  store double %429, ptr %440, align 8, !tbaa !33
  %441 = load i32, ptr %10, align 4, !tbaa !13
  %442 = icmp eq i32 %441, 1
  br i1 %442, label %443, label %580

443:                                              ; preds = %423
  %444 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 15
  %445 = load i32, ptr %444, align 4, !tbaa !45
  %446 = icmp ne i32 %445, 0
  br i1 %446, label %447, label %580

447:                                              ; preds = %443
  %448 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 15
  %449 = load i32, ptr %448, align 4, !tbaa !45
  %450 = icmp ne i32 %449, 1
  br i1 %450, label %451, label %580

451:                                              ; preds = %447
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %452

452:                                              ; preds = %557, %451
  %453 = load i32, ptr %12, align 4, !tbaa !9
  %454 = load i32, ptr %20, align 4, !tbaa !9
  %455 = sub nsw i32 %454, 1
  %456 = icmp slt i32 %453, %455
  br i1 %456, label %457, label %560

457:                                              ; preds = %452
  %458 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %459 = load ptr, ptr %458, align 8, !tbaa !46
  %460 = load i32, ptr %12, align 4, !tbaa !9
  %461 = load i32, ptr %17, align 4, !tbaa !9
  %462 = load i32, ptr %12, align 4, !tbaa !9
  %463 = mul nsw i32 %461, %462
  %464 = add nsw i32 %460, %463
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %459, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !33
  %468 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %469 = load ptr, ptr %468, align 8, !tbaa !46
  %470 = load i32, ptr %12, align 4, !tbaa !9
  %471 = add nsw i32 1, %470
  %472 = load i32, ptr %17, align 4, !tbaa !9
  %473 = load i32, ptr %12, align 4, !tbaa !9
  %474 = mul nsw i32 %472, %473
  %475 = add nsw i32 %471, %474
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds double, ptr %469, i64 %476
  %478 = load double, ptr %477, align 8, !tbaa !33
  %479 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %480 = load ptr, ptr %479, align 8, !tbaa !46
  %481 = load i32, ptr %12, align 4, !tbaa !9
  %482 = load i32, ptr %17, align 4, !tbaa !9
  %483 = load i32, ptr %12, align 4, !tbaa !9
  %484 = mul nsw i32 %482, %483
  %485 = add nsw i32 %481, %484
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %480, i64 %486
  %488 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %489 = load ptr, ptr %488, align 8, !tbaa !46
  %490 = load i32, ptr %12, align 4, !tbaa !9
  %491 = add nsw i32 1, %490
  %492 = load i32, ptr %17, align 4, !tbaa !9
  %493 = load i32, ptr %12, align 4, !tbaa !9
  %494 = mul nsw i32 %492, %493
  %495 = add nsw i32 %491, %494
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds double, ptr %489, i64 %496
  call void @_ZNK7qpOASES9QProblemB13computeGivensEddRdS1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(800) %28, double noundef %467, double noundef %478, ptr noundef nonnull align 8 dereferenceable(8) %487, ptr noundef nonnull align 8 dereferenceable(8) %497, ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26)
  %498 = load double, ptr %26, align 8, !tbaa !33
  %499 = load double, ptr %25, align 8, !tbaa !33
  %500 = fadd double 1.000000e+00, %499
  %501 = fdiv double %498, %500
  store double %501, ptr %27, align 8, !tbaa !33
  %502 = load i32, ptr %12, align 4, !tbaa !9
  %503 = add nsw i32 1, %502
  store i32 %503, ptr %13, align 4, !tbaa !9
  br label %504

504:                                              ; preds = %553, %457
  %505 = load i32, ptr %13, align 4, !tbaa !9
  %506 = load i32, ptr %20, align 4, !tbaa !9
  %507 = sub nsw i32 %506, 1
  %508 = icmp slt i32 %505, %507
  br i1 %508, label %509, label %556

509:                                              ; preds = %504
  %510 = load double, ptr %25, align 8, !tbaa !33
  %511 = load double, ptr %26, align 8, !tbaa !33
  %512 = load double, ptr %27, align 8, !tbaa !33
  %513 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %514 = load ptr, ptr %513, align 8, !tbaa !46
  %515 = load i32, ptr %12, align 4, !tbaa !9
  %516 = load i32, ptr %17, align 4, !tbaa !9
  %517 = load i32, ptr %13, align 4, !tbaa !9
  %518 = mul nsw i32 %516, %517
  %519 = add nsw i32 %515, %518
  %520 = sext i32 %519 to i64
  %521 = getelementptr inbounds double, ptr %514, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !33
  %523 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %524 = load ptr, ptr %523, align 8, !tbaa !46
  %525 = load i32, ptr %12, align 4, !tbaa !9
  %526 = add nsw i32 1, %525
  %527 = load i32, ptr %17, align 4, !tbaa !9
  %528 = load i32, ptr %13, align 4, !tbaa !9
  %529 = mul nsw i32 %527, %528
  %530 = add nsw i32 %526, %529
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds double, ptr %524, i64 %531
  %533 = load double, ptr %532, align 8, !tbaa !33
  %534 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %535 = load ptr, ptr %534, align 8, !tbaa !46
  %536 = load i32, ptr %12, align 4, !tbaa !9
  %537 = load i32, ptr %17, align 4, !tbaa !9
  %538 = load i32, ptr %13, align 4, !tbaa !9
  %539 = mul nsw i32 %537, %538
  %540 = add nsw i32 %536, %539
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds double, ptr %535, i64 %541
  %543 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %544 = load ptr, ptr %543, align 8, !tbaa !46
  %545 = load i32, ptr %12, align 4, !tbaa !9
  %546 = add nsw i32 1, %545
  %547 = load i32, ptr %17, align 4, !tbaa !9
  %548 = load i32, ptr %13, align 4, !tbaa !9
  %549 = mul nsw i32 %547, %548
  %550 = add nsw i32 %546, %549
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %544, i64 %551
  call void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800) %28, double noundef %510, double noundef %511, double noundef %512, double noundef %522, double noundef %533, ptr noundef nonnull align 8 dereferenceable(8) %542, ptr noundef nonnull align 8 dereferenceable(8) %552)
  br label %553

553:                                              ; preds = %509
  %554 = load i32, ptr %13, align 4, !tbaa !9
  %555 = add nsw i32 %554, 1
  store i32 %555, ptr %13, align 4, !tbaa !9
  br label %504, !llvm.loop !49

556:                                              ; preds = %504
  br label %557

557:                                              ; preds = %556
  %558 = load i32, ptr %12, align 4, !tbaa !9
  %559 = add nsw i32 %558, 1
  store i32 %559, ptr %12, align 4, !tbaa !9
  br label %452, !llvm.loop !50

560:                                              ; preds = %452
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %561

561:                                              ; preds = %576, %560
  %562 = load i32, ptr %12, align 4, !tbaa !9
  %563 = load i32, ptr %20, align 4, !tbaa !9
  %564 = icmp slt i32 %562, %563
  br i1 %564, label %565, label %579

565:                                              ; preds = %561
  %566 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %567 = load ptr, ptr %566, align 8, !tbaa !46
  %568 = load i32, ptr %12, align 4, !tbaa !9
  %569 = load i32, ptr %17, align 4, !tbaa !9
  %570 = load i32, ptr %20, align 4, !tbaa !9
  %571 = sub nsw i32 %570, 1
  %572 = mul nsw i32 %569, %571
  %573 = add nsw i32 %568, %572
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds double, ptr %567, i64 %574
  store double 0.000000e+00, ptr %575, align 8, !tbaa !33
  br label %576

576:                                              ; preds = %565
  %577 = load i32, ptr %12, align 4, !tbaa !9
  %578 = add nsw i32 %577, 1
  store i32 %578, ptr %12, align 4, !tbaa !9
  br label %561, !llvm.loop !51

579:                                              ; preds = %561
  br label %580

580:                                              ; preds = %579, %447, %443, %423
  br label %581

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

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

585:                                              ; preds = %584, %581
  %586 = load i32, ptr %8, align 4, !tbaa !9
  %587 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 25
  %588 = getelementptr inbounds %"struct.qpOASES::TabularOutput", ptr %587, i32 0, i32 2
  store i32 %586, ptr %588, align 8, !tbaa !52
  %589 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %28, i32 0, i32 5
  %590 = load i32, ptr %8, align 4, !tbaa !9
  %591 = load i32, ptr %9, align 4, !tbaa !11
  %592 = call noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %589, i32 noundef %590, i32 noundef %591)
  %593 = icmp ne i32 %592, 0
  br i1 %593, label %594, label %597

594:                                              ; preds = %585
  %595 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %596 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %595, i32 noundef 76, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2971, i32 noundef 1)
  store i32 %596, ptr %6, align 4
  store i32 1, ptr %15, align 4
  br label %598

597:                                              ; preds = %585
  store i32 0, ptr %6, align 4
  store i32 1, ptr %15, align 4
  br label %598

598:                                              ; preds = %597, %594
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %599

599:                                              ; preds = %598, %83, %59, %44, %33
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #8
  %600 = load i32, ptr %6, align 4
  ret i32 %600
}

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

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

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

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

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

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

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

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


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

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

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES8QProblem13addConstraintEiNS_15SubjectToStatusENS_11BooleanTypeES2_(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1, i32 noundef %2, i32 noundef %3, i32 noundef %4) unnamed_addr #7 align 2 {
  %6 = alloca ptr, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = getelementptr inbounds i8, ptr %0, i64 832
  %10 = tail call noundef i32 @_ZNK7qpOASES9SubjectTo9getStatusEi(ptr noundef nonnull align 8 dereferenceable(40) %9, i32 noundef %1)
  %.not = icmp eq i32 %10, 0
  br i1 %.not, label %14, label %11

11:                                               ; preds = %5
  %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 86, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2828, i32 noundef 1)
  br label %.thread

14:                                               ; preds = %5
  %15 = tail call noundef i32 @_ZNK7qpOASES11Constraints5getNCEv(ptr noundef nonnull align 8 dereferenceable(120) %9)
  %16 = tail call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %17 = sub nsw i32 %15, %16
  %18 = tail call noundef i32 @_ZNK7qpOASES11Constraints6getNUCEv(ptr noundef nonnull align 8 dereferenceable(120) %9)
  %19 = icmp eq i32 %17, %18
  br i1 %19, label %20, label %23

20:                                               ; preds = %14
  %21 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %22 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %21, i32 noundef 87, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2831, i32 noundef 1)
  br label %.thread

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

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

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

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

35:                                               ; preds = %32, %29, %26, %23
  %36 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %37 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %36, i32 noundef 9, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2838, i32 noundef 1)
  br label %.thread

38:                                               ; preds = %32
  %39 = icmp eq i32 %3, 1
  %40 = icmp eq i32 %4, 1
  %or.cond = and i1 %39, %40
  br i1 %or.cond, label %41, label %50

41:                                               ; preds = %38
  %42 = load ptr, ptr %0, align 8, !tbaa !5
  %43 = getelementptr inbounds i8, ptr %42, i64 216
  %44 = load ptr, ptr %43, align 8
  %45 = tail call noundef i32 %44(ptr noundef nonnull align 8 dereferenceable(1064) %0, i32 noundef %1, i32 noundef %2)
  switch i32 %45, label %47 [
    i32 0, label %50
    i32 90, label %50
    i32 93, label %.thread
    i32 94, label %.thread
    i32 141, label %46
  ]

46:                                               ; preds = %41
  br label %.thread

47:                                               ; preds = %41
  %48 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %49 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %48, i32 noundef 91, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2867, i32 noundef 1)
  br label %.thread

50:                                               ; preds = %41, %41, %38
  %51 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %52 = tail call noundef i32 @_ZNK7qpOASES9QProblemB6getNFREv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %53 = tail call noundef i32 @_ZNK7qpOASES8QProblem6getNACEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %54 = load ptr, ptr %0, align 8, !tbaa !5
  %55 = getelementptr inbounds i8, ptr %54, i64 56
  %56 = load ptr, ptr %55, align 8
  %57 = tail call noundef i32 %56(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %58 = getelementptr inbounds i8, ptr %0, i64 968
  %59 = load i32, ptr %58, align 8, !tbaa !8
  %60 = sub nsw i32 %59, %53
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #10
  %61 = getelementptr inbounds i8, ptr %0, i64 48
  %62 = tail call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %61)
  %63 = call noundef i32 @_ZNK7qpOASES9Indexlist14getNumberArrayEPPi(ptr noundef nonnull align 8 dereferenceable(36) %62, ptr noundef nonnull %6)
  %64 = zext i32 %52 to i64
  %65 = icmp slt i32 %52, 0
  %66 = shl nuw nsw i64 %64, 3
  %67 = select i1 %65, i64 -1, i64 %66
  %68 = call noalias noundef nonnull ptr @_Znam(i64 noundef %67) #11
  %69 = zext i32 %57 to i64
  %70 = icmp slt i32 %57, 0
  %71 = shl nuw nsw i64 %69, 3
  %72 = select i1 %70, i64 -1, i64 %71
  %73 = call noalias noundef nonnull ptr @_Znam(i64 noundef %72) #11
  %74 = icmp sgt i32 %57, 0
  br i1 %74, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %50
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %73, i8 0, i64 %71, i1 false), !tbaa !27
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %50
  %75 = getelementptr inbounds i8, ptr %0, i64 808
  %76 = load ptr, ptr %75, align 8, !tbaa !28
  %77 = call noundef ptr @_ZN7qpOASES6Bounds7getFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %61)
  %78 = load ptr, ptr %76, align 8, !tbaa !5
  %79 = getelementptr inbounds i8, ptr %78, i64 72
  %80 = load ptr, ptr %79, align 8
  %81 = call noundef i32 %80(ptr noundef nonnull align 8 dereferenceable(12) %76, i32 noundef %1, ptr noundef %77, double noundef 1.000000e+00, ptr noundef nonnull %68)
  %82 = icmp sgt i32 %52, 0
  br i1 %82, label %.lr.ph196, label %._crit_edge197

.lr.ph196:                                        ; preds = %._crit_edge
  %83 = load ptr, ptr %6, align 8, !tbaa !29
  %84 = getelementptr inbounds i8, ptr %0, i64 960
  %85 = load ptr, ptr %84, align 8
  br i1 %74, label %.lr.ph192.us.preheader, label %._crit_edge197

.lr.ph192.us.preheader:                           ; preds = %.lr.ph196
  %86 = sext i32 %51 to i64
  %87 = shl nuw nsw i64 %69, 3
  %scevgep285 = getelementptr i8, ptr %73, i64 %87
  %scevgep286 = getelementptr i8, ptr %85, i64 %87
  %min.iters.check = icmp ugt i32 %57, 3
  %ident.check.not = icmp eq i32 %51, 1
  %or.cond338 = and i1 %min.iters.check, %ident.check.not
  %n.vec = and i64 %69, 2147483644
  %cmp.n = icmp eq i64 %n.vec, %69
  %xtraiter = and i64 %69, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %88 = add nsw i64 %69, -1
  br label %.lr.ph192.us

.lr.ph192.us:                                     ; preds = %.lr.ph192.us.preheader, %._crit_edge193.us
  %indvars.iv226 = phi i64 [ 0, %.lr.ph192.us.preheader ], [ %indvars.iv.next227, %._crit_edge193.us ]
  %89 = getelementptr inbounds i32, ptr %83, i64 %indvars.iv226
  %90 = load i32, ptr %89, align 4, !tbaa !30
  %91 = getelementptr inbounds double, ptr %68, i64 %indvars.iv226
  %92 = load double, ptr %91, align 8, !tbaa !27
  %93 = sext i32 %90 to i64
  %invariant.gep = getelementptr double, ptr %85, i64 %93
  br i1 %or.cond338, label %vector.memcheck, label %scalar.ph.preheader

vector.memcheck:                                  ; preds = %.lr.ph192.us
  %94 = shl nsw i64 %93, 3
  %scevgep287 = getelementptr i8, ptr %scevgep286, i64 %94
  %bound0 = icmp ult ptr %73, %scevgep287
  %bound1 = icmp ult ptr %invariant.gep, %scevgep285
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph.preheader, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %95 = getelementptr double, ptr %invariant.gep, i64 %index
  %96 = getelementptr i8, ptr %95, i64 16
  %wide.load = load <2 x double>, ptr %95, align 8, !tbaa !27, !alias.scope !31
  %wide.load288 = load <2 x double>, ptr %96, align 8, !tbaa !27, !alias.scope !31
  %97 = getelementptr inbounds double, ptr %73, i64 %index
  %98 = getelementptr inbounds i8, ptr %97, i64 16
  %wide.load289 = load <2 x double>, ptr %97, align 8, !tbaa !27, !alias.scope !34, !noalias !31
  %wide.load290 = load <2 x double>, ptr %98, align 8, !tbaa !27, !alias.scope !34, !noalias !31
  %99 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat, <2 x double> %wide.load, <2 x double> %wide.load289)
  %100 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat, <2 x double> %wide.load288, <2 x double> %wide.load290)
  store <2 x double> %99, ptr %97, align 8, !tbaa !27, !alias.scope !34, !noalias !31
  store <2 x double> %100, ptr %98, align 8, !tbaa !27, !alias.scope !34, !noalias !31
  %index.next = add nuw i64 %index, 4
  %101 = icmp eq i64 %index.next, %n.vec
  br i1 %101, label %middle.block, label %vector.body, !llvm.loop !36

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

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

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %102 = mul nsw i64 %indvars.iv.ph, %86
  %gep.prol = getelementptr double, ptr %invariant.gep, i64 %102
  %103 = load double, ptr %gep.prol, align 8, !tbaa !27
  %104 = getelementptr inbounds double, ptr %73, i64 %indvars.iv.ph
  %105 = load double, ptr %104, align 8, !tbaa !27
  %106 = call double @llvm.fmuladd.f64(double %92, double %103, double %105)
  store double %106, ptr %104, align 8, !tbaa !27
  %indvars.iv.next.prol = or disjoint i64 %indvars.iv.ph, 1
  br label %scalar.ph.prol.loopexit

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 ]
  %107 = icmp eq i64 %indvars.iv.ph, %88
  br i1 %107, label %._crit_edge193.us, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.1, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %108 = mul nsw i64 %indvars.iv, %86
  %gep = getelementptr double, ptr %invariant.gep, i64 %108
  %109 = load double, ptr %gep, align 8, !tbaa !27
  %110 = getelementptr inbounds double, ptr %73, i64 %indvars.iv
  %111 = load double, ptr %110, align 8, !tbaa !27
  %112 = call double @llvm.fmuladd.f64(double %92, double %109, double %111)
  store double %112, ptr %110, align 8, !tbaa !27
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %113 = mul nsw i64 %indvars.iv.next, %86
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %113
  %114 = load double, ptr %gep.1, align 8, !tbaa !27
  %115 = getelementptr inbounds double, ptr %73, i64 %indvars.iv.next
  %116 = load double, ptr %115, align 8, !tbaa !27
  %117 = call double @llvm.fmuladd.f64(double %92, double %114, double %116)
  store double %117, ptr %115, align 8, !tbaa !27
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next.1, %69
  br i1 %exitcond.not.1, label %._crit_edge193.us, label %scalar.ph, !llvm.loop !40

._crit_edge193.us:                                ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next227 = add nuw nsw i64 %indvars.iv226, 1
  %exitcond230.not = icmp eq i64 %indvars.iv.next227, %64
  br i1 %exitcond230.not, label %._crit_edge197, label %.lr.ph192.us, !llvm.loop !41

._crit_edge197:                                   ; preds = %._crit_edge193.us, %.lr.ph196, %._crit_edge
  %118 = icmp sgt i32 %53, 0
  br i1 %118, label %.preheader188, label %.loopexit187

.preheader188:                                    ; preds = %._crit_edge197
  %119 = getelementptr inbounds i8, ptr %0, i64 952
  %120 = load ptr, ptr %119, align 8, !tbaa !42
  %121 = load i32, ptr %58, align 8, !tbaa !8
  %122 = mul nsw i32 %121, %53
  %wide.trip.count234 = zext nneg i32 %53 to i64
  %min.iters.check294 = icmp ult i32 %53, 12
  br i1 %min.iters.check294, label %scalar.ph293.preheader, label %vector.scevcheck291

scalar.ph293.preheader:                           ; preds = %middle.block292, %vector.scevcheck291, %.preheader188
  %indvars.iv231.ph = phi i64 [ 0, %vector.scevcheck291 ], [ 0, %.preheader188 ], [ %n.vec297, %middle.block292 ]
  %xtraiter339 = and i64 %wide.trip.count234, 3
  %lcmp.mod340.not = icmp eq i64 %xtraiter339, 0
  br i1 %lcmp.mod340.not, label %scalar.ph293.prol.loopexit, label %scalar.ph293.prol

scalar.ph293.prol:                                ; preds = %scalar.ph293.preheader, %scalar.ph293.prol
  %indvars.iv231.prol = phi i64 [ %indvars.iv.next232.prol, %scalar.ph293.prol ], [ %indvars.iv231.ph, %scalar.ph293.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph293.prol ], [ 0, %scalar.ph293.preheader ]
  %123 = trunc nuw nsw i64 %indvars.iv231.prol to i32
  %124 = add nsw i32 %60, %123
  %125 = add nsw i32 %124, %122
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds double, ptr %120, i64 %126
  store double 0.000000e+00, ptr %127, align 8, !tbaa !27
  %indvars.iv.next232.prol = add nuw nsw i64 %indvars.iv231.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter339
  br i1 %prol.iter.cmp.not, label %scalar.ph293.prol.loopexit, label %scalar.ph293.prol, !llvm.loop !43

scalar.ph293.prol.loopexit:                       ; preds = %scalar.ph293.prol, %scalar.ph293.preheader
  %indvars.iv231.unr = phi i64 [ %indvars.iv231.ph, %scalar.ph293.preheader ], [ %indvars.iv.next232.prol, %scalar.ph293.prol ]
  %128 = sub nsw i64 %indvars.iv231.ph, %wide.trip.count234
  %129 = icmp ugt i64 %128, -4
  br i1 %129, label %.preheader186, label %scalar.ph293

vector.scevcheck291:                              ; preds = %.preheader188
  %130 = add nsw i64 %wide.trip.count234, -1
  %131 = add i32 %121, -1
  %132 = mul i32 %53, %131
  %133 = add i32 %59, %132
  %134 = trunc nsw i64 %130 to i32
  %135 = add i32 %133, %134
  %136 = icmp slt i32 %135, %133
  %137 = icmp ugt i64 %130, 4294967295
  %138 = or i1 %136, %137
  br i1 %138, label %scalar.ph293.preheader, label %vector.ph295

vector.ph295:                                     ; preds = %vector.scevcheck291
  %n.vec297 = and i64 %wide.trip.count234, 2147483644
  br label %vector.body299

vector.body299:                                   ; preds = %vector.body299, %vector.ph295
  %index300 = phi i64 [ 0, %vector.ph295 ], [ %index.next301, %vector.body299 ]
  %139 = trunc i64 %index300 to i32
  %140 = add nsw i32 %60, %139
  %141 = add nsw i32 %140, %122
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds double, ptr %120, i64 %142
  %144 = getelementptr inbounds i8, ptr %143, i64 16
  store <2 x double> zeroinitializer, ptr %143, align 8, !tbaa !27
  store <2 x double> zeroinitializer, ptr %144, align 8, !tbaa !27
  %index.next301 = add nuw i64 %index300, 4
  %145 = icmp eq i64 %index.next301, %n.vec297
  br i1 %145, label %middle.block292, label %vector.body299, !llvm.loop !45

middle.block292:                                  ; preds = %vector.body299
  %cmp.n302 = icmp eq i64 %n.vec297, %wide.trip.count234
  br i1 %cmp.n302, label %.preheader186, label %scalar.ph293.preheader

.preheader186:                                    ; preds = %scalar.ph293.prol.loopexit, %scalar.ph293, %middle.block292
  br i1 %82, label %.lr.ph201.us.preheader, label %.loopexit187

.lr.ph201.us.preheader:                           ; preds = %.preheader186
  %146 = load ptr, ptr %6, align 8, !tbaa !29
  %147 = getelementptr inbounds i8, ptr %0, i64 960
  %148 = load ptr, ptr %147, align 8
  %149 = load ptr, ptr %119, align 8
  %150 = load i32, ptr %58, align 8
  %151 = mul nsw i32 %150, %53
  %152 = sext i32 %57 to i64
  %153 = sext i32 %51 to i64
  %154 = add nsw i64 %wide.trip.count234, -1
  %155 = add i32 %150, -1
  %156 = mul i32 %53, %155
  %157 = add i32 %59, %156
  %158 = shl nuw nsw i64 %64, 3
  %scevgep306 = getelementptr i8, ptr %68, i64 %158
  %159 = sext i32 %157 to i64
  %160 = shl nsw i64 %159, 3
  %scevgep307 = getelementptr i8, ptr %149, i64 %160
  %161 = shl nuw nsw i64 %wide.trip.count234, 3
  %162 = getelementptr i8, ptr %149, i64 %160
  %scevgep308 = getelementptr i8, ptr %162, i64 %161
  %163 = shl nsw i64 %152, 3
  %scevgep309 = getelementptr i8, ptr %148, i64 %163
  %164 = getelementptr i8, ptr %148, i64 %163
  %scevgep311 = getelementptr i8, ptr %164, i64 %161
  %min.iters.check321 = icmp ult i32 %53, 8
  %ident.check304 = icmp ne i32 %51, 1
  %165 = trunc nsw i64 %154 to i32
  %166 = add i32 %157, %165
  %167 = icmp slt i32 %166, %157
  %168 = icmp ugt i64 %154, 4294967295
  %169 = or i1 %167, %168
  %170 = or i1 %ident.check304, %169
  %bound0313 = icmp ult ptr %68, %scevgep308
  %bound1314 = icmp ult ptr %scevgep307, %scevgep306
  %found.conflict315 = and i1 %bound0313, %bound1314
  %n.vec324 = and i64 %wide.trip.count234, 2147483644
  %cmp.n337 = icmp eq i64 %n.vec324, %wide.trip.count234
  %xtraiter341 = and i64 %wide.trip.count234, 1
  %lcmp.mod342.not = icmp eq i64 %xtraiter341, 0
  %171 = add nsw i64 %wide.trip.count234, -1
  br label %.lr.ph201.us

.lr.ph201.us:                                     ; preds = %.lr.ph201.us.preheader, %._crit_edge202.us
  %indvars.iv241 = phi i64 [ 0, %.lr.ph201.us.preheader ], [ %indvars.iv.next242, %._crit_edge202.us ]
  %172 = getelementptr inbounds i32, ptr %146, i64 %indvars.iv241
  %173 = load i32, ptr %172, align 4, !tbaa !30
  %174 = getelementptr inbounds double, ptr %68, i64 %indvars.iv241
  %175 = sext i32 %173 to i64
  %invariant.gep283 = getelementptr double, ptr %148, i64 %175
  %brmerge = select i1 %min.iters.check321, i1 true, i1 %170
  br i1 %brmerge, label %scalar.ph320.preheader, label %vector.memcheck305

vector.memcheck305:                               ; preds = %.lr.ph201.us
  %176 = shl nsw i64 %175, 3
  %scevgep310 = getelementptr i8, ptr %scevgep309, i64 %176
  %scevgep312 = getelementptr i8, ptr %scevgep311, i64 %176
  %bound0316 = icmp ult ptr %scevgep310, %scevgep308
  %bound1317 = icmp ult ptr %scevgep307, %scevgep312
  %found.conflict318 = and i1 %bound0316, %bound1317
  %conflict.rdx = or i1 %found.conflict315, %found.conflict318
  br i1 %conflict.rdx, label %scalar.ph320.preheader, label %vector.ph322

vector.ph322:                                     ; preds = %vector.memcheck305
  %177 = load double, ptr %174, align 8, !tbaa !27, !alias.scope !46, !noalias !49
  %broadcast.splatinsert334 = insertelement <2 x double> poison, double %177, i64 0
  %broadcast.splat335 = shufflevector <2 x double> %broadcast.splatinsert334, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep344 = getelementptr double, ptr %invariant.gep283, i64 %152
  br label %vector.body326

vector.body326:                                   ; preds = %vector.body326, %vector.ph322
  %index327 = phi i64 [ 0, %vector.ph322 ], [ %index.next336, %vector.body326 ]
  %178 = trunc i64 %index327 to i32
  %gep345 = getelementptr double, ptr %invariant.gep344, i64 %index327
  %179 = getelementptr i8, ptr %gep345, i64 16
  %wide.load328 = load <2 x double>, ptr %gep345, align 8, !tbaa !27, !alias.scope !51, !noalias !49
  %wide.load329 = load <2 x double>, ptr %179, align 8, !tbaa !27, !alias.scope !51, !noalias !49
  %180 = add nsw i32 %60, %178
  %181 = add nsw i32 %180, %151
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds double, ptr %149, i64 %182
  %184 = getelementptr inbounds i8, ptr %183, i64 16
  %wide.load330 = load <2 x double>, ptr %183, align 8, !tbaa !27, !alias.scope !49
  %wide.load331 = load <2 x double>, ptr %184, align 8, !tbaa !27, !alias.scope !49
  %185 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat335, <2 x double> %wide.load328, <2 x double> %wide.load330)
  %186 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat335, <2 x double> %wide.load329, <2 x double> %wide.load331)
  store <2 x double> %185, ptr %183, align 8, !tbaa !27, !alias.scope !49
  store <2 x double> %186, ptr %184, align 8, !tbaa !27, !alias.scope !49
  %index.next336 = add nuw i64 %index327, 4
  %187 = icmp eq i64 %index.next336, %n.vec324
  br i1 %187, label %middle.block319, label %vector.body326, !llvm.loop !53

middle.block319:                                  ; preds = %vector.body326
  br i1 %cmp.n337, label %._crit_edge202.us, label %scalar.ph320.preheader

scalar.ph320.preheader:                           ; preds = %.lr.ph201.us, %middle.block319, %vector.memcheck305
  %indvars.iv236.ph = phi i64 [ 0, %vector.memcheck305 ], [ 0, %.lr.ph201.us ], [ %n.vec324, %middle.block319 ]
  br i1 %lcmp.mod342.not, label %scalar.ph320.prol.loopexit, label %scalar.ph320.prol

scalar.ph320.prol:                                ; preds = %scalar.ph320.preheader
  %188 = load double, ptr %174, align 8, !tbaa !27
  %189 = add nsw i64 %indvars.iv236.ph, %152
  %190 = mul nsw i64 %189, %153
  %gep284.prol = getelementptr double, ptr %invariant.gep283, i64 %190
  %191 = load double, ptr %gep284.prol, align 8, !tbaa !27
  %192 = trunc nuw nsw i64 %indvars.iv236.ph to i32
  %193 = add nsw i32 %60, %192
  %194 = add nsw i32 %193, %151
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds double, ptr %149, i64 %195
  %197 = load double, ptr %196, align 8, !tbaa !27
  %198 = call double @llvm.fmuladd.f64(double %188, double %191, double %197)
  store double %198, ptr %196, align 8, !tbaa !27
  %indvars.iv.next237.prol = or disjoint i64 %indvars.iv236.ph, 1
  br label %scalar.ph320.prol.loopexit

scalar.ph320.prol.loopexit:                       ; preds = %scalar.ph320.prol, %scalar.ph320.preheader
  %indvars.iv236.unr = phi i64 [ %indvars.iv236.ph, %scalar.ph320.preheader ], [ %indvars.iv.next237.prol, %scalar.ph320.prol ]
  %199 = icmp eq i64 %indvars.iv236.ph, %171
  br i1 %199, label %._crit_edge202.us, label %scalar.ph320

scalar.ph320:                                     ; preds = %scalar.ph320.prol.loopexit, %scalar.ph320
  %indvars.iv236 = phi i64 [ %indvars.iv.next237.1, %scalar.ph320 ], [ %indvars.iv236.unr, %scalar.ph320.prol.loopexit ]
  %200 = load double, ptr %174, align 8, !tbaa !27
  %201 = add nsw i64 %indvars.iv236, %152
  %202 = mul nsw i64 %201, %153
  %gep284 = getelementptr double, ptr %invariant.gep283, i64 %202
  %203 = load double, ptr %gep284, align 8, !tbaa !27
  %204 = trunc nuw nsw i64 %indvars.iv236 to i32
  %205 = add nsw i32 %60, %204
  %206 = add nsw i32 %205, %151
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds double, ptr %149, i64 %207
  %209 = load double, ptr %208, align 8, !tbaa !27
  %210 = call double @llvm.fmuladd.f64(double %200, double %203, double %209)
  store double %210, ptr %208, align 8, !tbaa !27
  %indvars.iv.next237 = add nuw nsw i64 %indvars.iv236, 1
  %211 = load double, ptr %174, align 8, !tbaa !27
  %212 = add nsw i64 %indvars.iv.next237, %152
  %213 = mul nsw i64 %212, %153
  %gep284.1 = getelementptr double, ptr %invariant.gep283, i64 %213
  %214 = load double, ptr %gep284.1, align 8, !tbaa !27
  %215 = trunc nuw nsw i64 %indvars.iv.next237 to i32
  %216 = add nsw i32 %60, %215
  %217 = add nsw i32 %216, %151
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds double, ptr %149, i64 %218
  %220 = load double, ptr %219, align 8, !tbaa !27
  %221 = call double @llvm.fmuladd.f64(double %211, double %214, double %220)
  store double %221, ptr %219, align 8, !tbaa !27
  %indvars.iv.next237.1 = add nuw nsw i64 %indvars.iv236, 2
  %exitcond240.not.1 = icmp eq i64 %indvars.iv.next237.1, %wide.trip.count234
  br i1 %exitcond240.not.1, label %._crit_edge202.us, label %scalar.ph320, !llvm.loop !54

._crit_edge202.us:                                ; preds = %scalar.ph320.prol.loopexit, %scalar.ph320, %middle.block319
  %indvars.iv.next242 = add nuw nsw i64 %indvars.iv241, 1
  %exitcond245.not = icmp eq i64 %indvars.iv.next242, %64
  br i1 %exitcond245.not, label %.loopexit187, label %.lr.ph201.us, !llvm.loop !55

scalar.ph293:                                     ; preds = %scalar.ph293.prol.loopexit, %scalar.ph293
  %indvars.iv231 = phi i64 [ %indvars.iv.next232.3, %scalar.ph293 ], [ %indvars.iv231.unr, %scalar.ph293.prol.loopexit ]
  %222 = trunc nuw nsw i64 %indvars.iv231 to i32
  %223 = add nsw i32 %60, %222
  %224 = add nsw i32 %223, %122
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds double, ptr %120, i64 %225
  store double 0.000000e+00, ptr %226, align 8, !tbaa !27
  %227 = trunc i64 %indvars.iv231 to i32
  %228 = add i32 %227, 1
  %229 = add nsw i32 %60, %228
  %230 = add nsw i32 %229, %122
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds double, ptr %120, i64 %231
  store double 0.000000e+00, ptr %232, align 8, !tbaa !27
  %233 = trunc i64 %indvars.iv231 to i32
  %234 = add i32 %233, 2
  %235 = add nsw i32 %60, %234
  %236 = add nsw i32 %235, %122
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %120, i64 %237
  store double 0.000000e+00, ptr %238, align 8, !tbaa !27
  %239 = trunc i64 %indvars.iv231 to i32
  %240 = add i32 %239, 3
  %241 = add nsw i32 %60, %240
  %242 = add nsw i32 %241, %122
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %120, i64 %243
  store double 0.000000e+00, ptr %244, align 8, !tbaa !27
  %indvars.iv.next232.3 = add nuw nsw i64 %indvars.iv231, 4
  %exitcond235.not.3 = icmp eq i64 %indvars.iv.next232.3, %wide.trip.count234
  br i1 %exitcond235.not.3, label %.preheader186, label %scalar.ph293, !llvm.loop !56

.loopexit187:                                     ; preds = %._crit_edge202.us, %.preheader186, %._crit_edge197
  call void @_ZdaPv(ptr noundef nonnull %68) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #10
  br i1 %74, label %.preheader185, label %.loopexit

.preheader185:                                    ; preds = %.loopexit187
  %245 = add nsw i32 %57, -1
  %.not220 = icmp eq i32 %57, 1
  br i1 %.not220, label %._crit_edge212, label %.lr.ph211

.lr.ph211:                                        ; preds = %.preheader185
  %246 = getelementptr inbounds i8, ptr %0, i64 960
  %247 = getelementptr inbounds i8, ptr %0, i64 220
  %248 = getelementptr inbounds i8, ptr %0, i64 168
  %249 = sext i32 %51 to i64
  %wide.trip.count265 = zext nneg i32 %245 to i64
  br label %250

250:                                              ; preds = %.lr.ph211, %.loopexit184
  %indvars.iv260 = phi i64 [ 0, %.lr.ph211 ], [ %indvars.iv.next261, %.loopexit184 ]
  %indvars.iv258 = phi i64 [ 2, %.lr.ph211 ], [ %indvars.iv.next259, %.loopexit184 ]
  %indvars.iv.next261 = add nuw nsw i64 %indvars.iv260, 1
  %251 = getelementptr inbounds double, ptr %73, i64 %indvars.iv.next261
  %252 = load double, ptr %251, align 8, !tbaa !27
  %253 = getelementptr inbounds double, ptr %73, i64 %indvars.iv260
  %254 = load double, ptr %253, align 8, !tbaa !27
  call void @_ZNK7qpOASES9QProblemB13computeGivensEddRdS1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(800) %0, double noundef %252, double noundef %254, ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8)
  %255 = load double, ptr %8, align 8, !tbaa !27
  %256 = load double, ptr %7, align 8, !tbaa !27
  %257 = fadd double %256, 1.000000e+00
  %258 = fdiv double %255, %257
  br i1 %82, label %.lr.ph207, label %._crit_edge208

.lr.ph207:                                        ; preds = %250
  %259 = mul nsw i64 %indvars.iv.next261, %249
  %260 = mul nsw i64 %indvars.iv260, %249
  br label %261

261:                                              ; preds = %.lr.ph207, %261
  %indvars.iv246 = phi i64 [ 0, %.lr.ph207 ], [ %indvars.iv.next247, %261 ]
  %262 = load ptr, ptr %6, align 8, !tbaa !29
  %263 = getelementptr inbounds i32, ptr %262, i64 %indvars.iv246
  %264 = load i32, ptr %263, align 4, !tbaa !30
  %265 = load double, ptr %7, align 8, !tbaa !27
  %266 = load double, ptr %8, align 8, !tbaa !27
  %267 = load ptr, ptr %246, align 8, !tbaa !57
  %268 = sext i32 %264 to i64
  %269 = getelementptr double, ptr %267, i64 %259
  %270 = getelementptr double, ptr %269, i64 %268
  %271 = load double, ptr %270, align 8, !tbaa !27
  %272 = getelementptr double, ptr %267, i64 %260
  %273 = getelementptr double, ptr %272, i64 %268
  %274 = load double, ptr %273, align 8, !tbaa !27
  call void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800) %0, double noundef %265, double noundef %266, double noundef %258, double noundef %271, double noundef %274, ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull align 8 dereferenceable(8) %273)
  %indvars.iv.next247 = add nuw nsw i64 %indvars.iv246, 1
  %exitcond250.not = icmp eq i64 %indvars.iv.next247, %64
  br i1 %exitcond250.not, label %._crit_edge208, label %261, !llvm.loop !58

._crit_edge208:                                   ; preds = %261, %250
  %275 = load i32, ptr %247, align 4
  %switch = icmp ugt i32 %275, 1
  %or.cond174.not = select i1 %39, i1 %switch, i1 false
  br i1 %or.cond174.not, label %.preheader183, label %.loopexit184

.preheader183:                                    ; preds = %._crit_edge208
  %276 = mul nsw i64 %indvars.iv.next261, %249
  %277 = mul nsw i64 %indvars.iv260, %249
  br label %278

278:                                              ; preds = %.preheader183, %278
  %indvars.iv251 = phi i64 [ 0, %.preheader183 ], [ %indvars.iv.next252, %278 ]
  %279 = load double, ptr %7, align 8, !tbaa !27
  %280 = load double, ptr %8, align 8, !tbaa !27
  %281 = load ptr, ptr %248, align 8, !tbaa !59
  %282 = getelementptr double, ptr %281, i64 %indvars.iv251
  %283 = getelementptr double, ptr %282, i64 %276
  %284 = load double, ptr %283, align 8, !tbaa !27
  %285 = getelementptr double, ptr %281, i64 %indvars.iv251
  %286 = getelementptr double, ptr %285, i64 %277
  %287 = load double, ptr %286, align 8, !tbaa !27
  call void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800) %0, double noundef %279, double noundef %280, double noundef %258, double noundef %284, double noundef %287, ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef nonnull align 8 dereferenceable(8) %286)
  %indvars.iv.next252 = add nuw nsw i64 %indvars.iv251, 1
  %exitcond257 = icmp eq i64 %indvars.iv.next252, %indvars.iv258
  br i1 %exitcond257, label %.loopexit184, label %278, !llvm.loop !60

.loopexit184:                                     ; preds = %278, %._crit_edge208
  %indvars.iv.next259 = add nuw nsw i64 %indvars.iv258, 1
  %exitcond266.not = icmp eq i64 %indvars.iv.next261, %wide.trip.count265
  br i1 %exitcond266.not, label %._crit_edge212, label %250, !llvm.loop !61

._crit_edge212:                                   ; preds = %.loopexit184, %.preheader185
  %.pre-phi = phi i64 [ 0, %.preheader185 ], [ %wide.trip.count265, %.loopexit184 ]
  %288 = getelementptr inbounds double, ptr %73, i64 %.pre-phi
  %289 = load double, ptr %288, align 8, !tbaa !27
  %290 = getelementptr inbounds i8, ptr %0, i64 952
  %291 = load ptr, ptr %290, align 8, !tbaa !42
  %292 = load i32, ptr %58, align 8, !tbaa !8
  %293 = mul nsw i32 %292, %53
  %294 = add nsw i32 %60, -1
  %295 = add nsw i32 %294, %293
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %291, i64 %296
  store double %289, ptr %297, align 8, !tbaa !27
  %298 = getelementptr inbounds i8, ptr %0, i64 220
  %299 = load i32, ptr %298, align 4
  %switch175 = icmp ugt i32 %299, 1
  %or.cond178.not = select i1 %39, i1 %switch175, i1 false
  br i1 %or.cond178.not, label %.preheader182, label %.loopexit

.preheader182:                                    ; preds = %._crit_edge212
  br i1 %.not220, label %.lr.ph219, label %.lr.ph217

.lr.ph217:                                        ; preds = %.preheader182
  %300 = getelementptr inbounds i8, ptr %0, i64 168
  %301 = sext i32 %51 to i64
  %302 = sext i32 %245 to i64
  %smax = call i32 @llvm.smax.i32(i32 %245, i32 1)
  %wide.trip.count277 = zext nneg i32 %smax to i64
  br label %310

.loopexit181:                                     ; preds = %.lr.ph215, %310
  %indvars.iv.next268 = add nuw nsw i64 %indvars.iv267, 1
  %exitcond278.not = icmp eq i64 %indvars.iv.next275, %wide.trip.count277
  br i1 %exitcond278.not, label %.lr.ph219, label %310, !llvm.loop !62

.lr.ph219:                                        ; preds = %.loopexit181, %.preheader182
  %303 = getelementptr inbounds i8, ptr %0, i64 168
  %304 = load ptr, ptr %303, align 8, !tbaa !59
  %305 = mul nsw i32 %245, %51
  %306 = sext i32 %305 to i64
  %307 = shl nsw i64 %306, 3
  %scevgep = getelementptr i8, ptr %304, i64 %307
  %smax279 = call i32 @llvm.smax.i32(i32 %57, i32 1)
  %308 = zext nneg i32 %smax279 to i64
  %309 = shl nuw nsw i64 %308, 3
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i8 0, i64 %309, i1 false), !tbaa !27
  br label %.loopexit

310:                                              ; preds = %.lr.ph217, %.loopexit181
  %indvars.iv274 = phi i64 [ 0, %.lr.ph217 ], [ %indvars.iv.next275, %.loopexit181 ]
  %indvars.iv267 = phi i64 [ 1, %.lr.ph217 ], [ %indvars.iv.next268, %.loopexit181 ]
  %indvars276 = trunc i64 %indvars.iv274 to i32
  %311 = load ptr, ptr %300, align 8, !tbaa !59
  %312 = mul nsw i64 %indvars.iv274, %301
  %313 = mul nsw i32 %51, %indvars276
  %314 = sext i32 %313 to i64
  %315 = getelementptr double, ptr %311, i64 %indvars.iv274
  %316 = getelementptr double, ptr %315, i64 %314
  %317 = load double, ptr %316, align 8, !tbaa !27
  %indvars.iv.next275 = add nuw nsw i64 %indvars.iv274, 1
  %318 = getelementptr double, ptr %311, i64 %indvars.iv.next275
  %319 = getelementptr double, ptr %318, i64 %312
  %320 = load double, ptr %319, align 8, !tbaa !27
  call void @_ZNK7qpOASES9QProblemB13computeGivensEddRdS1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(800) %0, double noundef %317, double noundef %320, ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef nonnull align 8 dereferenceable(8) %319, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8)
  %321 = load double, ptr %8, align 8, !tbaa !27
  %322 = load double, ptr %7, align 8, !tbaa !27
  %323 = fadd double %322, 1.000000e+00
  %324 = fdiv double %321, %323
  %325 = icmp slt i64 %indvars.iv.next275, %302
  br i1 %325, label %.lr.ph215, label %.loopexit181

.lr.ph215:                                        ; preds = %310, %.lr.ph215
  %indvars.iv269 = phi i64 [ %indvars.iv.next270, %.lr.ph215 ], [ %indvars.iv267, %310 ]
  %326 = load double, ptr %7, align 8, !tbaa !27
  %327 = load double, ptr %8, align 8, !tbaa !27
  %328 = load ptr, ptr %300, align 8, !tbaa !59
  %329 = mul nsw i64 %indvars.iv269, %301
  %330 = getelementptr double, ptr %328, i64 %329
  %331 = getelementptr double, ptr %330, i64 %indvars.iv274
  %332 = load double, ptr %331, align 8, !tbaa !27
  %333 = getelementptr double, ptr %328, i64 %329
  %334 = getelementptr double, ptr %333, i64 %indvars.iv.next275
  %335 = load double, ptr %334, align 8, !tbaa !27
  call void @_ZNK7qpOASES9QProblemB11applyGivensEdddddRdS1_(ptr noundef nonnull align 8 dereferenceable(800) %0, double noundef %326, double noundef %327, double noundef %324, double noundef %332, double noundef %335, ptr noundef nonnull align 8 dereferenceable(8) %331, ptr noundef nonnull align 8 dereferenceable(8) %334)
  %indvars.iv.next270 = add nuw nsw i64 %indvars.iv269, 1
  %exitcond273.not = icmp eq i64 %indvars.iv.next270, %.pre-phi
  br i1 %exitcond273.not, label %.loopexit181, label %.lr.ph215, !llvm.loop !63

.loopexit:                                        ; preds = %.lr.ph219, %.loopexit187, %._crit_edge212
  call void @_ZdaPv(ptr noundef nonnull %73) #12
  %336 = getelementptr inbounds i8, ptr %0, i64 776
  store i32 %1, ptr %336, align 8, !tbaa !64
  %337 = call noundef i32 @_ZN7qpOASES11Constraints20moveInactiveToActiveEiNS_15SubjectToStatusE(ptr noundef nonnull align 8 dereferenceable(120) %9, i32 noundef %1, i32 noundef %2)
  %.not168 = icmp eq i32 %337, 0
  br i1 %.not168, label %341, label %338

338:                                              ; preds = %.loopexit
  %339 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %340 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %339, i32 noundef 76, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2971, i32 noundef 1)
  br label %341

341:                                              ; preds = %.loopexit, %338
  %.1 = phi i32 [ %340, %338 ], [ 0, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #10
  br label %.thread

.thread:                                          ; preds = %41, %41, %46, %47, %341, %35, %20, %11
  %.2 = phi i32 [ %13, %11 ], [ %22, %20 ], [ %37, %35 ], [ %.1, %341 ], [ 77, %41 ], [ 77, %41 ], [ 0, %46 ], [ %49, %47 ]
  ret i32 %.2
}

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

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

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

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

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

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

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

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

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

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

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


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