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

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

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

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

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

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() #1

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

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

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

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

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

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

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

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

49:                                               ; preds = %10
  %50 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %51 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %50, i32 noundef 29, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 460, i32 noundef 1)
  store i32 %51, ptr %11, align 4
  store i32 1, ptr %28, align 4
  br label %629

52:                                               ; preds = %10
  %53 = load ptr, ptr %20, align 8, !tbaa !5
  %54 = icmp ne ptr %53, null
  br i1 %54, label %58, label %55

55:                                               ; preds = %52
  %56 = load ptr, ptr %21, align 8, !tbaa !5
  %57 = icmp ne ptr %56, null
  br i1 %57, label %58, label %106

58:                                               ; preds = %55, %52
  %59 = load ptr, ptr %19, align 8, !tbaa !5
  %60 = icmp ne ptr %59, null
  br i1 %60, label %61, label %63

61:                                               ; preds = %58
  %62 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  store double %62, ptr %26, align 8, !tbaa !11
  br label %63

63:                                               ; preds = %61, %58
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %64 = load ptr, ptr %20, align 8, !tbaa !5
  %65 = icmp ne ptr %64, null
  br i1 %65, label %66, label %68

66:                                               ; preds = %63
  %67 = load ptr, ptr %20, align 8, !tbaa !5
  br label %70

68:                                               ; preds = %63
  %69 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 6
  br label %70

70:                                               ; preds = %68, %66
  %71 = phi ptr [ %67, %66 ], [ %69, %68 ]
  store ptr %71, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %72 = load ptr, ptr %21, align 8, !tbaa !5
  %73 = icmp ne ptr %72, null
  br i1 %73, label %74, label %76

74:                                               ; preds = %70
  %75 = load ptr, ptr %21, align 8, !tbaa !5
  br label %78

76:                                               ; preds = %70
  %77 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %44, i32 0, i32 5
  br label %78

78:                                               ; preds = %76, %74
  %79 = phi ptr [ %75, %74 ], [ %77, %76 ]
  store ptr %79, ptr %30, align 8, !tbaa !5
  %80 = load ptr, ptr %29, align 8, !tbaa !5
  %81 = load ptr, ptr %30, align 8, !tbaa !5
  %82 = load ptr, ptr %44, align 8, !tbaa !13
  %83 = getelementptr inbounds ptr, ptr %82, i64 35
  %84 = load ptr, ptr %83, align 8
  %85 = call noundef i32 %84(ptr noundef nonnull align 8 dereferenceable(1064) %44, ptr noundef %80, ptr noundef %81)
  %86 = icmp ne i32 %85, 0
  br i1 %86, label %87, label %90

87:                                               ; preds = %78
  %88 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %89 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %88, i32 noundef 43, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 473, i32 noundef 1)
  store i32 %89, ptr %11, align 4
  store i32 1, ptr %28, align 4
  br label %103

90:                                               ; preds = %78
  %91 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 12
  store i32 2, ptr %91, align 8, !tbaa !15
  %92 = load ptr, ptr %19, align 8, !tbaa !5
  %93 = icmp ne ptr %92, null
  br i1 %93, label %94, label %102

94:                                               ; preds = %90
  %95 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %96 = load double, ptr %26, align 8, !tbaa !11
  %97 = fsub double %95, %96
  store double %97, ptr %27, align 8, !tbaa !11
  %98 = load double, ptr %27, align 8, !tbaa !11
  %99 = load ptr, ptr %19, align 8, !tbaa !5
  %100 = load double, ptr %99, align 8, !tbaa !11
  %101 = fsub double %100, %98
  store double %101, ptr %99, align 8, !tbaa !11
  br label %102

102:                                              ; preds = %94, %90
  store i32 0, ptr %28, align 4
  br label %103

103:                                              ; preds = %102, %87
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  %104 = load i32, ptr %28, align 4
  switch i32 %104, label %629 [
    i32 0, label %105
  ]

105:                                              ; preds = %103
  br label %106

106:                                              ; preds = %105, %55
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #8
  store i32 0, ptr %31, align 4, !tbaa !29
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = load ptr, ptr %15, align 8, !tbaa !5
  %109 = load ptr, ptr %16, align 8, !tbaa !5
  %110 = load ptr, ptr %17, align 8, !tbaa !5
  %111 = call noundef i32 @_ZNK7qpOASES8QProblem19areBoundsConsistentEPKdS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(1064) %44, ptr noundef %107, ptr noundef %108, ptr noundef %109, ptr noundef %110)
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %113, label %116

113:                                              ; preds = %106
  %114 = load i32, ptr %31, align 4, !tbaa !29
  %115 = call noundef i32 @_ZN7qpOASES9QProblemB20setInfeasibilityFlagENS_11returnValueENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %44, i32 noundef %114, i32 noundef 1)
  store i32 %115, ptr %11, align 4
  store i32 1, ptr %28, align 4
  br label %628

116:                                              ; preds = %106
  %117 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 17
  %118 = load i32, ptr %117, align 8, !tbaa !31
  %119 = add i32 %118, 1
  store i32 %119, ptr %117, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #8
  %120 = load ptr, ptr %18, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  store i32 %121, ptr %32, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  store i32 0, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  store double 1.000000e+20, ptr %34, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %122 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 23
  %123 = getelementptr inbounds %"class.qpOASES::Options", ptr %122, i32 0, i32 19
  %124 = load double, ptr %123, align 8, !tbaa !32
  store double %124, ptr %37, align 8, !tbaa !11
  %125 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 8
  %126 = load i32, ptr %125, align 8, !tbaa !33
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %140

128:                                              ; preds = %116
  %129 = load ptr, ptr %44, align 8, !tbaa !13
  %130 = getelementptr inbounds ptr, ptr %129, i64 13
  %131 = load ptr, ptr %130, align 8
  %132 = call noundef i32 %131(ptr noundef nonnull align 8 dereferenceable(1064) %44)
  store i32 %132, ptr %31, align 4, !tbaa !29
  %133 = load i32, ptr %31, align 4, !tbaa !29
  %134 = icmp ne i32 %133, 0
  br i1 %134, label %135, label %139

135:                                              ; preds = %128
  %136 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %137 = load i32, ptr %31, align 4, !tbaa !29
  %138 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %136, i32 noundef %137, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 508, i32 noundef 1)
  store i32 %138, ptr %11, align 4
  store i32 1, ptr %28, align 4
  br label %627

139:                                              ; preds = %128
  br label %140

140:                                              ; preds = %139, %116
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #8
  store i32 1, ptr %38, align 4, !tbaa !34
  %141 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 23
  %142 = getelementptr inbounds %"class.qpOASES::Options", ptr %141, i32 0, i32 2
  %143 = load i32, ptr %142, align 8, !tbaa !35
  %144 = icmp eq i32 %143, 0
  br i1 %144, label %145, label %155

145:                                              ; preds = %140
  %146 = load ptr, ptr %13, align 8, !tbaa !5
  %147 = load ptr, ptr %14, align 8, !tbaa !5
  %148 = load ptr, ptr %15, align 8, !tbaa !5
  %149 = load ptr, ptr %16, align 8, !tbaa !5
  %150 = load ptr, ptr %17, align 8, !tbaa !5
  %151 = load ptr, ptr %18, align 8, !tbaa !5
  %152 = load ptr, ptr %19, align 8, !tbaa !5
  %153 = load i32, ptr %38, align 4, !tbaa !34
  %154 = call noundef i32 @_ZN7qpOASES8QProblem18solveRegularisedQPEPKdS2_S2_S2_S2_RiPdiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1064) %44, ptr noundef %146, ptr noundef %147, ptr noundef %148, ptr noundef %149, ptr noundef %150, ptr noundef nonnull align 4 dereferenceable(4) %151, ptr noundef %152, i32 noundef 0, i32 noundef %153)
  store i32 %154, ptr %31, align 4, !tbaa !29
  br label %616

155:                                              ; preds = %140
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %156 = load i32, ptr %24, align 4, !tbaa !9
  %157 = sext i32 %156 to i64
  %158 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %157, i64 8)
  %159 = extractvalue { i64, i1 } %158, 1
  %160 = extractvalue { i64, i1 } %158, 0
  %161 = select i1 %159, i64 -1, i64 %160
  %162 = call noalias noundef nonnull ptr @_Znam(i64 noundef %161) #9
  store ptr %162, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %163 = load i32, ptr %24, align 4, !tbaa !9
  %164 = sext i32 %163 to i64
  %165 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %164, i64 8)
  %166 = extractvalue { i64, i1 } %165, 1
  %167 = extractvalue { i64, i1 } %165, 0
  %168 = select i1 %166, i64 -1, i64 %167
  %169 = call noalias noundef nonnull ptr @_Znam(i64 noundef %168) #9
  store ptr %169, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %170 = load i32, ptr %25, align 4, !tbaa !9
  %171 = sext i32 %170 to i64
  %172 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %171, i64 8)
  %173 = extractvalue { i64, i1 } %172, 1
  %174 = extractvalue { i64, i1 } %172, 0
  %175 = select i1 %173, i64 -1, i64 %174
  %176 = call noalias noundef nonnull ptr @_Znam(i64 noundef %175) #9
  store ptr %176, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %177 = load i32, ptr %25, align 4, !tbaa !9
  %178 = sext i32 %177 to i64
  %179 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %178, i64 8)
  %180 = extractvalue { i64, i1 } %179, 1
  %181 = extractvalue { i64, i1 } %179, 0
  %182 = select i1 %180, i64 -1, i64 %181
  %183 = call noalias noundef nonnull ptr @_Znam(i64 noundef %182) #9
  store ptr %183, ptr %42, align 8, !tbaa !5
  %184 = load ptr, ptr %15, align 8, !tbaa !5
  %185 = icmp ne ptr %184, null
  br i1 %185, label %186, label %217

186:                                              ; preds = %155
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %187

187:                                              ; preds = %213, %186
  %188 = load i32, ptr %22, align 4, !tbaa !9
  %189 = load i32, ptr %24, align 4, !tbaa !9
  %190 = icmp slt i32 %188, %189
  br i1 %190, label %191, label %216

191:                                              ; preds = %187
  %192 = load ptr, ptr %15, align 8, !tbaa !5
  %193 = load i32, ptr %22, align 4, !tbaa !9
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds double, ptr %192, i64 %194
  %196 = load double, ptr %195, align 8, !tbaa !11
  %197 = fcmp olt double %196, 1.000000e+20
  br i1 %197, label %198, label %212

198:                                              ; preds = %191
  %199 = load ptr, ptr %15, align 8, !tbaa !5
  %200 = load i32, ptr %22, align 4, !tbaa !9
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds double, ptr %199, i64 %201
  %203 = load double, ptr %202, align 8, !tbaa !11
  %204 = load double, ptr %37, align 8, !tbaa !11
  %205 = fcmp ogt double %203, %204
  br i1 %205, label %206, label %212

206:                                              ; preds = %198
  %207 = load ptr, ptr %15, align 8, !tbaa !5
  %208 = load i32, ptr %22, align 4, !tbaa !9
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds double, ptr %207, i64 %209
  %211 = load double, ptr %210, align 8, !tbaa !11
  store double %211, ptr %37, align 8, !tbaa !11
  br label %212

212:                                              ; preds = %206, %198, %191
  br label %213

213:                                              ; preds = %212
  %214 = load i32, ptr %22, align 4, !tbaa !9
  %215 = add nsw i32 %214, 1
  store i32 %215, ptr %22, align 4, !tbaa !9
  br label %187, !llvm.loop !36

216:                                              ; preds = %187
  br label %217

217:                                              ; preds = %216, %155
  %218 = load ptr, ptr %14, align 8, !tbaa !5
  %219 = icmp ne ptr %218, null
  br i1 %219, label %220, label %253

220:                                              ; preds = %217
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %249, %220
  %222 = load i32, ptr %22, align 4, !tbaa !9
  %223 = load i32, ptr %24, align 4, !tbaa !9
  %224 = icmp slt i32 %222, %223
  br i1 %224, label %225, label %252

225:                                              ; preds = %221
  %226 = load ptr, ptr %14, align 8, !tbaa !5
  %227 = load i32, ptr %22, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds double, ptr %226, i64 %228
  %230 = load double, ptr %229, align 8, !tbaa !11
  %231 = fcmp ogt double %230, -1.000000e+20
  br i1 %231, label %232, label %248

232:                                              ; preds = %225
  %233 = load ptr, ptr %14, align 8, !tbaa !5
  %234 = load i32, ptr %22, align 4, !tbaa !9
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds double, ptr %233, i64 %235
  %237 = load double, ptr %236, align 8, !tbaa !11
  %238 = load double, ptr %37, align 8, !tbaa !11
  %239 = fneg double %238
  %240 = fcmp olt double %237, %239
  br i1 %240, label %241, label %248

241:                                              ; preds = %232
  %242 = load ptr, ptr %14, align 8, !tbaa !5
  %243 = load i32, ptr %22, align 4, !tbaa !9
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds double, ptr %242, i64 %244
  %246 = load double, ptr %245, align 8, !tbaa !11
  %247 = fneg double %246
  store double %247, ptr %37, align 8, !tbaa !11
  br label %248

248:                                              ; preds = %241, %232, %225
  br label %249

249:                                              ; preds = %248
  %250 = load i32, ptr %22, align 4, !tbaa !9
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %22, align 4, !tbaa !9
  br label %221, !llvm.loop !38

252:                                              ; preds = %221
  br label %253

253:                                              ; preds = %252, %217
  %254 = load ptr, ptr %17, align 8, !tbaa !5
  %255 = icmp ne ptr %254, null
  br i1 %255, label %256, label %287

256:                                              ; preds = %253
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %257

257:                                              ; preds = %283, %256
  %258 = load i32, ptr %22, align 4, !tbaa !9
  %259 = load i32, ptr %25, align 4, !tbaa !9
  %260 = icmp slt i32 %258, %259
  br i1 %260, label %261, label %286

261:                                              ; preds = %257
  %262 = load ptr, ptr %17, align 8, !tbaa !5
  %263 = load i32, ptr %22, align 4, !tbaa !9
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds double, ptr %262, i64 %264
  %266 = load double, ptr %265, align 8, !tbaa !11
  %267 = fcmp olt double %266, 1.000000e+20
  br i1 %267, label %268, label %282

268:                                              ; preds = %261
  %269 = load ptr, ptr %17, align 8, !tbaa !5
  %270 = load i32, ptr %22, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %269, i64 %271
  %273 = load double, ptr %272, align 8, !tbaa !11
  %274 = load double, ptr %37, align 8, !tbaa !11
  %275 = fcmp ogt double %273, %274
  br i1 %275, label %276, label %282

276:                                              ; preds = %268
  %277 = load ptr, ptr %17, align 8, !tbaa !5
  %278 = load i32, ptr %22, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds double, ptr %277, i64 %279
  %281 = load double, ptr %280, align 8, !tbaa !11
  store double %281, ptr %37, align 8, !tbaa !11
  br label %282

282:                                              ; preds = %276, %268, %261
  br label %283

283:                                              ; preds = %282
  %284 = load i32, ptr %22, align 4, !tbaa !9
  %285 = add nsw i32 %284, 1
  store i32 %285, ptr %22, align 4, !tbaa !9
  br label %257, !llvm.loop !39

286:                                              ; preds = %257
  br label %287

287:                                              ; preds = %286, %253
  %288 = load ptr, ptr %16, align 8, !tbaa !5
  %289 = icmp ne ptr %288, null
  br i1 %289, label %290, label %323

290:                                              ; preds = %287
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %319, %290
  %292 = load i32, ptr %22, align 4, !tbaa !9
  %293 = load i32, ptr %25, align 4, !tbaa !9
  %294 = icmp slt i32 %292, %293
  br i1 %294, label %295, label %322

295:                                              ; preds = %291
  %296 = load ptr, ptr %16, align 8, !tbaa !5
  %297 = load i32, ptr %22, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds double, ptr %296, i64 %298
  %300 = load double, ptr %299, align 8, !tbaa !11
  %301 = fcmp ogt double %300, -1.000000e+20
  br i1 %301, label %302, label %318

302:                                              ; preds = %295
  %303 = load ptr, ptr %16, align 8, !tbaa !5
  %304 = load i32, ptr %22, align 4, !tbaa !9
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %303, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !11
  %308 = load double, ptr %37, align 8, !tbaa !11
  %309 = fneg double %308
  %310 = fcmp olt double %307, %309
  br i1 %310, label %311, label %318

311:                                              ; preds = %302
  %312 = load ptr, ptr %16, align 8, !tbaa !5
  %313 = load i32, ptr %22, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %312, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !11
  %317 = fneg double %316
  store double %317, ptr %37, align 8, !tbaa !11
  br label %318

318:                                              ; preds = %311, %302, %295
  br label %319

319:                                              ; preds = %318
  %320 = load i32, ptr %22, align 4, !tbaa !9
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %22, align 4, !tbaa !9
  br label %291, !llvm.loop !40

322:                                              ; preds = %291
  br label %323

323:                                              ; preds = %322, %287
  %324 = load double, ptr %37, align 8, !tbaa !11
  %325 = load i32, ptr %24, align 4, !tbaa !9
  %326 = load i32, ptr %25, align 4, !tbaa !9
  %327 = add nsw i32 %325, %326
  %328 = load ptr, ptr %14, align 8, !tbaa !5
  %329 = load ptr, ptr %40, align 8, !tbaa !5
  %330 = load ptr, ptr %15, align 8, !tbaa !5
  %331 = load ptr, ptr %39, align 8, !tbaa !5
  %332 = load ptr, ptr %16, align 8, !tbaa !5
  %333 = load ptr, ptr %42, align 8, !tbaa !5
  %334 = load ptr, ptr %17, align 8, !tbaa !5
  %335 = load ptr, ptr %41, align 8, !tbaa !5
  %336 = call noundef i32 @_ZNK7qpOASES8QProblem15updateFarBoundsEdiPKdPdS2_S3_S2_S3_S2_S3_(ptr noundef nonnull align 8 dereferenceable(1064) %44, double noundef %324, i32 noundef %327, ptr noundef %328, ptr noundef %329, ptr noundef %330, ptr noundef %331, ptr noundef %332, ptr noundef %333, ptr noundef %334, ptr noundef %335)
  br label %337

337:                                              ; preds = %586, %323
  %338 = load i32, ptr %32, align 4, !tbaa !9
  %339 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 %338, ptr %339, align 4, !tbaa !9
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = icmp ne ptr %340, null
  br i1 %341, label %342, label %347

342:                                              ; preds = %337
  %343 = load ptr, ptr %19, align 8, !tbaa !5
  %344 = load double, ptr %343, align 8, !tbaa !11
  %345 = load double, ptr %36, align 8, !tbaa !11
  %346 = fsub double %344, %345
  store double %346, ptr %34, align 8, !tbaa !11
  store ptr %34, ptr %35, align 8, !tbaa !5
  br label %348

347:                                              ; preds = %337
  store ptr null, ptr %35, align 8, !tbaa !5
  br label %348

348:                                              ; preds = %347, %342
  %349 = load ptr, ptr %13, align 8, !tbaa !5
  %350 = load ptr, ptr %40, align 8, !tbaa !5
  %351 = load ptr, ptr %39, align 8, !tbaa !5
  %352 = load ptr, ptr %42, align 8, !tbaa !5
  %353 = load ptr, ptr %41, align 8, !tbaa !5
  %354 = load ptr, ptr %18, align 8, !tbaa !5
  %355 = load ptr, ptr %35, align 8, !tbaa !5
  %356 = load i32, ptr %33, align 4, !tbaa !9
  %357 = load i32, ptr %38, align 4, !tbaa !34
  %358 = call noundef i32 @_ZN7qpOASES8QProblem18solveRegularisedQPEPKdS2_S2_S2_S2_RiPdiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1064) %44, ptr noundef %349, ptr noundef %350, ptr noundef %351, ptr noundef %352, ptr noundef %353, ptr noundef nonnull align 4 dereferenceable(4) %354, ptr noundef %355, i32 noundef %356, i32 noundef %357)
  store i32 %358, ptr %31, align 4, !tbaa !29
  %359 = load ptr, ptr %18, align 8, !tbaa !5
  %360 = load i32, ptr %359, align 4, !tbaa !9
  store i32 %360, ptr %33, align 4, !tbaa !9
  %361 = load double, ptr %34, align 8, !tbaa !11
  %362 = load double, ptr %36, align 8, !tbaa !11
  %363 = fadd double %362, %361
  store double %363, ptr %36, align 8, !tbaa !11
  store i32 0, ptr %38, align 4, !tbaa !34
  store i32 0, ptr %23, align 4, !tbaa !9
  %364 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 23
  %365 = getelementptr inbounds %"class.qpOASES::Options", ptr %364, i32 0, i32 20
  %366 = load double, ptr %365, align 8, !tbaa !41
  %367 = load double, ptr %37, align 8, !tbaa !11
  %368 = fmul double %367, %366
  store double %368, ptr %37, align 8, !tbaa !11
  %369 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 13
  %370 = load i32, ptr %369, align 4, !tbaa !42
  %371 = icmp eq i32 %370, 1
  br i1 %371, label %372, label %390

372:                                              ; preds = %348
  %373 = load double, ptr %37, align 8, !tbaa !11
  %374 = fcmp oge double %373, 1.000000e+20
  br i1 %374, label %375, label %376

375:                                              ; preds = %372
  store i32 61, ptr %31, align 4, !tbaa !29
  br label %590

376:                                              ; preds = %372
  %377 = load double, ptr %37, align 8, !tbaa !11
  %378 = load i32, ptr %24, align 4, !tbaa !9
  %379 = load i32, ptr %25, align 4, !tbaa !9
  %380 = add nsw i32 %378, %379
  %381 = load ptr, ptr %14, align 8, !tbaa !5
  %382 = load ptr, ptr %40, align 8, !tbaa !5
  %383 = load ptr, ptr %15, align 8, !tbaa !5
  %384 = load ptr, ptr %39, align 8, !tbaa !5
  %385 = load ptr, ptr %16, align 8, !tbaa !5
  %386 = load ptr, ptr %42, align 8, !tbaa !5
  %387 = load ptr, ptr %17, align 8, !tbaa !5
  %388 = load ptr, ptr %41, align 8, !tbaa !5
  %389 = call noundef i32 @_ZNK7qpOASES8QProblem15updateFarBoundsEdiPKdPdS2_S3_S2_S3_S2_S3_(ptr noundef nonnull align 8 dereferenceable(1064) %44, double noundef %377, i32 noundef %380, ptr noundef %381, ptr noundef %382, ptr noundef %383, ptr noundef %384, ptr noundef %385, ptr noundef %386, ptr noundef %387, ptr noundef %388)
  br label %586

390:                                              ; preds = %348
  %391 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 12
  %392 = load i32, ptr %391, align 8, !tbaa !15
  %393 = icmp eq i32 %392, 5
  br i1 %393, label %394, label %584

394:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %395 = load double, ptr %37, align 8, !tbaa !11
  %396 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 23
  %397 = getelementptr inbounds %"class.qpOASES::Options", ptr %396, i32 0, i32 20
  %398 = load double, ptr %397, align 8, !tbaa !41
  %399 = fdiv double %395, %398
  %400 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 23
  %401 = getelementptr inbounds %"class.qpOASES::Options", ptr %400, i32 0, i32 11
  %402 = load double, ptr %401, align 8, !tbaa !43
  %403 = fmul double %399, %402
  store double %403, ptr %43, align 8, !tbaa !11
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %404

404:                                              ; preds = %477, %394
  %405 = load i32, ptr %22, align 4, !tbaa !9
  %406 = load i32, ptr %24, align 4, !tbaa !9
  %407 = icmp slt i32 %405, %406
  br i1 %407, label %408, label %480

408:                                              ; preds = %404
  %409 = load ptr, ptr %14, align 8, !tbaa !5
  %410 = icmp eq ptr %409, null
  br i1 %410, label %423, label %411

411:                                              ; preds = %408
  %412 = load ptr, ptr %40, align 8, !tbaa !5
  %413 = load i32, ptr %22, align 4, !tbaa !9
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds double, ptr %412, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = load ptr, ptr %14, align 8, !tbaa !5
  %418 = load i32, ptr %22, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %417, i64 %419
  %421 = load double, ptr %420, align 8, !tbaa !11
  %422 = fcmp ogt double %416, %421
  br i1 %422, label %423, label %442

423:                                              ; preds = %411, %408
  %424 = load ptr, ptr %40, align 8, !tbaa !5
  %425 = load i32, ptr %22, align 4, !tbaa !9
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds double, ptr %424, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !11
  %429 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 9
  %430 = load ptr, ptr %429, align 8, !tbaa !44
  %431 = load i32, ptr %22, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %430, i64 %432
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = fsub double %428, %434
  %436 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %435)
  %437 = load double, ptr %43, align 8, !tbaa !11
  %438 = fcmp olt double %436, %437
  br i1 %438, label %439, label %442

439:                                              ; preds = %423
  %440 = load i32, ptr %23, align 4, !tbaa !9
  %441 = add nsw i32 %440, 1
  store i32 %441, ptr %23, align 4, !tbaa !9
  br label %442

442:                                              ; preds = %439, %423, %411
  %443 = load ptr, ptr %15, align 8, !tbaa !5
  %444 = icmp eq ptr %443, null
  br i1 %444, label %457, label %445

445:                                              ; preds = %442
  %446 = load ptr, ptr %39, align 8, !tbaa !5
  %447 = load i32, ptr %22, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %446, i64 %448
  %450 = load double, ptr %449, align 8, !tbaa !11
  %451 = load ptr, ptr %15, align 8, !tbaa !5
  %452 = load i32, ptr %22, align 4, !tbaa !9
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds double, ptr %451, i64 %453
  %455 = load double, ptr %454, align 8, !tbaa !11
  %456 = fcmp olt double %450, %455
  br i1 %456, label %457, label %476

457:                                              ; preds = %445, %442
  %458 = load ptr, ptr %39, align 8, !tbaa !5
  %459 = load i32, ptr %22, align 4, !tbaa !9
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %458, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !11
  %463 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 9
  %464 = load ptr, ptr %463, align 8, !tbaa !44
  %465 = load i32, ptr %22, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds double, ptr %464, i64 %466
  %468 = load double, ptr %467, align 8, !tbaa !11
  %469 = fsub double %462, %468
  %470 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %469)
  %471 = load double, ptr %43, align 8, !tbaa !11
  %472 = fcmp olt double %470, %471
  br i1 %472, label %473, label %476

473:                                              ; preds = %457
  %474 = load i32, ptr %23, align 4, !tbaa !9
  %475 = add nsw i32 %474, 1
  store i32 %475, ptr %23, align 4, !tbaa !9
  br label %476

476:                                              ; preds = %473, %457, %445
  br label %477

477:                                              ; preds = %476
  %478 = load i32, ptr %22, align 4, !tbaa !9
  %479 = add nsw i32 %478, 1
  store i32 %479, ptr %22, align 4, !tbaa !9
  br label %404, !llvm.loop !45

480:                                              ; preds = %404
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %481

481:                                              ; preds = %554, %480
  %482 = load i32, ptr %22, align 4, !tbaa !9
  %483 = load i32, ptr %25, align 4, !tbaa !9
  %484 = icmp slt i32 %482, %483
  br i1 %484, label %485, label %557

485:                                              ; preds = %481
  %486 = load ptr, ptr %16, align 8, !tbaa !5
  %487 = icmp eq ptr %486, null
  br i1 %487, label %500, label %488

488:                                              ; preds = %485
  %489 = load ptr, ptr %42, align 8, !tbaa !5
  %490 = load i32, ptr %22, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %489, i64 %491
  %493 = load double, ptr %492, align 8, !tbaa !11
  %494 = load ptr, ptr %16, align 8, !tbaa !5
  %495 = load i32, ptr %22, align 4, !tbaa !9
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds double, ptr %494, i64 %496
  %498 = load double, ptr %497, align 8, !tbaa !11
  %499 = fcmp ogt double %493, %498
  br i1 %499, label %500, label %519

500:                                              ; preds = %488, %485
  %501 = load ptr, ptr %42, align 8, !tbaa !5
  %502 = load i32, ptr %22, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds double, ptr %501, i64 %503
  %505 = load double, ptr %504, align 8, !tbaa !11
  %506 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %44, i32 0, i32 9
  %507 = load ptr, ptr %506, align 8, !tbaa !46
  %508 = load i32, ptr %22, align 4, !tbaa !9
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds double, ptr %507, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !11
  %512 = fsub double %505, %511
  %513 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %512)
  %514 = load double, ptr %43, align 8, !tbaa !11
  %515 = fcmp olt double %513, %514
  br i1 %515, label %516, label %519

516:                                              ; preds = %500
  %517 = load i32, ptr %23, align 4, !tbaa !9
  %518 = add nsw i32 %517, 1
  store i32 %518, ptr %23, align 4, !tbaa !9
  br label %519

519:                                              ; preds = %516, %500, %488
  %520 = load ptr, ptr %17, align 8, !tbaa !5
  %521 = icmp eq ptr %520, null
  br i1 %521, label %534, label %522

522:                                              ; preds = %519
  %523 = load ptr, ptr %41, align 8, !tbaa !5
  %524 = load i32, ptr %22, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %523, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !11
  %528 = load ptr, ptr %17, align 8, !tbaa !5
  %529 = load i32, ptr %22, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds double, ptr %528, i64 %530
  %532 = load double, ptr %531, align 8, !tbaa !11
  %533 = fcmp olt double %527, %532
  br i1 %533, label %534, label %553

534:                                              ; preds = %522, %519
  %535 = load ptr, ptr %41, align 8, !tbaa !5
  %536 = load i32, ptr %22, align 4, !tbaa !9
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds double, ptr %535, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !11
  %540 = getelementptr inbounds %"class.qpOASES::QProblem", ptr %44, i32 0, i32 9
  %541 = load ptr, ptr %540, align 8, !tbaa !46
  %542 = load i32, ptr %22, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds double, ptr %541, i64 %543
  %545 = load double, ptr %544, align 8, !tbaa !11
  %546 = fsub double %539, %545
  %547 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %546)
  %548 = load double, ptr %43, align 8, !tbaa !11
  %549 = fcmp olt double %547, %548
  br i1 %549, label %550, label %553

550:                                              ; preds = %534
  %551 = load i32, ptr %23, align 4, !tbaa !9
  %552 = add nsw i32 %551, 1
  store i32 %552, ptr %23, align 4, !tbaa !9
  br label %553

553:                                              ; preds = %550, %534, %522
  br label %554

554:                                              ; preds = %553
  %555 = load i32, ptr %22, align 4, !tbaa !9
  %556 = add nsw i32 %555, 1
  store i32 %556, ptr %22, align 4, !tbaa !9
  br label %481, !llvm.loop !48

557:                                              ; preds = %481
  %558 = load i32, ptr %23, align 4, !tbaa !9
  %559 = icmp eq i32 %558, 0
  br i1 %559, label %560, label %561

560:                                              ; preds = %557
  store i32 14, ptr %28, align 4
  br label %581

561:                                              ; preds = %557
  %562 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 12
  store i32 4, ptr %562, align 8, !tbaa !15
  %563 = load double, ptr %37, align 8, !tbaa !11
  %564 = fcmp oge double %563, 1.000000e+20
  br i1 %564, label %565, label %567

565:                                              ; preds = %561
  %566 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 14
  store i32 1, ptr %566, align 8, !tbaa !49
  store i32 62, ptr %31, align 4, !tbaa !29
  store i32 22, ptr %28, align 4
  br label %581

567:                                              ; preds = %561
  %568 = load double, ptr %37, align 8, !tbaa !11
  %569 = load i32, ptr %24, align 4, !tbaa !9
  %570 = load i32, ptr %25, align 4, !tbaa !9
  %571 = add nsw i32 %569, %570
  %572 = load ptr, ptr %14, align 8, !tbaa !5
  %573 = load ptr, ptr %40, align 8, !tbaa !5
  %574 = load ptr, ptr %15, align 8, !tbaa !5
  %575 = load ptr, ptr %39, align 8, !tbaa !5
  %576 = load ptr, ptr %16, align 8, !tbaa !5
  %577 = load ptr, ptr %42, align 8, !tbaa !5
  %578 = load ptr, ptr %17, align 8, !tbaa !5
  %579 = load ptr, ptr %41, align 8, !tbaa !5
  %580 = call noundef i32 @_ZNK7qpOASES8QProblem15updateFarBoundsEdiPKdPdS2_S3_S2_S3_S2_S3_(ptr noundef nonnull align 8 dereferenceable(1064) %44, double noundef %568, i32 noundef %571, ptr noundef %572, ptr noundef %573, ptr noundef %574, ptr noundef %575, ptr noundef %576, ptr noundef %577, ptr noundef %578, ptr noundef %579)
  store i32 0, ptr %28, align 4
  br label %581

581:                                              ; preds = %567, %565, %560
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  %582 = load i32, ptr %28, align 4
  switch i32 %582, label %631 [
    i32 0, label %583
    i32 14, label %590
    i32 22, label %591
  ]

583:                                              ; preds = %581
  br label %585

584:                                              ; preds = %390
  br label %590

585:                                              ; preds = %583
  br label %586

586:                                              ; preds = %585, %376
  %587 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %44, i32 0, i32 21
  %588 = load i32, ptr %587, align 8, !tbaa !50
  %589 = add nsw i32 %588, 1
  store i32 %589, ptr %587, align 8, !tbaa !50
  br label %337, !llvm.loop !51

590:                                              ; preds = %584, %581, %375
  br label %591

591:                                              ; preds = %590, %581
  %592 = load ptr, ptr %19, align 8, !tbaa !5
  %593 = icmp ne ptr %592, null
  br i1 %593, label %594, label %599

594:                                              ; preds = %591
  %595 = load double, ptr %36, align 8, !tbaa !11
  %596 = load double, ptr %27, align 8, !tbaa !11
  %597 = fadd double %595, %596
  %598 = load ptr, ptr %19, align 8, !tbaa !5
  store double %597, ptr %598, align 8, !tbaa !11
  br label %599

599:                                              ; preds = %594, %591
  %600 = load ptr, ptr %42, align 8, !tbaa !5
  %601 = icmp eq ptr %600, null
  br i1 %601, label %603, label %602

602:                                              ; preds = %599
  call void @_ZdaPv(ptr noundef %600) #10
  br label %603

603:                                              ; preds = %602, %599
  %604 = load ptr, ptr %41, align 8, !tbaa !5
  %605 = icmp eq ptr %604, null
  br i1 %605, label %607, label %606

606:                                              ; preds = %603
  call void @_ZdaPv(ptr noundef %604) #10
  br label %607

607:                                              ; preds = %606, %603
  %608 = load ptr, ptr %40, align 8, !tbaa !5
  %609 = icmp eq ptr %608, null
  br i1 %609, label %611, label %610

610:                                              ; preds = %607
  call void @_ZdaPv(ptr noundef %608) #10
  br label %611

611:                                              ; preds = %610, %607
  %612 = load ptr, ptr %39, align 8, !tbaa !5
  %613 = icmp eq ptr %612, null
  br i1 %613, label %615, label %614

614:                                              ; preds = %611
  call void @_ZdaPv(ptr noundef %612) #10
  br label %615

615:                                              ; preds = %614, %611
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %616

616:                                              ; preds = %615, %145
  %617 = load i32, ptr %31, align 4, !tbaa !29
  %618 = icmp ne i32 %617, 0
  br i1 %618, label %619, label %623

619:                                              ; preds = %616
  %620 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %621 = load i32, ptr %31, align 4, !tbaa !29
  %622 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %620, i32 noundef %621, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 639, i32 noundef 1)
  br label %625

623:                                              ; preds = %616
  %624 = load i32, ptr %31, align 4, !tbaa !29
  br label %625

625:                                              ; preds = %623, %619
  %626 = phi i32 [ %622, %619 ], [ %624, %623 ]
  store i32 %626, ptr %11, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  br label %627

627:                                              ; preds = %625, %135
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #8
  br label %628

628:                                              ; preds = %627, %113
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  br label %629

629:                                              ; preds = %628, %103, %49
  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 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  %630 = load i32, ptr %11, align 4
  ret i32 %630

631:                                              ; preds = %581
  unreachable
}

declare noundef double @_ZN7qpOASES10getCPUtimeEv() #1

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

declare noundef i32 @_ZN7qpOASES9QProblemB20setInfeasibilityFlagENS_11returnValueENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800), i32 noundef, i32 noundef) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK7qpOASES8QProblem15updateFarBoundsEdiPKdPdS2_S3_S2_S3_S2_S3_(ptr noundef nonnull align 8 dereferenceable(1064), double noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #6 align 2

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

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


; 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 uwtable
declare dso_local noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES8QProblem8hotstartEPKdS2_S2_S2_S2_RiPdPKNS_6BoundsEPKNS_11ConstraintsE(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef %7, ptr noundef %8, ptr noundef %9) local_unnamed_addr #5 align 2 {
  %11 = alloca double, align 8
  %12 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %13 = tail call noundef i32 @_ZNK7qpOASES8QProblem5getNCEv(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %14 = icmp eq i32 %12, 0
  br i1 %14, label %15, label %18

15:                                               ; preds = %10
  %16 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %17 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %16, i32 noundef 29, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 460, i32 noundef 1)
  br label %257

18:                                               ; preds = %10
  %19 = icmp ne ptr %8, null
  %20 = icmp ne ptr %9, null
  %or.cond = or i1 %19, %20
  br i1 %or.cond, label %21, label %.thread

21:                                               ; preds = %18
  %.not = icmp eq ptr %7, null
  br i1 %.not, label %24, label %22

22:                                               ; preds = %21
  %23 = tail call noundef double @_ZN7qpOASES10getCPUtimeEv()
  br label %24

24:                                               ; preds = %22, %21
  %.0203 = phi double [ %23, %22 ], [ 0.000000e+00, %21 ]
  %25 = getelementptr inbounds i8, ptr %0, i64 48
  %26 = select i1 %19, ptr %8, ptr %25
  %27 = getelementptr inbounds i8, ptr %0, i64 832
  %28 = select i1 %20, ptr %9, ptr %27
  %29 = load ptr, ptr %0, align 8, !tbaa !5
  %30 = getelementptr inbounds i8, ptr %29, i64 280
  %31 = load ptr, ptr %30, align 8
  %32 = tail call noundef i32 %31(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef nonnull %26, ptr noundef nonnull %28)
  %.not241 = icmp eq i32 %32, 0
  br i1 %.not241, label %33, label %40

33:                                               ; preds = %24
  %34 = getelementptr inbounds i8, ptr %0, i64 208
  store i32 2, ptr %34, align 8, !tbaa !8
  br i1 %.not, label %.thread, label %35

35:                                               ; preds = %33
  %36 = tail call noundef double @_ZN7qpOASES10getCPUtimeEv()
  %37 = fsub double %36, %.0203
  %38 = load double, ptr %7, align 8, !tbaa !26
  %39 = fsub double %38, %37
  store double %39, ptr %7, align 8, !tbaa !26
  br label %.thread

40:                                               ; preds = %24
  %41 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %42 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %41, i32 noundef 43, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 473, i32 noundef 1)
  br label %257

.thread:                                          ; preds = %35, %33, %18
  %.2206 = phi double [ 0.000000e+00, %18 ], [ 0.000000e+00, %33 ], [ %37, %35 ]
  %43 = tail call noundef i32 @_ZNK7qpOASES8QProblem19areBoundsConsistentEPKdS2_S2_S2_(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5)
  %.not242 = icmp eq i32 %43, 0
  br i1 %.not242, label %46, label %44

44:                                               ; preds = %.thread
  %45 = tail call noundef i32 @_ZN7qpOASES9QProblemB20setInfeasibilityFlagENS_11returnValueENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %0, i32 noundef 0, i32 noundef 1)
  br label %257

46:                                               ; preds = %.thread
  %47 = getelementptr inbounds i8, ptr %0, i64 232
  %48 = load i32, ptr %47, align 8, !tbaa !27
  %49 = add i32 %48, 1
  store i32 %49, ptr %47, align 8, !tbaa !27
  %50 = load i32, ptr %6, align 4, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  store double 1.000000e+20, ptr %11, align 8, !tbaa !26
  %51 = getelementptr inbounds i8, ptr %0, i64 384
  %52 = load double, ptr %51, align 8, !tbaa !29
  %53 = getelementptr inbounds i8, ptr %0, i64 176
  %54 = load i32, ptr %53, align 8, !tbaa !30
  %55 = icmp eq i32 %54, 0
  br i1 %55, label %56, label %64

56:                                               ; preds = %46
  %57 = load ptr, ptr %0, align 8, !tbaa !5
  %58 = getelementptr inbounds i8, ptr %57, i64 104
  %59 = load ptr, ptr %58, align 8
  %60 = tail call noundef i32 %59(ptr noundef nonnull align 8 dereferenceable(1064) %0)
  %.not243 = icmp eq i32 %60, 0
  br i1 %.not243, label %64, label %61

61:                                               ; preds = %56
  %62 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %63 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %62, i32 noundef %60, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 508, i32 noundef 1)
  br label %256

64:                                               ; preds = %56, %46
  %65 = getelementptr inbounds i8, ptr %0, i64 280
  %66 = load i32, ptr %65, align 8, !tbaa !31
  %67 = icmp eq i32 %66, 0
  br i1 %67, label %68, label %70

68:                                               ; preds = %64
  %69 = tail call noundef i32 @_ZN7qpOASES8QProblem18solveRegularisedQPEPKdS2_S2_S2_S2_RiPdiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef %7, i32 noundef 0, i32 noundef 1)
  br label %252

70:                                               ; preds = %64
  %71 = zext i32 %12 to i64
  %72 = icmp slt i32 %12, 0
  %73 = shl nuw nsw i64 %71, 3
  %74 = select i1 %72, i64 -1, i64 %73
  %75 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %74) #8
  %76 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %74) #8
  %77 = zext i32 %13 to i64
  %78 = icmp slt i32 %13, 0
  %79 = shl nuw nsw i64 %77, 3
  %80 = select i1 %78, i64 -1, i64 %79
  %81 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %80) #8
  %82 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %80) #8
  %.not244 = icmp ne ptr %3, null
  %83 = icmp sgt i32 %12, 0
  %or.cond295 = and i1 %.not244, %83
  br i1 %or.cond295, label %.lr.ph.preheader, label %.loopexit269

.lr.ph.preheader:                                 ; preds = %70
  %xtraiter = and i64 %71, 1
  %84 = icmp eq i32 %12, 1
  br i1 %84, label %.loopexit269.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %71, 2147483646
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0208273 = phi double [ %52, %.lr.ph.preheader.new ], [ %.1209.1, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %85 = getelementptr inbounds double, ptr %3, i64 %indvars.iv
  %86 = load double, ptr %85, align 8, !tbaa !26
  %87 = fcmp olt double %86, 1.000000e+20
  %88 = fcmp ogt double %86, %.0208273
  %or.cond250 = select i1 %87, i1 %88, i1 false
  %.1209 = select i1 %or.cond250, double %86, double %.0208273
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %89 = getelementptr inbounds double, ptr %3, i64 %indvars.iv.next
  %90 = load double, ptr %89, align 8, !tbaa !26
  %91 = fcmp olt double %90, 1.000000e+20
  %92 = fcmp ogt double %90, %.1209
  %or.cond250.1 = select i1 %91, i1 %92, i1 false
  %.1209.1 = select i1 %or.cond250.1, double %90, double %.1209
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit269.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !32

.loopexit269.loopexit.unr-lcssa:                  ; preds = %.lr.ph, %.lr.ph.preheader
  %.1209.lcssa.ph = phi double [ poison, %.lr.ph.preheader ], [ %.1209.1, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0208273.unr = phi double [ %52, %.lr.ph.preheader ], [ %.1209.1, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit269, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %.loopexit269.loopexit.unr-lcssa
  %93 = getelementptr inbounds double, ptr %3, i64 %indvars.iv.unr
  %94 = load double, ptr %93, align 8, !tbaa !26
  %95 = fcmp olt double %94, 1.000000e+20
  %96 = fcmp ogt double %94, %.0208273.unr
  %or.cond250.epil = select i1 %95, i1 %96, i1 false
  %.1209.epil = select i1 %or.cond250.epil, double %94, double %.0208273.unr
  br label %.loopexit269

.loopexit269:                                     ; preds = %.lr.ph.epil, %.loopexit269.loopexit.unr-lcssa, %70
  %.2210 = phi double [ %52, %70 ], [ %.1209.lcssa.ph, %.loopexit269.loopexit.unr-lcssa ], [ %.1209.epil, %.lr.ph.epil ]
  %.not245 = icmp ne ptr %2, null
  %or.cond296 = and i1 %.not245, %83
  br i1 %or.cond296, label %.lr.ph277.preheader, label %.loopexit267

.lr.ph277.preheader:                              ; preds = %.loopexit269
  %xtraiter338 = and i64 %71, 1
  %97 = icmp eq i32 %12, 1
  br i1 %97, label %.loopexit267.loopexit.unr-lcssa, label %.lr.ph277.preheader.new

.lr.ph277.preheader.new:                          ; preds = %.lr.ph277.preheader
  %unroll_iter341 = and i64 %71, 2147483646
  br label %.lr.ph277

.lr.ph277:                                        ; preds = %.lr.ph277, %.lr.ph277.preheader.new
  %indvars.iv301 = phi i64 [ 0, %.lr.ph277.preheader.new ], [ %indvars.iv.next302.1, %.lr.ph277 ]
  %.3211275 = phi double [ %.2210, %.lr.ph277.preheader.new ], [ %.4212.1, %.lr.ph277 ]
  %niter342 = phi i64 [ 0, %.lr.ph277.preheader.new ], [ %niter342.next.1, %.lr.ph277 ]
  %98 = getelementptr inbounds double, ptr %2, i64 %indvars.iv301
  %99 = load double, ptr %98, align 8, !tbaa !26
  %100 = fcmp ogt double %99, -1.000000e+20
  %101 = fneg double %.3211275
  %102 = fcmp olt double %99, %101
  %or.cond252 = select i1 %100, i1 %102, i1 false
  %103 = fneg double %99
  %.4212 = select i1 %or.cond252, double %103, double %.3211275
  %indvars.iv.next302 = or disjoint i64 %indvars.iv301, 1
  %104 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next302
  %105 = load double, ptr %104, align 8, !tbaa !26
  %106 = fcmp ogt double %105, -1.000000e+20
  %107 = fneg double %.4212
  %108 = fcmp olt double %105, %107
  %or.cond252.1 = select i1 %106, i1 %108, i1 false
  %109 = fneg double %105
  %.4212.1 = select i1 %or.cond252.1, double %109, double %.4212
  %indvars.iv.next302.1 = add nuw nsw i64 %indvars.iv301, 2
  %niter342.next.1 = add i64 %niter342, 2
  %niter342.ncmp.1 = icmp eq i64 %niter342.next.1, %unroll_iter341
  br i1 %niter342.ncmp.1, label %.loopexit267.loopexit.unr-lcssa, label %.lr.ph277, !llvm.loop !34

.loopexit267.loopexit.unr-lcssa:                  ; preds = %.lr.ph277, %.lr.ph277.preheader
  %.4212.lcssa.ph = phi double [ poison, %.lr.ph277.preheader ], [ %.4212.1, %.lr.ph277 ]
  %indvars.iv301.unr = phi i64 [ 0, %.lr.ph277.preheader ], [ %indvars.iv.next302.1, %.lr.ph277 ]
  %.3211275.unr = phi double [ %.2210, %.lr.ph277.preheader ], [ %.4212.1, %.lr.ph277 ]
  %lcmp.mod339.not = icmp eq i64 %xtraiter338, 0
  br i1 %lcmp.mod339.not, label %.loopexit267, label %.lr.ph277.epil

.lr.ph277.epil:                                   ; preds = %.loopexit267.loopexit.unr-lcssa
  %110 = getelementptr inbounds double, ptr %2, i64 %indvars.iv301.unr
  %111 = load double, ptr %110, align 8, !tbaa !26
  %112 = fcmp ogt double %111, -1.000000e+20
  %113 = fneg double %.3211275.unr
  %114 = fcmp olt double %111, %113
  %or.cond252.epil = select i1 %112, i1 %114, i1 false
  %115 = fneg double %111
  %.4212.epil = select i1 %or.cond252.epil, double %115, double %.3211275.unr
  br label %.loopexit267

.loopexit267:                                     ; preds = %.lr.ph277.epil, %.loopexit267.loopexit.unr-lcssa, %.loopexit269
  %.5213 = phi double [ %.2210, %.loopexit269 ], [ %.4212.lcssa.ph, %.loopexit267.loopexit.unr-lcssa ], [ %.4212.epil, %.lr.ph277.epil ]
  %.not246 = icmp ne ptr %5, null
  %116 = icmp sgt i32 %13, 0
  %or.cond297 = and i1 %.not246, %116
  br i1 %or.cond297, label %.lr.ph281.preheader, label %.loopexit265

.lr.ph281.preheader:                              ; preds = %.loopexit267
  %xtraiter343 = and i64 %77, 1
  %117 = icmp eq i32 %13, 1
  br i1 %117, label %.loopexit265.loopexit.unr-lcssa, label %.lr.ph281.preheader.new

.lr.ph281.preheader.new:                          ; preds = %.lr.ph281.preheader
  %unroll_iter346 = and i64 %77, 2147483646
  br label %.lr.ph281

.lr.ph281:                                        ; preds = %.lr.ph281, %.lr.ph281.preheader.new
  %indvars.iv306 = phi i64 [ 0, %.lr.ph281.preheader.new ], [ %indvars.iv.next307.1, %.lr.ph281 ]
  %.6279 = phi double [ %.5213, %.lr.ph281.preheader.new ], [ %.7.1, %.lr.ph281 ]
  %niter347 = phi i64 [ 0, %.lr.ph281.preheader.new ], [ %niter347.next.1, %.lr.ph281 ]
  %118 = getelementptr inbounds double, ptr %5, i64 %indvars.iv306
  %119 = load double, ptr %118, align 8, !tbaa !26
  %120 = fcmp olt double %119, 1.000000e+20
  %121 = fcmp ogt double %119, %.6279
  %or.cond253 = select i1 %120, i1 %121, i1 false
  %.7 = select i1 %or.cond253, double %119, double %.6279
  %indvars.iv.next307 = or disjoint i64 %indvars.iv306, 1
  %122 = getelementptr inbounds double, ptr %5, i64 %indvars.iv.next307
  %123 = load double, ptr %122, align 8, !tbaa !26
  %124 = fcmp olt double %123, 1.000000e+20
  %125 = fcmp ogt double %123, %.7
  %or.cond253.1 = select i1 %124, i1 %125, i1 false
  %.7.1 = select i1 %or.cond253.1, double %123, double %.7
  %indvars.iv.next307.1 = add nuw nsw i64 %indvars.iv306, 2
  %niter347.next.1 = add i64 %niter347, 2
  %niter347.ncmp.1 = icmp eq i64 %niter347.next.1, %unroll_iter346
  br i1 %niter347.ncmp.1, label %.loopexit265.loopexit.unr-lcssa, label %.lr.ph281, !llvm.loop !35

.loopexit265.loopexit.unr-lcssa:                  ; preds = %.lr.ph281, %.lr.ph281.preheader
  %.7.lcssa.ph = phi double [ poison, %.lr.ph281.preheader ], [ %.7.1, %.lr.ph281 ]
  %indvars.iv306.unr = phi i64 [ 0, %.lr.ph281.preheader ], [ %indvars.iv.next307.1, %.lr.ph281 ]
  %.6279.unr = phi double [ %.5213, %.lr.ph281.preheader ], [ %.7.1, %.lr.ph281 ]
  %lcmp.mod344.not = icmp eq i64 %xtraiter343, 0
  br i1 %lcmp.mod344.not, label %.loopexit265, label %.lr.ph281.epil

.lr.ph281.epil:                                   ; preds = %.loopexit265.loopexit.unr-lcssa
  %126 = getelementptr inbounds double, ptr %5, i64 %indvars.iv306.unr
  %127 = load double, ptr %126, align 8, !tbaa !26
  %128 = fcmp olt double %127, 1.000000e+20
  %129 = fcmp ogt double %127, %.6279.unr
  %or.cond253.epil = select i1 %128, i1 %129, i1 false
  %.7.epil = select i1 %or.cond253.epil, double %127, double %.6279.unr
  br label %.loopexit265

.loopexit265:                                     ; preds = %.lr.ph281.epil, %.loopexit265.loopexit.unr-lcssa, %.loopexit267
  %.8 = phi double [ %.5213, %.loopexit267 ], [ %.7.lcssa.ph, %.loopexit265.loopexit.unr-lcssa ], [ %.7.epil, %.lr.ph281.epil ]
  %.not247 = icmp ne ptr %4, null
  %or.cond298 = and i1 %.not247, %116
  br i1 %or.cond298, label %.lr.ph285.preheader, label %.loopexit

.lr.ph285.preheader:                              ; preds = %.loopexit265
  %xtraiter348 = and i64 %77, 1
  %130 = icmp eq i32 %13, 1
  br i1 %130, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph285.preheader.new

.lr.ph285.preheader.new:                          ; preds = %.lr.ph285.preheader
  %unroll_iter351 = and i64 %77, 2147483646
  br label %.lr.ph285

.lr.ph285:                                        ; preds = %.lr.ph285, %.lr.ph285.preheader.new
  %indvars.iv311 = phi i64 [ 0, %.lr.ph285.preheader.new ], [ %indvars.iv.next312.1, %.lr.ph285 ]
  %.9283 = phi double [ %.8, %.lr.ph285.preheader.new ], [ %.10.1, %.lr.ph285 ]
  %niter352 = phi i64 [ 0, %.lr.ph285.preheader.new ], [ %niter352.next.1, %.lr.ph285 ]
  %131 = getelementptr inbounds double, ptr %4, i64 %indvars.iv311
  %132 = load double, ptr %131, align 8, !tbaa !26
  %133 = fcmp ogt double %132, -1.000000e+20
  %134 = fneg double %.9283
  %135 = fcmp olt double %132, %134
  %or.cond255 = select i1 %133, i1 %135, i1 false
  %136 = fneg double %132
  %.10 = select i1 %or.cond255, double %136, double %.9283
  %indvars.iv.next312 = or disjoint i64 %indvars.iv311, 1
  %137 = getelementptr inbounds double, ptr %4, i64 %indvars.iv.next312
  %138 = load double, ptr %137, align 8, !tbaa !26
  %139 = fcmp ogt double %138, -1.000000e+20
  %140 = fneg double %.10
  %141 = fcmp olt double %138, %140
  %or.cond255.1 = select i1 %139, i1 %141, i1 false
  %142 = fneg double %138
  %.10.1 = select i1 %or.cond255.1, double %142, double %.10
  %indvars.iv.next312.1 = add nuw nsw i64 %indvars.iv311, 2
  %niter352.next.1 = add i64 %niter352, 2
  %niter352.ncmp.1 = icmp eq i64 %niter352.next.1, %unroll_iter351
  br i1 %niter352.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph285, !llvm.loop !36

.loopexit.loopexit.unr-lcssa:                     ; preds = %.lr.ph285, %.lr.ph285.preheader
  %.10.lcssa.ph = phi double [ poison, %.lr.ph285.preheader ], [ %.10.1, %.lr.ph285 ]
  %indvars.iv311.unr = phi i64 [ 0, %.lr.ph285.preheader ], [ %indvars.iv.next312.1, %.lr.ph285 ]
  %.9283.unr = phi double [ %.8, %.lr.ph285.preheader ], [ %.10.1, %.lr.ph285 ]
  %lcmp.mod349.not = icmp eq i64 %xtraiter348, 0
  br i1 %lcmp.mod349.not, label %.loopexit, label %.lr.ph285.epil

.lr.ph285.epil:                                   ; preds = %.loopexit.loopexit.unr-lcssa
  %143 = getelementptr inbounds double, ptr %4, i64 %indvars.iv311.unr
  %144 = load double, ptr %143, align 8, !tbaa !26
  %145 = fcmp ogt double %144, -1.000000e+20
  %146 = fneg double %.9283.unr
  %147 = fcmp olt double %144, %146
  %or.cond255.epil = select i1 %145, i1 %147, i1 false
  %148 = fneg double %144
  %.10.epil = select i1 %or.cond255.epil, double %148, double %.9283.unr
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph285.epil, %.loopexit.loopexit.unr-lcssa, %.loopexit265
  %.11 = phi double [ %.8, %.loopexit265 ], [ %.10.lcssa.ph, %.loopexit.loopexit.unr-lcssa ], [ %.10.epil, %.lr.ph285.epil ]
  %149 = add nsw i32 %13, %12
  %150 = tail call noundef i32 @_ZNK7qpOASES8QProblem15updateFarBoundsEdiPKdPdS2_S3_S2_S3_S2_S3_(ptr noundef nonnull align 8 dereferenceable(1064) %0, double noundef %.11, i32 noundef %149, ptr noundef %2, ptr noundef nonnull %76, ptr noundef %3, ptr noundef nonnull %75, ptr noundef %4, ptr noundef nonnull %82, ptr noundef %5, ptr noundef nonnull %81)
  %.not248 = icmp eq ptr %7, null
  %151 = getelementptr inbounds i8, ptr %0, i64 392
  %152 = getelementptr inbounds i8, ptr %0, i64 212
  %153 = getelementptr inbounds i8, ptr %0, i64 208
  %154 = getelementptr inbounds i8, ptr %0, i64 320
  %155 = getelementptr inbounds i8, ptr %0, i64 184
  %156 = getelementptr inbounds i8, ptr %0, i64 976
  %157 = getelementptr inbounds i8, ptr %0, i64 264
  br label %158

158:                                              ; preds = %245, %.loopexit
  %.0216 = phi i32 [ 0, %.loopexit ], [ %164, %245 ]
  %.0214 = phi double [ 0.000000e+00, %.loopexit ], [ %166, %245 ]
  %.12 = phi double [ %.11, %.loopexit ], [ %168, %245 ]
  %.0207 = phi i32 [ 1, %.loopexit ], [ 0, %245 ]
  store i32 %50, ptr %6, align 4, !tbaa !28
  br i1 %.not248, label %162, label %159

159:                                              ; preds = %158
  %160 = load double, ptr %7, align 8, !tbaa !26
  %161 = fsub double %160, %.0214
  store double %161, ptr %11, align 8, !tbaa !26
  br label %162

162:                                              ; preds = %158, %159
  %.0215 = phi ptr [ %11, %159 ], [ null, %158 ]
  %163 = call noundef i32 @_ZN7qpOASES8QProblem18solveRegularisedQPEPKdS2_S2_S2_S2_RiPdiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1064) %0, ptr noundef %1, ptr noundef nonnull %76, ptr noundef nonnull %75, ptr noundef nonnull %82, ptr noundef nonnull %81, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef %.0215, i32 noundef %.0216, i32 noundef %.0207)
  %164 = load i32, ptr %6, align 4, !tbaa !28
  %165 = load double, ptr %11, align 8, !tbaa !26
  %166 = fadd double %.0214, %165
  %167 = load double, ptr %151, align 8, !tbaa !37
  %168 = fmul double %.12, %167
  %169 = load i32, ptr %152, align 4, !tbaa !38
  %170 = icmp eq i32 %169, 1
  br i1 %170, label %171, label %173

171:                                              ; preds = %162
  %172 = fcmp ult double %168, 1.000000e+20
  br i1 %172, label %245, label %.thread259

173:                                              ; preds = %162
  %174 = load i32, ptr %153, align 8, !tbaa !8
  %175 = icmp eq i32 %174, 5
  br i1 %175, label %176, label %.thread259

176:                                              ; preds = %173
  %177 = fdiv double %168, %167
  %178 = load double, ptr %154, align 8, !tbaa !39
  %179 = fmul double %177, %178
  br i1 %83, label %.lr.ph289, label %.preheader

.preheader:                                       ; preds = %209, %176
  %.0197.lcssa = phi i32 [ 0, %176 ], [ %.2199, %209 ]
  br i1 %116, label %.lr.ph293, label %._crit_edge

.lr.ph289:                                        ; preds = %176, %209
  %indvars.iv316 = phi i64 [ %indvars.iv.next317, %209 ], [ 0, %176 ]
  %.0197287 = phi i32 [ %.2199, %209 ], [ 0, %176 ]
  %180 = getelementptr inbounds double, ptr %76, i64 %indvars.iv316
  %181 = load double, ptr %180, align 8, !tbaa !26
  br i1 %.not245, label %182, label %.lr.ph289._crit_edge

182:                                              ; preds = %.lr.ph289
  %183 = getelementptr inbounds double, ptr %2, i64 %indvars.iv316
  %184 = load double, ptr %183, align 8, !tbaa !26
  %185 = fcmp ogt double %181, %184
  br i1 %185, label %.lr.ph289._crit_edge, label %194

.lr.ph289._crit_edge:                             ; preds = %.lr.ph289, %182
  %186 = load ptr, ptr %155, align 8, !tbaa !40
  %187 = getelementptr inbounds double, ptr %186, i64 %indvars.iv316
  %188 = load double, ptr %187, align 8, !tbaa !26
  %189 = fsub double %181, %188
  %190 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %189)
  %191 = fcmp olt double %190, %179
  br i1 %191, label %192, label %194

192:                                              ; preds = %.lr.ph289._crit_edge
  %193 = add nsw i32 %.0197287, 1
  br label %194

194:                                              ; preds = %192, %.lr.ph289._crit_edge, %182
  %.1198 = phi i32 [ %193, %192 ], [ %.0197287, %.lr.ph289._crit_edge ], [ %.0197287, %182 ]
  %195 = getelementptr inbounds double, ptr %75, i64 %indvars.iv316
  %196 = load double, ptr %195, align 8, !tbaa !26
  br i1 %.not244, label %197, label %._crit_edge326

197:                                              ; preds = %194
  %198 = getelementptr inbounds double, ptr %3, i64 %indvars.iv316
  %199 = load double, ptr %198, align 8, !tbaa !26
  %200 = fcmp olt double %196, %199
  br i1 %200, label %._crit_edge326, label %209

._crit_edge326:                                   ; preds = %194, %197
  %201 = load ptr, ptr %155, align 8, !tbaa !40
  %202 = getelementptr inbounds double, ptr %201, i64 %indvars.iv316
  %203 = load double, ptr %202, align 8, !tbaa !26
  %204 = fsub double %196, %203
  %205 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %204)
  %206 = fcmp olt double %205, %179
  br i1 %206, label %207, label %209

207:                                              ; preds = %._crit_edge326
  %208 = add nsw i32 %.1198, 1
  br label %209

209:                                              ; preds = %197, %._crit_edge326, %207
  %.2199 = phi i32 [ %208, %207 ], [ %.1198, %._crit_edge326 ], [ %.1198, %197 ]
  %indvars.iv.next317 = add nuw nsw i64 %indvars.iv316, 1
  %exitcond320.not = icmp eq i64 %indvars.iv.next317, %71
  br i1 %exitcond320.not, label %.preheader, label %.lr.ph289, !llvm.loop !41

.lr.ph293:                                        ; preds = %.preheader, %239
  %indvars.iv321 = phi i64 [ %indvars.iv.next322, %239 ], [ 0, %.preheader ]
  %.3200291 = phi i32 [ %.5202, %239 ], [ %.0197.lcssa, %.preheader ]
  %210 = getelementptr inbounds double, ptr %82, i64 %indvars.iv321
  %211 = load double, ptr %210, align 8, !tbaa !26
  br i1 %.not247, label %212, label %.lr.ph293._crit_edge

212:                                              ; preds = %.lr.ph293
  %213 = getelementptr inbounds double, ptr %4, i64 %indvars.iv321
  %214 = load double, ptr %213, align 8, !tbaa !26
  %215 = fcmp ogt double %211, %214
  br i1 %215, label %.lr.ph293._crit_edge, label %224

.lr.ph293._crit_edge:                             ; preds = %.lr.ph293, %212
  %216 = load ptr, ptr %156, align 8, !tbaa !42
  %217 = getelementptr inbounds double, ptr %216, i64 %indvars.iv321
  %218 = load double, ptr %217, align 8, !tbaa !26
  %219 = fsub double %211, %218
  %220 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %219)
  %221 = fcmp olt double %220, %179
  br i1 %221, label %222, label %224

222:                                              ; preds = %.lr.ph293._crit_edge
  %223 = add nsw i32 %.3200291, 1
  br label %224

224:                                              ; preds = %222, %.lr.ph293._crit_edge, %212
  %.4201 = phi i32 [ %223, %222 ], [ %.3200291, %.lr.ph293._crit_edge ], [ %.3200291, %212 ]
  %225 = getelementptr inbounds double, ptr %81, i64 %indvars.iv321
  %226 = load double, ptr %225, align 8, !tbaa !26
  br i1 %.not246, label %227, label %._crit_edge331

227:                                              ; preds = %224
  %228 = getelementptr inbounds double, ptr %5, i64 %indvars.iv321
  %229 = load double, ptr %228, align 8, !tbaa !26
  %230 = fcmp olt double %226, %229
  br i1 %230, label %._crit_edge331, label %239

._crit_edge331:                                   ; preds = %224, %227
  %231 = load ptr, ptr %156, align 8, !tbaa !42
  %232 = getelementptr inbounds double, ptr %231, i64 %indvars.iv321
  %233 = load double, ptr %232, align 8, !tbaa !26
  %234 = fsub double %226, %233
  %235 = call noundef double @_ZN7qpOASES6getAbsEd(double noundef %234)
  %236 = fcmp olt double %235, %179
  br i1 %236, label %237, label %239

237:                                              ; preds = %._crit_edge331
  %238 = add nsw i32 %.4201, 1
  br label %239

239:                                              ; preds = %227, %._crit_edge331, %237
  %.5202 = phi i32 [ %238, %237 ], [ %.4201, %._crit_edge331 ], [ %.4201, %227 ]
  %indvars.iv.next322 = add nuw nsw i64 %indvars.iv321, 1
  %exitcond325.not = icmp eq i64 %indvars.iv.next322, %77
  br i1 %exitcond325.not, label %._crit_edge, label %.lr.ph293, !llvm.loop !44

._crit_edge:                                      ; preds = %239, %.preheader
  %.3200.lcssa = phi i32 [ %.0197.lcssa, %.preheader ], [ %.5202, %239 ]
  %240 = icmp eq i32 %.3200.lcssa, 0
  br i1 %240, label %.thread259, label %241

241:                                              ; preds = %._crit_edge
  store i32 4, ptr %153, align 8, !tbaa !8
  %242 = fcmp ult double %168, 1.000000e+20
  br i1 %242, label %245, label %243

243:                                              ; preds = %241
  %244 = getelementptr inbounds i8, ptr %0, i64 216
  store i32 1, ptr %244, align 8, !tbaa !45
  br label %.thread259

245:                                              ; preds = %241, %171
  %246 = call noundef i32 @_ZNK7qpOASES8QProblem15updateFarBoundsEdiPKdPdS2_S3_S2_S3_S2_S3_(ptr noundef nonnull align 8 dereferenceable(1064) %0, double noundef %168, i32 noundef %149, ptr noundef %2, ptr noundef nonnull %76, ptr noundef %3, ptr noundef nonnull %75, ptr noundef %4, ptr noundef nonnull %82, ptr noundef %5, ptr noundef nonnull %81)
  %247 = load i32, ptr %157, align 8, !tbaa !46
  %248 = add nsw i32 %247, 1
  store i32 %248, ptr %157, align 8, !tbaa !46
  br label %158, !llvm.loop !47

.thread259:                                       ; preds = %._crit_edge, %171, %173, %243
  %.1220 = phi i32 [ 62, %243 ], [ %163, %._crit_edge ], [ 61, %171 ], [ %163, %173 ]
  br i1 %.not248, label %251, label %249

249:                                              ; preds = %.thread259
  %250 = fadd double %.2206, %166
  store double %250, ptr %7, align 8, !tbaa !26
  br label %251

251:                                              ; preds = %.thread259, %249
  call void @_ZdaPv(ptr noundef nonnull %82) #9
  call void @_ZdaPv(ptr noundef nonnull %81) #9
  call void @_ZdaPv(ptr noundef nonnull %76) #9
  call void @_ZdaPv(ptr noundef nonnull %75) #9
  br label %252

252:                                              ; preds = %251, %68
  %.2221 = phi i32 [ %69, %68 ], [ %.1220, %251 ]
  %.not249 = icmp eq i32 %.2221, 0
  br i1 %.not249, label %256, label %253

253:                                              ; preds = %252
  %254 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %255 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %254, i32 noundef %.2221, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 639, i32 noundef 1)
  br label %256

256:                                              ; preds = %253, %252, %61
  %.1 = phi i32 [ %63, %61 ], [ %255, %253 ], [ 0, %252 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %257

257:                                              ; preds = %40, %44, %256, %15
  %.3 = phi i32 [ %17, %15 ], [ %42, %40 ], [ %45, %44 ], [ %.1, %256 ]
  ret i32 %.3
}

declare noundef double @_ZN7qpOASES10getCPUtimeEv() local_unnamed_addr #1

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

declare noundef i32 @_ZN7qpOASES9QProblemB20setInfeasibilityFlagENS_11returnValueENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800), i32 noundef, i32 noundef) local_unnamed_addr #1

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

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

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

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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { builtin allocsize(0) }
attributes #9 = { 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, !18, i64 208}
!9 = !{!"_ZTSN7qpOASES9QProblemBE", !10, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !13, i64 48, !12, i64 168, !10, i64 176, !12, i64 184, !12, i64 192, !17, i64 200, !18, i64 208, !10, i64 212, !10, i64 216, !19, i64 220, !17, i64 224, !15, i64 232, !12, i64 240, !17, i64 248, !17, i64 256, !15, i64 264, !20, i64 272, !23, i64 496, !25, i64 768}
!10 = !{!"_ZTSN7qpOASES11BooleanTypeE", !11, i64 0}
!11 = !{!"omnipotent char", !7, i64 0}
!12 = !{!"any pointer", !11, i64 0}
!13 = !{!"_ZTSN7qpOASES6BoundsE", !14, i64 0, !16, i64 40, !16, i64 80}
!14 = !{!"_ZTSN7qpOASES9SubjectToE", !15, i64 8, !12, i64 16, !12, i64 24, !10, i64 32, !10, i64 36}
!15 = !{!"int", !11, i64 0}
!16 = !{!"_ZTSN7qpOASES9IndexlistE", !12, i64 0, !12, i64 8, !15, i64 16, !15, i64 20, !15, i64 24, !15, i64 28, !15, i64 32}
!17 = !{!"double", !11, i64 0}
!18 = !{!"_ZTSN7qpOASES14QProblemStatusE", !11, i64 0}
!19 = !{!"_ZTSN7qpOASES11HessianTypeE", !11, i64 0}
!20 = !{!"_ZTSN7qpOASES7OptionsE", !21, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !15, i64 28, !15, i64 32, !10, i64 36, !17, i64 40, !17, i64 48, !17, i64 56, !17, i64 64, !17, i64 72, !17, i64 80, !17, i64 88, !17, i64 96, !17, i64 104, !17, i64 112, !17, i64 120, !22, i64 128, !17, i64 136, !15, i64 144, !17, i64 152, !15, i64 160, !17, i64 168, !17, i64 176, !17, i64 184, !17, i64 192, !10, i64 200, !10, i64 204, !15, i64 208, !15, i64 212, !15, i64 216}
!21 = !{!"_ZTSN7qpOASES10PrintLevelE", !11, i64 0}
!22 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !11, i64 0}
!23 = !{!"_ZTSN7qpOASES7FlipperE", !15, i64 0, !15, i64 4, !13, i64 8, !24, i64 128, !12, i64 248, !12, i64 256, !12, i64 264}
!24 = !{!"_ZTSN7qpOASES11ConstraintsE", !14, i64 0, !16, i64 40, !16, i64 80}
!25 = !{!"_ZTSN7qpOASES13TabularOutputE", !15, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !15, i64 16, !15, i64 20, !15, i64 24, !15, i64 28}
!26 = !{!17, !17, i64 0}
!27 = !{!9, !15, i64 232}
!28 = !{!15, !15, i64 0}
!29 = !{!9, !17, i64 384}
!30 = !{!9, !10, i64 176}
!31 = !{!9, !10, i64 280}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !33}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !33}
!37 = !{!9, !17, i64 392}
!38 = !{!9, !10, i64 212}
!39 = !{!9, !17, i64 320}
!40 = !{!9, !12, i64 184}
!41 = distinct !{!41, !33}
!42 = !{!43, !12, i64 976}
!43 = !{!"_ZTSN7qpOASES8QProblemE", !9, i64 0, !10, i64 800, !12, i64 808, !12, i64 816, !12, i64 824, !24, i64 832, !12, i64 952, !12, i64 960, !15, i64 968, !12, i64 976, !12, i64 984, !12, i64 992, !12, i64 1000, !12, i64 1008, !12, i64 1016, !12, i64 1024, !12, i64 1032, !12, i64 1040, !12, i64 1048, !12, i64 1056}
!44 = distinct !{!44, !33}
!45 = !{!9, !10, i64 216}
!46 = !{!9, !15, i64 264}
!47 = distinct !{!47, !33}


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