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

; 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::SQProblemSchur" = type { %"class.qpOASES::SQProblem", ptr, ptr, i32, i32, ptr, ptr, double, double, i32, ptr, ptr, i32, ptr, ptr, ptr, %"class.qpOASES::Indexlist", %"class.qpOASES::Indexlist" }
%"class.qpOASES::SQProblem" = type { %"class.qpOASES::QProblem" }
%"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.36 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z8MyPrintfPKcz(ptr noundef, ...) #0

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

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #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: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur25deleteFromSchurComplementEiNS_11BooleanTypeE(ptr noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %1, i32 noundef %2) #5 align 2 {
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  store i32 %2, ptr %6, align 4, !tbaa !11
  %25 = load ptr, ptr %4, align 8
  %26 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %25, i32 0, i32 23
  %27 = getelementptr inbounds %"class.qpOASES::Options", ptr %26, i32 0, i32 0
  %28 = load i32, ptr %27, align 8, !tbaa !13
  %29 = icmp eq i32 %28, 3
  br i1 %29, label %30, label %44

30:                                               ; preds = %3
  %31 = load i32, ptr %5, align 4, !tbaa !9
  %32 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 10
  %33 = load ptr, ptr %32, align 8, !tbaa !27
  %34 = load i32, ptr %5, align 4, !tbaa !9
  %35 = sext i32 %34 to i64
  %36 = getelementptr inbounds i32, ptr %33, i64 %35
  %37 = load i32, ptr %36, align 4, !tbaa !9
  %38 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 11
  %39 = load ptr, ptr %38, align 8, !tbaa !31
  %40 = load i32, ptr %5, align 4, !tbaa !9
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds i32, ptr %39, i64 %41
  %43 = load i32, ptr %42, align 4, !tbaa !32
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.36, i32 noundef %31, i32 noundef %37, i32 noundef %43)
  br label %44

44:                                               ; preds = %30, %3
  %45 = load i32, ptr %5, align 4, !tbaa !9
  %46 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %47 = load i32, ptr %46, align 8, !tbaa !34
  %48 = sub nsw i32 %47, 1
  %49 = icmp ne i32 %45, %48
  br i1 %49, label %50, label %570

50:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #6
  store ptr null, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  store ptr null, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  store i32 -1, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  store i32 4, ptr %10, align 4, !tbaa !32
  %51 = load i32, ptr %6, align 4, !tbaa !11
  %52 = icmp eq i32 %51, 1
  br i1 %52, label %53, label %100

53:                                               ; preds = %50
  %54 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %55 = load i32, ptr %54, align 8, !tbaa !34
  %56 = sext i32 %55 to i64
  %57 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %56, i64 8)
  %58 = extractvalue { i64, i1 } %57, 1
  %59 = extractvalue { i64, i1 } %57, 0
  %60 = select i1 %58, i64 -1, i64 %59
  %61 = call noalias noundef nonnull ptr @_Znam(i64 noundef %60) #7
  store ptr %61, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %62

62:                                               ; preds = %84, %53
  %63 = load i32, ptr %11, align 4, !tbaa !9
  %64 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %65 = load i32, ptr %64, align 8, !tbaa !34
  %66 = icmp slt i32 %63, %65
  br i1 %66, label %68, label %67

67:                                               ; preds = %62
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  br label %87

68:                                               ; preds = %62
  %69 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 2
  %70 = load ptr, ptr %69, align 8, !tbaa !35
  %71 = load i32, ptr %5, align 4, !tbaa !9
  %72 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 4
  %73 = load i32, ptr %72, align 4, !tbaa !36
  %74 = mul nsw i32 %71, %73
  %75 = load i32, ptr %11, align 4, !tbaa !9
  %76 = add nsw i32 %74, %75
  %77 = sext i32 %76 to i64
  %78 = getelementptr inbounds double, ptr %70, i64 %77
  %79 = load double, ptr %78, align 8, !tbaa !37
  %80 = load ptr, ptr %7, align 8, !tbaa !5
  %81 = load i32, ptr %11, align 4, !tbaa !9
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds double, ptr %80, i64 %82
  store double %79, ptr %83, align 8, !tbaa !37
  br label %84

84:                                               ; preds = %68
  %85 = load i32, ptr %11, align 4, !tbaa !9
  %86 = add nsw i32 %85, 1
  store i32 %86, ptr %11, align 4, !tbaa !9
  br label %62, !llvm.loop !38

87:                                               ; preds = %67
  %88 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 10
  %89 = load ptr, ptr %88, align 8, !tbaa !27
  %90 = load i32, ptr %5, align 4, !tbaa !9
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds i32, ptr %89, i64 %91
  %93 = load i32, ptr %92, align 4, !tbaa !9
  store i32 %93, ptr %9, align 4, !tbaa !9
  %94 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 11
  %95 = load ptr, ptr %94, align 8, !tbaa !31
  %96 = load i32, ptr %5, align 4, !tbaa !9
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds i32, ptr %95, i64 %97
  %99 = load i32, ptr %98, align 4, !tbaa !32
  store i32 %99, ptr %10, align 4, !tbaa !32
  br label %100

100:                                              ; preds = %87, %50
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %101

101:                                              ; preds = %142, %100
  %102 = load i32, ptr %12, align 4, !tbaa !9
  %103 = load i32, ptr %5, align 4, !tbaa !9
  %104 = icmp slt i32 %102, %103
  br i1 %104, label %106, label %105

105:                                              ; preds = %101
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %145

106:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %107 = load i32, ptr %5, align 4, !tbaa !9
  %108 = add nsw i32 %107, 1
  store i32 %108, ptr %14, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %138, %106
  %110 = load i32, ptr %14, align 4, !tbaa !9
  %111 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %112 = load i32, ptr %111, align 8, !tbaa !34
  %113 = icmp slt i32 %110, %112
  br i1 %113, label %115, label %114

114:                                              ; preds = %109
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  br label %141

115:                                              ; preds = %109
  %116 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 2
  %117 = load ptr, ptr %116, align 8, !tbaa !35
  %118 = load i32, ptr %12, align 4, !tbaa !9
  %119 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 4
  %120 = load i32, ptr %119, align 4, !tbaa !36
  %121 = mul nsw i32 %118, %120
  %122 = load i32, ptr %14, align 4, !tbaa !9
  %123 = add nsw i32 %121, %122
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds double, ptr %117, i64 %124
  %126 = load double, ptr %125, align 8, !tbaa !37
  %127 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 2
  %128 = load ptr, ptr %127, align 8, !tbaa !35
  %129 = load i32, ptr %12, align 4, !tbaa !9
  %130 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 4
  %131 = load i32, ptr %130, align 4, !tbaa !36
  %132 = mul nsw i32 %129, %131
  %133 = load i32, ptr %14, align 4, !tbaa !9
  %134 = add nsw i32 %132, %133
  %135 = sub nsw i32 %134, 1
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds double, ptr %128, i64 %136
  store double %126, ptr %137, align 8, !tbaa !37
  br label %138

138:                                              ; preds = %115
  %139 = load i32, ptr %14, align 4, !tbaa !9
  %140 = add nsw i32 %139, 1
  store i32 %140, ptr %14, align 4, !tbaa !9
  br label %109, !llvm.loop !40

141:                                              ; preds = %114
  br label %142

142:                                              ; preds = %141
  %143 = load i32, ptr %12, align 4, !tbaa !9
  %144 = add nsw i32 %143, 1
  store i32 %144, ptr %12, align 4, !tbaa !9
  br label %101, !llvm.loop !41

145:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %146 = load i32, ptr %5, align 4, !tbaa !9
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %15, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %223, %145
  %149 = load i32, ptr %15, align 4, !tbaa !9
  %150 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %151 = load i32, ptr %150, align 8, !tbaa !34
  %152 = icmp slt i32 %149, %151
  br i1 %152, label %154, label %153

153:                                              ; preds = %148
  store i32 11, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %226

154:                                              ; preds = %148
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %155

155:                                              ; preds = %183, %154
  %156 = load i32, ptr %16, align 4, !tbaa !9
  %157 = load i32, ptr %5, align 4, !tbaa !9
  %158 = icmp slt i32 %156, %157
  br i1 %158, label %160, label %159

159:                                              ; preds = %155
  store i32 14, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %186

160:                                              ; preds = %155
  %161 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 2
  %162 = load ptr, ptr %161, align 8, !tbaa !35
  %163 = load i32, ptr %15, align 4, !tbaa !9
  %164 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 4
  %165 = load i32, ptr %164, align 4, !tbaa !36
  %166 = mul nsw i32 %163, %165
  %167 = load i32, ptr %16, align 4, !tbaa !9
  %168 = add nsw i32 %166, %167
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds double, ptr %162, i64 %169
  %171 = load double, ptr %170, align 8, !tbaa !37
  %172 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 2
  %173 = load ptr, ptr %172, align 8, !tbaa !35
  %174 = load i32, ptr %15, align 4, !tbaa !9
  %175 = sub nsw i32 %174, 1
  %176 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 4
  %177 = load i32, ptr %176, align 4, !tbaa !36
  %178 = mul nsw i32 %175, %177
  %179 = load i32, ptr %16, align 4, !tbaa !9
  %180 = add nsw i32 %178, %179
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds double, ptr %173, i64 %181
  store double %171, ptr %182, align 8, !tbaa !37
  br label %183

183:                                              ; preds = %160
  %184 = load i32, ptr %16, align 4, !tbaa !9
  %185 = add nsw i32 %184, 1
  store i32 %185, ptr %16, align 4, !tbaa !9
  br label %155, !llvm.loop !42

186:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %187 = load i32, ptr %5, align 4, !tbaa !9
  %188 = add nsw i32 %187, 1
  store i32 %188, ptr %17, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %219, %186
  %190 = load i32, ptr %17, align 4, !tbaa !9
  %191 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %192 = load i32, ptr %191, align 8, !tbaa !34
  %193 = icmp slt i32 %190, %192
  br i1 %193, label %195, label %194

194:                                              ; preds = %189
  store i32 17, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  br label %222

195:                                              ; preds = %189
  %196 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 2
  %197 = load ptr, ptr %196, align 8, !tbaa !35
  %198 = load i32, ptr %15, align 4, !tbaa !9
  %199 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 4
  %200 = load i32, ptr %199, align 4, !tbaa !36
  %201 = mul nsw i32 %198, %200
  %202 = load i32, ptr %17, align 4, !tbaa !9
  %203 = add nsw i32 %201, %202
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds double, ptr %197, i64 %204
  %206 = load double, ptr %205, align 8, !tbaa !37
  %207 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 2
  %208 = load ptr, ptr %207, align 8, !tbaa !35
  %209 = load i32, ptr %15, align 4, !tbaa !9
  %210 = sub nsw i32 %209, 1
  %211 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 4
  %212 = load i32, ptr %211, align 4, !tbaa !36
  %213 = mul nsw i32 %210, %212
  %214 = load i32, ptr %17, align 4, !tbaa !9
  %215 = add nsw i32 %213, %214
  %216 = sub nsw i32 %215, 1
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds double, ptr %208, i64 %217
  store double %206, ptr %218, align 8, !tbaa !37
  br label %219

219:                                              ; preds = %195
  %220 = load i32, ptr %17, align 4, !tbaa !9
  %221 = add nsw i32 %220, 1
  store i32 %221, ptr %17, align 4, !tbaa !9
  br label %189, !llvm.loop !43

222:                                              ; preds = %194
  br label %223

223:                                              ; preds = %222
  %224 = load i32, ptr %15, align 4, !tbaa !9
  %225 = add nsw i32 %224, 1
  store i32 %225, ptr %15, align 4, !tbaa !9
  br label %148, !llvm.loop !44

226:                                              ; preds = %153
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %227 = load i32, ptr %5, align 4, !tbaa !9
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr %18, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %260, %226
  %230 = load i32, ptr %18, align 4, !tbaa !9
  %231 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %232 = load i32, ptr %231, align 8, !tbaa !34
  %233 = icmp slt i32 %230, %232
  br i1 %233, label %235, label %234

234:                                              ; preds = %229
  store i32 20, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %263

235:                                              ; preds = %229
  %236 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 10
  %237 = load ptr, ptr %236, align 8, !tbaa !27
  %238 = load i32, ptr %18, align 4, !tbaa !9
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds i32, ptr %237, i64 %239
  %241 = load i32, ptr %240, align 4, !tbaa !9
  %242 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 10
  %243 = load ptr, ptr %242, align 8, !tbaa !27
  %244 = load i32, ptr %18, align 4, !tbaa !9
  %245 = sub nsw i32 %244, 1
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds i32, ptr %243, i64 %246
  store i32 %241, ptr %247, align 4, !tbaa !9
  %248 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 11
  %249 = load ptr, ptr %248, align 8, !tbaa !31
  %250 = load i32, ptr %18, align 4, !tbaa !9
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds i32, ptr %249, i64 %251
  %253 = load i32, ptr %252, align 4, !tbaa !32
  %254 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 11
  %255 = load ptr, ptr %254, align 8, !tbaa !31
  %256 = load i32, ptr %18, align 4, !tbaa !9
  %257 = sub nsw i32 %256, 1
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds i32, ptr %255, i64 %258
  store i32 %253, ptr %259, align 4, !tbaa !32
  br label %260

260:                                              ; preds = %235
  %261 = load i32, ptr %18, align 4, !tbaa !9
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr %18, align 4, !tbaa !9
  br label %229, !llvm.loop !45

263:                                              ; preds = %234
  %264 = load i32, ptr %6, align 4, !tbaa !11
  %265 = icmp eq i32 %264, 1
  br i1 %265, label %266, label %332

266:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %267

267:                                              ; preds = %308, %266
  %268 = load i32, ptr %19, align 4, !tbaa !9
  %269 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %270 = load i32, ptr %269, align 8, !tbaa !34
  %271 = icmp slt i32 %268, %270
  br i1 %271, label %273, label %272

272:                                              ; preds = %267
  store i32 23, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %311

273:                                              ; preds = %267
  %274 = load ptr, ptr %7, align 8, !tbaa !5
  %275 = load i32, ptr %19, align 4, !tbaa !9
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds double, ptr %274, i64 %276
  %278 = load double, ptr %277, align 8, !tbaa !37
  %279 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 2
  %280 = load ptr, ptr %279, align 8, !tbaa !35
  %281 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %282 = load i32, ptr %281, align 8, !tbaa !34
  %283 = sub nsw i32 %282, 1
  %284 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 4
  %285 = load i32, ptr %284, align 4, !tbaa !36
  %286 = mul nsw i32 %283, %285
  %287 = load i32, ptr %19, align 4, !tbaa !9
  %288 = add nsw i32 %286, %287
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds double, ptr %280, i64 %289
  store double %278, ptr %290, align 8, !tbaa !37
  %291 = load ptr, ptr %7, align 8, !tbaa !5
  %292 = load i32, ptr %19, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %291, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !37
  %296 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 2
  %297 = load ptr, ptr %296, align 8, !tbaa !35
  %298 = load i32, ptr %19, align 4, !tbaa !9
  %299 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 4
  %300 = load i32, ptr %299, align 4, !tbaa !36
  %301 = mul nsw i32 %298, %300
  %302 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %303 = load i32, ptr %302, align 8, !tbaa !34
  %304 = sub nsw i32 %303, 1
  %305 = add nsw i32 %301, %304
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds double, ptr %297, i64 %306
  store double %295, ptr %307, align 8, !tbaa !37
  br label %308

308:                                              ; preds = %273
  %309 = load i32, ptr %19, align 4, !tbaa !9
  %310 = add nsw i32 %309, 1
  store i32 %310, ptr %19, align 4, !tbaa !9
  br label %267, !llvm.loop !46

311:                                              ; preds = %272
  %312 = load i32, ptr %9, align 4, !tbaa !9
  %313 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 10
  %314 = load ptr, ptr %313, align 8, !tbaa !27
  %315 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %316 = load i32, ptr %315, align 8, !tbaa !34
  %317 = sub nsw i32 %316, 1
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds i32, ptr %314, i64 %318
  store i32 %312, ptr %319, align 4, !tbaa !9
  %320 = load i32, ptr %10, align 4, !tbaa !32
  %321 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 11
  %322 = load ptr, ptr %321, align 8, !tbaa !31
  %323 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %324 = load i32, ptr %323, align 8, !tbaa !34
  %325 = sub nsw i32 %324, 1
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds i32, ptr %322, i64 %326
  store i32 %320, ptr %327, align 4, !tbaa !32
  %328 = load ptr, ptr %7, align 8, !tbaa !5
  %329 = icmp eq ptr %328, null
  br i1 %329, label %331, label %330

330:                                              ; preds = %311
  call void @_ZdaPv(ptr noundef %328) #8
  br label %331

331:                                              ; preds = %330, %311
  br label %332

332:                                              ; preds = %331, %263
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %333 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %334 = load ptr, ptr %333, align 8, !tbaa !47
  %335 = load i32, ptr %5, align 4, !tbaa !9
  %336 = add nsw i32 %335, 1
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds i32, ptr %334, i64 %337
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %341 = load ptr, ptr %340, align 8, !tbaa !47
  %342 = load i32, ptr %5, align 4, !tbaa !9
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds i32, ptr %341, i64 %343
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = sub nsw i32 %339, %345
  store i32 %346, ptr %20, align 4, !tbaa !9
  %347 = load i32, ptr %6, align 4, !tbaa !11
  %348 = icmp eq i32 %347, 1
  br i1 %348, label %349, label %420

349:                                              ; preds = %332
  %350 = load i32, ptr %20, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %351, i64 4)
  %353 = extractvalue { i64, i1 } %352, 1
  %354 = extractvalue { i64, i1 } %352, 0
  %355 = select i1 %353, i64 -1, i64 %354
  %356 = call noalias noundef nonnull ptr @_Znam(i64 noundef %355) #7
  store ptr %356, ptr %8, align 8, !tbaa !5
  %357 = load i32, ptr %20, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %358, i64 8)
  %360 = extractvalue { i64, i1 } %359, 1
  %361 = extractvalue { i64, i1 } %359, 0
  %362 = select i1 %360, i64 -1, i64 %361
  %363 = call noalias noundef nonnull ptr @_Znam(i64 noundef %362) #7
  store ptr %363, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  %364 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %365 = load ptr, ptr %364, align 8, !tbaa !47
  %366 = load i32, ptr %5, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds i32, ptr %365, i64 %367
  %369 = load i32, ptr %368, align 4, !tbaa !9
  store i32 %369, ptr %21, align 4, !tbaa !9
  br label %370

370:                                              ; preds = %416, %349
  %371 = load i32, ptr %21, align 4, !tbaa !9
  %372 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %373 = load ptr, ptr %372, align 8, !tbaa !47
  %374 = load i32, ptr %5, align 4, !tbaa !9
  %375 = add nsw i32 %374, 1
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds i32, ptr %373, i64 %376
  %378 = load i32, ptr %377, align 4, !tbaa !9
  %379 = icmp slt i32 %371, %378
  br i1 %379, label %381, label %380

380:                                              ; preds = %370
  store i32 26, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  br label %419

381:                                              ; preds = %370
  %382 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 14
  %383 = load ptr, ptr %382, align 8, !tbaa !48
  %384 = load i32, ptr %21, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds i32, ptr %383, i64 %385
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = load ptr, ptr %8, align 8, !tbaa !5
  %389 = load i32, ptr %21, align 4, !tbaa !9
  %390 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %391 = load ptr, ptr %390, align 8, !tbaa !47
  %392 = load i32, ptr %5, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds i32, ptr %391, i64 %393
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = sub nsw i32 %389, %395
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds i32, ptr %388, i64 %397
  store i32 %387, ptr %398, align 4, !tbaa !9
  %399 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 13
  %400 = load ptr, ptr %399, align 8, !tbaa !49
  %401 = load i32, ptr %21, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %400, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !37
  %405 = load ptr, ptr %7, align 8, !tbaa !5
  %406 = load i32, ptr %21, align 4, !tbaa !9
  %407 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %408 = load ptr, ptr %407, align 8, !tbaa !47
  %409 = load i32, ptr %5, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds i32, ptr %408, i64 %410
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = sub nsw i32 %406, %412
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds double, ptr %405, i64 %414
  store double %404, ptr %415, align 8, !tbaa !37
  br label %416

416:                                              ; preds = %381
  %417 = load i32, ptr %21, align 4, !tbaa !9
  %418 = add nsw i32 %417, 1
  store i32 %418, ptr %21, align 4, !tbaa !9
  br label %370, !llvm.loop !50

419:                                              ; preds = %380
  br label %420

420:                                              ; preds = %419, %332
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %421 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %422 = load ptr, ptr %421, align 8, !tbaa !47
  %423 = load i32, ptr %5, align 4, !tbaa !9
  %424 = add nsw i32 %423, 1
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds i32, ptr %422, i64 %425
  %427 = load i32, ptr %426, align 4, !tbaa !9
  store i32 %427, ptr %22, align 4, !tbaa !9
  br label %428

428:                                              ; preds = %466, %420
  %429 = load i32, ptr %22, align 4, !tbaa !9
  %430 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %431 = load ptr, ptr %430, align 8, !tbaa !47
  %432 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %433 = load i32, ptr %432, align 8, !tbaa !34
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds i32, ptr %431, i64 %434
  %436 = load i32, ptr %435, align 4, !tbaa !9
  %437 = icmp slt i32 %429, %436
  br i1 %437, label %439, label %438

438:                                              ; preds = %428
  store i32 29, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %469

439:                                              ; preds = %428
  %440 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 14
  %441 = load ptr, ptr %440, align 8, !tbaa !48
  %442 = load i32, ptr %22, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds i32, ptr %441, i64 %443
  %445 = load i32, ptr %444, align 4, !tbaa !9
  %446 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 14
  %447 = load ptr, ptr %446, align 8, !tbaa !48
  %448 = load i32, ptr %22, align 4, !tbaa !9
  %449 = load i32, ptr %20, align 4, !tbaa !9
  %450 = sub nsw i32 %448, %449
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds i32, ptr %447, i64 %451
  store i32 %445, ptr %452, align 4, !tbaa !9
  %453 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 13
  %454 = load ptr, ptr %453, align 8, !tbaa !49
  %455 = load i32, ptr %22, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds double, ptr %454, i64 %456
  %458 = load double, ptr %457, align 8, !tbaa !37
  %459 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 13
  %460 = load ptr, ptr %459, align 8, !tbaa !49
  %461 = load i32, ptr %22, align 4, !tbaa !9
  %462 = load i32, ptr %20, align 4, !tbaa !9
  %463 = sub nsw i32 %461, %462
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds double, ptr %460, i64 %464
  store double %458, ptr %465, align 8, !tbaa !37
  br label %466

466:                                              ; preds = %439
  %467 = load i32, ptr %22, align 4, !tbaa !9
  %468 = add nsw i32 %467, 1
  store i32 %468, ptr %22, align 4, !tbaa !9
  br label %428, !llvm.loop !51

469:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %470 = load i32, ptr %5, align 4, !tbaa !9
  store i32 %470, ptr %23, align 4, !tbaa !9
  br label %471

471:                                              ; preds = %492, %469
  %472 = load i32, ptr %23, align 4, !tbaa !9
  %473 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %474 = load i32, ptr %473, align 8, !tbaa !34
  %475 = icmp slt i32 %472, %474
  br i1 %475, label %477, label %476

476:                                              ; preds = %471
  store i32 32, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %495

477:                                              ; preds = %471
  %478 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %479 = load ptr, ptr %478, align 8, !tbaa !47
  %480 = load i32, ptr %23, align 4, !tbaa !9
  %481 = add nsw i32 %480, 1
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds i32, ptr %479, i64 %482
  %484 = load i32, ptr %483, align 4, !tbaa !9
  %485 = load i32, ptr %20, align 4, !tbaa !9
  %486 = sub nsw i32 %484, %485
  %487 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %488 = load ptr, ptr %487, align 8, !tbaa !47
  %489 = load i32, ptr %23, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i32, ptr %488, i64 %490
  store i32 %486, ptr %491, align 4, !tbaa !9
  br label %492

492:                                              ; preds = %477
  %493 = load i32, ptr %23, align 4, !tbaa !9
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %23, align 4, !tbaa !9
  br label %471, !llvm.loop !52

495:                                              ; preds = %476
  %496 = load i32, ptr %6, align 4, !tbaa !11
  %497 = icmp eq i32 %496, 1
  br i1 %497, label %498, label %569

498:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  %499 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %500 = load ptr, ptr %499, align 8, !tbaa !47
  %501 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %502 = load i32, ptr %501, align 8, !tbaa !34
  %503 = sub nsw i32 %502, 1
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds i32, ptr %500, i64 %504
  %506 = load i32, ptr %505, align 4, !tbaa !9
  store i32 %506, ptr %24, align 4, !tbaa !9
  br label %507

507:                                              ; preds = %557, %498
  %508 = load i32, ptr %24, align 4, !tbaa !9
  %509 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %510 = load ptr, ptr %509, align 8, !tbaa !47
  %511 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %512 = load i32, ptr %511, align 8, !tbaa !34
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds i32, ptr %510, i64 %513
  %515 = load i32, ptr %514, align 4, !tbaa !9
  %516 = icmp slt i32 %508, %515
  br i1 %516, label %518, label %517

517:                                              ; preds = %507
  store i32 35, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  br label %560

518:                                              ; preds = %507
  %519 = load ptr, ptr %8, align 8, !tbaa !5
  %520 = load i32, ptr %24, align 4, !tbaa !9
  %521 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %522 = load ptr, ptr %521, align 8, !tbaa !47
  %523 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %524 = load i32, ptr %523, align 8, !tbaa !34
  %525 = sub nsw i32 %524, 1
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds i32, ptr %522, i64 %526
  %528 = load i32, ptr %527, align 4, !tbaa !9
  %529 = sub nsw i32 %520, %528
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds i32, ptr %519, i64 %530
  %532 = load i32, ptr %531, align 4, !tbaa !9
  %533 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 14
  %534 = load ptr, ptr %533, align 8, !tbaa !48
  %535 = load i32, ptr %24, align 4, !tbaa !9
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds i32, ptr %534, i64 %536
  store i32 %532, ptr %537, align 4, !tbaa !9
  %538 = load ptr, ptr %7, align 8, !tbaa !5
  %539 = load i32, ptr %24, align 4, !tbaa !9
  %540 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 15
  %541 = load ptr, ptr %540, align 8, !tbaa !47
  %542 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %543 = load i32, ptr %542, align 8, !tbaa !34
  %544 = sub nsw i32 %543, 1
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds i32, ptr %541, i64 %545
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = sub nsw i32 %539, %547
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds double, ptr %538, i64 %549
  %551 = load double, ptr %550, align 8, !tbaa !37
  %552 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 13
  %553 = load ptr, ptr %552, align 8, !tbaa !49
  %554 = load i32, ptr %24, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds double, ptr %553, i64 %555
  store double %551, ptr %556, align 8, !tbaa !37
  br label %557

557:                                              ; preds = %518
  %558 = load i32, ptr %24, align 4, !tbaa !9
  %559 = add nsw i32 %558, 1
  store i32 %559, ptr %24, align 4, !tbaa !9
  br label %507, !llvm.loop !53

560:                                              ; preds = %517
  %561 = load ptr, ptr %8, align 8, !tbaa !5
  %562 = icmp eq ptr %561, null
  br i1 %562, label %564, label %563

563:                                              ; preds = %560
  call void @_ZdaPv(ptr noundef %561) #8
  br label %564

564:                                              ; preds = %563, %560
  %565 = load ptr, ptr %7, align 8, !tbaa !5
  %566 = icmp eq ptr %565, null
  br i1 %566, label %568, label %567

567:                                              ; preds = %564
  call void @_ZdaPv(ptr noundef %565) #8
  br label %568

568:                                              ; preds = %567, %564
  br label %569

569:                                              ; preds = %568, %495
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  br label %570

570:                                              ; preds = %569, %44
  %571 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %572 = load i32, ptr %571, align 8, !tbaa !34
  %573 = add nsw i32 %572, -1
  store i32 %573, ptr %571, align 8, !tbaa !34
  %574 = getelementptr inbounds %"class.qpOASES::QProblemB", ptr %25, i32 0, i32 23
  %575 = getelementptr inbounds %"class.qpOASES::Options", ptr %574, i32 0, i32 0
  %576 = load i32, ptr %575, align 8, !tbaa !13
  %577 = icmp eq i32 %576, 3
  br i1 %577, label %578, label %581

578:                                              ; preds = %570
  %579 = getelementptr inbounds %"class.qpOASES::SQProblemSchur", ptr %25, i32 0, i32 3
  %580 = load i32, ptr %579, align 8, !tbaa !34
  call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef @.str.37, i32 noundef %580)
  br label %581

581:                                              ; preds = %578, %570
  ret i32 0
}

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 = { nounwind }
attributes #7 = { builtin allocsize(0) }
attributes #8 = { builtin nounwind }

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

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


; 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.36 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_Z8MyPrintfPKcz(ptr noundef, ...) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7qpOASES14SQProblemSchur25deleteFromSchurComplementEiNS_11BooleanTypeE(ptr nocapture noundef nonnull align 8 dereferenceable(1256) %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #3 align 2 {
  %4 = getelementptr inbounds i8, ptr %0, i64 272
  %5 = load i32, ptr %4, align 8, !tbaa !5
  %6 = icmp eq i32 %5, 3
  br i1 %6, label %7, label %17

7:                                                ; preds = %3
  %8 = getelementptr inbounds i8, ptr %0, i64 1128
  %9 = load ptr, ptr %8, align 8, !tbaa !24
  %10 = sext i32 %1 to i64
  %11 = getelementptr inbounds i32, ptr %9, i64 %10
  %12 = load i32, ptr %11, align 4, !tbaa !28
  %13 = getelementptr inbounds i8, ptr %0, i64 1136
  %14 = load ptr, ptr %13, align 8, !tbaa !29
  %15 = getelementptr inbounds i32, ptr %14, i64 %10
  %16 = load i32, ptr %15, align 4, !tbaa !30
  tail call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.36, i32 noundef %1, i32 noundef %12, i32 noundef %16)
  br label %17

17:                                               ; preds = %7, %3
  %18 = getelementptr inbounds i8, ptr %0, i64 1080
  %19 = load i32, ptr %18, align 8, !tbaa !32
  %20 = add nsw i32 %19, -1
  %.not = icmp eq i32 %20, %1
  br i1 %.not, label %405, label %21

21:                                               ; preds = %17
  %22 = icmp eq i32 %2, 1
  br i1 %22, label %23, label %67

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

.lr.ph:                                           ; preds = %23
  %31 = getelementptr inbounds i8, ptr %0, i64 1072
  %32 = load ptr, ptr %31, align 8, !tbaa !33
  %33 = getelementptr inbounds i8, ptr %0, i64 1084
  %34 = load i32, ptr %33, align 4, !tbaa !34
  %35 = mul nsw i32 %34, %1
  %36 = sext i32 %35 to i64
  %wide.trip.count = zext nneg i32 %19 to i64
  %invariant.gep216 = getelementptr double, ptr %32, i64 %36
  %min.iters.check = icmp ult i32 %19, 10
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

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

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %scalar.ph.prol ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep217.prol = getelementptr double, ptr %invariant.gep216, i64 %indvars.iv.prol
  %37 = load double, ptr %gep217.prol, align 8, !tbaa !35
  %38 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.prol
  store double %37, ptr %38, align 8, !tbaa !35
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !36

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

vector.memcheck:                                  ; preds = %.lr.ph
  %41 = ptrtoint ptr %32 to i64
  %42 = shl nsw i64 %36, 3
  %43 = add i64 %42, %41
  %44 = sub i64 %29, %43
  %diff.check = icmp ult i64 %44, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %45 = getelementptr double, ptr %invariant.gep216, i64 %index
  %46 = getelementptr i8, ptr %45, i64 16
  %wide.load = load <2 x double>, ptr %45, align 8, !tbaa !35
  %wide.load226 = load <2 x double>, ptr %46, align 8, !tbaa !35
  %47 = getelementptr inbounds double, ptr %28, i64 %index
  %48 = getelementptr inbounds i8, ptr %47, i64 16
  store <2 x double> %wide.load, ptr %47, align 8, !tbaa !35
  store <2 x double> %wide.load226, ptr %48, align 8, !tbaa !35
  %index.next = add nuw i64 %index, 4
  %49 = icmp eq i64 %index.next, %n.vec
  br i1 %49, label %middle.block, label %vector.body, !llvm.loop !38

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

._crit_edge:                                      ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %23
  %50 = getelementptr inbounds i8, ptr %0, i64 1128
  %51 = load ptr, ptr %50, align 8, !tbaa !24
  %52 = sext i32 %1 to i64
  %53 = getelementptr inbounds i32, ptr %51, i64 %52
  %54 = load i32, ptr %53, align 4, !tbaa !28
  %55 = getelementptr inbounds i8, ptr %0, i64 1136
  %56 = load ptr, ptr %55, align 8, !tbaa !29
  %57 = getelementptr inbounds i32, ptr %56, i64 %52
  %58 = load i32, ptr %57, align 4, !tbaa !30
  br label %67

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %scalar.ph ], [ %indvars.iv.unr, %scalar.ph.prol.loopexit ]
  %gep217 = getelementptr double, ptr %invariant.gep216, i64 %indvars.iv
  %59 = load double, ptr %gep217, align 8, !tbaa !35
  %60 = getelementptr inbounds double, ptr %28, i64 %indvars.iv
  store double %59, ptr %60, align 8, !tbaa !35
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %gep217.1 = getelementptr double, ptr %invariant.gep216, i64 %indvars.iv.next
  %61 = load double, ptr %gep217.1, align 8, !tbaa !35
  %62 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next
  store double %61, ptr %62, align 8, !tbaa !35
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %gep217.2 = getelementptr double, ptr %invariant.gep216, i64 %indvars.iv.next.1
  %63 = load double, ptr %gep217.2, align 8, !tbaa !35
  %64 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next.1
  store double %63, ptr %64, align 8, !tbaa !35
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %gep217.3 = getelementptr double, ptr %invariant.gep216, i64 %indvars.iv.next.2
  %65 = load double, ptr %gep217.3, align 8, !tbaa !35
  %66 = getelementptr inbounds double, ptr %28, i64 %indvars.iv.next.2
  store double %65, ptr %66, align 8, !tbaa !35
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %._crit_edge, label %scalar.ph, !llvm.loop !42

67:                                               ; preds = %._crit_edge, %21
  %.0115 = phi i32 [ %54, %._crit_edge ], [ -1, %21 ]
  %.0114 = phi i32 [ %58, %._crit_edge ], [ 4, %21 ]
  %.0105 = phi ptr [ %28, %._crit_edge ], [ null, %21 ]
  %.0105280 = ptrtoint ptr %.0105 to i64
  %68 = icmp sgt i32 %1, 0
  %.0111128 = add i32 %1, 1
  br i1 %68, label %.preheader125.lr.ph, label %._crit_edge134

.preheader125.lr.ph:                              ; preds = %67
  %69 = icmp slt i32 %.0111128, %19
  %70 = getelementptr inbounds i8, ptr %0, i64 1072
  %71 = load ptr, ptr %70, align 8
  br i1 %69, label %.preheader125.us.preheader, label %._crit_edge134

.preheader125.us.preheader:                       ; preds = %.preheader125.lr.ph
  %72 = getelementptr inbounds i8, ptr %0, i64 1084
  %73 = load i32, ptr %72, align 4
  %74 = zext i32 %.0111128 to i64
  %75 = sext i32 %73 to i64
  %wide.trip.count174 = zext nneg i32 %1 to i64
  %76 = add i32 %19, -2
  %77 = sub i32 %76, %1
  %78 = mul nsw i64 %75, -8
  %79 = zext i32 %77 to i64
  %80 = add nuw nsw i64 %79, 1
  %min.iters.check231 = icmp ult i32 %77, 5
  %81 = shl nuw nsw i64 %74, 3
  %n.vec234 = and i64 %80, 8589934588
  %ind.end = add nuw nsw i64 %n.vec234, %74
  %.cast = trunc i64 %n.vec234 to i32
  %ind.end236 = add i32 %.cast, %1
  %cmp.n245 = icmp eq i64 %80, %n.vec234
  br label %.preheader125.us

.preheader125.us:                                 ; preds = %.preheader125.us.preheader, %._crit_edge132.us
  %indvars.iv171 = phi i64 [ 0, %.preheader125.us.preheader ], [ %indvars.iv.next172, %._crit_edge132.us ]
  %82 = mul nsw i64 %indvars.iv171, %75
  %83 = getelementptr double, ptr %71, i64 %82
  %84 = trunc nsw i64 %82 to i32
  br i1 %min.iters.check231, label %scalar.ph230.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.preheader125.us
  %85 = mul i64 %78, %indvars.iv171
  %86 = sub i64 %85, %81
  %87 = trunc i64 %indvars.iv171 to i32
  %88 = mul i32 %73, %87
  %89 = add i32 %88, %1
  %90 = sext i32 %89 to i64
  %91 = shl nsw i64 %90, 3
  %92 = add i64 %86, %91
  %93 = trunc i64 %indvars.iv171 to i32
  %94 = mul i32 %73, %93
  %95 = add i32 %94, %1
  %96 = add i32 %94, %76
  %97 = icmp slt i32 %96, %95
  %diff.check228 = icmp ult i64 %92, 32
  %or.cond = select i1 %97, i1 true, i1 %diff.check228
  br i1 %or.cond, label %scalar.ph230.preheader, label %vector.ph232

vector.ph232:                                     ; preds = %vector.scevcheck
  %invariant.gep343 = getelementptr double, ptr %83, i64 %74
  br label %vector.body238

vector.body238:                                   ; preds = %vector.body238, %vector.ph232
  %index239 = phi i64 [ 0, %vector.ph232 ], [ %index.next244, %vector.body238 ]
  %.cast240 = trunc i64 %index239 to i32
  %offset.idx241 = add i32 %.cast240, %1
  %gep344 = getelementptr double, ptr %invariant.gep343, i64 %index239
  %98 = getelementptr i8, ptr %gep344, i64 16
  %wide.load242 = load <2 x double>, ptr %gep344, align 8, !tbaa !35
  %wide.load243 = load <2 x double>, ptr %98, align 8, !tbaa !35
  %99 = add i32 %offset.idx241, %84
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds double, ptr %71, i64 %100
  %102 = getelementptr inbounds i8, ptr %101, i64 16
  store <2 x double> %wide.load242, ptr %101, align 8, !tbaa !35
  store <2 x double> %wide.load243, ptr %102, align 8, !tbaa !35
  %index.next244 = add nuw i64 %index239, 4
  %103 = icmp eq i64 %index.next244, %n.vec234
  br i1 %103, label %middle.block229, label %vector.body238, !llvm.loop !43

middle.block229:                                  ; preds = %vector.body238
  br i1 %cmp.n245, label %._crit_edge132.us, label %scalar.ph230.preheader

scalar.ph230.preheader:                           ; preds = %middle.block229, %vector.scevcheck, %.preheader125.us
  %indvars.iv167.ph = phi i64 [ %74, %vector.scevcheck ], [ %74, %.preheader125.us ], [ %ind.end, %middle.block229 ]
  %.0111.in129.us.ph = phi i32 [ %1, %vector.scevcheck ], [ %1, %.preheader125.us ], [ %ind.end236, %middle.block229 ]
  %104 = trunc i64 %indvars.iv167.ph to i32
  %105 = sub i32 %19, %104
  %xtraiter326 = and i32 %105, 3
  %lcmp.mod327.not = icmp eq i32 %xtraiter326, 0
  br i1 %lcmp.mod327.not, label %scalar.ph230.prol.loopexit, label %scalar.ph230.prol

scalar.ph230.prol:                                ; preds = %scalar.ph230.preheader, %scalar.ph230.prol
  %indvars.iv167.prol = phi i64 [ %indvars.iv.next168.prol, %scalar.ph230.prol ], [ %indvars.iv167.ph, %scalar.ph230.preheader ]
  %.0111.in129.us.prol = phi i32 [ %111, %scalar.ph230.prol ], [ %.0111.in129.us.ph, %scalar.ph230.preheader ]
  %prol.iter328 = phi i32 [ %prol.iter328.next, %scalar.ph230.prol ], [ 0, %scalar.ph230.preheader ]
  %106 = getelementptr double, ptr %83, i64 %indvars.iv167.prol
  %107 = load double, ptr %106, align 8, !tbaa !35
  %108 = add i32 %.0111.in129.us.prol, %84
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds double, ptr %71, i64 %109
  store double %107, ptr %110, align 8, !tbaa !35
  %indvars.iv.next168.prol = add nuw nsw i64 %indvars.iv167.prol, 1
  %111 = trunc nsw i64 %indvars.iv167.prol to i32
  %prol.iter328.next = add i32 %prol.iter328, 1
  %prol.iter328.cmp.not = icmp eq i32 %prol.iter328.next, %xtraiter326
  br i1 %prol.iter328.cmp.not, label %scalar.ph230.prol.loopexit, label %scalar.ph230.prol, !llvm.loop !44

scalar.ph230.prol.loopexit:                       ; preds = %scalar.ph230.prol, %scalar.ph230.preheader
  %indvars.iv167.unr = phi i64 [ %indvars.iv167.ph, %scalar.ph230.preheader ], [ %indvars.iv.next168.prol, %scalar.ph230.prol ]
  %.0111.in129.us.unr = phi i32 [ %.0111.in129.us.ph, %scalar.ph230.preheader ], [ %111, %scalar.ph230.prol ]
  %112 = sub i32 %104, %19
  %113 = icmp ugt i32 %112, -4
  br i1 %113, label %._crit_edge132.us, label %scalar.ph230

scalar.ph230:                                     ; preds = %scalar.ph230.prol.loopexit, %scalar.ph230
  %indvars.iv167 = phi i64 [ %indvars.iv.next168.3, %scalar.ph230 ], [ %indvars.iv167.unr, %scalar.ph230.prol.loopexit ]
  %.0111.in129.us = phi i32 [ %134, %scalar.ph230 ], [ %.0111.in129.us.unr, %scalar.ph230.prol.loopexit ]
  %114 = getelementptr double, ptr %83, i64 %indvars.iv167
  %115 = load double, ptr %114, align 8, !tbaa !35
  %116 = add i32 %.0111.in129.us, %84
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds double, ptr %71, i64 %117
  store double %115, ptr %118, align 8, !tbaa !35
  %indvars.iv.next168 = add nuw nsw i64 %indvars.iv167, 1
  %119 = getelementptr double, ptr %83, i64 %indvars.iv.next168
  %120 = load double, ptr %119, align 8, !tbaa !35
  %121 = add i64 %indvars.iv167, %82
  %sext = shl i64 %121, 32
  %122 = ashr exact i64 %sext, 29
  %123 = getelementptr inbounds i8, ptr %71, i64 %122
  store double %120, ptr %123, align 8, !tbaa !35
  %indvars.iv.next168.1 = add nuw nsw i64 %indvars.iv167, 2
  %124 = getelementptr double, ptr %83, i64 %indvars.iv.next168.1
  %125 = load double, ptr %124, align 8, !tbaa !35
  %126 = add i64 %indvars.iv.next168, %82
  %sext338 = shl i64 %126, 32
  %127 = ashr exact i64 %sext338, 29
  %128 = getelementptr inbounds i8, ptr %71, i64 %127
  store double %125, ptr %128, align 8, !tbaa !35
  %indvars.iv.next168.2 = add nuw nsw i64 %indvars.iv167, 3
  %129 = getelementptr double, ptr %83, i64 %indvars.iv.next168.2
  %130 = load double, ptr %129, align 8, !tbaa !35
  %131 = add i64 %indvars.iv.next168.1, %82
  %sext339 = shl i64 %131, 32
  %132 = ashr exact i64 %sext339, 29
  %133 = getelementptr inbounds i8, ptr %71, i64 %132
  store double %130, ptr %133, align 8, !tbaa !35
  %indvars.iv.next168.3 = add nuw nsw i64 %indvars.iv167, 4
  %134 = trunc nsw i64 %indvars.iv.next168.2 to i32
  %lftr.wideiv.3 = trunc i64 %indvars.iv.next168.3 to i32
  %exitcond170.not.3 = icmp eq i32 %19, %lftr.wideiv.3
  br i1 %exitcond170.not.3, label %._crit_edge132.us, label %scalar.ph230, !llvm.loop !45

._crit_edge132.us:                                ; preds = %scalar.ph230.prol.loopexit, %scalar.ph230, %middle.block229
  %indvars.iv.next172 = add nuw nsw i64 %indvars.iv171, 1
  %exitcond175.not = icmp eq i64 %indvars.iv.next172, %wide.trip.count174
  br i1 %exitcond175.not, label %._crit_edge134, label %.preheader125.us, !llvm.loop !46

._crit_edge134:                                   ; preds = %._crit_edge132.us, %67, %.preheader125.lr.ph
  %135 = icmp slt i32 %.0111128, %19
  br i1 %135, label %.preheader124.lr.ph, label %._crit_edge143

.preheader124.lr.ph:                              ; preds = %._crit_edge134
  %136 = getelementptr inbounds i8, ptr %0, i64 1072
  %137 = load ptr, ptr %136, align 8
  %138 = getelementptr inbounds i8, ptr %0, i64 1084
  %139 = load i32, ptr %138, align 4
  %invariant.gep = getelementptr i8, ptr %137, i64 -8
  %140 = sext i32 %.0111128 to i64
  %141 = sext i32 %139 to i64
  %wide.trip.count180 = zext i32 %1 to i64
  %142 = shl nsw i64 %141, 3
  %143 = add i32 %19, -2
  %144 = sub i32 %143, %1
  %145 = zext i32 %144 to i64
  %146 = add nuw nsw i64 %145, 1
  %147 = mul nsw i64 %141, -8
  %min.iters.check267 = icmp ult i32 %1, 4
  %diff.check264 = icmp ult i64 %147, 32
  %or.cond321 = select i1 %min.iters.check267, i1 true, i1 %diff.check264
  %n.vec270 = and i64 %wide.trip.count180, 2147483644
  %cmp.n277 = icmp eq i64 %n.vec270, %wide.trip.count180
  %xtraiter329 = and i64 %wide.trip.count180, 3
  %lcmp.mod330.not = icmp eq i64 %xtraiter329, 0
  %min.iters.check250 = icmp ult i32 %144, 3
  %diff.check247 = icmp ugt i64 %142, -40
  %or.cond322 = select i1 %min.iters.check250, i1 true, i1 %diff.check247
  %n.vec253 = and i64 %146, 8589934588
  %ind.end254 = add nsw i64 %n.vec253, %140
  %cmp.n262 = icmp eq i64 %146, %n.vec253
  br label %.preheader124

.preheader124:                                    ; preds = %.preheader124.lr.ph, %._crit_edge139
  %indvars.iv189 = phi i64 [ %140, %.preheader124.lr.ph ], [ %indvars.iv.next190, %._crit_edge139 ]
  br i1 %68, label %.lr.ph136, label %.lr.ph138

.lr.ph136:                                        ; preds = %.preheader124
  %148 = mul nsw i64 %indvars.iv189, %141
  %149 = add nsw i64 %indvars.iv189, -1
  %150 = mul nsw i64 %149, %141
  %151 = getelementptr double, ptr %137, i64 %148
  %152 = getelementptr double, ptr %137, i64 %150
  br i1 %or.cond321, label %scalar.ph266.preheader, label %vector.body272

scalar.ph266.preheader:                           ; preds = %middle.block265, %.lr.ph136
  %indvars.iv177.ph = phi i64 [ 0, %.lr.ph136 ], [ %n.vec270, %middle.block265 ]
  br i1 %lcmp.mod330.not, label %scalar.ph266.prol.loopexit, label %scalar.ph266.prol

scalar.ph266.prol:                                ; preds = %scalar.ph266.preheader, %scalar.ph266.prol
  %indvars.iv177.prol = phi i64 [ %indvars.iv.next178.prol, %scalar.ph266.prol ], [ %indvars.iv177.ph, %scalar.ph266.preheader ]
  %prol.iter331 = phi i64 [ %prol.iter331.next, %scalar.ph266.prol ], [ 0, %scalar.ph266.preheader ]
  %153 = getelementptr double, ptr %151, i64 %indvars.iv177.prol
  %154 = load double, ptr %153, align 8, !tbaa !35
  %155 = getelementptr double, ptr %152, i64 %indvars.iv177.prol
  store double %154, ptr %155, align 8, !tbaa !35
  %indvars.iv.next178.prol = add nuw nsw i64 %indvars.iv177.prol, 1
  %prol.iter331.next = add i64 %prol.iter331, 1
  %prol.iter331.cmp.not = icmp eq i64 %prol.iter331.next, %xtraiter329
  br i1 %prol.iter331.cmp.not, label %scalar.ph266.prol.loopexit, label %scalar.ph266.prol, !llvm.loop !47

scalar.ph266.prol.loopexit:                       ; preds = %scalar.ph266.prol, %scalar.ph266.preheader
  %indvars.iv177.unr = phi i64 [ %indvars.iv177.ph, %scalar.ph266.preheader ], [ %indvars.iv.next178.prol, %scalar.ph266.prol ]
  %156 = sub nsw i64 %indvars.iv177.ph, %wide.trip.count180
  %157 = icmp ugt i64 %156, -4
  br i1 %157, label %.lr.ph138, label %scalar.ph266

vector.body272:                                   ; preds = %.lr.ph136, %vector.body272
  %index273 = phi i64 [ %index.next276, %vector.body272 ], [ 0, %.lr.ph136 ]
  %158 = getelementptr double, ptr %151, i64 %index273
  %159 = getelementptr i8, ptr %158, i64 16
  %wide.load274 = load <2 x double>, ptr %158, align 8, !tbaa !35
  %wide.load275 = load <2 x double>, ptr %159, align 8, !tbaa !35
  %160 = getelementptr double, ptr %152, i64 %index273
  %161 = getelementptr i8, ptr %160, i64 16
  store <2 x double> %wide.load274, ptr %160, align 8, !tbaa !35
  store <2 x double> %wide.load275, ptr %161, align 8, !tbaa !35
  %index.next276 = add nuw i64 %index273, 4
  %162 = icmp eq i64 %index.next276, %n.vec270
  br i1 %162, label %middle.block265, label %vector.body272, !llvm.loop !48

middle.block265:                                  ; preds = %vector.body272
  br i1 %cmp.n277, label %.lr.ph138, label %scalar.ph266.preheader

.preheader122:                                    ; preds = %._crit_edge139
  br i1 %135, label %.lr.ph142, label %._crit_edge143

.lr.ph142:                                        ; preds = %.preheader122
  %163 = getelementptr inbounds i8, ptr %0, i64 1128
  %164 = load ptr, ptr %163, align 8, !tbaa !24
  %165 = getelementptr inbounds i8, ptr %0, i64 1136
  %166 = load ptr, ptr %165, align 8, !tbaa !29
  %167 = sext i32 %.0111128 to i64
  br label %247

.lr.ph138:                                        ; preds = %scalar.ph266.prol.loopexit, %scalar.ph266, %middle.block265, %.preheader124
  %168 = mul nsw i64 %indvars.iv189, %141
  %169 = add nsw i64 %indvars.iv189, -1
  %170 = mul nsw i64 %169, %141
  %171 = getelementptr double, ptr %137, i64 %168
  %172 = getelementptr double, ptr %invariant.gep, i64 %170
  br i1 %or.cond322, label %scalar.ph249.preheader, label %vector.body256

scalar.ph249.preheader:                           ; preds = %middle.block248, %.lr.ph138
  %indvars.iv184.ph = phi i64 [ %140, %.lr.ph138 ], [ %ind.end254, %middle.block248 ]
  %173 = trunc i64 %indvars.iv184.ph to i32
  %174 = sub i32 %19, %173
  %xtraiter332 = and i32 %174, 3
  %lcmp.mod333.not = icmp eq i32 %xtraiter332, 0
  br i1 %lcmp.mod333.not, label %scalar.ph249.prol.loopexit, label %scalar.ph249.prol

scalar.ph249.prol:                                ; preds = %scalar.ph249.preheader, %scalar.ph249.prol
  %indvars.iv184.prol = phi i64 [ %indvars.iv.next185.prol, %scalar.ph249.prol ], [ %indvars.iv184.ph, %scalar.ph249.preheader ]
  %prol.iter334 = phi i32 [ %prol.iter334.next, %scalar.ph249.prol ], [ 0, %scalar.ph249.preheader ]
  %175 = getelementptr double, ptr %171, i64 %indvars.iv184.prol
  %176 = load double, ptr %175, align 8, !tbaa !35
  %gep.prol = getelementptr double, ptr %172, i64 %indvars.iv184.prol
  store double %176, ptr %gep.prol, align 8, !tbaa !35
  %indvars.iv.next185.prol = add nsw i64 %indvars.iv184.prol, 1
  %prol.iter334.next = add i32 %prol.iter334, 1
  %prol.iter334.cmp.not = icmp eq i32 %prol.iter334.next, %xtraiter332
  br i1 %prol.iter334.cmp.not, label %scalar.ph249.prol.loopexit, label %scalar.ph249.prol, !llvm.loop !49

scalar.ph249.prol.loopexit:                       ; preds = %scalar.ph249.prol, %scalar.ph249.preheader
  %indvars.iv184.unr = phi i64 [ %indvars.iv184.ph, %scalar.ph249.preheader ], [ %indvars.iv.next185.prol, %scalar.ph249.prol ]
  %177 = sub i32 %173, %19
  %178 = icmp ugt i32 %177, -4
  br i1 %178, label %._crit_edge139, label %scalar.ph249

vector.body256:                                   ; preds = %.lr.ph138, %vector.body256
  %index257 = phi i64 [ %index.next261, %vector.body256 ], [ 0, %.lr.ph138 ]
  %offset.idx258 = add i64 %index257, %140
  %179 = getelementptr double, ptr %171, i64 %offset.idx258
  %180 = getelementptr i8, ptr %179, i64 16
  %wide.load259 = load <2 x double>, ptr %179, align 8, !tbaa !35
  %wide.load260 = load <2 x double>, ptr %180, align 8, !tbaa !35
  %181 = getelementptr double, ptr %172, i64 %offset.idx258
  %182 = getelementptr i8, ptr %181, i64 16
  store <2 x double> %wide.load259, ptr %181, align 8, !tbaa !35
  store <2 x double> %wide.load260, ptr %182, align 8, !tbaa !35
  %index.next261 = add nuw i64 %index257, 4
  %183 = icmp eq i64 %index.next261, %n.vec253
  br i1 %183, label %middle.block248, label %vector.body256, !llvm.loop !50

middle.block248:                                  ; preds = %vector.body256
  br i1 %cmp.n262, label %._crit_edge139, label %scalar.ph249.preheader

scalar.ph266:                                     ; preds = %scalar.ph266.prol.loopexit, %scalar.ph266
  %indvars.iv177 = phi i64 [ %indvars.iv.next178.3, %scalar.ph266 ], [ %indvars.iv177.unr, %scalar.ph266.prol.loopexit ]
  %184 = getelementptr double, ptr %151, i64 %indvars.iv177
  %185 = load double, ptr %184, align 8, !tbaa !35
  %186 = getelementptr double, ptr %152, i64 %indvars.iv177
  store double %185, ptr %186, align 8, !tbaa !35
  %indvars.iv.next178 = add nuw nsw i64 %indvars.iv177, 1
  %187 = getelementptr double, ptr %151, i64 %indvars.iv.next178
  %188 = load double, ptr %187, align 8, !tbaa !35
  %189 = getelementptr double, ptr %152, i64 %indvars.iv.next178
  store double %188, ptr %189, align 8, !tbaa !35
  %indvars.iv.next178.1 = add nuw nsw i64 %indvars.iv177, 2
  %190 = getelementptr double, ptr %151, i64 %indvars.iv.next178.1
  %191 = load double, ptr %190, align 8, !tbaa !35
  %192 = getelementptr double, ptr %152, i64 %indvars.iv.next178.1
  store double %191, ptr %192, align 8, !tbaa !35
  %indvars.iv.next178.2 = add nuw nsw i64 %indvars.iv177, 3
  %193 = getelementptr double, ptr %151, i64 %indvars.iv.next178.2
  %194 = load double, ptr %193, align 8, !tbaa !35
  %195 = getelementptr double, ptr %152, i64 %indvars.iv.next178.2
  store double %194, ptr %195, align 8, !tbaa !35
  %indvars.iv.next178.3 = add nuw nsw i64 %indvars.iv177, 4
  %exitcond181.not.3 = icmp eq i64 %indvars.iv.next178.3, %wide.trip.count180
  br i1 %exitcond181.not.3, label %.lr.ph138, label %scalar.ph266, !llvm.loop !51

._crit_edge139:                                   ; preds = %scalar.ph249.prol.loopexit, %scalar.ph249, %middle.block248
  %indvars.iv.next190 = add nsw i64 %indvars.iv189, 1
  %lftr.wideiv192 = trunc i64 %indvars.iv.next190 to i32
  %exitcond193.not = icmp eq i32 %19, %lftr.wideiv192
  br i1 %exitcond193.not, label %.preheader122, label %.preheader124, !llvm.loop !52

scalar.ph249:                                     ; preds = %scalar.ph249.prol.loopexit, %scalar.ph249
  %indvars.iv184 = phi i64 [ %indvars.iv.next185.3, %scalar.ph249 ], [ %indvars.iv184.unr, %scalar.ph249.prol.loopexit ]
  %196 = getelementptr double, ptr %171, i64 %indvars.iv184
  %197 = load double, ptr %196, align 8, !tbaa !35
  %gep = getelementptr double, ptr %172, i64 %indvars.iv184
  store double %197, ptr %gep, align 8, !tbaa !35
  %indvars.iv.next185 = add nsw i64 %indvars.iv184, 1
  %198 = getelementptr double, ptr %171, i64 %indvars.iv.next185
  %199 = load double, ptr %198, align 8, !tbaa !35
  %gep.1 = getelementptr double, ptr %172, i64 %indvars.iv.next185
  store double %199, ptr %gep.1, align 8, !tbaa !35
  %indvars.iv.next185.1 = add nsw i64 %indvars.iv184, 2
  %200 = getelementptr double, ptr %171, i64 %indvars.iv.next185.1
  %201 = load double, ptr %200, align 8, !tbaa !35
  %gep.2 = getelementptr double, ptr %172, i64 %indvars.iv.next185.1
  store double %201, ptr %gep.2, align 8, !tbaa !35
  %indvars.iv.next185.2 = add nsw i64 %indvars.iv184, 3
  %202 = getelementptr double, ptr %171, i64 %indvars.iv.next185.2
  %203 = load double, ptr %202, align 8, !tbaa !35
  %gep.3 = getelementptr double, ptr %172, i64 %indvars.iv.next185.2
  store double %203, ptr %gep.3, align 8, !tbaa !35
  %indvars.iv.next185.3 = add nsw i64 %indvars.iv184, 4
  %lftr.wideiv187.3 = trunc i64 %indvars.iv.next185.3 to i32
  %exitcond188.not.3 = icmp eq i32 %19, %lftr.wideiv187.3
  br i1 %exitcond188.not.3, label %._crit_edge139, label %scalar.ph249, !llvm.loop !53

._crit_edge143:                                   ; preds = %247, %._crit_edge134, %.preheader122
  %.lcssa126 = phi i32 [ %19, %.preheader122 ], [ %19, %._crit_edge134 ], [ %255, %247 ]
  br i1 %22, label %.preheader121, label %.thread

.preheader121:                                    ; preds = %._crit_edge143
  %204 = icmp sgt i32 %.lcssa126, 0
  br i1 %204, label %.lr.ph145, label %._crit_edge146

.lr.ph145:                                        ; preds = %.preheader121
  %205 = getelementptr inbounds i8, ptr %0, i64 1072
  %206 = load ptr, ptr %205, align 8, !tbaa !33
  %207 = add nsw i32 %.lcssa126, -1
  %208 = getelementptr inbounds i8, ptr %0, i64 1084
  %209 = load i32, ptr %208, align 4, !tbaa !34
  %210 = mul nsw i32 %209, %207
  %211 = sext i32 %210 to i64
  %212 = sext i32 %209 to i64
  %213 = zext nneg i32 %207 to i64
  %wide.trip.count200 = zext nneg i32 %.lcssa126 to i64
  %invariant.gep218 = getelementptr double, ptr %206, i64 %211
  %invariant.gep220 = getelementptr double, ptr %206, i64 %213
  %min.iters.check289 = icmp ugt i32 %.lcssa126, 37
  %ident.check.not = icmp eq i32 %209, 1
  %or.cond323 = select i1 %min.iters.check289, i1 %ident.check.not, i1 false
  br i1 %or.cond323, label %vector.memcheck279, label %scalar.ph288.preheader

scalar.ph288.preheader:                           ; preds = %middle.block287, %vector.memcheck279, %.lr.ph145
  %indvars.iv197.ph = phi i64 [ 0, %vector.memcheck279 ], [ 0, %.lr.ph145 ], [ %n.vec292, %middle.block287 ]
  %xtraiter335 = and i64 %wide.trip.count200, 1
  %lcmp.mod336.not = icmp eq i64 %xtraiter335, 0
  br i1 %lcmp.mod336.not, label %scalar.ph288.prol.loopexit, label %scalar.ph288.prol

scalar.ph288.prol:                                ; preds = %scalar.ph288.preheader
  %214 = getelementptr inbounds double, ptr %.0105, i64 %indvars.iv197.ph
  %215 = load double, ptr %214, align 8, !tbaa !35
  %gep219.prol = getelementptr double, ptr %invariant.gep218, i64 %indvars.iv197.ph
  store double %215, ptr %gep219.prol, align 8, !tbaa !35
  %216 = mul nsw i64 %indvars.iv197.ph, %212
  %gep221.prol = getelementptr double, ptr %invariant.gep220, i64 %216
  store double %215, ptr %gep221.prol, align 8, !tbaa !35
  %indvars.iv.next198.prol = or disjoint i64 %indvars.iv197.ph, 1
  br label %scalar.ph288.prol.loopexit

scalar.ph288.prol.loopexit:                       ; preds = %scalar.ph288.prol, %scalar.ph288.preheader
  %indvars.iv197.unr = phi i64 [ %indvars.iv197.ph, %scalar.ph288.preheader ], [ %indvars.iv.next198.prol, %scalar.ph288.prol ]
  %217 = add nsw i64 %wide.trip.count200, -1
  %218 = icmp eq i64 %indvars.iv197.ph, %217
  br i1 %218, label %._crit_edge146, label %scalar.ph288

vector.memcheck279:                               ; preds = %.lr.ph145
  %219 = ptrtoint ptr %206 to i64
  %220 = shl nuw nsw i64 %213, 3
  %221 = add i64 %220, %219
  %222 = sub i64 %221, %.0105280
  %diff.check281 = icmp ult i64 %222, 32
  %223 = shl nsw i64 %211, 3
  %224 = add i64 %223, %219
  %225 = sub i64 %224, %.0105280
  %diff.check282 = icmp ult i64 %225, 32
  %conflict.rdx = or i1 %diff.check281, %diff.check282
  %226 = sext i32 %207 to i64
  %227 = shl nsw i64 %226, 3
  %228 = sub nsw i64 %220, %227
  %diff.check283 = icmp ult i64 %228, 32
  %conflict.rdx284 = or i1 %conflict.rdx, %diff.check283
  %229 = add i64 %227, %219
  %230 = sub i64 %229, %.0105280
  %diff.check285 = icmp ult i64 %230, 32
  %conflict.rdx286 = or i1 %conflict.rdx284, %diff.check285
  br i1 %conflict.rdx286, label %scalar.ph288.preheader, label %vector.ph290

vector.ph290:                                     ; preds = %vector.memcheck279
  %n.vec292 = and i64 %wide.trip.count200, 2147483644
  br label %vector.body294

vector.body294:                                   ; preds = %vector.body294, %vector.ph290
  %index295 = phi i64 [ 0, %vector.ph290 ], [ %index.next298, %vector.body294 ]
  %231 = getelementptr inbounds double, ptr %.0105, i64 %index295
  %232 = getelementptr inbounds i8, ptr %231, i64 16
  %wide.load296 = load <2 x double>, ptr %231, align 8, !tbaa !35
  %wide.load297 = load <2 x double>, ptr %232, align 8, !tbaa !35
  %233 = getelementptr double, ptr %invariant.gep218, i64 %index295
  %234 = getelementptr i8, ptr %233, i64 16
  store <2 x double> %wide.load296, ptr %233, align 8, !tbaa !35
  store <2 x double> %wide.load297, ptr %234, align 8, !tbaa !35
  %235 = getelementptr double, ptr %invariant.gep220, i64 %index295
  %236 = getelementptr i8, ptr %235, i64 16
  store <2 x double> %wide.load296, ptr %235, align 8, !tbaa !35
  store <2 x double> %wide.load297, ptr %236, align 8, !tbaa !35
  %index.next298 = add nuw i64 %index295, 4
  %237 = icmp eq i64 %index.next298, %n.vec292
  br i1 %237, label %middle.block287, label %vector.body294, !llvm.loop !54

middle.block287:                                  ; preds = %vector.body294
  %cmp.n299 = icmp eq i64 %n.vec292, %wide.trip.count200
  br i1 %cmp.n299, label %._crit_edge146, label %scalar.ph288.preheader

.thread:                                          ; preds = %._crit_edge143
  %238 = getelementptr inbounds i8, ptr %0, i64 1168
  %239 = load ptr, ptr %238, align 8, !tbaa !55
  %240 = sext i32 %.0111128 to i64
  %241 = getelementptr inbounds i32, ptr %239, i64 %240
  %242 = load i32, ptr %241, align 4, !tbaa !28
  %243 = sext i32 %1 to i64
  %244 = getelementptr inbounds i32, ptr %239, i64 %243
  %245 = load i32, ptr %244, align 4, !tbaa !28
  %246 = sub nsw i32 %242, %245
  br label %.loopexit

247:                                              ; preds = %.lr.ph142, %247
  %indvars.iv194 = phi i64 [ %167, %.lr.ph142 ], [ %indvars.iv.next195, %247 ]
  %248 = getelementptr inbounds i32, ptr %164, i64 %indvars.iv194
  %249 = load i32, ptr %248, align 4, !tbaa !28
  %250 = add nsw i64 %indvars.iv194, -1
  %251 = getelementptr inbounds i32, ptr %164, i64 %250
  store i32 %249, ptr %251, align 4, !tbaa !28
  %252 = getelementptr inbounds i32, ptr %166, i64 %indvars.iv194
  %253 = load i32, ptr %252, align 4, !tbaa !30
  %254 = getelementptr inbounds i32, ptr %166, i64 %250
  store i32 %253, ptr %254, align 4, !tbaa !30
  %indvars.iv.next195 = add nsw i64 %indvars.iv194, 1
  %255 = load i32, ptr %18, align 8, !tbaa !32
  %256 = sext i32 %255 to i64
  %257 = icmp slt i64 %indvars.iv.next195, %256
  br i1 %257, label %247, label %._crit_edge143, !llvm.loop !56

._crit_edge146:                                   ; preds = %scalar.ph288.prol.loopexit, %scalar.ph288, %middle.block287, %.preheader121
  %258 = getelementptr inbounds i8, ptr %0, i64 1128
  %259 = load ptr, ptr %258, align 8, !tbaa !24
  %260 = sext i32 %.lcssa126 to i64
  %261 = getelementptr i32, ptr %259, i64 %260
  %262 = getelementptr i8, ptr %261, i64 -4
  store i32 %.0115, ptr %262, align 4, !tbaa !28
  %263 = getelementptr inbounds i8, ptr %0, i64 1136
  %264 = load ptr, ptr %263, align 8, !tbaa !29
  %265 = load i32, ptr %18, align 8, !tbaa !32
  %266 = sext i32 %265 to i64
  %267 = getelementptr i32, ptr %264, i64 %266
  %268 = getelementptr i8, ptr %267, i64 -4
  store i32 %.0114, ptr %268, align 4, !tbaa !30
  %269 = icmp eq ptr %.0105, null
  br i1 %269, label %277, label %276

scalar.ph288:                                     ; preds = %scalar.ph288.prol.loopexit, %scalar.ph288
  %indvars.iv197 = phi i64 [ %indvars.iv.next198.1, %scalar.ph288 ], [ %indvars.iv197.unr, %scalar.ph288.prol.loopexit ]
  %270 = getelementptr inbounds double, ptr %.0105, i64 %indvars.iv197
  %271 = load double, ptr %270, align 8, !tbaa !35
  %gep219 = getelementptr double, ptr %invariant.gep218, i64 %indvars.iv197
  store double %271, ptr %gep219, align 8, !tbaa !35
  %272 = mul nsw i64 %indvars.iv197, %212
  %gep221 = getelementptr double, ptr %invariant.gep220, i64 %272
  store double %271, ptr %gep221, align 8, !tbaa !35
  %indvars.iv.next198 = add nuw nsw i64 %indvars.iv197, 1
  %273 = getelementptr inbounds double, ptr %.0105, i64 %indvars.iv.next198
  %274 = load double, ptr %273, align 8, !tbaa !35
  %gep219.1 = getelementptr double, ptr %invariant.gep218, i64 %indvars.iv.next198
  store double %274, ptr %gep219.1, align 8, !tbaa !35
  %275 = mul nsw i64 %indvars.iv.next198, %212
  %gep221.1 = getelementptr double, ptr %invariant.gep220, i64 %275
  store double %274, ptr %gep221.1, align 8, !tbaa !35
  %indvars.iv.next198.1 = add nuw nsw i64 %indvars.iv197, 2
  %exitcond201.not.1 = icmp eq i64 %indvars.iv.next198.1, %wide.trip.count200
  br i1 %exitcond201.not.1, label %._crit_edge146, label %scalar.ph288, !llvm.loop !57

276:                                              ; preds = %._crit_edge146
  tail call void @_ZdaPv(ptr noundef nonnull %.0105) #5
  br label %277

277:                                              ; preds = %._crit_edge146, %276
  %278 = getelementptr inbounds i8, ptr %0, i64 1168
  %279 = load ptr, ptr %278, align 8, !tbaa !55
  %280 = sext i32 %.0111128 to i64
  %281 = getelementptr inbounds i32, ptr %279, i64 %280
  %282 = load i32, ptr %281, align 4, !tbaa !28
  %283 = sext i32 %1 to i64
  %284 = getelementptr inbounds i32, ptr %279, i64 %283
  %285 = load i32, ptr %284, align 4, !tbaa !28
  %286 = sub nsw i32 %282, %285
  %287 = sext i32 %286 to i64
  %288 = icmp slt i32 %286, 0
  %289 = shl nsw i64 %287, 2
  %290 = select i1 %288, i64 -1, i64 %289
  %291 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %290) #4
  %292 = ptrtoint ptr %291 to i64
  %293 = shl nsw i64 %287, 3
  %294 = select i1 %288, i64 -1, i64 %293
  %295 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %294) #4
  %296 = ptrtoint ptr %295 to i64
  %297 = icmp slt i32 %285, %282
  br i1 %297, label %.lr.ph149, label %.loopexit

.lr.ph149:                                        ; preds = %277
  %298 = getelementptr inbounds i8, ptr %0, i64 1160
  %299 = load ptr, ptr %298, align 8, !tbaa !58
  %300 = getelementptr inbounds i8, ptr %0, i64 1152
  %301 = load ptr, ptr %300, align 8, !tbaa !59
  %302 = sext i32 %285 to i64
  %303 = sext i32 %282 to i64
  %304 = sub nsw i64 %303, %302
  %min.iters.check306 = icmp ult i64 %304, 14
  br i1 %min.iters.check306, label %scalar.ph305.preheader, label %vector.memcheck300

vector.memcheck300:                               ; preds = %.lr.ph149
  %305 = ptrtoint ptr %301 to i64
  %306 = ptrtoint ptr %299 to i64
  %307 = shl nsw i64 %302, 2
  %308 = add i64 %307, %306
  %309 = sub i64 %292, %308
  %diff.check301 = icmp ult i64 %309, 16
  %310 = shl nsw i64 %302, 3
  %311 = add i64 %310, %305
  %312 = sub i64 %296, %311
  %diff.check302 = icmp ult i64 %312, 32
  %conflict.rdx303 = or i1 %diff.check301, %diff.check302
  br i1 %conflict.rdx303, label %scalar.ph305.preheader, label %vector.ph307

vector.ph307:                                     ; preds = %vector.memcheck300
  %n.vec309 = and i64 %304, -4
  %ind.end310 = add nsw i64 %n.vec309, %302
  br label %vector.body312

vector.body312:                                   ; preds = %vector.body312, %vector.ph307
  %index313 = phi i64 [ 0, %vector.ph307 ], [ %index.next319, %vector.body312 ]
  %offset.idx314 = add i64 %index313, %302
  %313 = getelementptr inbounds i32, ptr %299, i64 %offset.idx314
  %314 = getelementptr inbounds i8, ptr %313, i64 8
  %wide.load315 = load <2 x i32>, ptr %313, align 4, !tbaa !28
  %wide.load316 = load <2 x i32>, ptr %314, align 4, !tbaa !28
  %315 = getelementptr inbounds i32, ptr %291, i64 %index313
  %316 = getelementptr inbounds i8, ptr %315, i64 8
  store <2 x i32> %wide.load315, ptr %315, align 4, !tbaa !28
  store <2 x i32> %wide.load316, ptr %316, align 4, !tbaa !28
  %317 = getelementptr inbounds double, ptr %301, i64 %offset.idx314
  %318 = getelementptr inbounds i8, ptr %317, i64 16
  %wide.load317 = load <2 x double>, ptr %317, align 8, !tbaa !35
  %wide.load318 = load <2 x double>, ptr %318, align 8, !tbaa !35
  %319 = getelementptr inbounds double, ptr %295, i64 %index313
  %320 = getelementptr inbounds i8, ptr %319, i64 16
  store <2 x double> %wide.load317, ptr %319, align 8, !tbaa !35
  store <2 x double> %wide.load318, ptr %320, align 8, !tbaa !35
  %index.next319 = add nuw i64 %index313, 4
  %321 = icmp eq i64 %index.next319, %n.vec309
  br i1 %321, label %middle.block304, label %vector.body312, !llvm.loop !60

middle.block304:                                  ; preds = %vector.body312
  %cmp.n320 = icmp eq i64 %304, %n.vec309
  br i1 %cmp.n320, label %.loopexit, label %scalar.ph305.preheader

scalar.ph305.preheader:                           ; preds = %middle.block304, %vector.memcheck300, %.lr.ph149
  %indvars.iv202.ph = phi i64 [ %302, %vector.memcheck300 ], [ %302, %.lr.ph149 ], [ %ind.end310, %middle.block304 ]
  br label %scalar.ph305

scalar.ph305:                                     ; preds = %scalar.ph305.preheader, %scalar.ph305
  %indvars.iv202 = phi i64 [ %indvars.iv.next203, %scalar.ph305 ], [ %indvars.iv202.ph, %scalar.ph305.preheader ]
  %322 = getelementptr inbounds i32, ptr %299, i64 %indvars.iv202
  %323 = load i32, ptr %322, align 4, !tbaa !28
  %324 = sub nsw i64 %indvars.iv202, %302
  %325 = getelementptr inbounds i32, ptr %291, i64 %324
  store i32 %323, ptr %325, align 4, !tbaa !28
  %326 = getelementptr inbounds double, ptr %301, i64 %indvars.iv202
  %327 = load double, ptr %326, align 8, !tbaa !35
  %328 = getelementptr inbounds double, ptr %295, i64 %324
  store double %327, ptr %328, align 8, !tbaa !35
  %indvars.iv.next203 = add nsw i64 %indvars.iv202, 1
  %329 = icmp slt i64 %indvars.iv.next203, %303
  br i1 %329, label %scalar.ph305, label %.loopexit, !llvm.loop !61

.loopexit:                                        ; preds = %scalar.ph305, %middle.block304, %277, %.thread
  %330 = phi i32 [ %242, %.thread ], [ %282, %277 ], [ %282, %middle.block304 ], [ %282, %scalar.ph305 ]
  %331 = phi i32 [ %246, %.thread ], [ %286, %277 ], [ %286, %middle.block304 ], [ %286, %scalar.ph305 ]
  %332 = phi ptr [ %239, %.thread ], [ %279, %277 ], [ %279, %middle.block304 ], [ %279, %scalar.ph305 ]
  %.0116 = phi ptr [ null, %.thread ], [ %291, %277 ], [ %291, %middle.block304 ], [ %291, %scalar.ph305 ]
  %.1 = phi ptr [ %.0105, %.thread ], [ %295, %277 ], [ %295, %middle.block304 ], [ %295, %scalar.ph305 ]
  %333 = load i32, ptr %18, align 8, !tbaa !32
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds i32, ptr %332, i64 %334
  %336 = load i32, ptr %335, align 4, !tbaa !28
  %337 = icmp slt i32 %330, %336
  br i1 %337, label %.lr.ph152, label %.preheader

.lr.ph152:                                        ; preds = %.loopexit
  %338 = getelementptr inbounds i8, ptr %0, i64 1160
  %339 = load ptr, ptr %338, align 8, !tbaa !58
  %340 = getelementptr inbounds i8, ptr %0, i64 1152
  %341 = load ptr, ptr %340, align 8, !tbaa !59
  %342 = sext i32 %330 to i64
  %343 = sext i32 %331 to i64
  br label %347

.preheader:                                       ; preds = %347, %.loopexit
  %344 = phi i32 [ %333, %.loopexit ], [ %355, %347 ]
  %345 = icmp sgt i32 %344, %1
  br i1 %345, label %.lr.ph154.preheader, label %._crit_edge155

.lr.ph154.preheader:                              ; preds = %.preheader
  %346 = sext i32 %1 to i64
  br label %.lr.ph154

347:                                              ; preds = %.lr.ph152, %347
  %indvars.iv205 = phi i64 [ %342, %.lr.ph152 ], [ %indvars.iv.next206, %347 ]
  %348 = getelementptr inbounds i32, ptr %339, i64 %indvars.iv205
  %349 = load i32, ptr %348, align 4, !tbaa !28
  %350 = sub nsw i64 %indvars.iv205, %343
  %351 = getelementptr inbounds i32, ptr %339, i64 %350
  store i32 %349, ptr %351, align 4, !tbaa !28
  %352 = getelementptr inbounds double, ptr %341, i64 %indvars.iv205
  %353 = load double, ptr %352, align 8, !tbaa !35
  %354 = getelementptr inbounds double, ptr %341, i64 %350
  store double %353, ptr %354, align 8, !tbaa !35
  %indvars.iv.next206 = add nsw i64 %indvars.iv205, 1
  %355 = load i32, ptr %18, align 8, !tbaa !32
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds i32, ptr %332, i64 %356
  %358 = load i32, ptr %357, align 4, !tbaa !28
  %359 = sext i32 %358 to i64
  %360 = icmp slt i64 %indvars.iv.next206, %359
  br i1 %360, label %347, label %.preheader, !llvm.loop !62

._crit_edge155:                                   ; preds = %.lr.ph154, %.preheader
  %361 = phi i32 [ %344, %.preheader ], [ %366, %.lr.ph154 ]
  br i1 %22, label %369, label %405

.lr.ph154:                                        ; preds = %.lr.ph154.preheader, %.lr.ph154
  %indvars.iv208 = phi i64 [ %346, %.lr.ph154.preheader ], [ %indvars.iv.next209, %.lr.ph154 ]
  %indvars.iv.next209 = add nsw i64 %indvars.iv208, 1
  %362 = getelementptr inbounds i32, ptr %332, i64 %indvars.iv.next209
  %363 = load i32, ptr %362, align 4, !tbaa !28
  %364 = sub nsw i32 %363, %331
  %365 = getelementptr inbounds i32, ptr %332, i64 %indvars.iv208
  store i32 %364, ptr %365, align 4, !tbaa !28
  %366 = load i32, ptr %18, align 8, !tbaa !32
  %367 = sext i32 %366 to i64
  %368 = icmp slt i64 %indvars.iv.next209, %367
  br i1 %368, label %.lr.ph154, label %._crit_edge155, !llvm.loop !63

369:                                              ; preds = %._crit_edge155
  %370 = sext i32 %361 to i64
  %371 = getelementptr i32, ptr %332, i64 %370
  %372 = getelementptr i8, ptr %371, i64 -4
  %373 = load i32, ptr %372, align 4, !tbaa !28
  %invariant.gep157 = getelementptr i8, ptr %332, i64 -4
  %374 = load i32, ptr %371, align 4, !tbaa !28
  %375 = icmp slt i32 %373, %374
  br i1 %375, label %.lr.ph161, label %._crit_edge162

.lr.ph161:                                        ; preds = %369
  %376 = getelementptr inbounds i8, ptr %0, i64 1160
  %377 = load ptr, ptr %376, align 8, !tbaa !58
  %378 = getelementptr inbounds i8, ptr %0, i64 1152
  %379 = load ptr, ptr %378, align 8, !tbaa !59
  %380 = sext i32 %373 to i64
  %invariant.gep222 = getelementptr i8, ptr %332, i64 -4
  br label %382

._crit_edge162:                                   ; preds = %369
  %381 = icmp eq ptr %.0116, null
  br i1 %381, label %402, label %._crit_edge162.thread

382:                                              ; preds = %.lr.ph161, %382
  %indvars.iv211 = phi i64 [ %380, %.lr.ph161 ], [ %indvars.iv.next212, %382 ]
  %383 = phi i64 [ %370, %.lr.ph161 ], [ %391, %382 ]
  %gep223 = getelementptr i32, ptr %invariant.gep222, i64 %383
  %384 = load i32, ptr %gep223, align 4, !tbaa !28
  %385 = sext i32 %384 to i64
  %386 = sub nsw i64 %indvars.iv211, %385
  %387 = getelementptr inbounds i32, ptr %.0116, i64 %386
  %388 = load i32, ptr %387, align 4, !tbaa !28
  %389 = getelementptr inbounds i32, ptr %377, i64 %indvars.iv211
  store i32 %388, ptr %389, align 4, !tbaa !28
  %390 = load i32, ptr %18, align 8, !tbaa !32
  %391 = sext i32 %390 to i64
  %gep158 = getelementptr i32, ptr %invariant.gep157, i64 %391
  %392 = load i32, ptr %gep158, align 4, !tbaa !28
  %393 = sext i32 %392 to i64
  %394 = sub nsw i64 %indvars.iv211, %393
  %395 = getelementptr inbounds double, ptr %.1, i64 %394
  %396 = load double, ptr %395, align 8, !tbaa !35
  %397 = getelementptr inbounds double, ptr %379, i64 %indvars.iv211
  store double %396, ptr %397, align 8, !tbaa !35
  %indvars.iv.next212 = add nsw i64 %indvars.iv211, 1
  %398 = getelementptr inbounds i32, ptr %332, i64 %391
  %399 = load i32, ptr %398, align 4, !tbaa !28
  %400 = sext i32 %399 to i64
  %401 = icmp slt i64 %indvars.iv.next212, %400
  br i1 %401, label %382, label %._crit_edge162.thread, !llvm.loop !64

._crit_edge162.thread:                            ; preds = %382, %._crit_edge162
  tail call void @_ZdaPv(ptr noundef nonnull %.0116) #5
  br label %402

402:                                              ; preds = %._crit_edge162.thread, %._crit_edge162
  %403 = icmp eq ptr %.1, null
  br i1 %403, label %405, label %404

404:                                              ; preds = %402
  tail call void @_ZdaPv(ptr noundef nonnull %.1) #5
  br label %405

405:                                              ; preds = %._crit_edge155, %404, %402, %17
  %406 = load i32, ptr %18, align 8, !tbaa !32
  %407 = add nsw i32 %406, -1
  store i32 %407, ptr %18, align 8, !tbaa !32
  %408 = load i32, ptr %4, align 8, !tbaa !5
  %409 = icmp eq i32 %408, 3
  br i1 %409, label %410, label %411

410:                                              ; preds = %405
  tail call void (ptr, ...) @_Z8MyPrintfPKcz(ptr noundef nonnull @.str.37, i32 noundef %407)
  br label %411

411:                                              ; preds = %410, %405
  ret i32 0
}

attributes #0 = { 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 #1 = { 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 #2 = { 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 #3 = { 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 #4 = { builtin allocsize(0) }
attributes #5 = { builtin nounwind }

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

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


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