; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4
@c_n1 = external hidden global i32, align 4
@c__5 = external hidden global i32, align 4
@.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 i32, align 4
@c_b51 = external hidden global double, align 8
@c_b52 = external hidden global double, align 8

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

159:                                              ; preds = %22
  %160 = load ptr, ptr %23, align 8, !tbaa !5
  %161 = call i32 @lsame_(ptr noundef %160, ptr noundef @.str.1)
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %165, label %163

163:                                              ; preds = %159
  %164 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -1, ptr %164, align 4, !tbaa !9
  br label %180

165:                                              ; preds = %159, %22
  %166 = load i32, ptr %82, align 4, !tbaa !9
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %179

168:                                              ; preds = %165
  %169 = load ptr, ptr %24, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = icmp slt i32 %170, 0
  br i1 %171, label %176, label %172

172:                                              ; preds = %168
  %173 = load ptr, ptr %24, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = icmp sgt i32 %174, 4
  br i1 %175, label %176, label %178

176:                                              ; preds = %172, %168
  %177 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -2, ptr %177, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %176, %172
  br label %179

179:                                              ; preds = %178, %165
  br label %180

180:                                              ; preds = %179, %163
  %181 = load ptr, ptr %44, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = icmp eq i32 %182, 0
  br i1 %183, label %184, label %294

184:                                              ; preds = %180
  %185 = load ptr, ptr %25, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = icmp sle i32 %186, 0
  br i1 %187, label %188, label %190

188:                                              ; preds = %184
  %189 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -3, ptr %189, align 4, !tbaa !9
  br label %293

190:                                              ; preds = %184
  %191 = load ptr, ptr %26, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = icmp sle i32 %192, 0
  br i1 %193, label %194, label %196

194:                                              ; preds = %190
  %195 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -4, ptr %195, align 4, !tbaa !9
  br label %292

196:                                              ; preds = %190
  %197 = load ptr, ptr %28, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = load ptr, ptr %25, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = icmp sge i32 1, %200
  br i1 %201, label %202, label %203

202:                                              ; preds = %196
  br label %206

203:                                              ; preds = %196
  %204 = load ptr, ptr %25, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %203, %202
  %207 = phi i32 [ 1, %202 ], [ %205, %203 ]
  %208 = icmp slt i32 %198, %207
  br i1 %208, label %209, label %211

209:                                              ; preds = %206
  %210 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -6, ptr %210, align 4, !tbaa !9
  br label %291

211:                                              ; preds = %206
  %212 = load ptr, ptr %30, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = load ptr, ptr %26, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = icmp sge i32 1, %215
  br i1 %216, label %217, label %218

217:                                              ; preds = %211
  br label %221

218:                                              ; preds = %211
  %219 = load ptr, ptr %26, align 8, !tbaa !5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %218, %217
  %222 = phi i32 [ 1, %217 ], [ %220, %218 ]
  %223 = icmp slt i32 %213, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %221
  %225 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -8, ptr %225, align 4, !tbaa !9
  br label %290

226:                                              ; preds = %221
  %227 = load ptr, ptr %32, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = load ptr, ptr %25, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = icmp sge i32 1, %230
  br i1 %231, label %232, label %233

232:                                              ; preds = %226
  br label %236

233:                                              ; preds = %226
  %234 = load ptr, ptr %25, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  br label %236

236:                                              ; preds = %233, %232
  %237 = phi i32 [ 1, %232 ], [ %235, %233 ]
  %238 = icmp slt i32 %228, %237
  br i1 %238, label %239, label %241

239:                                              ; preds = %236
  %240 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -10, ptr %240, align 4, !tbaa !9
  br label %289

241:                                              ; preds = %236
  %242 = load ptr, ptr %34, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = load ptr, ptr %25, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = icmp sge i32 1, %245
  br i1 %246, label %247, label %248

247:                                              ; preds = %241
  br label %251

248:                                              ; preds = %241
  %249 = load ptr, ptr %25, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  br label %251

251:                                              ; preds = %248, %247
  %252 = phi i32 [ 1, %247 ], [ %250, %248 ]
  %253 = icmp slt i32 %243, %252
  br i1 %253, label %254, label %256

254:                                              ; preds = %251
  %255 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -12, ptr %255, align 4, !tbaa !9
  br label %288

256:                                              ; preds = %251
  %257 = load ptr, ptr %36, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = load ptr, ptr %26, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp sge i32 1, %260
  br i1 %261, label %262, label %263

262:                                              ; preds = %256
  br label %266

263:                                              ; preds = %256
  %264 = load ptr, ptr %26, align 8, !tbaa !5
  %265 = load i32, ptr %264, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %263, %262
  %267 = phi i32 [ 1, %262 ], [ %265, %263 ]
  %268 = icmp slt i32 %258, %267
  br i1 %268, label %269, label %271

269:                                              ; preds = %266
  %270 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -14, ptr %270, align 4, !tbaa !9
  br label %287

271:                                              ; preds = %266
  %272 = load ptr, ptr %38, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = load ptr, ptr %25, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = icmp sge i32 1, %275
  br i1 %276, label %277, label %278

277:                                              ; preds = %271
  br label %281

278:                                              ; preds = %271
  %279 = load ptr, ptr %25, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  br label %281

281:                                              ; preds = %278, %277
  %282 = phi i32 [ 1, %277 ], [ %280, %278 ]
  %283 = icmp slt i32 %273, %282
  br i1 %283, label %284, label %286

284:                                              ; preds = %281
  %285 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -16, ptr %285, align 4, !tbaa !9
  br label %286

286:                                              ; preds = %284, %281
  br label %287

287:                                              ; preds = %286, %269
  br label %288

288:                                              ; preds = %287, %254
  br label %289

289:                                              ; preds = %288, %239
  br label %290

290:                                              ; preds = %289, %224
  br label %291

291:                                              ; preds = %290, %209
  br label %292

292:                                              ; preds = %291, %194
  br label %293

293:                                              ; preds = %292, %188
  br label %294

294:                                              ; preds = %293, %180
  %295 = load ptr, ptr %44, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %343

298:                                              ; preds = %294
  %299 = load i32, ptr %82, align 4, !tbaa !9
  %300 = icmp ne i32 %299, 0
  br i1 %300, label %301, label %327

301:                                              ; preds = %298
  %302 = load ptr, ptr %24, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = icmp eq i32 %303, 1
  br i1 %304, label %309, label %305

305:                                              ; preds = %301
  %306 = load ptr, ptr %24, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = icmp eq i32 %307, 2
  br i1 %308, label %309, label %325

309:                                              ; preds = %305, %301
  store i32 1, ptr %57, align 4, !tbaa !9
  %310 = load ptr, ptr %25, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = shl i32 %311, 1
  %313 = load ptr, ptr %26, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = mul nsw i32 %312, %314
  store i32 %315, ptr %58, align 4, !tbaa !9
  %316 = load i32, ptr %57, align 4, !tbaa !9
  %317 = load i32, ptr %58, align 4, !tbaa !9
  %318 = icmp sge i32 %316, %317
  br i1 %318, label %319, label %321

319:                                              ; preds = %309
  %320 = load i32, ptr %57, align 4, !tbaa !9
  br label %323

321:                                              ; preds = %309
  %322 = load i32, ptr %58, align 4, !tbaa !9
  br label %323

323:                                              ; preds = %321, %319
  %324 = phi i32 [ %320, %319 ], [ %322, %321 ]
  store i32 %324, ptr %70, align 4, !tbaa !9
  br label %326

325:                                              ; preds = %305
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %326

326:                                              ; preds = %325, %323
  br label %328

327:                                              ; preds = %298
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %327, %326
  %329 = load i32, ptr %70, align 4, !tbaa !9
  %330 = sitofp i32 %329 to double
  %331 = load ptr, ptr %41, align 8, !tbaa !5
  %332 = getelementptr inbounds double, ptr %331, i64 1
  store double %330, ptr %332, align 8, !tbaa !11
  %333 = load ptr, ptr %42, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = load i32, ptr %70, align 4, !tbaa !9
  %336 = icmp slt i32 %334, %335
  br i1 %336, label %337, label %342

337:                                              ; preds = %328
  %338 = load i32, ptr %84, align 4, !tbaa !9
  %339 = icmp ne i32 %338, 0
  br i1 %339, label %342, label %340

340:                                              ; preds = %337
  %341 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -20, ptr %341, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %340, %337, %328
  br label %343

343:                                              ; preds = %342, %294
  %344 = load ptr, ptr %44, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %352

347:                                              ; preds = %343
  %348 = load ptr, ptr %44, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = sub nsw i32 0, %349
  store i32 %350, ptr %57, align 4, !tbaa !9
  %351 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %57, i32 noundef 6)
  store i32 1, ptr %85, align 4
  br label %1651

352:                                              ; preds = %343
  %353 = load i32, ptr %84, align 4, !tbaa !9
  %354 = icmp ne i32 %353, 0
  br i1 %354, label %355, label %356

355:                                              ; preds = %352
  store i32 1, ptr %85, align 4
  br label %1651

356:                                              ; preds = %352
  br label %357

357:                                              ; preds = %356
  %358 = load ptr, ptr %25, align 8, !tbaa !5
  %359 = load i32, ptr %358, align 4, !tbaa !9
  %360 = icmp eq i32 %359, 0
  br i1 %360, label %365, label %361

361:                                              ; preds = %357
  %362 = load ptr, ptr %26, align 8, !tbaa !5
  %363 = load i32, ptr %362, align 4, !tbaa !9
  %364 = icmp eq i32 %363, 0
  br i1 %364, label %365, label %377

365:                                              ; preds = %361, %357
  %366 = load ptr, ptr %39, align 8, !tbaa !5
  store double 1.000000e+00, ptr %366, align 8, !tbaa !11
  %367 = load i32, ptr %82, align 4, !tbaa !9
  %368 = icmp ne i32 %367, 0
  br i1 %368, label %369, label %376

369:                                              ; preds = %365
  %370 = load ptr, ptr %24, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = icmp ne i32 %371, 0
  br i1 %372, label %373, label %375

373:                                              ; preds = %369
  %374 = load ptr, ptr %40, align 8, !tbaa !5
  store double 0.000000e+00, ptr %374, align 8, !tbaa !11
  br label %375

375:                                              ; preds = %373, %369
  br label %376

376:                                              ; preds = %375, %365
  store i32 1, ptr %85, align 4
  br label %1651

377:                                              ; preds = %361
  %378 = load ptr, ptr %23, align 8, !tbaa !5
  %379 = load ptr, ptr %25, align 8, !tbaa !5
  %380 = load ptr, ptr %26, align 8, !tbaa !5
  %381 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.2, ptr noundef %378, ptr noundef %379, ptr noundef %380, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %381, ptr %74, align 4, !tbaa !9
  %382 = load ptr, ptr %23, align 8, !tbaa !5
  %383 = load ptr, ptr %25, align 8, !tbaa !5
  %384 = load ptr, ptr %26, align 8, !tbaa !5
  %385 = call i32 @ilaenv_(ptr noundef @c__5, ptr noundef @.str.2, ptr noundef %382, ptr noundef %383, ptr noundef %384, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %385, ptr %75, align 4, !tbaa !9
  store i32 1, ptr %83, align 4, !tbaa !9
  store i32 0, ptr %68, align 4, !tbaa !9
  %386 = load i32, ptr %82, align 4, !tbaa !9
  %387 = icmp ne i32 %386, 0
  br i1 %387, label %388, label %417

388:                                              ; preds = %377
  %389 = load ptr, ptr %24, align 8, !tbaa !5
  %390 = load i32, ptr %389, align 4, !tbaa !9
  %391 = icmp sge i32 %390, 3
  br i1 %391, label %392, label %410

392:                                              ; preds = %388
  %393 = load ptr, ptr %24, align 8, !tbaa !5
  %394 = load i32, ptr %393, align 4, !tbaa !9
  %395 = sub nsw i32 %394, 2
  store i32 %395, ptr %68, align 4, !tbaa !9
  %396 = load ptr, ptr %25, align 8, !tbaa !5
  %397 = load ptr, ptr %26, align 8, !tbaa !5
  %398 = load ptr, ptr %31, align 8, !tbaa !5
  %399 = load i32, ptr %50, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds double, ptr %398, i64 %400
  %402 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.3, ptr noundef %396, ptr noundef %397, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %401, ptr noundef %402)
  %403 = load ptr, ptr %25, align 8, !tbaa !5
  %404 = load ptr, ptr %26, align 8, !tbaa !5
  %405 = load ptr, ptr %37, align 8, !tbaa !5
  %406 = load i32, ptr %56, align 4, !tbaa !9
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %405, i64 %407
  %409 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.3, ptr noundef %403, ptr noundef %404, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %408, ptr noundef %409)
  br label %416

410:                                              ; preds = %388
  %411 = load ptr, ptr %24, align 8, !tbaa !5
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = icmp sge i32 %412, 1
  br i1 %413, label %414, label %415

414:                                              ; preds = %410
  store i32 2, ptr %83, align 4, !tbaa !9
  br label %415

415:                                              ; preds = %414, %410
  br label %416

416:                                              ; preds = %415, %392
  br label %417

417:                                              ; preds = %416, %377
  %418 = load i32, ptr %74, align 4, !tbaa !9
  %419 = icmp sle i32 %418, 1
  br i1 %419, label %420, label %423

420:                                              ; preds = %417
  %421 = load i32, ptr %75, align 4, !tbaa !9
  %422 = icmp sle i32 %421, 1
  br i1 %422, label %433, label %423

423:                                              ; preds = %420, %417
  %424 = load i32, ptr %74, align 4, !tbaa !9
  %425 = load ptr, ptr %25, align 8, !tbaa !5
  %426 = load i32, ptr %425, align 4, !tbaa !9
  %427 = icmp sge i32 %424, %426
  br i1 %427, label %428, label %611

428:                                              ; preds = %423
  %429 = load i32, ptr %75, align 4, !tbaa !9
  %430 = load ptr, ptr %26, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = icmp sge i32 %429, %431
  br i1 %432, label %433, label %611

433:                                              ; preds = %428, %420
  %434 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %434, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %81, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %607, %433
  %436 = load i32, ptr %81, align 4, !tbaa !9
  %437 = load i32, ptr %57, align 4, !tbaa !9
  %438 = icmp sle i32 %436, %437
  br i1 %438, label %439, label %610

439:                                              ; preds = %435
  store double 0.000000e+00, ptr %76, align 8, !tbaa !11
  store double 1.000000e+00, ptr %61, align 8, !tbaa !11
  store i32 0, ptr %79, align 4, !tbaa !9
  %440 = load ptr, ptr %23, align 8, !tbaa !5
  %441 = load ptr, ptr %25, align 8, !tbaa !5
  %442 = load ptr, ptr %26, align 8, !tbaa !5
  %443 = load ptr, ptr %27, align 8, !tbaa !5
  %444 = load i32, ptr %46, align 4, !tbaa !9
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds double, ptr %443, i64 %445
  %447 = load ptr, ptr %28, align 8, !tbaa !5
  %448 = load ptr, ptr %29, align 8, !tbaa !5
  %449 = load i32, ptr %48, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %448, i64 %450
  %452 = load ptr, ptr %30, align 8, !tbaa !5
  %453 = load ptr, ptr %31, align 8, !tbaa !5
  %454 = load i32, ptr %50, align 4, !tbaa !9
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds double, ptr %453, i64 %455
  %457 = load ptr, ptr %32, align 8, !tbaa !5
  %458 = load ptr, ptr %33, align 8, !tbaa !5
  %459 = load i32, ptr %52, align 4, !tbaa !9
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds double, ptr %458, i64 %460
  %462 = load ptr, ptr %34, align 8, !tbaa !5
  %463 = load ptr, ptr %35, align 8, !tbaa !5
  %464 = load i32, ptr %54, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %463, i64 %465
  %467 = load ptr, ptr %36, align 8, !tbaa !5
  %468 = load ptr, ptr %37, align 8, !tbaa !5
  %469 = load i32, ptr %56, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %468, i64 %470
  %472 = load ptr, ptr %38, align 8, !tbaa !5
  %473 = load ptr, ptr %39, align 8, !tbaa !5
  %474 = load ptr, ptr %43, align 8, !tbaa !5
  %475 = getelementptr inbounds i32, ptr %474, i64 1
  %476 = load ptr, ptr %44, align 8, !tbaa !5
  call void @dtgsy2_(ptr noundef %440, ptr noundef %68, ptr noundef %441, ptr noundef %442, ptr noundef %446, ptr noundef %447, ptr noundef %451, ptr noundef %452, ptr noundef %456, ptr noundef %457, ptr noundef %461, ptr noundef %462, ptr noundef %466, ptr noundef %467, ptr noundef %471, ptr noundef %472, ptr noundef %473, ptr noundef %61, ptr noundef %76, ptr noundef %475, ptr noundef %79, ptr noundef %476)
  %477 = load double, ptr %76, align 8, !tbaa !11
  %478 = fcmp une double %477, 0.000000e+00
  br i1 %478, label %479, label %513

479:                                              ; preds = %439
  %480 = load ptr, ptr %24, align 8, !tbaa !5
  %481 = load i32, ptr %480, align 4, !tbaa !9
  %482 = icmp eq i32 %481, 1
  br i1 %482, label %487, label %483

483:                                              ; preds = %479
  %484 = load ptr, ptr %24, align 8, !tbaa !5
  %485 = load i32, ptr %484, align 4, !tbaa !9
  %486 = icmp eq i32 %485, 3
  br i1 %486, label %487, label %502

487:                                              ; preds = %483, %479
  %488 = load ptr, ptr %25, align 8, !tbaa !5
  %489 = load i32, ptr %488, align 4, !tbaa !9
  %490 = shl i32 %489, 1
  %491 = load ptr, ptr %26, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  %493 = mul nsw i32 %490, %492
  %494 = sitofp i32 %493 to double
  %495 = call double @sqrt(double noundef %494) #4
  %496 = load double, ptr %76, align 8, !tbaa !11
  %497 = load double, ptr %61, align 8, !tbaa !11
  %498 = call double @sqrt(double noundef %497) #4
  %499 = fmul double %496, %498
  %500 = fdiv double %495, %499
  %501 = load ptr, ptr %40, align 8, !tbaa !5
  store double %500, ptr %501, align 8, !tbaa !11
  br label %512

502:                                              ; preds = %483
  %503 = load i32, ptr %79, align 4, !tbaa !9
  %504 = sitofp i32 %503 to double
  %505 = call double @sqrt(double noundef %504) #4
  %506 = load double, ptr %76, align 8, !tbaa !11
  %507 = load double, ptr %61, align 8, !tbaa !11
  %508 = call double @sqrt(double noundef %507) #4
  %509 = fmul double %506, %508
  %510 = fdiv double %505, %509
  %511 = load ptr, ptr %40, align 8, !tbaa !5
  store double %510, ptr %511, align 8, !tbaa !11
  br label %512

512:                                              ; preds = %502, %487
  br label %513

513:                                              ; preds = %512, %439
  %514 = load i32, ptr %83, align 4, !tbaa !9
  %515 = icmp eq i32 %514, 2
  br i1 %515, label %516, label %569

516:                                              ; preds = %513
  %517 = load i32, ptr %81, align 4, !tbaa !9
  %518 = icmp eq i32 %517, 1
  br i1 %518, label %519, label %569

519:                                              ; preds = %516
  %520 = load i32, ptr %82, align 4, !tbaa !9
  %521 = icmp ne i32 %520, 0
  br i1 %521, label %522, label %525

522:                                              ; preds = %519
  %523 = load ptr, ptr %24, align 8, !tbaa !5
  %524 = load i32, ptr %523, align 4, !tbaa !9
  store i32 %524, ptr %68, align 4, !tbaa !9
  br label %525

525:                                              ; preds = %522, %519
  %526 = load ptr, ptr %39, align 8, !tbaa !5
  %527 = load double, ptr %526, align 8, !tbaa !11
  store double %527, ptr %71, align 8, !tbaa !11
  %528 = load ptr, ptr %25, align 8, !tbaa !5
  %529 = load ptr, ptr %26, align 8, !tbaa !5
  %530 = load ptr, ptr %31, align 8, !tbaa !5
  %531 = load i32, ptr %50, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %530, i64 %532
  %534 = load ptr, ptr %32, align 8, !tbaa !5
  %535 = load ptr, ptr %41, align 8, !tbaa !5
  %536 = getelementptr inbounds double, ptr %535, i64 1
  %537 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %528, ptr noundef %529, ptr noundef %533, ptr noundef %534, ptr noundef %536, ptr noundef %537)
  %538 = load ptr, ptr %25, align 8, !tbaa !5
  %539 = load ptr, ptr %26, align 8, !tbaa !5
  %540 = load ptr, ptr %37, align 8, !tbaa !5
  %541 = load i32, ptr %56, align 4, !tbaa !9
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds double, ptr %540, i64 %542
  %544 = load ptr, ptr %38, align 8, !tbaa !5
  %545 = load ptr, ptr %41, align 8, !tbaa !5
  %546 = load ptr, ptr %25, align 8, !tbaa !5
  %547 = load i32, ptr %546, align 4, !tbaa !9
  %548 = load ptr, ptr %26, align 8, !tbaa !5
  %549 = load i32, ptr %548, align 4, !tbaa !9
  %550 = mul nsw i32 %547, %549
  %551 = add nsw i32 %550, 1
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds double, ptr %545, i64 %552
  %554 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %538, ptr noundef %539, ptr noundef %543, ptr noundef %544, ptr noundef %553, ptr noundef %554)
  %555 = load ptr, ptr %25, align 8, !tbaa !5
  %556 = load ptr, ptr %26, align 8, !tbaa !5
  %557 = load ptr, ptr %31, align 8, !tbaa !5
  %558 = load i32, ptr %50, align 4, !tbaa !9
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds double, ptr %557, i64 %559
  %561 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.3, ptr noundef %555, ptr noundef %556, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %560, ptr noundef %561)
  %562 = load ptr, ptr %25, align 8, !tbaa !5
  %563 = load ptr, ptr %26, align 8, !tbaa !5
  %564 = load ptr, ptr %37, align 8, !tbaa !5
  %565 = load i32, ptr %56, align 4, !tbaa !9
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds double, ptr %564, i64 %566
  %568 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.3, ptr noundef %562, ptr noundef %563, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %567, ptr noundef %568)
  br label %606

569:                                              ; preds = %516, %513
  %570 = load i32, ptr %83, align 4, !tbaa !9
  %571 = icmp eq i32 %570, 2
  br i1 %571, label %572, label %605

572:                                              ; preds = %569
  %573 = load i32, ptr %81, align 4, !tbaa !9
  %574 = icmp eq i32 %573, 2
  br i1 %574, label %575, label %605

575:                                              ; preds = %572
  %576 = load ptr, ptr %25, align 8, !tbaa !5
  %577 = load ptr, ptr %26, align 8, !tbaa !5
  %578 = load ptr, ptr %41, align 8, !tbaa !5
  %579 = getelementptr inbounds double, ptr %578, i64 1
  %580 = load ptr, ptr %25, align 8, !tbaa !5
  %581 = load ptr, ptr %31, align 8, !tbaa !5
  %582 = load i32, ptr %50, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %581, i64 %583
  %585 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %576, ptr noundef %577, ptr noundef %579, ptr noundef %580, ptr noundef %584, ptr noundef %585)
  %586 = load ptr, ptr %25, align 8, !tbaa !5
  %587 = load ptr, ptr %26, align 8, !tbaa !5
  %588 = load ptr, ptr %41, align 8, !tbaa !5
  %589 = load ptr, ptr %25, align 8, !tbaa !5
  %590 = load i32, ptr %589, align 4, !tbaa !9
  %591 = load ptr, ptr %26, align 8, !tbaa !5
  %592 = load i32, ptr %591, align 4, !tbaa !9
  %593 = mul nsw i32 %590, %592
  %594 = add nsw i32 %593, 1
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds double, ptr %588, i64 %595
  %597 = load ptr, ptr %25, align 8, !tbaa !5
  %598 = load ptr, ptr %37, align 8, !tbaa !5
  %599 = load i32, ptr %56, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %598, i64 %600
  %602 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %586, ptr noundef %587, ptr noundef %596, ptr noundef %597, ptr noundef %601, ptr noundef %602)
  %603 = load double, ptr %71, align 8, !tbaa !11
  %604 = load ptr, ptr %39, align 8, !tbaa !5
  store double %603, ptr %604, align 8, !tbaa !11
  br label %605

605:                                              ; preds = %575, %572, %569
  br label %606

606:                                              ; preds = %605, %525
  br label %607

607:                                              ; preds = %606
  %608 = load i32, ptr %81, align 4, !tbaa !9
  %609 = add nsw i32 %608, 1
  store i32 %609, ptr %81, align 4, !tbaa !9
  br label %435, !llvm.loop !13

610:                                              ; preds = %435
  store i32 1, ptr %85, align 4
  br label %1651

611:                                              ; preds = %428, %423
  store i32 0, ptr %66, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %612

612:                                              ; preds = %649, %611
  %613 = load i32, ptr %63, align 4, !tbaa !9
  %614 = load ptr, ptr %25, align 8, !tbaa !5
  %615 = load i32, ptr %614, align 4, !tbaa !9
  %616 = icmp sgt i32 %613, %615
  br i1 %616, label %617, label %618

617:                                              ; preds = %612
  br label %650

618:                                              ; preds = %612
  %619 = load i32, ptr %66, align 4, !tbaa !9
  %620 = add nsw i32 %619, 1
  store i32 %620, ptr %66, align 4, !tbaa !9
  %621 = load i32, ptr %63, align 4, !tbaa !9
  %622 = load ptr, ptr %43, align 8, !tbaa !5
  %623 = load i32, ptr %66, align 4, !tbaa !9
  %624 = sext i32 %623 to i64
  %625 = getelementptr inbounds i32, ptr %622, i64 %624
  store i32 %621, ptr %625, align 4, !tbaa !9
  %626 = load i32, ptr %74, align 4, !tbaa !9
  %627 = load i32, ptr %63, align 4, !tbaa !9
  %628 = add nsw i32 %627, %626
  store i32 %628, ptr %63, align 4, !tbaa !9
  %629 = load i32, ptr %63, align 4, !tbaa !9
  %630 = load ptr, ptr %25, align 8, !tbaa !5
  %631 = load i32, ptr %630, align 4, !tbaa !9
  %632 = icmp sge i32 %629, %631
  br i1 %632, label %633, label %634

633:                                              ; preds = %618
  br label %650

634:                                              ; preds = %618
  %635 = load ptr, ptr %27, align 8, !tbaa !5
  %636 = load i32, ptr %63, align 4, !tbaa !9
  %637 = load i32, ptr %63, align 4, !tbaa !9
  %638 = sub nsw i32 %637, 1
  %639 = load i32, ptr %45, align 4, !tbaa !9
  %640 = mul nsw i32 %638, %639
  %641 = add nsw i32 %636, %640
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds double, ptr %635, i64 %642
  %644 = load double, ptr %643, align 8, !tbaa !11
  %645 = fcmp une double %644, 0.000000e+00
  br i1 %645, label %646, label %649

646:                                              ; preds = %634
  %647 = load i32, ptr %63, align 4, !tbaa !9
  %648 = add nsw i32 %647, 1
  store i32 %648, ptr %63, align 4, !tbaa !9
  br label %649

649:                                              ; preds = %646, %634
  br label %612

650:                                              ; preds = %633, %617
  %651 = load ptr, ptr %25, align 8, !tbaa !5
  %652 = load i32, ptr %651, align 4, !tbaa !9
  %653 = add nsw i32 %652, 1
  %654 = load ptr, ptr %43, align 8, !tbaa !5
  %655 = load i32, ptr %66, align 4, !tbaa !9
  %656 = add nsw i32 %655, 1
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds i32, ptr %654, i64 %657
  store i32 %653, ptr %658, align 4, !tbaa !9
  %659 = load ptr, ptr %43, align 8, !tbaa !5
  %660 = load i32, ptr %66, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds i32, ptr %659, i64 %661
  %663 = load i32, ptr %662, align 4, !tbaa !9
  %664 = load ptr, ptr %43, align 8, !tbaa !5
  %665 = load i32, ptr %66, align 4, !tbaa !9
  %666 = add nsw i32 %665, 1
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds i32, ptr %664, i64 %667
  %669 = load i32, ptr %668, align 4, !tbaa !9
  %670 = icmp eq i32 %663, %669
  br i1 %670, label %671, label %674

671:                                              ; preds = %650
  %672 = load i32, ptr %66, align 4, !tbaa !9
  %673 = add nsw i32 %672, -1
  store i32 %673, ptr %66, align 4, !tbaa !9
  br label %674

674:                                              ; preds = %671, %650
  %675 = load i32, ptr %66, align 4, !tbaa !9
  %676 = add nsw i32 %675, 1
  store i32 %676, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %677

677:                                              ; preds = %714, %674
  %678 = load i32, ptr %64, align 4, !tbaa !9
  %679 = load ptr, ptr %26, align 8, !tbaa !5
  %680 = load i32, ptr %679, align 4, !tbaa !9
  %681 = icmp sgt i32 %678, %680
  br i1 %681, label %682, label %683

682:                                              ; preds = %677
  br label %715

683:                                              ; preds = %677
  %684 = load i32, ptr %67, align 4, !tbaa !9
  %685 = add nsw i32 %684, 1
  store i32 %685, ptr %67, align 4, !tbaa !9
  %686 = load i32, ptr %64, align 4, !tbaa !9
  %687 = load ptr, ptr %43, align 8, !tbaa !5
  %688 = load i32, ptr %67, align 4, !tbaa !9
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds i32, ptr %687, i64 %689
  store i32 %686, ptr %690, align 4, !tbaa !9
  %691 = load i32, ptr %75, align 4, !tbaa !9
  %692 = load i32, ptr %64, align 4, !tbaa !9
  %693 = add nsw i32 %692, %691
  store i32 %693, ptr %64, align 4, !tbaa !9
  %694 = load i32, ptr %64, align 4, !tbaa !9
  %695 = load ptr, ptr %26, align 8, !tbaa !5
  %696 = load i32, ptr %695, align 4, !tbaa !9
  %697 = icmp sge i32 %694, %696
  br i1 %697, label %698, label %699

698:                                              ; preds = %683
  br label %715

699:                                              ; preds = %683
  %700 = load ptr, ptr %29, align 8, !tbaa !5
  %701 = load i32, ptr %64, align 4, !tbaa !9
  %702 = load i32, ptr %64, align 4, !tbaa !9
  %703 = sub nsw i32 %702, 1
  %704 = load i32, ptr %47, align 4, !tbaa !9
  %705 = mul nsw i32 %703, %704
  %706 = add nsw i32 %701, %705
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %700, i64 %707
  %709 = load double, ptr %708, align 8, !tbaa !11
  %710 = fcmp une double %709, 0.000000e+00
  br i1 %710, label %711, label %714

711:                                              ; preds = %699
  %712 = load i32, ptr %64, align 4, !tbaa !9
  %713 = add nsw i32 %712, 1
  store i32 %713, ptr %64, align 4, !tbaa !9
  br label %714

714:                                              ; preds = %711, %699
  br label %677

715:                                              ; preds = %698, %682
  %716 = load ptr, ptr %26, align 8, !tbaa !5
  %717 = load i32, ptr %716, align 4, !tbaa !9
  %718 = add nsw i32 %717, 1
  %719 = load ptr, ptr %43, align 8, !tbaa !5
  %720 = load i32, ptr %67, align 4, !tbaa !9
  %721 = add nsw i32 %720, 1
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds i32, ptr %719, i64 %722
  store i32 %718, ptr %723, align 4, !tbaa !9
  %724 = load ptr, ptr %43, align 8, !tbaa !5
  %725 = load i32, ptr %67, align 4, !tbaa !9
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds i32, ptr %724, i64 %726
  %728 = load i32, ptr %727, align 4, !tbaa !9
  %729 = load ptr, ptr %43, align 8, !tbaa !5
  %730 = load i32, ptr %67, align 4, !tbaa !9
  %731 = add nsw i32 %730, 1
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds i32, ptr %729, i64 %732
  %734 = load i32, ptr %733, align 4, !tbaa !9
  %735 = icmp eq i32 %728, %734
  br i1 %735, label %736, label %739

736:                                              ; preds = %715
  %737 = load i32, ptr %67, align 4, !tbaa !9
  %738 = add nsw i32 %737, -1
  store i32 %738, ptr %67, align 4, !tbaa !9
  br label %739

739:                                              ; preds = %736, %715
  %740 = load i32, ptr %82, align 4, !tbaa !9
  %741 = icmp ne i32 %740, 0
  br i1 %741, label %742, label %1265

742:                                              ; preds = %739
  %743 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %743, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %81, align 4, !tbaa !9
  br label %744

744:                                              ; preds = %1261, %742
  %745 = load i32, ptr %81, align 4, !tbaa !9
  %746 = load i32, ptr %57, align 4, !tbaa !9
  %747 = icmp sle i32 %745, %746
  br i1 %747, label %748, label %1264

748:                                              ; preds = %744
  store double 0.000000e+00, ptr %76, align 8, !tbaa !11
  store double 1.000000e+00, ptr %61, align 8, !tbaa !11
  store i32 0, ptr %79, align 4, !tbaa !9
  %749 = load ptr, ptr %39, align 8, !tbaa !5
  store double 1.000000e+00, ptr %749, align 8, !tbaa !11
  %750 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %750, ptr %58, align 4, !tbaa !9
  %751 = load i32, ptr %66, align 4, !tbaa !9
  %752 = add nsw i32 %751, 2
  store i32 %752, ptr %64, align 4, !tbaa !9
  br label %753

753:                                              ; preds = %1127, %748
  %754 = load i32, ptr %64, align 4, !tbaa !9
  %755 = load i32, ptr %58, align 4, !tbaa !9
  %756 = icmp sle i32 %754, %755
  br i1 %756, label %757, label %1130

757:                                              ; preds = %753
  %758 = load ptr, ptr %43, align 8, !tbaa !5
  %759 = load i32, ptr %64, align 4, !tbaa !9
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds i32, ptr %758, i64 %760
  %762 = load i32, ptr %761, align 4, !tbaa !9
  store i32 %762, ptr %78, align 4, !tbaa !9
  %763 = load ptr, ptr %43, align 8, !tbaa !5
  %764 = load i32, ptr %64, align 4, !tbaa !9
  %765 = add nsw i32 %764, 1
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds i32, ptr %763, i64 %766
  %768 = load i32, ptr %767, align 4, !tbaa !9
  %769 = sub nsw i32 %768, 1
  store i32 %769, ptr %73, align 4, !tbaa !9
  %770 = load i32, ptr %73, align 4, !tbaa !9
  %771 = load i32, ptr %78, align 4, !tbaa !9
  %772 = sub nsw i32 %770, %771
  %773 = add nsw i32 %772, 1
  store i32 %773, ptr %75, align 4, !tbaa !9
  %774 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %774, ptr %63, align 4, !tbaa !9
  br label %775

775:                                              ; preds = %1123, %757
  %776 = load i32, ptr %63, align 4, !tbaa !9
  %777 = icmp sge i32 %776, 1
  br i1 %777, label %778, label %1126

778:                                              ; preds = %775
  %779 = load ptr, ptr %43, align 8, !tbaa !5
  %780 = load i32, ptr %63, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds i32, ptr %779, i64 %781
  %783 = load i32, ptr %782, align 4, !tbaa !9
  store i32 %783, ptr %77, align 4, !tbaa !9
  %784 = load ptr, ptr %43, align 8, !tbaa !5
  %785 = load i32, ptr %63, align 4, !tbaa !9
  %786 = add nsw i32 %785, 1
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds i32, ptr %784, i64 %787
  %789 = load i32, ptr %788, align 4, !tbaa !9
  %790 = sub nsw i32 %789, 1
  store i32 %790, ptr %72, align 4, !tbaa !9
  %791 = load i32, ptr %72, align 4, !tbaa !9
  %792 = load i32, ptr %77, align 4, !tbaa !9
  %793 = sub nsw i32 %791, %792
  %794 = add nsw i32 %793, 1
  store i32 %794, ptr %74, align 4, !tbaa !9
  store i32 0, ptr %62, align 4, !tbaa !9
  %795 = load ptr, ptr %23, align 8, !tbaa !5
  %796 = load ptr, ptr %27, align 8, !tbaa !5
  %797 = load i32, ptr %77, align 4, !tbaa !9
  %798 = load i32, ptr %77, align 4, !tbaa !9
  %799 = load i32, ptr %45, align 4, !tbaa !9
  %800 = mul nsw i32 %798, %799
  %801 = add nsw i32 %797, %800
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds double, ptr %796, i64 %802
  %804 = load ptr, ptr %28, align 8, !tbaa !5
  %805 = load ptr, ptr %29, align 8, !tbaa !5
  %806 = load i32, ptr %78, align 4, !tbaa !9
  %807 = load i32, ptr %78, align 4, !tbaa !9
  %808 = load i32, ptr %47, align 4, !tbaa !9
  %809 = mul nsw i32 %807, %808
  %810 = add nsw i32 %806, %809
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds double, ptr %805, i64 %811
  %813 = load ptr, ptr %30, align 8, !tbaa !5
  %814 = load ptr, ptr %31, align 8, !tbaa !5
  %815 = load i32, ptr %77, align 4, !tbaa !9
  %816 = load i32, ptr %78, align 4, !tbaa !9
  %817 = load i32, ptr %49, align 4, !tbaa !9
  %818 = mul nsw i32 %816, %817
  %819 = add nsw i32 %815, %818
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds double, ptr %814, i64 %820
  %822 = load ptr, ptr %32, align 8, !tbaa !5
  %823 = load ptr, ptr %33, align 8, !tbaa !5
  %824 = load i32, ptr %77, align 4, !tbaa !9
  %825 = load i32, ptr %77, align 4, !tbaa !9
  %826 = load i32, ptr %51, align 4, !tbaa !9
  %827 = mul nsw i32 %825, %826
  %828 = add nsw i32 %824, %827
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds double, ptr %823, i64 %829
  %831 = load ptr, ptr %34, align 8, !tbaa !5
  %832 = load ptr, ptr %35, align 8, !tbaa !5
  %833 = load i32, ptr %78, align 4, !tbaa !9
  %834 = load i32, ptr %78, align 4, !tbaa !9
  %835 = load i32, ptr %53, align 4, !tbaa !9
  %836 = mul nsw i32 %834, %835
  %837 = add nsw i32 %833, %836
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds double, ptr %832, i64 %838
  %840 = load ptr, ptr %36, align 8, !tbaa !5
  %841 = load ptr, ptr %37, align 8, !tbaa !5
  %842 = load i32, ptr %77, align 4, !tbaa !9
  %843 = load i32, ptr %78, align 4, !tbaa !9
  %844 = load i32, ptr %55, align 4, !tbaa !9
  %845 = mul nsw i32 %843, %844
  %846 = add nsw i32 %842, %845
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %841, i64 %847
  %849 = load ptr, ptr %38, align 8, !tbaa !5
  %850 = load ptr, ptr %43, align 8, !tbaa !5
  %851 = load i32, ptr %67, align 4, !tbaa !9
  %852 = add nsw i32 %851, 2
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds i32, ptr %850, i64 %853
  call void @dtgsy2_(ptr noundef %795, ptr noundef %68, ptr noundef %74, ptr noundef %75, ptr noundef %803, ptr noundef %804, ptr noundef %812, ptr noundef %813, ptr noundef %821, ptr noundef %822, ptr noundef %830, ptr noundef %831, ptr noundef %839, ptr noundef %840, ptr noundef %848, ptr noundef %849, ptr noundef %80, ptr noundef %61, ptr noundef %76, ptr noundef %854, ptr noundef %62, ptr noundef %69)
  %855 = load i32, ptr %69, align 4, !tbaa !9
  %856 = icmp sgt i32 %855, 0
  br i1 %856, label %857, label %860

857:                                              ; preds = %778
  %858 = load i32, ptr %69, align 4, !tbaa !9
  %859 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 %858, ptr %859, align 4, !tbaa !9
  br label %860

860:                                              ; preds = %857, %778
  %861 = load i32, ptr %62, align 4, !tbaa !9
  %862 = load i32, ptr %79, align 4, !tbaa !9
  %863 = add nsw i32 %862, %861
  store i32 %863, ptr %79, align 4, !tbaa !9
  %864 = load double, ptr %80, align 8, !tbaa !11
  %865 = fcmp une double %864, 1.000000e+00
  br i1 %865, label %866, label %993

866:                                              ; preds = %860
  %867 = load i32, ptr %78, align 4, !tbaa !9
  %868 = sub nsw i32 %867, 1
  store i32 %868, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %869

869:                                              ; preds = %890, %866
  %870 = load i32, ptr %65, align 4, !tbaa !9
  %871 = load i32, ptr %59, align 4, !tbaa !9
  %872 = icmp sle i32 %870, %871
  br i1 %872, label %873, label %893

873:                                              ; preds = %869
  %874 = load ptr, ptr %25, align 8, !tbaa !5
  %875 = load ptr, ptr %31, align 8, !tbaa !5
  %876 = load i32, ptr %65, align 4, !tbaa !9
  %877 = load i32, ptr %49, align 4, !tbaa !9
  %878 = mul nsw i32 %876, %877
  %879 = add nsw i32 %878, 1
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds double, ptr %875, i64 %880
  call void @dscal_(ptr noundef %874, ptr noundef %80, ptr noundef %881, ptr noundef @c__1)
  %882 = load ptr, ptr %25, align 8, !tbaa !5
  %883 = load ptr, ptr %37, align 8, !tbaa !5
  %884 = load i32, ptr %65, align 4, !tbaa !9
  %885 = load i32, ptr %55, align 4, !tbaa !9
  %886 = mul nsw i32 %884, %885
  %887 = add nsw i32 %886, 1
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %883, i64 %888
  call void @dscal_(ptr noundef %882, ptr noundef %80, ptr noundef %889, ptr noundef @c__1)
  br label %890

890:                                              ; preds = %873
  %891 = load i32, ptr %65, align 4, !tbaa !9
  %892 = add nsw i32 %891, 1
  store i32 %892, ptr %65, align 4, !tbaa !9
  br label %869, !llvm.loop !15

893:                                              ; preds = %869
  %894 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %894, ptr %59, align 4, !tbaa !9
  %895 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %895, ptr %65, align 4, !tbaa !9
  br label %896

896:                                              ; preds = %919, %893
  %897 = load i32, ptr %65, align 4, !tbaa !9
  %898 = load i32, ptr %59, align 4, !tbaa !9
  %899 = icmp sle i32 %897, %898
  br i1 %899, label %900, label %922

900:                                              ; preds = %896
  %901 = load i32, ptr %77, align 4, !tbaa !9
  %902 = sub nsw i32 %901, 1
  store i32 %902, ptr %60, align 4, !tbaa !9
  %903 = load ptr, ptr %31, align 8, !tbaa !5
  %904 = load i32, ptr %65, align 4, !tbaa !9
  %905 = load i32, ptr %49, align 4, !tbaa !9
  %906 = mul nsw i32 %904, %905
  %907 = add nsw i32 %906, 1
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds double, ptr %903, i64 %908
  call void @dscal_(ptr noundef %60, ptr noundef %80, ptr noundef %909, ptr noundef @c__1)
  %910 = load i32, ptr %77, align 4, !tbaa !9
  %911 = sub nsw i32 %910, 1
  store i32 %911, ptr %60, align 4, !tbaa !9
  %912 = load ptr, ptr %37, align 8, !tbaa !5
  %913 = load i32, ptr %65, align 4, !tbaa !9
  %914 = load i32, ptr %55, align 4, !tbaa !9
  %915 = mul nsw i32 %913, %914
  %916 = add nsw i32 %915, 1
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds double, ptr %912, i64 %917
  call void @dscal_(ptr noundef %60, ptr noundef %80, ptr noundef %918, ptr noundef @c__1)
  br label %919

919:                                              ; preds = %900
  %920 = load i32, ptr %65, align 4, !tbaa !9
  %921 = add nsw i32 %920, 1
  store i32 %921, ptr %65, align 4, !tbaa !9
  br label %896, !llvm.loop !16

922:                                              ; preds = %896
  %923 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %923, ptr %59, align 4, !tbaa !9
  %924 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %924, ptr %65, align 4, !tbaa !9
  br label %925

925:                                              ; preds = %956, %922
  %926 = load i32, ptr %65, align 4, !tbaa !9
  %927 = load i32, ptr %59, align 4, !tbaa !9
  %928 = icmp sle i32 %926, %927
  br i1 %928, label %929, label %959

929:                                              ; preds = %925
  %930 = load ptr, ptr %25, align 8, !tbaa !5
  %931 = load i32, ptr %930, align 4, !tbaa !9
  %932 = load i32, ptr %72, align 4, !tbaa !9
  %933 = sub nsw i32 %931, %932
  store i32 %933, ptr %60, align 4, !tbaa !9
  %934 = load ptr, ptr %31, align 8, !tbaa !5
  %935 = load i32, ptr %72, align 4, !tbaa !9
  %936 = add nsw i32 %935, 1
  %937 = load i32, ptr %65, align 4, !tbaa !9
  %938 = load i32, ptr %49, align 4, !tbaa !9
  %939 = mul nsw i32 %937, %938
  %940 = add nsw i32 %936, %939
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds double, ptr %934, i64 %941
  call void @dscal_(ptr noundef %60, ptr noundef %80, ptr noundef %942, ptr noundef @c__1)
  %943 = load ptr, ptr %25, align 8, !tbaa !5
  %944 = load i32, ptr %943, align 4, !tbaa !9
  %945 = load i32, ptr %72, align 4, !tbaa !9
  %946 = sub nsw i32 %944, %945
  store i32 %946, ptr %60, align 4, !tbaa !9
  %947 = load ptr, ptr %37, align 8, !tbaa !5
  %948 = load i32, ptr %72, align 4, !tbaa !9
  %949 = add nsw i32 %948, 1
  %950 = load i32, ptr %65, align 4, !tbaa !9
  %951 = load i32, ptr %55, align 4, !tbaa !9
  %952 = mul nsw i32 %950, %951
  %953 = add nsw i32 %949, %952
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds double, ptr %947, i64 %954
  call void @dscal_(ptr noundef %60, ptr noundef %80, ptr noundef %955, ptr noundef @c__1)
  br label %956

956:                                              ; preds = %929
  %957 = load i32, ptr %65, align 4, !tbaa !9
  %958 = add nsw i32 %957, 1
  store i32 %958, ptr %65, align 4, !tbaa !9
  br label %925, !llvm.loop !17

959:                                              ; preds = %925
  %960 = load ptr, ptr %26, align 8, !tbaa !5
  %961 = load i32, ptr %960, align 4, !tbaa !9
  store i32 %961, ptr %59, align 4, !tbaa !9
  %962 = load i32, ptr %73, align 4, !tbaa !9
  %963 = add nsw i32 %962, 1
  store i32 %963, ptr %65, align 4, !tbaa !9
  br label %964

964:                                              ; preds = %985, %959
  %965 = load i32, ptr %65, align 4, !tbaa !9
  %966 = load i32, ptr %59, align 4, !tbaa !9
  %967 = icmp sle i32 %965, %966
  br i1 %967, label %968, label %988

968:                                              ; preds = %964
  %969 = load ptr, ptr %25, align 8, !tbaa !5
  %970 = load ptr, ptr %31, align 8, !tbaa !5
  %971 = load i32, ptr %65, align 4, !tbaa !9
  %972 = load i32, ptr %49, align 4, !tbaa !9
  %973 = mul nsw i32 %971, %972
  %974 = add nsw i32 %973, 1
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds double, ptr %970, i64 %975
  call void @dscal_(ptr noundef %969, ptr noundef %80, ptr noundef %976, ptr noundef @c__1)
  %977 = load ptr, ptr %25, align 8, !tbaa !5
  %978 = load ptr, ptr %37, align 8, !tbaa !5
  %979 = load i32, ptr %65, align 4, !tbaa !9
  %980 = load i32, ptr %55, align 4, !tbaa !9
  %981 = mul nsw i32 %979, %980
  %982 = add nsw i32 %981, 1
  %983 = sext i32 %982 to i64
  %984 = getelementptr inbounds double, ptr %978, i64 %983
  call void @dscal_(ptr noundef %977, ptr noundef %80, ptr noundef %984, ptr noundef @c__1)
  br label %985

985:                                              ; preds = %968
  %986 = load i32, ptr %65, align 4, !tbaa !9
  %987 = add nsw i32 %986, 1
  store i32 %987, ptr %65, align 4, !tbaa !9
  br label %964, !llvm.loop !18

988:                                              ; preds = %964
  %989 = load double, ptr %80, align 8, !tbaa !11
  %990 = load ptr, ptr %39, align 8, !tbaa !5
  %991 = load double, ptr %990, align 8, !tbaa !11
  %992 = fmul double %991, %989
  store double %992, ptr %990, align 8, !tbaa !11
  br label %993

993:                                              ; preds = %988, %860
  %994 = load i32, ptr %63, align 4, !tbaa !9
  %995 = icmp sgt i32 %994, 1
  br i1 %995, label %996, label %1051

996:                                              ; preds = %993
  %997 = load i32, ptr %77, align 4, !tbaa !9
  %998 = sub nsw i32 %997, 1
  store i32 %998, ptr %59, align 4, !tbaa !9
  %999 = load ptr, ptr %27, align 8, !tbaa !5
  %1000 = load i32, ptr %77, align 4, !tbaa !9
  %1001 = load i32, ptr %45, align 4, !tbaa !9
  %1002 = mul nsw i32 %1000, %1001
  %1003 = add nsw i32 %1002, 1
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds double, ptr %999, i64 %1004
  %1006 = load ptr, ptr %28, align 8, !tbaa !5
  %1007 = load ptr, ptr %31, align 8, !tbaa !5
  %1008 = load i32, ptr %77, align 4, !tbaa !9
  %1009 = load i32, ptr %78, align 4, !tbaa !9
  %1010 = load i32, ptr %49, align 4, !tbaa !9
  %1011 = mul nsw i32 %1009, %1010
  %1012 = add nsw i32 %1008, %1011
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds double, ptr %1007, i64 %1013
  %1015 = load ptr, ptr %32, align 8, !tbaa !5
  %1016 = load ptr, ptr %31, align 8, !tbaa !5
  %1017 = load i32, ptr %78, align 4, !tbaa !9
  %1018 = load i32, ptr %49, align 4, !tbaa !9
  %1019 = mul nsw i32 %1017, %1018
  %1020 = add nsw i32 %1019, 1
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %1016, i64 %1021
  %1023 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str, ptr noundef @.str, ptr noundef %59, ptr noundef %75, ptr noundef %74, ptr noundef @c_b51, ptr noundef %1005, ptr noundef %1006, ptr noundef %1014, ptr noundef %1015, ptr noundef @c_b52, ptr noundef %1022, ptr noundef %1023)
  %1024 = load i32, ptr %77, align 4, !tbaa !9
  %1025 = sub nsw i32 %1024, 1
  store i32 %1025, ptr %59, align 4, !tbaa !9
  %1026 = load ptr, ptr %33, align 8, !tbaa !5
  %1027 = load i32, ptr %77, align 4, !tbaa !9
  %1028 = load i32, ptr %51, align 4, !tbaa !9
  %1029 = mul nsw i32 %1027, %1028
  %1030 = add nsw i32 %1029, 1
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds double, ptr %1026, i64 %1031
  %1033 = load ptr, ptr %34, align 8, !tbaa !5
  %1034 = load ptr, ptr %31, align 8, !tbaa !5
  %1035 = load i32, ptr %77, align 4, !tbaa !9
  %1036 = load i32, ptr %78, align 4, !tbaa !9
  %1037 = load i32, ptr %49, align 4, !tbaa !9
  %1038 = mul nsw i32 %1036, %1037
  %1039 = add nsw i32 %1035, %1038
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds double, ptr %1034, i64 %1040
  %1042 = load ptr, ptr %32, align 8, !tbaa !5
  %1043 = load ptr, ptr %37, align 8, !tbaa !5
  %1044 = load i32, ptr %78, align 4, !tbaa !9
  %1045 = load i32, ptr %55, align 4, !tbaa !9
  %1046 = mul nsw i32 %1044, %1045
  %1047 = add nsw i32 %1046, 1
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds double, ptr %1043, i64 %1048
  %1050 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str, ptr noundef @.str, ptr noundef %59, ptr noundef %75, ptr noundef %74, ptr noundef @c_b51, ptr noundef %1032, ptr noundef %1033, ptr noundef %1041, ptr noundef %1042, ptr noundef @c_b52, ptr noundef %1049, ptr noundef %1050)
  br label %1051

1051:                                             ; preds = %996, %993
  %1052 = load i32, ptr %64, align 4, !tbaa !9
  %1053 = load i32, ptr %67, align 4, !tbaa !9
  %1054 = icmp slt i32 %1052, %1053
  br i1 %1054, label %1055, label %1122

1055:                                             ; preds = %1051
  %1056 = load ptr, ptr %26, align 8, !tbaa !5
  %1057 = load i32, ptr %1056, align 4, !tbaa !9
  %1058 = load i32, ptr %73, align 4, !tbaa !9
  %1059 = sub nsw i32 %1057, %1058
  store i32 %1059, ptr %59, align 4, !tbaa !9
  %1060 = load ptr, ptr %37, align 8, !tbaa !5
  %1061 = load i32, ptr %77, align 4, !tbaa !9
  %1062 = load i32, ptr %78, align 4, !tbaa !9
  %1063 = load i32, ptr %55, align 4, !tbaa !9
  %1064 = mul nsw i32 %1062, %1063
  %1065 = add nsw i32 %1061, %1064
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds double, ptr %1060, i64 %1066
  %1068 = load ptr, ptr %38, align 8, !tbaa !5
  %1069 = load ptr, ptr %29, align 8, !tbaa !5
  %1070 = load i32, ptr %78, align 4, !tbaa !9
  %1071 = load i32, ptr %73, align 4, !tbaa !9
  %1072 = add nsw i32 %1071, 1
  %1073 = load i32, ptr %47, align 4, !tbaa !9
  %1074 = mul nsw i32 %1072, %1073
  %1075 = add nsw i32 %1070, %1074
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds double, ptr %1069, i64 %1076
  %1078 = load ptr, ptr %30, align 8, !tbaa !5
  %1079 = load ptr, ptr %31, align 8, !tbaa !5
  %1080 = load i32, ptr %77, align 4, !tbaa !9
  %1081 = load i32, ptr %73, align 4, !tbaa !9
  %1082 = add nsw i32 %1081, 1
  %1083 = load i32, ptr %49, align 4, !tbaa !9
  %1084 = mul nsw i32 %1082, %1083
  %1085 = add nsw i32 %1080, %1084
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds double, ptr %1079, i64 %1086
  %1088 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str, ptr noundef @.str, ptr noundef %74, ptr noundef %59, ptr noundef %75, ptr noundef @c_b52, ptr noundef %1067, ptr noundef %1068, ptr noundef %1077, ptr noundef %1078, ptr noundef @c_b52, ptr noundef %1087, ptr noundef %1088)
  %1089 = load ptr, ptr %26, align 8, !tbaa !5
  %1090 = load i32, ptr %1089, align 4, !tbaa !9
  %1091 = load i32, ptr %73, align 4, !tbaa !9
  %1092 = sub nsw i32 %1090, %1091
  store i32 %1092, ptr %59, align 4, !tbaa !9
  %1093 = load ptr, ptr %37, align 8, !tbaa !5
  %1094 = load i32, ptr %77, align 4, !tbaa !9
  %1095 = load i32, ptr %78, align 4, !tbaa !9
  %1096 = load i32, ptr %55, align 4, !tbaa !9
  %1097 = mul nsw i32 %1095, %1096
  %1098 = add nsw i32 %1094, %1097
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds double, ptr %1093, i64 %1099
  %1101 = load ptr, ptr %38, align 8, !tbaa !5
  %1102 = load ptr, ptr %35, align 8, !tbaa !5
  %1103 = load i32, ptr %78, align 4, !tbaa !9
  %1104 = load i32, ptr %73, align 4, !tbaa !9
  %1105 = add nsw i32 %1104, 1
  %1106 = load i32, ptr %53, align 4, !tbaa !9
  %1107 = mul nsw i32 %1105, %1106
  %1108 = add nsw i32 %1103, %1107
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds double, ptr %1102, i64 %1109
  %1111 = load ptr, ptr %36, align 8, !tbaa !5
  %1112 = load ptr, ptr %37, align 8, !tbaa !5
  %1113 = load i32, ptr %77, align 4, !tbaa !9
  %1114 = load i32, ptr %73, align 4, !tbaa !9
  %1115 = add nsw i32 %1114, 1
  %1116 = load i32, ptr %55, align 4, !tbaa !9
  %1117 = mul nsw i32 %1115, %1116
  %1118 = add nsw i32 %1113, %1117
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds double, ptr %1112, i64 %1119
  %1121 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str, ptr noundef @.str, ptr noundef %74, ptr noundef %59, ptr noundef %75, ptr noundef @c_b52, ptr noundef %1100, ptr noundef %1101, ptr noundef %1110, ptr noundef %1111, ptr noundef @c_b52, ptr noundef %1120, ptr noundef %1121)
  br label %1122

1122:                                             ; preds = %1055, %1051
  br label %1123

1123:                                             ; preds = %1122
  %1124 = load i32, ptr %63, align 4, !tbaa !9
  %1125 = add nsw i32 %1124, -1
  store i32 %1125, ptr %63, align 4, !tbaa !9
  br label %775, !llvm.loop !19

1126:                                             ; preds = %775
  br label %1127

1127:                                             ; preds = %1126
  %1128 = load i32, ptr %64, align 4, !tbaa !9
  %1129 = add nsw i32 %1128, 1
  store i32 %1129, ptr %64, align 4, !tbaa !9
  br label %753, !llvm.loop !20

1130:                                             ; preds = %753
  %1131 = load double, ptr %76, align 8, !tbaa !11
  %1132 = fcmp une double %1131, 0.000000e+00
  br i1 %1132, label %1133, label %1167

1133:                                             ; preds = %1130
  %1134 = load ptr, ptr %24, align 8, !tbaa !5
  %1135 = load i32, ptr %1134, align 4, !tbaa !9
  %1136 = icmp eq i32 %1135, 1
  br i1 %1136, label %1141, label %1137

1137:                                             ; preds = %1133
  %1138 = load ptr, ptr %24, align 8, !tbaa !5
  %1139 = load i32, ptr %1138, align 4, !tbaa !9
  %1140 = icmp eq i32 %1139, 3
  br i1 %1140, label %1141, label %1156

1141:                                             ; preds = %1137, %1133
  %1142 = load ptr, ptr %25, align 8, !tbaa !5
  %1143 = load i32, ptr %1142, align 4, !tbaa !9
  %1144 = shl i32 %1143, 1
  %1145 = load ptr, ptr %26, align 8, !tbaa !5
  %1146 = load i32, ptr %1145, align 4, !tbaa !9
  %1147 = mul nsw i32 %1144, %1146
  %1148 = sitofp i32 %1147 to double
  %1149 = call double @sqrt(double noundef %1148) #4
  %1150 = load double, ptr %76, align 8, !tbaa !11
  %1151 = load double, ptr %61, align 8, !tbaa !11
  %1152 = call double @sqrt(double noundef %1151) #4
  %1153 = fmul double %1150, %1152
  %1154 = fdiv double %1149, %1153
  %1155 = load ptr, ptr %40, align 8, !tbaa !5
  store double %1154, ptr %1155, align 8, !tbaa !11
  br label %1166

1156:                                             ; preds = %1137
  %1157 = load i32, ptr %79, align 4, !tbaa !9
  %1158 = sitofp i32 %1157 to double
  %1159 = call double @sqrt(double noundef %1158) #4
  %1160 = load double, ptr %76, align 8, !tbaa !11
  %1161 = load double, ptr %61, align 8, !tbaa !11
  %1162 = call double @sqrt(double noundef %1161) #4
  %1163 = fmul double %1160, %1162
  %1164 = fdiv double %1159, %1163
  %1165 = load ptr, ptr %40, align 8, !tbaa !5
  store double %1164, ptr %1165, align 8, !tbaa !11
  br label %1166

1166:                                             ; preds = %1156, %1141
  br label %1167

1167:                                             ; preds = %1166, %1130
  %1168 = load i32, ptr %83, align 4, !tbaa !9
  %1169 = icmp eq i32 %1168, 2
  br i1 %1169, label %1170, label %1223

1170:                                             ; preds = %1167
  %1171 = load i32, ptr %81, align 4, !tbaa !9
  %1172 = icmp eq i32 %1171, 1
  br i1 %1172, label %1173, label %1223

1173:                                             ; preds = %1170
  %1174 = load i32, ptr %82, align 4, !tbaa !9
  %1175 = icmp ne i32 %1174, 0
  br i1 %1175, label %1176, label %1179

1176:                                             ; preds = %1173
  %1177 = load ptr, ptr %24, align 8, !tbaa !5
  %1178 = load i32, ptr %1177, align 4, !tbaa !9
  store i32 %1178, ptr %68, align 4, !tbaa !9
  br label %1179

1179:                                             ; preds = %1176, %1173
  %1180 = load ptr, ptr %39, align 8, !tbaa !5
  %1181 = load double, ptr %1180, align 8, !tbaa !11
  store double %1181, ptr %71, align 8, !tbaa !11
  %1182 = load ptr, ptr %25, align 8, !tbaa !5
  %1183 = load ptr, ptr %26, align 8, !tbaa !5
  %1184 = load ptr, ptr %31, align 8, !tbaa !5
  %1185 = load i32, ptr %50, align 4, !tbaa !9
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds double, ptr %1184, i64 %1186
  %1188 = load ptr, ptr %32, align 8, !tbaa !5
  %1189 = load ptr, ptr %41, align 8, !tbaa !5
  %1190 = getelementptr inbounds double, ptr %1189, i64 1
  %1191 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %1182, ptr noundef %1183, ptr noundef %1187, ptr noundef %1188, ptr noundef %1190, ptr noundef %1191)
  %1192 = load ptr, ptr %25, align 8, !tbaa !5
  %1193 = load ptr, ptr %26, align 8, !tbaa !5
  %1194 = load ptr, ptr %37, align 8, !tbaa !5
  %1195 = load i32, ptr %56, align 4, !tbaa !9
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds double, ptr %1194, i64 %1196
  %1198 = load ptr, ptr %38, align 8, !tbaa !5
  %1199 = load ptr, ptr %41, align 8, !tbaa !5
  %1200 = load ptr, ptr %25, align 8, !tbaa !5
  %1201 = load i32, ptr %1200, align 4, !tbaa !9
  %1202 = load ptr, ptr %26, align 8, !tbaa !5
  %1203 = load i32, ptr %1202, align 4, !tbaa !9
  %1204 = mul nsw i32 %1201, %1203
  %1205 = add nsw i32 %1204, 1
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds double, ptr %1199, i64 %1206
  %1208 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %1192, ptr noundef %1193, ptr noundef %1197, ptr noundef %1198, ptr noundef %1207, ptr noundef %1208)
  %1209 = load ptr, ptr %25, align 8, !tbaa !5
  %1210 = load ptr, ptr %26, align 8, !tbaa !5
  %1211 = load ptr, ptr %31, align 8, !tbaa !5
  %1212 = load i32, ptr %50, align 4, !tbaa !9
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds double, ptr %1211, i64 %1213
  %1215 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.3, ptr noundef %1209, ptr noundef %1210, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %1214, ptr noundef %1215)
  %1216 = load ptr, ptr %25, align 8, !tbaa !5
  %1217 = load ptr, ptr %26, align 8, !tbaa !5
  %1218 = load ptr, ptr %37, align 8, !tbaa !5
  %1219 = load i32, ptr %56, align 4, !tbaa !9
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds double, ptr %1218, i64 %1220
  %1222 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.3, ptr noundef %1216, ptr noundef %1217, ptr noundef @c_b14, ptr noundef @c_b14, ptr noundef %1221, ptr noundef %1222)
  br label %1260

1223:                                             ; preds = %1170, %1167
  %1224 = load i32, ptr %83, align 4, !tbaa !9
  %1225 = icmp eq i32 %1224, 2
  br i1 %1225, label %1226, label %1259

1226:                                             ; preds = %1223
  %1227 = load i32, ptr %81, align 4, !tbaa !9
  %1228 = icmp eq i32 %1227, 2
  br i1 %1228, label %1229, label %1259

1229:                                             ; preds = %1226
  %1230 = load ptr, ptr %25, align 8, !tbaa !5
  %1231 = load ptr, ptr %26, align 8, !tbaa !5
  %1232 = load ptr, ptr %41, align 8, !tbaa !5
  %1233 = getelementptr inbounds double, ptr %1232, i64 1
  %1234 = load ptr, ptr %25, align 8, !tbaa !5
  %1235 = load ptr, ptr %31, align 8, !tbaa !5
  %1236 = load i32, ptr %50, align 4, !tbaa !9
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds double, ptr %1235, i64 %1237
  %1239 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %1230, ptr noundef %1231, ptr noundef %1233, ptr noundef %1234, ptr noundef %1238, ptr noundef %1239)
  %1240 = load ptr, ptr %25, align 8, !tbaa !5
  %1241 = load ptr, ptr %26, align 8, !tbaa !5
  %1242 = load ptr, ptr %41, align 8, !tbaa !5
  %1243 = load ptr, ptr %25, align 8, !tbaa !5
  %1244 = load i32, ptr %1243, align 4, !tbaa !9
  %1245 = load ptr, ptr %26, align 8, !tbaa !5
  %1246 = load i32, ptr %1245, align 4, !tbaa !9
  %1247 = mul nsw i32 %1244, %1246
  %1248 = add nsw i32 %1247, 1
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds double, ptr %1242, i64 %1249
  %1251 = load ptr, ptr %25, align 8, !tbaa !5
  %1252 = load ptr, ptr %37, align 8, !tbaa !5
  %1253 = load i32, ptr %56, align 4, !tbaa !9
  %1254 = sext i32 %1253 to i64
  %1255 = getelementptr inbounds double, ptr %1252, i64 %1254
  %1256 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.3, ptr noundef %1240, ptr noundef %1241, ptr noundef %1250, ptr noundef %1251, ptr noundef %1255, ptr noundef %1256)
  %1257 = load double, ptr %71, align 8, !tbaa !11
  %1258 = load ptr, ptr %39, align 8, !tbaa !5
  store double %1257, ptr %1258, align 8, !tbaa !11
  br label %1259

1259:                                             ; preds = %1229, %1226, %1223
  br label %1260

1260:                                             ; preds = %1259, %1179
  br label %1261

1261:                                             ; preds = %1260
  %1262 = load i32, ptr %81, align 4, !tbaa !9
  %1263 = add nsw i32 %1262, 1
  store i32 %1263, ptr %81, align 4, !tbaa !9
  br label %744, !llvm.loop !21

1264:                                             ; preds = %744
  br label %1646

1265:                                             ; preds = %739
  %1266 = load ptr, ptr %39, align 8, !tbaa !5
  store double 1.000000e+00, ptr %1266, align 8, !tbaa !11
  %1267 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %1267, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %1268

1268:                                             ; preds = %1642, %1265
  %1269 = load i32, ptr %63, align 4, !tbaa !9
  %1270 = load i32, ptr %57, align 4, !tbaa !9
  %1271 = icmp sle i32 %1269, %1270
  br i1 %1271, label %1272, label %1645

1272:                                             ; preds = %1268
  %1273 = load ptr, ptr %43, align 8, !tbaa !5
  %1274 = load i32, ptr %63, align 4, !tbaa !9
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds i32, ptr %1273, i64 %1275
  %1277 = load i32, ptr %1276, align 4, !tbaa !9
  store i32 %1277, ptr %77, align 4, !tbaa !9
  %1278 = load ptr, ptr %43, align 8, !tbaa !5
  %1279 = load i32, ptr %63, align 4, !tbaa !9
  %1280 = add nsw i32 %1279, 1
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds i32, ptr %1278, i64 %1281
  %1283 = load i32, ptr %1282, align 4, !tbaa !9
  %1284 = sub nsw i32 %1283, 1
  store i32 %1284, ptr %72, align 4, !tbaa !9
  %1285 = load i32, ptr %72, align 4, !tbaa !9
  %1286 = load i32, ptr %77, align 4, !tbaa !9
  %1287 = sub nsw i32 %1285, %1286
  %1288 = add nsw i32 %1287, 1
  store i32 %1288, ptr %74, align 4, !tbaa !9
  %1289 = load i32, ptr %66, align 4, !tbaa !9
  %1290 = add nsw i32 %1289, 2
  store i32 %1290, ptr %58, align 4, !tbaa !9
  %1291 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %1291, ptr %64, align 4, !tbaa !9
  br label %1292

1292:                                             ; preds = %1638, %1272
  %1293 = load i32, ptr %64, align 4, !tbaa !9
  %1294 = load i32, ptr %58, align 4, !tbaa !9
  %1295 = icmp sge i32 %1293, %1294
  br i1 %1295, label %1296, label %1641

1296:                                             ; preds = %1292
  %1297 = load ptr, ptr %43, align 8, !tbaa !5
  %1298 = load i32, ptr %64, align 4, !tbaa !9
  %1299 = sext i32 %1298 to i64
  %1300 = getelementptr inbounds i32, ptr %1297, i64 %1299
  %1301 = load i32, ptr %1300, align 4, !tbaa !9
  store i32 %1301, ptr %78, align 4, !tbaa !9
  %1302 = load ptr, ptr %43, align 8, !tbaa !5
  %1303 = load i32, ptr %64, align 4, !tbaa !9
  %1304 = add nsw i32 %1303, 1
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds i32, ptr %1302, i64 %1305
  %1307 = load i32, ptr %1306, align 4, !tbaa !9
  %1308 = sub nsw i32 %1307, 1
  store i32 %1308, ptr %73, align 4, !tbaa !9
  %1309 = load i32, ptr %73, align 4, !tbaa !9
  %1310 = load i32, ptr %78, align 4, !tbaa !9
  %1311 = sub nsw i32 %1309, %1310
  %1312 = add nsw i32 %1311, 1
  store i32 %1312, ptr %75, align 4, !tbaa !9
  %1313 = load ptr, ptr %23, align 8, !tbaa !5
  %1314 = load ptr, ptr %27, align 8, !tbaa !5
  %1315 = load i32, ptr %77, align 4, !tbaa !9
  %1316 = load i32, ptr %77, align 4, !tbaa !9
  %1317 = load i32, ptr %45, align 4, !tbaa !9
  %1318 = mul nsw i32 %1316, %1317
  %1319 = add nsw i32 %1315, %1318
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds double, ptr %1314, i64 %1320
  %1322 = load ptr, ptr %28, align 8, !tbaa !5
  %1323 = load ptr, ptr %29, align 8, !tbaa !5
  %1324 = load i32, ptr %78, align 4, !tbaa !9
  %1325 = load i32, ptr %78, align 4, !tbaa !9
  %1326 = load i32, ptr %47, align 4, !tbaa !9
  %1327 = mul nsw i32 %1325, %1326
  %1328 = add nsw i32 %1324, %1327
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds double, ptr %1323, i64 %1329
  %1331 = load ptr, ptr %30, align 8, !tbaa !5
  %1332 = load ptr, ptr %31, align 8, !tbaa !5
  %1333 = load i32, ptr %77, align 4, !tbaa !9
  %1334 = load i32, ptr %78, align 4, !tbaa !9
  %1335 = load i32, ptr %49, align 4, !tbaa !9
  %1336 = mul nsw i32 %1334, %1335
  %1337 = add nsw i32 %1333, %1336
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds double, ptr %1332, i64 %1338
  %1340 = load ptr, ptr %32, align 8, !tbaa !5
  %1341 = load ptr, ptr %33, align 8, !tbaa !5
  %1342 = load i32, ptr %77, align 4, !tbaa !9
  %1343 = load i32, ptr %77, align 4, !tbaa !9
  %1344 = load i32, ptr %51, align 4, !tbaa !9
  %1345 = mul nsw i32 %1343, %1344
  %1346 = add nsw i32 %1342, %1345
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds double, ptr %1341, i64 %1347
  %1349 = load ptr, ptr %34, align 8, !tbaa !5
  %1350 = load ptr, ptr %35, align 8, !tbaa !5
  %1351 = load i32, ptr %78, align 4, !tbaa !9
  %1352 = load i32, ptr %78, align 4, !tbaa !9
  %1353 = load i32, ptr %53, align 4, !tbaa !9
  %1354 = mul nsw i32 %1352, %1353
  %1355 = add nsw i32 %1351, %1354
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds double, ptr %1350, i64 %1356
  %1358 = load ptr, ptr %36, align 8, !tbaa !5
  %1359 = load ptr, ptr %37, align 8, !tbaa !5
  %1360 = load i32, ptr %77, align 4, !tbaa !9
  %1361 = load i32, ptr %78, align 4, !tbaa !9
  %1362 = load i32, ptr %55, align 4, !tbaa !9
  %1363 = mul nsw i32 %1361, %1362
  %1364 = add nsw i32 %1360, %1363
  %1365 = sext i32 %1364 to i64
  %1366 = getelementptr inbounds double, ptr %1359, i64 %1365
  %1367 = load ptr, ptr %38, align 8, !tbaa !5
  %1368 = load ptr, ptr %43, align 8, !tbaa !5
  %1369 = load i32, ptr %67, align 4, !tbaa !9
  %1370 = add nsw i32 %1369, 2
  %1371 = sext i32 %1370 to i64
  %1372 = getelementptr inbounds i32, ptr %1368, i64 %1371
  call void @dtgsy2_(ptr noundef %1313, ptr noundef %68, ptr noundef %74, ptr noundef %75, ptr noundef %1321, ptr noundef %1322, ptr noundef %1330, ptr noundef %1331, ptr noundef %1339, ptr noundef %1340, ptr noundef %1348, ptr noundef %1349, ptr noundef %1357, ptr noundef %1358, ptr noundef %1366, ptr noundef %1367, ptr noundef %80, ptr noundef %61, ptr noundef %76, ptr noundef %1372, ptr noundef %62, ptr noundef %69)
  %1373 = load i32, ptr %69, align 4, !tbaa !9
  %1374 = icmp sgt i32 %1373, 0
  br i1 %1374, label %1375, label %1378

1375:                                             ; preds = %1296
  %1376 = load i32, ptr %69, align 4, !tbaa !9
  %1377 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 %1376, ptr %1377, align 4, !tbaa !9
  br label %1378

1378:                                             ; preds = %1375, %1296
  %1379 = load double, ptr %80, align 8, !tbaa !11
  %1380 = fcmp une double %1379, 1.000000e+00
  br i1 %1380, label %1381, label %1508

1381:                                             ; preds = %1378
  %1382 = load i32, ptr %78, align 4, !tbaa !9
  %1383 = sub nsw i32 %1382, 1
  store i32 %1383, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %1384

1384:                                             ; preds = %1405, %1381
  %1385 = load i32, ptr %65, align 4, !tbaa !9
  %1386 = load i32, ptr %59, align 4, !tbaa !9
  %1387 = icmp sle i32 %1385, %1386
  br i1 %1387, label %1388, label %1408

1388:                                             ; preds = %1384
  %1389 = load ptr, ptr %25, align 8, !tbaa !5
  %1390 = load ptr, ptr %31, align 8, !tbaa !5
  %1391 = load i32, ptr %65, align 4, !tbaa !9
  %1392 = load i32, ptr %49, align 4, !tbaa !9
  %1393 = mul nsw i32 %1391, %1392
  %1394 = add nsw i32 %1393, 1
  %1395 = sext i32 %1394 to i64
  %1396 = getelementptr inbounds double, ptr %1390, i64 %1395
  call void @dscal_(ptr noundef %1389, ptr noundef %80, ptr noundef %1396, ptr noundef @c__1)
  %1397 = load ptr, ptr %25, align 8, !tbaa !5
  %1398 = load ptr, ptr %37, align 8, !tbaa !5
  %1399 = load i32, ptr %65, align 4, !tbaa !9
  %1400 = load i32, ptr %55, align 4, !tbaa !9
  %1401 = mul nsw i32 %1399, %1400
  %1402 = add nsw i32 %1401, 1
  %1403 = sext i32 %1402 to i64
  %1404 = getelementptr inbounds double, ptr %1398, i64 %1403
  call void @dscal_(ptr noundef %1397, ptr noundef %80, ptr noundef %1404, ptr noundef @c__1)
  br label %1405

1405:                                             ; preds = %1388
  %1406 = load i32, ptr %65, align 4, !tbaa !9
  %1407 = add nsw i32 %1406, 1
  store i32 %1407, ptr %65, align 4, !tbaa !9
  br label %1384, !llvm.loop !22

1408:                                             ; preds = %1384
  %1409 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1409, ptr %59, align 4, !tbaa !9
  %1410 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %1410, ptr %65, align 4, !tbaa !9
  br label %1411

1411:                                             ; preds = %1434, %1408
  %1412 = load i32, ptr %65, align 4, !tbaa !9
  %1413 = load i32, ptr %59, align 4, !tbaa !9
  %1414 = icmp sle i32 %1412, %1413
  br i1 %1414, label %1415, label %1437

1415:                                             ; preds = %1411
  %1416 = load i32, ptr %77, align 4, !tbaa !9
  %1417 = sub nsw i32 %1416, 1
  store i32 %1417, ptr %60, align 4, !tbaa !9
  %1418 = load ptr, ptr %31, align 8, !tbaa !5
  %1419 = load i32, ptr %65, align 4, !tbaa !9
  %1420 = load i32, ptr %49, align 4, !tbaa !9
  %1421 = mul nsw i32 %1419, %1420
  %1422 = add nsw i32 %1421, 1
  %1423 = sext i32 %1422 to i64
  %1424 = getelementptr inbounds double, ptr %1418, i64 %1423
  call void @dscal_(ptr noundef %60, ptr noundef %80, ptr noundef %1424, ptr noundef @c__1)
  %1425 = load i32, ptr %77, align 4, !tbaa !9
  %1426 = sub nsw i32 %1425, 1
  store i32 %1426, ptr %60, align 4, !tbaa !9
  %1427 = load ptr, ptr %37, align 8, !tbaa !5
  %1428 = load i32, ptr %65, align 4, !tbaa !9
  %1429 = load i32, ptr %55, align 4, !tbaa !9
  %1430 = mul nsw i32 %1428, %1429
  %1431 = add nsw i32 %1430, 1
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr inbounds double, ptr %1427, i64 %1432
  call void @dscal_(ptr noundef %60, ptr noundef %80, ptr noundef %1433, ptr noundef @c__1)
  br label %1434

1434:                                             ; preds = %1415
  %1435 = load i32, ptr %65, align 4, !tbaa !9
  %1436 = add nsw i32 %1435, 1
  store i32 %1436, ptr %65, align 4, !tbaa !9
  br label %1411, !llvm.loop !23

1437:                                             ; preds = %1411
  %1438 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1438, ptr %59, align 4, !tbaa !9
  %1439 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %1439, ptr %65, align 4, !tbaa !9
  br label %1440

1440:                                             ; preds = %1471, %1437
  %1441 = load i32, ptr %65, align 4, !tbaa !9
  %1442 = load i32, ptr %59, align 4, !tbaa !9
  %1443 = icmp sle i32 %1441, %1442
  br i1 %1443, label %1444, label %1474

1444:                                             ; preds = %1440
  %1445 = load ptr, ptr %25, align 8, !tbaa !5
  %1446 = load i32, ptr %1445, align 4, !tbaa !9
  %1447 = load i32, ptr %72, align 4, !tbaa !9
  %1448 = sub nsw i32 %1446, %1447
  store i32 %1448, ptr %60, align 4, !tbaa !9
  %1449 = load ptr, ptr %31, align 8, !tbaa !5
  %1450 = load i32, ptr %72, align 4, !tbaa !9
  %1451 = add nsw i32 %1450, 1
  %1452 = load i32, ptr %65, align 4, !tbaa !9
  %1453 = load i32, ptr %49, align 4, !tbaa !9
  %1454 = mul nsw i32 %1452, %1453
  %1455 = add nsw i32 %1451, %1454
  %1456 = sext i32 %1455 to i64
  %1457 = getelementptr inbounds double, ptr %1449, i64 %1456
  call void @dscal_(ptr noundef %60, ptr noundef %80, ptr noundef %1457, ptr noundef @c__1)
  %1458 = load ptr, ptr %25, align 8, !tbaa !5
  %1459 = load i32, ptr %1458, align 4, !tbaa !9
  %1460 = load i32, ptr %72, align 4, !tbaa !9
  %1461 = sub nsw i32 %1459, %1460
  store i32 %1461, ptr %60, align 4, !tbaa !9
  %1462 = load ptr, ptr %37, align 8, !tbaa !5
  %1463 = load i32, ptr %72, align 4, !tbaa !9
  %1464 = add nsw i32 %1463, 1
  %1465 = load i32, ptr %65, align 4, !tbaa !9
  %1466 = load i32, ptr %55, align 4, !tbaa !9
  %1467 = mul nsw i32 %1465, %1466
  %1468 = add nsw i32 %1464, %1467
  %1469 = sext i32 %1468 to i64
  %1470 = getelementptr inbounds double, ptr %1462, i64 %1469
  call void @dscal_(ptr noundef %60, ptr noundef %80, ptr noundef %1470, ptr noundef @c__1)
  br label %1471

1471:                                             ; preds = %1444
  %1472 = load i32, ptr %65, align 4, !tbaa !9
  %1473 = add nsw i32 %1472, 1
  store i32 %1473, ptr %65, align 4, !tbaa !9
  br label %1440, !llvm.loop !24

1474:                                             ; preds = %1440
  %1475 = load ptr, ptr %26, align 8, !tbaa !5
  %1476 = load i32, ptr %1475, align 4, !tbaa !9
  store i32 %1476, ptr %59, align 4, !tbaa !9
  %1477 = load i32, ptr %73, align 4, !tbaa !9
  %1478 = add nsw i32 %1477, 1
  store i32 %1478, ptr %65, align 4, !tbaa !9
  br label %1479

1479:                                             ; preds = %1500, %1474
  %1480 = load i32, ptr %65, align 4, !tbaa !9
  %1481 = load i32, ptr %59, align 4, !tbaa !9
  %1482 = icmp sle i32 %1480, %1481
  br i1 %1482, label %1483, label %1503

1483:                                             ; preds = %1479
  %1484 = load ptr, ptr %25, align 8, !tbaa !5
  %1485 = load ptr, ptr %31, align 8, !tbaa !5
  %1486 = load i32, ptr %65, align 4, !tbaa !9
  %1487 = load i32, ptr %49, align 4, !tbaa !9
  %1488 = mul nsw i32 %1486, %1487
  %1489 = add nsw i32 %1488, 1
  %1490 = sext i32 %1489 to i64
  %1491 = getelementptr inbounds double, ptr %1485, i64 %1490
  call void @dscal_(ptr noundef %1484, ptr noundef %80, ptr noundef %1491, ptr noundef @c__1)
  %1492 = load ptr, ptr %25, align 8, !tbaa !5
  %1493 = load ptr, ptr %37, align 8, !tbaa !5
  %1494 = load i32, ptr %65, align 4, !tbaa !9
  %1495 = load i32, ptr %55, align 4, !tbaa !9
  %1496 = mul nsw i32 %1494, %1495
  %1497 = add nsw i32 %1496, 1
  %1498 = sext i32 %1497 to i64
  %1499 = getelementptr inbounds double, ptr %1493, i64 %1498
  call void @dscal_(ptr noundef %1492, ptr noundef %80, ptr noundef %1499, ptr noundef @c__1)
  br label %1500

1500:                                             ; preds = %1483
  %1501 = load i32, ptr %65, align 4, !tbaa !9
  %1502 = add nsw i32 %1501, 1
  store i32 %1502, ptr %65, align 4, !tbaa !9
  br label %1479, !llvm.loop !25

1503:                                             ; preds = %1479
  %1504 = load double, ptr %80, align 8, !tbaa !11
  %1505 = load ptr, ptr %39, align 8, !tbaa !5
  %1506 = load double, ptr %1505, align 8, !tbaa !11
  %1507 = fmul double %1506, %1504
  store double %1507, ptr %1505, align 8, !tbaa !11
  br label %1508

1508:                                             ; preds = %1503, %1378
  %1509 = load i32, ptr %64, align 4, !tbaa !9
  %1510 = load i32, ptr %66, align 4, !tbaa !9
  %1511 = add nsw i32 %1510, 2
  %1512 = icmp sgt i32 %1509, %1511
  br i1 %1512, label %1513, label %1566

1513:                                             ; preds = %1508
  %1514 = load i32, ptr %78, align 4, !tbaa !9
  %1515 = sub nsw i32 %1514, 1
  store i32 %1515, ptr %59, align 4, !tbaa !9
  %1516 = load ptr, ptr %31, align 8, !tbaa !5
  %1517 = load i32, ptr %77, align 4, !tbaa !9
  %1518 = load i32, ptr %78, align 4, !tbaa !9
  %1519 = load i32, ptr %49, align 4, !tbaa !9
  %1520 = mul nsw i32 %1518, %1519
  %1521 = add nsw i32 %1517, %1520
  %1522 = sext i32 %1521 to i64
  %1523 = getelementptr inbounds double, ptr %1516, i64 %1522
  %1524 = load ptr, ptr %32, align 8, !tbaa !5
  %1525 = load ptr, ptr %29, align 8, !tbaa !5
  %1526 = load i32, ptr %78, align 4, !tbaa !9
  %1527 = load i32, ptr %47, align 4, !tbaa !9
  %1528 = mul nsw i32 %1526, %1527
  %1529 = add nsw i32 %1528, 1
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds double, ptr %1525, i64 %1530
  %1532 = load ptr, ptr %30, align 8, !tbaa !5
  %1533 = load ptr, ptr %37, align 8, !tbaa !5
  %1534 = load i32, ptr %77, align 4, !tbaa !9
  %1535 = load i32, ptr %55, align 4, !tbaa !9
  %1536 = add nsw i32 %1534, %1535
  %1537 = sext i32 %1536 to i64
  %1538 = getelementptr inbounds double, ptr %1533, i64 %1537
  %1539 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %74, ptr noundef %59, ptr noundef %75, ptr noundef @c_b52, ptr noundef %1523, ptr noundef %1524, ptr noundef %1531, ptr noundef %1532, ptr noundef @c_b52, ptr noundef %1538, ptr noundef %1539)
  %1540 = load i32, ptr %78, align 4, !tbaa !9
  %1541 = sub nsw i32 %1540, 1
  store i32 %1541, ptr %59, align 4, !tbaa !9
  %1542 = load ptr, ptr %37, align 8, !tbaa !5
  %1543 = load i32, ptr %77, align 4, !tbaa !9
  %1544 = load i32, ptr %78, align 4, !tbaa !9
  %1545 = load i32, ptr %55, align 4, !tbaa !9
  %1546 = mul nsw i32 %1544, %1545
  %1547 = add nsw i32 %1543, %1546
  %1548 = sext i32 %1547 to i64
  %1549 = getelementptr inbounds double, ptr %1542, i64 %1548
  %1550 = load ptr, ptr %38, align 8, !tbaa !5
  %1551 = load ptr, ptr %35, align 8, !tbaa !5
  %1552 = load i32, ptr %78, align 4, !tbaa !9
  %1553 = load i32, ptr %53, align 4, !tbaa !9
  %1554 = mul nsw i32 %1552, %1553
  %1555 = add nsw i32 %1554, 1
  %1556 = sext i32 %1555 to i64
  %1557 = getelementptr inbounds double, ptr %1551, i64 %1556
  %1558 = load ptr, ptr %36, align 8, !tbaa !5
  %1559 = load ptr, ptr %37, align 8, !tbaa !5
  %1560 = load i32, ptr %77, align 4, !tbaa !9
  %1561 = load i32, ptr %55, align 4, !tbaa !9
  %1562 = add nsw i32 %1560, %1561
  %1563 = sext i32 %1562 to i64
  %1564 = getelementptr inbounds double, ptr %1559, i64 %1563
  %1565 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %74, ptr noundef %59, ptr noundef %75, ptr noundef @c_b52, ptr noundef %1549, ptr noundef %1550, ptr noundef %1557, ptr noundef %1558, ptr noundef @c_b52, ptr noundef %1564, ptr noundef %1565)
  br label %1566

1566:                                             ; preds = %1513, %1508
  %1567 = load i32, ptr %63, align 4, !tbaa !9
  %1568 = load i32, ptr %66, align 4, !tbaa !9
  %1569 = icmp slt i32 %1567, %1568
  br i1 %1569, label %1570, label %1637

1570:                                             ; preds = %1566
  %1571 = load ptr, ptr %25, align 8, !tbaa !5
  %1572 = load i32, ptr %1571, align 4, !tbaa !9
  %1573 = load i32, ptr %72, align 4, !tbaa !9
  %1574 = sub nsw i32 %1572, %1573
  store i32 %1574, ptr %59, align 4, !tbaa !9
  %1575 = load ptr, ptr %27, align 8, !tbaa !5
  %1576 = load i32, ptr %77, align 4, !tbaa !9
  %1577 = load i32, ptr %72, align 4, !tbaa !9
  %1578 = add nsw i32 %1577, 1
  %1579 = load i32, ptr %45, align 4, !tbaa !9
  %1580 = mul nsw i32 %1578, %1579
  %1581 = add nsw i32 %1576, %1580
  %1582 = sext i32 %1581 to i64
  %1583 = getelementptr inbounds double, ptr %1575, i64 %1582
  %1584 = load ptr, ptr %28, align 8, !tbaa !5
  %1585 = load ptr, ptr %31, align 8, !tbaa !5
  %1586 = load i32, ptr %77, align 4, !tbaa !9
  %1587 = load i32, ptr %78, align 4, !tbaa !9
  %1588 = load i32, ptr %49, align 4, !tbaa !9
  %1589 = mul nsw i32 %1587, %1588
  %1590 = add nsw i32 %1586, %1589
  %1591 = sext i32 %1590 to i64
  %1592 = getelementptr inbounds double, ptr %1585, i64 %1591
  %1593 = load ptr, ptr %32, align 8, !tbaa !5
  %1594 = load ptr, ptr %31, align 8, !tbaa !5
  %1595 = load i32, ptr %72, align 4, !tbaa !9
  %1596 = add nsw i32 %1595, 1
  %1597 = load i32, ptr %78, align 4, !tbaa !9
  %1598 = load i32, ptr %49, align 4, !tbaa !9
  %1599 = mul nsw i32 %1597, %1598
  %1600 = add nsw i32 %1596, %1599
  %1601 = sext i32 %1600 to i64
  %1602 = getelementptr inbounds double, ptr %1594, i64 %1601
  %1603 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str, ptr noundef %59, ptr noundef %75, ptr noundef %74, ptr noundef @c_b51, ptr noundef %1583, ptr noundef %1584, ptr noundef %1592, ptr noundef %1593, ptr noundef @c_b52, ptr noundef %1602, ptr noundef %1603)
  %1604 = load ptr, ptr %25, align 8, !tbaa !5
  %1605 = load i32, ptr %1604, align 4, !tbaa !9
  %1606 = load i32, ptr %72, align 4, !tbaa !9
  %1607 = sub nsw i32 %1605, %1606
  store i32 %1607, ptr %59, align 4, !tbaa !9
  %1608 = load ptr, ptr %33, align 8, !tbaa !5
  %1609 = load i32, ptr %77, align 4, !tbaa !9
  %1610 = load i32, ptr %72, align 4, !tbaa !9
  %1611 = add nsw i32 %1610, 1
  %1612 = load i32, ptr %51, align 4, !tbaa !9
  %1613 = mul nsw i32 %1611, %1612
  %1614 = add nsw i32 %1609, %1613
  %1615 = sext i32 %1614 to i64
  %1616 = getelementptr inbounds double, ptr %1608, i64 %1615
  %1617 = load ptr, ptr %34, align 8, !tbaa !5
  %1618 = load ptr, ptr %37, align 8, !tbaa !5
  %1619 = load i32, ptr %77, align 4, !tbaa !9
  %1620 = load i32, ptr %78, align 4, !tbaa !9
  %1621 = load i32, ptr %55, align 4, !tbaa !9
  %1622 = mul nsw i32 %1620, %1621
  %1623 = add nsw i32 %1619, %1622
  %1624 = sext i32 %1623 to i64
  %1625 = getelementptr inbounds double, ptr %1618, i64 %1624
  %1626 = load ptr, ptr %38, align 8, !tbaa !5
  %1627 = load ptr, ptr %31, align 8, !tbaa !5
  %1628 = load i32, ptr %72, align 4, !tbaa !9
  %1629 = add nsw i32 %1628, 1
  %1630 = load i32, ptr %78, align 4, !tbaa !9
  %1631 = load i32, ptr %49, align 4, !tbaa !9
  %1632 = mul nsw i32 %1630, %1631
  %1633 = add nsw i32 %1629, %1632
  %1634 = sext i32 %1633 to i64
  %1635 = getelementptr inbounds double, ptr %1627, i64 %1634
  %1636 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str, ptr noundef %59, ptr noundef %75, ptr noundef %74, ptr noundef @c_b51, ptr noundef %1616, ptr noundef %1617, ptr noundef %1625, ptr noundef %1626, ptr noundef @c_b52, ptr noundef %1635, ptr noundef %1636)
  br label %1637

1637:                                             ; preds = %1570, %1566
  br label %1638

1638:                                             ; preds = %1637
  %1639 = load i32, ptr %64, align 4, !tbaa !9
  %1640 = add nsw i32 %1639, -1
  store i32 %1640, ptr %64, align 4, !tbaa !9
  br label %1292, !llvm.loop !26

1641:                                             ; preds = %1292
  br label %1642

1642:                                             ; preds = %1641
  %1643 = load i32, ptr %63, align 4, !tbaa !9
  %1644 = add nsw i32 %1643, 1
  store i32 %1644, ptr %63, align 4, !tbaa !9
  br label %1268, !llvm.loop !27

1645:                                             ; preds = %1268
  br label %1646

1646:                                             ; preds = %1645, %1264
  %1647 = load i32, ptr %70, align 4, !tbaa !9
  %1648 = sitofp i32 %1647 to double
  %1649 = load ptr, ptr %41, align 8, !tbaa !5
  %1650 = getelementptr inbounds double, ptr %1649, i64 1
  store double %1648, ptr %1650, align 8, !tbaa !11
  store i32 1, ptr %85, align 4
  br label %1651

1651:                                             ; preds = %1646, %610, %376, %355, %347
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  ret void
}

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

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

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

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

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

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

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

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

; 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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}


; 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 i32, align 4
@c_n1 = external hidden global i32, align 4
@c__5 = external hidden global i32, align 4
@.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 i32, align 4
@c_b51 = external hidden global double, align 8
@c_b52 = external hidden global double, align 8

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

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

.critedge:                                        ; preds = %22
  %59 = load i32, ptr %1, align 4, !tbaa !5
  %or.cond724 = icmp ugt i32 %59, 4
  br i1 %or.cond724, label %.thread742.sink.split, label %60

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

99:                                               ; preds = %.thread737
  %100 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  store i32 %100, ptr %30, align 4, !tbaa !5
  %101 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  store i32 %101, ptr %31, align 4, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !5
  br i1 %.not, label %109, label %102

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

105:                                              ; preds = %102
  %106 = add nsw i32 %103, -2
  store i32 %106, ptr %28, align 4, !tbaa !5
  tail call void @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
  tail call void @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 %109

107:                                              ; preds = %102
  %108 = icmp sgt i32 %103, 0
  %spec.select731 = select i1 %108, i32 2, i32 1
  br label %109

109:                                              ; preds = %107, %105, %99
  %110 = phi i1 [ false, %105 ], [ false, %99 ], [ %108, %107 ]
  %111 = phi i32 [ 1, %105 ], [ 1, %99 ], [ %spec.select731, %107 ]
  %112 = icmp slt i32 %100, 2
  %113 = icmp slt i32 %101, 2
  %or.cond3 = select i1 %112, i1 %113, i1 false
  br i1 %or.cond3, label %.lr.ph892.preheader, label %114

114:                                              ; preds = %109
  %115 = load i32, ptr %2, align 4, !tbaa !5
  %.not700 = icmp slt i32 %100, %115
  br i1 %.not700, label %167, label %116

116:                                              ; preds = %114
  %117 = load i32, ptr %3, align 4, !tbaa !5
  %.not701 = icmp slt i32 %101, %117
  br i1 %.not701, label %167, label %.lr.ph892.preheader

.lr.ph892.preheader:                              ; preds = %116, %109
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !5
  call void @dtgsy2_(ptr noundef %0, ptr noundef nonnull %28, 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 %26, ptr noundef nonnull %32, ptr noundef %20, ptr noundef nonnull %33, ptr noundef nonnull %21) #5
  %118 = load double, ptr %32, align 8, !tbaa !9
  %119 = fcmp une double %118, 0.000000e+00
  br i1 %119, label %120, label %134

120:                                              ; preds = %.lr.ph892.preheader
  %121 = load i32, ptr %1, align 4, !tbaa !5
  switch i32 %121, label %127 [
    i32 1, label %122
    i32 3, label %122
  ]

122:                                              ; preds = %120, %120
  %123 = load i32, ptr %2, align 4, !tbaa !5
  %124 = shl i32 %123, 1
  %125 = load i32, ptr %3, align 4, !tbaa !5
  %126 = mul nsw i32 %124, %125
  br label %.sink.split

127:                                              ; preds = %120
  %128 = load i32, ptr %33, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %122, %127
  %.sink980 = phi i32 [ %126, %122 ], [ %128, %127 ]
  %129 = sitofp i32 %.sink980 to double
  %130 = call double @sqrt(double noundef %129) #5
  %.sink965 = load double, ptr %32, align 8, !tbaa !9
  %.sink967 = load double, ptr %26, align 8, !tbaa !9
  %131 = call double @sqrt(double noundef %.sink967) #5
  %132 = fmul double %.sink965, %131
  %133 = fdiv double %130, %132
  store double %133, ptr %17, align 8, !tbaa !9
  br label %134

134:                                              ; preds = %.sink.split, %.lr.ph892.preheader
  br i1 %110, label %135, label %144

135:                                              ; preds = %134
  br i1 %.not, label %138, label %136

136:                                              ; preds = %135
  %137 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %137, ptr %28, align 4, !tbaa !5
  br label %138

138:                                              ; preds = %136, %135
  %139 = load double, ptr %16, align 8, !tbaa !9
  call void @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
  %140 = load i32, ptr %2, align 4, !tbaa !5
  %141 = load i32, ptr %3, align 4, !tbaa !5
  %142 = mul nsw i32 %141, %140
  %143 = sext i32 %142 to i64
  %gep887.peel = getelementptr double, ptr %18, i64 %143
  call void @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %gep887.peel, ptr noundef nonnull %2) #5
  call void @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
  call void @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 %144

144:                                              ; preds = %134, %138
  %.1659.peel = phi double [ %139, %138 ], [ undef, %134 ]
  %.not717.not.peel = icmp ugt i32 %111, 1
  br i1 %.not717.not.peel, label %.lr.ph892, label %.loopexit

.lr.ph892:                                        ; preds = %144
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !5
  call void @dtgsy2_(ptr noundef %0, ptr noundef nonnull %28, 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 %26, ptr noundef nonnull %32, ptr noundef %20, ptr noundef nonnull %33, ptr noundef nonnull %21) #5
  %145 = load double, ptr %32, align 8, !tbaa !9
  %146 = fcmp une double %145, 0.000000e+00
  br i1 %146, label %147, label %161

147:                                              ; preds = %.lr.ph892
  %148 = load i32, ptr %1, align 4, !tbaa !5
  switch i32 %148, label %154 [
    i32 1, label %149
    i32 3, label %149
  ]

149:                                              ; preds = %147, %147
  %150 = load i32, ptr %2, align 4, !tbaa !5
  %151 = shl i32 %150, 1
  %152 = load i32, ptr %3, align 4, !tbaa !5
  %153 = mul nsw i32 %151, %152
  br label %.sink.split968

154:                                              ; preds = %147
  %155 = load i32, ptr %33, align 4, !tbaa !5
  br label %.sink.split968

.sink.split968:                                   ; preds = %149, %154
  %.sink982 = phi i32 [ %153, %149 ], [ %155, %154 ]
  %156 = sitofp i32 %.sink982 to double
  %157 = call double @sqrt(double noundef %156) #5
  %.sink972 = load double, ptr %32, align 8, !tbaa !9
  %.sink974 = load double, ptr %26, align 8, !tbaa !9
  %158 = call double @sqrt(double noundef %.sink974) #5
  %159 = fmul double %.sink972, %158
  %160 = fdiv double %157, %159
  store double %160, ptr %17, align 8, !tbaa !9
  br label %161

161:                                              ; preds = %.sink.split968, %.lr.ph892
  br i1 %110, label %162, label %.loopexit

162:                                              ; preds = %161
  call void @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
  %163 = load i32, ptr %2, align 4, !tbaa !5
  %164 = load i32, ptr %3, align 4, !tbaa !5
  %165 = mul nsw i32 %164, %163
  %166 = sext i32 %165 to i64
  %gep885 = getelementptr double, ptr %18, i64 %166
  call void @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %gep885, ptr noundef nonnull %2, ptr noundef %14, ptr noundef nonnull %15) #5
  store double %.1659.peel, ptr %16, align 8, !tbaa !9
  br label %.loopexit

167:                                              ; preds = %116, %114
  %168 = icmp slt i32 %115, 1
  br i1 %168, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %167, %172
  %indvars.iv = phi i64 [ %indvars.iv.next, %172 ], [ 0, %167 ]
  %.0676756 = phi i32 [ %.1677, %172 ], [ 1, %167 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %169 = getelementptr i32, ptr %20, i64 %indvars.iv
  store i32 %.0676756, ptr %169, align 4, !tbaa !5
  %170 = add nsw i32 %.0676756, %100
  %171 = load i32, ptr %2, align 4, !tbaa !5
  %.not702 = icmp slt i32 %170, %171
  br i1 %.not702, label %172, label %._crit_edge.loopexit

172:                                              ; preds = %.lr.ph
  %173 = add nsw i32 %170, -1
  %174 = mul nsw i32 %173, %35
  %175 = add nsw i32 %174, %170
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds double, ptr %37, i64 %176
  %178 = load double, ptr %177, align 8, !tbaa !9
  %179 = fcmp une double %178, 0.000000e+00
  %180 = zext i1 %179 to i32
  %.1677 = add nsw i32 %170, %180
  %181 = icmp sgt i32 %.1677, %171
  br i1 %181, label %._crit_edge.loopexit, label %.lr.ph

._crit_edge.loopexit:                             ; preds = %.lr.ph, %172
  %182 = trunc nuw nsw i64 %indvars.iv.next to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %167
  %183 = phi i32 [ %115, %167 ], [ %171, %._crit_edge.loopexit ]
  %.1666 = phi i32 [ 0, %167 ], [ %182, %._crit_edge.loopexit ]
  %184 = add nsw i32 %183, 1
  %185 = sext i32 %.1666 to i64
  %186 = getelementptr i32, ptr %53, i64 %185
  %187 = getelementptr i8, ptr %186, i64 4
  store i32 %184, ptr %187, align 4, !tbaa !5
  %188 = load i32, ptr %186, align 4, !tbaa !5
  %189 = icmp eq i32 %188, %184
  %190 = sext i1 %189 to i32
  %spec.select732 = add i32 %.1666, %190
  %191 = add i32 %spec.select732, 1
  %192 = load i32, ptr %3, align 4, !tbaa !5
  %193 = icmp slt i32 %192, 1
  br i1 %193, label %._crit_edge764, label %.lr.ph763.preheader

.lr.ph763.preheader:                              ; preds = %._crit_edge
  %194 = sext i32 %191 to i64
  br label %.lr.ph763

.lr.ph763:                                        ; preds = %.lr.ph763.preheader, %198
  %indvars.iv898 = phi i64 [ %194, %.lr.ph763.preheader ], [ %indvars.iv.next899, %198 ]
  %.0672760 = phi i32 [ 1, %.lr.ph763.preheader ], [ %.1673, %198 ]
  %indvars.iv.next899 = add nsw i64 %indvars.iv898, 1
  %195 = getelementptr i32, ptr %20, i64 %indvars.iv898
  store i32 %.0672760, ptr %195, align 4, !tbaa !5
  %196 = add nsw i32 %.0672760, %101
  %197 = load i32, ptr %3, align 4, !tbaa !5
  %.not703 = icmp slt i32 %196, %197
  br i1 %.not703, label %198, label %._crit_edge764.loopexit

198:                                              ; preds = %.lr.ph763
  %199 = add nsw i32 %196, -1
  %200 = mul nsw i32 %199, %38
  %201 = add nsw i32 %200, %196
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds double, ptr %40, i64 %202
  %204 = load double, ptr %203, align 8, !tbaa !9
  %205 = fcmp une double %204, 0.000000e+00
  %206 = zext i1 %205 to i32
  %.1673 = add nsw i32 %196, %206
  %207 = icmp sgt i32 %.1673, %197
  br i1 %207, label %._crit_edge764.loopexit, label %.lr.ph763

._crit_edge764.loopexit:                          ; preds = %.lr.ph763, %198
  %208 = trunc nsw i64 %indvars.iv.next899 to i32
  br label %._crit_edge764

._crit_edge764:                                   ; preds = %._crit_edge764.loopexit, %._crit_edge
  %209 = phi i32 [ %192, %._crit_edge ], [ %197, %._crit_edge764.loopexit ]
  %.1663 = phi i32 [ %191, %._crit_edge ], [ %208, %._crit_edge764.loopexit ]
  %210 = add nsw i32 %209, 1
  %211 = sext i32 %.1663 to i64
  %212 = getelementptr i32, ptr %53, i64 %211
  %213 = getelementptr i8, ptr %212, i64 4
  store i32 %210, ptr %213, align 4, !tbaa !5
  %214 = load i32, ptr %212, align 4, !tbaa !5
  %215 = icmp eq i32 %214, %210
  %216 = sext i1 %215 to i32
  %spec.select733 = add i32 %.1663, %216
  br i1 %.not, label %384, label %.lr.ph830

.lr.ph830:                                        ; preds = %._crit_edge764
  %217 = add i32 %spec.select732, 2
  %.not711811 = icmp sgt i32 %217, %spec.select733
  %invariant.gep798 = getelementptr i8, ptr %20, i64 4
  %invariant.gep800 = getelementptr i8, ptr %37, i64 8
  %invariant.gep802 = getelementptr i8, ptr %43, i64 8
  %invariant.gep804 = getelementptr i8, ptr %46, i64 8
  %invariant.gep806 = getelementptr i8, ptr %52, i64 8
  %218 = icmp sgt i32 %spec.select732, 0
  %219 = add i32 %38, 1
  %220 = add i32 %47, 1
  %221 = sext i32 %spec.select733 to i64
  %gep799 = getelementptr i32, ptr %invariant.gep798, i64 %221
  %222 = add i32 %spec.select733, 1
  %223 = sext i32 %41 to i64
  %224 = sext i32 %50 to i64
  %225 = zext i32 %spec.select732 to i64
  %226 = sext i32 %217 to i64
  %227 = getelementptr inbounds i32, ptr %53, i64 %221
  %228 = sext i32 %222 to i64
  %229 = getelementptr inbounds i32, ptr %53, i64 %228
  br label %230

230:                                              ; preds = %.lr.ph830, %382
  %.1828 = phi i32 [ 1, %.lr.ph830 ], [ %383, %382 ]
  %.2827 = phi double [ undef, %.lr.ph830 ], [ %.3, %382 ]
  store double 0.000000e+00, ptr %32, align 8, !tbaa !9
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  br i1 %.not711811, label %._crit_edge815.thread, label %.lr.ph814

.lr.ph814:                                        ; preds = %230
  br i1 %218, label %.lr.ph810.us, label %.loopexit754.preheader

.loopexit754.preheader:                           ; preds = %.lr.ph814
  %231 = load i32, ptr %227, align 4, !tbaa !5
  %232 = load i32, ptr %229, align 4, !tbaa !5
  %233 = sub i32 %232, %231
  store i32 %233, ptr %31, align 4, !tbaa !5
  br label %._crit_edge815.thread

.lr.ph810.us:                                     ; preds = %328, %.lr.ph814
  %234 = phi i32 [ 0, %.lr.ph814 ], [ %292, %328 ]
  %indvars.iv916 = phi i64 [ %226, %.lr.ph814 ], [ %indvars.iv.next917, %328 ]
  %235 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv916
  %236 = load i32, ptr %235, align 4, !tbaa !5
  %indvars.iv.next917 = add nsw i64 %indvars.iv916, 1
  %237 = getelementptr i32, ptr %20, i64 %indvars.iv916
  %238 = load i32, ptr %237, align 4, !tbaa !5
  %239 = add nsw i32 %238, -1
  %240 = sub i32 %238, %236
  store i32 %240, ptr %31, align 4, !tbaa !5
  %241 = mul i32 %236, %219
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %40, i64 %242
  %244 = mul nsw i32 %236, %41
  %245 = mul i32 %236, %220
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds double, ptr %49, i64 %246
  %248 = mul nsw i32 %236, %50
  %249 = add nsw i32 %236, -1
  %250 = sext i32 %244 to i64
  %gep803.us = getelementptr double, ptr %invariant.gep802, i64 %250
  %251 = sext i32 %248 to i64
  %gep807.us = getelementptr double, ptr %invariant.gep806, i64 %251
  %252 = icmp slt i64 %indvars.iv916, %221
  %253 = mul nsw i32 %238, %38
  %254 = add nsw i32 %253, %236
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds double, ptr %40, i64 %255
  %257 = mul nsw i32 %238, %41
  %258 = mul nsw i32 %238, %47
  %259 = add nsw i32 %258, %236
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds double, ptr %49, i64 %260
  %262 = mul nsw i32 %238, %50
  %263 = sext i32 %236 to i64
  %264 = sext i32 %238 to i64
  %.not712770.us = icmp slt i32 %236, 2
  %.not713779.us.not = icmp slt i32 %236, %238
  br label %265

265:                                              ; preds = %.backedge948, %.lr.ph810.us
  %266 = phi i32 [ %234, %.lr.ph810.us ], [ %292, %.backedge948 ]
  %indvars.iv913 = phi i64 [ %225, %.lr.ph810.us ], [ %indvars.iv913.be, %.backedge948 ]
  %267 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv913
  %268 = load i32, ptr %267, align 4, !tbaa !5
  %269 = getelementptr inbounds i8, ptr %267, i64 4
  %270 = load i32, ptr %269, align 4, !tbaa !5
  %271 = add nsw i32 %270, -1
  %272 = sub i32 %270, %268
  store i32 %272, ptr %30, align 4, !tbaa !5
  store i32 0, ptr %27, align 4, !tbaa !5
  %273 = mul nsw i32 %268, %35
  %274 = add nsw i32 %273, %268
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds double, ptr %37, i64 %275
  %277 = add nsw i32 %268, %244
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds double, ptr %43, i64 %278
  %280 = mul nsw i32 %268, %44
  %281 = add nsw i32 %280, %268
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %46, i64 %282
  %284 = add nsw i32 %268, %248
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds double, ptr %52, i64 %285
  call void @dtgsy2_(ptr noundef %0, ptr noundef nonnull %28, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %276, ptr noundef nonnull %5, ptr noundef %243, ptr noundef nonnull %7, ptr noundef %279, ptr noundef nonnull %9, ptr noundef %283, ptr noundef nonnull %11, ptr noundef %247, ptr noundef nonnull %13, ptr noundef %286, ptr noundef nonnull %15, ptr noundef nonnull %34, ptr noundef nonnull %26, ptr noundef nonnull %32, ptr noundef %gep799, ptr noundef nonnull %27, ptr noundef nonnull %29) #5
  %287 = load i32, ptr %29, align 4, !tbaa !5
  %288 = icmp sgt i32 %287, 0
  br i1 %288, label %289, label %290

289:                                              ; preds = %265
  store i32 %287, ptr %21, align 4, !tbaa !5
  br label %290

290:                                              ; preds = %289, %265
  %291 = load i32, ptr %27, align 4, !tbaa !5
  %292 = add nsw i32 %266, %291
  %293 = load double, ptr %34, align 8, !tbaa !9
  %294 = fcmp une double %293, 1.000000e+00
  br i1 %294, label %295, label %322

295:                                              ; preds = %290
  store i32 %249, ptr %24, align 4, !tbaa !5
  br i1 %.not712770.us, label %._crit_edge774.us, label %.lr.ph773.us

.lr.ph773.us:                                     ; preds = %295, %.lr.ph773.us
  %indvars.iv901 = phi i64 [ %indvars.iv.next902, %.lr.ph773.us ], [ 1, %295 ]
  %296 = mul nsw i64 %indvars.iv901, %223
  %gep.us = getelementptr double, ptr %invariant.gep802, i64 %296
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep.us, ptr noundef nonnull @c__1) #5
  %297 = mul nsw i64 %indvars.iv901, %224
  %gep769.us = getelementptr double, ptr %invariant.gep806, i64 %297
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep769.us, ptr noundef nonnull @c__1) #5
  %indvars.iv.next902 = add nuw nsw i64 %indvars.iv901, 1
  %298 = load i32, ptr %24, align 4, !tbaa !5
  %299 = sext i32 %298 to i64
  %.not712.us.not = icmp slt i64 %indvars.iv901, %299
  br i1 %.not712.us.not, label %.lr.ph773.us, label %._crit_edge774.us, !llvm.loop !11

._crit_edge774.us:                                ; preds = %.lr.ph773.us, %295
  store i32 %239, ptr %24, align 4, !tbaa !5
  br i1 %.not713779.us.not, label %.lr.ph782.us, label %._crit_edge788.us

300:                                              ; preds = %.lr.ph782.us, %300
  %indvars.iv904 = phi i64 [ %263, %.lr.ph782.us ], [ %indvars.iv.next905, %300 ]
  store i32 %343, ptr %25, align 4, !tbaa !5
  %301 = mul nsw i64 %indvars.iv904, %223
  %gep776.us = getelementptr double, ptr %invariant.gep802, i64 %301
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep776.us, ptr noundef nonnull @c__1) #5
  store i32 %343, ptr %25, align 4, !tbaa !5
  %302 = mul nsw i64 %indvars.iv904, %224
  %gep778.us = getelementptr double, ptr %invariant.gep806, i64 %302
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep778.us, ptr noundef nonnull @c__1) #5
  %indvars.iv.next905 = add nsw i64 %indvars.iv904, 1
  %303 = load i32, ptr %24, align 4, !tbaa !5
  %304 = sext i32 %303 to i64
  %.not713.us.not = icmp slt i64 %indvars.iv904, %304
  br i1 %.not713.us.not, label %300, label %._crit_edge783.us, !llvm.loop !13

._crit_edge783.us:                                ; preds = %300
  store i32 %239, ptr %24, align 4, !tbaa !5
  br i1 %.not713779.us.not, label %.lr.ph787.us.preheader, label %._crit_edge788.us

.lr.ph787.us.preheader:                           ; preds = %._crit_edge783.us
  %305 = sext i32 %270 to i64
  %invariant.gep = getelementptr double, ptr %43, i64 %305
  %invariant.gep956 = getelementptr double, ptr %52, i64 %305
  br label %.lr.ph787.us

.lr.ph787.us:                                     ; preds = %.lr.ph787.us.preheader, %.lr.ph787.us
  %indvars.iv907 = phi i64 [ %263, %.lr.ph787.us.preheader ], [ %indvars.iv.next908, %.lr.ph787.us ]
  %306 = load i32, ptr %2, align 4, !tbaa !5
  %307 = sub nsw i32 %306, %271
  store i32 %307, ptr %25, align 4, !tbaa !5
  %308 = mul nsw i64 %indvars.iv907, %223
  %gep955 = getelementptr double, ptr %invariant.gep, i64 %308
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep955, ptr noundef nonnull @c__1) #5
  %309 = load i32, ptr %2, align 4, !tbaa !5
  %310 = sub nsw i32 %309, %271
  store i32 %310, ptr %25, align 4, !tbaa !5
  %311 = mul nsw i64 %indvars.iv907, %224
  %gep957 = getelementptr double, ptr %invariant.gep956, i64 %311
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep957, ptr noundef nonnull @c__1) #5
  %indvars.iv.next908 = add nsw i64 %indvars.iv907, 1
  %312 = load i32, ptr %24, align 4, !tbaa !5
  %313 = sext i32 %312 to i64
  %.not714.us.not = icmp slt i64 %indvars.iv907, %313
  br i1 %.not714.us.not, label %.lr.ph787.us, label %._crit_edge788.us, !llvm.loop !14

._crit_edge788.us:                                ; preds = %.lr.ph787.us, %._crit_edge774.us, %._crit_edge783.us
  %314 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %314, ptr %24, align 4, !tbaa !5
  %.not715793.us = icmp sgt i32 %238, %314
  br i1 %.not715793.us, label %._crit_edge797.us, label %.lr.ph796.us

.lr.ph796.us:                                     ; preds = %._crit_edge788.us, %.lr.ph796.us
  %indvars.iv910 = phi i64 [ %indvars.iv.next911, %.lr.ph796.us ], [ %264, %._crit_edge788.us ]
  %315 = mul nsw i64 %indvars.iv910, %223
  %gep790.us = getelementptr double, ptr %invariant.gep802, i64 %315
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep790.us, ptr noundef nonnull @c__1) #5
  %316 = mul nsw i64 %indvars.iv910, %224
  %gep792.us = getelementptr double, ptr %invariant.gep806, i64 %316
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep792.us, ptr noundef nonnull @c__1) #5
  %indvars.iv.next911 = add nsw i64 %indvars.iv910, 1
  %317 = load i32, ptr %24, align 4, !tbaa !5
  %318 = sext i32 %317 to i64
  %.not715.us.not = icmp slt i64 %indvars.iv910, %318
  br i1 %.not715.us.not, label %.lr.ph796.us, label %._crit_edge797.us, !llvm.loop !15

._crit_edge797.us:                                ; preds = %.lr.ph796.us, %._crit_edge788.us
  %319 = load double, ptr %34, align 8, !tbaa !9
  %320 = load double, ptr %16, align 8, !tbaa !9
  %321 = fmul double %319, %320
  store double %321, ptr %16, align 8, !tbaa !9
  br label %322

322:                                              ; preds = %._crit_edge797.us, %290
  %.not716.us = icmp eq i64 %indvars.iv913, 1
  br i1 %.not716.us, label %327, label %323

323:                                              ; preds = %322
  %324 = add nsw i32 %268, -1
  store i32 %324, ptr %24, align 4, !tbaa !5
  %325 = sext i32 %273 to i64
  %gep801.us = getelementptr double, ptr %invariant.gep800, i64 %325
  call void @dgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull @c_b51, ptr noundef %gep801.us, ptr noundef nonnull %5, ptr noundef %279, ptr noundef nonnull %9, ptr noundef nonnull @c_b52, ptr noundef %gep803.us, ptr noundef nonnull %9) #5
  store i32 %324, ptr %24, align 4, !tbaa !5
  %326 = sext i32 %280 to i64
  %gep805.us = getelementptr double, ptr %invariant.gep804, i64 %326
  call void @dgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull @c_b51, ptr noundef %gep805.us, ptr noundef nonnull %11, ptr noundef %279, ptr noundef nonnull %9, ptr noundef nonnull @c_b52, ptr noundef %gep807.us, ptr noundef nonnull %15) #5
  br label %327

327:                                              ; preds = %323, %322
  br i1 %252, label %328, label %.thread942

328:                                              ; preds = %327
  %329 = load i32, ptr %3, align 4, !tbaa !5
  %330 = sub nsw i32 %329, %239
  store i32 %330, ptr %24, align 4, !tbaa !5
  %331 = add nsw i32 %268, %257
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds double, ptr %43, i64 %332
  call void @dgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull @c_b52, ptr noundef %286, ptr noundef nonnull %15, ptr noundef %256, ptr noundef nonnull %7, ptr noundef nonnull @c_b52, ptr noundef %333, ptr noundef nonnull %9) #5
  %334 = load i32, ptr %3, align 4, !tbaa !5
  %335 = sub nsw i32 %334, %239
  store i32 %335, ptr %24, align 4, !tbaa !5
  %336 = add nsw i32 %268, %262
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds double, ptr %52, i64 %337
  call void @dgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull @c_b52, ptr noundef %286, ptr noundef nonnull %15, ptr noundef %261, ptr noundef nonnull %13, ptr noundef nonnull @c_b52, ptr noundef %338, ptr noundef nonnull %15) #5
  %339 = trunc nuw i64 %indvars.iv913 to i32
  %340 = icmp sgt i32 %339, 1
  br i1 %340, label %.backedge948, label %.lr.ph810.us

.backedge948:                                     ; preds = %328, %.thread942
  %indvars.iv913.be = add nsw i64 %indvars.iv913, -1
  br label %265, !llvm.loop !16

.thread942:                                       ; preds = %327
  %341 = trunc nuw i64 %indvars.iv913 to i32
  %342 = icmp sgt i32 %341, 1
  br i1 %342, label %.backedge948, label %._crit_edge815

.lr.ph782.us:                                     ; preds = %._crit_edge774.us
  %343 = add nsw i32 %268, -1
  br label %300

._crit_edge815:                                   ; preds = %.thread942
  %.pre = load double, ptr %32, align 8, !tbaa !9
  %344 = fcmp une double %.pre, 0.000000e+00
  br i1 %344, label %345, label %._crit_edge815.thread

345:                                              ; preds = %._crit_edge815
  %346 = load i32, ptr %1, align 4, !tbaa !5
  switch i32 %346, label %359 [
    i32 1, label %347
    i32 3, label %347
  ]

347:                                              ; preds = %345, %345
  %348 = load i32, ptr %2, align 4, !tbaa !5
  %349 = shl i32 %348, 1
  %350 = load i32, ptr %3, align 4, !tbaa !5
  %351 = mul nsw i32 %349, %350
  %352 = sitofp i32 %351 to double
  %353 = call double @sqrt(double noundef %352) #5
  %354 = load double, ptr %32, align 8, !tbaa !9
  %355 = load double, ptr %26, align 8, !tbaa !9
  %356 = call double @sqrt(double noundef %355) #5
  %357 = fmul double %354, %356
  %358 = fdiv double %353, %357
  store double %358, ptr %17, align 8, !tbaa !9
  br label %._crit_edge815.thread

359:                                              ; preds = %345
  %360 = sitofp i32 %292 to double
  %361 = call double @sqrt(double noundef %360) #5
  %362 = load double, ptr %32, align 8, !tbaa !9
  %363 = load double, ptr %26, align 8, !tbaa !9
  %364 = call double @sqrt(double noundef %363) #5
  %365 = fmul double %362, %364
  %366 = fdiv double %361, %365
  store double %366, ptr %17, align 8, !tbaa !9
  br label %._crit_edge815.thread

._crit_edge815.thread:                            ; preds = %230, %.loopexit754.preheader, %347, %359, %._crit_edge815
  %367 = icmp eq i32 %.1828, 1
  %or.cond9 = and i1 %110, %367
  br i1 %or.cond9, label %368, label %375

368:                                              ; preds = %._crit_edge815.thread
  %369 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %369, ptr %28, align 4, !tbaa !5
  %370 = load double, ptr %16, align 8, !tbaa !9
  call void @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
  %371 = load i32, ptr %2, align 4, !tbaa !5
  %372 = load i32, ptr %3, align 4, !tbaa !5
  %373 = mul nsw i32 %372, %371
  %374 = sext i32 %373 to i64
  %gep825 = getelementptr double, ptr %18, i64 %374
  call void @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %gep825, ptr noundef nonnull %2) #5
  call void @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
  call void @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 %382

375:                                              ; preds = %._crit_edge815.thread
  %376 = icmp eq i32 %.1828, 2
  %or.cond11 = and i1 %110, %376
  br i1 %or.cond11, label %377, label %382

377:                                              ; preds = %375
  call void @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
  %378 = load i32, ptr %2, align 4, !tbaa !5
  %379 = load i32, ptr %3, align 4, !tbaa !5
  %380 = mul nsw i32 %379, %378
  %381 = sext i32 %380 to i64
  %gep = getelementptr double, ptr %18, i64 %381
  call void @dlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull %2, ptr noundef %14, ptr noundef nonnull %15) #5
  store double %.2827, ptr %16, align 8, !tbaa !9
  br label %382

382:                                              ; preds = %368, %377, %375
  %.3 = phi double [ %370, %368 ], [ %.2827, %377 ], [ %.2827, %375 ]
  %383 = add nuw nsw i32 %.1828, 1
  %.not710.not = icmp ult i32 %.1828, %111
  br i1 %.not710.not, label %230, label %.loopexit753, !llvm.loop !17

384:                                              ; preds = %._crit_edge764
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  %.not704873 = icmp slt i32 %spec.select732, 1
  br i1 %.not704873, label %.loopexit753, label %.lr.ph876

.lr.ph876:                                        ; preds = %384
  %385 = add nuw nsw i32 %spec.select732, 2
  %invariant.gep863 = getelementptr i8, ptr %20, i64 4
  %invariant.gep865 = getelementptr i8, ptr %40, i64 8
  %invariant.gep867 = getelementptr i8, ptr %49, i64 8
  %.not705869 = icmp slt i32 %spec.select733, %385
  %386 = add i32 %35, 1
  %387 = add i32 %44, 1
  %388 = sext i32 %spec.select733 to i64
  %gep864 = getelementptr i32, ptr %invariant.gep863, i64 %388
  %invariant.gep831 = getelementptr i8, ptr %43, i64 8
  %invariant.gep833 = getelementptr i8, ptr %52, i64 8
  br i1 %.not705869, label %.loopexit753, label %.lr.ph872.preheader

.lr.ph872.preheader:                              ; preds = %.lr.ph876
  %389 = sext i32 %41 to i64
  %390 = sext i32 %50 to i64
  %391 = zext nneg i32 %385 to i64
  %392 = zext nneg i32 %spec.select732 to i64
  br label %.lr.ph872

.lr.ph872:                                        ; preds = %483, %.lr.ph872.preheader
  %indvars.iv934 = phi i64 [ 1, %.lr.ph872.preheader ], [ %indvars.iv.next935, %483 ]
  %393 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv934
  %394 = load i32, ptr %393, align 4, !tbaa !5
  %indvars.iv.next935 = add nuw nsw i64 %indvars.iv934, 1
  %395 = getelementptr i32, ptr %20, i64 %indvars.iv934
  %396 = load i32, ptr %395, align 4, !tbaa !5
  %397 = add nsw i32 %396, -1
  %398 = sub i32 %396, %394
  store i32 %398, ptr %30, align 4, !tbaa !5
  %399 = mul i32 %394, %386
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds double, ptr %37, i64 %400
  %402 = mul i32 %394, %387
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %46, i64 %403
  %405 = add nsw i32 %394, -1
  %406 = add nsw i32 %394, %50
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %52, i64 %407
  %409 = icmp ult i64 %indvars.iv934, %392
  %410 = mul nsw i32 %396, %35
  %411 = add nsw i32 %410, %394
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds double, ptr %37, i64 %412
  %414 = mul nsw i32 %396, %44
  %415 = add nsw i32 %414, %394
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds double, ptr %46, i64 %416
  %418 = sext i32 %396 to i64
  %invariant.gep958 = getelementptr double, ptr %43, i64 %418
  %invariant.gep960 = getelementptr double, ptr %52, i64 %418
  br label %419

419:                                              ; preds = %.backedge, %.lr.ph872
  %indvars.iv931 = phi i64 [ %388, %.lr.ph872 ], [ %indvars.iv931.be, %.backedge ]
  %420 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv931
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = getelementptr i8, ptr %420, i64 4
  %423 = load i32, ptr %422, align 4, !tbaa !5
  %424 = add nsw i32 %423, -1
  %425 = sub i32 %423, %421
  store i32 %425, ptr %31, align 4, !tbaa !5
  %426 = mul nsw i32 %421, %38
  %427 = add nsw i32 %426, %421
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %40, i64 %428
  %430 = mul nsw i32 %421, %41
  %431 = add nsw i32 %430, %394
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %43, i64 %432
  %434 = mul nsw i32 %421, %47
  %435 = add nsw i32 %434, %421
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %49, i64 %436
  %438 = mul nsw i32 %421, %50
  %439 = add nsw i32 %438, %394
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds double, ptr %52, i64 %440
  call void @dtgsy2_(ptr noundef %0, ptr noundef nonnull %28, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %401, ptr noundef nonnull %5, ptr noundef %429, ptr noundef nonnull %7, ptr noundef %433, ptr noundef nonnull %9, ptr noundef %404, ptr noundef nonnull %11, ptr noundef %437, ptr noundef nonnull %13, ptr noundef %441, ptr noundef nonnull %15, ptr noundef nonnull %34, ptr noundef nonnull %26, ptr noundef nonnull %32, ptr noundef %gep864, ptr noundef nonnull %27, ptr noundef nonnull %29) #5
  %442 = load i32, ptr %29, align 4, !tbaa !5
  %443 = icmp sgt i32 %442, 0
  br i1 %443, label %444, label %445

444:                                              ; preds = %419
  store i32 %442, ptr %21, align 4, !tbaa !5
  br label %445

445:                                              ; preds = %444, %419
  %446 = load double, ptr %34, align 8, !tbaa !9
  %447 = fcmp une double %446, 1.000000e+00
  br i1 %447, label %448, label %477

448:                                              ; preds = %445
  %449 = add nsw i32 %421, -1
  store i32 %449, ptr %24, align 4, !tbaa !5
  %.not706835 = icmp slt i32 %421, 2
  br i1 %.not706835, label %._crit_edge839, label %.lr.ph838

.lr.ph838:                                        ; preds = %448, %.lr.ph838
  %indvars.iv919 = phi i64 [ %indvars.iv.next920, %.lr.ph838 ], [ 1, %448 ]
  %450 = mul nsw i64 %indvars.iv919, %389
  %gep832 = getelementptr double, ptr %invariant.gep831, i64 %450
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep832, ptr noundef nonnull @c__1) #5
  %451 = mul nsw i64 %indvars.iv919, %390
  %gep834 = getelementptr double, ptr %invariant.gep833, i64 %451
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep834, ptr noundef nonnull @c__1) #5
  %indvars.iv.next920 = add nuw nsw i64 %indvars.iv919, 1
  %452 = load i32, ptr %24, align 4, !tbaa !5
  %453 = sext i32 %452 to i64
  %.not706.not = icmp slt i64 %indvars.iv919, %453
  br i1 %.not706.not, label %.lr.ph838, label %._crit_edge839, !llvm.loop !18

._crit_edge839:                                   ; preds = %.lr.ph838, %448
  store i32 %424, ptr %24, align 4, !tbaa !5
  %.not707844.not = icmp slt i32 %421, %423
  br i1 %.not707844.not, label %.lr.ph847.preheader, label %._crit_edge853

.lr.ph847.preheader:                              ; preds = %._crit_edge839
  %454 = sext i32 %421 to i64
  br label %.lr.ph847

.lr.ph847:                                        ; preds = %.lr.ph847.preheader, %.lr.ph847
  %indvars.iv922 = phi i64 [ %454, %.lr.ph847.preheader ], [ %indvars.iv.next923, %.lr.ph847 ]
  store i32 %405, ptr %25, align 4, !tbaa !5
  %455 = mul nsw i64 %indvars.iv922, %389
  %gep841 = getelementptr double, ptr %invariant.gep831, i64 %455
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep841, ptr noundef nonnull @c__1) #5
  store i32 %405, ptr %25, align 4, !tbaa !5
  %456 = mul nsw i64 %indvars.iv922, %390
  %gep843 = getelementptr double, ptr %invariant.gep833, i64 %456
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep843, ptr noundef nonnull @c__1) #5
  %indvars.iv.next923 = add nsw i64 %indvars.iv922, 1
  %457 = load i32, ptr %24, align 4, !tbaa !5
  %458 = sext i32 %457 to i64
  %.not707.not = icmp slt i64 %indvars.iv922, %458
  br i1 %.not707.not, label %.lr.ph847, label %._crit_edge848, !llvm.loop !19

._crit_edge848:                                   ; preds = %.lr.ph847
  store i32 %424, ptr %24, align 4, !tbaa !5
  br i1 %.not707844.not, label %.lr.ph852.preheader, label %._crit_edge853

.lr.ph852.preheader:                              ; preds = %._crit_edge848
  %459 = sext i32 %421 to i64
  br label %.lr.ph852

.lr.ph852:                                        ; preds = %.lr.ph852.preheader, %.lr.ph852
  %indvars.iv925 = phi i64 [ %459, %.lr.ph852.preheader ], [ %indvars.iv.next926, %.lr.ph852 ]
  %460 = load i32, ptr %2, align 4, !tbaa !5
  %461 = sub nsw i32 %460, %397
  store i32 %461, ptr %25, align 4, !tbaa !5
  %462 = mul nsw i64 %indvars.iv925, %389
  %gep959 = getelementptr double, ptr %invariant.gep958, i64 %462
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep959, ptr noundef nonnull @c__1) #5
  %463 = load i32, ptr %2, align 4, !tbaa !5
  %464 = sub nsw i32 %463, %397
  store i32 %464, ptr %25, align 4, !tbaa !5
  %465 = mul nsw i64 %indvars.iv925, %390
  %gep961 = getelementptr double, ptr %invariant.gep960, i64 %465
  call void @dscal_(ptr noundef nonnull %25, ptr noundef nonnull %34, ptr noundef %gep961, ptr noundef nonnull @c__1) #5
  %indvars.iv.next926 = add nsw i64 %indvars.iv925, 1
  %466 = load i32, ptr %24, align 4, !tbaa !5
  %467 = sext i32 %466 to i64
  %.not708.not = icmp slt i64 %indvars.iv925, %467
  br i1 %.not708.not, label %.lr.ph852, label %._crit_edge853, !llvm.loop !20

._crit_edge853:                                   ; preds = %.lr.ph852, %._crit_edge839, %._crit_edge848
  %468 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %468, ptr %24, align 4, !tbaa !5
  %.not709858 = icmp sgt i32 %423, %468
  br i1 %.not709858, label %._crit_edge862, label %.lr.ph861.preheader

.lr.ph861.preheader:                              ; preds = %._crit_edge853
  %469 = sext i32 %423 to i64
  br label %.lr.ph861

.lr.ph861:                                        ; preds = %.lr.ph861.preheader, %.lr.ph861
  %indvars.iv928 = phi i64 [ %469, %.lr.ph861.preheader ], [ %indvars.iv.next929, %.lr.ph861 ]
  %470 = mul nsw i64 %indvars.iv928, %389
  %gep855 = getelementptr double, ptr %invariant.gep831, i64 %470
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep855, ptr noundef nonnull @c__1) #5
  %471 = mul nsw i64 %indvars.iv928, %390
  %gep857 = getelementptr double, ptr %invariant.gep833, i64 %471
  call void @dscal_(ptr noundef nonnull %2, ptr noundef nonnull %34, ptr noundef %gep857, ptr noundef nonnull @c__1) #5
  %indvars.iv.next929 = add nsw i64 %indvars.iv928, 1
  %472 = load i32, ptr %24, align 4, !tbaa !5
  %473 = sext i32 %472 to i64
  %.not709.not = icmp slt i64 %indvars.iv928, %473
  br i1 %.not709.not, label %.lr.ph861, label %._crit_edge862, !llvm.loop !21

._crit_edge862:                                   ; preds = %.lr.ph861, %._crit_edge853
  %474 = load double, ptr %34, align 8, !tbaa !9
  %475 = load double, ptr %16, align 8, !tbaa !9
  %476 = fmul double %474, %475
  store double %476, ptr %16, align 8, !tbaa !9
  br label %477

477:                                              ; preds = %._crit_edge862, %445
  %478 = icmp sgt i64 %indvars.iv931, %391
  br i1 %478, label %479, label %.thread946

479:                                              ; preds = %477
  %480 = add nsw i32 %421, -1
  store i32 %480, ptr %24, align 4, !tbaa !5
  %481 = sext i32 %426 to i64
  %gep866 = getelementptr double, ptr %invariant.gep865, i64 %481
  call void @dgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %30, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull @c_b52, ptr noundef %433, ptr noundef nonnull %9, ptr noundef %gep866, ptr noundef nonnull %7, ptr noundef nonnull @c_b52, ptr noundef %408, ptr noundef nonnull %15) #5
  store i32 %480, ptr %24, align 4, !tbaa !5
  %482 = sext i32 %434 to i64
  %gep868 = getelementptr double, ptr %invariant.gep867, i64 %482
  call void @dgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %30, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull @c_b52, ptr noundef %441, ptr noundef nonnull %15, ptr noundef %gep868, ptr noundef nonnull %13, ptr noundef nonnull @c_b52, ptr noundef %408, ptr noundef nonnull %15) #5
  br i1 %409, label %483, label %.backedge

.thread946:                                       ; preds = %477
  br i1 %409, label %483, label %.loopexit753

483:                                              ; preds = %.thread946, %479
  %484 = load i32, ptr %2, align 4, !tbaa !5
  %485 = sub nsw i32 %484, %397
  store i32 %485, ptr %24, align 4, !tbaa !5
  %486 = add nsw i32 %430, %396
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds double, ptr %43, i64 %487
  call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull @c_b51, ptr noundef %413, ptr noundef nonnull %5, ptr noundef %433, ptr noundef nonnull %9, ptr noundef nonnull @c_b52, ptr noundef %488, ptr noundef nonnull %9) #5
  %489 = load i32, ptr %2, align 4, !tbaa !5
  %490 = sub nsw i32 %489, %397
  store i32 %490, ptr %24, align 4, !tbaa !5
  call void @dgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull @c_b51, ptr noundef %417, ptr noundef nonnull %11, ptr noundef %441, ptr noundef nonnull %15, ptr noundef nonnull @c_b52, ptr noundef %488, ptr noundef nonnull %9) #5
  br i1 %478, label %.backedge, label %.lr.ph872

.backedge:                                        ; preds = %479, %483
  %indvars.iv931.be = add nsw i64 %indvars.iv931, -1
  br label %419, !llvm.loop !22

.loopexit753:                                     ; preds = %382, %.thread946, %.lr.ph876, %384
  store double %93, ptr %18, align 8, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %144, %161, %162, %.thread737, %.loopexit753, %.thread742
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  ret void
}

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!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