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

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

%"class.qpOASES::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::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::Options" = type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, double, i32, [4 x i8], double, i32, [4 x i8], double, i32, [4 x i8], double, double, double, double, i32, i32, i32, i32, i32, [4 x i8] }>
%"class.qpOASES::Flipper" = type { i32, i32, %"class.qpOASES::Bounds", %"class.qpOASES::Constraints", ptr, ptr, ptr }
%"class.qpOASES::Constraints" = type { %"class.qpOASES::SubjectTo", %"class.qpOASES::Indexlist", %"class.qpOASES::Indexlist" }
%"struct.qpOASES::TabularOutput" = type { i32, i32, i32, i32, i32, i32, i32, i32 }

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

declare i32 @__gxx_personality_v0(...)

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() #0

; Function Attrs: nounwind
declare void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #1

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES9QProblemB14solveInitialQPEPKdS2_PKNS_6BoundsES2_RiPd(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef %6) #6 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca double, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.qpOASES::Bounds", align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  %28 = load ptr, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  %29 = call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
  store i32 %29, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  store double 0.000000e+00, ptr %19, align 8, !tbaa !11
  %30 = load ptr, ptr %15, align 8, !tbaa !5
  %31 = icmp ne ptr %30, null
  br i1 %31, label %32, label %34

32:                                               ; preds = %7
  %33 = call noundef double @_ZN7qpOASES10getCPUtimeEv()
  store double %33, ptr %19, align 8, !tbaa !11
  br label %34

34:                                               ; preds = %32, %7
  %35 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 12
  store i32 0, ptr %35, align 8, !tbaa !13
  %36 = call noundef i32 @_ZN7qpOASES9QProblemB20determineHessianTypeEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
  %37 = icmp ne i32 %36, 0
  br i1 %37, label %38, label %41

38:                                               ; preds = %34
  %39 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %40 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %39, i32 noundef 33, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2280, i32 noundef 1)
  store i32 %40, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %385

41:                                               ; preds = %34
  %42 = load ptr, ptr %28, align 8, !tbaa !27
  %43 = getelementptr inbounds ptr, ptr %42, i64 10
  %44 = load ptr, ptr %43, align 8
  %45 = call noundef i32 %44(ptr noundef nonnull align 8 dereferenceable(800) %28)
  %46 = icmp ne i32 %45, 0
  br i1 %46, label %47, label %50

47:                                               ; preds = %41
  %48 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %49 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %48, i32 noundef 33, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2284, i32 noundef 1)
  store i32 %49, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %385

50:                                               ; preds = %41
  %51 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 12
  store i32 1, ptr %51, align 8, !tbaa !13
  %52 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 6
  %53 = call noundef i32 @_ZN7qpOASES6Bounds12setupAllFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %52)
  %54 = icmp ne i32 %53, 0
  br i1 %54, label %55, label %58

55:                                               ; preds = %50
  %56 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %57 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %56, i32 noundef 33, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2292, i32 noundef 1)
  store i32 %57, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %385

58:                                               ; preds = %50
  %59 = load ptr, ptr %10, align 8, !tbaa !5
  %60 = load ptr, ptr %11, align 8, !tbaa !5
  %61 = call noundef i32 @_ZN7qpOASES9QProblemB24setupAuxiliaryQPsolutionEPKdS2_(ptr noundef nonnull align 8 dereferenceable(800) %28, ptr noundef %59, ptr noundef %60)
  %62 = icmp ne i32 %61, 0
  br i1 %62, label %63, label %66

63:                                               ; preds = %58
  %64 = call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %65 = call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %64, i32 noundef 33, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2296, i32 noundef 1)
  store i32 %65, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %385

66:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 120, ptr %21) #9
  %67 = load i32, ptr %18, align 4, !tbaa !9
  call void @_ZN7qpOASES6BoundsC1Ei(ptr noundef nonnull align 8 dereferenceable(120) %21, i32 noundef %67)
  %68 = load ptr, ptr %10, align 8, !tbaa !5
  %69 = load ptr, ptr %11, align 8, !tbaa !5
  %70 = load ptr, ptr %12, align 8, !tbaa !5
  %71 = invoke noundef i32 @_ZNK7qpOASES9QProblemB25obtainAuxiliaryWorkingSetEPKdS2_PKNS_6BoundsEPS3_(ptr noundef nonnull align 8 dereferenceable(800) %28, ptr noundef %68, ptr noundef %69, ptr noundef %70, ptr noundef %21)
          to label %72 unwind label %79

72:                                               ; preds = %66
  %73 = icmp ne i32 %71, 0
  br i1 %73, label %74, label %83

74:                                               ; preds = %72
  %75 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %76 unwind label %79

76:                                               ; preds = %74
  %77 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %75, i32 noundef 33, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2301, i32 noundef 1)
          to label %78 unwind label %79

78:                                               ; preds = %76
  store i32 %77, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %383

79:                                               ; preds = %121, %119, %106, %104, %100, %89, %87, %83, %76, %74, %66
  %80 = landingpad { ptr, i32 }
          cleanup
  %81 = extractvalue { ptr, i32 } %80, 0
  store ptr %81, ptr %22, align 8
  %82 = extractvalue { ptr, i32 } %80, 1
  store i32 %82, ptr %23, align 4
  br label %384

83:                                               ; preds = %72
  %84 = invoke noundef i32 @_ZN7qpOASES9QProblemB24setupAuxiliaryWorkingSetEPKNS_6BoundsENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %28, ptr noundef %21, i32 noundef 1)
          to label %85 unwind label %79

85:                                               ; preds = %83
  %86 = icmp ne i32 %84, 0
  br i1 %86, label %87, label %92

87:                                               ; preds = %85
  %88 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %89 unwind label %79

89:                                               ; preds = %87
  %90 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %88, i32 noundef 33, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2306, i32 noundef 1)
          to label %91 unwind label %79

91:                                               ; preds = %89
  store i32 %90, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %383

92:                                               ; preds = %85
  %93 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 15
  %94 = load i32, ptr %93, align 4, !tbaa !29
  %95 = icmp eq i32 %94, 0
  br i1 %95, label %100, label %96

96:                                               ; preds = %92
  %97 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 15
  %98 = load i32, ptr %97, align 4, !tbaa !29
  %99 = icmp eq i32 %98, 4
  br i1 %99, label %100, label %110

100:                                              ; preds = %96, %92
  %101 = invoke noundef i32 @_ZN7qpOASES9QProblemB17regulariseHessianEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
          to label %102 unwind label %79

102:                                              ; preds = %100
  %103 = icmp ne i32 %101, 0
  br i1 %103, label %104, label %109

104:                                              ; preds = %102
  %105 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %106 unwind label %79

106:                                              ; preds = %104
  %107 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %105, i32 noundef 39, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2312, i32 noundef 1)
          to label %108 unwind label %79

108:                                              ; preds = %106
  store i32 %107, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %383

109:                                              ; preds = %102
  br label %110

110:                                              ; preds = %109, %96
  %111 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 8
  store i32 0, ptr %111, align 8, !tbaa !30
  %112 = load ptr, ptr %13, align 8, !tbaa !5
  %113 = icmp ne ptr %112, null
  br i1 %113, label %114, label %182

114:                                              ; preds = %110
  %115 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 23
  %116 = getelementptr inbounds %"class.qpOASES::Options", ptr %115, i32 0, i32 21
  %117 = load i32, ptr %116, align 8, !tbaa !31
  %118 = icmp ne i32 %117, 0
  br i1 %118, label %119, label %124

119:                                              ; preds = %114
  %120 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %121 unwind label %79

121:                                              ; preds = %119
  %122 = invoke noundef i32 @_ZN7qpOASES15MessageHandling12throwWarningENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %120, i32 noundef 44, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2322, i32 noundef 1)
          to label %123 unwind label %79

123:                                              ; preds = %121
  br label %181

124:                                              ; preds = %114
  %125 = load ptr, ptr %13, align 8, !tbaa !5
  %126 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %127 = load ptr, ptr %126, align 8, !tbaa !32
  %128 = icmp eq ptr %125, %127
  br i1 %128, label %129, label %131

129:                                              ; preds = %124
  %130 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 8
  store i32 1, ptr %130, align 8, !tbaa !30
  br label %180

131:                                              ; preds = %124
  %132 = load ptr, ptr %10, align 8, !tbaa !5
  %133 = icmp eq ptr %132, null
  br i1 %133, label %134, label %179

134:                                              ; preds = %131
  %135 = load ptr, ptr %11, align 8, !tbaa !5
  %136 = icmp eq ptr %135, null
  br i1 %136, label %137, label %179

137:                                              ; preds = %134
  %138 = load ptr, ptr %12, align 8, !tbaa !5
  %139 = icmp eq ptr %138, null
  br i1 %139, label %140, label %179

140:                                              ; preds = %137
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %141

141:                                              ; preds = %174, %140
  %142 = load i32, ptr %16, align 4, !tbaa !9
  %143 = load i32, ptr %18, align 4, !tbaa !9
  %144 = icmp slt i32 %142, %143
  br i1 %144, label %145, label %177

145:                                              ; preds = %141
  %146 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %146, ptr %17, align 4, !tbaa !9
  br label %147

147:                                              ; preds = %170, %145
  %148 = load i32, ptr %17, align 4, !tbaa !9
  %149 = load i32, ptr %18, align 4, !tbaa !9
  %150 = icmp slt i32 %148, %149
  br i1 %150, label %151, label %173

151:                                              ; preds = %147
  %152 = load ptr, ptr %13, align 8, !tbaa !5
  %153 = load i32, ptr %16, align 4, !tbaa !9
  %154 = load i32, ptr %18, align 4, !tbaa !9
  %155 = mul nsw i32 %153, %154
  %156 = load i32, ptr %17, align 4, !tbaa !9
  %157 = add nsw i32 %155, %156
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds double, ptr %152, i64 %158
  %160 = load double, ptr %159, align 8, !tbaa !11
  %161 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 7
  %162 = load ptr, ptr %161, align 8, !tbaa !32
  %163 = load i32, ptr %16, align 4, !tbaa !9
  %164 = load i32, ptr %18, align 4, !tbaa !9
  %165 = load i32, ptr %17, align 4, !tbaa !9
  %166 = mul nsw i32 %164, %165
  %167 = add nsw i32 %163, %166
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds double, ptr %162, i64 %168
  store double %160, ptr %169, align 8, !tbaa !11
  br label %170

170:                                              ; preds = %151
  %171 = load i32, ptr %17, align 4, !tbaa !9
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %17, align 4, !tbaa !9
  br label %147, !llvm.loop !33

173:                                              ; preds = %147
  br label %174

174:                                              ; preds = %173
  %175 = load i32, ptr %16, align 4, !tbaa !9
  %176 = add nsw i32 %175, 1
  store i32 %176, ptr %16, align 4, !tbaa !9
  br label %141, !llvm.loop !35

177:                                              ; preds = %141
  %178 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 8
  store i32 1, ptr %178, align 8, !tbaa !30
  br label %179

179:                                              ; preds = %177, %137, %134, %131
  br label %180

180:                                              ; preds = %179, %129
  br label %181

181:                                              ; preds = %180, %123
  br label %182

182:                                              ; preds = %181, %110
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %183 = load i32, ptr %18, align 4, !tbaa !9
  %184 = sext i32 %183 to i64
  %185 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %184, i64 8)
  %186 = extractvalue { i64, i1 } %185, 1
  %187 = extractvalue { i64, i1 } %185, 0
  %188 = select i1 %186, i64 -1, i64 %187
  %189 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %188) #10
          to label %190 unwind label %245

190:                                              ; preds = %182
  store ptr %189, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %191 = load i32, ptr %18, align 4, !tbaa !9
  %192 = sext i32 %191 to i64
  %193 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %192, i64 8)
  %194 = extractvalue { i64, i1 } %193, 1
  %195 = extractvalue { i64, i1 } %193, 0
  %196 = select i1 %194, i64 -1, i64 %195
  %197 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %196) #10
          to label %198 unwind label %249

198:                                              ; preds = %190
  store ptr %197, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %199 = load i32, ptr %18, align 4, !tbaa !9
  %200 = sext i32 %199 to i64
  %201 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %200, i64 8)
  %202 = extractvalue { i64, i1 } %201, 1
  %203 = extractvalue { i64, i1 } %201, 0
  %204 = select i1 %202, i64 -1, i64 %203
  %205 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %204) #10
          to label %206 unwind label %253

206:                                              ; preds = %198
  store ptr %205, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %242, %206
  %208 = load i32, ptr %16, align 4, !tbaa !9
  %209 = load i32, ptr %18, align 4, !tbaa !9
  %210 = icmp slt i32 %208, %209
  br i1 %210, label %211, label %257

211:                                              ; preds = %207
  %212 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 3
  %213 = load ptr, ptr %212, align 8, !tbaa !36
  %214 = load i32, ptr %16, align 4, !tbaa !9
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %213, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !11
  %218 = load ptr, ptr %24, align 8, !tbaa !5
  %219 = load i32, ptr %16, align 4, !tbaa !9
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds double, ptr %218, i64 %220
  store double %217, ptr %221, align 8, !tbaa !11
  %222 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 4
  %223 = load ptr, ptr %222, align 8, !tbaa !37
  %224 = load i32, ptr %16, align 4, !tbaa !9
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds double, ptr %223, i64 %225
  %227 = load double, ptr %226, align 8, !tbaa !11
  %228 = load ptr, ptr %25, align 8, !tbaa !5
  %229 = load i32, ptr %16, align 4, !tbaa !9
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds double, ptr %228, i64 %230
  store double %227, ptr %231, align 8, !tbaa !11
  %232 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 5
  %233 = load ptr, ptr %232, align 8, !tbaa !38
  %234 = load i32, ptr %16, 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 ptr, ptr %26, align 8, !tbaa !5
  %239 = load i32, ptr %16, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds double, ptr %238, i64 %240
  store double %237, ptr %241, align 8, !tbaa !11
  br label %242

242:                                              ; preds = %211
  %243 = load i32, ptr %16, align 4, !tbaa !9
  %244 = add nsw i32 %243, 1
  store i32 %244, ptr %16, align 4, !tbaa !9
  br label %207, !llvm.loop !39

245:                                              ; preds = %182
  %246 = landingpad { ptr, i32 }
          cleanup
  %247 = extractvalue { ptr, i32 } %246, 0
  store ptr %247, ptr %22, align 8
  %248 = extractvalue { ptr, i32 } %246, 1
  store i32 %248, ptr %23, align 4
  br label %382

249:                                              ; preds = %190
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %22, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %23, align 4
  br label %381

253:                                              ; preds = %303, %296, %294, %278, %275, %273, %257, %198
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %22, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %23, align 4
  br label %380

257:                                              ; preds = %207
  %258 = invoke noundef i32 @_ZN7qpOASES9QProblemB24setupAuxiliaryQPgradientEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
          to label %259 unwind label %253

259:                                              ; preds = %257
  %260 = icmp ne i32 %258, 0
  br i1 %260, label %261, label %278

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

264:                                              ; preds = %261
  call void @_ZdaPv(ptr noundef %262) #11
  br label %265

265:                                              ; preds = %264, %261
  %266 = load ptr, ptr %25, align 8, !tbaa !5
  %267 = icmp eq ptr %266, null
  br i1 %267, label %269, label %268

268:                                              ; preds = %265
  call void @_ZdaPv(ptr noundef %266) #11
  br label %269

269:                                              ; preds = %268, %265
  %270 = load ptr, ptr %24, align 8, !tbaa !5
  %271 = icmp eq ptr %270, null
  br i1 %271, label %273, label %272

272:                                              ; preds = %269
  call void @_ZdaPv(ptr noundef %270) #11
  br label %273

273:                                              ; preds = %272, %269
  %274 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %275 unwind label %253

275:                                              ; preds = %273
  %276 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %274, i32 noundef 33, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2358, i32 noundef 1)
          to label %277 unwind label %253

277:                                              ; preds = %275
  store i32 %276, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %379

278:                                              ; preds = %259
  %279 = invoke noundef i32 @_ZN7qpOASES9QProblemB22setupAuxiliaryQPboundsENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %28, i32 noundef 1)
          to label %280 unwind label %253

280:                                              ; preds = %278
  %281 = icmp ne i32 %279, 0
  br i1 %281, label %282, label %299

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

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

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

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

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

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

294:                                              ; preds = %293, %290
  %295 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %296 unwind label %253

296:                                              ; preds = %294
  %297 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %295, i32 noundef 33, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2364, i32 noundef 1)
          to label %298 unwind label %253

298:                                              ; preds = %296
  store i32 %297, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %379

299:                                              ; preds = %280
  %300 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %28, i32 0, i32 12
  store i32 2, ptr %300, align 8, !tbaa !13
  %301 = load ptr, ptr %15, align 8, !tbaa !5
  %302 = icmp ne ptr %301, null
  br i1 %302, label %303, label %311

303:                                              ; preds = %299
  %304 = invoke noundef double @_ZN7qpOASES10getCPUtimeEv()
          to label %305 unwind label %253

305:                                              ; preds = %303
  %306 = load double, ptr %19, align 8, !tbaa !11
  %307 = fsub double %304, %306
  %308 = load ptr, ptr %15, align 8, !tbaa !5
  %309 = load double, ptr %308, align 8, !tbaa !11
  %310 = fsub double %309, %307
  store double %310, ptr %308, align 8, !tbaa !11
  br label %311

311:                                              ; preds = %305, %299
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #9
  %312 = load ptr, ptr %24, align 8, !tbaa !5
  %313 = load ptr, ptr %25, align 8, !tbaa !5
  %314 = load ptr, ptr %26, align 8, !tbaa !5
  %315 = load ptr, ptr %14, align 8, !tbaa !5
  %316 = load ptr, ptr %15, align 8, !tbaa !5
  %317 = invoke noundef i32 @_ZN7qpOASES9QProblemB8hotstartEPKdS2_S2_RiPdPKNS_6BoundsE(ptr noundef nonnull align 8 dereferenceable(800) %28, ptr noundef %312, ptr noundef %313, ptr noundef %314, ptr noundef nonnull align 4 dereferenceable(4) %315, ptr noundef %316, ptr noundef null)
          to label %318 unwind label %339

318:                                              ; preds = %311
  store i32 %317, ptr %27, align 4, !tbaa !40
  %319 = load ptr, ptr %26, align 8, !tbaa !5
  %320 = icmp eq ptr %319, null
  br i1 %320, label %322, label %321

321:                                              ; preds = %318
  call void @_ZdaPv(ptr noundef %319) #11
  br label %322

322:                                              ; preds = %321, %318
  %323 = load ptr, ptr %25, align 8, !tbaa !5
  %324 = icmp eq ptr %323, null
  br i1 %324, label %326, label %325

325:                                              ; preds = %322
  call void @_ZdaPv(ptr noundef %323) #11
  br label %326

326:                                              ; preds = %325, %322
  %327 = load ptr, ptr %24, align 8, !tbaa !5
  %328 = icmp eq ptr %327, null
  br i1 %328, label %330, label %329

329:                                              ; preds = %326
  call void @_ZdaPv(ptr noundef %327) #11
  br label %330

330:                                              ; preds = %329, %326
  %331 = invoke noundef i32 @_ZNK7qpOASES9QProblemB12isInfeasibleEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
          to label %332 unwind label %339

332:                                              ; preds = %330
  %333 = icmp eq i32 %331, 1
  br i1 %333, label %334, label %343

334:                                              ; preds = %332
  %335 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %336 unwind label %339

336:                                              ; preds = %334
  %337 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %335, i32 noundef 37, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2384, i32 noundef 1)
          to label %338 unwind label %339

338:                                              ; preds = %336
  store i32 %337, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %378

339:                                              ; preds = %374, %372, %366, %360, %358, %349, %347, %343, %336, %334, %330, %311
  %340 = landingpad { ptr, i32 }
          cleanup
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %22, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  br label %380

343:                                              ; preds = %332
  %344 = invoke noundef i32 @_ZNK7qpOASES9QProblemB11isUnboundedEv(ptr noundef nonnull align 8 dereferenceable(800) %28)
          to label %345 unwind label %339

345:                                              ; preds = %343
  %346 = icmp eq i32 %344, 1
  br i1 %346, label %347, label %352

347:                                              ; preds = %345
  %348 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %349 unwind label %339

349:                                              ; preds = %347
  %350 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %348, i32 noundef 38, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2387, i32 noundef 1)
          to label %351 unwind label %339

351:                                              ; preds = %349
  store i32 %350, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %378

352:                                              ; preds = %345
  %353 = load i32, ptr %27, align 4, !tbaa !40
  %354 = icmp ne i32 %353, 0
  br i1 %354, label %355, label %363

355:                                              ; preds = %352
  %356 = load i32, ptr %27, align 4, !tbaa !40
  %357 = icmp ne i32 %356, 64
  br i1 %357, label %358, label %363

358:                                              ; preds = %355
  %359 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %360 unwind label %339

360:                                              ; preds = %358
  %361 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %359, i32 noundef 36, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2391, i32 noundef 1)
          to label %362 unwind label %339

362:                                              ; preds = %360
  store i32 %361, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %378

363:                                              ; preds = %355, %352
  %364 = load ptr, ptr %15, align 8, !tbaa !5
  %365 = icmp ne ptr %364, null
  br i1 %365, label %366, label %372

366:                                              ; preds = %363
  %367 = invoke noundef double @_ZN7qpOASES10getCPUtimeEv()
          to label %368 unwind label %339

368:                                              ; preds = %366
  %369 = load double, ptr %19, align 8, !tbaa !11
  %370 = fsub double %367, %369
  %371 = load ptr, ptr %15, align 8, !tbaa !5
  store double %370, ptr %371, align 8, !tbaa !11
  br label %372

372:                                              ; preds = %368, %363
  %373 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %374 unwind label %339

374:                                              ; preds = %372
  %375 = invoke noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %373, i32 noundef 40, ptr noundef null, ptr noundef @.str, ptr noundef @.str.1, i64 noundef 2398, i32 noundef 1)
          to label %376 unwind label %339

376:                                              ; preds = %374
  %377 = load i32, ptr %27, align 4, !tbaa !40
  store i32 %377, ptr %8, align 4
  store i32 1, ptr %20, align 4
  br label %378

378:                                              ; preds = %376, %362, %351, %338
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #9
  br label %379

379:                                              ; preds = %378, %298, %277
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %383

380:                                              ; preds = %339, %253
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %381

381:                                              ; preds = %380, %249
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %382

382:                                              ; preds = %381, %245
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %384

383:                                              ; preds = %379, %108, %91, %78
  call void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %21) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %21) #9
  br label %385

384:                                              ; preds = %382, %79
  call void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %21) #9
  call void @llvm.lifetime.end.p0(i64 120, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  br label %387

385:                                              ; preds = %383, %63, %55, %47, %38
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  %386 = load i32, ptr %8, align 4
  ret i32 %386

387:                                              ; preds = %384
  %388 = load ptr, ptr %22, align 8
  %389 = load i32, ptr %23, align 4
  %390 = insertvalue { ptr, i32 } poison, ptr %388, 0
  %391 = insertvalue { ptr, i32 } %390, i32 %389, 1
  resume { ptr, i32 } %391
}

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

declare noundef double @_ZN7qpOASES10getCPUtimeEv() #0

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

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

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

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

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

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

declare noundef i32 @_ZN7qpOASES6Bounds12setupAllFreeEv(ptr noundef nonnull align 8 dereferenceable(120)) #0

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

declare void @_ZN7qpOASES6BoundsC1Ei(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) unnamed_addr #0

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !19, i64 208}
!14 = !{!"_ZTSN7qpOASES9QProblemBE", !15, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !16, i64 48, !6, i64 168, !15, i64 176, !6, i64 184, !6, i64 192, !12, i64 200, !19, i64 208, !15, i64 212, !15, i64 216, !20, i64 220, !12, i64 224, !10, i64 232, !6, i64 240, !12, i64 248, !12, i64 256, !10, i64 264, !21, i64 272, !24, i64 496, !26, i64 768}
!15 = !{!"_ZTSN7qpOASES11BooleanTypeE", !7, i64 0}
!16 = !{!"_ZTSN7qpOASES6BoundsE", !17, i64 0, !18, i64 40, !18, i64 80}
!17 = !{!"_ZTSN7qpOASES9SubjectToE", !10, i64 8, !6, i64 16, !6, i64 24, !15, i64 32, !15, i64 36}
!18 = !{!"_ZTSN7qpOASES9IndexlistE", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32}
!19 = !{!"_ZTSN7qpOASES14QProblemStatusE", !7, i64 0}
!20 = !{!"_ZTSN7qpOASES11HessianTypeE", !7, i64 0}
!21 = !{!"_ZTSN7qpOASES7OptionsE", !22, i64 0, !15, i64 4, !15, i64 8, !15, i64 12, !15, i64 16, !15, i64 20, !15, i64 24, !10, i64 28, !10, i64 32, !15, 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, !23, 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, !15, i64 200, !15, i64 204, !10, i64 208, !10, i64 212, !10, i64 216}
!22 = !{!"_ZTSN7qpOASES10PrintLevelE", !7, i64 0}
!23 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !7, i64 0}
!24 = !{!"_ZTSN7qpOASES7FlipperE", !10, i64 0, !10, i64 4, !16, i64 8, !25, i64 128, !6, i64 248, !6, i64 256, !6, i64 264}
!25 = !{!"_ZTSN7qpOASES11ConstraintsE", !17, i64 0, !18, i64 40, !18, i64 80}
!26 = !{!"_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}
!27 = !{!28, !28, i64 0}
!28 = !{!"vtable pointer", !8, i64 0}
!29 = !{!14, !20, i64 220}
!30 = !{!14, !15, i64 176}
!31 = !{!14, !23, i64 400}
!32 = !{!14, !6, i64 168}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = distinct !{!35, !34}
!36 = !{!14, !6, i64 24}
!37 = !{!14, !6, i64 32}
!38 = !{!14, !6, i64 40}
!39 = distinct !{!39, !34}
!40 = !{!41, !41, i64 0}
!41 = !{!"_ZTSN7qpOASES11returnValueE", !7, i64 0}


; 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"

%"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] }>

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

declare i32 @__gxx_personality_v0(...)

declare noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv() local_unnamed_addr #0

; Function Attrs: nounwind
declare void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES9QProblemB14solveInitialQPEPKdS2_PKNS_6BoundsES2_RiPd(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef readonly %4, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef %6) local_unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"class.qpOASES::Bounds", align 8
  %9 = tail call noundef i32 @_ZNK7qpOASES9QProblemB5getNVEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %.not = icmp eq ptr %6, null
  br i1 %.not, label %12, label %10

10:                                               ; preds = %7
  %11 = tail call noundef double @_ZN7qpOASES10getCPUtimeEv()
  br label %12

12:                                               ; preds = %10, %7
  %.075 = phi double [ %11, %10 ], [ 0.000000e+00, %7 ]
  %13 = getelementptr inbounds i8, ptr %0, i64 208
  store i32 0, ptr %13, align 8, !tbaa !5
  %14 = tail call noundef i32 @_ZN7qpOASES9QProblemB20determineHessianTypeEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %.not89 = icmp eq i32 %14, 0
  br i1 %.not89, label %18, label %15

15:                                               ; preds = %12
  %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 33, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2280, i32 noundef 1)
  br label %229

18:                                               ; preds = %12
  %19 = load ptr, ptr %0, align 8, !tbaa !24
  %20 = getelementptr inbounds i8, ptr %19, i64 80
  %21 = load ptr, ptr %20, align 8
  %22 = tail call noundef i32 %21(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %.not90 = icmp eq i32 %22, 0
  br i1 %.not90, label %26, label %23

23:                                               ; preds = %18
  %24 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %25 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %24, i32 noundef 33, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2284, i32 noundef 1)
  br label %229

26:                                               ; preds = %18
  store i32 1, ptr %13, align 8, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %0, i64 48
  %28 = tail call noundef i32 @_ZN7qpOASES6Bounds12setupAllFreeEv(ptr noundef nonnull align 8 dereferenceable(120) %27)
  %.not91 = icmp eq i32 %28, 0
  br i1 %.not91, label %32, label %29

29:                                               ; preds = %26
  %30 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %31 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %30, i32 noundef 33, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2292, i32 noundef 1)
  br label %229

32:                                               ; preds = %26
  %33 = tail call noundef i32 @_ZN7qpOASES9QProblemB24setupAuxiliaryQPsolutionEPKdS2_(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %1, ptr noundef %2)
  %.not92 = icmp eq i32 %33, 0
  br i1 %.not92, label %37, label %34

34:                                               ; preds = %32
  %35 = tail call noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
  %36 = tail call noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %35, i32 noundef 33, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2296, i32 noundef 1)
  br label %229

37:                                               ; preds = %32
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %8) #8
  call void @_ZN7qpOASES6BoundsC1Ei(ptr noundef nonnull align 8 dereferenceable(120) %8, i32 noundef %9)
  %38 = invoke noundef i32 @_ZNK7qpOASES9QProblemB25obtainAuxiliaryWorkingSetEPKdS2_PKNS_6BoundsEPS3_(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %8)
          to label %39 unwind label %42

39:                                               ; preds = %37
  %.not93 = icmp eq i32 %38, 0
  br i1 %.not93, label %44, label %40

40:                                               ; preds = %39
  %41 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke unwind label %42

42:                                               ; preds = %.invoke, %68, %66, %55, %52, %47, %44, %40, %37
  %43 = landingpad { ptr, i32 }
          cleanup
  br label %228

44:                                               ; preds = %39
  %45 = invoke noundef i32 @_ZN7qpOASES9QProblemB24setupAuxiliaryWorkingSetEPKNS_6BoundsENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef nonnull %8, i32 noundef 1)
          to label %46 unwind label %42

46:                                               ; preds = %44
  %.not94 = icmp eq i32 %45, 0
  br i1 %.not94, label %49, label %47

47:                                               ; preds = %46
  %48 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke unwind label %42

49:                                               ; preds = %46
  %50 = getelementptr inbounds i8, ptr %0, i64 220
  %51 = load i32, ptr %50, align 4, !tbaa !26
  switch i32 %51, label %61 [
    i32 0, label %52
    i32 4, label %52
  ]

52:                                               ; preds = %49, %49
  %53 = invoke noundef i32 @_ZN7qpOASES9QProblemB17regulariseHessianEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
          to label %54 unwind label %42

54:                                               ; preds = %52
  %.not95 = icmp eq i32 %53, 0
  br i1 %.not95, label %61, label %55

55:                                               ; preds = %54
  %56 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke unwind label %42

.invoke:                                          ; preds = %40, %55, %47
  %57 = phi ptr [ %48, %47 ], [ %56, %55 ], [ %41, %40 ]
  %58 = phi i32 [ 33, %47 ], [ 39, %55 ], [ 33, %40 ]
  %59 = phi i64 [ 2306, %47 ], [ 2312, %55 ], [ 2301, %40 ]
  %60 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %57, i32 noundef %58, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef %59, i32 noundef 1)
          to label %227 unwind label %42

61:                                               ; preds = %49, %54
  %62 = getelementptr inbounds i8, ptr %0, i64 176
  store i32 0, ptr %62, align 8, !tbaa !27
  %.not96 = icmp eq ptr %4, null
  br i1 %.not96, label %94, label %63

63:                                               ; preds = %61
  %64 = getelementptr inbounds i8, ptr %0, i64 400
  %65 = load i32, ptr %64, align 8, !tbaa !28
  %.not97 = icmp eq i32 %65, 0
  br i1 %.not97, label %70, label %66

66:                                               ; preds = %63
  %67 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %68 unwind label %42

68:                                               ; preds = %66
  %69 = invoke noundef i32 @_ZN7qpOASES15MessageHandling12throwWarningENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %67, i32 noundef 44, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2322, i32 noundef 1)
          to label %94 unwind label %42

70:                                               ; preds = %63
  %71 = getelementptr inbounds i8, ptr %0, i64 168
  %72 = load ptr, ptr %71, align 8, !tbaa !29
  %73 = icmp eq ptr %72, %4
  br i1 %73, label %.sink.split, label %74

74:                                               ; preds = %70
  %75 = icmp eq ptr %1, null
  %76 = icmp eq ptr %2, null
  %or.cond = and i1 %75, %76
  %77 = icmp eq ptr %3, null
  %or.cond3 = and i1 %or.cond, %77
  br i1 %or.cond3, label %.preheader106, label %94

.preheader106:                                    ; preds = %74
  %78 = icmp sgt i32 %9, 0
  br i1 %78, label %.preheader105.preheader, label %.sink.split

.preheader105.preheader:                          ; preds = %.preheader106
  %79 = zext nneg i32 %9 to i64
  %xtraiter = and i64 %79, 1
  %80 = icmp eq i32 %9, 1
  br i1 %80, label %.sink.split.loopexit.unr-lcssa, label %.preheader105.preheader.new

.preheader105.preheader.new:                      ; preds = %.preheader105.preheader
  %unroll_iter = and i64 %79, 2147483646
  br label %.preheader105

.preheader105:                                    ; preds = %89, %.preheader105.preheader.new
  %indvars.iv = phi i64 [ 0, %.preheader105.preheader.new ], [ %indvars.iv.next.1, %89 ]
  %niter = phi i64 [ 0, %.preheader105.preheader.new ], [ %niter.next.1, %89 ]
  %81 = mul nuw nsw i64 %indvars.iv, %79
  %invariant.gep = getelementptr inbounds double, ptr %4, i64 %81
  %invariant.gep122 = getelementptr inbounds double, ptr %72, i64 %indvars.iv
  br label %82

82:                                               ; preds = %.preheader105, %82
  %indvars.iv111 = phi i64 [ %indvars.iv, %.preheader105 ], [ %indvars.iv.next112, %82 ]
  %gep = getelementptr inbounds double, ptr %invariant.gep, i64 %indvars.iv111
  %83 = load double, ptr %gep, align 8, !tbaa !30
  %84 = mul nuw nsw i64 %indvars.iv111, %79
  %gep123 = getelementptr inbounds double, ptr %invariant.gep122, i64 %84
  store double %83, ptr %gep123, align 8, !tbaa !30
  %indvars.iv.next112 = add nuw nsw i64 %indvars.iv111, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next112, %79
  br i1 %exitcond.not, label %.preheader105.1, label %82, !llvm.loop !31

.preheader105.1:                                  ; preds = %82
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %85 = mul nuw nsw i64 %indvars.iv.next, %79
  %invariant.gep.1 = getelementptr inbounds double, ptr %4, i64 %85
  %invariant.gep122.1 = getelementptr inbounds double, ptr %72, i64 %indvars.iv.next
  br label %86

86:                                               ; preds = %86, %.preheader105.1
  %indvars.iv111.1 = phi i64 [ %indvars.iv.next, %.preheader105.1 ], [ %indvars.iv.next112.1, %86 ]
  %gep.1 = getelementptr inbounds double, ptr %invariant.gep.1, i64 %indvars.iv111.1
  %87 = load double, ptr %gep.1, align 8, !tbaa !30
  %88 = mul nuw nsw i64 %indvars.iv111.1, %79
  %gep123.1 = getelementptr inbounds double, ptr %invariant.gep122.1, i64 %88
  store double %87, ptr %gep123.1, align 8, !tbaa !30
  %indvars.iv.next112.1 = add nuw nsw i64 %indvars.iv111.1, 1
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next112.1, %79
  br i1 %exitcond.not.1, label %89, label %86, !llvm.loop !31

89:                                               ; preds = %86
  %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 %.sink.split.loopexit.unr-lcssa, label %.preheader105, !llvm.loop !33

.sink.split.loopexit.unr-lcssa:                   ; preds = %89, %.preheader105.preheader
  %indvars.iv.unr = phi i64 [ 0, %.preheader105.preheader ], [ %indvars.iv.next.1, %89 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.sink.split, label %.preheader105.epil

.preheader105.epil:                               ; preds = %.sink.split.loopexit.unr-lcssa
  %90 = mul nuw nsw i64 %indvars.iv.unr, %79
  %invariant.gep.epil = getelementptr inbounds double, ptr %4, i64 %90
  %invariant.gep122.epil = getelementptr inbounds double, ptr %72, i64 %indvars.iv.unr
  br label %91

91:                                               ; preds = %91, %.preheader105.epil
  %indvars.iv111.epil = phi i64 [ %indvars.iv.unr, %.preheader105.epil ], [ %indvars.iv.next112.epil, %91 ]
  %gep.epil = getelementptr inbounds double, ptr %invariant.gep.epil, i64 %indvars.iv111.epil
  %92 = load double, ptr %gep.epil, align 8, !tbaa !30
  %93 = mul nuw nsw i64 %indvars.iv111.epil, %79
  %gep123.epil = getelementptr inbounds double, ptr %invariant.gep122.epil, i64 %93
  store double %92, ptr %gep123.epil, align 8, !tbaa !30
  %indvars.iv.next112.epil = add nuw nsw i64 %indvars.iv111.epil, 1
  %exitcond.not.epil = icmp eq i64 %indvars.iv.next112.epil, %79
  br i1 %exitcond.not.epil, label %.sink.split, label %91, !llvm.loop !31

.sink.split:                                      ; preds = %.sink.split.loopexit.unr-lcssa, %91, %.preheader106, %70
  store i32 1, ptr %62, align 8, !tbaa !27
  br label %94

94:                                               ; preds = %.sink.split, %68, %74, %61
  %95 = zext i32 %9 to i64
  %96 = icmp slt i32 %9, 0
  %97 = shl nuw nsw i64 %95, 3
  %98 = select i1 %96, i64 -1, i64 %97
  %99 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %98) #9
          to label %100 unwind label %171

100:                                              ; preds = %94
  %101 = ptrtoint ptr %99 to i64
  %102 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %98) #9
          to label %103 unwind label %173

103:                                              ; preds = %100
  %104 = ptrtoint ptr %102 to i64
  %105 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %98) #9
          to label %.preheader unwind label %175

.preheader:                                       ; preds = %103
  %106 = ptrtoint ptr %105 to i64
  %107 = icmp sgt i32 %9, 0
  br i1 %107, label %.lr.ph, label %._crit_edge110

.lr.ph:                                           ; preds = %.preheader
  %108 = getelementptr inbounds i8, ptr %0, i64 24
  %109 = load ptr, ptr %108, align 8, !tbaa !34
  %110 = getelementptr inbounds i8, ptr %0, i64 32
  %111 = load ptr, ptr %110, align 8, !tbaa !35
  %112 = getelementptr inbounds i8, ptr %0, i64 40
  %113 = load ptr, ptr %112, align 8, !tbaa !36
  %min.iters.check = icmp ult i32 %9, 44
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph
  %114 = ptrtoint ptr %113 to i64
  %115 = ptrtoint ptr %111 to i64
  %116 = ptrtoint ptr %109 to i64
  %117 = sub i64 %104, %101
  %diff.check = icmp ult i64 %117, 32
  %118 = sub i64 %106, %101
  %diff.check126 = icmp ult i64 %118, 32
  %conflict.rdx = or i1 %diff.check, %diff.check126
  %119 = sub i64 %101, %116
  %diff.check127 = icmp ult i64 %119, 32
  %conflict.rdx128 = or i1 %conflict.rdx, %diff.check127
  %120 = sub i64 %115, %101
  %diff.check129 = icmp ult i64 %120, 32
  %conflict.rdx130 = or i1 %conflict.rdx128, %diff.check129
  %121 = sub i64 %114, %101
  %diff.check131 = icmp ult i64 %121, 32
  %conflict.rdx132 = or i1 %conflict.rdx130, %diff.check131
  %122 = sub i64 %106, %104
  %diff.check133 = icmp ult i64 %122, 32
  %conflict.rdx134 = or i1 %conflict.rdx132, %diff.check133
  %123 = sub i64 %104, %116
  %diff.check135 = icmp ult i64 %123, 32
  %conflict.rdx136 = or i1 %conflict.rdx134, %diff.check135
  %124 = sub i64 %104, %115
  %diff.check137 = icmp ult i64 %124, 32
  %conflict.rdx138 = or i1 %conflict.rdx136, %diff.check137
  %125 = sub i64 %114, %104
  %diff.check139 = icmp ult i64 %125, 32
  %conflict.rdx140 = or i1 %conflict.rdx138, %diff.check139
  %126 = sub i64 %106, %116
  %diff.check141 = icmp ult i64 %126, 32
  %conflict.rdx142 = or i1 %conflict.rdx140, %diff.check141
  %127 = sub i64 %106, %115
  %diff.check143 = icmp ult i64 %127, 32
  %conflict.rdx144 = or i1 %conflict.rdx142, %diff.check143
  %128 = sub i64 %106, %114
  %diff.check145 = icmp ult i64 %128, 32
  %conflict.rdx146 = or i1 %conflict.rdx144, %diff.check145
  br i1 %conflict.rdx146, label %scalar.ph.preheader, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %129 = getelementptr inbounds double, ptr %109, i64 %index
  %130 = getelementptr inbounds i8, ptr %129, i64 16
  %wide.load = load <2 x double>, ptr %129, align 8, !tbaa !30
  %wide.load147 = load <2 x double>, ptr %130, align 8, !tbaa !30
  %131 = getelementptr inbounds double, ptr %99, i64 %index
  %132 = getelementptr inbounds i8, ptr %131, i64 16
  store <2 x double> %wide.load, ptr %131, align 8, !tbaa !30
  store <2 x double> %wide.load147, ptr %132, align 8, !tbaa !30
  %133 = getelementptr inbounds double, ptr %111, i64 %index
  %134 = getelementptr inbounds i8, ptr %133, i64 16
  %wide.load148 = load <2 x double>, ptr %133, align 8, !tbaa !30
  %wide.load149 = load <2 x double>, ptr %134, align 8, !tbaa !30
  %135 = getelementptr inbounds double, ptr %102, i64 %index
  %136 = getelementptr inbounds i8, ptr %135, i64 16
  store <2 x double> %wide.load148, ptr %135, align 8, !tbaa !30
  store <2 x double> %wide.load149, ptr %136, align 8, !tbaa !30
  %137 = getelementptr inbounds double, ptr %113, i64 %index
  %138 = getelementptr inbounds i8, ptr %137, i64 16
  %wide.load150 = load <2 x double>, ptr %137, align 8, !tbaa !30
  %wide.load151 = load <2 x double>, ptr %138, align 8, !tbaa !30
  %139 = getelementptr inbounds double, ptr %105, i64 %index
  %140 = getelementptr inbounds i8, ptr %139, i64 16
  store <2 x double> %wide.load150, ptr %139, align 8, !tbaa !30
  store <2 x double> %wide.load151, ptr %140, align 8, !tbaa !30
  %index.next = add nuw i64 %index, 4
  %141 = icmp eq i64 %index.next, %n.vec
  br i1 %141, label %middle.block, label %vector.body, !llvm.loop !37

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %95
  br i1 %cmp.n, label %._crit_edge110, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph
  %indvars.iv117.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph ], [ %n.vec, %middle.block ]
  %xtraiter152 = and i64 %95, 1
  %lcmp.mod153.not = icmp eq i64 %xtraiter152, 0
  br i1 %lcmp.mod153.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %142 = getelementptr inbounds double, ptr %109, i64 %indvars.iv117.ph
  %143 = load double, ptr %142, align 8, !tbaa !30
  %144 = getelementptr inbounds double, ptr %99, i64 %indvars.iv117.ph
  store double %143, ptr %144, align 8, !tbaa !30
  %145 = getelementptr inbounds double, ptr %111, i64 %indvars.iv117.ph
  %146 = load double, ptr %145, align 8, !tbaa !30
  %147 = getelementptr inbounds double, ptr %102, i64 %indvars.iv117.ph
  store double %146, ptr %147, align 8, !tbaa !30
  %148 = getelementptr inbounds double, ptr %113, i64 %indvars.iv117.ph
  %149 = load double, ptr %148, align 8, !tbaa !30
  %150 = getelementptr inbounds double, ptr %105, i64 %indvars.iv117.ph
  store double %149, ptr %150, align 8, !tbaa !30
  %indvars.iv.next118.prol = or disjoint i64 %indvars.iv117.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv117.unr = phi i64 [ %indvars.iv117.ph, %scalar.ph.preheader ], [ %indvars.iv.next118.prol, %scalar.ph.prol ]
  %151 = add nsw i64 %95, -1
  %152 = icmp eq i64 %indvars.iv117.ph, %151
  br i1 %152, label %._crit_edge110, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv117 = phi i64 [ %indvars.iv.next118.1, %scalar.ph ], [ %indvars.iv117.unr, %scalar.ph.prol.loopexit ]
  %153 = getelementptr inbounds double, ptr %109, i64 %indvars.iv117
  %154 = load double, ptr %153, align 8, !tbaa !30
  %155 = getelementptr inbounds double, ptr %99, i64 %indvars.iv117
  store double %154, ptr %155, align 8, !tbaa !30
  %156 = getelementptr inbounds double, ptr %111, i64 %indvars.iv117
  %157 = load double, ptr %156, align 8, !tbaa !30
  %158 = getelementptr inbounds double, ptr %102, i64 %indvars.iv117
  store double %157, ptr %158, align 8, !tbaa !30
  %159 = getelementptr inbounds double, ptr %113, i64 %indvars.iv117
  %160 = load double, ptr %159, align 8, !tbaa !30
  %161 = getelementptr inbounds double, ptr %105, i64 %indvars.iv117
  store double %160, ptr %161, align 8, !tbaa !30
  %indvars.iv.next118 = add nuw nsw i64 %indvars.iv117, 1
  %162 = getelementptr inbounds double, ptr %109, i64 %indvars.iv.next118
  %163 = load double, ptr %162, align 8, !tbaa !30
  %164 = getelementptr inbounds double, ptr %99, i64 %indvars.iv.next118
  store double %163, ptr %164, align 8, !tbaa !30
  %165 = getelementptr inbounds double, ptr %111, i64 %indvars.iv.next118
  %166 = load double, ptr %165, align 8, !tbaa !30
  %167 = getelementptr inbounds double, ptr %102, i64 %indvars.iv.next118
  store double %166, ptr %167, align 8, !tbaa !30
  %168 = getelementptr inbounds double, ptr %113, i64 %indvars.iv.next118
  %169 = load double, ptr %168, align 8, !tbaa !30
  %170 = getelementptr inbounds double, ptr %105, i64 %indvars.iv.next118
  store double %169, ptr %170, align 8, !tbaa !30
  %indvars.iv.next118.1 = add nuw nsw i64 %indvars.iv117, 2
  %exitcond121.not.1 = icmp eq i64 %indvars.iv.next118.1, %95
  br i1 %exitcond121.not.1, label %._crit_edge110, label %scalar.ph, !llvm.loop !40

171:                                              ; preds = %94
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %228

173:                                              ; preds = %100
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %228

175:                                              ; preds = %.invoke124, %190, %184, %181, %179, %._crit_edge110, %103
  %176 = landingpad { ptr, i32 }
          cleanup
  br label %228

._crit_edge110:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %.preheader
  %177 = invoke noundef i32 @_ZN7qpOASES9QProblemB24setupAuxiliaryQPgradientEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
          to label %178 unwind label %175

178:                                              ; preds = %._crit_edge110
  %.not98 = icmp eq i32 %177, 0
  br i1 %.not98, label %181, label %179

179:                                              ; preds = %178
  call void @_ZdaPv(ptr noundef nonnull %105) #10
  call void @_ZdaPv(ptr noundef nonnull %102) #10
  call void @_ZdaPv(ptr noundef nonnull %99) #10
  %180 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke124 unwind label %175

181:                                              ; preds = %178
  %182 = invoke noundef i32 @_ZN7qpOASES9QProblemB22setupAuxiliaryQPboundsENS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(800) %0, i32 noundef 1)
          to label %183 unwind label %175

183:                                              ; preds = %181
  %.not99 = icmp eq i32 %182, 0
  br i1 %.not99, label %189, label %184

184:                                              ; preds = %183
  call void @_ZdaPv(ptr noundef nonnull %105) #10
  call void @_ZdaPv(ptr noundef nonnull %102) #10
  call void @_ZdaPv(ptr noundef nonnull %99) #10
  %185 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke124 unwind label %175

.invoke124:                                       ; preds = %184, %179
  %186 = phi ptr [ %180, %179 ], [ %185, %184 ]
  %187 = phi i64 [ 2358, %179 ], [ 2364, %184 ]
  %188 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %186, i32 noundef 33, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef %187, i32 noundef 1)
          to label %227 unwind label %175

189:                                              ; preds = %183
  store i32 2, ptr %13, align 8, !tbaa !5
  br i1 %.not, label %196, label %190

190:                                              ; preds = %189
  %191 = invoke noundef double @_ZN7qpOASES10getCPUtimeEv()
          to label %192 unwind label %175

192:                                              ; preds = %190
  %193 = fsub double %191, %.075
  %194 = load double, ptr %6, align 8, !tbaa !30
  %195 = fsub double %194, %193
  store double %195, ptr %6, align 8, !tbaa !30
  br label %196

196:                                              ; preds = %192, %189
  %197 = invoke noundef i32 @_ZN7qpOASES9QProblemB8hotstartEPKdS2_S2_RiPdPKNS_6BoundsE(ptr noundef nonnull align 8 dereferenceable(800) %0, ptr noundef nonnull %99, ptr noundef nonnull %102, ptr noundef nonnull %105, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef %6, ptr noundef null)
          to label %198 unwind label %203

198:                                              ; preds = %196
  call void @_ZdaPv(ptr noundef nonnull %105) #10
  call void @_ZdaPv(ptr noundef nonnull %102) #10
  call void @_ZdaPv(ptr noundef nonnull %99) #10
  %199 = call noundef i32 @_ZNK7qpOASES9QProblemB12isInfeasibleEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %200 = icmp eq i32 %199, 1
  br i1 %200, label %201, label %205

201:                                              ; preds = %198
  %202 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke125 unwind label %203

203:                                              ; preds = %.invoke125, %225, %223, %219, %212, %208, %201, %196
  %204 = landingpad { ptr, i32 }
          cleanup
  br label %228

205:                                              ; preds = %198
  %206 = call noundef i32 @_ZNK7qpOASES9QProblemB11isUnboundedEv(ptr noundef nonnull align 8 dereferenceable(800) %0)
  %207 = icmp eq i32 %206, 1
  br i1 %207, label %208, label %210

208:                                              ; preds = %205
  %209 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke125 unwind label %203

210:                                              ; preds = %205
  %211 = and i32 %197, -65
  %or.cond5.not = icmp eq i32 %211, 0
  br i1 %or.cond5.not, label %218, label %212

212:                                              ; preds = %210
  %213 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %.invoke125 unwind label %203

.invoke125:                                       ; preds = %201, %212, %208
  %214 = phi ptr [ %209, %208 ], [ %213, %212 ], [ %202, %201 ]
  %215 = phi i32 [ 38, %208 ], [ 36, %212 ], [ 37, %201 ]
  %216 = phi i64 [ 2387, %208 ], [ 2391, %212 ], [ 2384, %201 ]
  %217 = invoke noundef i32 @_ZN7qpOASES15MessageHandling10throwErrorENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %214, i32 noundef %215, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef %216, i32 noundef 1)
          to label %227 unwind label %203

218:                                              ; preds = %210
  br i1 %.not, label %223, label %219

219:                                              ; preds = %218
  %220 = invoke noundef double @_ZN7qpOASES10getCPUtimeEv()
          to label %221 unwind label %203

221:                                              ; preds = %219
  %222 = fsub double %220, %.075
  store double %222, ptr %6, align 8, !tbaa !30
  br label %223

223:                                              ; preds = %221, %218
  %224 = invoke noundef ptr @_ZN7qpOASES23getGlobalMessageHandlerEv()
          to label %225 unwind label %203

225:                                              ; preds = %223
  %226 = invoke noundef i32 @_ZN7qpOASES15MessageHandling9throwInfoENS_11returnValueEPKcS3_S3_mNS_16VisibilityStatusE(ptr noundef nonnull align 8 dereferenceable(28) %224, i32 noundef 40, ptr noundef null, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, i64 noundef 2398, i32 noundef 1)
          to label %227 unwind label %203

227:                                              ; preds = %.invoke125, %.invoke124, %.invoke, %225
  %.2 = phi i32 [ %197, %225 ], [ %60, %.invoke ], [ %188, %.invoke124 ], [ %217, %.invoke125 ]
  call void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %8) #8
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %8) #8
  br label %229

228:                                              ; preds = %171, %175, %203, %173, %42
  %.pn103 = phi { ptr, i32 } [ %43, %42 ], [ %172, %171 ], [ %174, %173 ], [ %176, %175 ], [ %204, %203 ]
  call void @_ZN7qpOASES6BoundsD1Ev(ptr noundef nonnull align 8 dereferenceable(120) %8) #8
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %8) #8
  resume { ptr, i32 } %.pn103

229:                                              ; preds = %227, %34, %29, %23, %15
  %.3 = phi i32 [ %17, %15 ], [ %25, %23 ], [ %31, %29 ], [ %36, %34 ], [ %.2, %227 ]
  ret i32 %.3
}

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

declare noundef double @_ZN7qpOASES10getCPUtimeEv() local_unnamed_addr #0

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

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

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

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

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

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

declare noundef i32 @_ZN7qpOASES6Bounds12setupAllFreeEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #0

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

declare void @_ZN7qpOASES6BoundsC1Ei(ptr noundef nonnull align 8 dereferenceable(120), i32 noundef) unnamed_addr #0

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

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

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

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

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind }
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, !16, i64 208}
!6 = !{!"_ZTSN7qpOASES9QProblemBE", !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !11, i64 48, !10, i64 168, !7, i64 176, !10, i64 184, !10, i64 192, !15, i64 200, !16, i64 208, !7, i64 212, !7, i64 216, !17, i64 220, !15, i64 224, !13, i64 232, !10, i64 240, !15, i64 248, !15, i64 256, !13, i64 264, !18, i64 272, !21, i64 496, !23, i64 768}
!7 = !{!"_ZTSN7qpOASES11BooleanTypeE", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"_ZTSN7qpOASES6BoundsE", !12, i64 0, !14, i64 40, !14, i64 80}
!12 = !{!"_ZTSN7qpOASES9SubjectToE", !13, i64 8, !10, i64 16, !10, i64 24, !7, i64 32, !7, i64 36}
!13 = !{!"int", !8, i64 0}
!14 = !{!"_ZTSN7qpOASES9IndexlistE", !10, i64 0, !10, i64 8, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !13, i64 32}
!15 = !{!"double", !8, i64 0}
!16 = !{!"_ZTSN7qpOASES14QProblemStatusE", !8, i64 0}
!17 = !{!"_ZTSN7qpOASES11HessianTypeE", !8, i64 0}
!18 = !{!"_ZTSN7qpOASES7OptionsE", !19, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !13, i64 28, !13, i64 32, !7, i64 36, !15, i64 40, !15, i64 48, !15, i64 56, !15, i64 64, !15, i64 72, !15, i64 80, !15, i64 88, !15, i64 96, !15, i64 104, !15, i64 112, !15, i64 120, !20, i64 128, !15, i64 136, !13, i64 144, !15, i64 152, !13, i64 160, !15, i64 168, !15, i64 176, !15, i64 184, !15, i64 192, !7, i64 200, !7, i64 204, !13, i64 208, !13, i64 212, !13, i64 216}
!19 = !{!"_ZTSN7qpOASES10PrintLevelE", !8, i64 0}
!20 = !{!"_ZTSN7qpOASES15SubjectToStatusE", !8, i64 0}
!21 = !{!"_ZTSN7qpOASES7FlipperE", !13, i64 0, !13, i64 4, !11, i64 8, !22, i64 128, !10, i64 248, !10, i64 256, !10, i64 264}
!22 = !{!"_ZTSN7qpOASES11ConstraintsE", !12, i64 0, !14, i64 40, !14, i64 80}
!23 = !{!"_ZTSN7qpOASES13TabularOutputE", !13, i64 0, !13, i64 4, !13, i64 8, !13, i64 12, !13, i64 16, !13, i64 20, !13, i64 24, !13, i64 28}
!24 = !{!25, !25, i64 0}
!25 = !{!"vtable pointer", !9, i64 0}
!26 = !{!6, !17, i64 220}
!27 = !{!6, !7, i64 176}
!28 = !{!6, !20, i64 400}
!29 = !{!6, !10, i64 168}
!30 = !{!15, !15, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !32}
!34 = !{!6, !10, i64 24}
!35 = !{!6, !10, i64 32}
!36 = !{!6, !10, i64 40}
!37 = distinct !{!37, !32, !38, !39}
!38 = !{!"llvm.loop.isvectorized", i32 1}
!39 = !{!"llvm.loop.unroll.runtime.disable"}
!40 = distinct !{!40, !32, !38}


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