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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [17 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_n1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [12 x i8], align 1
@c_b12 = external hidden global double, align 8
@c_b13 = 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 [10 x i8], align 1
@c_b21 = external hidden global double, align 8
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dsytrf_aa_2stage_(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, ptr noundef %9, ptr noundef %10) #0 {
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %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 i32, align 4
  %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
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca double, align 8
  %44 = alloca i32, align 4
  store ptr %0, ptr %12, align 8, !tbaa !5
  store ptr %1, ptr %13, align 8, !tbaa !5
  store ptr %2, ptr %14, align 8, !tbaa !5
  store ptr %3, ptr %15, align 8, !tbaa !5
  store ptr %4, ptr %16, align 8, !tbaa !5
  store ptr %5, ptr %17, align 8, !tbaa !5
  store ptr %6, ptr %18, align 8, !tbaa !5
  store ptr %7, ptr %19, align 8, !tbaa !5
  store ptr %8, ptr %20, align 8, !tbaa !5
  store ptr %9, ptr %21, align 8, !tbaa !5
  store ptr %10, ptr %22, align 8, !tbaa !5
  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 4, 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
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  %45 = load ptr, ptr %15, align 8, !tbaa !5
  %46 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %46, ptr %23, align 4, !tbaa !9
  %47 = load i32, ptr %23, align 4, !tbaa !9
  %48 = mul nsw i32 %47, 1
  %49 = add nsw i32 1, %48
  store i32 %49, ptr %24, align 4, !tbaa !9
  %50 = load i32, ptr %24, align 4, !tbaa !9
  %51 = load ptr, ptr %14, align 8, !tbaa !5
  %52 = sext i32 %50 to i64
  %53 = sub i64 0, %52
  %54 = getelementptr inbounds double, ptr %51, i64 %53
  store ptr %54, ptr %14, align 8, !tbaa !5
  %55 = load ptr, ptr %16, align 8, !tbaa !5
  %56 = getelementptr inbounds double, ptr %55, i32 -1
  store ptr %56, ptr %16, align 8, !tbaa !5
  %57 = load ptr, ptr %18, align 8, !tbaa !5
  %58 = getelementptr inbounds i32, ptr %57, i32 -1
  store ptr %58, ptr %18, align 8, !tbaa !5
  %59 = load ptr, ptr %19, align 8, !tbaa !5
  %60 = getelementptr inbounds i32, ptr %59, i32 -1
  store ptr %60, ptr %19, align 8, !tbaa !5
  %61 = load ptr, ptr %20, align 8, !tbaa !5
  %62 = getelementptr inbounds double, ptr %61, i32 -1
  store ptr %62, ptr %20, align 8, !tbaa !5
  %63 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 0, ptr %63, align 4, !tbaa !9
  %64 = load ptr, ptr %12, align 8, !tbaa !5
  %65 = call i32 @lsame_(ptr noundef %64, ptr noundef @.str)
  store i32 %65, ptr %34, align 4, !tbaa !9
  %66 = load ptr, ptr %21, align 8, !tbaa !5
  %67 = load i32, ptr %66, align 4, !tbaa !9
  %68 = icmp eq i32 %67, -1
  %69 = zext i1 %68 to i32
  store i32 %69, ptr %42, align 4, !tbaa !9
  %70 = load ptr, ptr %17, align 8, !tbaa !5
  %71 = load i32, ptr %70, align 4, !tbaa !9
  %72 = icmp eq i32 %71, -1
  %73 = zext i1 %72 to i32
  store i32 %73, ptr %41, align 4, !tbaa !9
  %74 = load i32, ptr %34, align 4, !tbaa !9
  %75 = icmp ne i32 %74, 0
  br i1 %75, label %82, label %76

76:                                               ; preds = %11
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = call i32 @lsame_(ptr noundef %77, ptr noundef @.str.1)
  %79 = icmp ne i32 %78, 0
  br i1 %79, label %82, label %80

80:                                               ; preds = %76
  %81 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -1, ptr %81, align 4, !tbaa !9
  br label %130

82:                                               ; preds = %76, %11
  %83 = load ptr, ptr %13, align 8, !tbaa !5
  %84 = load i32, ptr %83, align 4, !tbaa !9
  %85 = icmp slt i32 %84, 0
  br i1 %85, label %86, label %88

86:                                               ; preds = %82
  %87 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -2, ptr %87, align 4, !tbaa !9
  br label %129

88:                                               ; preds = %82
  %89 = load ptr, ptr %15, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  %91 = load ptr, ptr %13, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  %93 = icmp sge i32 1, %92
  br i1 %93, label %94, label %95

94:                                               ; preds = %88
  br label %98

95:                                               ; preds = %88
  %96 = load ptr, ptr %13, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  br label %98

98:                                               ; preds = %95, %94
  %99 = phi i32 [ 1, %94 ], [ %97, %95 ]
  %100 = icmp slt i32 %90, %99
  br i1 %100, label %101, label %103

101:                                              ; preds = %98
  %102 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -4, ptr %102, align 4, !tbaa !9
  br label %128

103:                                              ; preds = %98
  %104 = load ptr, ptr %17, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = load ptr, ptr %13, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = shl i32 %107, 2
  %109 = icmp slt i32 %105, %108
  br i1 %109, label %110, label %115

110:                                              ; preds = %103
  %111 = load i32, ptr %41, align 4, !tbaa !9
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %115, label %113

113:                                              ; preds = %110
  %114 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -6, ptr %114, align 4, !tbaa !9
  br label %127

115:                                              ; preds = %110, %103
  %116 = load ptr, ptr %21, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  %118 = load ptr, ptr %13, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = icmp slt i32 %117, %119
  br i1 %120, label %121, label %126

121:                                              ; preds = %115
  %122 = load i32, ptr %42, align 4, !tbaa !9
  %123 = icmp ne i32 %122, 0
  br i1 %123, label %126, label %124

124:                                              ; preds = %121
  %125 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -10, ptr %125, align 4, !tbaa !9
  br label %126

126:                                              ; preds = %124, %121, %115
  br label %127

127:                                              ; preds = %126, %113
  br label %128

128:                                              ; preds = %127, %101
  br label %129

129:                                              ; preds = %128, %86
  br label %130

130:                                              ; preds = %129, %80
  %131 = load ptr, ptr %22, align 8, !tbaa !5
  %132 = load i32, ptr %131, align 4, !tbaa !9
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %139

134:                                              ; preds = %130
  %135 = load ptr, ptr %22, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = sub nsw i32 0, %136
  store i32 %137, ptr %25, align 4, !tbaa !9
  %138 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %25, i32 noundef 16)
  store i32 1, ptr %44, align 4
  br label %2132

139:                                              ; preds = %130
  %140 = load ptr, ptr %12, align 8, !tbaa !5
  %141 = load ptr, ptr %13, align 8, !tbaa !5
  %142 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef %140, ptr noundef %141, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 16, i32 noundef 1)
  store i32 %142, ptr %38, align 4, !tbaa !9
  %143 = load ptr, ptr %22, align 8, !tbaa !5
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = icmp eq i32 %144, 0
  br i1 %145, label %146, label %171

146:                                              ; preds = %139
  %147 = load i32, ptr %41, align 4, !tbaa !9
  %148 = icmp ne i32 %147, 0
  br i1 %148, label %149, label %159

149:                                              ; preds = %146
  %150 = load i32, ptr %38, align 4, !tbaa !9
  %151 = mul nsw i32 %150, 3
  %152 = add nsw i32 %151, 1
  %153 = load ptr, ptr %13, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = mul nsw i32 %152, %154
  %156 = sitofp i32 %155 to double
  %157 = load ptr, ptr %16, align 8, !tbaa !5
  %158 = getelementptr inbounds double, ptr %157, i64 1
  store double %156, ptr %158, align 8, !tbaa !11
  br label %159

159:                                              ; preds = %149, %146
  %160 = load i32, ptr %42, align 4, !tbaa !9
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %162, label %170

162:                                              ; preds = %159
  %163 = load ptr, ptr %13, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = load i32, ptr %38, align 4, !tbaa !9
  %166 = mul nsw i32 %164, %165
  %167 = sitofp i32 %166 to double
  %168 = load ptr, ptr %20, align 8, !tbaa !5
  %169 = getelementptr inbounds double, ptr %168, i64 1
  store double %167, ptr %169, align 8, !tbaa !11
  br label %170

170:                                              ; preds = %162, %159
  br label %171

171:                                              ; preds = %170, %139
  %172 = load i32, ptr %41, align 4, !tbaa !9
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %177, label %174

174:                                              ; preds = %171
  %175 = load i32, ptr %42, align 4, !tbaa !9
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %177, label %178

177:                                              ; preds = %174, %171
  store i32 1, ptr %44, align 4
  br label %2132

178:                                              ; preds = %174
  %179 = load ptr, ptr %13, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = icmp eq i32 %180, 0
  br i1 %181, label %182, label %183

182:                                              ; preds = %178
  store i32 1, ptr %44, align 4
  br label %2132

183:                                              ; preds = %178
  %184 = load ptr, ptr %17, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = load ptr, ptr %13, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = sdiv i32 %185, %187
  store i32 %188, ptr %28, align 4, !tbaa !9
  %189 = load i32, ptr %28, align 4, !tbaa !9
  %190 = load i32, ptr %38, align 4, !tbaa !9
  %191 = mul nsw i32 %190, 3
  %192 = add nsw i32 %191, 1
  %193 = icmp slt i32 %189, %192
  br i1 %193, label %194, label %198

194:                                              ; preds = %183
  %195 = load i32, ptr %28, align 4, !tbaa !9
  %196 = sub nsw i32 %195, 1
  %197 = sdiv i32 %196, 3
  store i32 %197, ptr %38, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %194, %183
  %199 = load ptr, ptr %21, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = load i32, ptr %38, align 4, !tbaa !9
  %202 = load ptr, ptr %13, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = mul nsw i32 %201, %203
  %205 = icmp slt i32 %200, %204
  br i1 %205, label %206, label %212

206:                                              ; preds = %198
  %207 = load ptr, ptr %21, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = load ptr, ptr %13, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  %211 = sdiv i32 %208, %210
  store i32 %211, ptr %38, align 4, !tbaa !9
  br label %212

212:                                              ; preds = %206, %198
  %213 = load ptr, ptr %13, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = load i32, ptr %38, align 4, !tbaa !9
  %216 = add nsw i32 %214, %215
  %217 = sub nsw i32 %216, 1
  %218 = load i32, ptr %38, align 4, !tbaa !9
  %219 = sdiv i32 %217, %218
  store i32 %219, ptr %40, align 4, !tbaa !9
  %220 = load i32, ptr %38, align 4, !tbaa !9
  %221 = shl i32 %220, 1
  store i32 %221, ptr %39, align 4, !tbaa !9
  %222 = load i32, ptr %38, align 4, !tbaa !9
  %223 = load ptr, ptr %13, align 8, !tbaa !5
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = icmp sle i32 %222, %224
  br i1 %225, label %226, label %228

226:                                              ; preds = %212
  %227 = load i32, ptr %38, align 4, !tbaa !9
  br label %231

228:                                              ; preds = %212
  %229 = load ptr, ptr %13, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  br label %231

231:                                              ; preds = %228, %226
  %232 = phi i32 [ %227, %226 ], [ %230, %228 ]
  store i32 %232, ptr %37, align 4, !tbaa !9
  %233 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %233, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %30, align 4, !tbaa !9
  br label %234

234:                                              ; preds = %244, %231
  %235 = load i32, ptr %30, align 4, !tbaa !9
  %236 = load i32, ptr %25, align 4, !tbaa !9
  %237 = icmp sle i32 %235, %236
  br i1 %237, label %238, label %247

238:                                              ; preds = %234
  %239 = load i32, ptr %30, align 4, !tbaa !9
  %240 = load ptr, ptr %18, align 8, !tbaa !5
  %241 = load i32, ptr %30, align 4, !tbaa !9
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds i32, ptr %240, i64 %242
  store i32 %239, ptr %243, align 4, !tbaa !9
  br label %244

244:                                              ; preds = %238
  %245 = load i32, ptr %30, align 4, !tbaa !9
  %246 = add nsw i32 %245, 1
  store i32 %246, ptr %30, align 4, !tbaa !9
  br label %234, !llvm.loop !13

247:                                              ; preds = %234
  %248 = load i32, ptr %38, align 4, !tbaa !9
  %249 = sitofp i32 %248 to double
  %250 = load ptr, ptr %16, align 8, !tbaa !5
  %251 = getelementptr inbounds double, ptr %250, i64 1
  store double %249, ptr %251, align 8, !tbaa !11
  %252 = load i32, ptr %34, align 4, !tbaa !9
  %253 = icmp ne i32 %252, 0
  br i1 %253, label %254, label %1220

254:                                              ; preds = %247
  %255 = load i32, ptr %40, align 4, !tbaa !9
  %256 = sub nsw i32 %255, 1
  store i32 %256, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %257

257:                                              ; preds = %1216, %254
  %258 = load i32, ptr %30, align 4, !tbaa !9
  %259 = load i32, ptr %25, align 4, !tbaa !9
  %260 = icmp sle i32 %258, %259
  br i1 %260, label %261, label %1219

261:                                              ; preds = %257
  %262 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %262, ptr %26, align 4, !tbaa !9
  %263 = load ptr, ptr %13, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = load i32, ptr %30, align 4, !tbaa !9
  %266 = load i32, ptr %38, align 4, !tbaa !9
  %267 = mul nsw i32 %265, %266
  %268 = sub nsw i32 %264, %267
  store i32 %268, ptr %27, align 4, !tbaa !9
  %269 = load i32, ptr %26, align 4, !tbaa !9
  %270 = load i32, ptr %27, align 4, !tbaa !9
  %271 = icmp sle i32 %269, %270
  br i1 %271, label %272, label %274

272:                                              ; preds = %261
  %273 = load i32, ptr %26, align 4, !tbaa !9
  br label %276

274:                                              ; preds = %261
  %275 = load i32, ptr %27, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %274, %272
  %277 = phi i32 [ %273, %272 ], [ %275, %274 ]
  store i32 %277, ptr %37, align 4, !tbaa !9
  %278 = load i32, ptr %30, align 4, !tbaa !9
  %279 = sub nsw i32 %278, 1
  store i32 %279, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %280

280:                                              ; preds = %392, %276
  %281 = load i32, ptr %29, align 4, !tbaa !9
  %282 = load i32, ptr %26, align 4, !tbaa !9
  %283 = icmp sle i32 %281, %282
  br i1 %283, label %284, label %395

284:                                              ; preds = %280
  %285 = load i32, ptr %29, align 4, !tbaa !9
  %286 = icmp eq i32 %285, 1
  br i1 %286, label %287, label %337

287:                                              ; preds = %284
  %288 = load i32, ptr %29, align 4, !tbaa !9
  %289 = load i32, ptr %30, align 4, !tbaa !9
  %290 = sub nsw i32 %289, 1
  %291 = icmp eq i32 %288, %290
  br i1 %291, label %292, label %296

292:                                              ; preds = %287
  %293 = load i32, ptr %38, align 4, !tbaa !9
  %294 = load i32, ptr %37, align 4, !tbaa !9
  %295 = add nsw i32 %293, %294
  store i32 %295, ptr %36, align 4, !tbaa !9
  br label %299

296:                                              ; preds = %287
  %297 = load i32, ptr %38, align 4, !tbaa !9
  %298 = shl i32 %297, 1
  store i32 %298, ptr %36, align 4, !tbaa !9
  br label %299

299:                                              ; preds = %296, %292
  %300 = load i32, ptr %28, align 4, !tbaa !9
  %301 = sub nsw i32 %300, 1
  store i32 %301, ptr %27, align 4, !tbaa !9
  %302 = load ptr, ptr %16, align 8, !tbaa !5
  %303 = load i32, ptr %39, align 4, !tbaa !9
  %304 = add nsw i32 %303, 1
  %305 = load i32, ptr %29, align 4, !tbaa !9
  %306 = load i32, ptr %38, align 4, !tbaa !9
  %307 = mul nsw i32 %305, %306
  %308 = load i32, ptr %28, align 4, !tbaa !9
  %309 = mul nsw i32 %307, %308
  %310 = add nsw i32 %304, %309
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds double, ptr %302, i64 %311
  %313 = load ptr, ptr %14, align 8, !tbaa !5
  %314 = load i32, ptr %29, align 4, !tbaa !9
  %315 = sub nsw i32 %314, 1
  %316 = load i32, ptr %38, align 4, !tbaa !9
  %317 = mul nsw i32 %315, %316
  %318 = add nsw i32 %317, 1
  %319 = load i32, ptr %30, align 4, !tbaa !9
  %320 = load i32, ptr %38, align 4, !tbaa !9
  %321 = mul nsw i32 %319, %320
  %322 = add nsw i32 %321, 1
  %323 = load i32, ptr %23, align 4, !tbaa !9
  %324 = mul nsw i32 %322, %323
  %325 = add nsw i32 %318, %324
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds double, ptr %313, i64 %326
  %328 = load ptr, ptr %15, align 8, !tbaa !5
  %329 = load ptr, ptr %20, align 8, !tbaa !5
  %330 = load i32, ptr %29, align 4, !tbaa !9
  %331 = load i32, ptr %38, align 4, !tbaa !9
  %332 = mul nsw i32 %330, %331
  %333 = add nsw i32 %332, 1
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds double, ptr %329, i64 %334
  %336 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %38, ptr noundef %37, ptr noundef %36, ptr noundef @c_b12, ptr noundef %312, ptr noundef %27, ptr noundef %327, ptr noundef %328, ptr noundef @c_b13, ptr noundef %335, ptr noundef %336)
  br label %391

337:                                              ; preds = %284
  %338 = load i32, ptr %29, align 4, !tbaa !9
  %339 = load i32, ptr %30, align 4, !tbaa !9
  %340 = sub nsw i32 %339, 1
  %341 = icmp eq i32 %338, %340
  br i1 %341, label %342, label %347

342:                                              ; preds = %337
  %343 = load i32, ptr %38, align 4, !tbaa !9
  %344 = shl i32 %343, 1
  %345 = load i32, ptr %37, align 4, !tbaa !9
  %346 = add nsw i32 %344, %345
  store i32 %346, ptr %36, align 4, !tbaa !9
  br label %350

347:                                              ; preds = %337
  %348 = load i32, ptr %38, align 4, !tbaa !9
  %349 = mul nsw i32 %348, 3
  store i32 %349, ptr %36, align 4, !tbaa !9
  br label %350

350:                                              ; preds = %347, %342
  %351 = load i32, ptr %28, align 4, !tbaa !9
  %352 = sub nsw i32 %351, 1
  store i32 %352, ptr %27, align 4, !tbaa !9
  %353 = load ptr, ptr %16, align 8, !tbaa !5
  %354 = load i32, ptr %39, align 4, !tbaa !9
  %355 = load i32, ptr %38, align 4, !tbaa !9
  %356 = add nsw i32 %354, %355
  %357 = add nsw i32 %356, 1
  %358 = load i32, ptr %29, align 4, !tbaa !9
  %359 = sub nsw i32 %358, 1
  %360 = load i32, ptr %38, align 4, !tbaa !9
  %361 = mul nsw i32 %359, %360
  %362 = load i32, ptr %28, align 4, !tbaa !9
  %363 = mul nsw i32 %361, %362
  %364 = add nsw i32 %357, %363
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %353, i64 %365
  %367 = load ptr, ptr %14, align 8, !tbaa !5
  %368 = load i32, ptr %29, align 4, !tbaa !9
  %369 = sub nsw i32 %368, 2
  %370 = load i32, ptr %38, align 4, !tbaa !9
  %371 = mul nsw i32 %369, %370
  %372 = add nsw i32 %371, 1
  %373 = load i32, ptr %30, align 4, !tbaa !9
  %374 = load i32, ptr %38, align 4, !tbaa !9
  %375 = mul nsw i32 %373, %374
  %376 = add nsw i32 %375, 1
  %377 = load i32, ptr %23, align 4, !tbaa !9
  %378 = mul nsw i32 %376, %377
  %379 = add nsw i32 %372, %378
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds double, ptr %367, i64 %380
  %382 = load ptr, ptr %15, align 8, !tbaa !5
  %383 = load ptr, ptr %20, align 8, !tbaa !5
  %384 = load i32, ptr %29, align 4, !tbaa !9
  %385 = load i32, ptr %38, align 4, !tbaa !9
  %386 = mul nsw i32 %384, %385
  %387 = add nsw i32 %386, 1
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds double, ptr %383, i64 %388
  %390 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %38, ptr noundef %37, ptr noundef %36, ptr noundef @c_b12, ptr noundef %366, ptr noundef %27, ptr noundef %381, ptr noundef %382, ptr noundef @c_b13, ptr noundef %389, ptr noundef %390)
  br label %391

391:                                              ; preds = %350, %299
  br label %392

392:                                              ; preds = %391
  %393 = load i32, ptr %29, align 4, !tbaa !9
  %394 = add nsw i32 %393, 1
  store i32 %394, ptr %29, align 4, !tbaa !9
  br label %280, !llvm.loop !15

395:                                              ; preds = %280
  %396 = load i32, ptr %28, align 4, !tbaa !9
  %397 = sub nsw i32 %396, 1
  store i32 %397, ptr %26, align 4, !tbaa !9
  %398 = load ptr, ptr %14, align 8, !tbaa !5
  %399 = load i32, ptr %30, align 4, !tbaa !9
  %400 = load i32, ptr %38, align 4, !tbaa !9
  %401 = mul nsw i32 %399, %400
  %402 = add nsw i32 %401, 1
  %403 = load i32, ptr %30, align 4, !tbaa !9
  %404 = load i32, ptr %38, align 4, !tbaa !9
  %405 = mul nsw i32 %403, %404
  %406 = add nsw i32 %405, 1
  %407 = load i32, ptr %23, align 4, !tbaa !9
  %408 = mul nsw i32 %406, %407
  %409 = add nsw i32 %402, %408
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds double, ptr %398, i64 %410
  %412 = load ptr, ptr %15, align 8, !tbaa !5
  %413 = load ptr, ptr %16, align 8, !tbaa !5
  %414 = load i32, ptr %39, align 4, !tbaa !9
  %415 = add nsw i32 %414, 1
  %416 = load i32, ptr %30, align 4, !tbaa !9
  %417 = load i32, ptr %38, align 4, !tbaa !9
  %418 = mul nsw i32 %416, %417
  %419 = load i32, ptr %28, align 4, !tbaa !9
  %420 = mul nsw i32 %418, %419
  %421 = add nsw i32 %415, %420
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds double, ptr %413, i64 %422
  call void @dlacpy_(ptr noundef @.str.4, ptr noundef %37, ptr noundef %37, ptr noundef %411, ptr noundef %412, ptr noundef %423, ptr noundef %26)
  %424 = load i32, ptr %30, align 4, !tbaa !9
  %425 = icmp sgt i32 %424, 1
  br i1 %425, label %426, label %528

426:                                              ; preds = %395
  %427 = load i32, ptr %30, align 4, !tbaa !9
  %428 = sub nsw i32 %427, 1
  %429 = load i32, ptr %38, align 4, !tbaa !9
  %430 = mul nsw i32 %428, %429
  store i32 %430, ptr %26, align 4, !tbaa !9
  %431 = load i32, ptr %28, align 4, !tbaa !9
  %432 = sub nsw i32 %431, 1
  store i32 %432, ptr %27, align 4, !tbaa !9
  %433 = load ptr, ptr %14, align 8, !tbaa !5
  %434 = load i32, ptr %30, align 4, !tbaa !9
  %435 = load i32, ptr %38, align 4, !tbaa !9
  %436 = mul nsw i32 %434, %435
  %437 = add nsw i32 %436, 1
  %438 = load i32, ptr %23, align 4, !tbaa !9
  %439 = mul nsw i32 %437, %438
  %440 = add nsw i32 %439, 1
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %433, i64 %441
  %443 = load ptr, ptr %15, align 8, !tbaa !5
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = load i32, ptr %38, align 4, !tbaa !9
  %446 = add nsw i32 %445, 1
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds double, ptr %444, i64 %447
  %449 = load ptr, ptr %13, align 8, !tbaa !5
  %450 = load ptr, ptr %16, align 8, !tbaa !5
  %451 = load i32, ptr %39, align 4, !tbaa !9
  %452 = add nsw i32 %451, 1
  %453 = load i32, ptr %30, align 4, !tbaa !9
  %454 = load i32, ptr %38, align 4, !tbaa !9
  %455 = mul nsw i32 %453, %454
  %456 = load i32, ptr %28, align 4, !tbaa !9
  %457 = mul nsw i32 %455, %456
  %458 = add nsw i32 %452, %457
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds double, ptr %450, i64 %459
  call void @dgemm_(ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %37, ptr noundef %37, ptr noundef %26, ptr noundef @c_b21, ptr noundef %442, ptr noundef %443, ptr noundef %448, ptr noundef %449, ptr noundef @c_b12, ptr noundef %460, ptr noundef %27)
  %461 = load i32, ptr %28, align 4, !tbaa !9
  %462 = sub nsw i32 %461, 1
  store i32 %462, ptr %26, align 4, !tbaa !9
  %463 = load ptr, ptr %14, align 8, !tbaa !5
  %464 = load i32, ptr %30, align 4, !tbaa !9
  %465 = sub nsw i32 %464, 1
  %466 = load i32, ptr %38, align 4, !tbaa !9
  %467 = mul nsw i32 %465, %466
  %468 = add nsw i32 %467, 1
  %469 = load i32, ptr %30, align 4, !tbaa !9
  %470 = load i32, ptr %38, align 4, !tbaa !9
  %471 = mul nsw i32 %469, %470
  %472 = add nsw i32 %471, 1
  %473 = load i32, ptr %23, align 4, !tbaa !9
  %474 = mul nsw i32 %472, %473
  %475 = add nsw i32 %468, %474
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds double, ptr %463, i64 %476
  %478 = load ptr, ptr %15, align 8, !tbaa !5
  %479 = load ptr, ptr %16, align 8, !tbaa !5
  %480 = load i32, ptr %39, align 4, !tbaa !9
  %481 = load i32, ptr %38, align 4, !tbaa !9
  %482 = add nsw i32 %480, %481
  %483 = add nsw i32 %482, 1
  %484 = load i32, ptr %30, align 4, !tbaa !9
  %485 = sub nsw i32 %484, 1
  %486 = load i32, ptr %38, align 4, !tbaa !9
  %487 = mul nsw i32 %485, %486
  %488 = load i32, ptr %28, align 4, !tbaa !9
  %489 = mul nsw i32 %487, %488
  %490 = add nsw i32 %483, %489
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %479, i64 %491
  %493 = load ptr, ptr %20, align 8, !tbaa !5
  %494 = getelementptr inbounds double, ptr %493, i64 1
  %495 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %37, ptr noundef %38, ptr noundef %37, ptr noundef @c_b12, ptr noundef %477, ptr noundef %478, ptr noundef %492, ptr noundef %26, ptr noundef @c_b13, ptr noundef %494, ptr noundef %495)
  %496 = load i32, ptr %28, align 4, !tbaa !9
  %497 = sub nsw i32 %496, 1
  store i32 %497, ptr %26, align 4, !tbaa !9
  %498 = load ptr, ptr %20, align 8, !tbaa !5
  %499 = getelementptr inbounds double, ptr %498, i64 1
  %500 = load ptr, ptr %13, align 8, !tbaa !5
  %501 = load ptr, ptr %14, align 8, !tbaa !5
  %502 = load i32, ptr %30, align 4, !tbaa !9
  %503 = sub nsw i32 %502, 2
  %504 = load i32, ptr %38, align 4, !tbaa !9
  %505 = mul nsw i32 %503, %504
  %506 = add nsw i32 %505, 1
  %507 = load i32, ptr %30, align 4, !tbaa !9
  %508 = load i32, ptr %38, align 4, !tbaa !9
  %509 = mul nsw i32 %507, %508
  %510 = add nsw i32 %509, 1
  %511 = load i32, ptr %23, align 4, !tbaa !9
  %512 = mul nsw i32 %510, %511
  %513 = add nsw i32 %506, %512
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds double, ptr %501, i64 %514
  %516 = load ptr, ptr %15, align 8, !tbaa !5
  %517 = load ptr, ptr %16, align 8, !tbaa !5
  %518 = load i32, ptr %39, align 4, !tbaa !9
  %519 = add nsw i32 %518, 1
  %520 = load i32, ptr %30, align 4, !tbaa !9
  %521 = load i32, ptr %38, align 4, !tbaa !9
  %522 = mul nsw i32 %520, %521
  %523 = load i32, ptr %28, align 4, !tbaa !9
  %524 = mul nsw i32 %522, %523
  %525 = add nsw i32 %519, %524
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %517, i64 %526
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %37, ptr noundef %37, ptr noundef %38, ptr noundef @c_b21, ptr noundef %499, ptr noundef %500, ptr noundef %515, ptr noundef %516, ptr noundef @c_b12, ptr noundef %527, ptr noundef %26)
  br label %528

528:                                              ; preds = %426, %395
  %529 = load i32, ptr %30, align 4, !tbaa !9
  %530 = icmp sgt i32 %529, 0
  br i1 %530, label %531, label %561

531:                                              ; preds = %528
  %532 = load i32, ptr %28, align 4, !tbaa !9
  %533 = sub nsw i32 %532, 1
  store i32 %533, ptr %26, align 4, !tbaa !9
  %534 = load ptr, ptr %16, align 8, !tbaa !5
  %535 = load i32, ptr %39, align 4, !tbaa !9
  %536 = add nsw i32 %535, 1
  %537 = load i32, ptr %30, align 4, !tbaa !9
  %538 = load i32, ptr %38, align 4, !tbaa !9
  %539 = mul nsw i32 %537, %538
  %540 = load i32, ptr %28, 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 i32, ptr %30, align 4, !tbaa !9
  %547 = sub nsw i32 %546, 1
  %548 = load i32, ptr %38, align 4, !tbaa !9
  %549 = mul nsw i32 %547, %548
  %550 = add nsw i32 %549, 1
  %551 = load i32, ptr %30, align 4, !tbaa !9
  %552 = load i32, ptr %38, align 4, !tbaa !9
  %553 = mul nsw i32 %551, %552
  %554 = add nsw i32 %553, 1
  %555 = load i32, ptr %23, align 4, !tbaa !9
  %556 = mul nsw i32 %554, %555
  %557 = add nsw i32 %550, %556
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds double, ptr %545, i64 %558
  %560 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dsygst_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef %37, ptr noundef %544, ptr noundef %26, ptr noundef %559, ptr noundef %560, ptr noundef %32)
  br label %561

561:                                              ; preds = %531, %528
  %562 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %562, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %563

563:                                              ; preds = %617, %561
  %564 = load i32, ptr %29, align 4, !tbaa !9
  %565 = load i32, ptr %26, align 4, !tbaa !9
  %566 = icmp sle i32 %564, %565
  br i1 %566, label %567, label %620

567:                                              ; preds = %563
  %568 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %568, ptr %27, align 4, !tbaa !9
  %569 = load i32, ptr %29, align 4, !tbaa !9
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %31, align 4, !tbaa !9
  br label %571

571:                                              ; preds = %613, %567
  %572 = load i32, ptr %31, align 4, !tbaa !9
  %573 = load i32, ptr %27, align 4, !tbaa !9
  %574 = icmp sle i32 %572, %573
  br i1 %574, label %575, label %616

575:                                              ; preds = %571
  %576 = load ptr, ptr %16, align 8, !tbaa !5
  %577 = load i32, ptr %39, align 4, !tbaa !9
  %578 = load i32, ptr %31, align 4, !tbaa !9
  %579 = load i32, ptr %29, align 4, !tbaa !9
  %580 = add nsw i32 %579, 1
  %581 = sub nsw i32 %578, %580
  %582 = sub nsw i32 %577, %581
  %583 = load i32, ptr %30, align 4, !tbaa !9
  %584 = load i32, ptr %38, align 4, !tbaa !9
  %585 = mul nsw i32 %583, %584
  %586 = load i32, ptr %31, align 4, !tbaa !9
  %587 = add nsw i32 %585, %586
  %588 = sub nsw i32 %587, 1
  %589 = load i32, ptr %28, align 4, !tbaa !9
  %590 = mul nsw i32 %588, %589
  %591 = add nsw i32 %582, %590
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %576, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !11
  %595 = load ptr, ptr %16, align 8, !tbaa !5
  %596 = load i32, ptr %39, align 4, !tbaa !9
  %597 = load i32, ptr %31, align 4, !tbaa !9
  %598 = load i32, ptr %29, align 4, !tbaa !9
  %599 = sub nsw i32 %597, %598
  %600 = add nsw i32 %596, %599
  %601 = add nsw i32 %600, 1
  %602 = load i32, ptr %30, align 4, !tbaa !9
  %603 = load i32, ptr %38, align 4, !tbaa !9
  %604 = mul nsw i32 %602, %603
  %605 = load i32, ptr %29, align 4, !tbaa !9
  %606 = add nsw i32 %604, %605
  %607 = sub nsw i32 %606, 1
  %608 = load i32, ptr %28, align 4, !tbaa !9
  %609 = mul nsw i32 %607, %608
  %610 = add nsw i32 %601, %609
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds double, ptr %595, i64 %611
  store double %594, ptr %612, align 8, !tbaa !11
  br label %613

613:                                              ; preds = %575
  %614 = load i32, ptr %31, align 4, !tbaa !9
  %615 = add nsw i32 %614, 1
  store i32 %615, ptr %31, align 4, !tbaa !9
  br label %571, !llvm.loop !16

616:                                              ; preds = %571
  br label %617

617:                                              ; preds = %616
  %618 = load i32, ptr %29, align 4, !tbaa !9
  %619 = add nsw i32 %618, 1
  store i32 %619, ptr %29, align 4, !tbaa !9
  br label %563, !llvm.loop !17

620:                                              ; preds = %563
  %621 = load i32, ptr %30, align 4, !tbaa !9
  %622 = load i32, ptr %40, align 4, !tbaa !9
  %623 = sub nsw i32 %622, 1
  %624 = icmp slt i32 %621, %623
  br i1 %624, label %625, label %1215

625:                                              ; preds = %620
  %626 = load i32, ptr %30, align 4, !tbaa !9
  %627 = icmp sgt i32 %626, 0
  br i1 %627, label %628, label %758

628:                                              ; preds = %625
  %629 = load i32, ptr %30, align 4, !tbaa !9
  %630 = icmp eq i32 %629, 1
  br i1 %630, label %631, label %669

631:                                              ; preds = %628
  %632 = load i32, ptr %28, align 4, !tbaa !9
  %633 = sub nsw i32 %632, 1
  store i32 %633, ptr %26, align 4, !tbaa !9
  %634 = load ptr, ptr %16, align 8, !tbaa !5
  %635 = load i32, ptr %39, align 4, !tbaa !9
  %636 = add nsw i32 %635, 1
  %637 = load i32, ptr %30, align 4, !tbaa !9
  %638 = load i32, ptr %38, align 4, !tbaa !9
  %639 = mul nsw i32 %637, %638
  %640 = load i32, ptr %28, align 4, !tbaa !9
  %641 = mul nsw i32 %639, %640
  %642 = add nsw i32 %636, %641
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %634, i64 %643
  %645 = load ptr, ptr %14, align 8, !tbaa !5
  %646 = load i32, ptr %30, align 4, !tbaa !9
  %647 = sub nsw i32 %646, 1
  %648 = load i32, ptr %38, align 4, !tbaa !9
  %649 = mul nsw i32 %647, %648
  %650 = add nsw i32 %649, 1
  %651 = load i32, ptr %30, align 4, !tbaa !9
  %652 = load i32, ptr %38, align 4, !tbaa !9
  %653 = mul nsw i32 %651, %652
  %654 = add nsw i32 %653, 1
  %655 = load i32, ptr %23, align 4, !tbaa !9
  %656 = mul nsw i32 %654, %655
  %657 = add nsw i32 %650, %656
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds double, ptr %645, i64 %658
  %660 = load ptr, ptr %15, align 8, !tbaa !5
  %661 = load ptr, ptr %20, align 8, !tbaa !5
  %662 = load i32, ptr %30, align 4, !tbaa !9
  %663 = load i32, ptr %38, align 4, !tbaa !9
  %664 = mul nsw i32 %662, %663
  %665 = add nsw i32 %664, 1
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds double, ptr %661, i64 %666
  %668 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %37, ptr noundef %37, ptr noundef %37, ptr noundef @c_b12, ptr noundef %644, ptr noundef %26, ptr noundef %659, ptr noundef %660, ptr noundef @c_b13, ptr noundef %667, ptr noundef %668)
  br label %713

669:                                              ; preds = %628
  %670 = load i32, ptr %38, align 4, !tbaa !9
  %671 = load i32, ptr %37, align 4, !tbaa !9
  %672 = add nsw i32 %670, %671
  store i32 %672, ptr %26, align 4, !tbaa !9
  %673 = load i32, ptr %28, align 4, !tbaa !9
  %674 = sub nsw i32 %673, 1
  store i32 %674, ptr %27, align 4, !tbaa !9
  %675 = load ptr, ptr %16, align 8, !tbaa !5
  %676 = load i32, ptr %39, align 4, !tbaa !9
  %677 = load i32, ptr %38, align 4, !tbaa !9
  %678 = add nsw i32 %676, %677
  %679 = add nsw i32 %678, 1
  %680 = load i32, ptr %30, align 4, !tbaa !9
  %681 = sub nsw i32 %680, 1
  %682 = load i32, ptr %38, align 4, !tbaa !9
  %683 = mul nsw i32 %681, %682
  %684 = load i32, ptr %28, align 4, !tbaa !9
  %685 = mul nsw i32 %683, %684
  %686 = add nsw i32 %679, %685
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds double, ptr %675, i64 %687
  %689 = load ptr, ptr %14, align 8, !tbaa !5
  %690 = load i32, ptr %30, align 4, !tbaa !9
  %691 = sub nsw i32 %690, 2
  %692 = load i32, ptr %38, align 4, !tbaa !9
  %693 = mul nsw i32 %691, %692
  %694 = add nsw i32 %693, 1
  %695 = load i32, ptr %30, align 4, !tbaa !9
  %696 = load i32, ptr %38, align 4, !tbaa !9
  %697 = mul nsw i32 %695, %696
  %698 = add nsw i32 %697, 1
  %699 = load i32, ptr %23, align 4, !tbaa !9
  %700 = mul nsw i32 %698, %699
  %701 = add nsw i32 %694, %700
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds double, ptr %689, i64 %702
  %704 = load ptr, ptr %15, align 8, !tbaa !5
  %705 = load ptr, ptr %20, align 8, !tbaa !5
  %706 = load i32, ptr %30, align 4, !tbaa !9
  %707 = load i32, ptr %38, align 4, !tbaa !9
  %708 = mul nsw i32 %706, %707
  %709 = add nsw i32 %708, 1
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds double, ptr %705, i64 %710
  %712 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %37, ptr noundef %37, ptr noundef %26, ptr noundef @c_b12, ptr noundef %688, ptr noundef %27, ptr noundef %703, ptr noundef %704, ptr noundef @c_b13, ptr noundef %711, ptr noundef %712)
  br label %713

713:                                              ; preds = %669, %631
  %714 = load ptr, ptr %13, align 8, !tbaa !5
  %715 = load i32, ptr %714, align 4, !tbaa !9
  %716 = load i32, ptr %30, align 4, !tbaa !9
  %717 = add nsw i32 %716, 1
  %718 = load i32, ptr %38, align 4, !tbaa !9
  %719 = mul nsw i32 %717, %718
  %720 = sub nsw i32 %715, %719
  store i32 %720, ptr %26, align 4, !tbaa !9
  %721 = load i32, ptr %30, align 4, !tbaa !9
  %722 = load i32, ptr %38, align 4, !tbaa !9
  %723 = mul nsw i32 %721, %722
  store i32 %723, ptr %27, align 4, !tbaa !9
  %724 = load ptr, ptr %20, align 8, !tbaa !5
  %725 = load i32, ptr %38, align 4, !tbaa !9
  %726 = add nsw i32 %725, 1
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds double, ptr %724, i64 %727
  %729 = load ptr, ptr %13, align 8, !tbaa !5
  %730 = load ptr, ptr %14, align 8, !tbaa !5
  %731 = load i32, ptr %30, align 4, !tbaa !9
  %732 = add nsw i32 %731, 1
  %733 = load i32, ptr %38, align 4, !tbaa !9
  %734 = mul nsw i32 %732, %733
  %735 = add nsw i32 %734, 1
  %736 = load i32, ptr %23, align 4, !tbaa !9
  %737 = mul nsw i32 %735, %736
  %738 = add nsw i32 %737, 1
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds double, ptr %730, i64 %739
  %741 = load ptr, ptr %15, align 8, !tbaa !5
  %742 = load ptr, ptr %14, align 8, !tbaa !5
  %743 = load i32, ptr %30, align 4, !tbaa !9
  %744 = load i32, ptr %38, align 4, !tbaa !9
  %745 = mul nsw i32 %743, %744
  %746 = add nsw i32 %745, 1
  %747 = load i32, ptr %30, align 4, !tbaa !9
  %748 = add nsw i32 %747, 1
  %749 = load i32, ptr %38, align 4, !tbaa !9
  %750 = mul nsw i32 %748, %749
  %751 = add nsw i32 %750, 1
  %752 = load i32, ptr %23, align 4, !tbaa !9
  %753 = mul nsw i32 %751, %752
  %754 = add nsw i32 %746, %753
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds double, ptr %742, i64 %755
  %757 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %38, ptr noundef %26, ptr noundef %27, ptr noundef @c_b21, ptr noundef %728, ptr noundef %729, ptr noundef %740, ptr noundef %741, ptr noundef @c_b12, ptr noundef %756, ptr noundef %757)
  br label %758

758:                                              ; preds = %713, %625
  %759 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %759, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %760

760:                                              ; preds = %798, %758
  %761 = load i32, ptr %31, align 4, !tbaa !9
  %762 = load i32, ptr %26, align 4, !tbaa !9
  %763 = icmp sle i32 %761, %762
  br i1 %763, label %764, label %801

764:                                              ; preds = %760
  %765 = load ptr, ptr %13, align 8, !tbaa !5
  %766 = load i32, ptr %765, align 4, !tbaa !9
  %767 = load i32, ptr %30, align 4, !tbaa !9
  %768 = add nsw i32 %767, 1
  %769 = load i32, ptr %38, align 4, !tbaa !9
  %770 = mul nsw i32 %768, %769
  %771 = sub nsw i32 %766, %770
  store i32 %771, ptr %27, align 4, !tbaa !9
  %772 = load ptr, ptr %14, align 8, !tbaa !5
  %773 = load i32, ptr %30, align 4, !tbaa !9
  %774 = load i32, ptr %38, align 4, !tbaa !9
  %775 = mul nsw i32 %773, %774
  %776 = load i32, ptr %31, align 4, !tbaa !9
  %777 = add nsw i32 %775, %776
  %778 = load i32, ptr %30, align 4, !tbaa !9
  %779 = add nsw i32 %778, 1
  %780 = load i32, ptr %38, align 4, !tbaa !9
  %781 = mul nsw i32 %779, %780
  %782 = add nsw i32 %781, 1
  %783 = load i32, ptr %23, align 4, !tbaa !9
  %784 = mul nsw i32 %782, %783
  %785 = add nsw i32 %777, %784
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %772, i64 %786
  %788 = load ptr, ptr %15, align 8, !tbaa !5
  %789 = load ptr, ptr %20, align 8, !tbaa !5
  %790 = load i32, ptr %31, align 4, !tbaa !9
  %791 = sub nsw i32 %790, 1
  %792 = load ptr, ptr %13, align 8, !tbaa !5
  %793 = load i32, ptr %792, align 4, !tbaa !9
  %794 = mul nsw i32 %791, %793
  %795 = add nsw i32 %794, 1
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds double, ptr %789, i64 %796
  call void @dcopy_(ptr noundef %27, ptr noundef %787, ptr noundef %788, ptr noundef %797, ptr noundef @c__1)
  br label %798

798:                                              ; preds = %764
  %799 = load i32, ptr %31, align 4, !tbaa !9
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr %31, align 4, !tbaa !9
  br label %760, !llvm.loop !18

801:                                              ; preds = %760
  %802 = load ptr, ptr %13, align 8, !tbaa !5
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = load i32, ptr %30, align 4, !tbaa !9
  %805 = add nsw i32 %804, 1
  %806 = load i32, ptr %38, align 4, !tbaa !9
  %807 = mul nsw i32 %805, %806
  %808 = sub nsw i32 %803, %807
  store i32 %808, ptr %26, align 4, !tbaa !9
  %809 = load ptr, ptr %20, align 8, !tbaa !5
  %810 = getelementptr inbounds double, ptr %809, i64 1
  %811 = load ptr, ptr %13, align 8, !tbaa !5
  %812 = load ptr, ptr %18, align 8, !tbaa !5
  %813 = load i32, ptr %30, align 4, !tbaa !9
  %814 = add nsw i32 %813, 1
  %815 = load i32, ptr %38, align 4, !tbaa !9
  %816 = mul nsw i32 %814, %815
  %817 = add nsw i32 %816, 1
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds i32, ptr %812, i64 %818
  %820 = call i32 @dgetrf_(ptr noundef %26, ptr noundef %38, ptr noundef %810, ptr noundef %811, ptr noundef %819, ptr noundef %32)
  %821 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %821, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %822

822:                                              ; preds = %860, %801
  %823 = load i32, ptr %31, align 4, !tbaa !9
  %824 = load i32, ptr %26, align 4, !tbaa !9
  %825 = icmp sle i32 %823, %824
  br i1 %825, label %826, label %863

826:                                              ; preds = %822
  %827 = load ptr, ptr %13, align 8, !tbaa !5
  %828 = load i32, ptr %827, align 4, !tbaa !9
  %829 = load i32, ptr %30, align 4, !tbaa !9
  %830 = add nsw i32 %829, 1
  %831 = load i32, ptr %38, align 4, !tbaa !9
  %832 = mul nsw i32 %830, %831
  %833 = sub nsw i32 %828, %832
  store i32 %833, ptr %27, align 4, !tbaa !9
  %834 = load ptr, ptr %20, align 8, !tbaa !5
  %835 = load i32, ptr %31, align 4, !tbaa !9
  %836 = sub nsw i32 %835, 1
  %837 = load ptr, ptr %13, align 8, !tbaa !5
  %838 = load i32, ptr %837, align 4, !tbaa !9
  %839 = mul nsw i32 %836, %838
  %840 = add nsw i32 %839, 1
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds double, ptr %834, i64 %841
  %843 = load ptr, ptr %14, align 8, !tbaa !5
  %844 = load i32, ptr %30, align 4, !tbaa !9
  %845 = load i32, ptr %38, align 4, !tbaa !9
  %846 = mul nsw i32 %844, %845
  %847 = load i32, ptr %31, align 4, !tbaa !9
  %848 = add nsw i32 %846, %847
  %849 = load i32, ptr %30, align 4, !tbaa !9
  %850 = add nsw i32 %849, 1
  %851 = load i32, ptr %38, align 4, !tbaa !9
  %852 = mul nsw i32 %850, %851
  %853 = add nsw i32 %852, 1
  %854 = load i32, ptr %23, align 4, !tbaa !9
  %855 = mul nsw i32 %853, %854
  %856 = add nsw i32 %848, %855
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds double, ptr %843, i64 %857
  %859 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dcopy_(ptr noundef %27, ptr noundef %842, ptr noundef @c__1, ptr noundef %858, ptr noundef %859)
  br label %860

860:                                              ; preds = %826
  %861 = load i32, ptr %31, align 4, !tbaa !9
  %862 = add nsw i32 %861, 1
  store i32 %862, ptr %31, align 4, !tbaa !9
  br label %822, !llvm.loop !19

863:                                              ; preds = %822
  %864 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %864, ptr %26, align 4, !tbaa !9
  %865 = load ptr, ptr %13, align 8, !tbaa !5
  %866 = load i32, ptr %865, align 4, !tbaa !9
  %867 = load i32, ptr %30, align 4, !tbaa !9
  %868 = add nsw i32 %867, 1
  %869 = load i32, ptr %38, align 4, !tbaa !9
  %870 = mul nsw i32 %868, %869
  %871 = sub nsw i32 %866, %870
  store i32 %871, ptr %27, align 4, !tbaa !9
  %872 = load i32, ptr %26, align 4, !tbaa !9
  %873 = load i32, ptr %27, align 4, !tbaa !9
  %874 = icmp sle i32 %872, %873
  br i1 %874, label %875, label %877

875:                                              ; preds = %863
  %876 = load i32, ptr %26, align 4, !tbaa !9
  br label %879

877:                                              ; preds = %863
  %878 = load i32, ptr %27, align 4, !tbaa !9
  br label %879

879:                                              ; preds = %877, %875
  %880 = phi i32 [ %876, %875 ], [ %878, %877 ]
  store i32 %880, ptr %37, align 4, !tbaa !9
  %881 = load i32, ptr %28, align 4, !tbaa !9
  %882 = sub nsw i32 %881, 1
  store i32 %882, ptr %26, align 4, !tbaa !9
  %883 = load ptr, ptr %16, align 8, !tbaa !5
  %884 = load i32, ptr %39, align 4, !tbaa !9
  %885 = load i32, ptr %38, align 4, !tbaa !9
  %886 = add nsw i32 %884, %885
  %887 = add nsw i32 %886, 1
  %888 = load i32, ptr %30, align 4, !tbaa !9
  %889 = load i32, ptr %38, align 4, !tbaa !9
  %890 = mul nsw i32 %888, %889
  %891 = load i32, ptr %28, align 4, !tbaa !9
  %892 = mul nsw i32 %890, %891
  %893 = add nsw i32 %887, %892
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds double, ptr %883, i64 %894
  call void @dlaset_(ptr noundef @.str.6, ptr noundef %37, ptr noundef %38, ptr noundef @c_b13, ptr noundef @c_b13, ptr noundef %895, ptr noundef %26)
  %896 = load i32, ptr %28, align 4, !tbaa !9
  %897 = sub nsw i32 %896, 1
  store i32 %897, ptr %26, align 4, !tbaa !9
  %898 = load ptr, ptr %20, align 8, !tbaa !5
  %899 = getelementptr inbounds double, ptr %898, i64 1
  %900 = load ptr, ptr %13, align 8, !tbaa !5
  %901 = load ptr, ptr %16, align 8, !tbaa !5
  %902 = load i32, ptr %39, align 4, !tbaa !9
  %903 = load i32, ptr %38, align 4, !tbaa !9
  %904 = add nsw i32 %902, %903
  %905 = add nsw i32 %904, 1
  %906 = load i32, ptr %30, align 4, !tbaa !9
  %907 = load i32, ptr %38, align 4, !tbaa !9
  %908 = mul nsw i32 %906, %907
  %909 = load i32, ptr %28, align 4, !tbaa !9
  %910 = mul nsw i32 %908, %909
  %911 = add nsw i32 %905, %910
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds double, ptr %901, i64 %912
  call void @dlacpy_(ptr noundef @.str.4, ptr noundef %37, ptr noundef %38, ptr noundef %899, ptr noundef %900, ptr noundef %913, ptr noundef %26)
  %914 = load i32, ptr %30, align 4, !tbaa !9
  %915 = icmp sgt i32 %914, 0
  br i1 %915, label %916, label %948

916:                                              ; preds = %879
  %917 = load i32, ptr %28, align 4, !tbaa !9
  %918 = sub nsw i32 %917, 1
  store i32 %918, ptr %26, align 4, !tbaa !9
  %919 = load ptr, ptr %14, align 8, !tbaa !5
  %920 = load i32, ptr %30, align 4, !tbaa !9
  %921 = sub nsw i32 %920, 1
  %922 = load i32, ptr %38, align 4, !tbaa !9
  %923 = mul nsw i32 %921, %922
  %924 = add nsw i32 %923, 1
  %925 = load i32, ptr %30, align 4, !tbaa !9
  %926 = load i32, ptr %38, align 4, !tbaa !9
  %927 = mul nsw i32 %925, %926
  %928 = add nsw i32 %927, 1
  %929 = load i32, ptr %23, align 4, !tbaa !9
  %930 = mul nsw i32 %928, %929
  %931 = add nsw i32 %924, %930
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds double, ptr %919, i64 %932
  %934 = load ptr, ptr %15, align 8, !tbaa !5
  %935 = load ptr, ptr %16, align 8, !tbaa !5
  %936 = load i32, ptr %39, align 4, !tbaa !9
  %937 = load i32, ptr %38, align 4, !tbaa !9
  %938 = add nsw i32 %936, %937
  %939 = add nsw i32 %938, 1
  %940 = load i32, ptr %30, align 4, !tbaa !9
  %941 = load i32, ptr %38, align 4, !tbaa !9
  %942 = mul nsw i32 %940, %941
  %943 = load i32, ptr %28, align 4, !tbaa !9
  %944 = mul nsw i32 %942, %943
  %945 = add nsw i32 %939, %944
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds double, ptr %935, i64 %946
  call void @dtrsm_(ptr noundef @.str.7, ptr noundef @.str, ptr noundef @.str.8, ptr noundef @.str, ptr noundef %37, ptr noundef %38, ptr noundef @c_b12, ptr noundef %933, ptr noundef %934, ptr noundef %947, ptr noundef %26)
  br label %948

948:                                              ; preds = %916, %879
  %949 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %949, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %950

950:                                              ; preds = %1008, %948
  %951 = load i32, ptr %31, align 4, !tbaa !9
  %952 = load i32, ptr %26, align 4, !tbaa !9
  %953 = icmp sle i32 %951, %952
  br i1 %953, label %954, label %1011

954:                                              ; preds = %950
  %955 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %955, ptr %27, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %956

956:                                              ; preds = %1004, %954
  %957 = load i32, ptr %29, align 4, !tbaa !9
  %958 = load i32, ptr %27, align 4, !tbaa !9
  %959 = icmp sle i32 %957, %958
  br i1 %959, label %960, label %1007

960:                                              ; preds = %956
  %961 = load ptr, ptr %16, align 8, !tbaa !5
  %962 = load i32, ptr %39, align 4, !tbaa !9
  %963 = load i32, ptr %38, align 4, !tbaa !9
  %964 = add nsw i32 %962, %963
  %965 = load i32, ptr %29, align 4, !tbaa !9
  %966 = add nsw i32 %964, %965
  %967 = load i32, ptr %31, align 4, !tbaa !9
  %968 = sub nsw i32 %966, %967
  %969 = add nsw i32 %968, 1
  %970 = load i32, ptr %30, align 4, !tbaa !9
  %971 = load i32, ptr %38, align 4, !tbaa !9
  %972 = mul nsw i32 %970, %971
  %973 = load i32, ptr %31, align 4, !tbaa !9
  %974 = add nsw i32 %972, %973
  %975 = sub nsw i32 %974, 1
  %976 = load i32, ptr %28, align 4, !tbaa !9
  %977 = mul nsw i32 %975, %976
  %978 = add nsw i32 %969, %977
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds double, ptr %961, i64 %979
  %981 = load double, ptr %980, align 8, !tbaa !11
  %982 = load ptr, ptr %16, align 8, !tbaa !5
  %983 = load i32, ptr %39, align 4, !tbaa !9
  %984 = load i32, ptr %38, align 4, !tbaa !9
  %985 = sub nsw i32 %983, %984
  %986 = load i32, ptr %31, align 4, !tbaa !9
  %987 = add nsw i32 %985, %986
  %988 = load i32, ptr %29, align 4, !tbaa !9
  %989 = sub nsw i32 %987, %988
  %990 = add nsw i32 %989, 1
  %991 = load i32, ptr %30, align 4, !tbaa !9
  %992 = load i32, ptr %38, align 4, !tbaa !9
  %993 = mul nsw i32 %991, %992
  %994 = load i32, ptr %38, align 4, !tbaa !9
  %995 = add nsw i32 %993, %994
  %996 = load i32, ptr %29, align 4, !tbaa !9
  %997 = add nsw i32 %995, %996
  %998 = sub nsw i32 %997, 1
  %999 = load i32, ptr %28, align 4, !tbaa !9
  %1000 = mul nsw i32 %998, %999
  %1001 = add nsw i32 %990, %1000
  %1002 = sext i32 %1001 to i64
  %1003 = getelementptr inbounds double, ptr %982, i64 %1002
  store double %981, ptr %1003, align 8, !tbaa !11
  br label %1004

1004:                                             ; preds = %960
  %1005 = load i32, ptr %29, align 4, !tbaa !9
  %1006 = add nsw i32 %1005, 1
  store i32 %1006, ptr %29, align 4, !tbaa !9
  br label %956, !llvm.loop !20

1007:                                             ; preds = %956
  br label %1008

1008:                                             ; preds = %1007
  %1009 = load i32, ptr %31, align 4, !tbaa !9
  %1010 = add nsw i32 %1009, 1
  store i32 %1010, ptr %31, align 4, !tbaa !9
  br label %950, !llvm.loop !21

1011:                                             ; preds = %950
  %1012 = load ptr, ptr %14, align 8, !tbaa !5
  %1013 = load i32, ptr %30, align 4, !tbaa !9
  %1014 = load i32, ptr %38, align 4, !tbaa !9
  %1015 = mul nsw i32 %1013, %1014
  %1016 = add nsw i32 %1015, 1
  %1017 = load i32, ptr %30, align 4, !tbaa !9
  %1018 = add nsw i32 %1017, 1
  %1019 = load i32, ptr %38, align 4, !tbaa !9
  %1020 = mul nsw i32 %1018, %1019
  %1021 = add nsw i32 %1020, 1
  %1022 = load i32, ptr %23, align 4, !tbaa !9
  %1023 = mul nsw i32 %1021, %1022
  %1024 = add nsw i32 %1016, %1023
  %1025 = sext i32 %1024 to i64
  %1026 = getelementptr inbounds double, ptr %1012, i64 %1025
  %1027 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.9, ptr noundef %37, ptr noundef %38, ptr noundef @c_b13, ptr noundef @c_b12, ptr noundef %1026, ptr noundef %1027)
  %1028 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1028, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %1029

1029:                                             ; preds = %1211, %1011
  %1030 = load i32, ptr %31, align 4, !tbaa !9
  %1031 = load i32, ptr %26, align 4, !tbaa !9
  %1032 = icmp sle i32 %1030, %1031
  br i1 %1032, label %1033, label %1214

1033:                                             ; preds = %1029
  %1034 = load i32, ptr %30, align 4, !tbaa !9
  %1035 = add nsw i32 %1034, 1
  %1036 = load i32, ptr %38, align 4, !tbaa !9
  %1037 = mul nsw i32 %1035, %1036
  %1038 = load ptr, ptr %18, align 8, !tbaa !5
  %1039 = load i32, ptr %30, align 4, !tbaa !9
  %1040 = add nsw i32 %1039, 1
  %1041 = load i32, ptr %38, align 4, !tbaa !9
  %1042 = mul nsw i32 %1040, %1041
  %1043 = load i32, ptr %31, align 4, !tbaa !9
  %1044 = add nsw i32 %1042, %1043
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds i32, ptr %1038, i64 %1045
  %1047 = load i32, ptr %1046, align 4, !tbaa !9
  %1048 = add nsw i32 %1047, %1037
  store i32 %1048, ptr %1046, align 4, !tbaa !9
  %1049 = load i32, ptr %30, align 4, !tbaa !9
  %1050 = add nsw i32 %1049, 1
  %1051 = load i32, ptr %38, align 4, !tbaa !9
  %1052 = mul nsw i32 %1050, %1051
  %1053 = load i32, ptr %31, align 4, !tbaa !9
  %1054 = add nsw i32 %1052, %1053
  store i32 %1054, ptr %33, align 4, !tbaa !9
  %1055 = load ptr, ptr %18, align 8, !tbaa !5
  %1056 = load i32, ptr %30, align 4, !tbaa !9
  %1057 = add nsw i32 %1056, 1
  %1058 = load i32, ptr %38, align 4, !tbaa !9
  %1059 = mul nsw i32 %1057, %1058
  %1060 = load i32, ptr %31, align 4, !tbaa !9
  %1061 = add nsw i32 %1059, %1060
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds i32, ptr %1055, i64 %1062
  %1064 = load i32, ptr %1063, align 4, !tbaa !9
  store i32 %1064, ptr %35, align 4, !tbaa !9
  %1065 = load i32, ptr %33, align 4, !tbaa !9
  %1066 = load i32, ptr %35, align 4, !tbaa !9
  %1067 = icmp ne i32 %1065, %1066
  br i1 %1067, label %1068, label %1210

1068:                                             ; preds = %1033
  %1069 = load i32, ptr %31, align 4, !tbaa !9
  %1070 = sub nsw i32 %1069, 1
  store i32 %1070, ptr %27, align 4, !tbaa !9
  %1071 = load ptr, ptr %14, align 8, !tbaa !5
  %1072 = load i32, ptr %30, align 4, !tbaa !9
  %1073 = add nsw i32 %1072, 1
  %1074 = load i32, ptr %38, align 4, !tbaa !9
  %1075 = mul nsw i32 %1073, %1074
  %1076 = add nsw i32 %1075, 1
  %1077 = load i32, ptr %33, align 4, !tbaa !9
  %1078 = load i32, ptr %23, align 4, !tbaa !9
  %1079 = mul nsw i32 %1077, %1078
  %1080 = add nsw i32 %1076, %1079
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds double, ptr %1071, i64 %1081
  %1083 = load ptr, ptr %14, align 8, !tbaa !5
  %1084 = load i32, ptr %30, align 4, !tbaa !9
  %1085 = add nsw i32 %1084, 1
  %1086 = load i32, ptr %38, align 4, !tbaa !9
  %1087 = mul nsw i32 %1085, %1086
  %1088 = add nsw i32 %1087, 1
  %1089 = load i32, ptr %35, align 4, !tbaa !9
  %1090 = load i32, ptr %23, align 4, !tbaa !9
  %1091 = mul nsw i32 %1089, %1090
  %1092 = add nsw i32 %1088, %1091
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds double, ptr %1083, i64 %1093
  call void @dswap_(ptr noundef %27, ptr noundef %1082, ptr noundef @c__1, ptr noundef %1094, ptr noundef @c__1)
  %1095 = load i32, ptr %35, align 4, !tbaa !9
  %1096 = load i32, ptr %33, align 4, !tbaa !9
  %1097 = add nsw i32 %1096, 1
  %1098 = icmp sgt i32 %1095, %1097
  br i1 %1098, label %1099, label %1123

1099:                                             ; preds = %1068
  %1100 = load i32, ptr %35, align 4, !tbaa !9
  %1101 = load i32, ptr %33, align 4, !tbaa !9
  %1102 = sub nsw i32 %1100, %1101
  %1103 = sub nsw i32 %1102, 1
  store i32 %1103, ptr %27, align 4, !tbaa !9
  %1104 = load ptr, ptr %14, align 8, !tbaa !5
  %1105 = load i32, ptr %33, align 4, !tbaa !9
  %1106 = load i32, ptr %33, align 4, !tbaa !9
  %1107 = add nsw i32 %1106, 1
  %1108 = load i32, ptr %23, align 4, !tbaa !9
  %1109 = mul nsw i32 %1107, %1108
  %1110 = add nsw i32 %1105, %1109
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds double, ptr %1104, i64 %1111
  %1113 = load ptr, ptr %15, align 8, !tbaa !5
  %1114 = load ptr, ptr %14, align 8, !tbaa !5
  %1115 = load i32, ptr %33, align 4, !tbaa !9
  %1116 = add nsw i32 %1115, 1
  %1117 = load i32, ptr %35, align 4, !tbaa !9
  %1118 = load i32, ptr %23, align 4, !tbaa !9
  %1119 = mul nsw i32 %1117, %1118
  %1120 = add nsw i32 %1116, %1119
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds double, ptr %1114, i64 %1121
  call void @dswap_(ptr noundef %27, ptr noundef %1112, ptr noundef %1113, ptr noundef %1122, ptr noundef @c__1)
  br label %1123

1123:                                             ; preds = %1099, %1068
  %1124 = load i32, ptr %35, align 4, !tbaa !9
  %1125 = load ptr, ptr %13, align 8, !tbaa !5
  %1126 = load i32, ptr %1125, align 4, !tbaa !9
  %1127 = icmp slt i32 %1124, %1126
  br i1 %1127, label %1128, label %1153

1128:                                             ; preds = %1123
  %1129 = load ptr, ptr %13, align 8, !tbaa !5
  %1130 = load i32, ptr %1129, align 4, !tbaa !9
  %1131 = load i32, ptr %35, align 4, !tbaa !9
  %1132 = sub nsw i32 %1130, %1131
  store i32 %1132, ptr %27, align 4, !tbaa !9
  %1133 = load ptr, ptr %14, align 8, !tbaa !5
  %1134 = load i32, ptr %33, align 4, !tbaa !9
  %1135 = load i32, ptr %35, align 4, !tbaa !9
  %1136 = add nsw i32 %1135, 1
  %1137 = load i32, ptr %23, align 4, !tbaa !9
  %1138 = mul nsw i32 %1136, %1137
  %1139 = add nsw i32 %1134, %1138
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds double, ptr %1133, i64 %1140
  %1142 = load ptr, ptr %15, align 8, !tbaa !5
  %1143 = load ptr, ptr %14, align 8, !tbaa !5
  %1144 = load i32, ptr %35, align 4, !tbaa !9
  %1145 = load i32, ptr %35, align 4, !tbaa !9
  %1146 = add nsw i32 %1145, 1
  %1147 = load i32, ptr %23, align 4, !tbaa !9
  %1148 = mul nsw i32 %1146, %1147
  %1149 = add nsw i32 %1144, %1148
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds double, ptr %1143, i64 %1150
  %1152 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dswap_(ptr noundef %27, ptr noundef %1141, ptr noundef %1142, ptr noundef %1151, ptr noundef %1152)
  br label %1153

1153:                                             ; preds = %1128, %1123
  %1154 = load ptr, ptr %14, align 8, !tbaa !5
  %1155 = load i32, ptr %33, align 4, !tbaa !9
  %1156 = load i32, ptr %33, align 4, !tbaa !9
  %1157 = load i32, ptr %23, align 4, !tbaa !9
  %1158 = mul nsw i32 %1156, %1157
  %1159 = add nsw i32 %1155, %1158
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds double, ptr %1154, i64 %1160
  %1162 = load double, ptr %1161, align 8, !tbaa !11
  store double %1162, ptr %43, align 8, !tbaa !11
  %1163 = load ptr, ptr %14, align 8, !tbaa !5
  %1164 = load i32, ptr %35, align 4, !tbaa !9
  %1165 = load i32, ptr %35, align 4, !tbaa !9
  %1166 = load i32, ptr %23, align 4, !tbaa !9
  %1167 = mul nsw i32 %1165, %1166
  %1168 = add nsw i32 %1164, %1167
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds double, ptr %1163, i64 %1169
  %1171 = load double, ptr %1170, align 8, !tbaa !11
  %1172 = load ptr, ptr %14, align 8, !tbaa !5
  %1173 = load i32, ptr %33, align 4, !tbaa !9
  %1174 = load i32, ptr %33, align 4, !tbaa !9
  %1175 = load i32, ptr %23, align 4, !tbaa !9
  %1176 = mul nsw i32 %1174, %1175
  %1177 = add nsw i32 %1173, %1176
  %1178 = sext i32 %1177 to i64
  %1179 = getelementptr inbounds double, ptr %1172, i64 %1178
  store double %1171, ptr %1179, align 8, !tbaa !11
  %1180 = load double, ptr %43, align 8, !tbaa !11
  %1181 = load ptr, ptr %14, align 8, !tbaa !5
  %1182 = load i32, ptr %35, align 4, !tbaa !9
  %1183 = load i32, ptr %35, align 4, !tbaa !9
  %1184 = load i32, ptr %23, align 4, !tbaa !9
  %1185 = mul nsw i32 %1183, %1184
  %1186 = add nsw i32 %1182, %1185
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds double, ptr %1181, i64 %1187
  store double %1180, ptr %1188, align 8, !tbaa !11
  %1189 = load i32, ptr %30, align 4, !tbaa !9
  %1190 = icmp sgt i32 %1189, 0
  br i1 %1190, label %1191, label %1209

1191:                                             ; preds = %1153
  %1192 = load i32, ptr %30, align 4, !tbaa !9
  %1193 = load i32, ptr %38, align 4, !tbaa !9
  %1194 = mul nsw i32 %1192, %1193
  store i32 %1194, ptr %27, align 4, !tbaa !9
  %1195 = load ptr, ptr %14, align 8, !tbaa !5
  %1196 = load i32, ptr %33, align 4, !tbaa !9
  %1197 = load i32, ptr %23, align 4, !tbaa !9
  %1198 = mul nsw i32 %1196, %1197
  %1199 = add nsw i32 %1198, 1
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds double, ptr %1195, i64 %1200
  %1202 = load ptr, ptr %14, align 8, !tbaa !5
  %1203 = load i32, ptr %35, align 4, !tbaa !9
  %1204 = load i32, ptr %23, align 4, !tbaa !9
  %1205 = mul nsw i32 %1203, %1204
  %1206 = add nsw i32 %1205, 1
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds double, ptr %1202, i64 %1207
  call void @dswap_(ptr noundef %27, ptr noundef %1201, ptr noundef @c__1, ptr noundef %1208, ptr noundef @c__1)
  br label %1209

1209:                                             ; preds = %1191, %1153
  br label %1210

1210:                                             ; preds = %1209, %1033
  br label %1211

1211:                                             ; preds = %1210
  %1212 = load i32, ptr %31, align 4, !tbaa !9
  %1213 = add nsw i32 %1212, 1
  store i32 %1213, ptr %31, align 4, !tbaa !9
  br label %1029, !llvm.loop !22

1214:                                             ; preds = %1029
  br label %1215

1215:                                             ; preds = %1214, %620
  br label %1216

1216:                                             ; preds = %1215
  %1217 = load i32, ptr %30, align 4, !tbaa !9
  %1218 = add nsw i32 %1217, 1
  store i32 %1218, ptr %30, align 4, !tbaa !9
  br label %257, !llvm.loop !23

1219:                                             ; preds = %257
  br label %2124

1220:                                             ; preds = %247
  %1221 = load i32, ptr %40, align 4, !tbaa !9
  %1222 = sub nsw i32 %1221, 1
  store i32 %1222, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %1223

1223:                                             ; preds = %2120, %1220
  %1224 = load i32, ptr %30, align 4, !tbaa !9
  %1225 = load i32, ptr %25, align 4, !tbaa !9
  %1226 = icmp sle i32 %1224, %1225
  br i1 %1226, label %1227, label %2123

1227:                                             ; preds = %1223
  %1228 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %1228, ptr %26, align 4, !tbaa !9
  %1229 = load ptr, ptr %13, align 8, !tbaa !5
  %1230 = load i32, ptr %1229, align 4, !tbaa !9
  %1231 = load i32, ptr %30, align 4, !tbaa !9
  %1232 = load i32, ptr %38, align 4, !tbaa !9
  %1233 = mul nsw i32 %1231, %1232
  %1234 = sub nsw i32 %1230, %1233
  store i32 %1234, ptr %27, align 4, !tbaa !9
  %1235 = load i32, ptr %26, align 4, !tbaa !9
  %1236 = load i32, ptr %27, align 4, !tbaa !9
  %1237 = icmp sle i32 %1235, %1236
  br i1 %1237, label %1238, label %1240

1238:                                             ; preds = %1227
  %1239 = load i32, ptr %26, align 4, !tbaa !9
  br label %1242

1240:                                             ; preds = %1227
  %1241 = load i32, ptr %27, align 4, !tbaa !9
  br label %1242

1242:                                             ; preds = %1240, %1238
  %1243 = phi i32 [ %1239, %1238 ], [ %1241, %1240 ]
  store i32 %1243, ptr %37, align 4, !tbaa !9
  %1244 = load i32, ptr %30, align 4, !tbaa !9
  %1245 = sub nsw i32 %1244, 1
  store i32 %1245, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1246

1246:                                             ; preds = %1358, %1242
  %1247 = load i32, ptr %29, align 4, !tbaa !9
  %1248 = load i32, ptr %26, align 4, !tbaa !9
  %1249 = icmp sle i32 %1247, %1248
  br i1 %1249, label %1250, label %1361

1250:                                             ; preds = %1246
  %1251 = load i32, ptr %29, align 4, !tbaa !9
  %1252 = icmp eq i32 %1251, 1
  br i1 %1252, label %1253, label %1303

1253:                                             ; preds = %1250
  %1254 = load i32, ptr %29, align 4, !tbaa !9
  %1255 = load i32, ptr %30, align 4, !tbaa !9
  %1256 = sub nsw i32 %1255, 1
  %1257 = icmp eq i32 %1254, %1256
  br i1 %1257, label %1258, label %1262

1258:                                             ; preds = %1253
  %1259 = load i32, ptr %38, align 4, !tbaa !9
  %1260 = load i32, ptr %37, align 4, !tbaa !9
  %1261 = add nsw i32 %1259, %1260
  store i32 %1261, ptr %36, align 4, !tbaa !9
  br label %1265

1262:                                             ; preds = %1253
  %1263 = load i32, ptr %38, align 4, !tbaa !9
  %1264 = shl i32 %1263, 1
  store i32 %1264, ptr %36, align 4, !tbaa !9
  br label %1265

1265:                                             ; preds = %1262, %1258
  %1266 = load i32, ptr %28, align 4, !tbaa !9
  %1267 = sub nsw i32 %1266, 1
  store i32 %1267, ptr %27, align 4, !tbaa !9
  %1268 = load ptr, ptr %16, align 8, !tbaa !5
  %1269 = load i32, ptr %39, align 4, !tbaa !9
  %1270 = add nsw i32 %1269, 1
  %1271 = load i32, ptr %29, align 4, !tbaa !9
  %1272 = load i32, ptr %38, align 4, !tbaa !9
  %1273 = mul nsw i32 %1271, %1272
  %1274 = load i32, ptr %28, align 4, !tbaa !9
  %1275 = mul nsw i32 %1273, %1274
  %1276 = add nsw i32 %1270, %1275
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds double, ptr %1268, i64 %1277
  %1279 = load ptr, ptr %14, align 8, !tbaa !5
  %1280 = load i32, ptr %30, align 4, !tbaa !9
  %1281 = load i32, ptr %38, align 4, !tbaa !9
  %1282 = mul nsw i32 %1280, %1281
  %1283 = add nsw i32 %1282, 1
  %1284 = load i32, ptr %29, align 4, !tbaa !9
  %1285 = sub nsw i32 %1284, 1
  %1286 = load i32, ptr %38, align 4, !tbaa !9
  %1287 = mul nsw i32 %1285, %1286
  %1288 = add nsw i32 %1287, 1
  %1289 = load i32, ptr %23, align 4, !tbaa !9
  %1290 = mul nsw i32 %1288, %1289
  %1291 = add nsw i32 %1283, %1290
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds double, ptr %1279, i64 %1292
  %1294 = load ptr, ptr %15, align 8, !tbaa !5
  %1295 = load ptr, ptr %20, align 8, !tbaa !5
  %1296 = load i32, ptr %29, align 4, !tbaa !9
  %1297 = load i32, ptr %38, align 4, !tbaa !9
  %1298 = mul nsw i32 %1296, %1297
  %1299 = add nsw i32 %1298, 1
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1295, i64 %1300
  %1302 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.5, ptr noundef %38, ptr noundef %37, ptr noundef %36, ptr noundef @c_b12, ptr noundef %1278, ptr noundef %27, ptr noundef %1293, ptr noundef %1294, ptr noundef @c_b13, ptr noundef %1301, ptr noundef %1302)
  br label %1357

1303:                                             ; preds = %1250
  %1304 = load i32, ptr %29, align 4, !tbaa !9
  %1305 = load i32, ptr %30, align 4, !tbaa !9
  %1306 = sub nsw i32 %1305, 1
  %1307 = icmp eq i32 %1304, %1306
  br i1 %1307, label %1308, label %1313

1308:                                             ; preds = %1303
  %1309 = load i32, ptr %38, align 4, !tbaa !9
  %1310 = shl i32 %1309, 1
  %1311 = load i32, ptr %37, align 4, !tbaa !9
  %1312 = add nsw i32 %1310, %1311
  store i32 %1312, ptr %36, align 4, !tbaa !9
  br label %1316

1313:                                             ; preds = %1303
  %1314 = load i32, ptr %38, align 4, !tbaa !9
  %1315 = mul nsw i32 %1314, 3
  store i32 %1315, ptr %36, align 4, !tbaa !9
  br label %1316

1316:                                             ; preds = %1313, %1308
  %1317 = load i32, ptr %28, align 4, !tbaa !9
  %1318 = sub nsw i32 %1317, 1
  store i32 %1318, ptr %27, align 4, !tbaa !9
  %1319 = load ptr, ptr %16, align 8, !tbaa !5
  %1320 = load i32, ptr %39, align 4, !tbaa !9
  %1321 = load i32, ptr %38, align 4, !tbaa !9
  %1322 = add nsw i32 %1320, %1321
  %1323 = add nsw i32 %1322, 1
  %1324 = load i32, ptr %29, align 4, !tbaa !9
  %1325 = sub nsw i32 %1324, 1
  %1326 = load i32, ptr %38, align 4, !tbaa !9
  %1327 = mul nsw i32 %1325, %1326
  %1328 = load i32, ptr %28, align 4, !tbaa !9
  %1329 = mul nsw i32 %1327, %1328
  %1330 = add nsw i32 %1323, %1329
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds double, ptr %1319, i64 %1331
  %1333 = load ptr, ptr %14, align 8, !tbaa !5
  %1334 = load i32, ptr %30, align 4, !tbaa !9
  %1335 = load i32, ptr %38, align 4, !tbaa !9
  %1336 = mul nsw i32 %1334, %1335
  %1337 = add nsw i32 %1336, 1
  %1338 = load i32, ptr %29, align 4, !tbaa !9
  %1339 = sub nsw i32 %1338, 2
  %1340 = load i32, ptr %38, align 4, !tbaa !9
  %1341 = mul nsw i32 %1339, %1340
  %1342 = add nsw i32 %1341, 1
  %1343 = load i32, ptr %23, align 4, !tbaa !9
  %1344 = mul nsw i32 %1342, %1343
  %1345 = add nsw i32 %1337, %1344
  %1346 = sext i32 %1345 to i64
  %1347 = getelementptr inbounds double, ptr %1333, i64 %1346
  %1348 = load ptr, ptr %15, align 8, !tbaa !5
  %1349 = load ptr, ptr %20, align 8, !tbaa !5
  %1350 = load i32, ptr %29, align 4, !tbaa !9
  %1351 = load i32, ptr %38, align 4, !tbaa !9
  %1352 = mul nsw i32 %1350, %1351
  %1353 = add nsw i32 %1352, 1
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds double, ptr %1349, i64 %1354
  %1356 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.5, ptr noundef %38, ptr noundef %37, ptr noundef %36, ptr noundef @c_b12, ptr noundef %1332, ptr noundef %27, ptr noundef %1347, ptr noundef %1348, ptr noundef @c_b13, ptr noundef %1355, ptr noundef %1356)
  br label %1357

1357:                                             ; preds = %1316, %1265
  br label %1358

1358:                                             ; preds = %1357
  %1359 = load i32, ptr %29, align 4, !tbaa !9
  %1360 = add nsw i32 %1359, 1
  store i32 %1360, ptr %29, align 4, !tbaa !9
  br label %1246, !llvm.loop !24

1361:                                             ; preds = %1246
  %1362 = load i32, ptr %28, align 4, !tbaa !9
  %1363 = sub nsw i32 %1362, 1
  store i32 %1363, ptr %26, align 4, !tbaa !9
  %1364 = load ptr, ptr %14, align 8, !tbaa !5
  %1365 = load i32, ptr %30, align 4, !tbaa !9
  %1366 = load i32, ptr %38, align 4, !tbaa !9
  %1367 = mul nsw i32 %1365, %1366
  %1368 = add nsw i32 %1367, 1
  %1369 = load i32, ptr %30, align 4, !tbaa !9
  %1370 = load i32, ptr %38, align 4, !tbaa !9
  %1371 = mul nsw i32 %1369, %1370
  %1372 = add nsw i32 %1371, 1
  %1373 = load i32, ptr %23, align 4, !tbaa !9
  %1374 = mul nsw i32 %1372, %1373
  %1375 = add nsw i32 %1368, %1374
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds double, ptr %1364, i64 %1376
  %1378 = load ptr, ptr %15, align 8, !tbaa !5
  %1379 = load ptr, ptr %16, align 8, !tbaa !5
  %1380 = load i32, ptr %39, align 4, !tbaa !9
  %1381 = add nsw i32 %1380, 1
  %1382 = load i32, ptr %30, align 4, !tbaa !9
  %1383 = load i32, ptr %38, align 4, !tbaa !9
  %1384 = mul nsw i32 %1382, %1383
  %1385 = load i32, ptr %28, align 4, !tbaa !9
  %1386 = mul nsw i32 %1384, %1385
  %1387 = add nsw i32 %1381, %1386
  %1388 = sext i32 %1387 to i64
  %1389 = getelementptr inbounds double, ptr %1379, i64 %1388
  call void @dlacpy_(ptr noundef @.str.9, ptr noundef %37, ptr noundef %37, ptr noundef %1377, ptr noundef %1378, ptr noundef %1389, ptr noundef %26)
  %1390 = load i32, ptr %30, align 4, !tbaa !9
  %1391 = icmp sgt i32 %1390, 1
  br i1 %1391, label %1392, label %1493

1392:                                             ; preds = %1361
  %1393 = load i32, ptr %30, align 4, !tbaa !9
  %1394 = sub nsw i32 %1393, 1
  %1395 = load i32, ptr %38, align 4, !tbaa !9
  %1396 = mul nsw i32 %1394, %1395
  store i32 %1396, ptr %26, align 4, !tbaa !9
  %1397 = load i32, ptr %28, align 4, !tbaa !9
  %1398 = sub nsw i32 %1397, 1
  store i32 %1398, ptr %27, align 4, !tbaa !9
  %1399 = load ptr, ptr %14, align 8, !tbaa !5
  %1400 = load i32, ptr %30, align 4, !tbaa !9
  %1401 = load i32, ptr %38, align 4, !tbaa !9
  %1402 = mul nsw i32 %1400, %1401
  %1403 = add nsw i32 %1402, 1
  %1404 = load i32, ptr %23, align 4, !tbaa !9
  %1405 = add nsw i32 %1403, %1404
  %1406 = sext i32 %1405 to i64
  %1407 = getelementptr inbounds double, ptr %1399, i64 %1406
  %1408 = load ptr, ptr %15, align 8, !tbaa !5
  %1409 = load ptr, ptr %20, align 8, !tbaa !5
  %1410 = load i32, ptr %38, align 4, !tbaa !9
  %1411 = add nsw i32 %1410, 1
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds double, ptr %1409, i64 %1412
  %1414 = load ptr, ptr %13, align 8, !tbaa !5
  %1415 = load ptr, ptr %16, align 8, !tbaa !5
  %1416 = load i32, ptr %39, align 4, !tbaa !9
  %1417 = add nsw i32 %1416, 1
  %1418 = load i32, ptr %30, align 4, !tbaa !9
  %1419 = load i32, ptr %38, align 4, !tbaa !9
  %1420 = mul nsw i32 %1418, %1419
  %1421 = load i32, ptr %28, align 4, !tbaa !9
  %1422 = mul nsw i32 %1420, %1421
  %1423 = add nsw i32 %1417, %1422
  %1424 = sext i32 %1423 to i64
  %1425 = getelementptr inbounds double, ptr %1415, i64 %1424
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %37, ptr noundef %37, ptr noundef %26, ptr noundef @c_b21, ptr noundef %1407, ptr noundef %1408, ptr noundef %1413, ptr noundef %1414, ptr noundef @c_b12, ptr noundef %1425, ptr noundef %27)
  %1426 = load i32, ptr %28, align 4, !tbaa !9
  %1427 = sub nsw i32 %1426, 1
  store i32 %1427, ptr %26, align 4, !tbaa !9
  %1428 = load ptr, ptr %14, align 8, !tbaa !5
  %1429 = load i32, ptr %30, align 4, !tbaa !9
  %1430 = load i32, ptr %38, align 4, !tbaa !9
  %1431 = mul nsw i32 %1429, %1430
  %1432 = add nsw i32 %1431, 1
  %1433 = load i32, ptr %30, align 4, !tbaa !9
  %1434 = sub nsw i32 %1433, 1
  %1435 = load i32, ptr %38, align 4, !tbaa !9
  %1436 = mul nsw i32 %1434, %1435
  %1437 = add nsw i32 %1436, 1
  %1438 = load i32, ptr %23, align 4, !tbaa !9
  %1439 = mul nsw i32 %1437, %1438
  %1440 = add nsw i32 %1432, %1439
  %1441 = sext i32 %1440 to i64
  %1442 = getelementptr inbounds double, ptr %1428, i64 %1441
  %1443 = load ptr, ptr %15, align 8, !tbaa !5
  %1444 = load ptr, ptr %16, align 8, !tbaa !5
  %1445 = load i32, ptr %39, align 4, !tbaa !9
  %1446 = load i32, ptr %38, align 4, !tbaa !9
  %1447 = add nsw i32 %1445, %1446
  %1448 = add nsw i32 %1447, 1
  %1449 = load i32, ptr %30, align 4, !tbaa !9
  %1450 = sub nsw i32 %1449, 1
  %1451 = load i32, ptr %38, align 4, !tbaa !9
  %1452 = mul nsw i32 %1450, %1451
  %1453 = load i32, ptr %28, align 4, !tbaa !9
  %1454 = mul nsw i32 %1452, %1453
  %1455 = add nsw i32 %1448, %1454
  %1456 = sext i32 %1455 to i64
  %1457 = getelementptr inbounds double, ptr %1444, i64 %1456
  %1458 = load ptr, ptr %20, align 8, !tbaa !5
  %1459 = getelementptr inbounds double, ptr %1458, i64 1
  %1460 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %37, ptr noundef %38, ptr noundef %37, ptr noundef @c_b12, ptr noundef %1442, ptr noundef %1443, ptr noundef %1457, ptr noundef %26, ptr noundef @c_b13, ptr noundef %1459, ptr noundef %1460)
  %1461 = load i32, ptr %28, align 4, !tbaa !9
  %1462 = sub nsw i32 %1461, 1
  store i32 %1462, ptr %26, align 4, !tbaa !9
  %1463 = load ptr, ptr %20, align 8, !tbaa !5
  %1464 = getelementptr inbounds double, ptr %1463, i64 1
  %1465 = load ptr, ptr %13, align 8, !tbaa !5
  %1466 = load ptr, ptr %14, align 8, !tbaa !5
  %1467 = load i32, ptr %30, align 4, !tbaa !9
  %1468 = load i32, ptr %38, align 4, !tbaa !9
  %1469 = mul nsw i32 %1467, %1468
  %1470 = add nsw i32 %1469, 1
  %1471 = load i32, ptr %30, align 4, !tbaa !9
  %1472 = sub nsw i32 %1471, 2
  %1473 = load i32, ptr %38, align 4, !tbaa !9
  %1474 = mul nsw i32 %1472, %1473
  %1475 = add nsw i32 %1474, 1
  %1476 = load i32, ptr %23, align 4, !tbaa !9
  %1477 = mul nsw i32 %1475, %1476
  %1478 = add nsw i32 %1470, %1477
  %1479 = sext i32 %1478 to i64
  %1480 = getelementptr inbounds double, ptr %1466, i64 %1479
  %1481 = load ptr, ptr %15, align 8, !tbaa !5
  %1482 = load ptr, ptr %16, align 8, !tbaa !5
  %1483 = load i32, ptr %39, align 4, !tbaa !9
  %1484 = add nsw i32 %1483, 1
  %1485 = load i32, ptr %30, align 4, !tbaa !9
  %1486 = load i32, ptr %38, align 4, !tbaa !9
  %1487 = mul nsw i32 %1485, %1486
  %1488 = load i32, ptr %28, align 4, !tbaa !9
  %1489 = mul nsw i32 %1487, %1488
  %1490 = add nsw i32 %1484, %1489
  %1491 = sext i32 %1490 to i64
  %1492 = getelementptr inbounds double, ptr %1482, i64 %1491
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.5, ptr noundef %37, ptr noundef %37, ptr noundef %38, ptr noundef @c_b21, ptr noundef %1464, ptr noundef %1465, ptr noundef %1480, ptr noundef %1481, ptr noundef @c_b12, ptr noundef %1492, ptr noundef %26)
  br label %1493

1493:                                             ; preds = %1392, %1361
  %1494 = load i32, ptr %30, align 4, !tbaa !9
  %1495 = icmp sgt i32 %1494, 0
  br i1 %1495, label %1496, label %1526

1496:                                             ; preds = %1493
  %1497 = load i32, ptr %28, align 4, !tbaa !9
  %1498 = sub nsw i32 %1497, 1
  store i32 %1498, ptr %26, align 4, !tbaa !9
  %1499 = load ptr, ptr %16, align 8, !tbaa !5
  %1500 = load i32, ptr %39, align 4, !tbaa !9
  %1501 = add nsw i32 %1500, 1
  %1502 = load i32, ptr %30, align 4, !tbaa !9
  %1503 = load i32, ptr %38, align 4, !tbaa !9
  %1504 = mul nsw i32 %1502, %1503
  %1505 = load i32, ptr %28, align 4, !tbaa !9
  %1506 = mul nsw i32 %1504, %1505
  %1507 = add nsw i32 %1501, %1506
  %1508 = sext i32 %1507 to i64
  %1509 = getelementptr inbounds double, ptr %1499, i64 %1508
  %1510 = load ptr, ptr %14, align 8, !tbaa !5
  %1511 = load i32, ptr %30, align 4, !tbaa !9
  %1512 = load i32, ptr %38, align 4, !tbaa !9
  %1513 = mul nsw i32 %1511, %1512
  %1514 = add nsw i32 %1513, 1
  %1515 = load i32, ptr %30, align 4, !tbaa !9
  %1516 = sub nsw i32 %1515, 1
  %1517 = load i32, ptr %38, align 4, !tbaa !9
  %1518 = mul nsw i32 %1516, %1517
  %1519 = add nsw i32 %1518, 1
  %1520 = load i32, ptr %23, align 4, !tbaa !9
  %1521 = mul nsw i32 %1519, %1520
  %1522 = add nsw i32 %1514, %1521
  %1523 = sext i32 %1522 to i64
  %1524 = getelementptr inbounds double, ptr %1510, i64 %1523
  %1525 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dsygst_(ptr noundef @c__1, ptr noundef @.str.9, ptr noundef %37, ptr noundef %1509, ptr noundef %26, ptr noundef %1524, ptr noundef %1525, ptr noundef %32)
  br label %1526

1526:                                             ; preds = %1496, %1493
  %1527 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1527, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1528

1528:                                             ; preds = %1582, %1526
  %1529 = load i32, ptr %29, align 4, !tbaa !9
  %1530 = load i32, ptr %26, align 4, !tbaa !9
  %1531 = icmp sle i32 %1529, %1530
  br i1 %1531, label %1532, label %1585

1532:                                             ; preds = %1528
  %1533 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1533, ptr %27, align 4, !tbaa !9
  %1534 = load i32, ptr %29, align 4, !tbaa !9
  %1535 = add nsw i32 %1534, 1
  store i32 %1535, ptr %31, align 4, !tbaa !9
  br label %1536

1536:                                             ; preds = %1578, %1532
  %1537 = load i32, ptr %31, align 4, !tbaa !9
  %1538 = load i32, ptr %27, align 4, !tbaa !9
  %1539 = icmp sle i32 %1537, %1538
  br i1 %1539, label %1540, label %1581

1540:                                             ; preds = %1536
  %1541 = load ptr, ptr %16, align 8, !tbaa !5
  %1542 = load i32, ptr %39, align 4, !tbaa !9
  %1543 = load i32, ptr %31, align 4, !tbaa !9
  %1544 = load i32, ptr %29, align 4, !tbaa !9
  %1545 = sub nsw i32 %1543, %1544
  %1546 = add nsw i32 %1542, %1545
  %1547 = add nsw i32 %1546, 1
  %1548 = load i32, ptr %30, align 4, !tbaa !9
  %1549 = load i32, ptr %38, align 4, !tbaa !9
  %1550 = mul nsw i32 %1548, %1549
  %1551 = load i32, ptr %29, align 4, !tbaa !9
  %1552 = add nsw i32 %1550, %1551
  %1553 = sub nsw i32 %1552, 1
  %1554 = load i32, ptr %28, align 4, !tbaa !9
  %1555 = mul nsw i32 %1553, %1554
  %1556 = add nsw i32 %1547, %1555
  %1557 = sext i32 %1556 to i64
  %1558 = getelementptr inbounds double, ptr %1541, i64 %1557
  %1559 = load double, ptr %1558, align 8, !tbaa !11
  %1560 = load ptr, ptr %16, align 8, !tbaa !5
  %1561 = load i32, ptr %39, align 4, !tbaa !9
  %1562 = load i32, ptr %31, align 4, !tbaa !9
  %1563 = load i32, ptr %29, align 4, !tbaa !9
  %1564 = add nsw i32 %1563, 1
  %1565 = sub nsw i32 %1562, %1564
  %1566 = sub nsw i32 %1561, %1565
  %1567 = load i32, ptr %30, align 4, !tbaa !9
  %1568 = load i32, ptr %38, align 4, !tbaa !9
  %1569 = mul nsw i32 %1567, %1568
  %1570 = load i32, ptr %31, align 4, !tbaa !9
  %1571 = add nsw i32 %1569, %1570
  %1572 = sub nsw i32 %1571, 1
  %1573 = load i32, ptr %28, align 4, !tbaa !9
  %1574 = mul nsw i32 %1572, %1573
  %1575 = add nsw i32 %1566, %1574
  %1576 = sext i32 %1575 to i64
  %1577 = getelementptr inbounds double, ptr %1560, i64 %1576
  store double %1559, ptr %1577, align 8, !tbaa !11
  br label %1578

1578:                                             ; preds = %1540
  %1579 = load i32, ptr %31, align 4, !tbaa !9
  %1580 = add nsw i32 %1579, 1
  store i32 %1580, ptr %31, align 4, !tbaa !9
  br label %1536, !llvm.loop !25

1581:                                             ; preds = %1536
  br label %1582

1582:                                             ; preds = %1581
  %1583 = load i32, ptr %29, align 4, !tbaa !9
  %1584 = add nsw i32 %1583, 1
  store i32 %1584, ptr %29, align 4, !tbaa !9
  br label %1528, !llvm.loop !26

1585:                                             ; preds = %1528
  %1586 = load i32, ptr %30, align 4, !tbaa !9
  %1587 = load i32, ptr %40, align 4, !tbaa !9
  %1588 = sub nsw i32 %1587, 1
  %1589 = icmp slt i32 %1586, %1588
  br i1 %1589, label %1590, label %2119

1590:                                             ; preds = %1585
  %1591 = load i32, ptr %30, align 4, !tbaa !9
  %1592 = icmp sgt i32 %1591, 0
  br i1 %1592, label %1593, label %1722

1593:                                             ; preds = %1590
  %1594 = load i32, ptr %30, align 4, !tbaa !9
  %1595 = icmp eq i32 %1594, 1
  br i1 %1595, label %1596, label %1634

1596:                                             ; preds = %1593
  %1597 = load i32, ptr %28, align 4, !tbaa !9
  %1598 = sub nsw i32 %1597, 1
  store i32 %1598, ptr %26, align 4, !tbaa !9
  %1599 = load ptr, ptr %16, align 8, !tbaa !5
  %1600 = load i32, ptr %39, align 4, !tbaa !9
  %1601 = add nsw i32 %1600, 1
  %1602 = load i32, ptr %30, align 4, !tbaa !9
  %1603 = load i32, ptr %38, align 4, !tbaa !9
  %1604 = mul nsw i32 %1602, %1603
  %1605 = load i32, ptr %28, align 4, !tbaa !9
  %1606 = mul nsw i32 %1604, %1605
  %1607 = add nsw i32 %1601, %1606
  %1608 = sext i32 %1607 to i64
  %1609 = getelementptr inbounds double, ptr %1599, i64 %1608
  %1610 = load ptr, ptr %14, align 8, !tbaa !5
  %1611 = load i32, ptr %30, align 4, !tbaa !9
  %1612 = load i32, ptr %38, align 4, !tbaa !9
  %1613 = mul nsw i32 %1611, %1612
  %1614 = add nsw i32 %1613, 1
  %1615 = load i32, ptr %30, align 4, !tbaa !9
  %1616 = sub nsw i32 %1615, 1
  %1617 = load i32, ptr %38, align 4, !tbaa !9
  %1618 = mul nsw i32 %1616, %1617
  %1619 = add nsw i32 %1618, 1
  %1620 = load i32, ptr %23, align 4, !tbaa !9
  %1621 = mul nsw i32 %1619, %1620
  %1622 = add nsw i32 %1614, %1621
  %1623 = sext i32 %1622 to i64
  %1624 = getelementptr inbounds double, ptr %1610, i64 %1623
  %1625 = load ptr, ptr %15, align 8, !tbaa !5
  %1626 = load ptr, ptr %20, align 8, !tbaa !5
  %1627 = load i32, ptr %30, align 4, !tbaa !9
  %1628 = load i32, ptr %38, align 4, !tbaa !9
  %1629 = mul nsw i32 %1627, %1628
  %1630 = add nsw i32 %1629, 1
  %1631 = sext i32 %1630 to i64
  %1632 = getelementptr inbounds double, ptr %1626, i64 %1631
  %1633 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.5, ptr noundef %37, ptr noundef %37, ptr noundef %37, ptr noundef @c_b12, ptr noundef %1609, ptr noundef %26, ptr noundef %1624, ptr noundef %1625, ptr noundef @c_b13, ptr noundef %1632, ptr noundef %1633)
  br label %1678

1634:                                             ; preds = %1593
  %1635 = load i32, ptr %38, align 4, !tbaa !9
  %1636 = load i32, ptr %37, align 4, !tbaa !9
  %1637 = add nsw i32 %1635, %1636
  store i32 %1637, ptr %26, align 4, !tbaa !9
  %1638 = load i32, ptr %28, align 4, !tbaa !9
  %1639 = sub nsw i32 %1638, 1
  store i32 %1639, ptr %27, align 4, !tbaa !9
  %1640 = load ptr, ptr %16, align 8, !tbaa !5
  %1641 = load i32, ptr %39, align 4, !tbaa !9
  %1642 = load i32, ptr %38, align 4, !tbaa !9
  %1643 = add nsw i32 %1641, %1642
  %1644 = add nsw i32 %1643, 1
  %1645 = load i32, ptr %30, align 4, !tbaa !9
  %1646 = sub nsw i32 %1645, 1
  %1647 = load i32, ptr %38, align 4, !tbaa !9
  %1648 = mul nsw i32 %1646, %1647
  %1649 = load i32, ptr %28, align 4, !tbaa !9
  %1650 = mul nsw i32 %1648, %1649
  %1651 = add nsw i32 %1644, %1650
  %1652 = sext i32 %1651 to i64
  %1653 = getelementptr inbounds double, ptr %1640, i64 %1652
  %1654 = load ptr, ptr %14, align 8, !tbaa !5
  %1655 = load i32, ptr %30, align 4, !tbaa !9
  %1656 = load i32, ptr %38, align 4, !tbaa !9
  %1657 = mul nsw i32 %1655, %1656
  %1658 = add nsw i32 %1657, 1
  %1659 = load i32, ptr %30, align 4, !tbaa !9
  %1660 = sub nsw i32 %1659, 2
  %1661 = load i32, ptr %38, align 4, !tbaa !9
  %1662 = mul nsw i32 %1660, %1661
  %1663 = add nsw i32 %1662, 1
  %1664 = load i32, ptr %23, align 4, !tbaa !9
  %1665 = mul nsw i32 %1663, %1664
  %1666 = add nsw i32 %1658, %1665
  %1667 = sext i32 %1666 to i64
  %1668 = getelementptr inbounds double, ptr %1654, i64 %1667
  %1669 = load ptr, ptr %15, align 8, !tbaa !5
  %1670 = load ptr, ptr %20, align 8, !tbaa !5
  %1671 = load i32, ptr %30, align 4, !tbaa !9
  %1672 = load i32, ptr %38, align 4, !tbaa !9
  %1673 = mul nsw i32 %1671, %1672
  %1674 = add nsw i32 %1673, 1
  %1675 = sext i32 %1674 to i64
  %1676 = getelementptr inbounds double, ptr %1670, i64 %1675
  %1677 = load ptr, ptr %13, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.5, ptr noundef %37, ptr noundef %37, ptr noundef %26, ptr noundef @c_b12, ptr noundef %1653, ptr noundef %27, ptr noundef %1668, ptr noundef %1669, ptr noundef @c_b13, ptr noundef %1676, ptr noundef %1677)
  br label %1678

1678:                                             ; preds = %1634, %1596
  %1679 = load ptr, ptr %13, align 8, !tbaa !5
  %1680 = load i32, ptr %1679, align 4, !tbaa !9
  %1681 = load i32, ptr %30, align 4, !tbaa !9
  %1682 = add nsw i32 %1681, 1
  %1683 = load i32, ptr %38, align 4, !tbaa !9
  %1684 = mul nsw i32 %1682, %1683
  %1685 = sub nsw i32 %1680, %1684
  store i32 %1685, ptr %26, align 4, !tbaa !9
  %1686 = load i32, ptr %30, align 4, !tbaa !9
  %1687 = load i32, ptr %38, align 4, !tbaa !9
  %1688 = mul nsw i32 %1686, %1687
  store i32 %1688, ptr %27, align 4, !tbaa !9
  %1689 = load ptr, ptr %14, align 8, !tbaa !5
  %1690 = load i32, ptr %30, align 4, !tbaa !9
  %1691 = add nsw i32 %1690, 1
  %1692 = load i32, ptr %38, align 4, !tbaa !9
  %1693 = mul nsw i32 %1691, %1692
  %1694 = add nsw i32 %1693, 1
  %1695 = load i32, ptr %23, align 4, !tbaa !9
  %1696 = add nsw i32 %1694, %1695
  %1697 = sext i32 %1696 to i64
  %1698 = getelementptr inbounds double, ptr %1689, i64 %1697
  %1699 = load ptr, ptr %15, align 8, !tbaa !5
  %1700 = load ptr, ptr %20, align 8, !tbaa !5
  %1701 = load i32, ptr %38, align 4, !tbaa !9
  %1702 = add nsw i32 %1701, 1
  %1703 = sext i32 %1702 to i64
  %1704 = getelementptr inbounds double, ptr %1700, i64 %1703
  %1705 = load ptr, ptr %13, align 8, !tbaa !5
  %1706 = load ptr, ptr %14, align 8, !tbaa !5
  %1707 = load i32, ptr %30, align 4, !tbaa !9
  %1708 = add nsw i32 %1707, 1
  %1709 = load i32, ptr %38, align 4, !tbaa !9
  %1710 = mul nsw i32 %1708, %1709
  %1711 = add nsw i32 %1710, 1
  %1712 = load i32, ptr %30, align 4, !tbaa !9
  %1713 = load i32, ptr %38, align 4, !tbaa !9
  %1714 = mul nsw i32 %1712, %1713
  %1715 = add nsw i32 %1714, 1
  %1716 = load i32, ptr %23, align 4, !tbaa !9
  %1717 = mul nsw i32 %1715, %1716
  %1718 = add nsw i32 %1711, %1717
  %1719 = sext i32 %1718 to i64
  %1720 = getelementptr inbounds double, ptr %1706, i64 %1719
  %1721 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.3, ptr noundef @.str.3, ptr noundef %26, ptr noundef %38, ptr noundef %27, ptr noundef @c_b21, ptr noundef %1698, ptr noundef %1699, ptr noundef %1704, ptr noundef %1705, ptr noundef @c_b12, ptr noundef %1720, ptr noundef %1721)
  br label %1722

1722:                                             ; preds = %1678, %1590
  %1723 = load ptr, ptr %13, align 8, !tbaa !5
  %1724 = load i32, ptr %1723, align 4, !tbaa !9
  %1725 = load i32, ptr %30, align 4, !tbaa !9
  %1726 = add nsw i32 %1725, 1
  %1727 = load i32, ptr %38, align 4, !tbaa !9
  %1728 = mul nsw i32 %1726, %1727
  %1729 = sub nsw i32 %1724, %1728
  store i32 %1729, ptr %26, align 4, !tbaa !9
  %1730 = load ptr, ptr %14, align 8, !tbaa !5
  %1731 = load i32, ptr %30, align 4, !tbaa !9
  %1732 = add nsw i32 %1731, 1
  %1733 = load i32, ptr %38, align 4, !tbaa !9
  %1734 = mul nsw i32 %1732, %1733
  %1735 = add nsw i32 %1734, 1
  %1736 = load i32, ptr %30, align 4, !tbaa !9
  %1737 = load i32, ptr %38, align 4, !tbaa !9
  %1738 = mul nsw i32 %1736, %1737
  %1739 = add nsw i32 %1738, 1
  %1740 = load i32, ptr %23, align 4, !tbaa !9
  %1741 = mul nsw i32 %1739, %1740
  %1742 = add nsw i32 %1735, %1741
  %1743 = sext i32 %1742 to i64
  %1744 = getelementptr inbounds double, ptr %1730, i64 %1743
  %1745 = load ptr, ptr %15, align 8, !tbaa !5
  %1746 = load ptr, ptr %18, align 8, !tbaa !5
  %1747 = load i32, ptr %30, align 4, !tbaa !9
  %1748 = add nsw i32 %1747, 1
  %1749 = load i32, ptr %38, align 4, !tbaa !9
  %1750 = mul nsw i32 %1748, %1749
  %1751 = add nsw i32 %1750, 1
  %1752 = sext i32 %1751 to i64
  %1753 = getelementptr inbounds i32, ptr %1746, i64 %1752
  %1754 = call i32 @dgetrf_(ptr noundef %26, ptr noundef %38, ptr noundef %1744, ptr noundef %1745, ptr noundef %1753, ptr noundef %32)
  %1755 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %1755, ptr %26, align 4, !tbaa !9
  %1756 = load ptr, ptr %13, align 8, !tbaa !5
  %1757 = load i32, ptr %1756, align 4, !tbaa !9
  %1758 = load i32, ptr %30, align 4, !tbaa !9
  %1759 = add nsw i32 %1758, 1
  %1760 = load i32, ptr %38, align 4, !tbaa !9
  %1761 = mul nsw i32 %1759, %1760
  %1762 = sub nsw i32 %1757, %1761
  store i32 %1762, ptr %27, align 4, !tbaa !9
  %1763 = load i32, ptr %26, align 4, !tbaa !9
  %1764 = load i32, ptr %27, align 4, !tbaa !9
  %1765 = icmp sle i32 %1763, %1764
  br i1 %1765, label %1766, label %1768

1766:                                             ; preds = %1722
  %1767 = load i32, ptr %26, align 4, !tbaa !9
  br label %1770

1768:                                             ; preds = %1722
  %1769 = load i32, ptr %27, align 4, !tbaa !9
  br label %1770

1770:                                             ; preds = %1768, %1766
  %1771 = phi i32 [ %1767, %1766 ], [ %1769, %1768 ]
  store i32 %1771, ptr %37, align 4, !tbaa !9
  %1772 = load i32, ptr %28, align 4, !tbaa !9
  %1773 = sub nsw i32 %1772, 1
  store i32 %1773, ptr %26, align 4, !tbaa !9
  %1774 = load ptr, ptr %16, align 8, !tbaa !5
  %1775 = load i32, ptr %39, align 4, !tbaa !9
  %1776 = load i32, ptr %38, align 4, !tbaa !9
  %1777 = add nsw i32 %1775, %1776
  %1778 = add nsw i32 %1777, 1
  %1779 = load i32, ptr %30, align 4, !tbaa !9
  %1780 = load i32, ptr %38, align 4, !tbaa !9
  %1781 = mul nsw i32 %1779, %1780
  %1782 = load i32, ptr %28, align 4, !tbaa !9
  %1783 = mul nsw i32 %1781, %1782
  %1784 = add nsw i32 %1778, %1783
  %1785 = sext i32 %1784 to i64
  %1786 = getelementptr inbounds double, ptr %1774, i64 %1785
  call void @dlaset_(ptr noundef @.str.6, ptr noundef %37, ptr noundef %38, ptr noundef @c_b13, ptr noundef @c_b13, ptr noundef %1786, ptr noundef %26)
  %1787 = load i32, ptr %28, align 4, !tbaa !9
  %1788 = sub nsw i32 %1787, 1
  store i32 %1788, ptr %26, align 4, !tbaa !9
  %1789 = load ptr, ptr %14, align 8, !tbaa !5
  %1790 = load i32, ptr %30, align 4, !tbaa !9
  %1791 = add nsw i32 %1790, 1
  %1792 = load i32, ptr %38, align 4, !tbaa !9
  %1793 = mul nsw i32 %1791, %1792
  %1794 = add nsw i32 %1793, 1
  %1795 = load i32, ptr %30, align 4, !tbaa !9
  %1796 = load i32, ptr %38, align 4, !tbaa !9
  %1797 = mul nsw i32 %1795, %1796
  %1798 = add nsw i32 %1797, 1
  %1799 = load i32, ptr %23, align 4, !tbaa !9
  %1800 = mul nsw i32 %1798, %1799
  %1801 = add nsw i32 %1794, %1800
  %1802 = sext i32 %1801 to i64
  %1803 = getelementptr inbounds double, ptr %1789, i64 %1802
  %1804 = load ptr, ptr %15, align 8, !tbaa !5
  %1805 = load ptr, ptr %16, align 8, !tbaa !5
  %1806 = load i32, ptr %39, align 4, !tbaa !9
  %1807 = load i32, ptr %38, align 4, !tbaa !9
  %1808 = add nsw i32 %1806, %1807
  %1809 = add nsw i32 %1808, 1
  %1810 = load i32, ptr %30, align 4, !tbaa !9
  %1811 = load i32, ptr %38, align 4, !tbaa !9
  %1812 = mul nsw i32 %1810, %1811
  %1813 = load i32, ptr %28, align 4, !tbaa !9
  %1814 = mul nsw i32 %1812, %1813
  %1815 = add nsw i32 %1809, %1814
  %1816 = sext i32 %1815 to i64
  %1817 = getelementptr inbounds double, ptr %1805, i64 %1816
  call void @dlacpy_(ptr noundef @.str.4, ptr noundef %37, ptr noundef %38, ptr noundef %1803, ptr noundef %1804, ptr noundef %1817, ptr noundef %26)
  %1818 = load i32, ptr %30, align 4, !tbaa !9
  %1819 = icmp sgt i32 %1818, 0
  br i1 %1819, label %1820, label %1852

1820:                                             ; preds = %1770
  %1821 = load i32, ptr %28, align 4, !tbaa !9
  %1822 = sub nsw i32 %1821, 1
  store i32 %1822, ptr %26, align 4, !tbaa !9
  %1823 = load ptr, ptr %14, align 8, !tbaa !5
  %1824 = load i32, ptr %30, align 4, !tbaa !9
  %1825 = load i32, ptr %38, align 4, !tbaa !9
  %1826 = mul nsw i32 %1824, %1825
  %1827 = add nsw i32 %1826, 1
  %1828 = load i32, ptr %30, align 4, !tbaa !9
  %1829 = sub nsw i32 %1828, 1
  %1830 = load i32, ptr %38, align 4, !tbaa !9
  %1831 = mul nsw i32 %1829, %1830
  %1832 = add nsw i32 %1831, 1
  %1833 = load i32, ptr %23, align 4, !tbaa !9
  %1834 = mul nsw i32 %1832, %1833
  %1835 = add nsw i32 %1827, %1834
  %1836 = sext i32 %1835 to i64
  %1837 = getelementptr inbounds double, ptr %1823, i64 %1836
  %1838 = load ptr, ptr %15, align 8, !tbaa !5
  %1839 = load ptr, ptr %16, align 8, !tbaa !5
  %1840 = load i32, ptr %39, align 4, !tbaa !9
  %1841 = load i32, ptr %38, align 4, !tbaa !9
  %1842 = add nsw i32 %1840, %1841
  %1843 = add nsw i32 %1842, 1
  %1844 = load i32, ptr %30, align 4, !tbaa !9
  %1845 = load i32, ptr %38, align 4, !tbaa !9
  %1846 = mul nsw i32 %1844, %1845
  %1847 = load i32, ptr %28, align 4, !tbaa !9
  %1848 = mul nsw i32 %1846, %1847
  %1849 = add nsw i32 %1843, %1848
  %1850 = sext i32 %1849 to i64
  %1851 = getelementptr inbounds double, ptr %1839, i64 %1850
  call void @dtrsm_(ptr noundef @.str.7, ptr noundef @.str.1, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %37, ptr noundef %38, ptr noundef @c_b12, ptr noundef %1837, ptr noundef %1838, ptr noundef %1851, ptr noundef %26)
  br label %1852

1852:                                             ; preds = %1820, %1770
  %1853 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %1853, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %1854

1854:                                             ; preds = %1912, %1852
  %1855 = load i32, ptr %31, align 4, !tbaa !9
  %1856 = load i32, ptr %26, align 4, !tbaa !9
  %1857 = icmp sle i32 %1855, %1856
  br i1 %1857, label %1858, label %1915

1858:                                             ; preds = %1854
  %1859 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1859, ptr %27, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1860

1860:                                             ; preds = %1908, %1858
  %1861 = load i32, ptr %29, align 4, !tbaa !9
  %1862 = load i32, ptr %27, align 4, !tbaa !9
  %1863 = icmp sle i32 %1861, %1862
  br i1 %1863, label %1864, label %1911

1864:                                             ; preds = %1860
  %1865 = load ptr, ptr %16, align 8, !tbaa !5
  %1866 = load i32, ptr %39, align 4, !tbaa !9
  %1867 = load i32, ptr %38, align 4, !tbaa !9
  %1868 = add nsw i32 %1866, %1867
  %1869 = load i32, ptr %29, align 4, !tbaa !9
  %1870 = add nsw i32 %1868, %1869
  %1871 = load i32, ptr %31, align 4, !tbaa !9
  %1872 = sub nsw i32 %1870, %1871
  %1873 = add nsw i32 %1872, 1
  %1874 = load i32, ptr %30, align 4, !tbaa !9
  %1875 = load i32, ptr %38, align 4, !tbaa !9
  %1876 = mul nsw i32 %1874, %1875
  %1877 = load i32, ptr %31, align 4, !tbaa !9
  %1878 = add nsw i32 %1876, %1877
  %1879 = sub nsw i32 %1878, 1
  %1880 = load i32, ptr %28, align 4, !tbaa !9
  %1881 = mul nsw i32 %1879, %1880
  %1882 = add nsw i32 %1873, %1881
  %1883 = sext i32 %1882 to i64
  %1884 = getelementptr inbounds double, ptr %1865, i64 %1883
  %1885 = load double, ptr %1884, align 8, !tbaa !11
  %1886 = load ptr, ptr %16, align 8, !tbaa !5
  %1887 = load i32, ptr %39, align 4, !tbaa !9
  %1888 = load i32, ptr %38, align 4, !tbaa !9
  %1889 = sub nsw i32 %1887, %1888
  %1890 = load i32, ptr %31, align 4, !tbaa !9
  %1891 = add nsw i32 %1889, %1890
  %1892 = load i32, ptr %29, align 4, !tbaa !9
  %1893 = sub nsw i32 %1891, %1892
  %1894 = add nsw i32 %1893, 1
  %1895 = load i32, ptr %30, align 4, !tbaa !9
  %1896 = load i32, ptr %38, align 4, !tbaa !9
  %1897 = mul nsw i32 %1895, %1896
  %1898 = load i32, ptr %38, align 4, !tbaa !9
  %1899 = add nsw i32 %1897, %1898
  %1900 = load i32, ptr %29, align 4, !tbaa !9
  %1901 = add nsw i32 %1899, %1900
  %1902 = sub nsw i32 %1901, 1
  %1903 = load i32, ptr %28, align 4, !tbaa !9
  %1904 = mul nsw i32 %1902, %1903
  %1905 = add nsw i32 %1894, %1904
  %1906 = sext i32 %1905 to i64
  %1907 = getelementptr inbounds double, ptr %1886, i64 %1906
  store double %1885, ptr %1907, align 8, !tbaa !11
  br label %1908

1908:                                             ; preds = %1864
  %1909 = load i32, ptr %29, align 4, !tbaa !9
  %1910 = add nsw i32 %1909, 1
  store i32 %1910, ptr %29, align 4, !tbaa !9
  br label %1860, !llvm.loop !27

1911:                                             ; preds = %1860
  br label %1912

1912:                                             ; preds = %1911
  %1913 = load i32, ptr %31, align 4, !tbaa !9
  %1914 = add nsw i32 %1913, 1
  store i32 %1914, ptr %31, align 4, !tbaa !9
  br label %1854, !llvm.loop !28

1915:                                             ; preds = %1854
  %1916 = load ptr, ptr %14, align 8, !tbaa !5
  %1917 = load i32, ptr %30, align 4, !tbaa !9
  %1918 = add nsw i32 %1917, 1
  %1919 = load i32, ptr %38, align 4, !tbaa !9
  %1920 = mul nsw i32 %1918, %1919
  %1921 = add nsw i32 %1920, 1
  %1922 = load i32, ptr %30, align 4, !tbaa !9
  %1923 = load i32, ptr %38, align 4, !tbaa !9
  %1924 = mul nsw i32 %1922, %1923
  %1925 = add nsw i32 %1924, 1
  %1926 = load i32, ptr %23, align 4, !tbaa !9
  %1927 = mul nsw i32 %1925, %1926
  %1928 = add nsw i32 %1921, %1927
  %1929 = sext i32 %1928 to i64
  %1930 = getelementptr inbounds double, ptr %1916, i64 %1929
  %1931 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.4, ptr noundef %37, ptr noundef %38, ptr noundef @c_b13, ptr noundef @c_b12, ptr noundef %1930, ptr noundef %1931)
  %1932 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %1932, ptr %26, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %1933

1933:                                             ; preds = %2115, %1915
  %1934 = load i32, ptr %31, align 4, !tbaa !9
  %1935 = load i32, ptr %26, align 4, !tbaa !9
  %1936 = icmp sle i32 %1934, %1935
  br i1 %1936, label %1937, label %2118

1937:                                             ; preds = %1933
  %1938 = load i32, ptr %30, align 4, !tbaa !9
  %1939 = add nsw i32 %1938, 1
  %1940 = load i32, ptr %38, align 4, !tbaa !9
  %1941 = mul nsw i32 %1939, %1940
  %1942 = load ptr, ptr %18, align 8, !tbaa !5
  %1943 = load i32, ptr %30, align 4, !tbaa !9
  %1944 = add nsw i32 %1943, 1
  %1945 = load i32, ptr %38, align 4, !tbaa !9
  %1946 = mul nsw i32 %1944, %1945
  %1947 = load i32, ptr %31, align 4, !tbaa !9
  %1948 = add nsw i32 %1946, %1947
  %1949 = sext i32 %1948 to i64
  %1950 = getelementptr inbounds i32, ptr %1942, i64 %1949
  %1951 = load i32, ptr %1950, align 4, !tbaa !9
  %1952 = add nsw i32 %1951, %1941
  store i32 %1952, ptr %1950, align 4, !tbaa !9
  %1953 = load i32, ptr %30, align 4, !tbaa !9
  %1954 = add nsw i32 %1953, 1
  %1955 = load i32, ptr %38, align 4, !tbaa !9
  %1956 = mul nsw i32 %1954, %1955
  %1957 = load i32, ptr %31, align 4, !tbaa !9
  %1958 = add nsw i32 %1956, %1957
  store i32 %1958, ptr %33, align 4, !tbaa !9
  %1959 = load ptr, ptr %18, align 8, !tbaa !5
  %1960 = load i32, ptr %30, align 4, !tbaa !9
  %1961 = add nsw i32 %1960, 1
  %1962 = load i32, ptr %38, align 4, !tbaa !9
  %1963 = mul nsw i32 %1961, %1962
  %1964 = load i32, ptr %31, align 4, !tbaa !9
  %1965 = add nsw i32 %1963, %1964
  %1966 = sext i32 %1965 to i64
  %1967 = getelementptr inbounds i32, ptr %1959, i64 %1966
  %1968 = load i32, ptr %1967, align 4, !tbaa !9
  store i32 %1968, ptr %35, align 4, !tbaa !9
  %1969 = load i32, ptr %33, align 4, !tbaa !9
  %1970 = load i32, ptr %35, align 4, !tbaa !9
  %1971 = icmp ne i32 %1969, %1970
  br i1 %1971, label %1972, label %2114

1972:                                             ; preds = %1937
  %1973 = load i32, ptr %31, align 4, !tbaa !9
  %1974 = sub nsw i32 %1973, 1
  store i32 %1974, ptr %27, align 4, !tbaa !9
  %1975 = load ptr, ptr %14, align 8, !tbaa !5
  %1976 = load i32, ptr %33, align 4, !tbaa !9
  %1977 = load i32, ptr %30, align 4, !tbaa !9
  %1978 = add nsw i32 %1977, 1
  %1979 = load i32, ptr %38, align 4, !tbaa !9
  %1980 = mul nsw i32 %1978, %1979
  %1981 = add nsw i32 %1980, 1
  %1982 = load i32, ptr %23, align 4, !tbaa !9
  %1983 = mul nsw i32 %1981, %1982
  %1984 = add nsw i32 %1976, %1983
  %1985 = sext i32 %1984 to i64
  %1986 = getelementptr inbounds double, ptr %1975, i64 %1985
  %1987 = load ptr, ptr %15, align 8, !tbaa !5
  %1988 = load ptr, ptr %14, align 8, !tbaa !5
  %1989 = load i32, ptr %35, align 4, !tbaa !9
  %1990 = load i32, ptr %30, align 4, !tbaa !9
  %1991 = add nsw i32 %1990, 1
  %1992 = load i32, ptr %38, align 4, !tbaa !9
  %1993 = mul nsw i32 %1991, %1992
  %1994 = add nsw i32 %1993, 1
  %1995 = load i32, ptr %23, align 4, !tbaa !9
  %1996 = mul nsw i32 %1994, %1995
  %1997 = add nsw i32 %1989, %1996
  %1998 = sext i32 %1997 to i64
  %1999 = getelementptr inbounds double, ptr %1988, i64 %1998
  %2000 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dswap_(ptr noundef %27, ptr noundef %1986, ptr noundef %1987, ptr noundef %1999, ptr noundef %2000)
  %2001 = load i32, ptr %35, align 4, !tbaa !9
  %2002 = load i32, ptr %33, align 4, !tbaa !9
  %2003 = add nsw i32 %2002, 1
  %2004 = icmp sgt i32 %2001, %2003
  br i1 %2004, label %2005, label %2029

2005:                                             ; preds = %1972
  %2006 = load i32, ptr %35, align 4, !tbaa !9
  %2007 = load i32, ptr %33, align 4, !tbaa !9
  %2008 = sub nsw i32 %2006, %2007
  %2009 = sub nsw i32 %2008, 1
  store i32 %2009, ptr %27, align 4, !tbaa !9
  %2010 = load ptr, ptr %14, align 8, !tbaa !5
  %2011 = load i32, ptr %33, align 4, !tbaa !9
  %2012 = add nsw i32 %2011, 1
  %2013 = load i32, ptr %33, align 4, !tbaa !9
  %2014 = load i32, ptr %23, align 4, !tbaa !9
  %2015 = mul nsw i32 %2013, %2014
  %2016 = add nsw i32 %2012, %2015
  %2017 = sext i32 %2016 to i64
  %2018 = getelementptr inbounds double, ptr %2010, i64 %2017
  %2019 = load ptr, ptr %14, align 8, !tbaa !5
  %2020 = load i32, ptr %35, align 4, !tbaa !9
  %2021 = load i32, ptr %33, align 4, !tbaa !9
  %2022 = add nsw i32 %2021, 1
  %2023 = load i32, ptr %23, align 4, !tbaa !9
  %2024 = mul nsw i32 %2022, %2023
  %2025 = add nsw i32 %2020, %2024
  %2026 = sext i32 %2025 to i64
  %2027 = getelementptr inbounds double, ptr %2019, i64 %2026
  %2028 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dswap_(ptr noundef %27, ptr noundef %2018, ptr noundef @c__1, ptr noundef %2027, ptr noundef %2028)
  br label %2029

2029:                                             ; preds = %2005, %1972
  %2030 = load i32, ptr %35, align 4, !tbaa !9
  %2031 = load ptr, ptr %13, align 8, !tbaa !5
  %2032 = load i32, ptr %2031, align 4, !tbaa !9
  %2033 = icmp slt i32 %2030, %2032
  br i1 %2033, label %2034, label %2057

2034:                                             ; preds = %2029
  %2035 = load ptr, ptr %13, align 8, !tbaa !5
  %2036 = load i32, ptr %2035, align 4, !tbaa !9
  %2037 = load i32, ptr %35, align 4, !tbaa !9
  %2038 = sub nsw i32 %2036, %2037
  store i32 %2038, ptr %27, align 4, !tbaa !9
  %2039 = load ptr, ptr %14, align 8, !tbaa !5
  %2040 = load i32, ptr %35, align 4, !tbaa !9
  %2041 = add nsw i32 %2040, 1
  %2042 = load i32, ptr %33, align 4, !tbaa !9
  %2043 = load i32, ptr %23, align 4, !tbaa !9
  %2044 = mul nsw i32 %2042, %2043
  %2045 = add nsw i32 %2041, %2044
  %2046 = sext i32 %2045 to i64
  %2047 = getelementptr inbounds double, ptr %2039, i64 %2046
  %2048 = load ptr, ptr %14, align 8, !tbaa !5
  %2049 = load i32, ptr %35, align 4, !tbaa !9
  %2050 = add nsw i32 %2049, 1
  %2051 = load i32, ptr %35, align 4, !tbaa !9
  %2052 = load i32, ptr %23, align 4, !tbaa !9
  %2053 = mul nsw i32 %2051, %2052
  %2054 = add nsw i32 %2050, %2053
  %2055 = sext i32 %2054 to i64
  %2056 = getelementptr inbounds double, ptr %2048, i64 %2055
  call void @dswap_(ptr noundef %27, ptr noundef %2047, ptr noundef @c__1, ptr noundef %2056, ptr noundef @c__1)
  br label %2057

2057:                                             ; preds = %2034, %2029
  %2058 = load ptr, ptr %14, align 8, !tbaa !5
  %2059 = load i32, ptr %33, align 4, !tbaa !9
  %2060 = load i32, ptr %33, align 4, !tbaa !9
  %2061 = load i32, ptr %23, align 4, !tbaa !9
  %2062 = mul nsw i32 %2060, %2061
  %2063 = add nsw i32 %2059, %2062
  %2064 = sext i32 %2063 to i64
  %2065 = getelementptr inbounds double, ptr %2058, i64 %2064
  %2066 = load double, ptr %2065, align 8, !tbaa !11
  store double %2066, ptr %43, align 8, !tbaa !11
  %2067 = load ptr, ptr %14, align 8, !tbaa !5
  %2068 = load i32, ptr %35, align 4, !tbaa !9
  %2069 = load i32, ptr %35, align 4, !tbaa !9
  %2070 = load i32, ptr %23, align 4, !tbaa !9
  %2071 = mul nsw i32 %2069, %2070
  %2072 = add nsw i32 %2068, %2071
  %2073 = sext i32 %2072 to i64
  %2074 = getelementptr inbounds double, ptr %2067, i64 %2073
  %2075 = load double, ptr %2074, align 8, !tbaa !11
  %2076 = load ptr, ptr %14, align 8, !tbaa !5
  %2077 = load i32, ptr %33, align 4, !tbaa !9
  %2078 = load i32, ptr %33, align 4, !tbaa !9
  %2079 = load i32, ptr %23, align 4, !tbaa !9
  %2080 = mul nsw i32 %2078, %2079
  %2081 = add nsw i32 %2077, %2080
  %2082 = sext i32 %2081 to i64
  %2083 = getelementptr inbounds double, ptr %2076, i64 %2082
  store double %2075, ptr %2083, align 8, !tbaa !11
  %2084 = load double, ptr %43, align 8, !tbaa !11
  %2085 = load ptr, ptr %14, align 8, !tbaa !5
  %2086 = load i32, ptr %35, align 4, !tbaa !9
  %2087 = load i32, ptr %35, align 4, !tbaa !9
  %2088 = load i32, ptr %23, align 4, !tbaa !9
  %2089 = mul nsw i32 %2087, %2088
  %2090 = add nsw i32 %2086, %2089
  %2091 = sext i32 %2090 to i64
  %2092 = getelementptr inbounds double, ptr %2085, i64 %2091
  store double %2084, ptr %2092, align 8, !tbaa !11
  %2093 = load i32, ptr %30, align 4, !tbaa !9
  %2094 = icmp sgt i32 %2093, 0
  br i1 %2094, label %2095, label %2113

2095:                                             ; preds = %2057
  %2096 = load i32, ptr %30, align 4, !tbaa !9
  %2097 = load i32, ptr %38, align 4, !tbaa !9
  %2098 = mul nsw i32 %2096, %2097
  store i32 %2098, ptr %27, align 4, !tbaa !9
  %2099 = load ptr, ptr %14, align 8, !tbaa !5
  %2100 = load i32, ptr %33, align 4, !tbaa !9
  %2101 = load i32, ptr %23, align 4, !tbaa !9
  %2102 = add nsw i32 %2100, %2101
  %2103 = sext i32 %2102 to i64
  %2104 = getelementptr inbounds double, ptr %2099, i64 %2103
  %2105 = load ptr, ptr %15, align 8, !tbaa !5
  %2106 = load ptr, ptr %14, align 8, !tbaa !5
  %2107 = load i32, ptr %35, align 4, !tbaa !9
  %2108 = load i32, ptr %23, align 4, !tbaa !9
  %2109 = add nsw i32 %2107, %2108
  %2110 = sext i32 %2109 to i64
  %2111 = getelementptr inbounds double, ptr %2106, i64 %2110
  %2112 = load ptr, ptr %15, align 8, !tbaa !5
  call void @dswap_(ptr noundef %27, ptr noundef %2104, ptr noundef %2105, ptr noundef %2111, ptr noundef %2112)
  br label %2113

2113:                                             ; preds = %2095, %2057
  br label %2114

2114:                                             ; preds = %2113, %1937
  br label %2115

2115:                                             ; preds = %2114
  %2116 = load i32, ptr %31, align 4, !tbaa !9
  %2117 = add nsw i32 %2116, 1
  store i32 %2117, ptr %31, align 4, !tbaa !9
  br label %1933, !llvm.loop !29

2118:                                             ; preds = %1933
  br label %2119

2119:                                             ; preds = %2118, %1585
  br label %2120

2120:                                             ; preds = %2119
  %2121 = load i32, ptr %30, align 4, !tbaa !9
  %2122 = add nsw i32 %2121, 1
  store i32 %2122, ptr %30, align 4, !tbaa !9
  br label %1223, !llvm.loop !30

2123:                                             ; preds = %1223
  br label %2124

2124:                                             ; preds = %2123, %1219
  %2125 = load ptr, ptr %13, align 8, !tbaa !5
  %2126 = load ptr, ptr %13, align 8, !tbaa !5
  %2127 = load ptr, ptr %16, align 8, !tbaa !5
  %2128 = getelementptr inbounds double, ptr %2127, i64 1
  %2129 = load ptr, ptr %19, align 8, !tbaa !5
  %2130 = getelementptr inbounds i32, ptr %2129, i64 1
  %2131 = load ptr, ptr %22, align 8, !tbaa !5
  call void @dgbtrf_(ptr noundef %2125, ptr noundef %2126, ptr noundef %38, ptr noundef %38, ptr noundef %2128, ptr noundef %28, ptr noundef %2130, ptr noundef %2131)
  store i32 1, ptr %44, align 4
  br label %2132

2132:                                             ; preds = %2124, %182, %177, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  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 4, 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
  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 @lsame_(ptr noundef, ptr noundef) #2

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

declare i32 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 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 @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

declare void @dtrsm_(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 @dswap_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dgbtrf_(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}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !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"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [17 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_n1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [12 x i8], align 1
@c_b12 = external hidden global double, align 8
@c_b13 = 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 [10 x i8], align 1
@c_b21 = external hidden global double, align 8
@.str.6 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

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

31:                                               ; preds = %11
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not646 = icmp eq i32 %32, 0
  br i1 %.not646, label %.thread.sink.split, label %33

33:                                               ; preds = %31, %11
  %34 = load i32, ptr %1, align 4, !tbaa !5
  %35 = icmp slt i32 %34, 0
  br i1 %35, label %.thread.sink.split, label %36

36:                                               ; preds = %33
  %37 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %34, i32 1)
  %38 = icmp slt i32 %37, %spec.select
  br i1 %38, label %.thread.sink.split, label %39

39:                                               ; preds = %36
  %40 = load i32, ptr %5, align 4, !tbaa !5
  %41 = shl i32 %34, 2
  %42 = icmp sge i32 %40, %41
  %or.cond = select i1 %42, i1 true, i1 %30
  br i1 %or.cond, label %43, label %.thread.sink.split

43:                                               ; preds = %39
  %44 = load i32, ptr %9, align 4, !tbaa !5
  %45 = icmp sge i32 %44, %34
  %or.cond3 = select i1 %45, i1 true, i1 %28
  br i1 %or.cond3, label %46, label %.thread.sink.split

46:                                               ; preds = %43
  %.pr = load i32, ptr %10, align 4, !tbaa !5
  %.not647 = icmp eq i32 %.pr, 0
  br i1 %.not647, label %50, label %.thread

.thread.sink.split:                               ; preds = %43, %39, %36, %33, %31
  %.sink = phi i32 [ -1, %31 ], [ -2, %33 ], [ -4, %36 ], [ -6, %39 ], [ -10, %43 ]
  store i32 %.sink, ptr %10, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %46
  %47 = phi i32 [ %.pr, %46 ], [ %.sink, %.thread.sink.split ]
  %48 = sub nsw i32 0, %47
  store i32 %48, ptr %12, align 4, !tbaa !5
  %49 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %12, i32 noundef 16) #4
  br label %939

50:                                               ; preds = %46
  %51 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 16, i32 noundef 1) #4
  store i32 %51, ptr %19, align 4, !tbaa !5
  %52 = load i32, ptr %10, align 4, !tbaa !5
  %53 = icmp eq i32 %52, 0
  br i1 %53, label %54, label %65

54:                                               ; preds = %50
  br i1 %30, label %55, label %61

55:                                               ; preds = %54
  %56 = mul nsw i32 %51, 3
  %57 = add nsw i32 %56, 1
  %58 = load i32, ptr %1, align 4, !tbaa !5
  %59 = mul nsw i32 %58, %57
  %60 = sitofp i32 %59 to double
  store double %60, ptr %4, align 8, !tbaa !9
  br label %61

61:                                               ; preds = %55, %54
  br i1 %28, label %.thread680, label %65

.thread680:                                       ; preds = %61
  %62 = load i32, ptr %1, align 4, !tbaa !5
  %63 = mul nsw i32 %62, %51
  %64 = sitofp i32 %63 to double
  store double %64, ptr %8, align 8, !tbaa !9
  br label %939

65:                                               ; preds = %61, %50
  %or.cond5 = select i1 %30, i1 true, i1 %28
  br i1 %or.cond5, label %939, label %66

66:                                               ; preds = %65
  %67 = load i32, ptr %1, align 4, !tbaa !5
  %68 = icmp eq i32 %67, 0
  br i1 %68, label %939, label %69

69:                                               ; preds = %66
  %70 = load i32, ptr %5, align 4, !tbaa !5
  %71 = sdiv i32 %70, %67
  store i32 %71, ptr %15, align 4, !tbaa !5
  %72 = mul nsw i32 %51, 3
  %.not648 = icmp sgt i32 %71, %72
  br i1 %.not648, label %76, label %73

73:                                               ; preds = %69
  %74 = add nsw i32 %71, -1
  %75 = sdiv i32 %74, 3
  store i32 %75, ptr %19, align 4, !tbaa !5
  br label %76

76:                                               ; preds = %73, %69
  %77 = phi i32 [ %75, %73 ], [ %51, %69 ]
  %78 = load i32, ptr %9, align 4, !tbaa !5
  %79 = mul nsw i32 %77, %67
  %80 = icmp slt i32 %78, %79
  br i1 %80, label %81, label %83

81:                                               ; preds = %76
  %82 = sdiv i32 %78, %67
  store i32 %82, ptr %19, align 4, !tbaa !5
  br label %83

83:                                               ; preds = %81, %76
  %84 = phi i32 [ %82, %81 ], [ %77, %76 ]
  %85 = add i32 %67, -1
  %86 = add i32 %85, %84
  %87 = sdiv i32 %86, %84
  %88 = shl i32 %84, 1
  %. = tail call i32 @llvm.smin.i32(i32 %84, i32 %67)
  store i32 %., ptr %18, align 4, !tbaa !5
  %.not650699 = icmp slt i32 %., 1
  br i1 %.not650699, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %83
  %89 = add nuw i32 %., 1
  %wide.trip.count = zext i32 %89 to i64
  %90 = zext nneg i32 %. to i64
  %min.iters.check = icmp ult i32 %., 8
  br i1 %min.iters.check, label %.lr.ph.preheader876, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %90, 2147483640
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %91 = getelementptr i32, ptr %6, i64 %index
  %92 = getelementptr inbounds i8, ptr %91, i64 16
  store <4 x i32> %vec.ind, ptr %91, align 4, !tbaa !5
  store <4 x i32> %step.add, ptr %92, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %93 = icmp eq i64 %index.next, %n.vec
  br i1 %93, label %middle.block, label %vector.body, !llvm.loop !11

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %90
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader876

.lr.ph.preheader876:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader876, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader876 ]
  %94 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv
  %95 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %95, ptr %94, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !15

._crit_edge:                                      ; preds = %.lr.ph, %middle.block, %83
  %96 = sitofp i32 %84 to double
  store double %96, ptr %4, align 8, !tbaa !9
  %97 = add nsw i32 %87, -1
  br i1 %.not, label %524, label %98

98:                                               ; preds = %._crit_edge
  %invariant.gep751 = getelementptr i8, ptr %22, i64 8
  %.not663763 = icmp slt i32 %87, 1
  br i1 %.not663763, label %.loopexit695, label %.lr.ph767

.lr.ph767:                                        ; preds = %98
  %99 = or disjoint i32 %88, 1
  %100 = add i32 %20, 1
  %101 = add nsw i32 %71, -1
  %102 = add nsw i32 %71, -1
  %103 = add nsw i32 %71, -1
  %104 = add nsw i32 %71, -1
  %105 = add nsw i32 %71, -1
  %106 = add nsw i32 %71, -1
  %107 = add nsw i32 %71, -1
  %108 = add nsw i32 %71, -1
  %109 = add nsw i32 %71, -1
  br label %110

110:                                              ; preds = %.lr.ph767, %.loopexit697
  %.1623764 = phi i32 [ 0, %.lr.ph767 ], [ %.pre864, %.loopexit697 ]
  %111 = load i32, ptr %19, align 4, !tbaa !5
  %112 = load i32, ptr %1, align 4, !tbaa !5
  %113 = mul nsw i32 %111, %.1623764
  %114 = sub nsw i32 %112, %113
  store i32 %114, ptr %14, align 4, !tbaa !5
  %115 = call i32 @llvm.smin.i32(i32 %111, i32 %114)
  store i32 %115, ptr %18, align 4, !tbaa !5
  %116 = add nsw i32 %.1623764, -1
  store i32 %116, ptr %13, align 4, !tbaa !5
  %.not665705 = icmp ult i32 %.1623764, 2
  br i1 %.not665705, label %._crit_edge709, label %.lr.ph708

.lr.ph708:                                        ; preds = %110
  %117 = icmp eq i32 %116, 1
  %118 = shl i32 %111, 1
  %119 = add nsw i32 %115, %111
  %storemerge678.peel = select i1 %117, i32 %119, i32 %118
  store i32 %storemerge678.peel, ptr %17, align 4, !tbaa !5
  store i32 %101, ptr %14, align 4, !tbaa !5
  %120 = mul nsw i32 %111, %71
  %121 = add nsw i32 %99, %120
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds double, ptr %23, i64 %122
  %124 = add nsw i32 %113, 1
  %125 = mul nsw i32 %124, %20
  %126 = sext i32 %125 to i64
  %gep702.peel = getelementptr double, ptr %invariant.gep751, i64 %126
  %127 = sext i32 %111 to i64
  %gep704.peel = getelementptr double, ptr %8, i64 %127
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef nonnull %17, ptr noundef nonnull @c_b12, ptr noundef nonnull %123, ptr noundef nonnull %14, ptr noundef %gep702.peel, ptr noundef nonnull %3, ptr noundef nonnull @c_b13, ptr noundef %gep704.peel, ptr noundef nonnull %1) #4
  %.pre = load i32, ptr %13, align 4, !tbaa !5
  %.not665.not.peel = icmp sgt i32 %.pre, 1
  br i1 %.not665.not.peel, label %.peel.next, label %._crit_edge709.loopexit

.peel.next:                                       ; preds = %.lr.ph708, %.peel.next
  %.0625706 = phi i32 [ %152, %.peel.next ], [ 2, %.lr.ph708 ]
  %128 = icmp eq i32 %.0625706, %116
  %129 = load i32, ptr %19, align 4, !tbaa !5
  %130 = mul nsw i32 %129, 3
  %131 = shl i32 %129, 1
  %132 = load i32, ptr %18, align 4
  %133 = add nsw i32 %131, %132
  %storemerge677 = select i1 %128, i32 %133, i32 %130
  store i32 %storemerge677, ptr %17, align 4, !tbaa !5
  store i32 %102, ptr %14, align 4, !tbaa !5
  %134 = add nsw i32 %.0625706, -1
  %135 = mul i32 %71, %134
  %136 = mul i32 %135, %129
  %137 = add i32 %99, %129
  %138 = add nsw i32 %137, %136
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds double, ptr %23, i64 %139
  %141 = add nsw i32 %.0625706, -2
  %142 = mul nsw i32 %129, %141
  %143 = add nsw i32 %142, 1
  %144 = mul nsw i32 %129, %.1623764
  %145 = add nsw i32 %144, 1
  %146 = mul nsw i32 %145, %20
  %147 = add nsw i32 %143, %146
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds double, ptr %22, i64 %148
  %150 = mul nsw i32 %129, %.0625706
  %151 = sext i32 %150 to i64
  %gep = getelementptr double, ptr %8, i64 %151
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef nonnull %17, ptr noundef nonnull @c_b12, ptr noundef nonnull %140, ptr noundef nonnull %14, ptr noundef %149, ptr noundef nonnull %3, ptr noundef nonnull @c_b13, ptr noundef %gep, ptr noundef nonnull %1) #4
  %.pre845 = load i32, ptr %13, align 4, !tbaa !5
  %152 = add nuw nsw i32 %.0625706, 1
  %.not665.not = icmp slt i32 %.0625706, %.pre845
  br i1 %.not665.not, label %.peel.next, label %._crit_edge709.loopexit, !llvm.loop !16

._crit_edge709.loopexit:                          ; preds = %.peel.next, %.lr.ph708
  %.pre846 = load i32, ptr %19, align 4, !tbaa !5
  %.pre853 = mul nsw i32 %.pre846, %.1623764
  br label %._crit_edge709

._crit_edge709:                                   ; preds = %._crit_edge709.loopexit, %110
  %.pre-phi854 = phi i32 [ %.pre853, %._crit_edge709.loopexit ], [ %113, %110 ]
  store i32 %103, ptr %13, align 4, !tbaa !5
  %153 = add nsw i32 %.pre-phi854, 1
  %154 = mul i32 %153, %100
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds double, ptr %22, i64 %155
  %157 = mul nsw i32 %.pre-phi854, %71
  %158 = add nsw i32 %157, %99
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds double, ptr %23, i64 %159
  call void @dlacpy_(ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef %156, ptr noundef nonnull %3, ptr noundef nonnull %160, ptr noundef nonnull %13) #4
  %161 = icmp ugt i32 %.1623764, 1
  br i1 %161, label %.thread682, label %201

.thread682:                                       ; preds = %._crit_edge709
  %162 = load i32, ptr %19, align 4, !tbaa !5
  %163 = mul nsw i32 %162, %116
  store i32 %163, ptr %13, align 4, !tbaa !5
  store i32 %103, ptr %14, align 4, !tbaa !5
  %164 = mul nsw i32 %162, %.1623764
  %165 = add nsw i32 %164, 1
  %166 = mul nsw i32 %165, %20
  %167 = sext i32 %166 to i64
  %gep752 = getelementptr double, ptr %invariant.gep751, i64 %167
  %168 = sext i32 %162 to i64
  %gep754 = getelementptr double, ptr %8, i64 %168
  %169 = mul nsw i32 %71, %164
  %170 = add nsw i32 %169, %99
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %23, i64 %171
  call void @dgemm_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull %13, ptr noundef nonnull @c_b21, ptr noundef %gep752, ptr noundef nonnull %3, ptr noundef %gep754, ptr noundef nonnull %1, ptr noundef nonnull @c_b12, ptr noundef nonnull %172, ptr noundef nonnull %14) #4
  store i32 %103, ptr %13, align 4, !tbaa !5
  %173 = load i32, ptr %19, align 4, !tbaa !5
  %174 = mul nsw i32 %173, %116
  %175 = add nsw i32 %174, 1
  %176 = mul nsw i32 %173, %.1623764
  %177 = add nsw i32 %176, 1
  %178 = mul nsw i32 %177, %20
  %179 = add nsw i32 %175, %178
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds double, ptr %22, i64 %180
  %182 = mul nsw i32 %174, %71
  %183 = add i32 %99, %173
  %184 = add nsw i32 %183, %182
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds double, ptr %23, i64 %185
  call void @dgemm_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef nonnull @c_b12, ptr noundef %181, ptr noundef nonnull %3, ptr noundef nonnull %186, ptr noundef nonnull %13, ptr noundef nonnull @c_b13, ptr noundef %8, ptr noundef nonnull %1) #4
  store i32 %103, ptr %13, align 4, !tbaa !5
  %187 = add nsw i32 %.1623764, -2
  %188 = load i32, ptr %19, align 4, !tbaa !5
  %189 = mul nsw i32 %188, %187
  %190 = add nsw i32 %189, 1
  %191 = mul nsw i32 %188, %.1623764
  %192 = add nsw i32 %191, 1
  %193 = mul nsw i32 %192, %20
  %194 = add nsw i32 %190, %193
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds double, ptr %22, i64 %195
  %197 = mul nsw i32 %191, %71
  %198 = add nsw i32 %197, %99
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds double, ptr %23, i64 %199
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b21, ptr noundef %8, ptr noundef nonnull %1, ptr noundef %196, ptr noundef nonnull %3, ptr noundef nonnull @c_b12, ptr noundef nonnull %200, ptr noundef nonnull %13) #4
  br label %202

201:                                              ; preds = %._crit_edge709
  %.not666 = icmp eq i32 %.1623764, 0
  br i1 %.not666, label %216, label %202

202:                                              ; preds = %.thread682, %201
  store i32 %104, ptr %13, align 4, !tbaa !5
  %203 = load i32, ptr %19, align 4, !tbaa !5
  %204 = mul nsw i32 %203, %.1623764
  %205 = mul nsw i32 %204, %71
  %206 = add nsw i32 %205, %99
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds double, ptr %23, i64 %207
  %209 = mul nsw i32 %203, %116
  %210 = add nsw i32 %209, 1
  %211 = add nsw i32 %204, 1
  %212 = mul nsw i32 %211, %20
  %213 = add nsw i32 %210, %212
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds double, ptr %22, i64 %214
  call void @dsygst_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %208, ptr noundef nonnull %13, ptr noundef %215, ptr noundef nonnull %3, ptr noundef nonnull %16) #4
  br label %216

216:                                              ; preds = %202, %201
  %.not666685 = phi i1 [ false, %202 ], [ true, %201 ]
  %217 = load i32, ptr %18, align 4, !tbaa !5
  store i32 %217, ptr %13, align 4, !tbaa !5
  %.not667714 = icmp slt i32 %217, 1
  br i1 %.not667714, label %273, label %.lr.ph717

.lr.ph717:                                        ; preds = %216
  %218 = load i32, ptr %19, align 4
  %219 = mul nsw i32 %218, %.1623764
  %220 = add nuw i32 %217, 1
  %221 = add nuw i32 %217, 1
  %222 = add nsw i32 %217, -2
  br label %223

.loopexit696:                                     ; preds = %.prol.loopexit, %.lr.ph713.new, %223
  %indvars.iv.next816 = add nuw i32 %indvars.iv815, 1
  %exitcond821.not = icmp eq i32 %indvars.iv815, %221
  %indvar.next = add i32 %indvar, 1
  br i1 %exitcond821.not, label %._crit_edge718, label %223, !llvm.loop !18

223:                                              ; preds = %.lr.ph717, %.loopexit696
  %indvar = phi i32 [ 0, %.lr.ph717 ], [ %indvar.next, %.loopexit696 ]
  %indvars.iv815 = phi i32 [ 2, %.lr.ph717 ], [ %indvars.iv.next816, %.loopexit696 ]
  %.1626715 = phi i32 [ 1, %.lr.ph717 ], [ %224, %.loopexit696 ]
  %224 = add nuw nsw i32 %.1626715, 1
  %.not675710.not = icmp slt i32 %.1626715, %217
  br i1 %.not675710.not, label %.lr.ph713, label %.loopexit696

.lr.ph713:                                        ; preds = %223
  %225 = zext i32 %indvars.iv815 to i64
  %.neg676 = add i32 %224, %88
  %226 = add nsw i32 %.1626715, -1
  %227 = add i32 %226, %219
  %228 = mul nsw i32 %227, %71
  %229 = sub i32 %99, %.1626715
  %230 = sub i32 %indvar, %217
  %231 = and i32 %230, 1
  %lcmp.mod.not.not = icmp eq i32 %231, 0
  br i1 %lcmp.mod.not.not, label %.prol.loopexit.unr-lcssa, label %.prol.loopexit

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph713
  %232 = add i32 %indvars.iv815, -1
  %233 = add i32 %232, %219
  %234 = mul nsw i32 %233, %71
  %235 = sub i32 %.neg676, %indvars.iv815
  %236 = add nsw i32 %235, %234
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %23, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !9
  %240 = add i32 %229, %indvars.iv815
  %241 = add nsw i32 %240, %228
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %23, i64 %242
  store double %239, ptr %243, align 8, !tbaa !9
  %indvars.iv.next818.prol = add nuw nsw i64 %225, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph713
  %indvars.iv817.unr = phi i64 [ %225, %.lr.ph713 ], [ %indvars.iv.next818.prol, %.prol.loopexit.unr-lcssa ]
  %244 = icmp eq i32 %222, %indvar
  br i1 %244, label %.loopexit696, label %.lr.ph713.new

.lr.ph713.new:                                    ; preds = %.prol.loopexit, %.lr.ph713.new
  %indvars.iv817 = phi i64 [ %indvars.iv.next818.1, %.lr.ph713.new ], [ %indvars.iv817.unr, %.prol.loopexit ]
  %245 = trunc i64 %indvars.iv817 to i32
  %246 = add i32 %245, -1
  %247 = add i32 %246, %219
  %248 = mul nsw i32 %247, %71
  %249 = trunc i64 %indvars.iv817 to i32
  %250 = sub i32 %.neg676, %249
  %251 = add nsw i32 %250, %248
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds double, ptr %23, i64 %252
  %254 = load double, ptr %253, align 8, !tbaa !9
  %255 = add i32 %229, %249
  %256 = add nsw i32 %255, %228
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds double, ptr %23, i64 %257
  store double %254, ptr %258, align 8, !tbaa !9
  %indvars.iv.next818 = add nuw nsw i64 %indvars.iv817, 1
  %259 = trunc i64 %indvars.iv.next818 to i32
  %260 = add i32 %259, -1
  %261 = add i32 %260, %219
  %262 = mul nsw i32 %261, %71
  %263 = trunc i64 %indvars.iv.next818 to i32
  %264 = sub i32 %.neg676, %263
  %265 = add nsw i32 %264, %262
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds double, ptr %23, i64 %266
  %268 = load double, ptr %267, align 8, !tbaa !9
  %269 = add i32 %229, %263
  %270 = add nsw i32 %269, %228
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %23, i64 %271
  store double %268, ptr %272, align 8, !tbaa !9
  %indvars.iv.next818.1 = add nuw nsw i64 %indvars.iv817, 2
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next818.1 to i32
  %exitcond820.not.1 = icmp eq i32 %220, %lftr.wideiv.1
  br i1 %exitcond820.not.1, label %.loopexit696, label %.lr.ph713.new, !llvm.loop !19

._crit_edge718:                                   ; preds = %.loopexit696
  store i32 %217, ptr %14, align 4, !tbaa !5
  br label %273

273:                                              ; preds = %._crit_edge718, %216
  %274 = icmp slt i32 %.1623764, %97
  br i1 %274, label %275, label %.loopexit695

275:                                              ; preds = %273
  br i1 %.not666685, label %324, label %276

276:                                              ; preds = %275
  %277 = icmp eq i32 %.1623764, 1
  br i1 %277, label %278, label %289

278:                                              ; preds = %276
  store i32 %106, ptr %13, align 4, !tbaa !5
  %279 = load i32, ptr %19, align 4, !tbaa !5
  %280 = mul nsw i32 %279, %71
  %281 = add nsw i32 %280, %99
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %23, i64 %282
  %284 = add nsw i32 %279, 1
  %285 = mul nsw i32 %284, %20
  %286 = sext i32 %285 to i64
  %gep756 = getelementptr double, ptr %invariant.gep751, i64 %286
  %287 = sext i32 %284 to i64
  %288 = getelementptr inbounds double, ptr %25, i64 %287
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull @c_b12, ptr noundef nonnull %283, ptr noundef nonnull %13, ptr noundef %gep756, ptr noundef nonnull %3, ptr noundef nonnull @c_b13, ptr noundef nonnull %288, ptr noundef nonnull %1) #4
  br label %309

289:                                              ; preds = %276
  %290 = load i32, ptr %19, align 4, !tbaa !5
  %291 = add nsw i32 %290, %217
  store i32 %291, ptr %13, align 4, !tbaa !5
  store i32 %105, ptr %14, align 4, !tbaa !5
  %292 = mul nsw i32 %290, %116
  %293 = mul nsw i32 %292, %71
  %294 = add i32 %99, %290
  %295 = add nsw i32 %294, %293
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %23, i64 %296
  %298 = add nsw i32 %.1623764, -2
  %299 = mul nsw i32 %290, %298
  %300 = add nsw i32 %299, 1
  %301 = mul nsw i32 %290, %.1623764
  %302 = add nsw i32 %301, 1
  %303 = mul nsw i32 %302, %20
  %304 = add nsw i32 %300, %303
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %22, i64 %305
  %307 = sext i32 %302 to i64
  %308 = getelementptr inbounds double, ptr %25, i64 %307
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull %13, ptr noundef nonnull @c_b12, ptr noundef nonnull %297, ptr noundef nonnull %14, ptr noundef %306, ptr noundef nonnull %3, ptr noundef nonnull @c_b13, ptr noundef nonnull %308, ptr noundef nonnull %1) #4
  br label %309

309:                                              ; preds = %289, %278
  %310 = load i32, ptr %1, align 4, !tbaa !5
  %311 = add nuw nsw i32 %.1623764, 1
  %312 = load i32, ptr %19, align 4, !tbaa !5
  %313 = mul nsw i32 %312, %311
  %314 = sub nsw i32 %310, %313
  store i32 %314, ptr %13, align 4, !tbaa !5
  %315 = mul nsw i32 %312, %.1623764
  store i32 %315, ptr %14, align 4, !tbaa !5
  %316 = sext i32 %312 to i64
  %gep758 = getelementptr double, ptr %8, i64 %316
  %317 = add nsw i32 %313, 1
  %318 = mul nsw i32 %317, %20
  %319 = sext i32 %318 to i64
  %gep760 = getelementptr double, ptr %invariant.gep751, i64 %319
  %320 = add nsw i32 %315, 1
  %321 = add nsw i32 %320, %318
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds double, ptr %22, i64 %322
  call void @dgemm_(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %19, ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b21, ptr noundef %gep758, ptr noundef nonnull %1, ptr noundef %gep760, ptr noundef nonnull %3, ptr noundef nonnull @c_b12, ptr noundef %323, ptr noundef nonnull %3) #4
  br label %324

324:                                              ; preds = %309, %275
  %325 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %325, ptr %13, align 4, !tbaa !5
  %.not668721 = icmp slt i32 %325, 1
  %.pre864 = add nuw nsw i32 %.1623764, 1
  br i1 %.not668721, label %._crit_edge725, label %.lr.ph724

.lr.ph724:                                        ; preds = %324, %.lr.ph724
  %.1722 = phi i32 [ %340, %.lr.ph724 ], [ 1, %324 ]
  %326 = load i32, ptr %1, align 4, !tbaa !5
  %327 = load i32, ptr %19, align 4, !tbaa !5
  %328 = mul nsw i32 %327, %.pre864
  %329 = sub nsw i32 %326, %328
  store i32 %329, ptr %14, align 4, !tbaa !5
  %330 = mul nsw i32 %327, %.1623764
  %331 = add nsw i32 %330, %.1722
  %332 = add nsw i32 %328, 1
  %333 = mul nsw i32 %332, %20
  %334 = add nsw i32 %331, %333
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds double, ptr %22, i64 %335
  %337 = add nsw i32 %.1722, -1
  %338 = mul nsw i32 %326, %337
  %339 = sext i32 %338 to i64
  %gep720 = getelementptr double, ptr %8, i64 %339
  call void @dcopy_(ptr noundef nonnull %14, ptr noundef %336, ptr noundef nonnull %3, ptr noundef %gep720, ptr noundef nonnull @c__1) #4
  %340 = add nuw nsw i32 %.1722, 1
  %341 = load i32, ptr %13, align 4, !tbaa !5
  %.not668.not = icmp slt i32 %.1722, %341
  br i1 %.not668.not, label %.lr.ph724, label %._crit_edge725.loopexit, !llvm.loop !20

._crit_edge725.loopexit:                          ; preds = %.lr.ph724
  %.pre847 = load i32, ptr %19, align 4, !tbaa !5
  br label %._crit_edge725

._crit_edge725:                                   ; preds = %324, %._crit_edge725.loopexit
  %342 = phi i32 [ %.pre847, %._crit_edge725.loopexit ], [ %325, %324 ]
  %343 = load i32, ptr %1, align 4, !tbaa !5
  %344 = mul nsw i32 %342, %.pre864
  %345 = sub nsw i32 %343, %344
  store i32 %345, ptr %13, align 4, !tbaa !5
  %346 = sext i32 %344 to i64
  %gep762 = getelementptr i32, ptr %6, i64 %346
  %347 = call i32 @dgetrf_(ptr noundef nonnull %13, ptr noundef nonnull %19, ptr noundef %8, ptr noundef nonnull %1, ptr noundef %gep762, ptr noundef nonnull %16) #4
  %348 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %348, ptr %13, align 4, !tbaa !5
  %.not669728 = icmp slt i32 %348, 1
  br i1 %.not669728, label %._crit_edge732, label %.lr.ph731

.lr.ph731:                                        ; preds = %._crit_edge725, %.lr.ph731
  %.2729 = phi i32 [ %363, %.lr.ph731 ], [ 1, %._crit_edge725 ]
  %349 = load i32, ptr %1, align 4, !tbaa !5
  %350 = load i32, ptr %19, align 4, !tbaa !5
  %351 = mul nsw i32 %350, %.pre864
  %352 = sub nsw i32 %349, %351
  store i32 %352, ptr %14, align 4, !tbaa !5
  %353 = add nsw i32 %.2729, -1
  %354 = mul nsw i32 %349, %353
  %355 = sext i32 %354 to i64
  %gep727 = getelementptr double, ptr %8, i64 %355
  %356 = mul nsw i32 %350, %.1623764
  %357 = add nsw i32 %356, %.2729
  %358 = add nsw i32 %351, 1
  %359 = mul nsw i32 %358, %20
  %360 = add nsw i32 %357, %359
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %22, i64 %361
  call void @dcopy_(ptr noundef nonnull %14, ptr noundef %gep727, ptr noundef nonnull @c__1, ptr noundef %362, ptr noundef nonnull %3) #4
  %363 = add nuw nsw i32 %.2729, 1
  %364 = load i32, ptr %13, align 4, !tbaa !5
  %.not669.not = icmp slt i32 %.2729, %364
  br i1 %.not669.not, label %.lr.ph731, label %._crit_edge732.loopexit, !llvm.loop !21

._crit_edge732.loopexit:                          ; preds = %.lr.ph731
  %.pre848 = load i32, ptr %19, align 4, !tbaa !5
  br label %._crit_edge732

._crit_edge732:                                   ; preds = %._crit_edge732.loopexit, %._crit_edge725
  %365 = phi i32 [ %.pre848, %._crit_edge732.loopexit ], [ %348, %._crit_edge725 ]
  %366 = load i32, ptr %1, align 4, !tbaa !5
  %367 = mul nsw i32 %365, %.pre864
  %368 = sub nsw i32 %366, %367
  store i32 %368, ptr %14, align 4, !tbaa !5
  %369 = call i32 @llvm.smin.i32(i32 %365, i32 %368)
  store i32 %369, ptr %18, align 4, !tbaa !5
  store i32 %107, ptr %13, align 4, !tbaa !5
  %370 = mul nsw i32 %365, %.1623764
  %371 = mul nsw i32 %370, %71
  %372 = add i32 %99, %365
  %373 = add nsw i32 %372, %371
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds double, ptr %23, i64 %374
  call void @dlaset_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b13, ptr noundef nonnull @c_b13, ptr noundef nonnull %375, ptr noundef nonnull %13) #4
  store i32 %108, ptr %13, align 4, !tbaa !5
  %376 = load i32, ptr %19, align 4, !tbaa !5
  %377 = mul i32 %71, %.1623764
  %378 = mul i32 %377, %376
  %379 = add i32 %99, %376
  %380 = add nsw i32 %379, %378
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds double, ptr %23, i64 %381
  call void @dlacpy_(ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %8, ptr noundef nonnull %1, ptr noundef nonnull %382, ptr noundef nonnull %13) #4
  br i1 %.not666685, label %398, label %383

383:                                              ; preds = %._crit_edge732
  store i32 %109, ptr %13, align 4, !tbaa !5
  %384 = load i32, ptr %19, align 4, !tbaa !5
  %385 = mul nsw i32 %384, %116
  %386 = add nsw i32 %385, 1
  %387 = mul nsw i32 %384, %.1623764
  %388 = add nsw i32 %387, 1
  %389 = mul nsw i32 %388, %20
  %390 = add nsw i32 %386, %389
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %22, i64 %391
  %393 = mul nsw i32 %387, %71
  %394 = add i32 %99, %384
  %395 = add nsw i32 %394, %393
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %23, i64 %396
  call void @dtrsm_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b12, ptr noundef %392, ptr noundef nonnull %3, ptr noundef nonnull %397, ptr noundef nonnull %13) #4
  br label %398

398:                                              ; preds = %383, %._crit_edge732
  %399 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %399, ptr %13, align 4, !tbaa !5
  %.not671738 = icmp slt i32 %399, 1
  br i1 %.not671738, label %._crit_edge855, label %.lr.ph741

._crit_edge855:                                   ; preds = %398
  %.pre866 = mul nsw i32 %399, %.1623764
  br label %455

.lr.ph741:                                        ; preds = %398
  %400 = load i32, ptr %18, align 4, !tbaa !5
  %.not674733 = icmp slt i32 %400, 1
  %401 = mul nuw nsw i32 %399, %.1623764
  %402 = add nsw i32 %401, -1
  %403 = add i32 %99, %399
  %404 = add nsw i32 %399, -1
  %405 = add i32 %404, %401
  br i1 %.not674733, label %._crit_edge742, label %.lr.ph736.preheader

.lr.ph736.preheader:                              ; preds = %.lr.ph741
  %406 = zext nneg i32 %400 to i64
  %xtraiter877 = and i64 %406, 1
  %407 = icmp eq i32 %400, 1
  %unroll_iter = and i64 %406, 2147483646
  %lcmp.mod878.not = icmp eq i64 %xtraiter877, 0
  br label %.lr.ph736

.lr.ph736:                                        ; preds = %.lr.ph736.preheader, %._crit_edge737
  %.3739 = phi i32 [ %454, %._crit_edge737 ], [ 1, %.lr.ph736.preheader ]
  %408 = add i32 %402, %.3739
  %409 = mul nsw i32 %71, %408
  %410 = sub i32 %403, %.3739
  %411 = add i32 %99, %.3739
  br i1 %407, label %._crit_edge737.unr-lcssa, label %.lr.ph736.new

.lr.ph736.new:                                    ; preds = %.lr.ph736, %.lr.ph736.new
  %indvars.iv822 = phi i64 [ %indvars.iv.next823.1, %.lr.ph736.new ], [ 1, %.lr.ph736 ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph736.new ], [ 0, %.lr.ph736 ]
  %412 = trunc nuw nsw i64 %indvars.iv822 to i32
  %413 = add i32 %410, %412
  %414 = add nsw i32 %413, %409
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds double, ptr %23, i64 %415
  %417 = load double, ptr %416, align 8, !tbaa !9
  %418 = add i32 %405, %412
  %419 = mul nsw i32 %71, %418
  %420 = trunc i64 %indvars.iv822 to i32
  %421 = add i32 %399, %420
  %422 = sub i32 %411, %421
  %423 = add nsw i32 %422, %419
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds double, ptr %23, i64 %424
  store double %417, ptr %425, align 8, !tbaa !9
  %indvars.iv.next823 = add nuw nsw i64 %indvars.iv822, 1
  %426 = trunc nuw nsw i64 %indvars.iv.next823 to i32
  %427 = add i32 %410, %426
  %428 = add nsw i32 %427, %409
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds double, ptr %23, i64 %429
  %431 = load double, ptr %430, align 8, !tbaa !9
  %432 = add i32 %405, %426
  %433 = mul nsw i32 %71, %432
  %434 = trunc i64 %indvars.iv.next823 to i32
  %435 = add i32 %399, %434
  %436 = sub i32 %411, %435
  %437 = add nsw i32 %436, %433
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %23, i64 %438
  store double %431, ptr %439, align 8, !tbaa !9
  %indvars.iv.next823.1 = add nuw nsw i64 %indvars.iv822, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge737.unr-lcssa, label %.lr.ph736.new, !llvm.loop !22

._crit_edge737.unr-lcssa:                         ; preds = %.lr.ph736.new, %.lr.ph736
  %indvars.iv822.unr = phi i64 [ 1, %.lr.ph736 ], [ %indvars.iv.next823.1, %.lr.ph736.new ]
  br i1 %lcmp.mod878.not, label %._crit_edge737, label %._crit_edge737.epilog-lcssa

._crit_edge737.epilog-lcssa:                      ; preds = %._crit_edge737.unr-lcssa
  %440 = trunc nuw nsw i64 %indvars.iv822.unr to i32
  %441 = add i32 %410, %440
  %442 = add nsw i32 %441, %409
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %23, i64 %443
  %445 = load double, ptr %444, align 8, !tbaa !9
  %446 = add i32 %405, %440
  %447 = mul nsw i32 %71, %446
  %448 = trunc i64 %indvars.iv822.unr to i32
  %449 = add i32 %399, %448
  %450 = sub i32 %411, %449
  %451 = add nsw i32 %450, %447
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %23, i64 %452
  store double %445, ptr %453, align 8, !tbaa !9
  br label %._crit_edge737

._crit_edge737:                                   ; preds = %._crit_edge737.unr-lcssa, %._crit_edge737.epilog-lcssa
  %454 = add nuw i32 %.3739, 1
  %exitcond827.not = icmp eq i32 %.3739, %399
  br i1 %exitcond827.not, label %._crit_edge742, label %.lr.ph736, !llvm.loop !23

._crit_edge742:                                   ; preds = %._crit_edge737, %.lr.ph741
  store i32 %400, ptr %14, align 4, !tbaa !5
  br label %455

455:                                              ; preds = %._crit_edge855, %._crit_edge742
  %.pre-phi867 = phi i32 [ %.pre866, %._crit_edge855 ], [ %401, %._crit_edge742 ]
  %456 = add nsw i32 %.pre-phi867, 1
  %457 = mul nsw i32 %399, %.pre864
  %458 = add nsw i32 %457, 1
  %459 = mul nsw i32 %458, %20
  %460 = add nsw i32 %456, %459
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds double, ptr %22, i64 %461
  call void @dlaset_(ptr noundef nonnull @.str.9, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b13, ptr noundef nonnull @c_b12, ptr noundef %462, ptr noundef nonnull %3) #4
  %463 = load i32, ptr %18, align 4, !tbaa !5
  store i32 %463, ptr %13, align 4, !tbaa !5
  %.not672747 = icmp slt i32 %463, 1
  br i1 %.not672747, label %.loopexit697, label %.lr.ph750

.lr.ph750:                                        ; preds = %455, %521
  %.4748 = phi i32 [ %522, %521 ], [ 1, %455 ]
  %464 = load i32, ptr %19, align 4, !tbaa !5
  %465 = mul nsw i32 %464, %.pre864
  %466 = add nsw i32 %465, %.4748
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds i32, ptr %24, i64 %467
  %469 = load i32, ptr %468, align 4, !tbaa !5
  %470 = add nsw i32 %469, %465
  store i32 %470, ptr %468, align 4, !tbaa !5
  %.not673 = icmp eq i32 %.4748, %469
  br i1 %.not673, label %521, label %471

471:                                              ; preds = %.lr.ph750
  %472 = add nsw i32 %.4748, -1
  store i32 %472, ptr %14, align 4, !tbaa !5
  %473 = add nsw i32 %465, 1
  %474 = mul nsw i32 %466, %20
  %475 = add nsw i32 %474, %473
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds double, ptr %22, i64 %476
  %478 = mul nsw i32 %470, %20
  %479 = add nsw i32 %478, %473
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds double, ptr %22, i64 %480
  call void @dswap_(ptr noundef nonnull %14, ptr noundef %477, ptr noundef nonnull @c__1, ptr noundef %481, ptr noundef nonnull @c__1) #4
  %482 = add nsw i32 %466, 1
  %483 = icmp sgt i32 %470, %482
  br i1 %483, label %484, label %494

484:                                              ; preds = %471
  %485 = xor i32 %466, -1
  %486 = add i32 %470, %485
  store i32 %486, ptr %14, align 4, !tbaa !5
  %487 = mul nsw i32 %482, %20
  %488 = add nsw i32 %487, %466
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds double, ptr %22, i64 %489
  %491 = add nsw i32 %482, %478
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds double, ptr %22, i64 %492
  call void @dswap_(ptr noundef nonnull %14, ptr noundef %490, ptr noundef nonnull %3, ptr noundef %493, ptr noundef nonnull @c__1) #4
  br label %494

494:                                              ; preds = %484, %471
  %495 = load i32, ptr %1, align 4, !tbaa !5
  %496 = icmp slt i32 %470, %495
  br i1 %496, label %497, label %507

497:                                              ; preds = %494
  %498 = sub nsw i32 %495, %470
  store i32 %498, ptr %14, align 4, !tbaa !5
  %499 = add nsw i32 %470, 1
  %500 = mul nsw i32 %499, %20
  %501 = add nsw i32 %500, %466
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds double, ptr %22, i64 %502
  %504 = add nsw i32 %500, %470
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds double, ptr %22, i64 %505
  call void @dswap_(ptr noundef nonnull %14, ptr noundef %503, ptr noundef nonnull %3, ptr noundef %506, ptr noundef nonnull %3) #4
  br label %507

507:                                              ; preds = %497, %494
  %508 = add nsw i32 %474, %466
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds double, ptr %22, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !9
  %512 = add nsw i32 %478, %470
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds double, ptr %22, i64 %513
  %515 = load double, ptr %514, align 8, !tbaa !9
  store double %515, ptr %510, align 8, !tbaa !9
  store double %511, ptr %514, align 8, !tbaa !9
  br i1 %.not666685, label %521, label %516

516:                                              ; preds = %507
  %517 = load i32, ptr %19, align 4, !tbaa !5
  %518 = mul nsw i32 %517, %.1623764
  store i32 %518, ptr %14, align 4, !tbaa !5
  %519 = sext i32 %474 to i64
  %gep744 = getelementptr double, ptr %invariant.gep751, i64 %519
  %520 = sext i32 %478 to i64
  %gep746 = getelementptr double, ptr %invariant.gep751, i64 %520
  call void @dswap_(ptr noundef nonnull %14, ptr noundef %gep744, ptr noundef nonnull @c__1, ptr noundef %gep746, ptr noundef nonnull @c__1) #4
  br label %521

521:                                              ; preds = %.lr.ph750, %516, %507
  %522 = add nuw nsw i32 %.4748, 1
  %523 = load i32, ptr %13, align 4, !tbaa !5
  %.not672.not = icmp slt i32 %.4748, %523
  br i1 %.not672.not, label %.lr.ph750, label %.loopexit697, !llvm.loop !24

.loopexit697:                                     ; preds = %521, %455
  br i1 %274, label %110, label %.loopexit695, !llvm.loop !25

524:                                              ; preds = %._crit_edge
  %.not651804 = icmp slt i32 %87, 1
  br i1 %.not651804, label %.loopexit695, label %.lr.ph809

.lr.ph809:                                        ; preds = %524
  %525 = or disjoint i32 %88, 1
  %526 = add i32 %20, 1
  %527 = add nsw i32 %71, -1
  %528 = add nsw i32 %71, -1
  %529 = add nsw i32 %71, -1
  %530 = add nsw i32 %71, -1
  %531 = add nsw i32 %71, -1
  %532 = add nsw i32 %71, -1
  %533 = add nsw i32 %71, -1
  %534 = add nsw i32 %71, -1
  %535 = add nsw i32 %71, -1
  br label %536

536:                                              ; preds = %.lr.ph809, %.loopexit694
  %.2624805 = phi i32 [ 0, %.lr.ph809 ], [ %.pre-phi859, %.loopexit694 ]
  %537 = load i32, ptr %19, align 4, !tbaa !5
  %538 = load i32, ptr %1, align 4, !tbaa !5
  %539 = mul nsw i32 %537, %.2624805
  %540 = sub nsw i32 %538, %539
  store i32 %540, ptr %14, align 4, !tbaa !5
  %541 = call i32 @llvm.smin.i32(i32 %537, i32 %540)
  store i32 %541, ptr %18, align 4, !tbaa !5
  %542 = add nsw i32 %.2624805, -1
  store i32 %542, ptr %13, align 4, !tbaa !5
  %.not653772 = icmp ult i32 %.2624805, 2
  br i1 %.not653772, label %._crit_edge776, label %.lr.ph775

.lr.ph775:                                        ; preds = %536
  %543 = icmp eq i32 %542, 1
  %544 = shl i32 %537, 1
  %545 = add nsw i32 %541, %537
  %storemerge662.peel = select i1 %543, i32 %545, i32 %544
  store i32 %storemerge662.peel, ptr %17, align 4, !tbaa !5
  store i32 %527, ptr %14, align 4, !tbaa !5
  %546 = mul nsw i32 %537, %71
  %547 = add nsw i32 %525, %546
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds double, ptr %23, i64 %548
  %550 = add i32 %526, %539
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %22, i64 %551
  %553 = sext i32 %537 to i64
  %gep771.peel = getelementptr double, ptr %8, i64 %553
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef nonnull %17, ptr noundef nonnull @c_b12, ptr noundef nonnull %549, ptr noundef nonnull %14, ptr noundef %552, ptr noundef nonnull %3, ptr noundef nonnull @c_b13, ptr noundef %gep771.peel, ptr noundef nonnull %1) #4
  %.pre849 = load i32, ptr %13, align 4, !tbaa !5
  %.not653.not.peel = icmp sgt i32 %.pre849, 1
  br i1 %.not653.not.peel, label %.peel.next829, label %._crit_edge776.loopexit

.peel.next829:                                    ; preds = %.lr.ph775, %.peel.next829
  %.3628773 = phi i32 [ %578, %.peel.next829 ], [ 2, %.lr.ph775 ]
  %554 = icmp eq i32 %.3628773, %542
  %555 = load i32, ptr %19, align 4, !tbaa !5
  %556 = mul nsw i32 %555, 3
  %557 = shl i32 %555, 1
  %558 = load i32, ptr %18, align 4
  %559 = add nsw i32 %557, %558
  %storemerge = select i1 %554, i32 %559, i32 %556
  store i32 %storemerge, ptr %17, align 4, !tbaa !5
  store i32 %528, ptr %14, align 4, !tbaa !5
  %560 = add nsw i32 %.3628773, -1
  %561 = mul i32 %71, %560
  %562 = mul i32 %561, %555
  %563 = add i32 %525, %555
  %564 = add nsw i32 %563, %562
  %565 = sext i32 %564 to i64
  %566 = getelementptr inbounds double, ptr %23, i64 %565
  %567 = mul nsw i32 %555, %.2624805
  %568 = add nsw i32 %567, 1
  %569 = add nsw i32 %.3628773, -2
  %570 = mul nsw i32 %555, %569
  %571 = add nsw i32 %570, 1
  %572 = mul nsw i32 %571, %20
  %573 = add nsw i32 %568, %572
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds double, ptr %22, i64 %574
  %576 = mul nsw i32 %555, %.3628773
  %577 = sext i32 %576 to i64
  %gep769 = getelementptr double, ptr %8, i64 %577
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef nonnull %17, ptr noundef nonnull @c_b12, ptr noundef nonnull %566, ptr noundef nonnull %14, ptr noundef %575, ptr noundef nonnull %3, ptr noundef nonnull @c_b13, ptr noundef %gep769, ptr noundef nonnull %1) #4
  %.pre850 = load i32, ptr %13, align 4, !tbaa !5
  %578 = add nuw nsw i32 %.3628773, 1
  %.not653.not = icmp slt i32 %.3628773, %.pre850
  br i1 %.not653.not, label %.peel.next829, label %._crit_edge776.loopexit, !llvm.loop !26

._crit_edge776.loopexit:                          ; preds = %.peel.next829, %.lr.ph775
  %.pre851 = load i32, ptr %19, align 4, !tbaa !5
  %.pre852 = mul nsw i32 %.pre851, %.2624805
  br label %._crit_edge776

._crit_edge776:                                   ; preds = %._crit_edge776.loopexit, %536
  %.pre-phi = phi i32 [ %.pre852, %._crit_edge776.loopexit ], [ %539, %536 ]
  store i32 %529, ptr %13, align 4, !tbaa !5
  %579 = add nsw i32 %.pre-phi, 1
  %580 = mul i32 %579, %526
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds double, ptr %22, i64 %581
  %583 = mul nsw i32 %.pre-phi, %71
  %584 = add nsw i32 %583, %525
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds double, ptr %23, i64 %585
  call void @dlacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef %582, ptr noundef nonnull %3, ptr noundef nonnull %586, ptr noundef nonnull %13) #4
  %587 = icmp ugt i32 %.2624805, 1
  br i1 %587, label %.thread686, label %627

.thread686:                                       ; preds = %._crit_edge776
  %588 = load i32, ptr %19, align 4, !tbaa !5
  %589 = mul nsw i32 %588, %542
  store i32 %589, ptr %13, align 4, !tbaa !5
  store i32 %529, ptr %14, align 4, !tbaa !5
  %590 = mul nsw i32 %588, %.2624805
  %591 = add i32 %526, %590
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %22, i64 %592
  %594 = sext i32 %588 to i64
  %gep801 = getelementptr double, ptr %8, i64 %594
  %595 = mul nsw i32 %71, %590
  %596 = add nsw i32 %595, %525
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds double, ptr %23, i64 %597
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull %13, ptr noundef nonnull @c_b21, ptr noundef %593, ptr noundef nonnull %3, ptr noundef %gep801, ptr noundef nonnull %1, ptr noundef nonnull @c_b12, ptr noundef nonnull %598, ptr noundef nonnull %14) #4
  store i32 %529, ptr %13, align 4, !tbaa !5
  %599 = load i32, ptr %19, align 4, !tbaa !5
  %600 = mul nsw i32 %599, %.2624805
  %601 = add nsw i32 %600, 1
  %602 = mul nsw i32 %599, %542
  %603 = add nsw i32 %602, 1
  %604 = mul nsw i32 %603, %20
  %605 = add nsw i32 %601, %604
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds double, ptr %22, i64 %606
  %608 = mul nsw i32 %602, %71
  %609 = add i32 %525, %599
  %610 = add nsw i32 %609, %608
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds double, ptr %23, i64 %611
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef nonnull @c_b12, ptr noundef %607, ptr noundef nonnull %3, ptr noundef nonnull %612, ptr noundef nonnull %13, ptr noundef nonnull @c_b13, ptr noundef %8, ptr noundef nonnull %1) #4
  store i32 %529, ptr %13, align 4, !tbaa !5
  %613 = load i32, ptr %19, align 4, !tbaa !5
  %614 = mul nsw i32 %613, %.2624805
  %615 = add nsw i32 %614, 1
  %616 = add nsw i32 %.2624805, -2
  %617 = mul nsw i32 %613, %616
  %618 = add nsw i32 %617, 1
  %619 = mul nsw i32 %618, %20
  %620 = add nsw i32 %615, %619
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds double, ptr %22, i64 %621
  %623 = mul nsw i32 %614, %71
  %624 = add nsw i32 %623, %525
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds double, ptr %23, i64 %625
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b21, ptr noundef %8, ptr noundef nonnull %1, ptr noundef %622, ptr noundef nonnull %3, ptr noundef nonnull @c_b12, ptr noundef nonnull %626, ptr noundef nonnull %13) #4
  br label %628

627:                                              ; preds = %._crit_edge776
  %.not654 = icmp eq i32 %.2624805, 0
  br i1 %.not654, label %642, label %628

628:                                              ; preds = %.thread686, %627
  store i32 %530, ptr %13, align 4, !tbaa !5
  %629 = load i32, ptr %19, align 4, !tbaa !5
  %630 = mul nsw i32 %629, %.2624805
  %631 = mul nsw i32 %630, %71
  %632 = add nsw i32 %631, %525
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds double, ptr %23, i64 %633
  %635 = add nsw i32 %630, 1
  %636 = mul nsw i32 %629, %542
  %637 = add nsw i32 %636, 1
  %638 = mul nsw i32 %637, %20
  %639 = add nsw i32 %635, %638
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds double, ptr %22, i64 %640
  call void @dsygst_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.9, ptr noundef nonnull %18, ptr noundef nonnull %634, ptr noundef nonnull %13, ptr noundef %641, ptr noundef nonnull %3, ptr noundef nonnull %16) #4
  br label %642

642:                                              ; preds = %628, %627
  %.not654689 = phi i1 [ false, %628 ], [ true, %627 ]
  %643 = load i32, ptr %18, align 4, !tbaa !5
  store i32 %643, ptr %13, align 4, !tbaa !5
  %.not655781 = icmp slt i32 %643, 1
  br i1 %.not655781, label %699, label %.lr.ph784

.lr.ph784:                                        ; preds = %642
  %644 = load i32, ptr %19, align 4
  %645 = mul nsw i32 %644, %.2624805
  %646 = add nuw i32 %643, 1
  %647 = add nuw i32 %643, 1
  %648 = add nsw i32 %643, -2
  br label %649

.loopexit:                                        ; preds = %.prol.loopexit880, %.lr.ph780.new, %649
  %indvars.iv.next832 = add nuw i32 %indvars.iv831, 1
  %exitcond838.not = icmp eq i32 %indvars.iv831, %647
  %indvar.next882 = add i32 %indvar881, 1
  br i1 %exitcond838.not, label %._crit_edge785, label %649, !llvm.loop !27

649:                                              ; preds = %.lr.ph784, %.loopexit
  %indvar881 = phi i32 [ 0, %.lr.ph784 ], [ %indvar.next882, %.loopexit ]
  %indvars.iv831 = phi i32 [ 2, %.lr.ph784 ], [ %indvars.iv.next832, %.loopexit ]
  %.4629782 = phi i32 [ 1, %.lr.ph784 ], [ %650, %.loopexit ]
  %650 = add nuw nsw i32 %.4629782, 1
  %.not661777.not = icmp slt i32 %.4629782, %643
  br i1 %.not661777.not, label %.lr.ph780, label %.loopexit

.lr.ph780:                                        ; preds = %649
  %651 = zext i32 %indvars.iv831 to i64
  %652 = add nsw i32 %.4629782, -1
  %653 = add i32 %652, %645
  %654 = mul nsw i32 %653, %71
  %655 = sub i32 %525, %.4629782
  %.neg = add i32 %650, %88
  %656 = sub i32 %indvar881, %643
  %657 = and i32 %656, 1
  %lcmp.mod884.not.not = icmp eq i32 %657, 0
  br i1 %lcmp.mod884.not.not, label %.prol.loopexit880.unr-lcssa, label %.prol.loopexit880

.prol.loopexit880.unr-lcssa:                      ; preds = %.lr.ph780
  %658 = add i32 %655, %indvars.iv831
  %659 = add nsw i32 %658, %654
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %23, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !9
  %663 = add i32 %indvars.iv831, -1
  %664 = add i32 %663, %645
  %665 = mul nsw i32 %664, %71
  %666 = sub i32 %.neg, %indvars.iv831
  %667 = add nsw i32 %666, %665
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds double, ptr %23, i64 %668
  store double %662, ptr %669, align 8, !tbaa !9
  %indvars.iv.next834.prol = add nuw nsw i64 %651, 1
  br label %.prol.loopexit880

.prol.loopexit880:                                ; preds = %.prol.loopexit880.unr-lcssa, %.lr.ph780
  %indvars.iv833.unr = phi i64 [ %651, %.lr.ph780 ], [ %indvars.iv.next834.prol, %.prol.loopexit880.unr-lcssa ]
  %670 = icmp eq i32 %648, %indvar881
  br i1 %670, label %.loopexit, label %.lr.ph780.new

.lr.ph780.new:                                    ; preds = %.prol.loopexit880, %.lr.ph780.new
  %indvars.iv833 = phi i64 [ %indvars.iv.next834.1, %.lr.ph780.new ], [ %indvars.iv833.unr, %.prol.loopexit880 ]
  %671 = trunc i64 %indvars.iv833 to i32
  %672 = add i32 %655, %671
  %673 = add nsw i32 %672, %654
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %23, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !9
  %677 = trunc i64 %indvars.iv833 to i32
  %678 = add i32 %677, -1
  %679 = add i32 %678, %645
  %680 = mul nsw i32 %679, %71
  %681 = sub i32 %.neg, %671
  %682 = add nsw i32 %681, %680
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds double, ptr %23, i64 %683
  store double %676, ptr %684, align 8, !tbaa !9
  %indvars.iv.next834 = add nuw nsw i64 %indvars.iv833, 1
  %685 = trunc i64 %indvars.iv.next834 to i32
  %686 = add i32 %655, %685
  %687 = add nsw i32 %686, %654
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds double, ptr %23, i64 %688
  %690 = load double, ptr %689, align 8, !tbaa !9
  %691 = trunc i64 %indvars.iv.next834 to i32
  %692 = add i32 %691, -1
  %693 = add i32 %692, %645
  %694 = mul nsw i32 %693, %71
  %695 = sub i32 %.neg, %685
  %696 = add nsw i32 %695, %694
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %23, i64 %697
  store double %690, ptr %698, align 8, !tbaa !9
  %indvars.iv.next834.1 = add nuw nsw i64 %indvars.iv833, 2
  %lftr.wideiv836.1 = trunc i64 %indvars.iv.next834.1 to i32
  %exitcond837.not.1 = icmp eq i32 %646, %lftr.wideiv836.1
  br i1 %exitcond837.not.1, label %.loopexit, label %.lr.ph780.new, !llvm.loop !28

._crit_edge785:                                   ; preds = %.loopexit
  store i32 %643, ptr %14, align 4, !tbaa !5
  br label %699

699:                                              ; preds = %._crit_edge785, %642
  %700 = icmp slt i32 %.2624805, %97
  br i1 %700, label %701, label %.loopexit695

701:                                              ; preds = %699
  br i1 %.not654689, label %._crit_edge857, label %702

._crit_edge857:                                   ; preds = %701
  %.pre858 = add nuw nsw i32 %.2624805, 1
  br label %753

702:                                              ; preds = %701
  %703 = icmp eq i32 %.2624805, 1
  br i1 %703, label %704, label %716

704:                                              ; preds = %702
  store i32 %532, ptr %13, align 4, !tbaa !5
  %705 = load i32, ptr %19, align 4, !tbaa !5
  %706 = mul nsw i32 %705, %71
  %707 = add nsw i32 %706, %525
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %23, i64 %708
  %710 = add nsw i32 %705, 1
  %711 = add nsw i32 %710, %20
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds double, ptr %22, i64 %712
  %714 = sext i32 %710 to i64
  %715 = getelementptr inbounds double, ptr %25, i64 %714
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull @c_b12, ptr noundef nonnull %709, ptr noundef nonnull %13, ptr noundef %713, ptr noundef nonnull %3, ptr noundef nonnull @c_b13, ptr noundef nonnull %715, ptr noundef nonnull %1) #4
  br label %736

716:                                              ; preds = %702
  %717 = load i32, ptr %19, align 4, !tbaa !5
  %718 = add nsw i32 %717, %643
  store i32 %718, ptr %13, align 4, !tbaa !5
  store i32 %531, ptr %14, align 4, !tbaa !5
  %719 = mul nsw i32 %717, %542
  %720 = mul nsw i32 %719, %71
  %721 = add i32 %525, %717
  %722 = add nsw i32 %721, %720
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds double, ptr %23, i64 %723
  %725 = mul nsw i32 %717, %.2624805
  %726 = add nsw i32 %725, 1
  %727 = add nsw i32 %.2624805, -2
  %728 = mul nsw i32 %717, %727
  %729 = add nsw i32 %728, 1
  %730 = mul nsw i32 %729, %20
  %731 = add nsw i32 %730, %726
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds double, ptr %22, i64 %732
  %734 = sext i32 %726 to i64
  %735 = getelementptr inbounds double, ptr %25, i64 %734
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.5, ptr noundef nonnull %18, ptr noundef nonnull %18, ptr noundef nonnull %13, ptr noundef nonnull @c_b12, ptr noundef nonnull %724, ptr noundef nonnull %14, ptr noundef %733, ptr noundef nonnull %3, ptr noundef nonnull @c_b13, ptr noundef nonnull %735, ptr noundef nonnull %1) #4
  br label %736

736:                                              ; preds = %716, %704
  %737 = load i32, ptr %1, align 4, !tbaa !5
  %738 = add nuw nsw i32 %.2624805, 1
  %739 = load i32, ptr %19, align 4, !tbaa !5
  %740 = mul nsw i32 %739, %738
  %741 = sub nsw i32 %737, %740
  store i32 %741, ptr %13, align 4, !tbaa !5
  %742 = mul nsw i32 %739, %.2624805
  store i32 %742, ptr %14, align 4, !tbaa !5
  %743 = add nsw i32 %740, 1
  %744 = add nsw i32 %743, %20
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds double, ptr %22, i64 %745
  %747 = sext i32 %739 to i64
  %gep803 = getelementptr double, ptr %8, i64 %747
  %748 = add nsw i32 %742, 1
  %749 = mul nsw i32 %748, %20
  %750 = add nsw i32 %749, %743
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds double, ptr %22, i64 %751
  call void @dgemm_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.3, ptr noundef nonnull %13, ptr noundef nonnull %19, ptr noundef nonnull %14, ptr noundef nonnull @c_b21, ptr noundef %746, ptr noundef nonnull %3, ptr noundef %gep803, ptr noundef nonnull %1, ptr noundef nonnull @c_b12, ptr noundef %752, ptr noundef nonnull %3) #4
  br label %753

753:                                              ; preds = %._crit_edge857, %736
  %.pre-phi859 = phi i32 [ %.pre858, %._crit_edge857 ], [ %738, %736 ]
  %754 = load i32, ptr %1, align 4, !tbaa !5
  %755 = load i32, ptr %19, align 4, !tbaa !5
  %756 = mul nsw i32 %755, %.pre-phi859
  %757 = sub nsw i32 %754, %756
  store i32 %757, ptr %13, align 4, !tbaa !5
  %758 = add nsw i32 %756, 1
  %759 = mul nsw i32 %755, %.2624805
  %760 = add nsw i32 %759, 1
  %761 = mul nsw i32 %760, %20
  %762 = add nsw i32 %761, %758
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds double, ptr %22, i64 %763
  %765 = sext i32 %758 to i64
  %766 = getelementptr inbounds i32, ptr %24, i64 %765
  %767 = call i32 @dgetrf_(ptr noundef nonnull %13, ptr noundef nonnull %19, ptr noundef %764, ptr noundef nonnull %3, ptr noundef nonnull %766, ptr noundef nonnull %16) #4
  %768 = load i32, ptr %19, align 4, !tbaa !5
  %769 = load i32, ptr %1, align 4, !tbaa !5
  %770 = mul nsw i32 %768, %.pre-phi859
  %771 = sub nsw i32 %769, %770
  store i32 %771, ptr %14, align 4, !tbaa !5
  %772 = call i32 @llvm.smin.i32(i32 %768, i32 %771)
  store i32 %772, ptr %18, align 4, !tbaa !5
  store i32 %533, ptr %13, align 4, !tbaa !5
  %773 = mul nsw i32 %768, %.2624805
  %774 = mul nsw i32 %773, %71
  %775 = add i32 %525, %768
  %776 = add nsw i32 %775, %774
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %23, i64 %777
  call void @dlaset_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b13, ptr noundef nonnull @c_b13, ptr noundef nonnull %778, ptr noundef nonnull %13) #4
  store i32 %534, ptr %13, align 4, !tbaa !5
  %779 = load i32, ptr %19, align 4, !tbaa !5
  %780 = mul nsw i32 %779, %.pre-phi859
  %781 = add nsw i32 %780, 1
  %782 = mul nsw i32 %779, %.2624805
  %783 = add nsw i32 %782, 1
  %784 = mul nsw i32 %783, %20
  %785 = add nsw i32 %781, %784
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %22, i64 %786
  %788 = mul nsw i32 %782, %71
  %789 = add i32 %525, %779
  %790 = add nsw i32 %789, %788
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %23, i64 %791
  call void @dlacpy_(ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %787, ptr noundef nonnull %3, ptr noundef nonnull %792, ptr noundef nonnull %13) #4
  br i1 %.not654689, label %808, label %793

793:                                              ; preds = %753
  store i32 %535, ptr %13, align 4, !tbaa !5
  %794 = load i32, ptr %19, align 4, !tbaa !5
  %795 = mul nsw i32 %794, %.2624805
  %796 = add nsw i32 %795, 1
  %797 = mul nsw i32 %794, %542
  %798 = add nsw i32 %797, 1
  %799 = mul nsw i32 %798, %20
  %800 = add nsw i32 %796, %799
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds double, ptr %22, i64 %801
  %803 = mul nsw i32 %795, %71
  %804 = add i32 %525, %794
  %805 = add nsw i32 %804, %803
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds double, ptr %23, i64 %806
  call void @dtrsm_(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b12, ptr noundef %802, ptr noundef nonnull %3, ptr noundef nonnull %807, ptr noundef nonnull %13) #4
  br label %808

808:                                              ; preds = %793, %753
  %809 = load i32, ptr %19, align 4, !tbaa !5
  store i32 %809, ptr %13, align 4, !tbaa !5
  %.not657791 = icmp slt i32 %809, 1
  br i1 %.not657791, label %._crit_edge856, label %.lr.ph794

._crit_edge856:                                   ; preds = %808
  %.pre860 = mul nsw i32 %809, %.2624805
  br label %865

.lr.ph794:                                        ; preds = %808
  %810 = load i32, ptr %18, align 4, !tbaa !5
  %.not660786 = icmp slt i32 %810, 1
  %811 = mul nsw i32 %809, %.2624805
  %812 = add i32 %811, -1
  %813 = add i32 %525, %809
  %814 = add nsw i32 %809, -1
  %815 = add i32 %814, %811
  br i1 %.not660786, label %._crit_edge795, label %.lr.ph789.preheader

.lr.ph789.preheader:                              ; preds = %.lr.ph794
  %816 = zext nneg i32 %810 to i64
  %xtraiter886 = and i64 %816, 1
  %817 = icmp eq i32 %810, 1
  %unroll_iter888 = and i64 %816, 2147483646
  %lcmp.mod887.not = icmp eq i64 %xtraiter886, 0
  br label %.lr.ph789

.lr.ph789:                                        ; preds = %.lr.ph789.preheader, %._crit_edge790
  %.6792 = phi i32 [ %864, %._crit_edge790 ], [ 1, %.lr.ph789.preheader ]
  %818 = add i32 %812, %.6792
  %819 = mul nsw i32 %71, %818
  %820 = sub i32 %813, %.6792
  %821 = add i32 %525, %.6792
  br i1 %817, label %._crit_edge790.unr-lcssa, label %.lr.ph789.new

.lr.ph789.new:                                    ; preds = %.lr.ph789, %.lr.ph789.new
  %indvars.iv839 = phi i64 [ %indvars.iv.next840.1, %.lr.ph789.new ], [ 1, %.lr.ph789 ]
  %niter889 = phi i64 [ %niter889.next.1, %.lr.ph789.new ], [ 0, %.lr.ph789 ]
  %822 = trunc nuw nsw i64 %indvars.iv839 to i32
  %823 = add i32 %820, %822
  %824 = add nsw i32 %823, %819
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds double, ptr %23, i64 %825
  %827 = load double, ptr %826, align 8, !tbaa !9
  %828 = add i32 %815, %822
  %829 = mul nsw i32 %71, %828
  %830 = trunc i64 %indvars.iv839 to i32
  %831 = add i32 %809, %830
  %832 = sub i32 %821, %831
  %833 = add nsw i32 %832, %829
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds double, ptr %23, i64 %834
  store double %827, ptr %835, align 8, !tbaa !9
  %indvars.iv.next840 = add nuw nsw i64 %indvars.iv839, 1
  %836 = trunc nuw nsw i64 %indvars.iv.next840 to i32
  %837 = add i32 %820, %836
  %838 = add nsw i32 %837, %819
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds double, ptr %23, i64 %839
  %841 = load double, ptr %840, align 8, !tbaa !9
  %842 = add i32 %815, %836
  %843 = mul nsw i32 %71, %842
  %844 = trunc i64 %indvars.iv.next840 to i32
  %845 = add i32 %809, %844
  %846 = sub i32 %821, %845
  %847 = add nsw i32 %846, %843
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds double, ptr %23, i64 %848
  store double %841, ptr %849, align 8, !tbaa !9
  %indvars.iv.next840.1 = add nuw nsw i64 %indvars.iv839, 2
  %niter889.next.1 = add i64 %niter889, 2
  %niter889.ncmp.1 = icmp eq i64 %niter889.next.1, %unroll_iter888
  br i1 %niter889.ncmp.1, label %._crit_edge790.unr-lcssa, label %.lr.ph789.new, !llvm.loop !29

._crit_edge790.unr-lcssa:                         ; preds = %.lr.ph789.new, %.lr.ph789
  %indvars.iv839.unr = phi i64 [ 1, %.lr.ph789 ], [ %indvars.iv.next840.1, %.lr.ph789.new ]
  br i1 %lcmp.mod887.not, label %._crit_edge790, label %._crit_edge790.epilog-lcssa

._crit_edge790.epilog-lcssa:                      ; preds = %._crit_edge790.unr-lcssa
  %850 = trunc nuw nsw i64 %indvars.iv839.unr to i32
  %851 = add i32 %820, %850
  %852 = add nsw i32 %851, %819
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds double, ptr %23, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !9
  %856 = add i32 %815, %850
  %857 = mul nsw i32 %71, %856
  %858 = trunc i64 %indvars.iv839.unr to i32
  %859 = add i32 %809, %858
  %860 = sub i32 %821, %859
  %861 = add nsw i32 %860, %857
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %23, i64 %862
  store double %855, ptr %863, align 8, !tbaa !9
  br label %._crit_edge790

._crit_edge790:                                   ; preds = %._crit_edge790.unr-lcssa, %._crit_edge790.epilog-lcssa
  %864 = add nuw i32 %.6792, 1
  %exitcond844.not = icmp eq i32 %.6792, %809
  br i1 %exitcond844.not, label %._crit_edge795, label %.lr.ph789, !llvm.loop !30

._crit_edge795:                                   ; preds = %._crit_edge790, %.lr.ph794
  store i32 %810, ptr %14, align 4, !tbaa !5
  br label %865

865:                                              ; preds = %._crit_edge856, %._crit_edge795
  %.pre-phi861 = phi i32 [ %.pre860, %._crit_edge856 ], [ %811, %._crit_edge795 ]
  %866 = mul nsw i32 %809, %.pre-phi859
  %867 = add nsw i32 %866, 1
  %868 = add nsw i32 %.pre-phi861, 1
  %869 = mul nsw i32 %868, %20
  %870 = add nsw i32 %867, %869
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds double, ptr %22, i64 %871
  call void @dlaset_(ptr noundef nonnull @.str.4, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b13, ptr noundef nonnull @c_b12, ptr noundef %872, ptr noundef nonnull %3) #4
  %873 = load i32, ptr %18, align 4, !tbaa !5
  store i32 %873, ptr %13, align 4, !tbaa !5
  %.not658796 = icmp slt i32 %873, 1
  br i1 %.not658796, label %.loopexit694, label %.lr.ph799

.lr.ph799:                                        ; preds = %865, %936
  %.7797 = phi i32 [ %937, %936 ], [ 1, %865 ]
  %874 = load i32, ptr %19, align 4, !tbaa !5
  %875 = mul nsw i32 %874, %.pre-phi859
  %876 = add nsw i32 %875, %.7797
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds i32, ptr %24, i64 %877
  %879 = load i32, ptr %878, align 4, !tbaa !5
  %880 = add nsw i32 %879, %875
  store i32 %880, ptr %878, align 4, !tbaa !5
  %.not659 = icmp eq i32 %.7797, %879
  br i1 %.not659, label %936, label %881

881:                                              ; preds = %.lr.ph799
  %882 = add nsw i32 %.7797, -1
  store i32 %882, ptr %14, align 4, !tbaa !5
  %883 = add nsw i32 %875, 1
  %884 = mul nsw i32 %883, %20
  %885 = add nsw i32 %884, %876
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds double, ptr %22, i64 %886
  %888 = add nsw i32 %884, %880
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds double, ptr %22, i64 %889
  call void @dswap_(ptr noundef nonnull %14, ptr noundef %887, ptr noundef nonnull %3, ptr noundef %890, ptr noundef nonnull %3) #4
  %891 = add nsw i32 %876, 1
  %892 = icmp sgt i32 %880, %891
  br i1 %892, label %893, label %904

893:                                              ; preds = %881
  %894 = xor i32 %876, -1
  %895 = add i32 %880, %894
  store i32 %895, ptr %14, align 4, !tbaa !5
  %896 = mul nsw i32 %876, %20
  %897 = add nsw i32 %891, %896
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds double, ptr %22, i64 %898
  %900 = mul nsw i32 %891, %20
  %901 = add nsw i32 %900, %880
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds double, ptr %22, i64 %902
  call void @dswap_(ptr noundef nonnull %14, ptr noundef %899, ptr noundef nonnull @c__1, ptr noundef %903, ptr noundef nonnull %3) #4
  br label %904

904:                                              ; preds = %893, %881
  %905 = load i32, ptr %1, align 4, !tbaa !5
  %906 = icmp slt i32 %880, %905
  br i1 %906, label %907, label %918

907:                                              ; preds = %904
  %908 = sub nsw i32 %905, %880
  store i32 %908, ptr %14, align 4, !tbaa !5
  %909 = add nsw i32 %880, 1
  %910 = mul nsw i32 %876, %20
  %911 = add nsw i32 %909, %910
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds double, ptr %22, i64 %912
  %914 = mul nsw i32 %880, %20
  %915 = add nsw i32 %909, %914
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds double, ptr %22, i64 %916
  call void @dswap_(ptr noundef nonnull %14, ptr noundef %913, ptr noundef nonnull @c__1, ptr noundef %917, ptr noundef nonnull @c__1) #4
  br label %918

918:                                              ; preds = %907, %904
  %919 = mul i32 %876, %526
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds double, ptr %22, i64 %920
  %922 = load double, ptr %921, align 8, !tbaa !9
  %923 = mul i32 %880, %526
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds double, ptr %22, i64 %924
  %926 = load double, ptr %925, align 8, !tbaa !9
  store double %926, ptr %921, align 8, !tbaa !9
  store double %922, ptr %925, align 8, !tbaa !9
  br i1 %.not654689, label %936, label %927

927:                                              ; preds = %918
  %928 = load i32, ptr %19, align 4, !tbaa !5
  %929 = mul nsw i32 %928, %.2624805
  store i32 %929, ptr %14, align 4, !tbaa !5
  %930 = add nsw i32 %876, %20
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds double, ptr %22, i64 %931
  %933 = add nsw i32 %880, %20
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds double, ptr %22, i64 %934
  call void @dswap_(ptr noundef nonnull %14, ptr noundef %932, ptr noundef nonnull %3, ptr noundef %935, ptr noundef nonnull %3) #4
  br label %936

936:                                              ; preds = %.lr.ph799, %927, %918
  %937 = add nuw nsw i32 %.7797, 1
  %938 = load i32, ptr %13, align 4, !tbaa !5
  %.not658.not = icmp slt i32 %.7797, %938
  br i1 %.not658.not, label %.lr.ph799, label %.loopexit694, !llvm.loop !31

.loopexit694:                                     ; preds = %936, %865
  br i1 %700, label %536, label %.loopexit695, !llvm.loop !32

.loopexit695:                                     ; preds = %273, %.loopexit697, %699, %.loopexit694, %98, %524
  call void @dgbtrf_(ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef nonnull %19, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef %7, ptr noundef nonnull %10) #4
  br label %939

939:                                              ; preds = %.thread680, %66, %65, %.loopexit695, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #4
  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 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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 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 @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

declare void @dtrsm_(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 @dswap_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dgbtrf_(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.umax.i32(i32, i32) #3

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 = { 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, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !12, !14, !13}
!16 = distinct !{!16, !12, !17}
!17 = !{!"llvm.loop.peeled.count", i32 1}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12, !17}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}


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