; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (dtgsyl)

; 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 [7 x i8], align 1
@c__2 = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@c__5 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b14 = external hidden global double, align 8
@c__1 = external hidden global i64, align 8
@c_b51 = external hidden global double, align 8
@c_b52 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @dtgsyl_(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, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21) #0 {
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca i64, align 8
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i64, align 8
  %73 = alloca i64, align 8
  %74 = alloca double, align 8
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca i64, align 8
  %78 = alloca i64, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca i64, align 8
  %83 = alloca i64, align 8
  %84 = alloca i64, align 8
  %85 = alloca i64, align 8
  %86 = alloca i32, align 4
  store ptr %0, ptr %24, align 8, !tbaa !5
  store ptr %1, ptr %25, align 8, !tbaa !5
  store ptr %2, ptr %26, align 8, !tbaa !5
  store ptr %3, ptr %27, align 8, !tbaa !5
  store ptr %4, ptr %28, align 8, !tbaa !5
  store ptr %5, ptr %29, align 8, !tbaa !5
  store ptr %6, ptr %30, align 8, !tbaa !5
  store ptr %7, ptr %31, align 8, !tbaa !5
  store ptr %8, ptr %32, align 8, !tbaa !5
  store ptr %9, ptr %33, align 8, !tbaa !5
  store ptr %10, ptr %34, align 8, !tbaa !5
  store ptr %11, ptr %35, align 8, !tbaa !5
  store ptr %12, ptr %36, align 8, !tbaa !5
  store ptr %13, ptr %37, align 8, !tbaa !5
  store ptr %14, ptr %38, align 8, !tbaa !5
  store ptr %15, ptr %39, align 8, !tbaa !5
  store ptr %16, ptr %40, align 8, !tbaa !5
  store ptr %17, ptr %41, align 8, !tbaa !5
  store ptr %18, ptr %42, align 8, !tbaa !5
  store ptr %19, ptr %43, align 8, !tbaa !5
  store ptr %20, ptr %44, align 8, !tbaa !5
  store ptr %21, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #4
  %87 = load ptr, ptr %29, align 8, !tbaa !5
  %88 = load i64, ptr %87, align 8, !tbaa !9
  store i64 %88, ptr %46, align 8, !tbaa !9
  %89 = load i64, ptr %46, align 8, !tbaa !9
  %90 = add nsw i64 1, %89
  store i64 %90, ptr %47, align 8, !tbaa !9
  %91 = load i64, ptr %47, align 8, !tbaa !9
  %92 = load ptr, ptr %28, align 8, !tbaa !5
  %93 = sub i64 0, %91
  %94 = getelementptr inbounds double, ptr %92, i64 %93
  store ptr %94, ptr %28, align 8, !tbaa !5
  %95 = load ptr, ptr %31, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  store i64 %96, ptr %48, align 8, !tbaa !9
  %97 = load i64, ptr %48, align 8, !tbaa !9
  %98 = add nsw i64 1, %97
  store i64 %98, ptr %49, align 8, !tbaa !9
  %99 = load i64, ptr %49, align 8, !tbaa !9
  %100 = load ptr, ptr %30, align 8, !tbaa !5
  %101 = sub i64 0, %99
  %102 = getelementptr inbounds double, ptr %100, i64 %101
  store ptr %102, ptr %30, align 8, !tbaa !5
  %103 = load ptr, ptr %33, align 8, !tbaa !5
  %104 = load i64, ptr %103, align 8, !tbaa !9
  store i64 %104, ptr %50, align 8, !tbaa !9
  %105 = load i64, ptr %50, align 8, !tbaa !9
  %106 = add nsw i64 1, %105
  store i64 %106, ptr %51, align 8, !tbaa !9
  %107 = load i64, ptr %51, align 8, !tbaa !9
  %108 = load ptr, ptr %32, align 8, !tbaa !5
  %109 = sub i64 0, %107
  %110 = getelementptr inbounds double, ptr %108, i64 %109
  store ptr %110, ptr %32, align 8, !tbaa !5
  %111 = load ptr, ptr %35, align 8, !tbaa !5
  %112 = load i64, ptr %111, align 8, !tbaa !9
  store i64 %112, ptr %52, align 8, !tbaa !9
  %113 = load i64, ptr %52, align 8, !tbaa !9
  %114 = add nsw i64 1, %113
  store i64 %114, ptr %53, align 8, !tbaa !9
  %115 = load i64, ptr %53, align 8, !tbaa !9
  %116 = load ptr, ptr %34, align 8, !tbaa !5
  %117 = sub i64 0, %115
  %118 = getelementptr inbounds double, ptr %116, i64 %117
  store ptr %118, ptr %34, align 8, !tbaa !5
  %119 = load ptr, ptr %37, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  store i64 %120, ptr %54, align 8, !tbaa !9
  %121 = load i64, ptr %54, align 8, !tbaa !9
  %122 = add nsw i64 1, %121
  store i64 %122, ptr %55, align 8, !tbaa !9
  %123 = load i64, ptr %55, align 8, !tbaa !9
  %124 = load ptr, ptr %36, align 8, !tbaa !5
  %125 = sub i64 0, %123
  %126 = getelementptr inbounds double, ptr %124, i64 %125
  store ptr %126, ptr %36, align 8, !tbaa !5
  %127 = load ptr, ptr %39, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  store i64 %128, ptr %56, align 8, !tbaa !9
  %129 = load i64, ptr %56, align 8, !tbaa !9
  %130 = add nsw i64 1, %129
  store i64 %130, ptr %57, align 8, !tbaa !9
  %131 = load i64, ptr %57, align 8, !tbaa !9
  %132 = load ptr, ptr %38, align 8, !tbaa !5
  %133 = sub i64 0, %131
  %134 = getelementptr inbounds double, ptr %132, i64 %133
  store ptr %134, ptr %38, align 8, !tbaa !5
  %135 = load ptr, ptr %42, align 8, !tbaa !5
  %136 = getelementptr inbounds double, ptr %135, i32 -1
  store ptr %136, ptr %42, align 8, !tbaa !5
  %137 = load ptr, ptr %44, align 8, !tbaa !5
  %138 = getelementptr inbounds i64, ptr %137, i32 -1
  store ptr %138, ptr %44, align 8, !tbaa !5
  %139 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 0, ptr %139, align 8, !tbaa !9
  %140 = load ptr, ptr %24, align 8, !tbaa !5
  %141 = call i64 @lsame_(ptr noundef %140, ptr noundef @.str)
  store i64 %141, ptr %83, align 8, !tbaa !9
  %142 = load ptr, ptr %43, align 8, !tbaa !5
  %143 = load i64, ptr %142, align 8, !tbaa !9
  %144 = icmp eq i64 %143, -1
  %145 = zext i1 %144 to i32
  %146 = sext i32 %145 to i64
  store i64 %146, ptr %85, align 8, !tbaa !9
  %147 = load i64, ptr %83, align 8, !tbaa !9
  %148 = icmp ne i64 %147, 0
  br i1 %148, label %155, label %149

149:                                              ; preds = %22
  %150 = load ptr, ptr %24, align 8, !tbaa !5
  %151 = call i64 @lsame_(ptr noundef %150, ptr noundef @.str.1)
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %155, label %153

153:                                              ; preds = %149
  %154 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -1, ptr %154, align 8, !tbaa !9
  br label %170

155:                                              ; preds = %149, %22
  %156 = load i64, ptr %83, align 8, !tbaa !9
  %157 = icmp ne i64 %156, 0
  br i1 %157, label %158, label %169

158:                                              ; preds = %155
  %159 = load ptr, ptr %25, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  %161 = icmp slt i64 %160, 0
  br i1 %161, label %166, label %162

162:                                              ; preds = %158
  %163 = load ptr, ptr %25, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp sgt i64 %164, 4
  br i1 %165, label %166, label %168

166:                                              ; preds = %162, %158
  %167 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -2, ptr %167, align 8, !tbaa !9
  br label %168

168:                                              ; preds = %166, %162
  br label %169

169:                                              ; preds = %168, %155
  br label %170

170:                                              ; preds = %169, %153
  %171 = load ptr, ptr %45, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = icmp eq i64 %172, 0
  br i1 %173, label %174, label %284

174:                                              ; preds = %170
  %175 = load ptr, ptr %26, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = icmp sle i64 %176, 0
  br i1 %177, label %178, label %180

178:                                              ; preds = %174
  %179 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -3, ptr %179, align 8, !tbaa !9
  br label %283

180:                                              ; preds = %174
  %181 = load ptr, ptr %27, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp sle i64 %182, 0
  br i1 %183, label %184, label %186

184:                                              ; preds = %180
  %185 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -4, ptr %185, align 8, !tbaa !9
  br label %282

186:                                              ; preds = %180
  %187 = load ptr, ptr %29, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = load ptr, ptr %26, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp sge i64 1, %190
  br i1 %191, label %192, label %193

192:                                              ; preds = %186
  br label %196

193:                                              ; preds = %186
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  br label %196

196:                                              ; preds = %193, %192
  %197 = phi i64 [ 1, %192 ], [ %195, %193 ]
  %198 = icmp slt i64 %188, %197
  br i1 %198, label %199, label %201

199:                                              ; preds = %196
  %200 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -6, ptr %200, align 8, !tbaa !9
  br label %281

201:                                              ; preds = %196
  %202 = load ptr, ptr %31, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = load ptr, ptr %27, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  %206 = icmp sge i64 1, %205
  br i1 %206, label %207, label %208

207:                                              ; preds = %201
  br label %211

208:                                              ; preds = %201
  %209 = load ptr, ptr %27, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  br label %211

211:                                              ; preds = %208, %207
  %212 = phi i64 [ 1, %207 ], [ %210, %208 ]
  %213 = icmp slt i64 %203, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %211
  %215 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -8, ptr %215, align 8, !tbaa !9
  br label %280

216:                                              ; preds = %211
  %217 = load ptr, ptr %33, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = load ptr, ptr %26, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = icmp sge i64 1, %220
  br i1 %221, label %222, label %223

222:                                              ; preds = %216
  br label %226

223:                                              ; preds = %216
  %224 = load ptr, ptr %26, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %223, %222
  %227 = phi i64 [ 1, %222 ], [ %225, %223 ]
  %228 = icmp slt i64 %218, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %226
  %230 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -10, ptr %230, align 8, !tbaa !9
  br label %279

231:                                              ; preds = %226
  %232 = load ptr, ptr %35, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = load ptr, ptr %26, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  %236 = icmp sge i64 1, %235
  br i1 %236, label %237, label %238

237:                                              ; preds = %231
  br label %241

238:                                              ; preds = %231
  %239 = load ptr, ptr %26, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  br label %241

241:                                              ; preds = %238, %237
  %242 = phi i64 [ 1, %237 ], [ %240, %238 ]
  %243 = icmp slt i64 %233, %242
  br i1 %243, label %244, label %246

244:                                              ; preds = %241
  %245 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -12, ptr %245, align 8, !tbaa !9
  br label %278

246:                                              ; preds = %241
  %247 = load ptr, ptr %37, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = load ptr, ptr %27, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = icmp sge i64 1, %250
  br i1 %251, label %252, label %253

252:                                              ; preds = %246
  br label %256

253:                                              ; preds = %246
  %254 = load ptr, ptr %27, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  br label %256

256:                                              ; preds = %253, %252
  %257 = phi i64 [ 1, %252 ], [ %255, %253 ]
  %258 = icmp slt i64 %248, %257
  br i1 %258, label %259, label %261

259:                                              ; preds = %256
  %260 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -14, ptr %260, align 8, !tbaa !9
  br label %277

261:                                              ; preds = %256
  %262 = load ptr, ptr %39, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = load ptr, ptr %26, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  %266 = icmp sge i64 1, %265
  br i1 %266, label %267, label %268

267:                                              ; preds = %261
  br label %271

268:                                              ; preds = %261
  %269 = load ptr, ptr %26, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  br label %271

271:                                              ; preds = %268, %267
  %272 = phi i64 [ 1, %267 ], [ %270, %268 ]
  %273 = icmp slt i64 %263, %272
  br i1 %273, label %274, label %276

274:                                              ; preds = %271
  %275 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -16, ptr %275, align 8, !tbaa !9
  br label %276

276:                                              ; preds = %274, %271
  br label %277

277:                                              ; preds = %276, %259
  br label %278

278:                                              ; preds = %277, %244
  br label %279

279:                                              ; preds = %278, %229
  br label %280

280:                                              ; preds = %279, %214
  br label %281

281:                                              ; preds = %280, %199
  br label %282

282:                                              ; preds = %281, %184
  br label %283

283:                                              ; preds = %282, %178
  br label %284

284:                                              ; preds = %283, %170
  %285 = load ptr, ptr %45, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  %287 = icmp eq i64 %286, 0
  br i1 %287, label %288, label %333

288:                                              ; preds = %284
  %289 = load i64, ptr %83, align 8, !tbaa !9
  %290 = icmp ne i64 %289, 0
  br i1 %290, label %291, label %317

291:                                              ; preds = %288
  %292 = load ptr, ptr %25, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = icmp eq i64 %293, 1
  br i1 %294, label %299, label %295

295:                                              ; preds = %291
  %296 = load ptr, ptr %25, align 8, !tbaa !5
  %297 = load i64, ptr %296, align 8, !tbaa !9
  %298 = icmp eq i64 %297, 2
  br i1 %298, label %299, label %315

299:                                              ; preds = %295, %291
  store i64 1, ptr %58, align 8, !tbaa !9
  %300 = load ptr, ptr %26, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = shl i64 %301, 1
  %303 = load ptr, ptr %27, align 8, !tbaa !5
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = mul nsw i64 %302, %304
  store i64 %305, ptr %59, align 8, !tbaa !9
  %306 = load i64, ptr %58, align 8, !tbaa !9
  %307 = load i64, ptr %59, align 8, !tbaa !9
  %308 = icmp sge i64 %306, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %299
  %310 = load i64, ptr %58, align 8, !tbaa !9
  br label %313

311:                                              ; preds = %299
  %312 = load i64, ptr %59, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %311, %309
  %314 = phi i64 [ %310, %309 ], [ %312, %311 ]
  store i64 %314, ptr %78, align 8, !tbaa !9
  br label %316

315:                                              ; preds = %295
  store i64 1, ptr %78, align 8, !tbaa !9
  br label %316

316:                                              ; preds = %315, %313
  br label %318

317:                                              ; preds = %288
  store i64 1, ptr %78, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %317, %316
  %319 = load i64, ptr %78, align 8, !tbaa !9
  %320 = sitofp i64 %319 to double
  %321 = load ptr, ptr %42, align 8, !tbaa !5
  %322 = getelementptr inbounds double, ptr %321, i64 1
  store double %320, ptr %322, align 8, !tbaa !11
  %323 = load ptr, ptr %43, align 8, !tbaa !5
  %324 = load i64, ptr %323, align 8, !tbaa !9
  %325 = load i64, ptr %78, align 8, !tbaa !9
  %326 = icmp slt i64 %324, %325
  br i1 %326, label %327, label %332

327:                                              ; preds = %318
  %328 = load i64, ptr %85, align 8, !tbaa !9
  %329 = icmp ne i64 %328, 0
  br i1 %329, label %332, label %330

330:                                              ; preds = %327
  %331 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -20, ptr %331, align 8, !tbaa !9
  br label %332

332:                                              ; preds = %330, %327, %318
  br label %333

333:                                              ; preds = %332, %284
  %334 = load ptr, ptr %45, align 8, !tbaa !5
  %335 = load i64, ptr %334, align 8, !tbaa !9
  %336 = icmp ne i64 %335, 0
  br i1 %336, label %337, label %342

337:                                              ; preds = %333
  %338 = load ptr, ptr %45, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  %340 = sub nsw i64 0, %339
  store i64 %340, ptr %58, align 8, !tbaa !9
  %341 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %58)
  store i32 0, ptr %23, align 4
  store i32 1, ptr %86, align 4
  br label %1586

342:                                              ; preds = %333
  %343 = load i64, ptr %85, align 8, !tbaa !9
  %344 = icmp ne i64 %343, 0
  br i1 %344, label %345, label %346

345:                                              ; preds = %342
  store i32 0, ptr %23, align 4
  store i32 1, ptr %86, align 4
  br label %1586

346:                                              ; preds = %342
  br label %347

347:                                              ; preds = %346
  %348 = load ptr, ptr %26, align 8, !tbaa !5
  %349 = load i64, ptr %348, align 8, !tbaa !9
  %350 = icmp eq i64 %349, 0
  br i1 %350, label %355, label %351

351:                                              ; preds = %347
  %352 = load ptr, ptr %27, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  %354 = icmp eq i64 %353, 0
  br i1 %354, label %355, label %367

355:                                              ; preds = %351, %347
  %356 = load ptr, ptr %40, align 8, !tbaa !5
  store double 1.000000e+00, ptr %356, align 8, !tbaa !11
  %357 = load i64, ptr %83, align 8, !tbaa !9
  %358 = icmp ne i64 %357, 0
  br i1 %358, label %359, label %366

359:                                              ; preds = %355
  %360 = load ptr, ptr %25, align 8, !tbaa !5
  %361 = load i64, ptr %360, align 8, !tbaa !9
  %362 = icmp ne i64 %361, 0
  br i1 %362, label %363, label %365

363:                                              ; preds = %359
  %364 = load ptr, ptr %41, align 8, !tbaa !5
  store double 0.000000e+00, ptr %364, align 8, !tbaa !11
  br label %365

365:                                              ; preds = %363, %359
  br label %366

366:                                              ; preds = %365, %355
  store i32 0, ptr %23, align 4
  store i32 1, ptr %86, align 4
  br label %1586

367:                                              ; preds = %351
  %368 = load ptr, ptr %24, align 8, !tbaa !5
  %369 = load ptr, ptr %26, align 8, !tbaa !5
  %370 = load ptr, ptr %27, align 8, !tbaa !5
  %371 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.2, ptr noundef %368, ptr noundef %369, ptr noundef %370, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %371, ptr %69, align 8, !tbaa !9
  %372 = load ptr, ptr %24, align 8, !tbaa !5
  %373 = load ptr, ptr %26, align 8, !tbaa !5
  %374 = load ptr, ptr %27, align 8, !tbaa !5
  %375 = call i64 @ilaenv_(ptr noundef @c__5, ptr noundef @.str.2, ptr noundef %372, ptr noundef %373, ptr noundef %374, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %375, ptr %70, align 8, !tbaa !9
  store i64 1, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %76, align 8, !tbaa !9
  %376 = load i64, ptr %83, align 8, !tbaa !9
  %377 = icmp ne i64 %376, 0
  br i1 %377, label %378, label %407

378:                                              ; preds = %367
  %379 = load ptr, ptr %25, align 8, !tbaa !5
  %380 = load i64, ptr %379, align 8, !tbaa !9
  %381 = icmp sge i64 %380, 3
  br i1 %381, label %382, label %400

382:                                              ; preds = %378
  %383 = load ptr, ptr %25, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = sub nsw i64 %384, 2
  store i64 %385, ptr %76, align 8, !tbaa !9
  %386 = load ptr, ptr %26, align 8, !tbaa !5
  %387 = load ptr, ptr %27, align 8, !tbaa !5
  %388 = load ptr, ptr %32, align 8, !tbaa !5
  %389 = load i64, ptr %51, align 8, !tbaa !9
  %390 = getelementptr inbounds double, ptr %388, i64 %389
  %391 = load ptr, ptr %33, align 8, !tbaa !5
  %392 = call i32 @dlaset_(ptr noundef @.str.3, ptr noundef %386, ptr noundef %387, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %390, ptr noundef %391)
  %393 = load ptr, ptr %26, align 8, !tbaa !5
  %394 = load ptr, ptr %27, align 8, !tbaa !5
  %395 = load ptr, ptr %38, align 8, !tbaa !5
  %396 = load i64, ptr %57, align 8, !tbaa !9
  %397 = getelementptr inbounds double, ptr %395, i64 %396
  %398 = load ptr, ptr %39, align 8, !tbaa !5
  %399 = call i32 @dlaset_(ptr noundef @.str.3, ptr noundef %393, ptr noundef %394, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %397, ptr noundef %398)
  br label %406

400:                                              ; preds = %378
  %401 = load ptr, ptr %25, align 8, !tbaa !5
  %402 = load i64, ptr %401, align 8, !tbaa !9
  %403 = icmp sge i64 %402, 1
  br i1 %403, label %404, label %405

404:                                              ; preds = %400
  store i64 2, ptr %84, align 8, !tbaa !9
  br label %405

405:                                              ; preds = %404, %400
  br label %406

406:                                              ; preds = %405, %382
  br label %407

407:                                              ; preds = %406, %367
  %408 = load i64, ptr %69, align 8, !tbaa !9
  %409 = icmp sle i64 %408, 1
  br i1 %409, label %410, label %413

410:                                              ; preds = %407
  %411 = load i64, ptr %70, align 8, !tbaa !9
  %412 = icmp sle i64 %411, 1
  br i1 %412, label %423, label %413

413:                                              ; preds = %410, %407
  %414 = load i64, ptr %69, align 8, !tbaa !9
  %415 = load ptr, ptr %26, align 8, !tbaa !5
  %416 = load i64, ptr %415, align 8, !tbaa !9
  %417 = icmp sge i64 %414, %416
  br i1 %417, label %418, label %594

418:                                              ; preds = %413
  %419 = load i64, ptr %70, align 8, !tbaa !9
  %420 = load ptr, ptr %27, align 8, !tbaa !5
  %421 = load i64, ptr %420, align 8, !tbaa !9
  %422 = icmp sge i64 %419, %421
  br i1 %422, label %423, label %594

423:                                              ; preds = %418, %410
  %424 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %424, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  br label %425

425:                                              ; preds = %590, %423
  %426 = load i64, ptr %82, align 8, !tbaa !9
  %427 = load i64, ptr %58, align 8, !tbaa !9
  %428 = icmp sle i64 %426, %427
  br i1 %428, label %429, label %593

429:                                              ; preds = %425
  store double 0.000000e+00, ptr %80, align 8, !tbaa !11
  store double 1.000000e+00, ptr %74, align 8, !tbaa !11
  store i64 0, ptr %73, align 8, !tbaa !9
  %430 = load ptr, ptr %24, align 8, !tbaa !5
  %431 = load ptr, ptr %26, align 8, !tbaa !5
  %432 = load ptr, ptr %27, align 8, !tbaa !5
  %433 = load ptr, ptr %28, align 8, !tbaa !5
  %434 = load i64, ptr %47, align 8, !tbaa !9
  %435 = getelementptr inbounds double, ptr %433, i64 %434
  %436 = load ptr, ptr %29, align 8, !tbaa !5
  %437 = load ptr, ptr %30, align 8, !tbaa !5
  %438 = load i64, ptr %49, align 8, !tbaa !9
  %439 = getelementptr inbounds double, ptr %437, i64 %438
  %440 = load ptr, ptr %31, align 8, !tbaa !5
  %441 = load ptr, ptr %32, align 8, !tbaa !5
  %442 = load i64, ptr %51, align 8, !tbaa !9
  %443 = getelementptr inbounds double, ptr %441, i64 %442
  %444 = load ptr, ptr %33, align 8, !tbaa !5
  %445 = load ptr, ptr %34, align 8, !tbaa !5
  %446 = load i64, ptr %53, align 8, !tbaa !9
  %447 = getelementptr inbounds double, ptr %445, i64 %446
  %448 = load ptr, ptr %35, align 8, !tbaa !5
  %449 = load ptr, ptr %36, align 8, !tbaa !5
  %450 = load i64, ptr %55, align 8, !tbaa !9
  %451 = getelementptr inbounds double, ptr %449, i64 %450
  %452 = load ptr, ptr %37, align 8, !tbaa !5
  %453 = load ptr, ptr %38, align 8, !tbaa !5
  %454 = load i64, ptr %57, align 8, !tbaa !9
  %455 = getelementptr inbounds double, ptr %453, i64 %454
  %456 = load ptr, ptr %39, align 8, !tbaa !5
  %457 = load ptr, ptr %40, align 8, !tbaa !5
  %458 = load ptr, ptr %44, align 8, !tbaa !5
  %459 = getelementptr inbounds i64, ptr %458, i64 1
  %460 = load ptr, ptr %45, align 8, !tbaa !5
  %461 = call i32 @dtgsy2_(ptr noundef %430, ptr noundef %76, ptr noundef %431, ptr noundef %432, ptr noundef %435, ptr noundef %436, ptr noundef %439, ptr noundef %440, ptr noundef %443, ptr noundef %444, ptr noundef %447, ptr noundef %448, ptr noundef %451, ptr noundef %452, ptr noundef %455, ptr noundef %456, ptr noundef %457, ptr noundef %74, ptr noundef %80, ptr noundef %459, ptr noundef %73, ptr noundef %460)
  %462 = load double, ptr %80, align 8, !tbaa !11
  %463 = fcmp une double %462, 0.000000e+00
  br i1 %463, label %464, label %498

464:                                              ; preds = %429
  %465 = load ptr, ptr %25, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = icmp eq i64 %466, 1
  br i1 %467, label %472, label %468

468:                                              ; preds = %464
  %469 = load ptr, ptr %25, align 8, !tbaa !5
  %470 = load i64, ptr %469, align 8, !tbaa !9
  %471 = icmp eq i64 %470, 3
  br i1 %471, label %472, label %487

472:                                              ; preds = %468, %464
  %473 = load ptr, ptr %26, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = shl i64 %474, 1
  %476 = load ptr, ptr %27, align 8, !tbaa !5
  %477 = load i64, ptr %476, align 8, !tbaa !9
  %478 = mul nsw i64 %475, %477
  %479 = sitofp i64 %478 to double
  %480 = call double @sqrt(double noundef %479) #4
  %481 = load double, ptr %80, align 8, !tbaa !11
  %482 = load double, ptr %74, align 8, !tbaa !11
  %483 = call double @sqrt(double noundef %482) #4
  %484 = fmul double %481, %483
  %485 = fdiv double %480, %484
  %486 = load ptr, ptr %41, align 8, !tbaa !5
  store double %485, ptr %486, align 8, !tbaa !11
  br label %497

487:                                              ; preds = %468
  %488 = load i64, ptr %73, align 8, !tbaa !9
  %489 = sitofp i64 %488 to double
  %490 = call double @sqrt(double noundef %489) #4
  %491 = load double, ptr %80, align 8, !tbaa !11
  %492 = load double, ptr %74, align 8, !tbaa !11
  %493 = call double @sqrt(double noundef %492) #4
  %494 = fmul double %491, %493
  %495 = fdiv double %490, %494
  %496 = load ptr, ptr %41, align 8, !tbaa !5
  store double %495, ptr %496, align 8, !tbaa !11
  br label %497

497:                                              ; preds = %487, %472
  br label %498

498:                                              ; preds = %497, %429
  %499 = load i64, ptr %84, align 8, !tbaa !9
  %500 = icmp eq i64 %499, 2
  br i1 %500, label %501, label %553

501:                                              ; preds = %498
  %502 = load i64, ptr %82, align 8, !tbaa !9
  %503 = icmp eq i64 %502, 1
  br i1 %503, label %504, label %553

504:                                              ; preds = %501
  %505 = load i64, ptr %83, align 8, !tbaa !9
  %506 = icmp ne i64 %505, 0
  br i1 %506, label %507, label %510

507:                                              ; preds = %504
  %508 = load ptr, ptr %25, align 8, !tbaa !5
  %509 = load i64, ptr %508, align 8, !tbaa !9
  store i64 %509, ptr %76, align 8, !tbaa !9
  br label %510

510:                                              ; preds = %507, %504
  %511 = load ptr, ptr %40, align 8, !tbaa !5
  %512 = load double, ptr %511, align 8, !tbaa !11
  store double %512, ptr %79, align 8, !tbaa !11
  %513 = load ptr, ptr %26, align 8, !tbaa !5
  %514 = load ptr, ptr %27, align 8, !tbaa !5
  %515 = load ptr, ptr %32, align 8, !tbaa !5
  %516 = load i64, ptr %51, align 8, !tbaa !9
  %517 = getelementptr inbounds double, ptr %515, i64 %516
  %518 = load ptr, ptr %33, align 8, !tbaa !5
  %519 = load ptr, ptr %42, align 8, !tbaa !5
  %520 = getelementptr inbounds double, ptr %519, i64 1
  %521 = load ptr, ptr %26, align 8, !tbaa !5
  %522 = call i32 @dlacpy_(ptr noundef @.str.3, ptr noundef %513, ptr noundef %514, ptr noundef %517, ptr noundef %518, ptr noundef %520, ptr noundef %521)
  %523 = load ptr, ptr %26, align 8, !tbaa !5
  %524 = load ptr, ptr %27, align 8, !tbaa !5
  %525 = load ptr, ptr %38, align 8, !tbaa !5
  %526 = load i64, ptr %57, align 8, !tbaa !9
  %527 = getelementptr inbounds double, ptr %525, i64 %526
  %528 = load ptr, ptr %39, align 8, !tbaa !5
  %529 = load ptr, ptr %42, align 8, !tbaa !5
  %530 = load ptr, ptr %26, align 8, !tbaa !5
  %531 = load i64, ptr %530, align 8, !tbaa !9
  %532 = load ptr, ptr %27, align 8, !tbaa !5
  %533 = load i64, ptr %532, align 8, !tbaa !9
  %534 = mul nsw i64 %531, %533
  %535 = add nsw i64 %534, 1
  %536 = getelementptr inbounds double, ptr %529, i64 %535
  %537 = load ptr, ptr %26, align 8, !tbaa !5
  %538 = call i32 @dlacpy_(ptr noundef @.str.3, ptr noundef %523, ptr noundef %524, ptr noundef %527, ptr noundef %528, ptr noundef %536, ptr noundef %537)
  %539 = load ptr, ptr %26, align 8, !tbaa !5
  %540 = load ptr, ptr %27, align 8, !tbaa !5
  %541 = load ptr, ptr %32, align 8, !tbaa !5
  %542 = load i64, ptr %51, align 8, !tbaa !9
  %543 = getelementptr inbounds double, ptr %541, i64 %542
  %544 = load ptr, ptr %33, align 8, !tbaa !5
  %545 = call i32 @dlaset_(ptr noundef @.str.3, ptr noundef %539, ptr noundef %540, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %543, ptr noundef %544)
  %546 = load ptr, ptr %26, align 8, !tbaa !5
  %547 = load ptr, ptr %27, align 8, !tbaa !5
  %548 = load ptr, ptr %38, align 8, !tbaa !5
  %549 = load i64, ptr %57, align 8, !tbaa !9
  %550 = getelementptr inbounds double, ptr %548, i64 %549
  %551 = load ptr, ptr %39, align 8, !tbaa !5
  %552 = call i32 @dlaset_(ptr noundef @.str.3, ptr noundef %546, ptr noundef %547, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %550, ptr noundef %551)
  br label %589

553:                                              ; preds = %501, %498
  %554 = load i64, ptr %84, align 8, !tbaa !9
  %555 = icmp eq i64 %554, 2
  br i1 %555, label %556, label %588

556:                                              ; preds = %553
  %557 = load i64, ptr %82, align 8, !tbaa !9
  %558 = icmp eq i64 %557, 2
  br i1 %558, label %559, label %588

559:                                              ; preds = %556
  %560 = load ptr, ptr %26, align 8, !tbaa !5
  %561 = load ptr, ptr %27, align 8, !tbaa !5
  %562 = load ptr, ptr %42, align 8, !tbaa !5
  %563 = getelementptr inbounds double, ptr %562, i64 1
  %564 = load ptr, ptr %26, align 8, !tbaa !5
  %565 = load ptr, ptr %32, align 8, !tbaa !5
  %566 = load i64, ptr %51, align 8, !tbaa !9
  %567 = getelementptr inbounds double, ptr %565, i64 %566
  %568 = load ptr, ptr %33, align 8, !tbaa !5
  %569 = call i32 @dlacpy_(ptr noundef @.str.3, ptr noundef %560, ptr noundef %561, ptr noundef %563, ptr noundef %564, ptr noundef %567, ptr noundef %568)
  %570 = load ptr, ptr %26, align 8, !tbaa !5
  %571 = load ptr, ptr %27, align 8, !tbaa !5
  %572 = load ptr, ptr %42, align 8, !tbaa !5
  %573 = load ptr, ptr %26, align 8, !tbaa !5
  %574 = load i64, ptr %573, align 8, !tbaa !9
  %575 = load ptr, ptr %27, align 8, !tbaa !5
  %576 = load i64, ptr %575, align 8, !tbaa !9
  %577 = mul nsw i64 %574, %576
  %578 = add nsw i64 %577, 1
  %579 = getelementptr inbounds double, ptr %572, i64 %578
  %580 = load ptr, ptr %26, align 8, !tbaa !5
  %581 = load ptr, ptr %38, align 8, !tbaa !5
  %582 = load i64, ptr %57, align 8, !tbaa !9
  %583 = getelementptr inbounds double, ptr %581, i64 %582
  %584 = load ptr, ptr %39, align 8, !tbaa !5
  %585 = call i32 @dlacpy_(ptr noundef @.str.3, ptr noundef %570, ptr noundef %571, ptr noundef %579, ptr noundef %580, ptr noundef %583, ptr noundef %584)
  %586 = load double, ptr %79, align 8, !tbaa !11
  %587 = load ptr, ptr %40, align 8, !tbaa !5
  store double %586, ptr %587, align 8, !tbaa !11
  br label %588

588:                                              ; preds = %559, %556, %553
  br label %589

589:                                              ; preds = %588, %510
  br label %590

590:                                              ; preds = %589
  %591 = load i64, ptr %82, align 8, !tbaa !9
  %592 = add nsw i64 %591, 1
  store i64 %592, ptr %82, align 8, !tbaa !9
  br label %425, !llvm.loop !13

593:                                              ; preds = %425
  store i32 0, ptr %23, align 4
  store i32 1, ptr %86, align 4
  br label %1586

594:                                              ; preds = %418, %413
  store i64 0, ptr %65, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %595

595:                                              ; preds = %630, %594
  %596 = load i64, ptr %62, align 8, !tbaa !9
  %597 = load ptr, ptr %26, align 8, !tbaa !5
  %598 = load i64, ptr %597, align 8, !tbaa !9
  %599 = icmp sgt i64 %596, %598
  br i1 %599, label %600, label %601

600:                                              ; preds = %595
  br label %631

601:                                              ; preds = %595
  %602 = load i64, ptr %65, align 8, !tbaa !9
  %603 = add nsw i64 %602, 1
  store i64 %603, ptr %65, align 8, !tbaa !9
  %604 = load i64, ptr %62, align 8, !tbaa !9
  %605 = load ptr, ptr %44, align 8, !tbaa !5
  %606 = load i64, ptr %65, align 8, !tbaa !9
  %607 = getelementptr inbounds i64, ptr %605, i64 %606
  store i64 %604, ptr %607, align 8, !tbaa !9
  %608 = load i64, ptr %69, align 8, !tbaa !9
  %609 = load i64, ptr %62, align 8, !tbaa !9
  %610 = add nsw i64 %609, %608
  store i64 %610, ptr %62, align 8, !tbaa !9
  %611 = load i64, ptr %62, align 8, !tbaa !9
  %612 = load ptr, ptr %26, align 8, !tbaa !5
  %613 = load i64, ptr %612, align 8, !tbaa !9
  %614 = icmp sge i64 %611, %613
  br i1 %614, label %615, label %616

615:                                              ; preds = %601
  br label %631

616:                                              ; preds = %601
  %617 = load ptr, ptr %28, align 8, !tbaa !5
  %618 = load i64, ptr %62, align 8, !tbaa !9
  %619 = load i64, ptr %62, align 8, !tbaa !9
  %620 = sub nsw i64 %619, 1
  %621 = load i64, ptr %46, align 8, !tbaa !9
  %622 = mul nsw i64 %620, %621
  %623 = add nsw i64 %618, %622
  %624 = getelementptr inbounds double, ptr %617, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !11
  %626 = fcmp une double %625, 0.000000e+00
  br i1 %626, label %627, label %630

627:                                              ; preds = %616
  %628 = load i64, ptr %62, align 8, !tbaa !9
  %629 = add nsw i64 %628, 1
  store i64 %629, ptr %62, align 8, !tbaa !9
  br label %630

630:                                              ; preds = %627, %616
  br label %595

631:                                              ; preds = %615, %600
  %632 = load ptr, ptr %26, align 8, !tbaa !5
  %633 = load i64, ptr %632, align 8, !tbaa !9
  %634 = add nsw i64 %633, 1
  %635 = load ptr, ptr %44, align 8, !tbaa !5
  %636 = load i64, ptr %65, align 8, !tbaa !9
  %637 = add nsw i64 %636, 1
  %638 = getelementptr inbounds i64, ptr %635, i64 %637
  store i64 %634, ptr %638, align 8, !tbaa !9
  %639 = load ptr, ptr %44, align 8, !tbaa !5
  %640 = load i64, ptr %65, align 8, !tbaa !9
  %641 = getelementptr inbounds i64, ptr %639, i64 %640
  %642 = load i64, ptr %641, align 8, !tbaa !9
  %643 = load ptr, ptr %44, align 8, !tbaa !5
  %644 = load i64, ptr %65, align 8, !tbaa !9
  %645 = add nsw i64 %644, 1
  %646 = getelementptr inbounds i64, ptr %643, i64 %645
  %647 = load i64, ptr %646, align 8, !tbaa !9
  %648 = icmp eq i64 %642, %647
  br i1 %648, label %649, label %652

649:                                              ; preds = %631
  %650 = load i64, ptr %65, align 8, !tbaa !9
  %651 = add nsw i64 %650, -1
  store i64 %651, ptr %65, align 8, !tbaa !9
  br label %652

652:                                              ; preds = %649, %631
  %653 = load i64, ptr %65, align 8, !tbaa !9
  %654 = add nsw i64 %653, 1
  store i64 %654, ptr %66, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %655

655:                                              ; preds = %690, %652
  %656 = load i64, ptr %63, align 8, !tbaa !9
  %657 = load ptr, ptr %27, align 8, !tbaa !5
  %658 = load i64, ptr %657, align 8, !tbaa !9
  %659 = icmp sgt i64 %656, %658
  br i1 %659, label %660, label %661

660:                                              ; preds = %655
  br label %691

661:                                              ; preds = %655
  %662 = load i64, ptr %66, align 8, !tbaa !9
  %663 = add nsw i64 %662, 1
  store i64 %663, ptr %66, align 8, !tbaa !9
  %664 = load i64, ptr %63, align 8, !tbaa !9
  %665 = load ptr, ptr %44, align 8, !tbaa !5
  %666 = load i64, ptr %66, align 8, !tbaa !9
  %667 = getelementptr inbounds i64, ptr %665, i64 %666
  store i64 %664, ptr %667, align 8, !tbaa !9
  %668 = load i64, ptr %70, align 8, !tbaa !9
  %669 = load i64, ptr %63, align 8, !tbaa !9
  %670 = add nsw i64 %669, %668
  store i64 %670, ptr %63, align 8, !tbaa !9
  %671 = load i64, ptr %63, align 8, !tbaa !9
  %672 = load ptr, ptr %27, align 8, !tbaa !5
  %673 = load i64, ptr %672, align 8, !tbaa !9
  %674 = icmp sge i64 %671, %673
  br i1 %674, label %675, label %676

675:                                              ; preds = %661
  br label %691

676:                                              ; preds = %661
  %677 = load ptr, ptr %30, align 8, !tbaa !5
  %678 = load i64, ptr %63, align 8, !tbaa !9
  %679 = load i64, ptr %63, align 8, !tbaa !9
  %680 = sub nsw i64 %679, 1
  %681 = load i64, ptr %48, align 8, !tbaa !9
  %682 = mul nsw i64 %680, %681
  %683 = add nsw i64 %678, %682
  %684 = getelementptr inbounds double, ptr %677, i64 %683
  %685 = load double, ptr %684, align 8, !tbaa !11
  %686 = fcmp une double %685, 0.000000e+00
  br i1 %686, label %687, label %690

687:                                              ; preds = %676
  %688 = load i64, ptr %63, align 8, !tbaa !9
  %689 = add nsw i64 %688, 1
  store i64 %689, ptr %63, align 8, !tbaa !9
  br label %690

690:                                              ; preds = %687, %676
  br label %655

691:                                              ; preds = %675, %660
  %692 = load ptr, ptr %27, align 8, !tbaa !5
  %693 = load i64, ptr %692, align 8, !tbaa !9
  %694 = add nsw i64 %693, 1
  %695 = load ptr, ptr %44, align 8, !tbaa !5
  %696 = load i64, ptr %66, align 8, !tbaa !9
  %697 = add nsw i64 %696, 1
  %698 = getelementptr inbounds i64, ptr %695, i64 %697
  store i64 %694, ptr %698, align 8, !tbaa !9
  %699 = load ptr, ptr %44, align 8, !tbaa !5
  %700 = load i64, ptr %66, align 8, !tbaa !9
  %701 = getelementptr inbounds i64, ptr %699, i64 %700
  %702 = load i64, ptr %701, align 8, !tbaa !9
  %703 = load ptr, ptr %44, align 8, !tbaa !5
  %704 = load i64, ptr %66, align 8, !tbaa !9
  %705 = add nsw i64 %704, 1
  %706 = getelementptr inbounds i64, ptr %703, i64 %705
  %707 = load i64, ptr %706, align 8, !tbaa !9
  %708 = icmp eq i64 %702, %707
  br i1 %708, label %709, label %712

709:                                              ; preds = %691
  %710 = load i64, ptr %66, align 8, !tbaa !9
  %711 = add nsw i64 %710, -1
  store i64 %711, ptr %66, align 8, !tbaa !9
  br label %712

712:                                              ; preds = %709, %691
  %713 = load i64, ptr %83, align 8, !tbaa !9
  %714 = icmp ne i64 %713, 0
  br i1 %714, label %715, label %1218

715:                                              ; preds = %712
  %716 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %716, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  br label %717

717:                                              ; preds = %1214, %715
  %718 = load i64, ptr %82, align 8, !tbaa !9
  %719 = load i64, ptr %58, align 8, !tbaa !9
  %720 = icmp sle i64 %718, %719
  br i1 %720, label %721, label %1217

721:                                              ; preds = %717
  store double 0.000000e+00, ptr %80, align 8, !tbaa !11
  store double 1.000000e+00, ptr %74, align 8, !tbaa !11
  store i64 0, ptr %73, align 8, !tbaa !9
  %722 = load ptr, ptr %40, align 8, !tbaa !5
  store double 1.000000e+00, ptr %722, align 8, !tbaa !11
  %723 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %723, ptr %59, align 8, !tbaa !9
  %724 = load i64, ptr %65, align 8, !tbaa !9
  %725 = add nsw i64 %724, 2
  store i64 %725, ptr %63, align 8, !tbaa !9
  br label %726

726:                                              ; preds = %1082, %721
  %727 = load i64, ptr %63, align 8, !tbaa !9
  %728 = load i64, ptr %59, align 8, !tbaa !9
  %729 = icmp sle i64 %727, %728
  br i1 %729, label %730, label %1085

730:                                              ; preds = %726
  %731 = load ptr, ptr %44, align 8, !tbaa !5
  %732 = load i64, ptr %63, align 8, !tbaa !9
  %733 = getelementptr inbounds i64, ptr %731, i64 %732
  %734 = load i64, ptr %733, align 8, !tbaa !9
  store i64 %734, ptr %72, align 8, !tbaa !9
  %735 = load ptr, ptr %44, align 8, !tbaa !5
  %736 = load i64, ptr %63, align 8, !tbaa !9
  %737 = add nsw i64 %736, 1
  %738 = getelementptr inbounds i64, ptr %735, i64 %737
  %739 = load i64, ptr %738, align 8, !tbaa !9
  %740 = sub nsw i64 %739, 1
  store i64 %740, ptr %68, align 8, !tbaa !9
  %741 = load i64, ptr %68, align 8, !tbaa !9
  %742 = load i64, ptr %72, align 8, !tbaa !9
  %743 = sub nsw i64 %741, %742
  %744 = add nsw i64 %743, 1
  store i64 %744, ptr %70, align 8, !tbaa !9
  %745 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %745, ptr %62, align 8, !tbaa !9
  br label %746

746:                                              ; preds = %1078, %730
  %747 = load i64, ptr %62, align 8, !tbaa !9
  %748 = icmp sge i64 %747, 1
  br i1 %748, label %749, label %1081

749:                                              ; preds = %746
  %750 = load ptr, ptr %44, align 8, !tbaa !5
  %751 = load i64, ptr %62, align 8, !tbaa !9
  %752 = getelementptr inbounds i64, ptr %750, i64 %751
  %753 = load i64, ptr %752, align 8, !tbaa !9
  store i64 %753, ptr %71, align 8, !tbaa !9
  %754 = load ptr, ptr %44, align 8, !tbaa !5
  %755 = load i64, ptr %62, align 8, !tbaa !9
  %756 = add nsw i64 %755, 1
  %757 = getelementptr inbounds i64, ptr %754, i64 %756
  %758 = load i64, ptr %757, align 8, !tbaa !9
  %759 = sub nsw i64 %758, 1
  store i64 %759, ptr %67, align 8, !tbaa !9
  %760 = load i64, ptr %67, align 8, !tbaa !9
  %761 = load i64, ptr %71, align 8, !tbaa !9
  %762 = sub nsw i64 %760, %761
  %763 = add nsw i64 %762, 1
  store i64 %763, ptr %69, align 8, !tbaa !9
  store i64 0, ptr %75, align 8, !tbaa !9
  %764 = load ptr, ptr %24, align 8, !tbaa !5
  %765 = load ptr, ptr %28, align 8, !tbaa !5
  %766 = load i64, ptr %71, align 8, !tbaa !9
  %767 = load i64, ptr %71, align 8, !tbaa !9
  %768 = load i64, ptr %46, align 8, !tbaa !9
  %769 = mul nsw i64 %767, %768
  %770 = add nsw i64 %766, %769
  %771 = getelementptr inbounds double, ptr %765, i64 %770
  %772 = load ptr, ptr %29, align 8, !tbaa !5
  %773 = load ptr, ptr %30, align 8, !tbaa !5
  %774 = load i64, ptr %72, align 8, !tbaa !9
  %775 = load i64, ptr %72, align 8, !tbaa !9
  %776 = load i64, ptr %48, align 8, !tbaa !9
  %777 = mul nsw i64 %775, %776
  %778 = add nsw i64 %774, %777
  %779 = getelementptr inbounds double, ptr %773, i64 %778
  %780 = load ptr, ptr %31, align 8, !tbaa !5
  %781 = load ptr, ptr %32, align 8, !tbaa !5
  %782 = load i64, ptr %71, align 8, !tbaa !9
  %783 = load i64, ptr %72, align 8, !tbaa !9
  %784 = load i64, ptr %50, align 8, !tbaa !9
  %785 = mul nsw i64 %783, %784
  %786 = add nsw i64 %782, %785
  %787 = getelementptr inbounds double, ptr %781, i64 %786
  %788 = load ptr, ptr %33, align 8, !tbaa !5
  %789 = load ptr, ptr %34, align 8, !tbaa !5
  %790 = load i64, ptr %71, align 8, !tbaa !9
  %791 = load i64, ptr %71, align 8, !tbaa !9
  %792 = load i64, ptr %52, align 8, !tbaa !9
  %793 = mul nsw i64 %791, %792
  %794 = add nsw i64 %790, %793
  %795 = getelementptr inbounds double, ptr %789, i64 %794
  %796 = load ptr, ptr %35, align 8, !tbaa !5
  %797 = load ptr, ptr %36, align 8, !tbaa !5
  %798 = load i64, ptr %72, align 8, !tbaa !9
  %799 = load i64, ptr %72, align 8, !tbaa !9
  %800 = load i64, ptr %54, align 8, !tbaa !9
  %801 = mul nsw i64 %799, %800
  %802 = add nsw i64 %798, %801
  %803 = getelementptr inbounds double, ptr %797, i64 %802
  %804 = load ptr, ptr %37, align 8, !tbaa !5
  %805 = load ptr, ptr %38, align 8, !tbaa !5
  %806 = load i64, ptr %71, align 8, !tbaa !9
  %807 = load i64, ptr %72, align 8, !tbaa !9
  %808 = load i64, ptr %56, align 8, !tbaa !9
  %809 = mul nsw i64 %807, %808
  %810 = add nsw i64 %806, %809
  %811 = getelementptr inbounds double, ptr %805, i64 %810
  %812 = load ptr, ptr %39, align 8, !tbaa !5
  %813 = load ptr, ptr %44, align 8, !tbaa !5
  %814 = load i64, ptr %66, align 8, !tbaa !9
  %815 = add nsw i64 %814, 2
  %816 = getelementptr inbounds i64, ptr %813, i64 %815
  %817 = call i32 @dtgsy2_(ptr noundef %764, ptr noundef %76, ptr noundef %69, ptr noundef %70, ptr noundef %771, ptr noundef %772, ptr noundef %779, ptr noundef %780, ptr noundef %787, ptr noundef %788, ptr noundef %795, ptr noundef %796, ptr noundef %803, ptr noundef %804, ptr noundef %811, ptr noundef %812, ptr noundef %81, ptr noundef %74, ptr noundef %80, ptr noundef %816, ptr noundef %75, ptr noundef %77)
  %818 = load i64, ptr %77, align 8, !tbaa !9
  %819 = icmp sgt i64 %818, 0
  br i1 %819, label %820, label %823

820:                                              ; preds = %749
  %821 = load i64, ptr %77, align 8, !tbaa !9
  %822 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 %821, ptr %822, align 8, !tbaa !9
  br label %823

823:                                              ; preds = %820, %749
  %824 = load i64, ptr %75, align 8, !tbaa !9
  %825 = load i64, ptr %73, align 8, !tbaa !9
  %826 = add nsw i64 %825, %824
  store i64 %826, ptr %73, align 8, !tbaa !9
  %827 = load double, ptr %81, align 8, !tbaa !11
  %828 = fcmp une double %827, 1.000000e+00
  br i1 %828, label %829, label %956

829:                                              ; preds = %823
  %830 = load i64, ptr %72, align 8, !tbaa !9
  %831 = sub nsw i64 %830, 1
  store i64 %831, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %832

832:                                              ; preds = %853, %829
  %833 = load i64, ptr %64, align 8, !tbaa !9
  %834 = load i64, ptr %60, align 8, !tbaa !9
  %835 = icmp sle i64 %833, %834
  br i1 %835, label %836, label %856

836:                                              ; preds = %832
  %837 = load ptr, ptr %26, align 8, !tbaa !5
  %838 = load ptr, ptr %32, align 8, !tbaa !5
  %839 = load i64, ptr %64, align 8, !tbaa !9
  %840 = load i64, ptr %50, align 8, !tbaa !9
  %841 = mul nsw i64 %839, %840
  %842 = add nsw i64 %841, 1
  %843 = getelementptr inbounds double, ptr %838, i64 %842
  %844 = call i32 @f2c_dscal(ptr noundef %837, ptr noundef %81, ptr noundef %843, ptr noundef @c__1)
  %845 = load ptr, ptr %26, align 8, !tbaa !5
  %846 = load ptr, ptr %38, align 8, !tbaa !5
  %847 = load i64, ptr %64, align 8, !tbaa !9
  %848 = load i64, ptr %56, align 8, !tbaa !9
  %849 = mul nsw i64 %847, %848
  %850 = add nsw i64 %849, 1
  %851 = getelementptr inbounds double, ptr %846, i64 %850
  %852 = call i32 @f2c_dscal(ptr noundef %845, ptr noundef %81, ptr noundef %851, ptr noundef @c__1)
  br label %853

853:                                              ; preds = %836
  %854 = load i64, ptr %64, align 8, !tbaa !9
  %855 = add nsw i64 %854, 1
  store i64 %855, ptr %64, align 8, !tbaa !9
  br label %832, !llvm.loop !15

856:                                              ; preds = %832
  %857 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %857, ptr %60, align 8, !tbaa !9
  %858 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %858, ptr %64, align 8, !tbaa !9
  br label %859

859:                                              ; preds = %882, %856
  %860 = load i64, ptr %64, align 8, !tbaa !9
  %861 = load i64, ptr %60, align 8, !tbaa !9
  %862 = icmp sle i64 %860, %861
  br i1 %862, label %863, label %885

863:                                              ; preds = %859
  %864 = load i64, ptr %71, align 8, !tbaa !9
  %865 = sub nsw i64 %864, 1
  store i64 %865, ptr %61, align 8, !tbaa !9
  %866 = load ptr, ptr %32, align 8, !tbaa !5
  %867 = load i64, ptr %64, align 8, !tbaa !9
  %868 = load i64, ptr %50, align 8, !tbaa !9
  %869 = mul nsw i64 %867, %868
  %870 = add nsw i64 %869, 1
  %871 = getelementptr inbounds double, ptr %866, i64 %870
  %872 = call i32 @f2c_dscal(ptr noundef %61, ptr noundef %81, ptr noundef %871, ptr noundef @c__1)
  %873 = load i64, ptr %71, align 8, !tbaa !9
  %874 = sub nsw i64 %873, 1
  store i64 %874, ptr %61, align 8, !tbaa !9
  %875 = load ptr, ptr %38, align 8, !tbaa !5
  %876 = load i64, ptr %64, align 8, !tbaa !9
  %877 = load i64, ptr %56, align 8, !tbaa !9
  %878 = mul nsw i64 %876, %877
  %879 = add nsw i64 %878, 1
  %880 = getelementptr inbounds double, ptr %875, i64 %879
  %881 = call i32 @f2c_dscal(ptr noundef %61, ptr noundef %81, ptr noundef %880, ptr noundef @c__1)
  br label %882

882:                                              ; preds = %863
  %883 = load i64, ptr %64, align 8, !tbaa !9
  %884 = add nsw i64 %883, 1
  store i64 %884, ptr %64, align 8, !tbaa !9
  br label %859, !llvm.loop !16

885:                                              ; preds = %859
  %886 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %886, ptr %60, align 8, !tbaa !9
  %887 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %887, ptr %64, align 8, !tbaa !9
  br label %888

888:                                              ; preds = %919, %885
  %889 = load i64, ptr %64, align 8, !tbaa !9
  %890 = load i64, ptr %60, align 8, !tbaa !9
  %891 = icmp sle i64 %889, %890
  br i1 %891, label %892, label %922

892:                                              ; preds = %888
  %893 = load ptr, ptr %26, align 8, !tbaa !5
  %894 = load i64, ptr %893, align 8, !tbaa !9
  %895 = load i64, ptr %67, align 8, !tbaa !9
  %896 = sub nsw i64 %894, %895
  store i64 %896, ptr %61, align 8, !tbaa !9
  %897 = load ptr, ptr %32, align 8, !tbaa !5
  %898 = load i64, ptr %67, align 8, !tbaa !9
  %899 = add nsw i64 %898, 1
  %900 = load i64, ptr %64, align 8, !tbaa !9
  %901 = load i64, ptr %50, align 8, !tbaa !9
  %902 = mul nsw i64 %900, %901
  %903 = add nsw i64 %899, %902
  %904 = getelementptr inbounds double, ptr %897, i64 %903
  %905 = call i32 @f2c_dscal(ptr noundef %61, ptr noundef %81, ptr noundef %904, ptr noundef @c__1)
  %906 = load ptr, ptr %26, align 8, !tbaa !5
  %907 = load i64, ptr %906, align 8, !tbaa !9
  %908 = load i64, ptr %67, align 8, !tbaa !9
  %909 = sub nsw i64 %907, %908
  store i64 %909, ptr %61, align 8, !tbaa !9
  %910 = load ptr, ptr %38, align 8, !tbaa !5
  %911 = load i64, ptr %67, align 8, !tbaa !9
  %912 = add nsw i64 %911, 1
  %913 = load i64, ptr %64, align 8, !tbaa !9
  %914 = load i64, ptr %56, align 8, !tbaa !9
  %915 = mul nsw i64 %913, %914
  %916 = add nsw i64 %912, %915
  %917 = getelementptr inbounds double, ptr %910, i64 %916
  %918 = call i32 @f2c_dscal(ptr noundef %61, ptr noundef %81, ptr noundef %917, ptr noundef @c__1)
  br label %919

919:                                              ; preds = %892
  %920 = load i64, ptr %64, align 8, !tbaa !9
  %921 = add nsw i64 %920, 1
  store i64 %921, ptr %64, align 8, !tbaa !9
  br label %888, !llvm.loop !17

922:                                              ; preds = %888
  %923 = load ptr, ptr %27, align 8, !tbaa !5
  %924 = load i64, ptr %923, align 8, !tbaa !9
  store i64 %924, ptr %60, align 8, !tbaa !9
  %925 = load i64, ptr %68, align 8, !tbaa !9
  %926 = add nsw i64 %925, 1
  store i64 %926, ptr %64, align 8, !tbaa !9
  br label %927

927:                                              ; preds = %948, %922
  %928 = load i64, ptr %64, align 8, !tbaa !9
  %929 = load i64, ptr %60, align 8, !tbaa !9
  %930 = icmp sle i64 %928, %929
  br i1 %930, label %931, label %951

931:                                              ; preds = %927
  %932 = load ptr, ptr %26, align 8, !tbaa !5
  %933 = load ptr, ptr %32, align 8, !tbaa !5
  %934 = load i64, ptr %64, align 8, !tbaa !9
  %935 = load i64, ptr %50, align 8, !tbaa !9
  %936 = mul nsw i64 %934, %935
  %937 = add nsw i64 %936, 1
  %938 = getelementptr inbounds double, ptr %933, i64 %937
  %939 = call i32 @f2c_dscal(ptr noundef %932, ptr noundef %81, ptr noundef %938, ptr noundef @c__1)
  %940 = load ptr, ptr %26, align 8, !tbaa !5
  %941 = load ptr, ptr %38, align 8, !tbaa !5
  %942 = load i64, ptr %64, align 8, !tbaa !9
  %943 = load i64, ptr %56, align 8, !tbaa !9
  %944 = mul nsw i64 %942, %943
  %945 = add nsw i64 %944, 1
  %946 = getelementptr inbounds double, ptr %941, i64 %945
  %947 = call i32 @f2c_dscal(ptr noundef %940, ptr noundef %81, ptr noundef %946, ptr noundef @c__1)
  br label %948

948:                                              ; preds = %931
  %949 = load i64, ptr %64, align 8, !tbaa !9
  %950 = add nsw i64 %949, 1
  store i64 %950, ptr %64, align 8, !tbaa !9
  br label %927, !llvm.loop !18

951:                                              ; preds = %927
  %952 = load double, ptr %81, align 8, !tbaa !11
  %953 = load ptr, ptr %40, align 8, !tbaa !5
  %954 = load double, ptr %953, align 8, !tbaa !11
  %955 = fmul double %954, %952
  store double %955, ptr %953, align 8, !tbaa !11
  br label %956

956:                                              ; preds = %951, %823
  %957 = load i64, ptr %62, align 8, !tbaa !9
  %958 = icmp sgt i64 %957, 1
  br i1 %958, label %959, label %1010

959:                                              ; preds = %956
  %960 = load i64, ptr %71, align 8, !tbaa !9
  %961 = sub nsw i64 %960, 1
  store i64 %961, ptr %60, align 8, !tbaa !9
  %962 = load ptr, ptr %28, align 8, !tbaa !5
  %963 = load i64, ptr %71, align 8, !tbaa !9
  %964 = load i64, ptr %46, align 8, !tbaa !9
  %965 = mul nsw i64 %963, %964
  %966 = add nsw i64 %965, 1
  %967 = getelementptr inbounds double, ptr %962, i64 %966
  %968 = load ptr, ptr %29, align 8, !tbaa !5
  %969 = load ptr, ptr %32, align 8, !tbaa !5
  %970 = load i64, ptr %71, align 8, !tbaa !9
  %971 = load i64, ptr %72, align 8, !tbaa !9
  %972 = load i64, ptr %50, align 8, !tbaa !9
  %973 = mul nsw i64 %971, %972
  %974 = add nsw i64 %970, %973
  %975 = getelementptr inbounds double, ptr %969, i64 %974
  %976 = load ptr, ptr %33, align 8, !tbaa !5
  %977 = load ptr, ptr %32, align 8, !tbaa !5
  %978 = load i64, ptr %72, align 8, !tbaa !9
  %979 = load i64, ptr %50, align 8, !tbaa !9
  %980 = mul nsw i64 %978, %979
  %981 = add nsw i64 %980, 1
  %982 = getelementptr inbounds double, ptr %977, i64 %981
  %983 = load ptr, ptr %33, align 8, !tbaa !5
  %984 = call i32 @f2c_dgemm(ptr noundef @.str, ptr noundef @.str, ptr noundef %60, ptr noundef %70, ptr noundef %69, ptr noundef @c_b51, ptr noundef %967, ptr noundef %968, ptr noundef %975, ptr noundef %976, ptr noundef @c_b52, ptr noundef %982, ptr noundef %983)
  %985 = load i64, ptr %71, align 8, !tbaa !9
  %986 = sub nsw i64 %985, 1
  store i64 %986, ptr %60, align 8, !tbaa !9
  %987 = load ptr, ptr %34, align 8, !tbaa !5
  %988 = load i64, ptr %71, align 8, !tbaa !9
  %989 = load i64, ptr %52, align 8, !tbaa !9
  %990 = mul nsw i64 %988, %989
  %991 = add nsw i64 %990, 1
  %992 = getelementptr inbounds double, ptr %987, i64 %991
  %993 = load ptr, ptr %35, align 8, !tbaa !5
  %994 = load ptr, ptr %32, align 8, !tbaa !5
  %995 = load i64, ptr %71, align 8, !tbaa !9
  %996 = load i64, ptr %72, align 8, !tbaa !9
  %997 = load i64, ptr %50, align 8, !tbaa !9
  %998 = mul nsw i64 %996, %997
  %999 = add nsw i64 %995, %998
  %1000 = getelementptr inbounds double, ptr %994, i64 %999
  %1001 = load ptr, ptr %33, align 8, !tbaa !5
  %1002 = load ptr, ptr %38, align 8, !tbaa !5
  %1003 = load i64, ptr %72, align 8, !tbaa !9
  %1004 = load i64, ptr %56, align 8, !tbaa !9
  %1005 = mul nsw i64 %1003, %1004
  %1006 = add nsw i64 %1005, 1
  %1007 = getelementptr inbounds double, ptr %1002, i64 %1006
  %1008 = load ptr, ptr %39, align 8, !tbaa !5
  %1009 = call i32 @f2c_dgemm(ptr noundef @.str, ptr noundef @.str, ptr noundef %60, ptr noundef %70, ptr noundef %69, ptr noundef @c_b51, ptr noundef %992, ptr noundef %993, ptr noundef %1000, ptr noundef %1001, ptr noundef @c_b52, ptr noundef %1007, ptr noundef %1008)
  br label %1010

1010:                                             ; preds = %959, %956
  %1011 = load i64, ptr %63, align 8, !tbaa !9
  %1012 = load i64, ptr %66, align 8, !tbaa !9
  %1013 = icmp slt i64 %1011, %1012
  br i1 %1013, label %1014, label %1077

1014:                                             ; preds = %1010
  %1015 = load ptr, ptr %27, align 8, !tbaa !5
  %1016 = load i64, ptr %1015, align 8, !tbaa !9
  %1017 = load i64, ptr %68, align 8, !tbaa !9
  %1018 = sub nsw i64 %1016, %1017
  store i64 %1018, ptr %60, align 8, !tbaa !9
  %1019 = load ptr, ptr %38, align 8, !tbaa !5
  %1020 = load i64, ptr %71, align 8, !tbaa !9
  %1021 = load i64, ptr %72, align 8, !tbaa !9
  %1022 = load i64, ptr %56, align 8, !tbaa !9
  %1023 = mul nsw i64 %1021, %1022
  %1024 = add nsw i64 %1020, %1023
  %1025 = getelementptr inbounds double, ptr %1019, i64 %1024
  %1026 = load ptr, ptr %39, align 8, !tbaa !5
  %1027 = load ptr, ptr %30, align 8, !tbaa !5
  %1028 = load i64, ptr %72, align 8, !tbaa !9
  %1029 = load i64, ptr %68, align 8, !tbaa !9
  %1030 = add nsw i64 %1029, 1
  %1031 = load i64, ptr %48, align 8, !tbaa !9
  %1032 = mul nsw i64 %1030, %1031
  %1033 = add nsw i64 %1028, %1032
  %1034 = getelementptr inbounds double, ptr %1027, i64 %1033
  %1035 = load ptr, ptr %31, align 8, !tbaa !5
  %1036 = load ptr, ptr %32, align 8, !tbaa !5
  %1037 = load i64, ptr %71, align 8, !tbaa !9
  %1038 = load i64, ptr %68, align 8, !tbaa !9
  %1039 = add nsw i64 %1038, 1
  %1040 = load i64, ptr %50, align 8, !tbaa !9
  %1041 = mul nsw i64 %1039, %1040
  %1042 = add nsw i64 %1037, %1041
  %1043 = getelementptr inbounds double, ptr %1036, i64 %1042
  %1044 = load ptr, ptr %33, align 8, !tbaa !5
  %1045 = call i32 @f2c_dgemm(ptr noundef @.str, ptr noundef @.str, ptr noundef %69, ptr noundef %60, ptr noundef %70, ptr noundef @c_b52, ptr noundef %1025, ptr noundef %1026, ptr noundef %1034, ptr noundef %1035, ptr noundef @c_b52, ptr noundef %1043, ptr noundef %1044)
  %1046 = load ptr, ptr %27, align 8, !tbaa !5
  %1047 = load i64, ptr %1046, align 8, !tbaa !9
  %1048 = load i64, ptr %68, align 8, !tbaa !9
  %1049 = sub nsw i64 %1047, %1048
  store i64 %1049, ptr %60, align 8, !tbaa !9
  %1050 = load ptr, ptr %38, align 8, !tbaa !5
  %1051 = load i64, ptr %71, align 8, !tbaa !9
  %1052 = load i64, ptr %72, align 8, !tbaa !9
  %1053 = load i64, ptr %56, align 8, !tbaa !9
  %1054 = mul nsw i64 %1052, %1053
  %1055 = add nsw i64 %1051, %1054
  %1056 = getelementptr inbounds double, ptr %1050, i64 %1055
  %1057 = load ptr, ptr %39, align 8, !tbaa !5
  %1058 = load ptr, ptr %36, align 8, !tbaa !5
  %1059 = load i64, ptr %72, align 8, !tbaa !9
  %1060 = load i64, ptr %68, align 8, !tbaa !9
  %1061 = add nsw i64 %1060, 1
  %1062 = load i64, ptr %54, align 8, !tbaa !9
  %1063 = mul nsw i64 %1061, %1062
  %1064 = add nsw i64 %1059, %1063
  %1065 = getelementptr inbounds double, ptr %1058, i64 %1064
  %1066 = load ptr, ptr %37, align 8, !tbaa !5
  %1067 = load ptr, ptr %38, align 8, !tbaa !5
  %1068 = load i64, ptr %71, align 8, !tbaa !9
  %1069 = load i64, ptr %68, align 8, !tbaa !9
  %1070 = add nsw i64 %1069, 1
  %1071 = load i64, ptr %56, align 8, !tbaa !9
  %1072 = mul nsw i64 %1070, %1071
  %1073 = add nsw i64 %1068, %1072
  %1074 = getelementptr inbounds double, ptr %1067, i64 %1073
  %1075 = load ptr, ptr %39, align 8, !tbaa !5
  %1076 = call i32 @f2c_dgemm(ptr noundef @.str, ptr noundef @.str, ptr noundef %69, ptr noundef %60, ptr noundef %70, ptr noundef @c_b52, ptr noundef %1056, ptr noundef %1057, ptr noundef %1065, ptr noundef %1066, ptr noundef @c_b52, ptr noundef %1074, ptr noundef %1075)
  br label %1077

1077:                                             ; preds = %1014, %1010
  br label %1078

1078:                                             ; preds = %1077
  %1079 = load i64, ptr %62, align 8, !tbaa !9
  %1080 = add nsw i64 %1079, -1
  store i64 %1080, ptr %62, align 8, !tbaa !9
  br label %746, !llvm.loop !19

1081:                                             ; preds = %746
  br label %1082

1082:                                             ; preds = %1081
  %1083 = load i64, ptr %63, align 8, !tbaa !9
  %1084 = add nsw i64 %1083, 1
  store i64 %1084, ptr %63, align 8, !tbaa !9
  br label %726, !llvm.loop !20

1085:                                             ; preds = %726
  %1086 = load double, ptr %80, align 8, !tbaa !11
  %1087 = fcmp une double %1086, 0.000000e+00
  br i1 %1087, label %1088, label %1122

1088:                                             ; preds = %1085
  %1089 = load ptr, ptr %25, align 8, !tbaa !5
  %1090 = load i64, ptr %1089, align 8, !tbaa !9
  %1091 = icmp eq i64 %1090, 1
  br i1 %1091, label %1096, label %1092

1092:                                             ; preds = %1088
  %1093 = load ptr, ptr %25, align 8, !tbaa !5
  %1094 = load i64, ptr %1093, align 8, !tbaa !9
  %1095 = icmp eq i64 %1094, 3
  br i1 %1095, label %1096, label %1111

1096:                                             ; preds = %1092, %1088
  %1097 = load ptr, ptr %26, align 8, !tbaa !5
  %1098 = load i64, ptr %1097, align 8, !tbaa !9
  %1099 = shl i64 %1098, 1
  %1100 = load ptr, ptr %27, align 8, !tbaa !5
  %1101 = load i64, ptr %1100, align 8, !tbaa !9
  %1102 = mul nsw i64 %1099, %1101
  %1103 = sitofp i64 %1102 to double
  %1104 = call double @sqrt(double noundef %1103) #4
  %1105 = load double, ptr %80, align 8, !tbaa !11
  %1106 = load double, ptr %74, align 8, !tbaa !11
  %1107 = call double @sqrt(double noundef %1106) #4
  %1108 = fmul double %1105, %1107
  %1109 = fdiv double %1104, %1108
  %1110 = load ptr, ptr %41, align 8, !tbaa !5
  store double %1109, ptr %1110, align 8, !tbaa !11
  br label %1121

1111:                                             ; preds = %1092
  %1112 = load i64, ptr %73, align 8, !tbaa !9
  %1113 = sitofp i64 %1112 to double
  %1114 = call double @sqrt(double noundef %1113) #4
  %1115 = load double, ptr %80, align 8, !tbaa !11
  %1116 = load double, ptr %74, align 8, !tbaa !11
  %1117 = call double @sqrt(double noundef %1116) #4
  %1118 = fmul double %1115, %1117
  %1119 = fdiv double %1114, %1118
  %1120 = load ptr, ptr %41, align 8, !tbaa !5
  store double %1119, ptr %1120, align 8, !tbaa !11
  br label %1121

1121:                                             ; preds = %1111, %1096
  br label %1122

1122:                                             ; preds = %1121, %1085
  %1123 = load i64, ptr %84, align 8, !tbaa !9
  %1124 = icmp eq i64 %1123, 2
  br i1 %1124, label %1125, label %1177

1125:                                             ; preds = %1122
  %1126 = load i64, ptr %82, align 8, !tbaa !9
  %1127 = icmp eq i64 %1126, 1
  br i1 %1127, label %1128, label %1177

1128:                                             ; preds = %1125
  %1129 = load i64, ptr %83, align 8, !tbaa !9
  %1130 = icmp ne i64 %1129, 0
  br i1 %1130, label %1131, label %1134

1131:                                             ; preds = %1128
  %1132 = load ptr, ptr %25, align 8, !tbaa !5
  %1133 = load i64, ptr %1132, align 8, !tbaa !9
  store i64 %1133, ptr %76, align 8, !tbaa !9
  br label %1134

1134:                                             ; preds = %1131, %1128
  %1135 = load ptr, ptr %40, align 8, !tbaa !5
  %1136 = load double, ptr %1135, align 8, !tbaa !11
  store double %1136, ptr %79, align 8, !tbaa !11
  %1137 = load ptr, ptr %26, align 8, !tbaa !5
  %1138 = load ptr, ptr %27, align 8, !tbaa !5
  %1139 = load ptr, ptr %32, align 8, !tbaa !5
  %1140 = load i64, ptr %51, align 8, !tbaa !9
  %1141 = getelementptr inbounds double, ptr %1139, i64 %1140
  %1142 = load ptr, ptr %33, align 8, !tbaa !5
  %1143 = load ptr, ptr %42, align 8, !tbaa !5
  %1144 = getelementptr inbounds double, ptr %1143, i64 1
  %1145 = load ptr, ptr %26, align 8, !tbaa !5
  %1146 = call i32 @dlacpy_(ptr noundef @.str.3, ptr noundef %1137, ptr noundef %1138, ptr noundef %1141, ptr noundef %1142, ptr noundef %1144, ptr noundef %1145)
  %1147 = load ptr, ptr %26, align 8, !tbaa !5
  %1148 = load ptr, ptr %27, align 8, !tbaa !5
  %1149 = load ptr, ptr %38, align 8, !tbaa !5
  %1150 = load i64, ptr %57, align 8, !tbaa !9
  %1151 = getelementptr inbounds double, ptr %1149, i64 %1150
  %1152 = load ptr, ptr %39, align 8, !tbaa !5
  %1153 = load ptr, ptr %42, align 8, !tbaa !5
  %1154 = load ptr, ptr %26, align 8, !tbaa !5
  %1155 = load i64, ptr %1154, align 8, !tbaa !9
  %1156 = load ptr, ptr %27, align 8, !tbaa !5
  %1157 = load i64, ptr %1156, align 8, !tbaa !9
  %1158 = mul nsw i64 %1155, %1157
  %1159 = add nsw i64 %1158, 1
  %1160 = getelementptr inbounds double, ptr %1153, i64 %1159
  %1161 = load ptr, ptr %26, align 8, !tbaa !5
  %1162 = call i32 @dlacpy_(ptr noundef @.str.3, ptr noundef %1147, ptr noundef %1148, ptr noundef %1151, ptr noundef %1152, ptr noundef %1160, ptr noundef %1161)
  %1163 = load ptr, ptr %26, align 8, !tbaa !5
  %1164 = load ptr, ptr %27, align 8, !tbaa !5
  %1165 = load ptr, ptr %32, align 8, !tbaa !5
  %1166 = load i64, ptr %51, align 8, !tbaa !9
  %1167 = getelementptr inbounds double, ptr %1165, i64 %1166
  %1168 = load ptr, ptr %33, align 8, !tbaa !5
  %1169 = call i32 @dlaset_(ptr noundef @.str.3, ptr noundef %1163, ptr noundef %1164, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %1167, ptr noundef %1168)
  %1170 = load ptr, ptr %26, align 8, !tbaa !5
  %1171 = load ptr, ptr %27, align 8, !tbaa !5
  %1172 = load ptr, ptr %38, align 8, !tbaa !5
  %1173 = load i64, ptr %57, align 8, !tbaa !9
  %1174 = getelementptr inbounds double, ptr %1172, i64 %1173
  %1175 = load ptr, ptr %39, align 8, !tbaa !5
  %1176 = call i32 @dlaset_(ptr noundef @.str.3, ptr noundef %1170, ptr noundef %1171, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %1174, ptr noundef %1175)
  br label %1213

1177:                                             ; preds = %1125, %1122
  %1178 = load i64, ptr %84, align 8, !tbaa !9
  %1179 = icmp eq i64 %1178, 2
  br i1 %1179, label %1180, label %1212

1180:                                             ; preds = %1177
  %1181 = load i64, ptr %82, align 8, !tbaa !9
  %1182 = icmp eq i64 %1181, 2
  br i1 %1182, label %1183, label %1212

1183:                                             ; preds = %1180
  %1184 = load ptr, ptr %26, align 8, !tbaa !5
  %1185 = load ptr, ptr %27, align 8, !tbaa !5
  %1186 = load ptr, ptr %42, align 8, !tbaa !5
  %1187 = getelementptr inbounds double, ptr %1186, i64 1
  %1188 = load ptr, ptr %26, align 8, !tbaa !5
  %1189 = load ptr, ptr %32, align 8, !tbaa !5
  %1190 = load i64, ptr %51, align 8, !tbaa !9
  %1191 = getelementptr inbounds double, ptr %1189, i64 %1190
  %1192 = load ptr, ptr %33, align 8, !tbaa !5
  %1193 = call i32 @dlacpy_(ptr noundef @.str.3, ptr noundef %1184, ptr noundef %1185, ptr noundef %1187, ptr noundef %1188, ptr noundef %1191, ptr noundef %1192)
  %1194 = load ptr, ptr %26, align 8, !tbaa !5
  %1195 = load ptr, ptr %27, align 8, !tbaa !5
  %1196 = load ptr, ptr %42, align 8, !tbaa !5
  %1197 = load ptr, ptr %26, align 8, !tbaa !5
  %1198 = load i64, ptr %1197, align 8, !tbaa !9
  %1199 = load ptr, ptr %27, align 8, !tbaa !5
  %1200 = load i64, ptr %1199, align 8, !tbaa !9
  %1201 = mul nsw i64 %1198, %1200
  %1202 = add nsw i64 %1201, 1
  %1203 = getelementptr inbounds double, ptr %1196, i64 %1202
  %1204 = load ptr, ptr %26, align 8, !tbaa !5
  %1205 = load ptr, ptr %38, align 8, !tbaa !5
  %1206 = load i64, ptr %57, align 8, !tbaa !9
  %1207 = getelementptr inbounds double, ptr %1205, i64 %1206
  %1208 = load ptr, ptr %39, align 8, !tbaa !5
  %1209 = call i32 @dlacpy_(ptr noundef @.str.3, ptr noundef %1194, ptr noundef %1195, ptr noundef %1203, ptr noundef %1204, ptr noundef %1207, ptr noundef %1208)
  %1210 = load double, ptr %79, align 8, !tbaa !11
  %1211 = load ptr, ptr %40, align 8, !tbaa !5
  store double %1210, ptr %1211, align 8, !tbaa !11
  br label %1212

1212:                                             ; preds = %1183, %1180, %1177
  br label %1213

1213:                                             ; preds = %1212, %1134
  br label %1214

1214:                                             ; preds = %1213
  %1215 = load i64, ptr %82, align 8, !tbaa !9
  %1216 = add nsw i64 %1215, 1
  store i64 %1216, ptr %82, align 8, !tbaa !9
  br label %717, !llvm.loop !21

1217:                                             ; preds = %717
  br label %1581

1218:                                             ; preds = %712
  %1219 = load ptr, ptr %40, align 8, !tbaa !5
  store double 1.000000e+00, ptr %1219, align 8, !tbaa !11
  %1220 = load i64, ptr %65, align 8, !tbaa !9
  store i64 %1220, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %1221

1221:                                             ; preds = %1577, %1218
  %1222 = load i64, ptr %62, align 8, !tbaa !9
  %1223 = load i64, ptr %58, align 8, !tbaa !9
  %1224 = icmp sle i64 %1222, %1223
  br i1 %1224, label %1225, label %1580

1225:                                             ; preds = %1221
  %1226 = load ptr, ptr %44, align 8, !tbaa !5
  %1227 = load i64, ptr %62, align 8, !tbaa !9
  %1228 = getelementptr inbounds i64, ptr %1226, i64 %1227
  %1229 = load i64, ptr %1228, align 8, !tbaa !9
  store i64 %1229, ptr %71, align 8, !tbaa !9
  %1230 = load ptr, ptr %44, align 8, !tbaa !5
  %1231 = load i64, ptr %62, align 8, !tbaa !9
  %1232 = add nsw i64 %1231, 1
  %1233 = getelementptr inbounds i64, ptr %1230, i64 %1232
  %1234 = load i64, ptr %1233, align 8, !tbaa !9
  %1235 = sub nsw i64 %1234, 1
  store i64 %1235, ptr %67, align 8, !tbaa !9
  %1236 = load i64, ptr %67, align 8, !tbaa !9
  %1237 = load i64, ptr %71, align 8, !tbaa !9
  %1238 = sub nsw i64 %1236, %1237
  %1239 = add nsw i64 %1238, 1
  store i64 %1239, ptr %69, align 8, !tbaa !9
  %1240 = load i64, ptr %65, align 8, !tbaa !9
  %1241 = add nsw i64 %1240, 2
  store i64 %1241, ptr %59, align 8, !tbaa !9
  %1242 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1242, ptr %63, align 8, !tbaa !9
  br label %1243

1243:                                             ; preds = %1573, %1225
  %1244 = load i64, ptr %63, align 8, !tbaa !9
  %1245 = load i64, ptr %59, align 8, !tbaa !9
  %1246 = icmp sge i64 %1244, %1245
  br i1 %1246, label %1247, label %1576

1247:                                             ; preds = %1243
  %1248 = load ptr, ptr %44, align 8, !tbaa !5
  %1249 = load i64, ptr %63, align 8, !tbaa !9
  %1250 = getelementptr inbounds i64, ptr %1248, i64 %1249
  %1251 = load i64, ptr %1250, align 8, !tbaa !9
  store i64 %1251, ptr %72, align 8, !tbaa !9
  %1252 = load ptr, ptr %44, align 8, !tbaa !5
  %1253 = load i64, ptr %63, align 8, !tbaa !9
  %1254 = add nsw i64 %1253, 1
  %1255 = getelementptr inbounds i64, ptr %1252, i64 %1254
  %1256 = load i64, ptr %1255, align 8, !tbaa !9
  %1257 = sub nsw i64 %1256, 1
  store i64 %1257, ptr %68, align 8, !tbaa !9
  %1258 = load i64, ptr %68, align 8, !tbaa !9
  %1259 = load i64, ptr %72, align 8, !tbaa !9
  %1260 = sub nsw i64 %1258, %1259
  %1261 = add nsw i64 %1260, 1
  store i64 %1261, ptr %70, align 8, !tbaa !9
  %1262 = load ptr, ptr %24, align 8, !tbaa !5
  %1263 = load ptr, ptr %28, align 8, !tbaa !5
  %1264 = load i64, ptr %71, align 8, !tbaa !9
  %1265 = load i64, ptr %71, align 8, !tbaa !9
  %1266 = load i64, ptr %46, align 8, !tbaa !9
  %1267 = mul nsw i64 %1265, %1266
  %1268 = add nsw i64 %1264, %1267
  %1269 = getelementptr inbounds double, ptr %1263, i64 %1268
  %1270 = load ptr, ptr %29, align 8, !tbaa !5
  %1271 = load ptr, ptr %30, align 8, !tbaa !5
  %1272 = load i64, ptr %72, align 8, !tbaa !9
  %1273 = load i64, ptr %72, align 8, !tbaa !9
  %1274 = load i64, ptr %48, align 8, !tbaa !9
  %1275 = mul nsw i64 %1273, %1274
  %1276 = add nsw i64 %1272, %1275
  %1277 = getelementptr inbounds double, ptr %1271, i64 %1276
  %1278 = load ptr, ptr %31, align 8, !tbaa !5
  %1279 = load ptr, ptr %32, align 8, !tbaa !5
  %1280 = load i64, ptr %71, align 8, !tbaa !9
  %1281 = load i64, ptr %72, align 8, !tbaa !9
  %1282 = load i64, ptr %50, align 8, !tbaa !9
  %1283 = mul nsw i64 %1281, %1282
  %1284 = add nsw i64 %1280, %1283
  %1285 = getelementptr inbounds double, ptr %1279, i64 %1284
  %1286 = load ptr, ptr %33, align 8, !tbaa !5
  %1287 = load ptr, ptr %34, align 8, !tbaa !5
  %1288 = load i64, ptr %71, align 8, !tbaa !9
  %1289 = load i64, ptr %71, align 8, !tbaa !9
  %1290 = load i64, ptr %52, align 8, !tbaa !9
  %1291 = mul nsw i64 %1289, %1290
  %1292 = add nsw i64 %1288, %1291
  %1293 = getelementptr inbounds double, ptr %1287, i64 %1292
  %1294 = load ptr, ptr %35, align 8, !tbaa !5
  %1295 = load ptr, ptr %36, align 8, !tbaa !5
  %1296 = load i64, ptr %72, align 8, !tbaa !9
  %1297 = load i64, ptr %72, align 8, !tbaa !9
  %1298 = load i64, ptr %54, align 8, !tbaa !9
  %1299 = mul nsw i64 %1297, %1298
  %1300 = add nsw i64 %1296, %1299
  %1301 = getelementptr inbounds double, ptr %1295, i64 %1300
  %1302 = load ptr, ptr %37, align 8, !tbaa !5
  %1303 = load ptr, ptr %38, align 8, !tbaa !5
  %1304 = load i64, ptr %71, align 8, !tbaa !9
  %1305 = load i64, ptr %72, align 8, !tbaa !9
  %1306 = load i64, ptr %56, align 8, !tbaa !9
  %1307 = mul nsw i64 %1305, %1306
  %1308 = add nsw i64 %1304, %1307
  %1309 = getelementptr inbounds double, ptr %1303, i64 %1308
  %1310 = load ptr, ptr %39, align 8, !tbaa !5
  %1311 = load ptr, ptr %44, align 8, !tbaa !5
  %1312 = load i64, ptr %66, align 8, !tbaa !9
  %1313 = add nsw i64 %1312, 2
  %1314 = getelementptr inbounds i64, ptr %1311, i64 %1313
  %1315 = call i32 @dtgsy2_(ptr noundef %1262, ptr noundef %76, ptr noundef %69, ptr noundef %70, ptr noundef %1269, ptr noundef %1270, ptr noundef %1277, ptr noundef %1278, ptr noundef %1285, ptr noundef %1286, ptr noundef %1293, ptr noundef %1294, ptr noundef %1301, ptr noundef %1302, ptr noundef %1309, ptr noundef %1310, ptr noundef %81, ptr noundef %74, ptr noundef %80, ptr noundef %1314, ptr noundef %75, ptr noundef %77)
  %1316 = load i64, ptr %77, align 8, !tbaa !9
  %1317 = icmp sgt i64 %1316, 0
  br i1 %1317, label %1318, label %1321

1318:                                             ; preds = %1247
  %1319 = load i64, ptr %77, align 8, !tbaa !9
  %1320 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 %1319, ptr %1320, align 8, !tbaa !9
  br label %1321

1321:                                             ; preds = %1318, %1247
  %1322 = load double, ptr %81, align 8, !tbaa !11
  %1323 = fcmp une double %1322, 1.000000e+00
  br i1 %1323, label %1324, label %1451

1324:                                             ; preds = %1321
  %1325 = load i64, ptr %72, align 8, !tbaa !9
  %1326 = sub nsw i64 %1325, 1
  store i64 %1326, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %1327

1327:                                             ; preds = %1348, %1324
  %1328 = load i64, ptr %64, align 8, !tbaa !9
  %1329 = load i64, ptr %60, align 8, !tbaa !9
  %1330 = icmp sle i64 %1328, %1329
  br i1 %1330, label %1331, label %1351

1331:                                             ; preds = %1327
  %1332 = load ptr, ptr %26, align 8, !tbaa !5
  %1333 = load ptr, ptr %32, align 8, !tbaa !5
  %1334 = load i64, ptr %64, align 8, !tbaa !9
  %1335 = load i64, ptr %50, align 8, !tbaa !9
  %1336 = mul nsw i64 %1334, %1335
  %1337 = add nsw i64 %1336, 1
  %1338 = getelementptr inbounds double, ptr %1333, i64 %1337
  %1339 = call i32 @f2c_dscal(ptr noundef %1332, ptr noundef %81, ptr noundef %1338, ptr noundef @c__1)
  %1340 = load ptr, ptr %26, align 8, !tbaa !5
  %1341 = load ptr, ptr %38, align 8, !tbaa !5
  %1342 = load i64, ptr %64, align 8, !tbaa !9
  %1343 = load i64, ptr %56, align 8, !tbaa !9
  %1344 = mul nsw i64 %1342, %1343
  %1345 = add nsw i64 %1344, 1
  %1346 = getelementptr inbounds double, ptr %1341, i64 %1345
  %1347 = call i32 @f2c_dscal(ptr noundef %1340, ptr noundef %81, ptr noundef %1346, ptr noundef @c__1)
  br label %1348

1348:                                             ; preds = %1331
  %1349 = load i64, ptr %64, align 8, !tbaa !9
  %1350 = add nsw i64 %1349, 1
  store i64 %1350, ptr %64, align 8, !tbaa !9
  br label %1327, !llvm.loop !22

1351:                                             ; preds = %1327
  %1352 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %1352, ptr %60, align 8, !tbaa !9
  %1353 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %1353, ptr %64, align 8, !tbaa !9
  br label %1354

1354:                                             ; preds = %1377, %1351
  %1355 = load i64, ptr %64, align 8, !tbaa !9
  %1356 = load i64, ptr %60, align 8, !tbaa !9
  %1357 = icmp sle i64 %1355, %1356
  br i1 %1357, label %1358, label %1380

1358:                                             ; preds = %1354
  %1359 = load i64, ptr %71, align 8, !tbaa !9
  %1360 = sub nsw i64 %1359, 1
  store i64 %1360, ptr %61, align 8, !tbaa !9
  %1361 = load ptr, ptr %32, align 8, !tbaa !5
  %1362 = load i64, ptr %64, align 8, !tbaa !9
  %1363 = load i64, ptr %50, align 8, !tbaa !9
  %1364 = mul nsw i64 %1362, %1363
  %1365 = add nsw i64 %1364, 1
  %1366 = getelementptr inbounds double, ptr %1361, i64 %1365
  %1367 = call i32 @f2c_dscal(ptr noundef %61, ptr noundef %81, ptr noundef %1366, ptr noundef @c__1)
  %1368 = load i64, ptr %71, align 8, !tbaa !9
  %1369 = sub nsw i64 %1368, 1
  store i64 %1369, ptr %61, align 8, !tbaa !9
  %1370 = load ptr, ptr %38, align 8, !tbaa !5
  %1371 = load i64, ptr %64, align 8, !tbaa !9
  %1372 = load i64, ptr %56, align 8, !tbaa !9
  %1373 = mul nsw i64 %1371, %1372
  %1374 = add nsw i64 %1373, 1
  %1375 = getelementptr inbounds double, ptr %1370, i64 %1374
  %1376 = call i32 @f2c_dscal(ptr noundef %61, ptr noundef %81, ptr noundef %1375, ptr noundef @c__1)
  br label %1377

1377:                                             ; preds = %1358
  %1378 = load i64, ptr %64, align 8, !tbaa !9
  %1379 = add nsw i64 %1378, 1
  store i64 %1379, ptr %64, align 8, !tbaa !9
  br label %1354, !llvm.loop !23

1380:                                             ; preds = %1354
  %1381 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %1381, ptr %60, align 8, !tbaa !9
  %1382 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %1382, ptr %64, align 8, !tbaa !9
  br label %1383

1383:                                             ; preds = %1414, %1380
  %1384 = load i64, ptr %64, align 8, !tbaa !9
  %1385 = load i64, ptr %60, align 8, !tbaa !9
  %1386 = icmp sle i64 %1384, %1385
  br i1 %1386, label %1387, label %1417

1387:                                             ; preds = %1383
  %1388 = load ptr, ptr %26, align 8, !tbaa !5
  %1389 = load i64, ptr %1388, align 8, !tbaa !9
  %1390 = load i64, ptr %67, align 8, !tbaa !9
  %1391 = sub nsw i64 %1389, %1390
  store i64 %1391, ptr %61, align 8, !tbaa !9
  %1392 = load ptr, ptr %32, align 8, !tbaa !5
  %1393 = load i64, ptr %67, align 8, !tbaa !9
  %1394 = add nsw i64 %1393, 1
  %1395 = load i64, ptr %64, align 8, !tbaa !9
  %1396 = load i64, ptr %50, align 8, !tbaa !9
  %1397 = mul nsw i64 %1395, %1396
  %1398 = add nsw i64 %1394, %1397
  %1399 = getelementptr inbounds double, ptr %1392, i64 %1398
  %1400 = call i32 @f2c_dscal(ptr noundef %61, ptr noundef %81, ptr noundef %1399, ptr noundef @c__1)
  %1401 = load ptr, ptr %26, align 8, !tbaa !5
  %1402 = load i64, ptr %1401, align 8, !tbaa !9
  %1403 = load i64, ptr %67, align 8, !tbaa !9
  %1404 = sub nsw i64 %1402, %1403
  store i64 %1404, ptr %61, align 8, !tbaa !9
  %1405 = load ptr, ptr %38, align 8, !tbaa !5
  %1406 = load i64, ptr %67, align 8, !tbaa !9
  %1407 = add nsw i64 %1406, 1
  %1408 = load i64, ptr %64, align 8, !tbaa !9
  %1409 = load i64, ptr %56, align 8, !tbaa !9
  %1410 = mul nsw i64 %1408, %1409
  %1411 = add nsw i64 %1407, %1410
  %1412 = getelementptr inbounds double, ptr %1405, i64 %1411
  %1413 = call i32 @f2c_dscal(ptr noundef %61, ptr noundef %81, ptr noundef %1412, ptr noundef @c__1)
  br label %1414

1414:                                             ; preds = %1387
  %1415 = load i64, ptr %64, align 8, !tbaa !9
  %1416 = add nsw i64 %1415, 1
  store i64 %1416, ptr %64, align 8, !tbaa !9
  br label %1383, !llvm.loop !24

1417:                                             ; preds = %1383
  %1418 = load ptr, ptr %27, align 8, !tbaa !5
  %1419 = load i64, ptr %1418, align 8, !tbaa !9
  store i64 %1419, ptr %60, align 8, !tbaa !9
  %1420 = load i64, ptr %68, align 8, !tbaa !9
  %1421 = add nsw i64 %1420, 1
  store i64 %1421, ptr %64, align 8, !tbaa !9
  br label %1422

1422:                                             ; preds = %1443, %1417
  %1423 = load i64, ptr %64, align 8, !tbaa !9
  %1424 = load i64, ptr %60, align 8, !tbaa !9
  %1425 = icmp sle i64 %1423, %1424
  br i1 %1425, label %1426, label %1446

1426:                                             ; preds = %1422
  %1427 = load ptr, ptr %26, align 8, !tbaa !5
  %1428 = load ptr, ptr %32, align 8, !tbaa !5
  %1429 = load i64, ptr %64, align 8, !tbaa !9
  %1430 = load i64, ptr %50, align 8, !tbaa !9
  %1431 = mul nsw i64 %1429, %1430
  %1432 = add nsw i64 %1431, 1
  %1433 = getelementptr inbounds double, ptr %1428, i64 %1432
  %1434 = call i32 @f2c_dscal(ptr noundef %1427, ptr noundef %81, ptr noundef %1433, ptr noundef @c__1)
  %1435 = load ptr, ptr %26, align 8, !tbaa !5
  %1436 = load ptr, ptr %38, align 8, !tbaa !5
  %1437 = load i64, ptr %64, align 8, !tbaa !9
  %1438 = load i64, ptr %56, align 8, !tbaa !9
  %1439 = mul nsw i64 %1437, %1438
  %1440 = add nsw i64 %1439, 1
  %1441 = getelementptr inbounds double, ptr %1436, i64 %1440
  %1442 = call i32 @f2c_dscal(ptr noundef %1435, ptr noundef %81, ptr noundef %1441, ptr noundef @c__1)
  br label %1443

1443:                                             ; preds = %1426
  %1444 = load i64, ptr %64, align 8, !tbaa !9
  %1445 = add nsw i64 %1444, 1
  store i64 %1445, ptr %64, align 8, !tbaa !9
  br label %1422, !llvm.loop !25

1446:                                             ; preds = %1422
  %1447 = load double, ptr %81, align 8, !tbaa !11
  %1448 = load ptr, ptr %40, align 8, !tbaa !5
  %1449 = load double, ptr %1448, align 8, !tbaa !11
  %1450 = fmul double %1449, %1447
  store double %1450, ptr %1448, align 8, !tbaa !11
  br label %1451

1451:                                             ; preds = %1446, %1321
  %1452 = load i64, ptr %63, align 8, !tbaa !9
  %1453 = load i64, ptr %65, align 8, !tbaa !9
  %1454 = add nsw i64 %1453, 2
  %1455 = icmp sgt i64 %1452, %1454
  br i1 %1455, label %1456, label %1505

1456:                                             ; preds = %1451
  %1457 = load i64, ptr %72, align 8, !tbaa !9
  %1458 = sub nsw i64 %1457, 1
  store i64 %1458, ptr %60, align 8, !tbaa !9
  %1459 = load ptr, ptr %32, align 8, !tbaa !5
  %1460 = load i64, ptr %71, align 8, !tbaa !9
  %1461 = load i64, ptr %72, align 8, !tbaa !9
  %1462 = load i64, ptr %50, align 8, !tbaa !9
  %1463 = mul nsw i64 %1461, %1462
  %1464 = add nsw i64 %1460, %1463
  %1465 = getelementptr inbounds double, ptr %1459, i64 %1464
  %1466 = load ptr, ptr %33, align 8, !tbaa !5
  %1467 = load ptr, ptr %30, align 8, !tbaa !5
  %1468 = load i64, ptr %72, align 8, !tbaa !9
  %1469 = load i64, ptr %48, align 8, !tbaa !9
  %1470 = mul nsw i64 %1468, %1469
  %1471 = add nsw i64 %1470, 1
  %1472 = getelementptr inbounds double, ptr %1467, i64 %1471
  %1473 = load ptr, ptr %31, align 8, !tbaa !5
  %1474 = load ptr, ptr %38, align 8, !tbaa !5
  %1475 = load i64, ptr %71, align 8, !tbaa !9
  %1476 = load i64, ptr %56, align 8, !tbaa !9
  %1477 = add nsw i64 %1475, %1476
  %1478 = getelementptr inbounds double, ptr %1474, i64 %1477
  %1479 = load ptr, ptr %39, align 8, !tbaa !5
  %1480 = call i32 @f2c_dgemm(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %69, ptr noundef %60, ptr noundef %70, ptr noundef @c_b52, ptr noundef %1465, ptr noundef %1466, ptr noundef %1472, ptr noundef %1473, ptr noundef @c_b52, ptr noundef %1478, ptr noundef %1479)
  %1481 = load i64, ptr %72, align 8, !tbaa !9
  %1482 = sub nsw i64 %1481, 1
  store i64 %1482, ptr %60, align 8, !tbaa !9
  %1483 = load ptr, ptr %38, align 8, !tbaa !5
  %1484 = load i64, ptr %71, align 8, !tbaa !9
  %1485 = load i64, ptr %72, align 8, !tbaa !9
  %1486 = load i64, ptr %56, align 8, !tbaa !9
  %1487 = mul nsw i64 %1485, %1486
  %1488 = add nsw i64 %1484, %1487
  %1489 = getelementptr inbounds double, ptr %1483, i64 %1488
  %1490 = load ptr, ptr %39, align 8, !tbaa !5
  %1491 = load ptr, ptr %36, align 8, !tbaa !5
  %1492 = load i64, ptr %72, align 8, !tbaa !9
  %1493 = load i64, ptr %54, align 8, !tbaa !9
  %1494 = mul nsw i64 %1492, %1493
  %1495 = add nsw i64 %1494, 1
  %1496 = getelementptr inbounds double, ptr %1491, i64 %1495
  %1497 = load ptr, ptr %37, align 8, !tbaa !5
  %1498 = load ptr, ptr %38, align 8, !tbaa !5
  %1499 = load i64, ptr %71, align 8, !tbaa !9
  %1500 = load i64, ptr %56, align 8, !tbaa !9
  %1501 = add nsw i64 %1499, %1500
  %1502 = getelementptr inbounds double, ptr %1498, i64 %1501
  %1503 = load ptr, ptr %39, align 8, !tbaa !5
  %1504 = call i32 @f2c_dgemm(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %69, ptr noundef %60, ptr noundef %70, ptr noundef @c_b52, ptr noundef %1489, ptr noundef %1490, ptr noundef %1496, ptr noundef %1497, ptr noundef @c_b52, ptr noundef %1502, ptr noundef %1503)
  br label %1505

1505:                                             ; preds = %1456, %1451
  %1506 = load i64, ptr %62, align 8, !tbaa !9
  %1507 = load i64, ptr %65, align 8, !tbaa !9
  %1508 = icmp slt i64 %1506, %1507
  br i1 %1508, label %1509, label %1572

1509:                                             ; preds = %1505
  %1510 = load ptr, ptr %26, align 8, !tbaa !5
  %1511 = load i64, ptr %1510, align 8, !tbaa !9
  %1512 = load i64, ptr %67, align 8, !tbaa !9
  %1513 = sub nsw i64 %1511, %1512
  store i64 %1513, ptr %60, align 8, !tbaa !9
  %1514 = load ptr, ptr %28, align 8, !tbaa !5
  %1515 = load i64, ptr %71, align 8, !tbaa !9
  %1516 = load i64, ptr %67, align 8, !tbaa !9
  %1517 = add nsw i64 %1516, 1
  %1518 = load i64, ptr %46, align 8, !tbaa !9
  %1519 = mul nsw i64 %1517, %1518
  %1520 = add nsw i64 %1515, %1519
  %1521 = getelementptr inbounds double, ptr %1514, i64 %1520
  %1522 = load ptr, ptr %29, align 8, !tbaa !5
  %1523 = load ptr, ptr %32, align 8, !tbaa !5
  %1524 = load i64, ptr %71, align 8, !tbaa !9
  %1525 = load i64, ptr %72, align 8, !tbaa !9
  %1526 = load i64, ptr %50, align 8, !tbaa !9
  %1527 = mul nsw i64 %1525, %1526
  %1528 = add nsw i64 %1524, %1527
  %1529 = getelementptr inbounds double, ptr %1523, i64 %1528
  %1530 = load ptr, ptr %33, align 8, !tbaa !5
  %1531 = load ptr, ptr %32, align 8, !tbaa !5
  %1532 = load i64, ptr %67, align 8, !tbaa !9
  %1533 = add nsw i64 %1532, 1
  %1534 = load i64, ptr %72, align 8, !tbaa !9
  %1535 = load i64, ptr %50, align 8, !tbaa !9
  %1536 = mul nsw i64 %1534, %1535
  %1537 = add nsw i64 %1533, %1536
  %1538 = getelementptr inbounds double, ptr %1531, i64 %1537
  %1539 = load ptr, ptr %33, align 8, !tbaa !5
  %1540 = call i32 @f2c_dgemm(ptr noundef @.str.1, ptr noundef @.str, ptr noundef %60, ptr noundef %70, ptr noundef %69, ptr noundef @c_b51, ptr noundef %1521, ptr noundef %1522, ptr noundef %1529, ptr noundef %1530, ptr noundef @c_b52, ptr noundef %1538, ptr noundef %1539)
  %1541 = load ptr, ptr %26, align 8, !tbaa !5
  %1542 = load i64, ptr %1541, align 8, !tbaa !9
  %1543 = load i64, ptr %67, align 8, !tbaa !9
  %1544 = sub nsw i64 %1542, %1543
  store i64 %1544, ptr %60, align 8, !tbaa !9
  %1545 = load ptr, ptr %34, align 8, !tbaa !5
  %1546 = load i64, ptr %71, align 8, !tbaa !9
  %1547 = load i64, ptr %67, align 8, !tbaa !9
  %1548 = add nsw i64 %1547, 1
  %1549 = load i64, ptr %52, align 8, !tbaa !9
  %1550 = mul nsw i64 %1548, %1549
  %1551 = add nsw i64 %1546, %1550
  %1552 = getelementptr inbounds double, ptr %1545, i64 %1551
  %1553 = load ptr, ptr %35, align 8, !tbaa !5
  %1554 = load ptr, ptr %38, align 8, !tbaa !5
  %1555 = load i64, ptr %71, align 8, !tbaa !9
  %1556 = load i64, ptr %72, align 8, !tbaa !9
  %1557 = load i64, ptr %56, align 8, !tbaa !9
  %1558 = mul nsw i64 %1556, %1557
  %1559 = add nsw i64 %1555, %1558
  %1560 = getelementptr inbounds double, ptr %1554, i64 %1559
  %1561 = load ptr, ptr %39, align 8, !tbaa !5
  %1562 = load ptr, ptr %32, align 8, !tbaa !5
  %1563 = load i64, ptr %67, align 8, !tbaa !9
  %1564 = add nsw i64 %1563, 1
  %1565 = load i64, ptr %72, align 8, !tbaa !9
  %1566 = load i64, ptr %50, align 8, !tbaa !9
  %1567 = mul nsw i64 %1565, %1566
  %1568 = add nsw i64 %1564, %1567
  %1569 = getelementptr inbounds double, ptr %1562, i64 %1568
  %1570 = load ptr, ptr %33, align 8, !tbaa !5
  %1571 = call i32 @f2c_dgemm(ptr noundef @.str.1, ptr noundef @.str, ptr noundef %60, ptr noundef %70, ptr noundef %69, ptr noundef @c_b51, ptr noundef %1552, ptr noundef %1553, ptr noundef %1560, ptr noundef %1561, ptr noundef @c_b52, ptr noundef %1569, ptr noundef %1570)
  br label %1572

1572:                                             ; preds = %1509, %1505
  br label %1573

1573:                                             ; preds = %1572
  %1574 = load i64, ptr %63, align 8, !tbaa !9
  %1575 = add nsw i64 %1574, -1
  store i64 %1575, ptr %63, align 8, !tbaa !9
  br label %1243, !llvm.loop !26

1576:                                             ; preds = %1243
  br label %1577

1577:                                             ; preds = %1576
  %1578 = load i64, ptr %62, align 8, !tbaa !9
  %1579 = add nsw i64 %1578, 1
  store i64 %1579, ptr %62, align 8, !tbaa !9
  br label %1221, !llvm.loop !27

1580:                                             ; preds = %1221
  br label %1581

1581:                                             ; preds = %1580, %1217
  %1582 = load i64, ptr %78, align 8, !tbaa !9
  %1583 = sitofp i64 %1582 to double
  %1584 = load ptr, ptr %42, align 8, !tbaa !5
  %1585 = getelementptr inbounds double, ptr %1584, i64 1
  store double %1583, ptr %1585, align 8, !tbaa !11
  store i32 0, ptr %23, align 4
  store i32 1, ptr %86, align 4
  br label %1586

1586:                                             ; preds = %1581, %593, %366, %345, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  %1587 = load i32, ptr %23, align 4
  ret i32 %1587
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) #2

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

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

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

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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

declare i32 @f2c_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

; 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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 = !{!"long", !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}


; 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 [7 x i8], align 1
@c__2 = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@c__5 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b14 = external hidden global double, align 8
@c__1 = external hidden global i64, align 8
@c_b51 = external hidden global double, align 8
@c_b52 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dtgsyl_(ptr noundef %0, ptr nocapture noundef readonly %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, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr nocapture noundef writeonly %17, ptr noundef %18, ptr nocapture noundef readonly %19, ptr noundef %20, ptr noundef %21) local_unnamed_addr #0 {
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca double, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #5
  %35 = load i64, ptr %5, align 8, !tbaa !5
  %36 = xor i64 %35, -1
  %37 = getelementptr inbounds double, ptr %4, i64 %36
  %38 = load i64, ptr %7, align 8, !tbaa !5
  %39 = xor i64 %38, -1
  %40 = getelementptr inbounds double, ptr %6, i64 %39
  %41 = load i64, ptr %9, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds double, ptr %8, i64 %42
  %44 = load i64, ptr %11, align 8, !tbaa !5
  %45 = xor i64 %44, -1
  %46 = getelementptr inbounds double, ptr %10, i64 %45
  %47 = load i64, ptr %13, align 8, !tbaa !5
  %48 = xor i64 %47, -1
  %49 = getelementptr inbounds double, ptr %12, i64 %48
  %50 = load i64, ptr %15, align 8, !tbaa !5
  %51 = xor i64 %50, -1
  %52 = getelementptr inbounds double, ptr %14, i64 %51
  %53 = getelementptr inbounds i8, ptr %20, i64 -8
  store i64 0, ptr %21, align 8, !tbaa !5
  %54 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %55 = load i64, ptr %19, align 8, !tbaa !5
  %56 = icmp eq i64 %55, -1
  %.not = icmp eq i64 %54, 0
  br i1 %.not, label %57, label %.critedge

57:                                               ; preds = %22
  %58 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not699 = icmp eq i64 %58, 0
  br i1 %.not699, label %.thread738.sink.split, label %60

.critedge:                                        ; preds = %22
  %59 = load i64, ptr %1, align 8, !tbaa !5
  %or.cond720 = icmp ugt i64 %59, 4
  br i1 %or.cond720, label %.thread738.sink.split, label %60

60:                                               ; preds = %57, %.critedge
  %.pr = load i64, ptr %21, align 8, !tbaa !5
  %61 = icmp eq i64 %.pr, 0
  br i1 %61, label %62, label %.thread738

62:                                               ; preds = %60
  %63 = load i64, ptr %2, align 8, !tbaa !5
  %64 = icmp slt i64 %63, 1
  br i1 %64, label %.thread738.sink.split, label %65

65:                                               ; preds = %62
  %66 = load i64, ptr %3, align 8, !tbaa !5
  %67 = icmp slt i64 %66, 1
  br i1 %67, label %.thread738.sink.split, label %68

68:                                               ; preds = %65
  %69 = load i64, ptr %5, align 8, !tbaa !5
  %70 = icmp slt i64 %69, %63
  br i1 %70, label %.thread738.sink.split, label %71

71:                                               ; preds = %68
  %72 = load i64, ptr %7, align 8, !tbaa !5
  %73 = icmp slt i64 %72, %66
  br i1 %73, label %.thread738.sink.split, label %74

74:                                               ; preds = %71
  %75 = load i64, ptr %9, align 8, !tbaa !5
  %76 = icmp slt i64 %75, %63
  br i1 %76, label %.thread738.sink.split, label %77

77:                                               ; preds = %74
  %78 = load i64, ptr %11, align 8, !tbaa !5
  %79 = icmp slt i64 %78, %63
  br i1 %79, label %.thread738.sink.split, label %80

80:                                               ; preds = %77
  %81 = load i64, ptr %13, align 8, !tbaa !5
  %82 = icmp slt i64 %81, %66
  br i1 %82, label %.thread738.sink.split, label %83

83:                                               ; preds = %80
  %84 = load i64, ptr %15, align 8, !tbaa !5
  %85 = icmp slt i64 %84, %63
  br i1 %85, label %.thread738.sink.split, label %.thread

.thread:                                          ; preds = %83
  br i1 %.not, label %92, label %86

86:                                               ; preds = %.thread
  %87 = load i64, ptr %1, align 8, !tbaa !5
  %.off = add i64 %87, -1
  %switch = icmp ult i64 %.off, 2
  br i1 %switch, label %88, label %92

88:                                               ; preds = %86
  %89 = shl nuw i64 %63, 1
  %90 = mul nsw i64 %89, %66
  %91 = tail call i64 @llvm.smax.i64(i64 %90, i64 1)
  br label %92

92:                                               ; preds = %86, %.thread, %88
  %.0662 = phi i64 [ %91, %88 ], [ 1, %86 ], [ 1, %.thread ]
  %93 = uitofp nneg i64 %.0662 to double
  store double %93, ptr %18, align 8, !tbaa !9
  %94 = load i64, ptr %19, align 8, !tbaa !5
  %95 = icmp sge i64 %94, %.0662
  %or.cond = select i1 %95, i1 true, i1 %56
  br i1 %or.cond, label %.thread733, label %.thread738.sink.split

.thread738.sink.split:                            ; preds = %92, %83, %80, %77, %74, %71, %68, %65, %62, %.critedge, %57
  %.sink = phi i64 [ -1, %57 ], [ -2, %.critedge ], [ -3, %62 ], [ -4, %65 ], [ -6, %68 ], [ -8, %71 ], [ -10, %74 ], [ -12, %77 ], [ -14, %80 ], [ -16, %83 ], [ -20, %92 ]
  store i64 %.sink, ptr %21, align 8, !tbaa !5
  br label %.thread738

.thread738:                                       ; preds = %.thread738.sink.split, %60
  %96 = phi i64 [ %.pr, %60 ], [ %.sink, %.thread738.sink.split ]
  %97 = sub nsw i64 0, %96
  store i64 %97, ptr %23, align 8, !tbaa !5
  %98 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %23) #5
  br label %.loopexit

.thread733:                                       ; preds = %92
  br i1 %56, label %.loopexit, label %99

99:                                               ; preds = %.thread733
  %100 = tail call i64 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  store i64 %100, ptr %26, align 8, !tbaa !5
  %101 = tail call i64 @ilaenv_(ptr noundef nonnull @c__5, ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  store i64 %101, ptr %27, align 8, !tbaa !5
  store i64 0, ptr %31, align 8, !tbaa !5
  br i1 %.not, label %111, label %102

102:                                              ; preds = %99
  %103 = load i64, ptr %1, align 8, !tbaa !5
  %104 = icmp sgt i64 %103, 2
  br i1 %104, label %105, label %109

105:                                              ; preds = %102
  %106 = add nsw i64 %103, -2
  store i64 %106, ptr %31, align 8, !tbaa !5
  %107 = tail call i32 @dlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b14, ptr noundef nonnull @c_b14, ptr noundef %8, ptr noundef nonnull %9) #5
  %108 = tail call i32 @dlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b14, ptr noundef nonnull @c_b14, ptr noundef %14, ptr noundef nonnull %15) #5
  br label %111

109:                                              ; preds = %102
  %110 = icmp sgt i64 %103, 0
  %spec.select727 = select i1 %110, i64 2, i64 1
  br label %111

111:                                              ; preds = %109, %105, %99
  %112 = phi i1 [ false, %105 ], [ false, %99 ], [ %110, %109 ]
  %113 = phi i64 [ 1, %105 ], [ 1, %99 ], [ %spec.select727, %109 ]
  %114 = icmp slt i64 %100, 2
  %115 = icmp slt i64 %101, 2
  %or.cond3 = select i1 %114, i1 %115, i1 false
  br i1 %or.cond3, label %.lr.ph874.preheader, label %116

116:                                              ; preds = %111
  %117 = load i64, ptr %2, align 8, !tbaa !5
  %.not701 = icmp slt i64 %100, %117
  br i1 %.not701, label %177, label %118

118:                                              ; preds = %116
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %.not702 = icmp slt i64 %101, %119
  br i1 %.not702, label %177, label %.lr.ph874.preheader

.lr.ph874.preheader:                              ; preds = %118, %111
  store double 0.000000e+00, ptr %33, align 8, !tbaa !9
  store double 1.000000e+00, ptr %29, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !5
  %120 = call i32 @dtgsy2_(ptr noundef %0, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %29, ptr noundef nonnull %33, ptr noundef %20, ptr noundef nonnull %28, ptr noundef nonnull %21) #5
  %121 = load double, ptr %33, align 8, !tbaa !9
  %122 = fcmp une double %121, 0.000000e+00
  br i1 %122, label %123, label %137

123:                                              ; preds = %.lr.ph874.preheader
  %124 = load i64, ptr %1, align 8, !tbaa !5
  switch i64 %124, label %130 [
    i64 1, label %125
    i64 3, label %125
  ]

125:                                              ; preds = %123, %123
  %126 = load i64, ptr %2, align 8, !tbaa !5
  %127 = shl i64 %126, 1
  %128 = load i64, ptr %3, align 8, !tbaa !5
  %129 = mul nsw i64 %127, %128
  br label %.sink.split

130:                                              ; preds = %123
  %131 = load i64, ptr %28, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %125, %130
  %.sink913 = phi i64 [ %129, %125 ], [ %131, %130 ]
  %132 = sitofp i64 %.sink913 to double
  %133 = call double @sqrt(double noundef %132) #5
  %.sink896 = load double, ptr %33, align 8, !tbaa !9
  %.sink898 = load double, ptr %29, align 8, !tbaa !9
  %134 = call double @sqrt(double noundef %.sink898) #5
  %135 = fmul double %.sink896, %134
  %136 = fdiv double %133, %135
  store double %136, ptr %17, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %.sink.split, %.lr.ph874.preheader
  br i1 %112, label %138, label %151

138:                                              ; preds = %137
  br i1 %.not, label %141, label %139

139:                                              ; preds = %138
  %140 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %140, ptr %31, align 8, !tbaa !5
  br label %141

141:                                              ; preds = %139, %138
  %142 = load double, ptr %16, align 8, !tbaa !9
  %143 = call i32 @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %18, ptr noundef nonnull %2) #5
  %144 = load i64, ptr %2, align 8, !tbaa !5
  %145 = load i64, ptr %3, align 8, !tbaa !5
  %146 = mul nsw i64 %145, %144
  %147 = getelementptr double, ptr %18, i64 %146
  %148 = call i32 @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %147, ptr noundef nonnull %2) #5
  %149 = call i32 @dlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b14, ptr noundef nonnull @c_b14, ptr noundef %8, ptr noundef nonnull %9) #5
  %150 = call i32 @dlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b14, ptr noundef nonnull @c_b14, ptr noundef %14, ptr noundef nonnull %15) #5
  br label %151

151:                                              ; preds = %137, %141
  %.1661.peel = phi double [ %142, %141 ], [ undef, %137 ]
  %.not718.not.peel = icmp ugt i64 %113, 1
  br i1 %.not718.not.peel, label %.lr.ph874, label %.loopexit

.lr.ph874:                                        ; preds = %151
  store double 0.000000e+00, ptr %33, align 8, !tbaa !9
  store double 1.000000e+00, ptr %29, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !5
  %152 = call i32 @dtgsy2_(ptr noundef %0, ptr noundef nonnull %31, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %29, ptr noundef nonnull %33, ptr noundef %20, ptr noundef nonnull %28, ptr noundef nonnull %21) #5
  %153 = load double, ptr %33, align 8, !tbaa !9
  %154 = fcmp une double %153, 0.000000e+00
  br i1 %154, label %155, label %169

155:                                              ; preds = %.lr.ph874
  %156 = load i64, ptr %1, align 8, !tbaa !5
  switch i64 %156, label %162 [
    i64 1, label %157
    i64 3, label %157
  ]

157:                                              ; preds = %155, %155
  %158 = load i64, ptr %2, align 8, !tbaa !5
  %159 = shl i64 %158, 1
  %160 = load i64, ptr %3, align 8, !tbaa !5
  %161 = mul nsw i64 %159, %160
  br label %.sink.split899

162:                                              ; preds = %155
  %163 = load i64, ptr %28, align 8, !tbaa !5
  br label %.sink.split899

.sink.split899:                                   ; preds = %157, %162
  %.sink915 = phi i64 [ %161, %157 ], [ %163, %162 ]
  %164 = sitofp i64 %.sink915 to double
  %165 = call double @sqrt(double noundef %164) #5
  %.sink903 = load double, ptr %33, align 8, !tbaa !9
  %.sink905 = load double, ptr %29, align 8, !tbaa !9
  %166 = call double @sqrt(double noundef %.sink905) #5
  %167 = fmul double %.sink903, %166
  %168 = fdiv double %165, %167
  store double %168, ptr %17, align 8, !tbaa !9
  br label %169

169:                                              ; preds = %.sink.split899, %.lr.ph874
  br i1 %112, label %170, label %.loopexit

170:                                              ; preds = %169
  %171 = call i32 @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef %8, ptr noundef nonnull %9) #5
  %172 = load i64, ptr %2, align 8, !tbaa !5
  %173 = load i64, ptr %3, align 8, !tbaa !5
  %174 = mul nsw i64 %173, %172
  %175 = getelementptr double, ptr %18, i64 %174
  %176 = call i32 @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %175, ptr noundef nonnull %2, ptr noundef %14, ptr noundef nonnull %15) #5
  store double %.1661.peel, ptr %16, align 8, !tbaa !9
  br label %.loopexit

177:                                              ; preds = %118, %116
  %178 = icmp slt i64 %117, 1
  br i1 %178, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %177, %183
  %.0667753 = phi i64 [ %179, %183 ], [ 0, %177 ]
  %.0678752 = phi i64 [ %.1679, %183 ], [ 1, %177 ]
  %179 = add nuw nsw i64 %.0667753, 1
  %180 = getelementptr i64, ptr %20, i64 %.0667753
  store i64 %.0678752, ptr %180, align 8, !tbaa !5
  %181 = add nsw i64 %.0678752, %100
  %182 = load i64, ptr %2, align 8, !tbaa !5
  %.not703 = icmp slt i64 %181, %182
  br i1 %.not703, label %183, label %._crit_edge

183:                                              ; preds = %.lr.ph
  %184 = add nsw i64 %181, -1
  %185 = mul nsw i64 %184, %35
  %186 = getelementptr double, ptr %37, i64 %181
  %187 = getelementptr double, ptr %186, i64 %185
  %188 = load double, ptr %187, align 8, !tbaa !9
  %189 = fcmp une double %188, 0.000000e+00
  %190 = zext i1 %189 to i64
  %.1679 = add nsw i64 %181, %190
  %191 = icmp sgt i64 %.1679, %182
  br i1 %191, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %183, %.lr.ph, %177
  %192 = phi i64 [ %117, %177 ], [ %182, %.lr.ph ], [ %182, %183 ]
  %.1668 = phi i64 [ 0, %177 ], [ %179, %.lr.ph ], [ %179, %183 ]
  %193 = add nsw i64 %192, 1
  %194 = getelementptr i64, ptr %20, i64 %.1668
  store i64 %193, ptr %194, align 8, !tbaa !5
  %195 = getelementptr inbounds i64, ptr %53, i64 %.1668
  %196 = load i64, ptr %195, align 8, !tbaa !5
  %197 = icmp eq i64 %196, %193
  %198 = sext i1 %197 to i64
  %spec.select728 = add nsw i64 %.1668, %198
  %199 = add nsw i64 %spec.select728, 1
  %200 = load i64, ptr %3, align 8, !tbaa !5
  %201 = icmp slt i64 %200, 1
  br i1 %201, label %._crit_edge760, label %.lr.ph759

.lr.ph759:                                        ; preds = %._crit_edge, %206
  %.0664757 = phi i64 [ %202, %206 ], [ %199, %._crit_edge ]
  %.0674756 = phi i64 [ %.1675, %206 ], [ 1, %._crit_edge ]
  %202 = add nsw i64 %.0664757, 1
  %203 = getelementptr i64, ptr %20, i64 %.0664757
  store i64 %.0674756, ptr %203, align 8, !tbaa !5
  %204 = add nsw i64 %.0674756, %101
  %205 = load i64, ptr %3, align 8, !tbaa !5
  %.not704 = icmp slt i64 %204, %205
  br i1 %.not704, label %206, label %._crit_edge760

206:                                              ; preds = %.lr.ph759
  %207 = add nsw i64 %204, -1
  %208 = mul nsw i64 %207, %38
  %209 = getelementptr double, ptr %40, i64 %204
  %210 = getelementptr double, ptr %209, i64 %208
  %211 = load double, ptr %210, align 8, !tbaa !9
  %212 = fcmp une double %211, 0.000000e+00
  %213 = zext i1 %212 to i64
  %.1675 = add nsw i64 %204, %213
  %214 = icmp sgt i64 %.1675, %205
  br i1 %214, label %._crit_edge760, label %.lr.ph759

._crit_edge760:                                   ; preds = %206, %.lr.ph759, %._crit_edge
  %215 = phi i64 [ %200, %._crit_edge ], [ %205, %.lr.ph759 ], [ %205, %206 ]
  %.1665 = phi i64 [ %199, %._crit_edge ], [ %202, %.lr.ph759 ], [ %202, %206 ]
  %216 = add nsw i64 %215, 1
  %217 = getelementptr i64, ptr %20, i64 %.1665
  store i64 %216, ptr %217, align 8, !tbaa !5
  %218 = getelementptr inbounds i64, ptr %53, i64 %.1665
  %219 = load i64, ptr %218, align 8, !tbaa !5
  %220 = icmp eq i64 %219, %216
  %221 = sext i1 %220 to i64
  %spec.select729 = add i64 %.1665, %221
  br i1 %.not, label %386, label %.lr.ph820

.lr.ph820:                                        ; preds = %._crit_edge760
  %222 = add nsw i64 %spec.select728, 2
  %.not712805 = icmp sgt i64 %222, %spec.select729
  %invariant.gep794 = getelementptr i8, ptr %37, i64 8
  %invariant.gep796 = getelementptr i8, ptr %43, i64 8
  %invariant.gep798 = getelementptr i8, ptr %46, i64 8
  %invariant.gep800 = getelementptr i8, ptr %52, i64 8
  %223 = icmp sgt i64 %spec.select728, 0
  %224 = add i64 %38, 1
  %225 = add i64 %47, 1
  %226 = getelementptr i64, ptr %53, i64 %spec.select729
  %227 = getelementptr i8, ptr %226, i64 16
  %228 = getelementptr i64, ptr %20, i64 %spec.select729
  br label %229

229:                                              ; preds = %.lr.ph820, %384
  %.1818 = phi i64 [ 1, %.lr.ph820 ], [ %385, %384 ]
  %.2817 = phi double [ undef, %.lr.ph820 ], [ %.3, %384 ]
  store double 0.000000e+00, ptr %33, align 8, !tbaa !9
  store double 1.000000e+00, ptr %29, align 8, !tbaa !9
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  br i1 %.not712805, label %._crit_edge809.thread, label %.lr.ph808

.lr.ph808:                                        ; preds = %229
  br i1 %223, label %.lr.ph804.us, label %.loopexit750.preheader

.loopexit750.preheader:                           ; preds = %.lr.ph808
  %230 = load i64, ptr %226, align 8, !tbaa !5
  %231 = load i64, ptr %228, align 8, !tbaa !5
  %232 = sub i64 %231, %230
  store i64 %232, ptr %27, align 8, !tbaa !5
  br label %._crit_edge809.thread

.lr.ph804.us:                                     ; preds = %.lr.ph808, %..loopexit750_crit_edge.us
  %233 = phi i64 [ %280, %..loopexit750_crit_edge.us ], [ 0, %.lr.ph808 ]
  %.2676806.us = phi i64 [ %339, %..loopexit750_crit_edge.us ], [ %222, %.lr.ph808 ]
  %234 = getelementptr inbounds i64, ptr %53, i64 %.2676806.us
  %235 = load i64, ptr %234, align 8, !tbaa !5
  %236 = getelementptr i64, ptr %20, i64 %.2676806.us
  %237 = load i64, ptr %236, align 8, !tbaa !5
  %238 = add nsw i64 %237, -1
  %239 = sub i64 %237, %235
  store i64 %239, ptr %27, align 8, !tbaa !5
  %240 = mul i64 %235, %224
  %241 = getelementptr inbounds double, ptr %40, i64 %240
  %242 = mul nsw i64 %235, %41
  %243 = mul i64 %235, %225
  %244 = getelementptr inbounds double, ptr %49, i64 %243
  %245 = mul nsw i64 %235, %50
  %246 = add nsw i64 %235, -1
  %gep797.us = getelementptr double, ptr %invariant.gep796, i64 %242
  %gep801.us = getelementptr double, ptr %invariant.gep800, i64 %245
  %247 = icmp slt i64 %.2676806.us, %spec.select729
  %248 = mul nsw i64 %237, %38
  %249 = getelementptr double, ptr %40, i64 %235
  %250 = getelementptr double, ptr %249, i64 %248
  %251 = mul nsw i64 %237, %41
  %252 = mul nsw i64 %237, %47
  %253 = getelementptr double, ptr %49, i64 %235
  %254 = getelementptr double, ptr %253, i64 %252
  %255 = mul nsw i64 %237, %50
  %.not713766.us = icmp slt i64 %235, 2
  %.not714775.us.not = icmp slt i64 %235, %237
  br label %256

256:                                              ; preds = %.backedge886, %.lr.ph804.us
  %257 = phi i64 [ %233, %.lr.ph804.us ], [ %280, %.backedge886 ]
  %.2680802.us = phi i64 [ %spec.select728, %.lr.ph804.us ], [ %.2680802.us.be, %.backedge886 ]
  %258 = getelementptr inbounds i64, ptr %53, i64 %.2680802.us
  %259 = load i64, ptr %258, align 8, !tbaa !5
  %260 = getelementptr i64, ptr %20, i64 %.2680802.us
  %261 = load i64, ptr %260, align 8, !tbaa !5
  %262 = add nsw i64 %261, -1
  %263 = sub i64 %261, %259
  store i64 %263, ptr %26, align 8, !tbaa !5
  store i64 0, ptr %30, align 8, !tbaa !5
  %264 = mul nsw i64 %259, %35
  %265 = getelementptr double, ptr %37, i64 %259
  %266 = getelementptr double, ptr %265, i64 %264
  %267 = getelementptr double, ptr %43, i64 %259
  %268 = getelementptr double, ptr %267, i64 %242
  %269 = mul nsw i64 %259, %44
  %270 = getelementptr double, ptr %46, i64 %259
  %271 = getelementptr double, ptr %270, i64 %269
  %272 = getelementptr double, ptr %52, i64 %259
  %273 = getelementptr double, ptr %272, i64 %245
  %274 = call i32 @dtgsy2_(ptr noundef %0, ptr noundef nonnull %31, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %266, ptr noundef nonnull %5, ptr noundef %241, ptr noundef nonnull %7, ptr noundef %268, ptr noundef nonnull %9, ptr noundef %271, ptr noundef nonnull %11, ptr noundef %244, ptr noundef nonnull %13, ptr noundef %273, ptr noundef nonnull %15, ptr noundef nonnull %34, ptr noundef nonnull %29, ptr noundef nonnull %33, ptr noundef %227, ptr noundef nonnull %30, ptr noundef nonnull %32) #5
  %275 = load i64, ptr %32, align 8, !tbaa !5
  %276 = icmp sgt i64 %275, 0
  br i1 %276, label %277, label %278

277:                                              ; preds = %256
  store i64 %275, ptr %21, align 8, !tbaa !5
  br label %278

278:                                              ; preds = %277, %256
  %279 = load i64, ptr %30, align 8, !tbaa !5
  %280 = add nsw i64 %257, %279
  %281 = load double, ptr %34, align 8, !tbaa !9
  %282 = fcmp une double %281, 1.000000e+00
  br i1 %282, label %283, label %320

283:                                              ; preds = %278
  store i64 %246, ptr %24, align 8, !tbaa !5
  br i1 %.not713766.us, label %._crit_edge770.us, label %.lr.ph769.us

.lr.ph769.us:                                     ; preds = %283, %.lr.ph769.us
  %.0670767.us = phi i64 [ %288, %.lr.ph769.us ], [ 1, %283 ]
  %284 = mul nsw i64 %.0670767.us, %41
  %gep.us = getelementptr double, ptr %invariant.gep796, i64 %284
  %285 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep.us, ptr noundef nonnull @c__1) #5
  %286 = mul nsw i64 %.0670767.us, %50
  %gep765.us = getelementptr double, ptr %invariant.gep800, i64 %286
  %287 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep765.us, ptr noundef nonnull @c__1) #5
  %288 = add nuw nsw i64 %.0670767.us, 1
  %289 = load i64, ptr %24, align 8, !tbaa !5
  %.not713.us.not = icmp slt i64 %.0670767.us, %289
  br i1 %.not713.us.not, label %.lr.ph769.us, label %._crit_edge770.us, !llvm.loop !11

._crit_edge770.us:                                ; preds = %.lr.ph769.us, %283
  store i64 %238, ptr %24, align 8, !tbaa !5
  br i1 %.not714775.us.not, label %.lr.ph778.us, label %._crit_edge784.us

290:                                              ; preds = %.lr.ph778.us, %290
  %.1671776.us = phi i64 [ %235, %.lr.ph778.us ], [ %295, %290 ]
  store i64 %336, ptr %25, align 8, !tbaa !5
  %291 = mul nsw i64 %.1671776.us, %41
  %gep772.us = getelementptr double, ptr %invariant.gep796, i64 %291
  %292 = call i32 @f2c_dscal(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep772.us, ptr noundef nonnull @c__1) #5
  store i64 %336, ptr %25, align 8, !tbaa !5
  %293 = mul nsw i64 %.1671776.us, %50
  %gep774.us = getelementptr double, ptr %invariant.gep800, i64 %293
  %294 = call i32 @f2c_dscal(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep774.us, ptr noundef nonnull @c__1) #5
  %295 = add nsw i64 %.1671776.us, 1
  %296 = load i64, ptr %24, align 8, !tbaa !5
  %.not714.us.not = icmp slt i64 %.1671776.us, %296
  br i1 %.not714.us.not, label %290, label %._crit_edge779.us, !llvm.loop !13

._crit_edge779.us:                                ; preds = %290
  store i64 %238, ptr %24, align 8, !tbaa !5
  br i1 %.not714775.us.not, label %.lr.ph783.us, label %._crit_edge784.us

297:                                              ; preds = %.lr.ph783.us, %297
  %.2672781.us = phi i64 [ %235, %.lr.ph783.us ], [ %308, %297 ]
  %298 = load i64, ptr %2, align 8, !tbaa !5
  %299 = sub nsw i64 %298, %262
  store i64 %299, ptr %25, align 8, !tbaa !5
  %300 = mul nsw i64 %.2672781.us, %41
  %301 = getelementptr double, ptr %337, i64 %300
  %302 = call i32 @f2c_dscal(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %301, ptr noundef nonnull @c__1) #5
  %303 = load i64, ptr %2, align 8, !tbaa !5
  %304 = sub nsw i64 %303, %262
  store i64 %304, ptr %25, align 8, !tbaa !5
  %305 = mul nsw i64 %.2672781.us, %50
  %306 = getelementptr double, ptr %338, i64 %305
  %307 = call i32 @f2c_dscal(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %306, ptr noundef nonnull @c__1) #5
  %308 = add nsw i64 %.2672781.us, 1
  %309 = load i64, ptr %24, align 8, !tbaa !5
  %.not715.us.not = icmp slt i64 %.2672781.us, %309
  br i1 %.not715.us.not, label %297, label %._crit_edge784.us, !llvm.loop !14

._crit_edge784.us:                                ; preds = %297, %._crit_edge770.us, %._crit_edge779.us
  %310 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %310, ptr %24, align 8, !tbaa !5
  %.not716789.us = icmp sgt i64 %237, %310
  br i1 %.not716789.us, label %._crit_edge793.us, label %.lr.ph792.us

.lr.ph792.us:                                     ; preds = %._crit_edge784.us, %.lr.ph792.us
  %.3673790.us = phi i64 [ %315, %.lr.ph792.us ], [ %237, %._crit_edge784.us ]
  %311 = mul nsw i64 %.3673790.us, %41
  %gep786.us = getelementptr double, ptr %invariant.gep796, i64 %311
  %312 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep786.us, ptr noundef nonnull @c__1) #5
  %313 = mul nsw i64 %.3673790.us, %50
  %gep788.us = getelementptr double, ptr %invariant.gep800, i64 %313
  %314 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep788.us, ptr noundef nonnull @c__1) #5
  %315 = add nsw i64 %.3673790.us, 1
  %316 = load i64, ptr %24, align 8, !tbaa !5
  %.not716.us.not = icmp slt i64 %.3673790.us, %316
  br i1 %.not716.us.not, label %.lr.ph792.us, label %._crit_edge793.us, !llvm.loop !15

._crit_edge793.us:                                ; preds = %.lr.ph792.us, %._crit_edge784.us
  %317 = load double, ptr %34, align 8, !tbaa !9
  %318 = load double, ptr %16, align 8, !tbaa !9
  %319 = fmul double %317, %318
  store double %319, ptr %16, align 8, !tbaa !9
  br label %320

320:                                              ; preds = %._crit_edge793.us, %278
  %.not717.us = icmp eq i64 %.2680802.us, 1
  br i1 %.not717.us, label %.thread885, label %321

321:                                              ; preds = %320
  %322 = add nsw i64 %259, -1
  store i64 %322, ptr %24, align 8, !tbaa !5
  %gep795.us = getelementptr double, ptr %invariant.gep794, i64 %264
  %323 = call i32 @f2c_dgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull @c_b51, ptr noundef %gep795.us, ptr noundef nonnull %5, ptr noundef %268, ptr noundef nonnull %9, ptr noundef nonnull @c_b52, ptr noundef %gep797.us, ptr noundef nonnull %9) #5
  store i64 %322, ptr %24, align 8, !tbaa !5
  %gep799.us = getelementptr double, ptr %invariant.gep798, i64 %269
  %324 = call i32 @f2c_dgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull @c_b51, ptr noundef %gep799.us, ptr noundef nonnull %11, ptr noundef %268, ptr noundef nonnull %9, ptr noundef nonnull @c_b52, ptr noundef %gep801.us, ptr noundef nonnull %15) #5
  br i1 %247, label %325, label %.thread882

.thread885:                                       ; preds = %320
  br i1 %247, label %325, label %._crit_edge809

325:                                              ; preds = %.thread885, %321
  %326 = load i64, ptr %3, align 8, !tbaa !5
  %327 = sub nsw i64 %326, %238
  store i64 %327, ptr %24, align 8, !tbaa !5
  %328 = getelementptr double, ptr %267, i64 %251
  %329 = call i32 @f2c_dgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %26, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef nonnull @c_b52, ptr noundef %273, ptr noundef nonnull %15, ptr noundef %250, ptr noundef nonnull %7, ptr noundef nonnull @c_b52, ptr noundef %328, ptr noundef nonnull %9) #5
  %330 = load i64, ptr %3, align 8, !tbaa !5
  %331 = sub nsw i64 %330, %238
  store i64 %331, ptr %24, align 8, !tbaa !5
  %332 = getelementptr double, ptr %272, i64 %255
  %333 = call i32 @f2c_dgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %26, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef nonnull @c_b52, ptr noundef %273, ptr noundef nonnull %15, ptr noundef %254, ptr noundef nonnull %13, ptr noundef nonnull @c_b52, ptr noundef %332, ptr noundef nonnull %15) #5
  %334 = icmp sgt i64 %.2680802.us, 1
  br i1 %334, label %.backedge886, label %..loopexit750_crit_edge.us

.backedge886:                                     ; preds = %325, %.thread882
  %.2680802.us.be = add nsw i64 %.2680802.us, -1
  br label %256, !llvm.loop !16

.thread882:                                       ; preds = %321
  %335 = icmp sgt i64 %.2680802.us, 1
  br i1 %335, label %.backedge886, label %._crit_edge809

.lr.ph778.us:                                     ; preds = %._crit_edge770.us
  %336 = add nsw i64 %259, -1
  br label %290

.lr.ph783.us:                                     ; preds = %._crit_edge779.us
  %337 = getelementptr double, ptr %43, i64 %261
  %338 = getelementptr double, ptr %52, i64 %261
  br label %297

..loopexit750_crit_edge.us:                       ; preds = %325
  %339 = add nuw nsw i64 %.2676806.us, 1
  br label %.lr.ph804.us

._crit_edge809:                                   ; preds = %.thread885, %.thread882
  %.pre = load double, ptr %33, align 8, !tbaa !9
  %340 = fcmp une double %.pre, 0.000000e+00
  br i1 %340, label %341, label %._crit_edge809.thread

341:                                              ; preds = %._crit_edge809
  %342 = load i64, ptr %1, align 8, !tbaa !5
  switch i64 %342, label %355 [
    i64 1, label %343
    i64 3, label %343
  ]

343:                                              ; preds = %341, %341
  %344 = load i64, ptr %2, align 8, !tbaa !5
  %345 = shl i64 %344, 1
  %346 = load i64, ptr %3, align 8, !tbaa !5
  %347 = mul nsw i64 %345, %346
  %348 = sitofp i64 %347 to double
  %349 = call double @sqrt(double noundef %348) #5
  %350 = load double, ptr %33, align 8, !tbaa !9
  %351 = load double, ptr %29, align 8, !tbaa !9
  %352 = call double @sqrt(double noundef %351) #5
  %353 = fmul double %350, %352
  %354 = fdiv double %349, %353
  store double %354, ptr %17, align 8, !tbaa !9
  br label %._crit_edge809.thread

355:                                              ; preds = %341
  %356 = sitofp i64 %280 to double
  %357 = call double @sqrt(double noundef %356) #5
  %358 = load double, ptr %33, align 8, !tbaa !9
  %359 = load double, ptr %29, align 8, !tbaa !9
  %360 = call double @sqrt(double noundef %359) #5
  %361 = fmul double %358, %360
  %362 = fdiv double %357, %361
  store double %362, ptr %17, align 8, !tbaa !9
  br label %._crit_edge809.thread

._crit_edge809.thread:                            ; preds = %229, %.loopexit750.preheader, %343, %355, %._crit_edge809
  %363 = icmp eq i64 %.1818, 1
  %or.cond9 = and i1 %112, %363
  br i1 %or.cond9, label %364, label %375

364:                                              ; preds = %._crit_edge809.thread
  %365 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %365, ptr %31, align 8, !tbaa !5
  %366 = load double, ptr %16, align 8, !tbaa !9
  %367 = call i32 @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %18, ptr noundef nonnull %2) #5
  %368 = load i64, ptr %2, align 8, !tbaa !5
  %369 = load i64, ptr %3, align 8, !tbaa !5
  %370 = mul nsw i64 %369, %368
  %371 = getelementptr double, ptr %18, i64 %370
  %372 = call i32 @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %371, ptr noundef nonnull %2) #5
  %373 = call i32 @dlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b14, ptr noundef nonnull @c_b14, ptr noundef %8, ptr noundef nonnull %9) #5
  %374 = call i32 @dlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b14, ptr noundef nonnull @c_b14, ptr noundef %14, ptr noundef nonnull %15) #5
  br label %384

375:                                              ; preds = %._crit_edge809.thread
  %376 = icmp eq i64 %.1818, 2
  %or.cond11 = and i1 %112, %376
  br i1 %or.cond11, label %377, label %384

377:                                              ; preds = %375
  %378 = call i32 @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef %8, ptr noundef nonnull %9) #5
  %379 = load i64, ptr %2, align 8, !tbaa !5
  %380 = load i64, ptr %3, align 8, !tbaa !5
  %381 = mul nsw i64 %380, %379
  %382 = getelementptr double, ptr %18, i64 %381
  %383 = call i32 @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %382, ptr noundef nonnull %2, ptr noundef %14, ptr noundef nonnull %15) #5
  store double %.2817, ptr %16, align 8, !tbaa !9
  br label %384

384:                                              ; preds = %364, %377, %375
  %.3 = phi double [ %366, %364 ], [ %.2817, %377 ], [ %.2817, %375 ]
  %385 = add nuw nsw i64 %.1818, 1
  %.not711.not = icmp ult i64 %.1818, %113
  br i1 %.not711.not, label %229, label %.loopexit749, !llvm.loop !17

386:                                              ; preds = %._crit_edge760
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  %.not705860 = icmp slt i64 %spec.select728, 1
  br i1 %.not705860, label %.loopexit749, label %.lr.ph863

.lr.ph863:                                        ; preds = %386
  %387 = add nuw nsw i64 %spec.select728, 2
  %invariant.gep852 = getelementptr i8, ptr %40, i64 8
  %invariant.gep854 = getelementptr i8, ptr %49, i64 8
  %.not706856 = icmp slt i64 %spec.select729, %387
  %388 = add i64 %35, 1
  %389 = add i64 %44, 1
  %390 = getelementptr i64, ptr %53, i64 %spec.select729
  %391 = getelementptr i8, ptr %390, i64 16
  %invariant.gep821 = getelementptr i8, ptr %43, i64 8
  %invariant.gep822 = getelementptr i8, ptr %52, i64 8
  br i1 %.not706856, label %.loopexit749, label %.lr.ph859

..loopexit748_crit_edge:                          ; preds = %482
  %392 = add nuw nsw i64 %.3681861, 1
  br label %.lr.ph859

.lr.ph859:                                        ; preds = %.lr.ph863, %..loopexit748_crit_edge
  %.3681861 = phi i64 [ %392, %..loopexit748_crit_edge ], [ 1, %.lr.ph863 ]
  %393 = getelementptr inbounds i64, ptr %53, i64 %.3681861
  %394 = load i64, ptr %393, align 8, !tbaa !5
  %395 = getelementptr i64, ptr %20, i64 %.3681861
  %396 = load i64, ptr %395, align 8, !tbaa !5
  %397 = add nsw i64 %396, -1
  %398 = sub i64 %396, %394
  store i64 %398, ptr %26, align 8, !tbaa !5
  %399 = mul i64 %394, %388
  %400 = getelementptr inbounds double, ptr %37, i64 %399
  %401 = getelementptr double, ptr %43, i64 %394
  %402 = mul i64 %394, %389
  %403 = getelementptr inbounds double, ptr %46, i64 %402
  %404 = getelementptr double, ptr %52, i64 %394
  %405 = add nsw i64 %394, -1
  %406 = getelementptr double, ptr %43, i64 %396
  %407 = getelementptr double, ptr %52, i64 %396
  %408 = getelementptr double, ptr %404, i64 %50
  %409 = icmp slt i64 %.3681861, %spec.select728
  %410 = mul nsw i64 %396, %35
  %411 = getelementptr double, ptr %37, i64 %394
  %412 = getelementptr double, ptr %411, i64 %410
  %413 = mul nsw i64 %396, %44
  %414 = getelementptr double, ptr %46, i64 %394
  %415 = getelementptr double, ptr %414, i64 %413
  br label %416

416:                                              ; preds = %.backedge, %.lr.ph859
  %.3677857 = phi i64 [ %spec.select729, %.lr.ph859 ], [ %.3677857.be, %.backedge ]
  %417 = getelementptr inbounds i64, ptr %53, i64 %.3677857
  %418 = load i64, ptr %417, align 8, !tbaa !5
  %419 = getelementptr i64, ptr %20, i64 %.3677857
  %420 = load i64, ptr %419, align 8, !tbaa !5
  %421 = add nsw i64 %420, -1
  %422 = sub i64 %420, %418
  store i64 %422, ptr %27, align 8, !tbaa !5
  %423 = mul nsw i64 %418, %38
  %424 = getelementptr double, ptr %40, i64 %418
  %425 = getelementptr double, ptr %424, i64 %423
  %426 = mul nsw i64 %418, %41
  %427 = getelementptr double, ptr %401, i64 %426
  %428 = mul nsw i64 %418, %47
  %429 = getelementptr double, ptr %49, i64 %418
  %430 = getelementptr double, ptr %429, i64 %428
  %431 = mul nsw i64 %418, %50
  %432 = getelementptr double, ptr %404, i64 %431
  %433 = call i32 @dtgsy2_(ptr noundef %0, ptr noundef nonnull %31, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef %400, ptr noundef nonnull %5, ptr noundef %425, ptr noundef nonnull %7, ptr noundef %427, ptr noundef nonnull %9, ptr noundef %403, ptr noundef nonnull %11, ptr noundef %430, ptr noundef nonnull %13, ptr noundef %432, ptr noundef nonnull %15, ptr noundef nonnull %34, ptr noundef nonnull %29, ptr noundef nonnull %33, ptr noundef %391, ptr noundef nonnull %30, ptr noundef nonnull %32) #5
  %434 = load i64, ptr %32, align 8, !tbaa !5
  %435 = icmp sgt i64 %434, 0
  br i1 %435, label %436, label %437

436:                                              ; preds = %416
  store i64 %434, ptr %21, align 8, !tbaa !5
  br label %437

437:                                              ; preds = %436, %416
  %438 = load double, ptr %34, align 8, !tbaa !9
  %439 = fcmp une double %438, 1.000000e+00
  br i1 %439, label %440, label %476

440:                                              ; preds = %437
  %441 = add nsw i64 %418, -1
  store i64 %441, ptr %24, align 8, !tbaa !5
  %.not707824 = icmp slt i64 %418, 2
  br i1 %.not707824, label %._crit_edge828, label %.lr.ph827

.lr.ph827:                                        ; preds = %440, %.lr.ph827
  %.4825 = phi i64 [ %446, %.lr.ph827 ], [ 1, %440 ]
  %442 = mul nsw i64 %.4825, %41
  %gep = getelementptr double, ptr %invariant.gep821, i64 %442
  %443 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %444 = mul nsw i64 %.4825, %50
  %gep823 = getelementptr double, ptr %invariant.gep822, i64 %444
  %445 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep823, ptr noundef nonnull @c__1) #5
  %446 = add nuw nsw i64 %.4825, 1
  %447 = load i64, ptr %24, align 8, !tbaa !5
  %.not707.not = icmp slt i64 %.4825, %447
  br i1 %.not707.not, label %.lr.ph827, label %._crit_edge828, !llvm.loop !18

._crit_edge828:                                   ; preds = %.lr.ph827, %440
  store i64 %421, ptr %24, align 8, !tbaa !5
  %.not708833.not = icmp slt i64 %418, %420
  br i1 %.not708833.not, label %.lr.ph836, label %._crit_edge842

.lr.ph836:                                        ; preds = %._crit_edge828, %.lr.ph836
  %.5834 = phi i64 [ %452, %.lr.ph836 ], [ %418, %._crit_edge828 ]
  store i64 %405, ptr %25, align 8, !tbaa !5
  %448 = mul nsw i64 %.5834, %41
  %gep830 = getelementptr double, ptr %invariant.gep821, i64 %448
  %449 = call i32 @f2c_dscal(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep830, ptr noundef nonnull @c__1) #5
  store i64 %405, ptr %25, align 8, !tbaa !5
  %450 = mul nsw i64 %.5834, %50
  %gep832 = getelementptr double, ptr %invariant.gep822, i64 %450
  %451 = call i32 @f2c_dscal(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep832, ptr noundef nonnull @c__1) #5
  %452 = add nsw i64 %.5834, 1
  %453 = load i64, ptr %24, align 8, !tbaa !5
  %.not708.not = icmp slt i64 %.5834, %453
  br i1 %.not708.not, label %.lr.ph836, label %._crit_edge837, !llvm.loop !19

._crit_edge837:                                   ; preds = %.lr.ph836
  store i64 %421, ptr %24, align 8, !tbaa !5
  br i1 %.not708833.not, label %.lr.ph841, label %._crit_edge842

.lr.ph841:                                        ; preds = %._crit_edge837, %.lr.ph841
  %.6839 = phi i64 [ %464, %.lr.ph841 ], [ %418, %._crit_edge837 ]
  %454 = load i64, ptr %2, align 8, !tbaa !5
  %455 = sub nsw i64 %454, %397
  store i64 %455, ptr %25, align 8, !tbaa !5
  %456 = mul nsw i64 %.6839, %41
  %457 = getelementptr double, ptr %406, i64 %456
  %458 = call i32 @f2c_dscal(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %457, ptr noundef nonnull @c__1) #5
  %459 = load i64, ptr %2, align 8, !tbaa !5
  %460 = sub nsw i64 %459, %397
  store i64 %460, ptr %25, align 8, !tbaa !5
  %461 = mul nsw i64 %.6839, %50
  %462 = getelementptr double, ptr %407, i64 %461
  %463 = call i32 @f2c_dscal(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %462, ptr noundef nonnull @c__1) #5
  %464 = add nsw i64 %.6839, 1
  %465 = load i64, ptr %24, align 8, !tbaa !5
  %.not709.not = icmp slt i64 %.6839, %465
  br i1 %.not709.not, label %.lr.ph841, label %._crit_edge842, !llvm.loop !20

._crit_edge842:                                   ; preds = %.lr.ph841, %._crit_edge828, %._crit_edge837
  %466 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %466, ptr %24, align 8, !tbaa !5
  %.not710847 = icmp sgt i64 %420, %466
  br i1 %.not710847, label %._crit_edge851, label %.lr.ph850

.lr.ph850:                                        ; preds = %._crit_edge842, %.lr.ph850
  %.7848 = phi i64 [ %471, %.lr.ph850 ], [ %420, %._crit_edge842 ]
  %467 = mul nsw i64 %.7848, %41
  %gep844 = getelementptr double, ptr %invariant.gep821, i64 %467
  %468 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep844, ptr noundef nonnull @c__1) #5
  %469 = mul nsw i64 %.7848, %50
  %gep846 = getelementptr double, ptr %invariant.gep822, i64 %469
  %470 = call i32 @f2c_dscal(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep846, ptr noundef nonnull @c__1) #5
  %471 = add nsw i64 %.7848, 1
  %472 = load i64, ptr %24, align 8, !tbaa !5
  %.not710.not = icmp slt i64 %.7848, %472
  br i1 %.not710.not, label %.lr.ph850, label %._crit_edge851, !llvm.loop !21

._crit_edge851:                                   ; preds = %.lr.ph850, %._crit_edge842
  %473 = load double, ptr %34, align 8, !tbaa !9
  %474 = load double, ptr %16, align 8, !tbaa !9
  %475 = fmul double %473, %474
  store double %475, ptr %16, align 8, !tbaa !9
  br label %476

476:                                              ; preds = %._crit_edge851, %437
  %477 = icmp sgt i64 %.3677857, %387
  br i1 %477, label %478, label %.thread884

478:                                              ; preds = %476
  %479 = add nsw i64 %418, -1
  store i64 %479, ptr %24, align 8, !tbaa !5
  %gep853 = getelementptr double, ptr %invariant.gep852, i64 %423
  %480 = call i32 @f2c_dgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %26, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef nonnull @c_b52, ptr noundef %427, ptr noundef nonnull %9, ptr noundef %gep853, ptr noundef nonnull %7, ptr noundef nonnull @c_b52, ptr noundef %408, ptr noundef nonnull %15) #5
  store i64 %479, ptr %24, align 8, !tbaa !5
  %gep855 = getelementptr double, ptr %invariant.gep854, i64 %428
  %481 = call i32 @f2c_dgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %26, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef nonnull @c_b52, ptr noundef %432, ptr noundef nonnull %15, ptr noundef %gep855, ptr noundef nonnull %13, ptr noundef nonnull @c_b52, ptr noundef %408, ptr noundef nonnull %15) #5
  br i1 %409, label %482, label %.backedge

.thread884:                                       ; preds = %476
  br i1 %409, label %482, label %.loopexit749

482:                                              ; preds = %.thread884, %478
  %483 = load i64, ptr %2, align 8, !tbaa !5
  %484 = sub nsw i64 %483, %397
  store i64 %484, ptr %24, align 8, !tbaa !5
  %485 = getelementptr double, ptr %406, i64 %426
  %486 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull @c_b51, ptr noundef %412, ptr noundef nonnull %5, ptr noundef %427, ptr noundef nonnull %9, ptr noundef nonnull @c_b52, ptr noundef %485, ptr noundef nonnull %9) #5
  %487 = load i64, ptr %2, align 8, !tbaa !5
  %488 = sub nsw i64 %487, %397
  store i64 %488, ptr %24, align 8, !tbaa !5
  %489 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef nonnull %26, ptr noundef nonnull @c_b51, ptr noundef %415, ptr noundef nonnull %11, ptr noundef %432, ptr noundef nonnull %15, ptr noundef nonnull @c_b52, ptr noundef %485, ptr noundef nonnull %9) #5
  br i1 %477, label %.backedge, label %..loopexit748_crit_edge

.backedge:                                        ; preds = %478, %482
  %.3677857.be = add nsw i64 %.3677857, -1
  br label %416, !llvm.loop !22

.loopexit749:                                     ; preds = %384, %.thread884, %.lr.ph863, %386
  store double %93, ptr %18, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %151, %169, %170, %.thread733, %.loopexit749, %.thread738
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  ret i32 0
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

declare i32 @f2c_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

; 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 i64 @llvm.smax.i64(i64, i64) #4

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}


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