; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dgehrd)

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

@c__1 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c__65 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@c_b25 = external hidden global double, align 8
@c_b26 = external hidden global double, align 8
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dgehrd_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) #0 {
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %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
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  store ptr %8, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  %39 = load ptr, ptr %14, align 8, !tbaa !5
  %40 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %40, ptr %19, align 4, !tbaa !9
  %41 = load i32, ptr %19, align 4, !tbaa !9
  %42 = mul nsw i32 %41, 1
  %43 = add nsw i32 1, %42
  store i32 %43, ptr %20, align 4, !tbaa !9
  %44 = load i32, ptr %20, align 4, !tbaa !9
  %45 = load ptr, ptr %13, align 8, !tbaa !5
  %46 = sext i32 %44 to i64
  %47 = sub i64 0, %46
  %48 = getelementptr inbounds double, ptr %45, i64 %47
  store ptr %48, ptr %13, align 8, !tbaa !5
  %49 = load ptr, ptr %15, align 8, !tbaa !5
  %50 = getelementptr inbounds double, ptr %49, i32 -1
  store ptr %50, ptr %15, align 8, !tbaa !5
  %51 = load ptr, ptr %16, align 8, !tbaa !5
  %52 = getelementptr inbounds double, ptr %51, i32 -1
  store ptr %52, ptr %16, align 8, !tbaa !5
  %53 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %53, align 4, !tbaa !9
  %54 = load ptr, ptr %17, align 8, !tbaa !5
  %55 = load i32, ptr %54, align 4, !tbaa !9
  %56 = icmp eq i32 %55, -1
  %57 = zext i1 %56 to i32
  store i32 %57, ptr %36, align 4, !tbaa !9
  %58 = load ptr, ptr %10, align 8, !tbaa !5
  %59 = load i32, ptr %58, align 4, !tbaa !9
  %60 = icmp slt i32 %59, 0
  br i1 %60, label %61, label %63

61:                                               ; preds = %9
  %62 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -1, ptr %62, align 4, !tbaa !9
  br label %144

63:                                               ; preds = %9
  %64 = load ptr, ptr %11, align 8, !tbaa !5
  %65 = load i32, ptr %64, align 4, !tbaa !9
  %66 = icmp slt i32 %65, 1
  br i1 %66, label %80, label %67

67:                                               ; preds = %63
  %68 = load ptr, ptr %11, align 8, !tbaa !5
  %69 = load i32, ptr %68, align 4, !tbaa !9
  %70 = load ptr, ptr %10, align 8, !tbaa !5
  %71 = load i32, ptr %70, align 4, !tbaa !9
  %72 = icmp sge i32 1, %71
  br i1 %72, label %73, label %74

73:                                               ; preds = %67
  br label %77

74:                                               ; preds = %67
  %75 = load ptr, ptr %10, align 8, !tbaa !5
  %76 = load i32, ptr %75, align 4, !tbaa !9
  br label %77

77:                                               ; preds = %74, %73
  %78 = phi i32 [ 1, %73 ], [ %76, %74 ]
  %79 = icmp sgt i32 %69, %78
  br i1 %79, label %80, label %82

80:                                               ; preds = %77, %63
  %81 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -2, ptr %81, align 4, !tbaa !9
  br label %143

82:                                               ; preds = %77
  %83 = load ptr, ptr %12, align 8, !tbaa !5
  %84 = load i32, ptr %83, align 4, !tbaa !9
  %85 = load ptr, ptr %11, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = load ptr, ptr %10, align 8, !tbaa !5
  %88 = load i32, ptr %87, align 4, !tbaa !9
  %89 = icmp sle i32 %86, %88
  br i1 %89, label %90, label %93

90:                                               ; preds = %82
  %91 = load ptr, ptr %11, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  br label %96

93:                                               ; preds = %82
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  br label %96

96:                                               ; preds = %93, %90
  %97 = phi i32 [ %92, %90 ], [ %95, %93 ]
  %98 = icmp slt i32 %84, %97
  br i1 %98, label %105, label %99

99:                                               ; preds = %96
  %100 = load ptr, ptr %12, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = load ptr, ptr %10, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = icmp sgt i32 %101, %103
  br i1 %104, label %105, label %107

105:                                              ; preds = %99, %96
  %106 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -3, ptr %106, align 4, !tbaa !9
  br label %142

107:                                              ; preds = %99
  %108 = load ptr, ptr %14, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = load ptr, ptr %10, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !9
  %112 = icmp sge i32 1, %111
  br i1 %112, label %113, label %114

113:                                              ; preds = %107
  br label %117

114:                                              ; preds = %107
  %115 = load ptr, ptr %10, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  br label %117

117:                                              ; preds = %114, %113
  %118 = phi i32 [ 1, %113 ], [ %116, %114 ]
  %119 = icmp slt i32 %109, %118
  br i1 %119, label %120, label %122

120:                                              ; preds = %117
  %121 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -5, ptr %121, align 4, !tbaa !9
  br label %141

122:                                              ; preds = %117
  %123 = load ptr, ptr %17, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = load ptr, ptr %10, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = icmp sge i32 1, %126
  br i1 %127, label %128, label %129

128:                                              ; preds = %122
  br label %132

129:                                              ; preds = %122
  %130 = load ptr, ptr %10, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %129, %128
  %133 = phi i32 [ 1, %128 ], [ %131, %129 ]
  %134 = icmp slt i32 %124, %133
  br i1 %134, label %135, label %140

135:                                              ; preds = %132
  %136 = load i32, ptr %36, align 4, !tbaa !9
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %140, label %138

138:                                              ; preds = %135
  %139 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -8, ptr %139, align 4, !tbaa !9
  br label %140

140:                                              ; preds = %138, %135, %132
  br label %141

141:                                              ; preds = %140, %120
  br label %142

142:                                              ; preds = %141, %105
  br label %143

143:                                              ; preds = %142, %80
  br label %144

144:                                              ; preds = %143, %61
  %145 = load ptr, ptr %18, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = icmp eq i32 %146, 0
  br i1 %147, label %148, label %171

148:                                              ; preds = %144
  store i32 64, ptr %21, align 4, !tbaa !9
  %149 = load ptr, ptr %10, align 8, !tbaa !5
  %150 = load ptr, ptr %11, align 8, !tbaa !5
  %151 = load ptr, ptr %12, align 8, !tbaa !5
  %152 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %149, ptr noundef %150, ptr noundef %151, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %152, ptr %22, align 4, !tbaa !9
  %153 = load i32, ptr %21, align 4, !tbaa !9
  %154 = load i32, ptr %22, align 4, !tbaa !9
  %155 = icmp sle i32 %153, %154
  br i1 %155, label %156, label %158

156:                                              ; preds = %148
  %157 = load i32, ptr %21, align 4, !tbaa !9
  br label %160

158:                                              ; preds = %148
  %159 = load i32, ptr %22, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %158, %156
  %161 = phi i32 [ %157, %156 ], [ %159, %158 ]
  store i32 %161, ptr %31, align 4, !tbaa !9
  %162 = load ptr, ptr %10, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = load i32, ptr %31, align 4, !tbaa !9
  %165 = mul nsw i32 %163, %164
  %166 = add nsw i32 %165, 4160
  store i32 %166, ptr %35, align 4, !tbaa !9
  %167 = load i32, ptr %35, align 4, !tbaa !9
  %168 = sitofp i32 %167 to double
  %169 = load ptr, ptr %16, align 8, !tbaa !5
  %170 = getelementptr inbounds double, ptr %169, i64 1
  store double %168, ptr %170, align 8, !tbaa !11
  br label %171

171:                                              ; preds = %160, %144
  %172 = load ptr, ptr %18, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %175, label %180

175:                                              ; preds = %171
  %176 = load ptr, ptr %18, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = sub nsw i32 0, %177
  store i32 %178, ptr %21, align 4, !tbaa !9
  %179 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %21, i32 noundef 6)
  store i32 1, ptr %38, align 4
  br label %569

180:                                              ; preds = %171
  %181 = load i32, ptr %36, align 4, !tbaa !9
  %182 = icmp ne i32 %181, 0
  br i1 %182, label %183, label %184

183:                                              ; preds = %180
  store i32 1, ptr %38, align 4
  br label %569

184:                                              ; preds = %180
  br label %185

185:                                              ; preds = %184
  %186 = load ptr, ptr %11, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = sub nsw i32 %187, 1
  store i32 %188, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %198, %185
  %190 = load i32, ptr %25, align 4, !tbaa !9
  %191 = load i32, ptr %21, align 4, !tbaa !9
  %192 = icmp sle i32 %190, %191
  br i1 %192, label %193, label %201

193:                                              ; preds = %189
  %194 = load ptr, ptr %15, align 8, !tbaa !5
  %195 = load i32, ptr %25, align 4, !tbaa !9
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds double, ptr %194, i64 %196
  store double 0.000000e+00, ptr %197, align 8, !tbaa !11
  br label %198

198:                                              ; preds = %193
  %199 = load i32, ptr %25, align 4, !tbaa !9
  %200 = add nsw i32 %199, 1
  store i32 %200, ptr %25, align 4, !tbaa !9
  br label %189, !llvm.loop !13

201:                                              ; preds = %189
  %202 = load ptr, ptr %10, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = sub nsw i32 %203, 1
  store i32 %204, ptr %21, align 4, !tbaa !9
  %205 = load ptr, ptr %12, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = icmp sge i32 1, %206
  br i1 %207, label %208, label %209

208:                                              ; preds = %201
  br label %212

209:                                              ; preds = %201
  %210 = load ptr, ptr %12, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  br label %212

212:                                              ; preds = %209, %208
  %213 = phi i32 [ 1, %208 ], [ %211, %209 ]
  store i32 %213, ptr %25, align 4, !tbaa !9
  br label %214

214:                                              ; preds = %223, %212
  %215 = load i32, ptr %25, align 4, !tbaa !9
  %216 = load i32, ptr %21, align 4, !tbaa !9
  %217 = icmp sle i32 %215, %216
  br i1 %217, label %218, label %226

218:                                              ; preds = %214
  %219 = load ptr, ptr %15, align 8, !tbaa !5
  %220 = load i32, ptr %25, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds double, ptr %219, i64 %221
  store double 0.000000e+00, ptr %222, align 8, !tbaa !11
  br label %223

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

226:                                              ; preds = %214
  %227 = load ptr, ptr %12, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = load ptr, ptr %11, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = sub nsw i32 %228, %230
  %232 = add nsw i32 %231, 1
  store i32 %232, ptr %32, align 4, !tbaa !9
  %233 = load i32, ptr %32, align 4, !tbaa !9
  %234 = icmp sle i32 %233, 1
  br i1 %234, label %235, label %238

235:                                              ; preds = %226
  %236 = load ptr, ptr %16, align 8, !tbaa !5
  %237 = getelementptr inbounds double, ptr %236, i64 1
  store double 1.000000e+00, ptr %237, align 8, !tbaa !11
  store i32 1, ptr %38, align 4
  br label %569

238:                                              ; preds = %226
  store i32 64, ptr %21, align 4, !tbaa !9
  %239 = load ptr, ptr %10, align 8, !tbaa !5
  %240 = load ptr, ptr %11, align 8, !tbaa !5
  %241 = load ptr, ptr %12, align 8, !tbaa !5
  %242 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %239, ptr noundef %240, ptr noundef %241, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %242, ptr %22, align 4, !tbaa !9
  %243 = load i32, ptr %21, align 4, !tbaa !9
  %244 = load i32, ptr %22, align 4, !tbaa !9
  %245 = icmp sle i32 %243, %244
  br i1 %245, label %246, label %248

246:                                              ; preds = %238
  %247 = load i32, ptr %21, align 4, !tbaa !9
  br label %250

248:                                              ; preds = %238
  %249 = load i32, ptr %22, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %248, %246
  %251 = phi i32 [ %247, %246 ], [ %249, %248 ]
  store i32 %251, ptr %31, align 4, !tbaa !9
  store i32 2, ptr %27, align 4, !tbaa !9
  %252 = load i32, ptr %31, align 4, !tbaa !9
  %253 = icmp sgt i32 %252, 1
  br i1 %253, label %254, label %318

254:                                              ; preds = %250
  %255 = load i32, ptr %31, align 4, !tbaa !9
  %256 = load i32, ptr %32, align 4, !tbaa !9
  %257 = icmp slt i32 %255, %256
  br i1 %257, label %258, label %318

258:                                              ; preds = %254
  %259 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %259, ptr %21, align 4, !tbaa !9
  %260 = load ptr, ptr %10, align 8, !tbaa !5
  %261 = load ptr, ptr %11, align 8, !tbaa !5
  %262 = load ptr, ptr %12, align 8, !tbaa !5
  %263 = call i32 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %260, ptr noundef %261, ptr noundef %262, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %263, ptr %22, align 4, !tbaa !9
  %264 = load i32, ptr %21, align 4, !tbaa !9
  %265 = load i32, ptr %22, align 4, !tbaa !9
  %266 = icmp sge i32 %264, %265
  br i1 %266, label %267, label %269

267:                                              ; preds = %258
  %268 = load i32, ptr %21, align 4, !tbaa !9
  br label %271

269:                                              ; preds = %258
  %270 = load i32, ptr %22, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %269, %267
  %272 = phi i32 [ %268, %267 ], [ %270, %269 ]
  store i32 %272, ptr %33, align 4, !tbaa !9
  %273 = load i32, ptr %33, align 4, !tbaa !9
  %274 = load i32, ptr %32, align 4, !tbaa !9
  %275 = icmp slt i32 %273, %274
  br i1 %275, label %276, label %317

276:                                              ; preds = %271
  %277 = load ptr, ptr %17, align 8, !tbaa !5
  %278 = load i32, ptr %277, align 4, !tbaa !9
  %279 = load ptr, ptr %10, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = load i32, ptr %31, align 4, !tbaa !9
  %282 = mul nsw i32 %280, %281
  %283 = add nsw i32 %282, 4160
  %284 = icmp slt i32 %278, %283
  br i1 %284, label %285, label %316

285:                                              ; preds = %276
  store i32 2, ptr %21, align 4, !tbaa !9
  %286 = load ptr, ptr %10, align 8, !tbaa !5
  %287 = load ptr, ptr %11, align 8, !tbaa !5
  %288 = load ptr, ptr %12, align 8, !tbaa !5
  %289 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %286, ptr noundef %287, ptr noundef %288, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %289, ptr %22, align 4, !tbaa !9
  %290 = load i32, ptr %21, align 4, !tbaa !9
  %291 = load i32, ptr %22, align 4, !tbaa !9
  %292 = icmp sge i32 %290, %291
  br i1 %292, label %293, label %295

293:                                              ; preds = %285
  %294 = load i32, ptr %21, align 4, !tbaa !9
  br label %297

295:                                              ; preds = %285
  %296 = load i32, ptr %22, align 4, !tbaa !9
  br label %297

297:                                              ; preds = %295, %293
  %298 = phi i32 [ %294, %293 ], [ %296, %295 ]
  store i32 %298, ptr %27, align 4, !tbaa !9
  %299 = load ptr, ptr %17, align 8, !tbaa !5
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = load ptr, ptr %10, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  %303 = load i32, ptr %27, align 4, !tbaa !9
  %304 = mul nsw i32 %302, %303
  %305 = add nsw i32 %304, 4160
  %306 = icmp sge i32 %300, %305
  br i1 %306, label %307, label %314

307:                                              ; preds = %297
  %308 = load ptr, ptr %17, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = sub nsw i32 %309, 4160
  %311 = load ptr, ptr %10, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = sdiv i32 %310, %312
  store i32 %313, ptr %31, align 4, !tbaa !9
  br label %315

314:                                              ; preds = %297
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %315

315:                                              ; preds = %314, %307
  br label %316

316:                                              ; preds = %315, %276
  br label %317

317:                                              ; preds = %316, %271
  br label %318

318:                                              ; preds = %317, %254, %250
  %319 = load ptr, ptr %10, align 8, !tbaa !5
  %320 = load i32, ptr %319, align 4, !tbaa !9
  store i32 %320, ptr %34, align 4, !tbaa !9
  %321 = load i32, ptr %31, align 4, !tbaa !9
  %322 = load i32, ptr %27, align 4, !tbaa !9
  %323 = icmp slt i32 %321, %322
  br i1 %323, label %328, label %324

324:                                              ; preds = %318
  %325 = load i32, ptr %31, align 4, !tbaa !9
  %326 = load i32, ptr %32, align 4, !tbaa !9
  %327 = icmp sge i32 %325, %326
  br i1 %327, label %328, label %331

328:                                              ; preds = %324, %318
  %329 = load ptr, ptr %11, align 8, !tbaa !5
  %330 = load i32, ptr %329, align 4, !tbaa !9
  store i32 %330, ptr %25, align 4, !tbaa !9
  br label %553

331:                                              ; preds = %324
  %332 = load ptr, ptr %10, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = load i32, ptr %31, align 4, !tbaa !9
  %335 = mul nsw i32 %333, %334
  %336 = add nsw i32 %335, 1
  store i32 %336, ptr %37, align 4, !tbaa !9
  %337 = load ptr, ptr %12, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = sub nsw i32 %338, 1
  %340 = load i32, ptr %33, align 4, !tbaa !9
  %341 = sub nsw i32 %339, %340
  store i32 %341, ptr %21, align 4, !tbaa !9
  %342 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %342, ptr %22, align 4, !tbaa !9
  %343 = load ptr, ptr %11, align 8, !tbaa !5
  %344 = load i32, ptr %343, align 4, !tbaa !9
  store i32 %344, ptr %25, align 4, !tbaa !9
  br label %345

345:                                              ; preds = %548, %331
  %346 = load i32, ptr %22, align 4, !tbaa !9
  %347 = icmp slt i32 %346, 0
  br i1 %347, label %348, label %353

348:                                              ; preds = %345
  %349 = load i32, ptr %25, align 4, !tbaa !9
  %350 = load i32, ptr %21, align 4, !tbaa !9
  %351 = icmp sge i32 %349, %350
  %352 = zext i1 %351 to i32
  br label %358

353:                                              ; preds = %345
  %354 = load i32, ptr %25, align 4, !tbaa !9
  %355 = load i32, ptr %21, align 4, !tbaa !9
  %356 = icmp sle i32 %354, %355
  %357 = zext i1 %356 to i32
  br label %358

358:                                              ; preds = %353, %348
  %359 = phi i32 [ %352, %348 ], [ %357, %353 ]
  %360 = icmp ne i32 %359, 0
  br i1 %360, label %361, label %552

361:                                              ; preds = %358
  %362 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %362, ptr %23, align 4, !tbaa !9
  %363 = load ptr, ptr %12, align 8, !tbaa !5
  %364 = load i32, ptr %363, align 4, !tbaa !9
  %365 = load i32, ptr %25, align 4, !tbaa !9
  %366 = sub nsw i32 %364, %365
  store i32 %366, ptr %24, align 4, !tbaa !9
  %367 = load i32, ptr %23, align 4, !tbaa !9
  %368 = load i32, ptr %24, align 4, !tbaa !9
  %369 = icmp sle i32 %367, %368
  br i1 %369, label %370, label %372

370:                                              ; preds = %361
  %371 = load i32, ptr %23, align 4, !tbaa !9
  br label %374

372:                                              ; preds = %361
  %373 = load i32, ptr %24, align 4, !tbaa !9
  br label %374

374:                                              ; preds = %372, %370
  %375 = phi i32 [ %371, %370 ], [ %373, %372 ]
  store i32 %375, ptr %29, align 4, !tbaa !9
  %376 = load ptr, ptr %12, align 8, !tbaa !5
  %377 = load ptr, ptr %13, align 8, !tbaa !5
  %378 = load i32, ptr %25, align 4, !tbaa !9
  %379 = load i32, ptr %19, align 4, !tbaa !9
  %380 = mul nsw i32 %378, %379
  %381 = add nsw i32 %380, 1
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds double, ptr %377, i64 %382
  %384 = load ptr, ptr %14, align 8, !tbaa !5
  %385 = load ptr, ptr %15, align 8, !tbaa !5
  %386 = load i32, ptr %25, align 4, !tbaa !9
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds double, ptr %385, i64 %387
  %389 = load ptr, ptr %16, align 8, !tbaa !5
  %390 = load i32, ptr %37, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %389, i64 %391
  %393 = load ptr, ptr %16, align 8, !tbaa !5
  %394 = getelementptr inbounds double, ptr %393, i64 1
  call void @dlahr2_(ptr noundef %376, ptr noundef %25, ptr noundef %29, ptr noundef %383, ptr noundef %384, ptr noundef %388, ptr noundef %392, ptr noundef @c__65, ptr noundef %394, ptr noundef %34)
  %395 = load ptr, ptr %13, align 8, !tbaa !5
  %396 = load i32, ptr %25, align 4, !tbaa !9
  %397 = load i32, ptr %29, align 4, !tbaa !9
  %398 = add nsw i32 %396, %397
  %399 = load i32, ptr %25, align 4, !tbaa !9
  %400 = load i32, ptr %29, align 4, !tbaa !9
  %401 = add nsw i32 %399, %400
  %402 = sub nsw i32 %401, 1
  %403 = load i32, ptr %19, align 4, !tbaa !9
  %404 = mul nsw i32 %402, %403
  %405 = add nsw i32 %398, %404
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %395, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !11
  store double %408, ptr %30, align 8, !tbaa !11
  %409 = load ptr, ptr %13, align 8, !tbaa !5
  %410 = load i32, ptr %25, align 4, !tbaa !9
  %411 = load i32, ptr %29, align 4, !tbaa !9
  %412 = add nsw i32 %410, %411
  %413 = load i32, ptr %25, align 4, !tbaa !9
  %414 = load i32, ptr %29, align 4, !tbaa !9
  %415 = add nsw i32 %413, %414
  %416 = sub nsw i32 %415, 1
  %417 = load i32, ptr %19, align 4, !tbaa !9
  %418 = mul nsw i32 %416, %417
  %419 = add nsw i32 %412, %418
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds double, ptr %409, i64 %420
  store double 1.000000e+00, ptr %421, align 8, !tbaa !11
  %422 = load ptr, ptr %12, align 8, !tbaa !5
  %423 = load i32, ptr %422, align 4, !tbaa !9
  %424 = load i32, ptr %25, align 4, !tbaa !9
  %425 = sub nsw i32 %423, %424
  %426 = load i32, ptr %29, align 4, !tbaa !9
  %427 = sub nsw i32 %425, %426
  %428 = add nsw i32 %427, 1
  store i32 %428, ptr %23, align 4, !tbaa !9
  %429 = load ptr, ptr %12, align 8, !tbaa !5
  %430 = load ptr, ptr %16, align 8, !tbaa !5
  %431 = getelementptr inbounds double, ptr %430, i64 1
  %432 = load ptr, ptr %13, align 8, !tbaa !5
  %433 = load i32, ptr %25, align 4, !tbaa !9
  %434 = load i32, ptr %29, align 4, !tbaa !9
  %435 = add nsw i32 %433, %434
  %436 = load i32, ptr %25, align 4, !tbaa !9
  %437 = load i32, ptr %19, align 4, !tbaa !9
  %438 = mul nsw i32 %436, %437
  %439 = add nsw i32 %435, %438
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds double, ptr %432, i64 %440
  %442 = load ptr, ptr %14, align 8, !tbaa !5
  %443 = load ptr, ptr %13, align 8, !tbaa !5
  %444 = load i32, ptr %25, align 4, !tbaa !9
  %445 = load i32, ptr %29, align 4, !tbaa !9
  %446 = add nsw i32 %444, %445
  %447 = load i32, ptr %19, align 4, !tbaa !9
  %448 = mul nsw i32 %446, %447
  %449 = add nsw i32 %448, 1
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %443, i64 %450
  %452 = load ptr, ptr %14, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %429, ptr noundef %23, ptr noundef %29, ptr noundef @c_b25, ptr noundef %431, ptr noundef %34, ptr noundef %441, ptr noundef %442, ptr noundef @c_b26, ptr noundef %451, ptr noundef %452)
  %453 = load double, ptr %30, align 8, !tbaa !11
  %454 = load ptr, ptr %13, align 8, !tbaa !5
  %455 = load i32, ptr %25, align 4, !tbaa !9
  %456 = load i32, ptr %29, align 4, !tbaa !9
  %457 = add nsw i32 %455, %456
  %458 = load i32, ptr %25, align 4, !tbaa !9
  %459 = load i32, ptr %29, align 4, !tbaa !9
  %460 = add nsw i32 %458, %459
  %461 = sub nsw i32 %460, 1
  %462 = load i32, ptr %19, align 4, !tbaa !9
  %463 = mul nsw i32 %461, %462
  %464 = add nsw i32 %457, %463
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %454, i64 %465
  store double %453, ptr %466, align 8, !tbaa !11
  %467 = load i32, ptr %29, align 4, !tbaa !9
  %468 = sub nsw i32 %467, 1
  store i32 %468, ptr %23, align 4, !tbaa !9
  %469 = load ptr, ptr %13, align 8, !tbaa !5
  %470 = load i32, ptr %25, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  %472 = load i32, ptr %25, align 4, !tbaa !9
  %473 = load i32, ptr %19, align 4, !tbaa !9
  %474 = mul nsw i32 %472, %473
  %475 = add nsw i32 %471, %474
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds double, ptr %469, i64 %476
  %478 = load ptr, ptr %14, align 8, !tbaa !5
  %479 = load ptr, ptr %16, align 8, !tbaa !5
  %480 = getelementptr inbounds double, ptr %479, i64 1
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @.str.6, ptr noundef %25, ptr noundef %23, ptr noundef @c_b26, ptr noundef %477, ptr noundef %478, ptr noundef %480, ptr noundef %34)
  %481 = load i32, ptr %29, align 4, !tbaa !9
  %482 = sub nsw i32 %481, 2
  store i32 %482, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %483

483:                                              ; preds = %505, %374
  %484 = load i32, ptr %26, align 4, !tbaa !9
  %485 = load i32, ptr %23, align 4, !tbaa !9
  %486 = icmp sle i32 %484, %485
  br i1 %486, label %487, label %508

487:                                              ; preds = %483
  %488 = load ptr, ptr %16, align 8, !tbaa !5
  %489 = load i32, ptr %34, align 4, !tbaa !9
  %490 = load i32, ptr %26, align 4, !tbaa !9
  %491 = mul nsw i32 %489, %490
  %492 = add nsw i32 %491, 1
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %488, i64 %493
  %495 = load ptr, ptr %13, align 8, !tbaa !5
  %496 = load i32, ptr %25, align 4, !tbaa !9
  %497 = load i32, ptr %26, align 4, !tbaa !9
  %498 = add nsw i32 %496, %497
  %499 = add nsw i32 %498, 1
  %500 = load i32, ptr %19, align 4, !tbaa !9
  %501 = mul nsw i32 %499, %500
  %502 = add nsw i32 %501, 1
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds double, ptr %495, i64 %503
  call void @daxpy_(ptr noundef %25, ptr noundef @c_b25, ptr noundef %494, ptr noundef @c__1, ptr noundef %504, ptr noundef @c__1)
  br label %505

505:                                              ; preds = %487
  %506 = load i32, ptr %26, align 4, !tbaa !9
  %507 = add nsw i32 %506, 1
  store i32 %507, ptr %26, align 4, !tbaa !9
  br label %483, !llvm.loop !16

508:                                              ; preds = %483
  %509 = load ptr, ptr %12, align 8, !tbaa !5
  %510 = load i32, ptr %509, align 4, !tbaa !9
  %511 = load i32, ptr %25, align 4, !tbaa !9
  %512 = sub nsw i32 %510, %511
  store i32 %512, ptr %23, align 4, !tbaa !9
  %513 = load ptr, ptr %10, align 8, !tbaa !5
  %514 = load i32, ptr %513, align 4, !tbaa !9
  %515 = load i32, ptr %25, align 4, !tbaa !9
  %516 = sub nsw i32 %514, %515
  %517 = load i32, ptr %29, align 4, !tbaa !9
  %518 = sub nsw i32 %516, %517
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %24, align 4, !tbaa !9
  %520 = load ptr, ptr %13, align 8, !tbaa !5
  %521 = load i32, ptr %25, align 4, !tbaa !9
  %522 = add nsw i32 %521, 1
  %523 = load i32, ptr %25, align 4, !tbaa !9
  %524 = load i32, ptr %19, align 4, !tbaa !9
  %525 = mul nsw i32 %523, %524
  %526 = add nsw i32 %522, %525
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %520, i64 %527
  %529 = load ptr, ptr %14, align 8, !tbaa !5
  %530 = load ptr, ptr %16, align 8, !tbaa !5
  %531 = load i32, ptr %37, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %530, i64 %532
  %534 = load ptr, ptr %13, align 8, !tbaa !5
  %535 = load i32, ptr %25, align 4, !tbaa !9
  %536 = add nsw i32 %535, 1
  %537 = load i32, ptr %25, align 4, !tbaa !9
  %538 = load i32, ptr %29, align 4, !tbaa !9
  %539 = add nsw i32 %537, %538
  %540 = load i32, ptr %19, align 4, !tbaa !9
  %541 = mul nsw i32 %539, %540
  %542 = add nsw i32 %536, %541
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds double, ptr %534, i64 %543
  %545 = load ptr, ptr %14, align 8, !tbaa !5
  %546 = load ptr, ptr %16, align 8, !tbaa !5
  %547 = getelementptr inbounds double, ptr %546, i64 1
  call void @dlarfb_(ptr noundef @.str.7, ptr noundef @.str.3, ptr noundef @.str.8, ptr noundef @.str.9, ptr noundef %23, ptr noundef %24, ptr noundef %29, ptr noundef %528, ptr noundef %529, ptr noundef %533, ptr noundef @c__65, ptr noundef %544, ptr noundef %545, ptr noundef %547, ptr noundef %34)
  br label %548

548:                                              ; preds = %508
  %549 = load i32, ptr %22, align 4, !tbaa !9
  %550 = load i32, ptr %25, align 4, !tbaa !9
  %551 = add nsw i32 %550, %549
  store i32 %551, ptr %25, align 4, !tbaa !9
  br label %345, !llvm.loop !17

552:                                              ; preds = %358
  br label %553

553:                                              ; preds = %552, %328
  %554 = load ptr, ptr %10, align 8, !tbaa !5
  %555 = load ptr, ptr %12, align 8, !tbaa !5
  %556 = load ptr, ptr %13, align 8, !tbaa !5
  %557 = load i32, ptr %20, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds double, ptr %556, i64 %558
  %560 = load ptr, ptr %14, align 8, !tbaa !5
  %561 = load ptr, ptr %15, align 8, !tbaa !5
  %562 = getelementptr inbounds double, ptr %561, i64 1
  %563 = load ptr, ptr %16, align 8, !tbaa !5
  %564 = getelementptr inbounds double, ptr %563, i64 1
  call void @dgehd2_(ptr noundef %554, ptr noundef %25, ptr noundef %555, ptr noundef %559, ptr noundef %560, ptr noundef %562, ptr noundef %564, ptr noundef %28)
  %565 = load i32, ptr %35, align 4, !tbaa !9
  %566 = sitofp i32 %565 to double
  %567 = load ptr, ptr %16, align 8, !tbaa !5
  %568 = getelementptr inbounds double, ptr %567, i64 1
  store double %566, ptr %568, align 8, !tbaa !11
  store i32 1, ptr %38, align 4
  br label %569

569:                                              ; preds = %553, %235, %183, %175
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  ret void
}

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

declare i32 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

declare void @dlahr2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dgemm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dtrmm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @daxpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dlarfb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dgehd2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

attributes #0 = { 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 = { "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 = { 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/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}


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

@c__1 = external hidden global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@c__65 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@c_b25 = external hidden global double, align 8
@c_b26 = external hidden global double, align 8
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [11 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dgehrd_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr nocapture noundef %8) local_unnamed_addr #0 {
  %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
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  %17 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %17, -1
  %18 = sext i32 %narrow to i64
  %19 = getelementptr inbounds double, ptr %3, i64 %18
  %20 = getelementptr inbounds i8, ptr %5, i64 -8
  store i32 0, ptr %8, align 4, !tbaa !5
  %21 = load i32, ptr %7, align 4, !tbaa !5
  %22 = icmp eq i32 %21, -1
  %23 = load i32, ptr %0, align 4, !tbaa !5
  %24 = icmp slt i32 %23, 0
  br i1 %24, label %.thread196.sink.split, label %25

25:                                               ; preds = %9
  %26 = load i32, ptr %1, align 4, !tbaa !5
  %27 = icmp slt i32 %26, 1
  br i1 %27, label %.thread196.sink.split, label %28

28:                                               ; preds = %25
  %spec.select = tail call i32 @llvm.umax.i32(i32 %23, i32 1)
  %29 = icmp ugt i32 %26, %spec.select
  br i1 %29, label %.thread196.sink.split, label %30

30:                                               ; preds = %28
  %31 = load i32, ptr %2, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %26, i32 %23)
  %32 = icmp slt i32 %31, %.
  %33 = icmp ugt i32 %31, %23
  %or.cond202 = or i1 %32, %33
  br i1 %or.cond202, label %.thread196.sink.split, label %34

34:                                               ; preds = %30
  %35 = load i32, ptr %4, align 4, !tbaa !5
  %36 = icmp slt i32 %35, %spec.select
  br i1 %36, label %.thread196.sink.split, label %37

37:                                               ; preds = %34
  %38 = icmp sge i32 %21, %spec.select
  %or.cond = or i1 %22, %38
  br i1 %or.cond, label %.thread, label %.thread196.sink.split

.thread:                                          ; preds = %37
  %39 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %40 = tail call i32 @llvm.smin.i32(i32 %39, i32 64)
  %41 = load i32, ptr %0, align 4, !tbaa !5
  %42 = mul nsw i32 %41, %40
  %43 = add nsw i32 %42, 4160
  %44 = sitofp i32 %43 to double
  store double %44, ptr %6, align 8, !tbaa !9
  %.pr195.pr = load i32, ptr %8, align 4, !tbaa !5
  %.not175 = icmp eq i32 %.pr195.pr, 0
  br i1 %.not175, label %48, label %.thread196

.thread196.sink.split:                            ; preds = %37, %34, %30, %25, %28, %9
  %.sink = phi i32 [ -1, %9 ], [ -2, %28 ], [ -2, %25 ], [ -3, %30 ], [ -5, %34 ], [ -8, %37 ]
  store i32 %.sink, ptr %8, align 4, !tbaa !5
  br label %.thread196

.thread196:                                       ; preds = %.thread196.sink.split, %.thread
  %45 = phi i32 [ %.pr195.pr, %.thread ], [ %.sink, %.thread196.sink.split ]
  %46 = sub nsw i32 0, %45
  store i32 %46, ptr %10, align 4, !tbaa !5
  %47 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %10, i32 noundef 6) #5
  br label %168

48:                                               ; preds = %.thread
  br i1 %22, label %168, label %49

49:                                               ; preds = %48
  %50 = load i32, ptr %1, align 4, !tbaa !5
  %.not176.not205 = icmp sgt i32 %50, 1
  br i1 %.not176.not205, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %49
  %51 = add nsw i32 %50, -1
  %52 = zext nneg i32 %51 to i64
  %53 = shl nuw nsw i64 %52, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %5, i8 0, i64 %53, i1 false), !tbaa !9
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %49
  %storemerge.lcssa = phi i32 [ 1, %49 ], [ %50, %.lr.ph.preheader ]
  store i32 %storemerge.lcssa, ptr %13, align 4, !tbaa !5
  %54 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select191 = tail call i32 @llvm.smax.i32(i32 %54, i32 1)
  %.not178.not207 = icmp slt i32 %spec.select191, %41
  br i1 %.not178.not207, label %.lr.ph210.preheader, label %._crit_edge211

.lr.ph210.preheader:                              ; preds = %._crit_edge
  %55 = zext nneg i32 %spec.select191 to i64
  %56 = shl nuw nsw i64 %55, 3
  %57 = getelementptr i8, ptr %5, i64 %56
  %scevgep = getelementptr i8, ptr %57, i64 -8
  %58 = xor i32 %spec.select191, -1
  %59 = add i32 %41, %58
  %60 = zext i32 %59 to i64
  %61 = shl nuw nsw i64 %60, 3
  %62 = add nuw nsw i64 %61, 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i8 0, i64 %62, i1 false), !tbaa !9
  br label %._crit_edge211

._crit_edge211:                                   ; preds = %.lr.ph210.preheader, %._crit_edge
  %63 = sub nsw i32 %54, %50
  %64 = icmp slt i32 %63, 1
  br i1 %64, label %65, label %66

65:                                               ; preds = %._crit_edge211
  store double 1.000000e+00, ptr %6, align 8, !tbaa !9
  br label %168

66:                                               ; preds = %._crit_edge211
  %67 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %68 = tail call i32 @llvm.smin.i32(i32 %67, i32 64)
  %69 = icmp slt i32 %67, 2
  %.not180 = icmp sgt i32 %68, %63
  %or.cond192 = or i1 %69, %.not180
  br i1 %or.cond192, label %._crit_edge230, label %70

._crit_edge230:                                   ; preds = %66
  %.pre = load i32, ptr %0, align 4, !tbaa !5
  br label %88

70:                                               ; preds = %66
  %71 = tail call i32 @ilaenv_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %72 = tail call i32 @llvm.smax.i32(i32 %68, i32 %71)
  %.not182 = icmp sgt i32 %71, %63
  %.pre231 = load i32, ptr %0, align 4, !tbaa !5
  br i1 %.not182, label %88, label %73

73:                                               ; preds = %70
  %74 = load i32, ptr %7, align 4, !tbaa !5
  %75 = mul nsw i32 %.pre231, %68
  %76 = add nsw i32 %75, 4160
  %77 = icmp slt i32 %74, %76
  br i1 %77, label %78, label %88

78:                                               ; preds = %73
  %79 = tail call i32 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %80 = tail call i32 @llvm.smax.i32(i32 %79, i32 2)
  %81 = load i32, ptr %7, align 4, !tbaa !5
  %82 = load i32, ptr %0, align 4, !tbaa !5
  %83 = mul nsw i32 %82, %80
  %84 = add nsw i32 %83, 4160
  %.not184 = icmp slt i32 %81, %84
  br i1 %.not184, label %.thread233, label %85

.thread233:                                       ; preds = %78
  store i32 %82, ptr %16, align 4, !tbaa !5
  br label %91

85:                                               ; preds = %78
  %86 = add nsw i32 %81, -4160
  %87 = sdiv i32 %86, %82
  br label %88

88:                                               ; preds = %._crit_edge230, %70, %85, %73
  %89 = phi i32 [ %82, %85 ], [ %.pre231, %73 ], [ %.pre231, %70 ], [ %.pre, %._crit_edge230 ]
  %.0157 = phi i32 [ %80, %85 ], [ 2, %73 ], [ 2, %70 ], [ 2, %._crit_edge230 ]
  %.0156 = phi i32 [ %87, %85 ], [ %68, %73 ], [ %68, %70 ], [ %68, %._crit_edge230 ]
  %.0155 = phi i32 [ %72, %85 ], [ %72, %73 ], [ %72, %70 ], [ undef, %._crit_edge230 ]
  store i32 %89, ptr %16, align 4, !tbaa !5
  %90 = icmp slt i32 %.0156, %.0157
  %.not185.not = icmp sgt i32 %.0156, %63
  %or.cond193 = or i1 %90, %.not185.not
  br i1 %or.cond193, label %91, label %93

91:                                               ; preds = %.thread233, %88
  %92 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %92, ptr %13, align 4, !tbaa !5
  br label %.loopexit

93:                                               ; preds = %88
  %94 = mul nsw i32 %89, %.0156
  %95 = load i32, ptr %2, align 4, !tbaa !5
  %96 = xor i32 %.0155, -1
  %97 = add i32 %95, %96
  %98 = load i32, ptr %1, align 4, !tbaa !5
  %invariant.gep220 = getelementptr i8, ptr %19, i64 8
  %99 = sext i32 %94 to i64
  %gep223 = getelementptr double, ptr %6, i64 %99
  store i32 %98, ptr %13, align 4, !tbaa !5
  %.not239 = icmp sgt i32 %98, %97
  br i1 %.not239, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %93, %._crit_edge219
  %storemerge186240 = phi i32 [ %167, %._crit_edge219 ], [ %98, %93 ]
  store i32 %.0156, ptr %11, align 4, !tbaa !5
  %100 = load i32, ptr %2, align 4, !tbaa !5
  %101 = sub nsw i32 %100, %storemerge186240
  store i32 %101, ptr %12, align 4, !tbaa !5
  %102 = call i32 @llvm.smin.i32(i32 %.0156, i32 %101)
  store i32 %102, ptr %15, align 4, !tbaa !5
  %103 = mul nsw i32 %storemerge186240, %17
  %104 = sext i32 %103 to i64
  %gep221 = getelementptr double, ptr %invariant.gep220, i64 %104
  %105 = sext i32 %storemerge186240 to i64
  %106 = getelementptr inbounds double, ptr %20, i64 %105
  call void @dlahr2_(ptr noundef nonnull %2, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %gep221, ptr noundef nonnull %4, ptr noundef nonnull %106, ptr noundef %gep223, ptr noundef nonnull @c__65, ptr noundef nonnull %6, ptr noundef nonnull %16) #5
  %107 = load i32, ptr %13, align 4, !tbaa !5
  %108 = load i32, ptr %15, align 4, !tbaa !5
  %109 = add nsw i32 %108, %107
  %110 = add nsw i32 %109, -1
  %111 = mul nsw i32 %110, %17
  %112 = add nsw i32 %111, %109
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds double, ptr %19, i64 %113
  %115 = load double, ptr %114, align 8, !tbaa !9
  store double 1.000000e+00, ptr %114, align 8, !tbaa !9
  %116 = load i32, ptr %2, align 4, !tbaa !5
  %reass.sub = sub i32 %116, %109
  %117 = add i32 %reass.sub, 1
  store i32 %117, ptr %11, align 4, !tbaa !5
  %118 = mul nsw i32 %107, %17
  %119 = add nsw i32 %109, %118
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds double, ptr %19, i64 %120
  %122 = mul nsw i32 %109, %17
  %123 = sext i32 %122 to i64
  %gep225 = getelementptr double, ptr %invariant.gep220, i64 %123
  call void @dgemm_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %11, ptr noundef nonnull %15, ptr noundef nonnull @c_b25, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef %121, ptr noundef nonnull %4, ptr noundef nonnull @c_b26, ptr noundef %gep225, ptr noundef nonnull %4) #5
  %124 = load i32, ptr %13, align 4, !tbaa !5
  %125 = load i32, ptr %15, align 4, !tbaa !5
  %126 = add nsw i32 %125, %124
  %127 = add nsw i32 %126, -1
  %128 = mul nsw i32 %127, %17
  %129 = add nsw i32 %128, %126
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds double, ptr %19, i64 %130
  store double %115, ptr %131, align 8, !tbaa !9
  %132 = add nsw i32 %125, -1
  store i32 %132, ptr %11, align 4, !tbaa !5
  %133 = add nsw i32 %124, 1
  %134 = mul nsw i32 %124, %17
  %135 = add nsw i32 %133, %134
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds double, ptr %19, i64 %136
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.6, ptr noundef nonnull %13, ptr noundef nonnull %11, ptr noundef nonnull @c_b26, ptr noundef %137, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %16) #5
  %138 = load i32, ptr %15, align 4, !tbaa !5
  %139 = add nsw i32 %138, -2
  store i32 %139, ptr %11, align 4, !tbaa !5
  %.not188215 = icmp slt i32 %138, 2
  br i1 %.not188215, label %._crit_edge219, label %.lr.ph218

.lr.ph218:                                        ; preds = %.lr.ph, %.lr.ph218
  %.0158216 = phi i32 [ %144, %.lr.ph218 ], [ 0, %.lr.ph ]
  %140 = load i32, ptr %16, align 4, !tbaa !5
  %141 = mul nsw i32 %140, %.0158216
  %142 = sext i32 %141 to i64
  %gep = getelementptr double, ptr %6, i64 %142
  %143 = load i32, ptr %13, align 4, !tbaa !5
  %144 = add nuw i32 %.0158216, 1
  %145 = add i32 %144, %143
  %146 = mul nsw i32 %145, %17
  %147 = sext i32 %146 to i64
  %gep214 = getelementptr double, ptr %invariant.gep220, i64 %147
  call void @daxpy_(ptr noundef nonnull %13, ptr noundef nonnull @c_b25, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep214, ptr noundef nonnull @c__1) #5
  %148 = load i32, ptr %11, align 4, !tbaa !5
  %.not188.not = icmp slt i32 %.0158216, %148
  br i1 %.not188.not, label %.lr.ph218, label %._crit_edge219.loopexit, !llvm.loop !11

._crit_edge219.loopexit:                          ; preds = %.lr.ph218
  %.pre232 = load i32, ptr %15, align 4, !tbaa !5
  br label %._crit_edge219

._crit_edge219:                                   ; preds = %._crit_edge219.loopexit, %.lr.ph
  %149 = phi i32 [ %.pre232, %._crit_edge219.loopexit ], [ %138, %.lr.ph ]
  %150 = load i32, ptr %2, align 4, !tbaa !5
  %151 = load i32, ptr %13, align 4, !tbaa !5
  %152 = sub nsw i32 %150, %151
  store i32 %152, ptr %11, align 4, !tbaa !5
  %153 = load i32, ptr %0, align 4, !tbaa !5
  %154 = add i32 %149, %151
  %155 = add i32 %153, 1
  %156 = sub i32 %155, %154
  store i32 %156, ptr %12, align 4, !tbaa !5
  %157 = add nsw i32 %151, 1
  %158 = mul nsw i32 %151, %17
  %159 = add nsw i32 %157, %158
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds double, ptr %19, i64 %160
  %162 = mul nsw i32 %154, %17
  %163 = add nsw i32 %162, %157
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds double, ptr %19, i64 %164
  call void @dlarfb_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.9, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef %161, ptr noundef nonnull %4, ptr noundef %gep223, ptr noundef nonnull @c__65, ptr noundef %165, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %16) #5
  %166 = load i32, ptr %13, align 4, !tbaa !5
  %167 = add nsw i32 %166, %.0156
  store i32 %167, ptr %13, align 4, !tbaa !5
  %.not = icmp sgt i32 %167, %97
  br i1 %.not, label %.loopexit, label %.lr.ph, !llvm.loop !13

.loopexit:                                        ; preds = %._crit_edge219, %93, %91
  call void @dgehd2_(ptr noundef nonnull %0, ptr noundef nonnull %13, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %14) #5
  store double %44, ptr %6, align 8, !tbaa !9
  br label %168

168:                                              ; preds = %48, %.loopexit, %65, %.thread196
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #5
  ret void
}

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

declare i32 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare void @dlahr2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dgemm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dtrmm_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @daxpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dlarfb_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dgehd2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress 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 i32 @llvm.smin.i32(i32, i32) #3

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

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

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

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

attributes #0 = { 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #5 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}


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