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

; 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 [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b14 = external hidden global double, align 8
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [9 x i8], align 1
@c_b25 = external hidden global double, align 8
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @dlarfb_(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) #0 {
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca 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 i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca [1 x i8], align 1
  %47 = alloca i32, align 4
  store ptr %0, ptr %17, align 8, !tbaa !5
  store ptr %1, ptr %18, align 8, !tbaa !5
  store ptr %2, ptr %19, align 8, !tbaa !5
  store ptr %3, ptr %20, align 8, !tbaa !5
  store ptr %4, ptr %21, align 8, !tbaa !5
  store ptr %5, ptr %22, align 8, !tbaa !5
  store ptr %6, ptr %23, align 8, !tbaa !5
  store ptr %7, ptr %24, align 8, !tbaa !5
  store ptr %8, ptr %25, align 8, !tbaa !5
  store ptr %9, ptr %26, align 8, !tbaa !5
  store ptr %10, ptr %27, align 8, !tbaa !5
  store ptr %11, ptr %28, align 8, !tbaa !5
  store ptr %12, ptr %29, align 8, !tbaa !5
  store ptr %13, ptr %30, align 8, !tbaa !5
  store ptr %14, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #3
  %48 = load ptr, ptr %25, align 8, !tbaa !5
  %49 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %49, ptr %36, align 8, !tbaa !9
  %50 = load i64, ptr %36, align 8, !tbaa !9
  %51 = add nsw i64 1, %50
  store i64 %51, ptr %37, align 8, !tbaa !9
  %52 = load i64, ptr %37, align 8, !tbaa !9
  %53 = load ptr, ptr %24, align 8, !tbaa !5
  %54 = sub i64 0, %52
  %55 = getelementptr inbounds double, ptr %53, i64 %54
  store ptr %55, ptr %24, align 8, !tbaa !5
  %56 = load ptr, ptr %27, align 8, !tbaa !5
  %57 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %57, ptr %34, align 8, !tbaa !9
  %58 = load i64, ptr %34, align 8, !tbaa !9
  %59 = add nsw i64 1, %58
  store i64 %59, ptr %35, align 8, !tbaa !9
  %60 = load i64, ptr %35, align 8, !tbaa !9
  %61 = load ptr, ptr %26, align 8, !tbaa !5
  %62 = sub i64 0, %60
  %63 = getelementptr inbounds double, ptr %61, i64 %62
  store ptr %63, ptr %26, align 8, !tbaa !5
  %64 = load ptr, ptr %29, align 8, !tbaa !5
  %65 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %65, ptr %32, align 8, !tbaa !9
  %66 = load i64, ptr %32, align 8, !tbaa !9
  %67 = add nsw i64 1, %66
  store i64 %67, ptr %33, align 8, !tbaa !9
  %68 = load i64, ptr %33, align 8, !tbaa !9
  %69 = load ptr, ptr %28, align 8, !tbaa !5
  %70 = sub i64 0, %68
  %71 = getelementptr inbounds double, ptr %69, i64 %70
  store ptr %71, ptr %28, align 8, !tbaa !5
  %72 = load ptr, ptr %31, align 8, !tbaa !5
  %73 = load i64, ptr %72, align 8, !tbaa !9
  store i64 %73, ptr %38, align 8, !tbaa !9
  %74 = load i64, ptr %38, align 8, !tbaa !9
  %75 = add nsw i64 1, %74
  store i64 %75, ptr %39, align 8, !tbaa !9
  %76 = load i64, ptr %39, align 8, !tbaa !9
  %77 = load ptr, ptr %30, align 8, !tbaa !5
  %78 = sub i64 0, %76
  %79 = getelementptr inbounds double, ptr %77, i64 %78
  store ptr %79, ptr %30, align 8, !tbaa !5
  %80 = load ptr, ptr %21, align 8, !tbaa !5
  %81 = load i64, ptr %80, align 8, !tbaa !9
  %82 = icmp sle i64 %81, 0
  br i1 %82, label %87, label %83

83:                                               ; preds = %15
  %84 = load ptr, ptr %22, align 8, !tbaa !5
  %85 = load i64, ptr %84, align 8, !tbaa !9
  %86 = icmp sle i64 %85, 0
  br i1 %86, label %87, label %88

87:                                               ; preds = %83, %15
  store i32 0, ptr %16, align 4
  store i32 1, ptr %47, align 4
  br label %1649

88:                                               ; preds = %83
  %89 = load ptr, ptr %18, align 8, !tbaa !5
  %90 = call i64 @lsame_(ptr noundef %89, ptr noundef @.str)
  %91 = icmp ne i64 %90, 0
  br i1 %91, label %92, label %94

92:                                               ; preds = %88
  %93 = getelementptr inbounds [1 x i8], ptr %46, i64 0, i64 0
  store i8 84, ptr %93, align 1, !tbaa !11
  br label %96

94:                                               ; preds = %88
  %95 = getelementptr inbounds [1 x i8], ptr %46, i64 0, i64 0
  store i8 78, ptr %95, align 1, !tbaa !11
  br label %96

96:                                               ; preds = %94, %92
  %97 = load ptr, ptr %20, align 8, !tbaa !5
  %98 = call i64 @lsame_(ptr noundef %97, ptr noundef @.str.1)
  %99 = icmp ne i64 %98, 0
  br i1 %99, label %100, label %868

100:                                              ; preds = %96
  %101 = load ptr, ptr %19, align 8, !tbaa !5
  %102 = call i64 @lsame_(ptr noundef %101, ptr noundef @.str.2)
  %103 = icmp ne i64 %102, 0
  br i1 %103, label %104, label %480

104:                                              ; preds = %100
  %105 = load ptr, ptr %17, align 8, !tbaa !5
  %106 = call i64 @lsame_(ptr noundef %105, ptr noundef @.str.3)
  %107 = icmp ne i64 %106, 0
  br i1 %107, label %108, label %290

108:                                              ; preds = %104
  %109 = load ptr, ptr %23, align 8, !tbaa !5
  %110 = load i64, ptr %109, align 8, !tbaa !9
  store i64 %110, ptr %40, align 8, !tbaa !9
  %111 = load ptr, ptr %21, align 8, !tbaa !5
  %112 = load ptr, ptr %23, align 8, !tbaa !5
  %113 = load ptr, ptr %24, align 8, !tbaa !5
  %114 = load i64, ptr %37, align 8, !tbaa !9
  %115 = getelementptr inbounds double, ptr %113, i64 %114
  %116 = load ptr, ptr %25, align 8, !tbaa !5
  %117 = call i64 @iladlr_(ptr noundef %111, ptr noundef %112, ptr noundef %115, ptr noundef %116)
  store i64 %117, ptr %41, align 8, !tbaa !9
  %118 = load i64, ptr %40, align 8, !tbaa !9
  %119 = load i64, ptr %41, align 8, !tbaa !9
  %120 = icmp sge i64 %118, %119
  br i1 %120, label %121, label %123

121:                                              ; preds = %108
  %122 = load i64, ptr %40, align 8, !tbaa !9
  br label %125

123:                                              ; preds = %108
  %124 = load i64, ptr %41, align 8, !tbaa !9
  br label %125

125:                                              ; preds = %123, %121
  %126 = phi i64 [ %122, %121 ], [ %124, %123 ]
  store i64 %126, ptr %45, align 8, !tbaa !9
  %127 = load ptr, ptr %22, align 8, !tbaa !5
  %128 = load ptr, ptr %28, align 8, !tbaa !5
  %129 = load i64, ptr %33, align 8, !tbaa !9
  %130 = getelementptr inbounds double, ptr %128, i64 %129
  %131 = load ptr, ptr %29, align 8, !tbaa !5
  %132 = call i64 @iladlc_(ptr noundef %45, ptr noundef %127, ptr noundef %130, ptr noundef %131)
  store i64 %132, ptr %44, align 8, !tbaa !9
  %133 = load ptr, ptr %23, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  store i64 %134, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %135

135:                                              ; preds = %153, %125
  %136 = load i64, ptr %43, align 8, !tbaa !9
  %137 = load i64, ptr %40, align 8, !tbaa !9
  %138 = icmp sle i64 %136, %137
  br i1 %138, label %139, label %156

139:                                              ; preds = %135
  %140 = load ptr, ptr %28, align 8, !tbaa !5
  %141 = load i64, ptr %43, align 8, !tbaa !9
  %142 = load i64, ptr %32, align 8, !tbaa !9
  %143 = add nsw i64 %141, %142
  %144 = getelementptr inbounds double, ptr %140, i64 %143
  %145 = load ptr, ptr %29, align 8, !tbaa !5
  %146 = load ptr, ptr %30, align 8, !tbaa !5
  %147 = load i64, ptr %43, align 8, !tbaa !9
  %148 = load i64, ptr %38, align 8, !tbaa !9
  %149 = mul nsw i64 %147, %148
  %150 = add nsw i64 %149, 1
  %151 = getelementptr inbounds double, ptr %146, i64 %150
  %152 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %144, ptr noundef %145, ptr noundef %151, ptr noundef @c__1)
  br label %153

153:                                              ; preds = %139
  %154 = load i64, ptr %43, align 8, !tbaa !9
  %155 = add nsw i64 %154, 1
  store i64 %155, ptr %43, align 8, !tbaa !9
  br label %135, !llvm.loop !12

156:                                              ; preds = %135
  %157 = load ptr, ptr %23, align 8, !tbaa !5
  %158 = load ptr, ptr %24, align 8, !tbaa !5
  %159 = load i64, ptr %37, align 8, !tbaa !9
  %160 = getelementptr inbounds double, ptr %158, i64 %159
  %161 = load ptr, ptr %25, align 8, !tbaa !5
  %162 = load ptr, ptr %30, align 8, !tbaa !5
  %163 = load i64, ptr %39, align 8, !tbaa !9
  %164 = getelementptr inbounds double, ptr %162, i64 %163
  %165 = load ptr, ptr %31, align 8, !tbaa !5
  %166 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %44, ptr noundef %157, ptr noundef @c_b14, ptr noundef %160, ptr noundef %161, ptr noundef %164, ptr noundef %165)
  %167 = load i64, ptr %45, align 8, !tbaa !9
  %168 = load ptr, ptr %23, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = icmp sgt i64 %167, %169
  br i1 %170, label %171, label %198

171:                                              ; preds = %156
  %172 = load i64, ptr %45, align 8, !tbaa !9
  %173 = load ptr, ptr %23, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = sub nsw i64 %172, %174
  store i64 %175, ptr %40, align 8, !tbaa !9
  %176 = load ptr, ptr %23, align 8, !tbaa !5
  %177 = load ptr, ptr %28, align 8, !tbaa !5
  %178 = load ptr, ptr %23, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = add nsw i64 %179, 1
  %181 = load i64, ptr %32, align 8, !tbaa !9
  %182 = add nsw i64 %180, %181
  %183 = getelementptr inbounds double, ptr %177, i64 %182
  %184 = load ptr, ptr %29, align 8, !tbaa !5
  %185 = load ptr, ptr %24, align 8, !tbaa !5
  %186 = load ptr, ptr %23, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = add nsw i64 %187, 1
  %189 = load i64, ptr %36, align 8, !tbaa !9
  %190 = add nsw i64 %188, %189
  %191 = getelementptr inbounds double, ptr %185, i64 %190
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  %193 = load ptr, ptr %30, align 8, !tbaa !5
  %194 = load i64, ptr %39, align 8, !tbaa !9
  %195 = getelementptr inbounds double, ptr %193, i64 %194
  %196 = load ptr, ptr %31, align 8, !tbaa !5
  %197 = call i32 @f2c_dgemm(ptr noundef @.str.8, ptr noundef @.str.6, ptr noundef %44, ptr noundef %176, ptr noundef %40, ptr noundef @c_b14, ptr noundef %183, ptr noundef %184, ptr noundef %191, ptr noundef %192, ptr noundef @c_b14, ptr noundef %195, ptr noundef %196)
  br label %198

198:                                              ; preds = %171, %156
  %199 = getelementptr inbounds [1 x i8], ptr %46, i64 0, i64 0
  %200 = load ptr, ptr %23, align 8, !tbaa !5
  %201 = load ptr, ptr %26, align 8, !tbaa !5
  %202 = load i64, ptr %35, align 8, !tbaa !9
  %203 = getelementptr inbounds double, ptr %201, i64 %202
  %204 = load ptr, ptr %27, align 8, !tbaa !5
  %205 = load ptr, ptr %30, align 8, !tbaa !5
  %206 = load i64, ptr %39, align 8, !tbaa !9
  %207 = getelementptr inbounds double, ptr %205, i64 %206
  %208 = load ptr, ptr %31, align 8, !tbaa !5
  %209 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef %199, ptr noundef @.str.10, ptr noundef %44, ptr noundef %200, ptr noundef @c_b14, ptr noundef %203, ptr noundef %204, ptr noundef %207, ptr noundef %208)
  %210 = load i64, ptr %45, align 8, !tbaa !9
  %211 = load ptr, ptr %23, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp sgt i64 %210, %212
  br i1 %213, label %214, label %241

214:                                              ; preds = %198
  %215 = load i64, ptr %45, align 8, !tbaa !9
  %216 = load ptr, ptr %23, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = sub nsw i64 %215, %217
  store i64 %218, ptr %40, align 8, !tbaa !9
  %219 = load ptr, ptr %23, align 8, !tbaa !5
  %220 = load ptr, ptr %24, align 8, !tbaa !5
  %221 = load ptr, ptr %23, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = add nsw i64 %222, 1
  %224 = load i64, ptr %36, align 8, !tbaa !9
  %225 = add nsw i64 %223, %224
  %226 = getelementptr inbounds double, ptr %220, i64 %225
  %227 = load ptr, ptr %25, align 8, !tbaa !5
  %228 = load ptr, ptr %30, align 8, !tbaa !5
  %229 = load i64, ptr %39, align 8, !tbaa !9
  %230 = getelementptr inbounds double, ptr %228, i64 %229
  %231 = load ptr, ptr %31, align 8, !tbaa !5
  %232 = load ptr, ptr %28, align 8, !tbaa !5
  %233 = load ptr, ptr %23, align 8, !tbaa !5
  %234 = load i64, ptr %233, align 8, !tbaa !9
  %235 = add nsw i64 %234, 1
  %236 = load i64, ptr %32, align 8, !tbaa !9
  %237 = add nsw i64 %235, %236
  %238 = getelementptr inbounds double, ptr %232, i64 %237
  %239 = load ptr, ptr %29, align 8, !tbaa !5
  %240 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %40, ptr noundef %44, ptr noundef %219, ptr noundef @c_b25, ptr noundef %226, ptr noundef %227, ptr noundef %230, ptr noundef %231, ptr noundef @c_b14, ptr noundef %238, ptr noundef %239)
  br label %241

241:                                              ; preds = %214, %198
  %242 = load ptr, ptr %23, align 8, !tbaa !5
  %243 = load ptr, ptr %24, align 8, !tbaa !5
  %244 = load i64, ptr %37, align 8, !tbaa !9
  %245 = getelementptr inbounds double, ptr %243, i64 %244
  %246 = load ptr, ptr %25, align 8, !tbaa !5
  %247 = load ptr, ptr %30, align 8, !tbaa !5
  %248 = load i64, ptr %39, align 8, !tbaa !9
  %249 = getelementptr inbounds double, ptr %247, i64 %248
  %250 = load ptr, ptr %31, align 8, !tbaa !5
  %251 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %44, ptr noundef %242, ptr noundef @c_b14, ptr noundef %245, ptr noundef %246, ptr noundef %249, ptr noundef %250)
  %252 = load ptr, ptr %23, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  store i64 %253, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %286, %241
  %255 = load i64, ptr %43, align 8, !tbaa !9
  %256 = load i64, ptr %40, align 8, !tbaa !9
  %257 = icmp sle i64 %255, %256
  br i1 %257, label %258, label %289

258:                                              ; preds = %254
  %259 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %259, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %282, %258
  %261 = load i64, ptr %42, align 8, !tbaa !9
  %262 = load i64, ptr %41, align 8, !tbaa !9
  %263 = icmp sle i64 %261, %262
  br i1 %263, label %264, label %285

264:                                              ; preds = %260
  %265 = load ptr, ptr %30, align 8, !tbaa !5
  %266 = load i64, ptr %42, align 8, !tbaa !9
  %267 = load i64, ptr %43, align 8, !tbaa !9
  %268 = load i64, ptr %38, align 8, !tbaa !9
  %269 = mul nsw i64 %267, %268
  %270 = add nsw i64 %266, %269
  %271 = getelementptr inbounds double, ptr %265, i64 %270
  %272 = load double, ptr %271, align 8, !tbaa !14
  %273 = load ptr, ptr %28, align 8, !tbaa !5
  %274 = load i64, ptr %43, align 8, !tbaa !9
  %275 = load i64, ptr %42, align 8, !tbaa !9
  %276 = load i64, ptr %32, align 8, !tbaa !9
  %277 = mul nsw i64 %275, %276
  %278 = add nsw i64 %274, %277
  %279 = getelementptr inbounds double, ptr %273, i64 %278
  %280 = load double, ptr %279, align 8, !tbaa !14
  %281 = fsub double %280, %272
  store double %281, ptr %279, align 8, !tbaa !14
  br label %282

282:                                              ; preds = %264
  %283 = load i64, ptr %42, align 8, !tbaa !9
  %284 = add nsw i64 %283, 1
  store i64 %284, ptr %42, align 8, !tbaa !9
  br label %260, !llvm.loop !16

285:                                              ; preds = %260
  br label %286

286:                                              ; preds = %285
  %287 = load i64, ptr %43, align 8, !tbaa !9
  %288 = add nsw i64 %287, 1
  store i64 %288, ptr %43, align 8, !tbaa !9
  br label %254, !llvm.loop !17

289:                                              ; preds = %254
  br label %479

290:                                              ; preds = %104
  %291 = load ptr, ptr %17, align 8, !tbaa !5
  %292 = call i64 @lsame_(ptr noundef %291, ptr noundef @.str.11)
  %293 = icmp ne i64 %292, 0
  br i1 %293, label %294, label %478

294:                                              ; preds = %290
  %295 = load ptr, ptr %23, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  store i64 %296, ptr %40, align 8, !tbaa !9
  %297 = load ptr, ptr %22, align 8, !tbaa !5
  %298 = load ptr, ptr %23, align 8, !tbaa !5
  %299 = load ptr, ptr %24, align 8, !tbaa !5
  %300 = load i64, ptr %37, align 8, !tbaa !9
  %301 = getelementptr inbounds double, ptr %299, i64 %300
  %302 = load ptr, ptr %25, align 8, !tbaa !5
  %303 = call i64 @iladlr_(ptr noundef %297, ptr noundef %298, ptr noundef %301, ptr noundef %302)
  store i64 %303, ptr %41, align 8, !tbaa !9
  %304 = load i64, ptr %40, align 8, !tbaa !9
  %305 = load i64, ptr %41, align 8, !tbaa !9
  %306 = icmp sge i64 %304, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %294
  %308 = load i64, ptr %40, align 8, !tbaa !9
  br label %311

309:                                              ; preds = %294
  %310 = load i64, ptr %41, align 8, !tbaa !9
  br label %311

311:                                              ; preds = %309, %307
  %312 = phi i64 [ %308, %307 ], [ %310, %309 ]
  store i64 %312, ptr %45, align 8, !tbaa !9
  %313 = load ptr, ptr %21, align 8, !tbaa !5
  %314 = load ptr, ptr %28, align 8, !tbaa !5
  %315 = load i64, ptr %33, align 8, !tbaa !9
  %316 = getelementptr inbounds double, ptr %314, i64 %315
  %317 = load ptr, ptr %29, align 8, !tbaa !5
  %318 = call i64 @iladlr_(ptr noundef %313, ptr noundef %45, ptr noundef %316, ptr noundef %317)
  store i64 %318, ptr %44, align 8, !tbaa !9
  %319 = load ptr, ptr %23, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  store i64 %320, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %339, %311
  %322 = load i64, ptr %43, align 8, !tbaa !9
  %323 = load i64, ptr %40, align 8, !tbaa !9
  %324 = icmp sle i64 %322, %323
  br i1 %324, label %325, label %342

325:                                              ; preds = %321
  %326 = load ptr, ptr %28, align 8, !tbaa !5
  %327 = load i64, ptr %43, align 8, !tbaa !9
  %328 = load i64, ptr %32, align 8, !tbaa !9
  %329 = mul nsw i64 %327, %328
  %330 = add nsw i64 %329, 1
  %331 = getelementptr inbounds double, ptr %326, i64 %330
  %332 = load ptr, ptr %30, align 8, !tbaa !5
  %333 = load i64, ptr %43, align 8, !tbaa !9
  %334 = load i64, ptr %38, align 8, !tbaa !9
  %335 = mul nsw i64 %333, %334
  %336 = add nsw i64 %335, 1
  %337 = getelementptr inbounds double, ptr %332, i64 %336
  %338 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %331, ptr noundef @c__1, ptr noundef %337, ptr noundef @c__1)
  br label %339

339:                                              ; preds = %325
  %340 = load i64, ptr %43, align 8, !tbaa !9
  %341 = add nsw i64 %340, 1
  store i64 %341, ptr %43, align 8, !tbaa !9
  br label %321, !llvm.loop !18

342:                                              ; preds = %321
  %343 = load ptr, ptr %23, align 8, !tbaa !5
  %344 = load ptr, ptr %24, align 8, !tbaa !5
  %345 = load i64, ptr %37, align 8, !tbaa !9
  %346 = getelementptr inbounds double, ptr %344, i64 %345
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = load ptr, ptr %30, align 8, !tbaa !5
  %349 = load i64, ptr %39, align 8, !tbaa !9
  %350 = getelementptr inbounds double, ptr %348, i64 %349
  %351 = load ptr, ptr %31, align 8, !tbaa !5
  %352 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %44, ptr noundef %343, ptr noundef @c_b14, ptr noundef %346, ptr noundef %347, ptr noundef %350, ptr noundef %351)
  %353 = load i64, ptr %45, align 8, !tbaa !9
  %354 = load ptr, ptr %23, align 8, !tbaa !5
  %355 = load i64, ptr %354, align 8, !tbaa !9
  %356 = icmp sgt i64 %353, %355
  br i1 %356, label %357, label %385

357:                                              ; preds = %342
  %358 = load i64, ptr %45, align 8, !tbaa !9
  %359 = load ptr, ptr %23, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = sub nsw i64 %358, %360
  store i64 %361, ptr %40, align 8, !tbaa !9
  %362 = load ptr, ptr %23, align 8, !tbaa !5
  %363 = load ptr, ptr %28, align 8, !tbaa !5
  %364 = load ptr, ptr %23, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = add nsw i64 %365, 1
  %367 = load i64, ptr %32, align 8, !tbaa !9
  %368 = mul nsw i64 %366, %367
  %369 = add nsw i64 %368, 1
  %370 = getelementptr inbounds double, ptr %363, i64 %369
  %371 = load ptr, ptr %29, align 8, !tbaa !5
  %372 = load ptr, ptr %24, align 8, !tbaa !5
  %373 = load ptr, ptr %23, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  %375 = add nsw i64 %374, 1
  %376 = load i64, ptr %36, align 8, !tbaa !9
  %377 = add nsw i64 %375, %376
  %378 = getelementptr inbounds double, ptr %372, i64 %377
  %379 = load ptr, ptr %25, align 8, !tbaa !5
  %380 = load ptr, ptr %30, align 8, !tbaa !5
  %381 = load i64, ptr %39, align 8, !tbaa !9
  %382 = getelementptr inbounds double, ptr %380, i64 %381
  %383 = load ptr, ptr %31, align 8, !tbaa !5
  %384 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %44, ptr noundef %362, ptr noundef %40, ptr noundef @c_b14, ptr noundef %370, ptr noundef %371, ptr noundef %378, ptr noundef %379, ptr noundef @c_b14, ptr noundef %382, ptr noundef %383)
  br label %385

385:                                              ; preds = %357, %342
  %386 = load ptr, ptr %18, align 8, !tbaa !5
  %387 = load ptr, ptr %23, align 8, !tbaa !5
  %388 = load ptr, ptr %26, align 8, !tbaa !5
  %389 = load i64, ptr %35, align 8, !tbaa !9
  %390 = getelementptr inbounds double, ptr %388, i64 %389
  %391 = load ptr, ptr %27, align 8, !tbaa !5
  %392 = load ptr, ptr %30, align 8, !tbaa !5
  %393 = load i64, ptr %39, align 8, !tbaa !9
  %394 = getelementptr inbounds double, ptr %392, i64 %393
  %395 = load ptr, ptr %31, align 8, !tbaa !5
  %396 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef %386, ptr noundef @.str.10, ptr noundef %44, ptr noundef %387, ptr noundef @c_b14, ptr noundef %390, ptr noundef %391, ptr noundef %394, ptr noundef %395)
  %397 = load i64, ptr %45, align 8, !tbaa !9
  %398 = load ptr, ptr %23, align 8, !tbaa !5
  %399 = load i64, ptr %398, align 8, !tbaa !9
  %400 = icmp sgt i64 %397, %399
  br i1 %400, label %401, label %429

401:                                              ; preds = %385
  %402 = load i64, ptr %45, align 8, !tbaa !9
  %403 = load ptr, ptr %23, align 8, !tbaa !5
  %404 = load i64, ptr %403, align 8, !tbaa !9
  %405 = sub nsw i64 %402, %404
  store i64 %405, ptr %40, align 8, !tbaa !9
  %406 = load ptr, ptr %23, align 8, !tbaa !5
  %407 = load ptr, ptr %30, align 8, !tbaa !5
  %408 = load i64, ptr %39, align 8, !tbaa !9
  %409 = getelementptr inbounds double, ptr %407, i64 %408
  %410 = load ptr, ptr %31, align 8, !tbaa !5
  %411 = load ptr, ptr %24, align 8, !tbaa !5
  %412 = load ptr, ptr %23, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = add nsw i64 %413, 1
  %415 = load i64, ptr %36, align 8, !tbaa !9
  %416 = add nsw i64 %414, %415
  %417 = getelementptr inbounds double, ptr %411, i64 %416
  %418 = load ptr, ptr %25, align 8, !tbaa !5
  %419 = load ptr, ptr %28, align 8, !tbaa !5
  %420 = load ptr, ptr %23, align 8, !tbaa !5
  %421 = load i64, ptr %420, align 8, !tbaa !9
  %422 = add nsw i64 %421, 1
  %423 = load i64, ptr %32, align 8, !tbaa !9
  %424 = mul nsw i64 %422, %423
  %425 = add nsw i64 %424, 1
  %426 = getelementptr inbounds double, ptr %419, i64 %425
  %427 = load ptr, ptr %29, align 8, !tbaa !5
  %428 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %44, ptr noundef %40, ptr noundef %406, ptr noundef @c_b25, ptr noundef %409, ptr noundef %410, ptr noundef %417, ptr noundef %418, ptr noundef @c_b14, ptr noundef %426, ptr noundef %427)
  br label %429

429:                                              ; preds = %401, %385
  %430 = load ptr, ptr %23, align 8, !tbaa !5
  %431 = load ptr, ptr %24, align 8, !tbaa !5
  %432 = load i64, ptr %37, align 8, !tbaa !9
  %433 = getelementptr inbounds double, ptr %431, i64 %432
  %434 = load ptr, ptr %25, align 8, !tbaa !5
  %435 = load ptr, ptr %30, align 8, !tbaa !5
  %436 = load i64, ptr %39, align 8, !tbaa !9
  %437 = getelementptr inbounds double, ptr %435, i64 %436
  %438 = load ptr, ptr %31, align 8, !tbaa !5
  %439 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %44, ptr noundef %430, ptr noundef @c_b14, ptr noundef %433, ptr noundef %434, ptr noundef %437, ptr noundef %438)
  %440 = load ptr, ptr %23, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  store i64 %441, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %442

442:                                              ; preds = %474, %429
  %443 = load i64, ptr %43, align 8, !tbaa !9
  %444 = load i64, ptr %40, align 8, !tbaa !9
  %445 = icmp sle i64 %443, %444
  br i1 %445, label %446, label %477

446:                                              ; preds = %442
  %447 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %447, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %448

448:                                              ; preds = %470, %446
  %449 = load i64, ptr %42, align 8, !tbaa !9
  %450 = load i64, ptr %41, align 8, !tbaa !9
  %451 = icmp sle i64 %449, %450
  br i1 %451, label %452, label %473

452:                                              ; preds = %448
  %453 = load ptr, ptr %30, align 8, !tbaa !5
  %454 = load i64, ptr %42, align 8, !tbaa !9
  %455 = load i64, ptr %43, align 8, !tbaa !9
  %456 = load i64, ptr %38, align 8, !tbaa !9
  %457 = mul nsw i64 %455, %456
  %458 = add nsw i64 %454, %457
  %459 = getelementptr inbounds double, ptr %453, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !14
  %461 = load ptr, ptr %28, align 8, !tbaa !5
  %462 = load i64, ptr %42, align 8, !tbaa !9
  %463 = load i64, ptr %43, align 8, !tbaa !9
  %464 = load i64, ptr %32, align 8, !tbaa !9
  %465 = mul nsw i64 %463, %464
  %466 = add nsw i64 %462, %465
  %467 = getelementptr inbounds double, ptr %461, i64 %466
  %468 = load double, ptr %467, align 8, !tbaa !14
  %469 = fsub double %468, %460
  store double %469, ptr %467, align 8, !tbaa !14
  br label %470

470:                                              ; preds = %452
  %471 = load i64, ptr %42, align 8, !tbaa !9
  %472 = add nsw i64 %471, 1
  store i64 %472, ptr %42, align 8, !tbaa !9
  br label %448, !llvm.loop !19

473:                                              ; preds = %448
  br label %474

474:                                              ; preds = %473
  %475 = load i64, ptr %43, align 8, !tbaa !9
  %476 = add nsw i64 %475, 1
  store i64 %476, ptr %43, align 8, !tbaa !9
  br label %442, !llvm.loop !20

477:                                              ; preds = %442
  br label %478

478:                                              ; preds = %477, %290
  br label %479

479:                                              ; preds = %478, %289
  br label %867

480:                                              ; preds = %100
  %481 = load ptr, ptr %17, align 8, !tbaa !5
  %482 = call i64 @lsame_(ptr noundef %481, ptr noundef @.str.3)
  %483 = icmp ne i64 %482, 0
  br i1 %483, label %484, label %672

484:                                              ; preds = %480
  %485 = load ptr, ptr %23, align 8, !tbaa !5
  %486 = load i64, ptr %485, align 8, !tbaa !9
  store i64 %486, ptr %40, align 8, !tbaa !9
  %487 = load ptr, ptr %21, align 8, !tbaa !5
  %488 = load ptr, ptr %23, align 8, !tbaa !5
  %489 = load ptr, ptr %24, align 8, !tbaa !5
  %490 = load i64, ptr %37, align 8, !tbaa !9
  %491 = getelementptr inbounds double, ptr %489, i64 %490
  %492 = load ptr, ptr %25, align 8, !tbaa !5
  %493 = call i64 @iladlr_(ptr noundef %487, ptr noundef %488, ptr noundef %491, ptr noundef %492)
  store i64 %493, ptr %41, align 8, !tbaa !9
  %494 = load i64, ptr %40, align 8, !tbaa !9
  %495 = load i64, ptr %41, align 8, !tbaa !9
  %496 = icmp sge i64 %494, %495
  br i1 %496, label %497, label %499

497:                                              ; preds = %484
  %498 = load i64, ptr %40, align 8, !tbaa !9
  br label %501

499:                                              ; preds = %484
  %500 = load i64, ptr %41, align 8, !tbaa !9
  br label %501

501:                                              ; preds = %499, %497
  %502 = phi i64 [ %498, %497 ], [ %500, %499 ]
  store i64 %502, ptr %45, align 8, !tbaa !9
  %503 = load ptr, ptr %22, align 8, !tbaa !5
  %504 = load ptr, ptr %28, align 8, !tbaa !5
  %505 = load i64, ptr %33, align 8, !tbaa !9
  %506 = getelementptr inbounds double, ptr %504, i64 %505
  %507 = load ptr, ptr %29, align 8, !tbaa !5
  %508 = call i64 @iladlc_(ptr noundef %45, ptr noundef %503, ptr noundef %506, ptr noundef %507)
  store i64 %508, ptr %44, align 8, !tbaa !9
  %509 = load ptr, ptr %23, align 8, !tbaa !5
  %510 = load i64, ptr %509, align 8, !tbaa !9
  store i64 %510, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %511

511:                                              ; preds = %534, %501
  %512 = load i64, ptr %43, align 8, !tbaa !9
  %513 = load i64, ptr %40, align 8, !tbaa !9
  %514 = icmp sle i64 %512, %513
  br i1 %514, label %515, label %537

515:                                              ; preds = %511
  %516 = load ptr, ptr %28, align 8, !tbaa !5
  %517 = load i64, ptr %45, align 8, !tbaa !9
  %518 = load ptr, ptr %23, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  %520 = sub nsw i64 %517, %519
  %521 = load i64, ptr %43, align 8, !tbaa !9
  %522 = add nsw i64 %520, %521
  %523 = load i64, ptr %32, align 8, !tbaa !9
  %524 = add nsw i64 %522, %523
  %525 = getelementptr inbounds double, ptr %516, i64 %524
  %526 = load ptr, ptr %29, align 8, !tbaa !5
  %527 = load ptr, ptr %30, align 8, !tbaa !5
  %528 = load i64, ptr %43, align 8, !tbaa !9
  %529 = load i64, ptr %38, align 8, !tbaa !9
  %530 = mul nsw i64 %528, %529
  %531 = add nsw i64 %530, 1
  %532 = getelementptr inbounds double, ptr %527, i64 %531
  %533 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %525, ptr noundef %526, ptr noundef %532, ptr noundef @c__1)
  br label %534

534:                                              ; preds = %515
  %535 = load i64, ptr %43, align 8, !tbaa !9
  %536 = add nsw i64 %535, 1
  store i64 %536, ptr %43, align 8, !tbaa !9
  br label %511, !llvm.loop !21

537:                                              ; preds = %511
  %538 = load ptr, ptr %23, align 8, !tbaa !5
  %539 = load ptr, ptr %24, align 8, !tbaa !5
  %540 = load i64, ptr %45, align 8, !tbaa !9
  %541 = load ptr, ptr %23, align 8, !tbaa !5
  %542 = load i64, ptr %541, align 8, !tbaa !9
  %543 = sub nsw i64 %540, %542
  %544 = add nsw i64 %543, 1
  %545 = load i64, ptr %36, align 8, !tbaa !9
  %546 = add nsw i64 %544, %545
  %547 = getelementptr inbounds double, ptr %539, i64 %546
  %548 = load ptr, ptr %25, align 8, !tbaa !5
  %549 = load ptr, ptr %30, align 8, !tbaa !5
  %550 = load i64, ptr %39, align 8, !tbaa !9
  %551 = getelementptr inbounds double, ptr %549, i64 %550
  %552 = load ptr, ptr %31, align 8, !tbaa !5
  %553 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %44, ptr noundef %538, ptr noundef @c_b14, ptr noundef %547, ptr noundef %548, ptr noundef %551, ptr noundef %552)
  %554 = load i64, ptr %45, align 8, !tbaa !9
  %555 = load ptr, ptr %23, align 8, !tbaa !5
  %556 = load i64, ptr %555, align 8, !tbaa !9
  %557 = icmp sgt i64 %554, %556
  br i1 %557, label %558, label %577

558:                                              ; preds = %537
  %559 = load i64, ptr %45, align 8, !tbaa !9
  %560 = load ptr, ptr %23, align 8, !tbaa !5
  %561 = load i64, ptr %560, align 8, !tbaa !9
  %562 = sub nsw i64 %559, %561
  store i64 %562, ptr %40, align 8, !tbaa !9
  %563 = load ptr, ptr %23, align 8, !tbaa !5
  %564 = load ptr, ptr %28, align 8, !tbaa !5
  %565 = load i64, ptr %33, align 8, !tbaa !9
  %566 = getelementptr inbounds double, ptr %564, i64 %565
  %567 = load ptr, ptr %29, align 8, !tbaa !5
  %568 = load ptr, ptr %24, align 8, !tbaa !5
  %569 = load i64, ptr %37, align 8, !tbaa !9
  %570 = getelementptr inbounds double, ptr %568, i64 %569
  %571 = load ptr, ptr %25, align 8, !tbaa !5
  %572 = load ptr, ptr %30, align 8, !tbaa !5
  %573 = load i64, ptr %39, align 8, !tbaa !9
  %574 = getelementptr inbounds double, ptr %572, i64 %573
  %575 = load ptr, ptr %31, align 8, !tbaa !5
  %576 = call i32 @f2c_dgemm(ptr noundef @.str.8, ptr noundef @.str.6, ptr noundef %44, ptr noundef %563, ptr noundef %40, ptr noundef @c_b14, ptr noundef %566, ptr noundef %567, ptr noundef %570, ptr noundef %571, ptr noundef @c_b14, ptr noundef %574, ptr noundef %575)
  br label %577

577:                                              ; preds = %558, %537
  %578 = getelementptr inbounds [1 x i8], ptr %46, i64 0, i64 0
  %579 = load ptr, ptr %23, align 8, !tbaa !5
  %580 = load ptr, ptr %26, align 8, !tbaa !5
  %581 = load i64, ptr %35, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %580, i64 %581
  %583 = load ptr, ptr %27, align 8, !tbaa !5
  %584 = load ptr, ptr %30, align 8, !tbaa !5
  %585 = load i64, ptr %39, align 8, !tbaa !9
  %586 = getelementptr inbounds double, ptr %584, i64 %585
  %587 = load ptr, ptr %31, align 8, !tbaa !5
  %588 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %578, ptr noundef @.str.10, ptr noundef %44, ptr noundef %579, ptr noundef @c_b14, ptr noundef %582, ptr noundef %583, ptr noundef %586, ptr noundef %587)
  %589 = load i64, ptr %45, align 8, !tbaa !9
  %590 = load ptr, ptr %23, align 8, !tbaa !5
  %591 = load i64, ptr %590, align 8, !tbaa !9
  %592 = icmp sgt i64 %589, %591
  br i1 %592, label %593, label %612

593:                                              ; preds = %577
  %594 = load i64, ptr %45, align 8, !tbaa !9
  %595 = load ptr, ptr %23, align 8, !tbaa !5
  %596 = load i64, ptr %595, align 8, !tbaa !9
  %597 = sub nsw i64 %594, %596
  store i64 %597, ptr %40, align 8, !tbaa !9
  %598 = load ptr, ptr %23, align 8, !tbaa !5
  %599 = load ptr, ptr %24, align 8, !tbaa !5
  %600 = load i64, ptr %37, align 8, !tbaa !9
  %601 = getelementptr inbounds double, ptr %599, i64 %600
  %602 = load ptr, ptr %25, align 8, !tbaa !5
  %603 = load ptr, ptr %30, align 8, !tbaa !5
  %604 = load i64, ptr %39, align 8, !tbaa !9
  %605 = getelementptr inbounds double, ptr %603, i64 %604
  %606 = load ptr, ptr %31, align 8, !tbaa !5
  %607 = load ptr, ptr %28, align 8, !tbaa !5
  %608 = load i64, ptr %33, align 8, !tbaa !9
  %609 = getelementptr inbounds double, ptr %607, i64 %608
  %610 = load ptr, ptr %29, align 8, !tbaa !5
  %611 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %40, ptr noundef %44, ptr noundef %598, ptr noundef @c_b25, ptr noundef %601, ptr noundef %602, ptr noundef %605, ptr noundef %606, ptr noundef @c_b14, ptr noundef %609, ptr noundef %610)
  br label %612

612:                                              ; preds = %593, %577
  %613 = load ptr, ptr %23, align 8, !tbaa !5
  %614 = load ptr, ptr %24, align 8, !tbaa !5
  %615 = load i64, ptr %45, align 8, !tbaa !9
  %616 = load ptr, ptr %23, align 8, !tbaa !5
  %617 = load i64, ptr %616, align 8, !tbaa !9
  %618 = sub nsw i64 %615, %617
  %619 = add nsw i64 %618, 1
  %620 = load i64, ptr %36, align 8, !tbaa !9
  %621 = add nsw i64 %619, %620
  %622 = getelementptr inbounds double, ptr %614, i64 %621
  %623 = load ptr, ptr %25, align 8, !tbaa !5
  %624 = load ptr, ptr %30, align 8, !tbaa !5
  %625 = load i64, ptr %39, align 8, !tbaa !9
  %626 = getelementptr inbounds double, ptr %624, i64 %625
  %627 = load ptr, ptr %31, align 8, !tbaa !5
  %628 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %44, ptr noundef %613, ptr noundef @c_b14, ptr noundef %622, ptr noundef %623, ptr noundef %626, ptr noundef %627)
  %629 = load ptr, ptr %23, align 8, !tbaa !5
  %630 = load i64, ptr %629, align 8, !tbaa !9
  store i64 %630, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %631

631:                                              ; preds = %668, %612
  %632 = load i64, ptr %43, align 8, !tbaa !9
  %633 = load i64, ptr %40, align 8, !tbaa !9
  %634 = icmp sle i64 %632, %633
  br i1 %634, label %635, label %671

635:                                              ; preds = %631
  %636 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %636, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %637

637:                                              ; preds = %664, %635
  %638 = load i64, ptr %42, align 8, !tbaa !9
  %639 = load i64, ptr %41, align 8, !tbaa !9
  %640 = icmp sle i64 %638, %639
  br i1 %640, label %641, label %667

641:                                              ; preds = %637
  %642 = load ptr, ptr %30, align 8, !tbaa !5
  %643 = load i64, ptr %42, align 8, !tbaa !9
  %644 = load i64, ptr %43, align 8, !tbaa !9
  %645 = load i64, ptr %38, align 8, !tbaa !9
  %646 = mul nsw i64 %644, %645
  %647 = add nsw i64 %643, %646
  %648 = getelementptr inbounds double, ptr %642, i64 %647
  %649 = load double, ptr %648, align 8, !tbaa !14
  %650 = load ptr, ptr %28, align 8, !tbaa !5
  %651 = load i64, ptr %45, align 8, !tbaa !9
  %652 = load ptr, ptr %23, align 8, !tbaa !5
  %653 = load i64, ptr %652, align 8, !tbaa !9
  %654 = sub nsw i64 %651, %653
  %655 = load i64, ptr %43, align 8, !tbaa !9
  %656 = add nsw i64 %654, %655
  %657 = load i64, ptr %42, align 8, !tbaa !9
  %658 = load i64, ptr %32, align 8, !tbaa !9
  %659 = mul nsw i64 %657, %658
  %660 = add nsw i64 %656, %659
  %661 = getelementptr inbounds double, ptr %650, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !14
  %663 = fsub double %662, %649
  store double %663, ptr %661, align 8, !tbaa !14
  br label %664

664:                                              ; preds = %641
  %665 = load i64, ptr %42, align 8, !tbaa !9
  %666 = add nsw i64 %665, 1
  store i64 %666, ptr %42, align 8, !tbaa !9
  br label %637, !llvm.loop !22

667:                                              ; preds = %637
  br label %668

668:                                              ; preds = %667
  %669 = load i64, ptr %43, align 8, !tbaa !9
  %670 = add nsw i64 %669, 1
  store i64 %670, ptr %43, align 8, !tbaa !9
  br label %631, !llvm.loop !23

671:                                              ; preds = %631
  br label %866

672:                                              ; preds = %480
  %673 = load ptr, ptr %17, align 8, !tbaa !5
  %674 = call i64 @lsame_(ptr noundef %673, ptr noundef @.str.11)
  %675 = icmp ne i64 %674, 0
  br i1 %675, label %676, label %865

676:                                              ; preds = %672
  %677 = load ptr, ptr %23, align 8, !tbaa !5
  %678 = load i64, ptr %677, align 8, !tbaa !9
  store i64 %678, ptr %40, align 8, !tbaa !9
  %679 = load ptr, ptr %22, align 8, !tbaa !5
  %680 = load ptr, ptr %23, align 8, !tbaa !5
  %681 = load ptr, ptr %24, align 8, !tbaa !5
  %682 = load i64, ptr %37, align 8, !tbaa !9
  %683 = getelementptr inbounds double, ptr %681, i64 %682
  %684 = load ptr, ptr %25, align 8, !tbaa !5
  %685 = call i64 @iladlr_(ptr noundef %679, ptr noundef %680, ptr noundef %683, ptr noundef %684)
  store i64 %685, ptr %41, align 8, !tbaa !9
  %686 = load i64, ptr %40, align 8, !tbaa !9
  %687 = load i64, ptr %41, align 8, !tbaa !9
  %688 = icmp sge i64 %686, %687
  br i1 %688, label %689, label %691

689:                                              ; preds = %676
  %690 = load i64, ptr %40, align 8, !tbaa !9
  br label %693

691:                                              ; preds = %676
  %692 = load i64, ptr %41, align 8, !tbaa !9
  br label %693

693:                                              ; preds = %691, %689
  %694 = phi i64 [ %690, %689 ], [ %692, %691 ]
  store i64 %694, ptr %45, align 8, !tbaa !9
  %695 = load ptr, ptr %21, align 8, !tbaa !5
  %696 = load ptr, ptr %28, align 8, !tbaa !5
  %697 = load i64, ptr %33, align 8, !tbaa !9
  %698 = getelementptr inbounds double, ptr %696, i64 %697
  %699 = load ptr, ptr %29, align 8, !tbaa !5
  %700 = call i64 @iladlr_(ptr noundef %695, ptr noundef %45, ptr noundef %698, ptr noundef %699)
  store i64 %700, ptr %44, align 8, !tbaa !9
  %701 = load ptr, ptr %23, align 8, !tbaa !5
  %702 = load i64, ptr %701, align 8, !tbaa !9
  store i64 %702, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %703

703:                                              ; preds = %727, %693
  %704 = load i64, ptr %43, align 8, !tbaa !9
  %705 = load i64, ptr %40, align 8, !tbaa !9
  %706 = icmp sle i64 %704, %705
  br i1 %706, label %707, label %730

707:                                              ; preds = %703
  %708 = load ptr, ptr %28, align 8, !tbaa !5
  %709 = load ptr, ptr %22, align 8, !tbaa !5
  %710 = load i64, ptr %709, align 8, !tbaa !9
  %711 = load ptr, ptr %23, align 8, !tbaa !5
  %712 = load i64, ptr %711, align 8, !tbaa !9
  %713 = sub nsw i64 %710, %712
  %714 = load i64, ptr %43, align 8, !tbaa !9
  %715 = add nsw i64 %713, %714
  %716 = load i64, ptr %32, align 8, !tbaa !9
  %717 = mul nsw i64 %715, %716
  %718 = add nsw i64 %717, 1
  %719 = getelementptr inbounds double, ptr %708, i64 %718
  %720 = load ptr, ptr %30, align 8, !tbaa !5
  %721 = load i64, ptr %43, align 8, !tbaa !9
  %722 = load i64, ptr %38, align 8, !tbaa !9
  %723 = mul nsw i64 %721, %722
  %724 = add nsw i64 %723, 1
  %725 = getelementptr inbounds double, ptr %720, i64 %724
  %726 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %719, ptr noundef @c__1, ptr noundef %725, ptr noundef @c__1)
  br label %727

727:                                              ; preds = %707
  %728 = load i64, ptr %43, align 8, !tbaa !9
  %729 = add nsw i64 %728, 1
  store i64 %729, ptr %43, align 8, !tbaa !9
  br label %703, !llvm.loop !24

730:                                              ; preds = %703
  %731 = load ptr, ptr %23, align 8, !tbaa !5
  %732 = load ptr, ptr %24, align 8, !tbaa !5
  %733 = load i64, ptr %45, align 8, !tbaa !9
  %734 = load ptr, ptr %23, align 8, !tbaa !5
  %735 = load i64, ptr %734, align 8, !tbaa !9
  %736 = sub nsw i64 %733, %735
  %737 = add nsw i64 %736, 1
  %738 = load i64, ptr %36, align 8, !tbaa !9
  %739 = add nsw i64 %737, %738
  %740 = getelementptr inbounds double, ptr %732, i64 %739
  %741 = load ptr, ptr %25, align 8, !tbaa !5
  %742 = load ptr, ptr %30, align 8, !tbaa !5
  %743 = load i64, ptr %39, align 8, !tbaa !9
  %744 = getelementptr inbounds double, ptr %742, i64 %743
  %745 = load ptr, ptr %31, align 8, !tbaa !5
  %746 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %44, ptr noundef %731, ptr noundef @c_b14, ptr noundef %740, ptr noundef %741, ptr noundef %744, ptr noundef %745)
  %747 = load i64, ptr %45, align 8, !tbaa !9
  %748 = load ptr, ptr %23, align 8, !tbaa !5
  %749 = load i64, ptr %748, align 8, !tbaa !9
  %750 = icmp sgt i64 %747, %749
  br i1 %750, label %751, label %770

751:                                              ; preds = %730
  %752 = load i64, ptr %45, align 8, !tbaa !9
  %753 = load ptr, ptr %23, align 8, !tbaa !5
  %754 = load i64, ptr %753, align 8, !tbaa !9
  %755 = sub nsw i64 %752, %754
  store i64 %755, ptr %40, align 8, !tbaa !9
  %756 = load ptr, ptr %23, align 8, !tbaa !5
  %757 = load ptr, ptr %28, align 8, !tbaa !5
  %758 = load i64, ptr %33, align 8, !tbaa !9
  %759 = getelementptr inbounds double, ptr %757, i64 %758
  %760 = load ptr, ptr %29, align 8, !tbaa !5
  %761 = load ptr, ptr %24, align 8, !tbaa !5
  %762 = load i64, ptr %37, align 8, !tbaa !9
  %763 = getelementptr inbounds double, ptr %761, i64 %762
  %764 = load ptr, ptr %25, align 8, !tbaa !5
  %765 = load ptr, ptr %30, align 8, !tbaa !5
  %766 = load i64, ptr %39, align 8, !tbaa !9
  %767 = getelementptr inbounds double, ptr %765, i64 %766
  %768 = load ptr, ptr %31, align 8, !tbaa !5
  %769 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %44, ptr noundef %756, ptr noundef %40, ptr noundef @c_b14, ptr noundef %759, ptr noundef %760, ptr noundef %763, ptr noundef %764, ptr noundef @c_b14, ptr noundef %767, ptr noundef %768)
  br label %770

770:                                              ; preds = %751, %730
  %771 = load ptr, ptr %18, align 8, !tbaa !5
  %772 = load ptr, ptr %23, align 8, !tbaa !5
  %773 = load ptr, ptr %26, align 8, !tbaa !5
  %774 = load i64, ptr %35, align 8, !tbaa !9
  %775 = getelementptr inbounds double, ptr %773, i64 %774
  %776 = load ptr, ptr %27, align 8, !tbaa !5
  %777 = load ptr, ptr %30, align 8, !tbaa !5
  %778 = load i64, ptr %39, align 8, !tbaa !9
  %779 = getelementptr inbounds double, ptr %777, i64 %778
  %780 = load ptr, ptr %31, align 8, !tbaa !5
  %781 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %771, ptr noundef @.str.10, ptr noundef %44, ptr noundef %772, ptr noundef @c_b14, ptr noundef %775, ptr noundef %776, ptr noundef %779, ptr noundef %780)
  %782 = load i64, ptr %45, align 8, !tbaa !9
  %783 = load ptr, ptr %23, align 8, !tbaa !5
  %784 = load i64, ptr %783, align 8, !tbaa !9
  %785 = icmp sgt i64 %782, %784
  br i1 %785, label %786, label %805

786:                                              ; preds = %770
  %787 = load i64, ptr %45, align 8, !tbaa !9
  %788 = load ptr, ptr %23, align 8, !tbaa !5
  %789 = load i64, ptr %788, align 8, !tbaa !9
  %790 = sub nsw i64 %787, %789
  store i64 %790, ptr %40, align 8, !tbaa !9
  %791 = load ptr, ptr %23, align 8, !tbaa !5
  %792 = load ptr, ptr %30, align 8, !tbaa !5
  %793 = load i64, ptr %39, align 8, !tbaa !9
  %794 = getelementptr inbounds double, ptr %792, i64 %793
  %795 = load ptr, ptr %31, align 8, !tbaa !5
  %796 = load ptr, ptr %24, align 8, !tbaa !5
  %797 = load i64, ptr %37, align 8, !tbaa !9
  %798 = getelementptr inbounds double, ptr %796, i64 %797
  %799 = load ptr, ptr %25, align 8, !tbaa !5
  %800 = load ptr, ptr %28, align 8, !tbaa !5
  %801 = load i64, ptr %33, align 8, !tbaa !9
  %802 = getelementptr inbounds double, ptr %800, i64 %801
  %803 = load ptr, ptr %29, align 8, !tbaa !5
  %804 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %44, ptr noundef %40, ptr noundef %791, ptr noundef @c_b25, ptr noundef %794, ptr noundef %795, ptr noundef %798, ptr noundef %799, ptr noundef @c_b14, ptr noundef %802, ptr noundef %803)
  br label %805

805:                                              ; preds = %786, %770
  %806 = load ptr, ptr %23, align 8, !tbaa !5
  %807 = load ptr, ptr %24, align 8, !tbaa !5
  %808 = load i64, ptr %45, align 8, !tbaa !9
  %809 = load ptr, ptr %23, align 8, !tbaa !5
  %810 = load i64, ptr %809, align 8, !tbaa !9
  %811 = sub nsw i64 %808, %810
  %812 = add nsw i64 %811, 1
  %813 = load i64, ptr %36, align 8, !tbaa !9
  %814 = add nsw i64 %812, %813
  %815 = getelementptr inbounds double, ptr %807, i64 %814
  %816 = load ptr, ptr %25, align 8, !tbaa !5
  %817 = load ptr, ptr %30, align 8, !tbaa !5
  %818 = load i64, ptr %39, align 8, !tbaa !9
  %819 = getelementptr inbounds double, ptr %817, i64 %818
  %820 = load ptr, ptr %31, align 8, !tbaa !5
  %821 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %44, ptr noundef %806, ptr noundef @c_b14, ptr noundef %815, ptr noundef %816, ptr noundef %819, ptr noundef %820)
  %822 = load ptr, ptr %23, align 8, !tbaa !5
  %823 = load i64, ptr %822, align 8, !tbaa !9
  store i64 %823, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %824

824:                                              ; preds = %861, %805
  %825 = load i64, ptr %43, align 8, !tbaa !9
  %826 = load i64, ptr %40, align 8, !tbaa !9
  %827 = icmp sle i64 %825, %826
  br i1 %827, label %828, label %864

828:                                              ; preds = %824
  %829 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %829, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %830

830:                                              ; preds = %857, %828
  %831 = load i64, ptr %42, align 8, !tbaa !9
  %832 = load i64, ptr %41, align 8, !tbaa !9
  %833 = icmp sle i64 %831, %832
  br i1 %833, label %834, label %860

834:                                              ; preds = %830
  %835 = load ptr, ptr %30, align 8, !tbaa !5
  %836 = load i64, ptr %42, align 8, !tbaa !9
  %837 = load i64, ptr %43, align 8, !tbaa !9
  %838 = load i64, ptr %38, align 8, !tbaa !9
  %839 = mul nsw i64 %837, %838
  %840 = add nsw i64 %836, %839
  %841 = getelementptr inbounds double, ptr %835, i64 %840
  %842 = load double, ptr %841, align 8, !tbaa !14
  %843 = load ptr, ptr %28, align 8, !tbaa !5
  %844 = load i64, ptr %42, align 8, !tbaa !9
  %845 = load i64, ptr %45, align 8, !tbaa !9
  %846 = load ptr, ptr %23, align 8, !tbaa !5
  %847 = load i64, ptr %846, align 8, !tbaa !9
  %848 = sub nsw i64 %845, %847
  %849 = load i64, ptr %43, align 8, !tbaa !9
  %850 = add nsw i64 %848, %849
  %851 = load i64, ptr %32, align 8, !tbaa !9
  %852 = mul nsw i64 %850, %851
  %853 = add nsw i64 %844, %852
  %854 = getelementptr inbounds double, ptr %843, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !14
  %856 = fsub double %855, %842
  store double %856, ptr %854, align 8, !tbaa !14
  br label %857

857:                                              ; preds = %834
  %858 = load i64, ptr %42, align 8, !tbaa !9
  %859 = add nsw i64 %858, 1
  store i64 %859, ptr %42, align 8, !tbaa !9
  br label %830, !llvm.loop !25

860:                                              ; preds = %830
  br label %861

861:                                              ; preds = %860
  %862 = load i64, ptr %43, align 8, !tbaa !9
  %863 = add nsw i64 %862, 1
  store i64 %863, ptr %43, align 8, !tbaa !9
  br label %824, !llvm.loop !26

864:                                              ; preds = %824
  br label %865

865:                                              ; preds = %864, %672
  br label %866

866:                                              ; preds = %865, %671
  br label %867

867:                                              ; preds = %866, %479
  br label %1648

868:                                              ; preds = %96
  %869 = load ptr, ptr %20, align 8, !tbaa !5
  %870 = call i64 @lsame_(ptr noundef %869, ptr noundef @.str.11)
  %871 = icmp ne i64 %870, 0
  br i1 %871, label %872, label %1647

872:                                              ; preds = %868
  %873 = load ptr, ptr %19, align 8, !tbaa !5
  %874 = call i64 @lsame_(ptr noundef %873, ptr noundef @.str.2)
  %875 = icmp ne i64 %874, 0
  br i1 %875, label %876, label %1256

876:                                              ; preds = %872
  %877 = load ptr, ptr %17, align 8, !tbaa !5
  %878 = call i64 @lsame_(ptr noundef %877, ptr noundef @.str.3)
  %879 = icmp ne i64 %878, 0
  br i1 %879, label %880, label %1064

880:                                              ; preds = %876
  %881 = load ptr, ptr %23, align 8, !tbaa !5
  %882 = load i64, ptr %881, align 8, !tbaa !9
  store i64 %882, ptr %40, align 8, !tbaa !9
  %883 = load ptr, ptr %23, align 8, !tbaa !5
  %884 = load ptr, ptr %21, align 8, !tbaa !5
  %885 = load ptr, ptr %24, align 8, !tbaa !5
  %886 = load i64, ptr %37, align 8, !tbaa !9
  %887 = getelementptr inbounds double, ptr %885, i64 %886
  %888 = load ptr, ptr %25, align 8, !tbaa !5
  %889 = call i64 @iladlc_(ptr noundef %883, ptr noundef %884, ptr noundef %887, ptr noundef %888)
  store i64 %889, ptr %41, align 8, !tbaa !9
  %890 = load i64, ptr %40, align 8, !tbaa !9
  %891 = load i64, ptr %41, align 8, !tbaa !9
  %892 = icmp sge i64 %890, %891
  br i1 %892, label %893, label %895

893:                                              ; preds = %880
  %894 = load i64, ptr %40, align 8, !tbaa !9
  br label %897

895:                                              ; preds = %880
  %896 = load i64, ptr %41, align 8, !tbaa !9
  br label %897

897:                                              ; preds = %895, %893
  %898 = phi i64 [ %894, %893 ], [ %896, %895 ]
  store i64 %898, ptr %45, align 8, !tbaa !9
  %899 = load ptr, ptr %22, align 8, !tbaa !5
  %900 = load ptr, ptr %28, align 8, !tbaa !5
  %901 = load i64, ptr %33, align 8, !tbaa !9
  %902 = getelementptr inbounds double, ptr %900, i64 %901
  %903 = load ptr, ptr %29, align 8, !tbaa !5
  %904 = call i64 @iladlc_(ptr noundef %45, ptr noundef %899, ptr noundef %902, ptr noundef %903)
  store i64 %904, ptr %44, align 8, !tbaa !9
  %905 = load ptr, ptr %23, align 8, !tbaa !5
  %906 = load i64, ptr %905, align 8, !tbaa !9
  store i64 %906, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %907

907:                                              ; preds = %925, %897
  %908 = load i64, ptr %43, align 8, !tbaa !9
  %909 = load i64, ptr %40, align 8, !tbaa !9
  %910 = icmp sle i64 %908, %909
  br i1 %910, label %911, label %928

911:                                              ; preds = %907
  %912 = load ptr, ptr %28, align 8, !tbaa !5
  %913 = load i64, ptr %43, align 8, !tbaa !9
  %914 = load i64, ptr %32, align 8, !tbaa !9
  %915 = add nsw i64 %913, %914
  %916 = getelementptr inbounds double, ptr %912, i64 %915
  %917 = load ptr, ptr %29, align 8, !tbaa !5
  %918 = load ptr, ptr %30, align 8, !tbaa !5
  %919 = load i64, ptr %43, align 8, !tbaa !9
  %920 = load i64, ptr %38, align 8, !tbaa !9
  %921 = mul nsw i64 %919, %920
  %922 = add nsw i64 %921, 1
  %923 = getelementptr inbounds double, ptr %918, i64 %922
  %924 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %916, ptr noundef %917, ptr noundef %923, ptr noundef @c__1)
  br label %925

925:                                              ; preds = %911
  %926 = load i64, ptr %43, align 8, !tbaa !9
  %927 = add nsw i64 %926, 1
  store i64 %927, ptr %43, align 8, !tbaa !9
  br label %907, !llvm.loop !27

928:                                              ; preds = %907
  %929 = load ptr, ptr %23, align 8, !tbaa !5
  %930 = load ptr, ptr %24, align 8, !tbaa !5
  %931 = load i64, ptr %37, align 8, !tbaa !9
  %932 = getelementptr inbounds double, ptr %930, i64 %931
  %933 = load ptr, ptr %25, align 8, !tbaa !5
  %934 = load ptr, ptr %30, align 8, !tbaa !5
  %935 = load i64, ptr %39, align 8, !tbaa !9
  %936 = getelementptr inbounds double, ptr %934, i64 %935
  %937 = load ptr, ptr %31, align 8, !tbaa !5
  %938 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %44, ptr noundef %929, ptr noundef @c_b14, ptr noundef %932, ptr noundef %933, ptr noundef %936, ptr noundef %937)
  %939 = load i64, ptr %45, align 8, !tbaa !9
  %940 = load ptr, ptr %23, align 8, !tbaa !5
  %941 = load i64, ptr %940, align 8, !tbaa !9
  %942 = icmp sgt i64 %939, %941
  br i1 %942, label %943, label %971

943:                                              ; preds = %928
  %944 = load i64, ptr %45, align 8, !tbaa !9
  %945 = load ptr, ptr %23, align 8, !tbaa !5
  %946 = load i64, ptr %945, align 8, !tbaa !9
  %947 = sub nsw i64 %944, %946
  store i64 %947, ptr %40, align 8, !tbaa !9
  %948 = load ptr, ptr %23, align 8, !tbaa !5
  %949 = load ptr, ptr %28, align 8, !tbaa !5
  %950 = load ptr, ptr %23, align 8, !tbaa !5
  %951 = load i64, ptr %950, align 8, !tbaa !9
  %952 = add nsw i64 %951, 1
  %953 = load i64, ptr %32, align 8, !tbaa !9
  %954 = add nsw i64 %952, %953
  %955 = getelementptr inbounds double, ptr %949, i64 %954
  %956 = load ptr, ptr %29, align 8, !tbaa !5
  %957 = load ptr, ptr %24, align 8, !tbaa !5
  %958 = load ptr, ptr %23, align 8, !tbaa !5
  %959 = load i64, ptr %958, align 8, !tbaa !9
  %960 = add nsw i64 %959, 1
  %961 = load i64, ptr %36, align 8, !tbaa !9
  %962 = mul nsw i64 %960, %961
  %963 = add nsw i64 %962, 1
  %964 = getelementptr inbounds double, ptr %957, i64 %963
  %965 = load ptr, ptr %25, align 8, !tbaa !5
  %966 = load ptr, ptr %30, align 8, !tbaa !5
  %967 = load i64, ptr %39, align 8, !tbaa !9
  %968 = getelementptr inbounds double, ptr %966, i64 %967
  %969 = load ptr, ptr %31, align 8, !tbaa !5
  %970 = call i32 @f2c_dgemm(ptr noundef @.str.8, ptr noundef @.str.8, ptr noundef %44, ptr noundef %948, ptr noundef %40, ptr noundef @c_b14, ptr noundef %955, ptr noundef %956, ptr noundef %964, ptr noundef %965, ptr noundef @c_b14, ptr noundef %968, ptr noundef %969)
  br label %971

971:                                              ; preds = %943, %928
  %972 = getelementptr inbounds [1 x i8], ptr %46, i64 0, i64 0
  %973 = load ptr, ptr %23, align 8, !tbaa !5
  %974 = load ptr, ptr %26, align 8, !tbaa !5
  %975 = load i64, ptr %35, align 8, !tbaa !9
  %976 = getelementptr inbounds double, ptr %974, i64 %975
  %977 = load ptr, ptr %27, align 8, !tbaa !5
  %978 = load ptr, ptr %30, align 8, !tbaa !5
  %979 = load i64, ptr %39, align 8, !tbaa !9
  %980 = getelementptr inbounds double, ptr %978, i64 %979
  %981 = load ptr, ptr %31, align 8, !tbaa !5
  %982 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef %972, ptr noundef @.str.10, ptr noundef %44, ptr noundef %973, ptr noundef @c_b14, ptr noundef %976, ptr noundef %977, ptr noundef %980, ptr noundef %981)
  %983 = load i64, ptr %45, align 8, !tbaa !9
  %984 = load ptr, ptr %23, align 8, !tbaa !5
  %985 = load i64, ptr %984, align 8, !tbaa !9
  %986 = icmp sgt i64 %983, %985
  br i1 %986, label %987, label %1015

987:                                              ; preds = %971
  %988 = load i64, ptr %45, align 8, !tbaa !9
  %989 = load ptr, ptr %23, align 8, !tbaa !5
  %990 = load i64, ptr %989, align 8, !tbaa !9
  %991 = sub nsw i64 %988, %990
  store i64 %991, ptr %40, align 8, !tbaa !9
  %992 = load ptr, ptr %23, align 8, !tbaa !5
  %993 = load ptr, ptr %24, align 8, !tbaa !5
  %994 = load ptr, ptr %23, align 8, !tbaa !5
  %995 = load i64, ptr %994, align 8, !tbaa !9
  %996 = add nsw i64 %995, 1
  %997 = load i64, ptr %36, align 8, !tbaa !9
  %998 = mul nsw i64 %996, %997
  %999 = add nsw i64 %998, 1
  %1000 = getelementptr inbounds double, ptr %993, i64 %999
  %1001 = load ptr, ptr %25, align 8, !tbaa !5
  %1002 = load ptr, ptr %30, align 8, !tbaa !5
  %1003 = load i64, ptr %39, align 8, !tbaa !9
  %1004 = getelementptr inbounds double, ptr %1002, i64 %1003
  %1005 = load ptr, ptr %31, align 8, !tbaa !5
  %1006 = load ptr, ptr %28, align 8, !tbaa !5
  %1007 = load ptr, ptr %23, align 8, !tbaa !5
  %1008 = load i64, ptr %1007, align 8, !tbaa !9
  %1009 = add nsw i64 %1008, 1
  %1010 = load i64, ptr %32, align 8, !tbaa !9
  %1011 = add nsw i64 %1009, %1010
  %1012 = getelementptr inbounds double, ptr %1006, i64 %1011
  %1013 = load ptr, ptr %29, align 8, !tbaa !5
  %1014 = call i32 @f2c_dgemm(ptr noundef @.str.8, ptr noundef @.str.8, ptr noundef %40, ptr noundef %44, ptr noundef %992, ptr noundef @c_b25, ptr noundef %1000, ptr noundef %1001, ptr noundef %1004, ptr noundef %1005, ptr noundef @c_b14, ptr noundef %1012, ptr noundef %1013)
  br label %1015

1015:                                             ; preds = %987, %971
  %1016 = load ptr, ptr %23, align 8, !tbaa !5
  %1017 = load ptr, ptr %24, align 8, !tbaa !5
  %1018 = load i64, ptr %37, align 8, !tbaa !9
  %1019 = getelementptr inbounds double, ptr %1017, i64 %1018
  %1020 = load ptr, ptr %25, align 8, !tbaa !5
  %1021 = load ptr, ptr %30, align 8, !tbaa !5
  %1022 = load i64, ptr %39, align 8, !tbaa !9
  %1023 = getelementptr inbounds double, ptr %1021, i64 %1022
  %1024 = load ptr, ptr %31, align 8, !tbaa !5
  %1025 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %44, ptr noundef %1016, ptr noundef @c_b14, ptr noundef %1019, ptr noundef %1020, ptr noundef %1023, ptr noundef %1024)
  %1026 = load ptr, ptr %23, align 8, !tbaa !5
  %1027 = load i64, ptr %1026, align 8, !tbaa !9
  store i64 %1027, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %1028

1028:                                             ; preds = %1060, %1015
  %1029 = load i64, ptr %43, align 8, !tbaa !9
  %1030 = load i64, ptr %40, align 8, !tbaa !9
  %1031 = icmp sle i64 %1029, %1030
  br i1 %1031, label %1032, label %1063

1032:                                             ; preds = %1028
  %1033 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1033, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %1034

1034:                                             ; preds = %1056, %1032
  %1035 = load i64, ptr %42, align 8, !tbaa !9
  %1036 = load i64, ptr %41, align 8, !tbaa !9
  %1037 = icmp sle i64 %1035, %1036
  br i1 %1037, label %1038, label %1059

1038:                                             ; preds = %1034
  %1039 = load ptr, ptr %30, align 8, !tbaa !5
  %1040 = load i64, ptr %42, align 8, !tbaa !9
  %1041 = load i64, ptr %43, align 8, !tbaa !9
  %1042 = load i64, ptr %38, align 8, !tbaa !9
  %1043 = mul nsw i64 %1041, %1042
  %1044 = add nsw i64 %1040, %1043
  %1045 = getelementptr inbounds double, ptr %1039, i64 %1044
  %1046 = load double, ptr %1045, align 8, !tbaa !14
  %1047 = load ptr, ptr %28, align 8, !tbaa !5
  %1048 = load i64, ptr %43, align 8, !tbaa !9
  %1049 = load i64, ptr %42, align 8, !tbaa !9
  %1050 = load i64, ptr %32, align 8, !tbaa !9
  %1051 = mul nsw i64 %1049, %1050
  %1052 = add nsw i64 %1048, %1051
  %1053 = getelementptr inbounds double, ptr %1047, i64 %1052
  %1054 = load double, ptr %1053, align 8, !tbaa !14
  %1055 = fsub double %1054, %1046
  store double %1055, ptr %1053, align 8, !tbaa !14
  br label %1056

1056:                                             ; preds = %1038
  %1057 = load i64, ptr %42, align 8, !tbaa !9
  %1058 = add nsw i64 %1057, 1
  store i64 %1058, ptr %42, align 8, !tbaa !9
  br label %1034, !llvm.loop !28

1059:                                             ; preds = %1034
  br label %1060

1060:                                             ; preds = %1059
  %1061 = load i64, ptr %43, align 8, !tbaa !9
  %1062 = add nsw i64 %1061, 1
  store i64 %1062, ptr %43, align 8, !tbaa !9
  br label %1028, !llvm.loop !29

1063:                                             ; preds = %1028
  br label %1255

1064:                                             ; preds = %876
  %1065 = load ptr, ptr %17, align 8, !tbaa !5
  %1066 = call i64 @lsame_(ptr noundef %1065, ptr noundef @.str.11)
  %1067 = icmp ne i64 %1066, 0
  br i1 %1067, label %1068, label %1254

1068:                                             ; preds = %1064
  %1069 = load ptr, ptr %23, align 8, !tbaa !5
  %1070 = load i64, ptr %1069, align 8, !tbaa !9
  store i64 %1070, ptr %40, align 8, !tbaa !9
  %1071 = load ptr, ptr %23, align 8, !tbaa !5
  %1072 = load ptr, ptr %22, align 8, !tbaa !5
  %1073 = load ptr, ptr %24, align 8, !tbaa !5
  %1074 = load i64, ptr %37, align 8, !tbaa !9
  %1075 = getelementptr inbounds double, ptr %1073, i64 %1074
  %1076 = load ptr, ptr %25, align 8, !tbaa !5
  %1077 = call i64 @iladlc_(ptr noundef %1071, ptr noundef %1072, ptr noundef %1075, ptr noundef %1076)
  store i64 %1077, ptr %41, align 8, !tbaa !9
  %1078 = load i64, ptr %40, align 8, !tbaa !9
  %1079 = load i64, ptr %41, align 8, !tbaa !9
  %1080 = icmp sge i64 %1078, %1079
  br i1 %1080, label %1081, label %1083

1081:                                             ; preds = %1068
  %1082 = load i64, ptr %40, align 8, !tbaa !9
  br label %1085

1083:                                             ; preds = %1068
  %1084 = load i64, ptr %41, align 8, !tbaa !9
  br label %1085

1085:                                             ; preds = %1083, %1081
  %1086 = phi i64 [ %1082, %1081 ], [ %1084, %1083 ]
  store i64 %1086, ptr %45, align 8, !tbaa !9
  %1087 = load ptr, ptr %21, align 8, !tbaa !5
  %1088 = load ptr, ptr %28, align 8, !tbaa !5
  %1089 = load i64, ptr %33, align 8, !tbaa !9
  %1090 = getelementptr inbounds double, ptr %1088, i64 %1089
  %1091 = load ptr, ptr %29, align 8, !tbaa !5
  %1092 = call i64 @iladlr_(ptr noundef %1087, ptr noundef %45, ptr noundef %1090, ptr noundef %1091)
  store i64 %1092, ptr %44, align 8, !tbaa !9
  %1093 = load ptr, ptr %23, align 8, !tbaa !5
  %1094 = load i64, ptr %1093, align 8, !tbaa !9
  store i64 %1094, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %1095

1095:                                             ; preds = %1113, %1085
  %1096 = load i64, ptr %43, align 8, !tbaa !9
  %1097 = load i64, ptr %40, align 8, !tbaa !9
  %1098 = icmp sle i64 %1096, %1097
  br i1 %1098, label %1099, label %1116

1099:                                             ; preds = %1095
  %1100 = load ptr, ptr %28, align 8, !tbaa !5
  %1101 = load i64, ptr %43, align 8, !tbaa !9
  %1102 = load i64, ptr %32, align 8, !tbaa !9
  %1103 = mul nsw i64 %1101, %1102
  %1104 = add nsw i64 %1103, 1
  %1105 = getelementptr inbounds double, ptr %1100, i64 %1104
  %1106 = load ptr, ptr %30, align 8, !tbaa !5
  %1107 = load i64, ptr %43, align 8, !tbaa !9
  %1108 = load i64, ptr %38, align 8, !tbaa !9
  %1109 = mul nsw i64 %1107, %1108
  %1110 = add nsw i64 %1109, 1
  %1111 = getelementptr inbounds double, ptr %1106, i64 %1110
  %1112 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %1105, ptr noundef @c__1, ptr noundef %1111, ptr noundef @c__1)
  br label %1113

1113:                                             ; preds = %1099
  %1114 = load i64, ptr %43, align 8, !tbaa !9
  %1115 = add nsw i64 %1114, 1
  store i64 %1115, ptr %43, align 8, !tbaa !9
  br label %1095, !llvm.loop !30

1116:                                             ; preds = %1095
  %1117 = load ptr, ptr %23, align 8, !tbaa !5
  %1118 = load ptr, ptr %24, align 8, !tbaa !5
  %1119 = load i64, ptr %37, align 8, !tbaa !9
  %1120 = getelementptr inbounds double, ptr %1118, i64 %1119
  %1121 = load ptr, ptr %25, align 8, !tbaa !5
  %1122 = load ptr, ptr %30, align 8, !tbaa !5
  %1123 = load i64, ptr %39, align 8, !tbaa !9
  %1124 = getelementptr inbounds double, ptr %1122, i64 %1123
  %1125 = load ptr, ptr %31, align 8, !tbaa !5
  %1126 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %44, ptr noundef %1117, ptr noundef @c_b14, ptr noundef %1120, ptr noundef %1121, ptr noundef %1124, ptr noundef %1125)
  %1127 = load i64, ptr %45, align 8, !tbaa !9
  %1128 = load ptr, ptr %23, align 8, !tbaa !5
  %1129 = load i64, ptr %1128, align 8, !tbaa !9
  %1130 = icmp sgt i64 %1127, %1129
  br i1 %1130, label %1131, label %1160

1131:                                             ; preds = %1116
  %1132 = load i64, ptr %45, align 8, !tbaa !9
  %1133 = load ptr, ptr %23, align 8, !tbaa !5
  %1134 = load i64, ptr %1133, align 8, !tbaa !9
  %1135 = sub nsw i64 %1132, %1134
  store i64 %1135, ptr %40, align 8, !tbaa !9
  %1136 = load ptr, ptr %23, align 8, !tbaa !5
  %1137 = load ptr, ptr %28, align 8, !tbaa !5
  %1138 = load ptr, ptr %23, align 8, !tbaa !5
  %1139 = load i64, ptr %1138, align 8, !tbaa !9
  %1140 = add nsw i64 %1139, 1
  %1141 = load i64, ptr %32, align 8, !tbaa !9
  %1142 = mul nsw i64 %1140, %1141
  %1143 = add nsw i64 %1142, 1
  %1144 = getelementptr inbounds double, ptr %1137, i64 %1143
  %1145 = load ptr, ptr %29, align 8, !tbaa !5
  %1146 = load ptr, ptr %24, align 8, !tbaa !5
  %1147 = load ptr, ptr %23, align 8, !tbaa !5
  %1148 = load i64, ptr %1147, align 8, !tbaa !9
  %1149 = add nsw i64 %1148, 1
  %1150 = load i64, ptr %36, align 8, !tbaa !9
  %1151 = mul nsw i64 %1149, %1150
  %1152 = add nsw i64 %1151, 1
  %1153 = getelementptr inbounds double, ptr %1146, i64 %1152
  %1154 = load ptr, ptr %25, align 8, !tbaa !5
  %1155 = load ptr, ptr %30, align 8, !tbaa !5
  %1156 = load i64, ptr %39, align 8, !tbaa !9
  %1157 = getelementptr inbounds double, ptr %1155, i64 %1156
  %1158 = load ptr, ptr %31, align 8, !tbaa !5
  %1159 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %44, ptr noundef %1136, ptr noundef %40, ptr noundef @c_b14, ptr noundef %1144, ptr noundef %1145, ptr noundef %1153, ptr noundef %1154, ptr noundef @c_b14, ptr noundef %1157, ptr noundef %1158)
  br label %1160

1160:                                             ; preds = %1131, %1116
  %1161 = load ptr, ptr %18, align 8, !tbaa !5
  %1162 = load ptr, ptr %23, align 8, !tbaa !5
  %1163 = load ptr, ptr %26, align 8, !tbaa !5
  %1164 = load i64, ptr %35, align 8, !tbaa !9
  %1165 = getelementptr inbounds double, ptr %1163, i64 %1164
  %1166 = load ptr, ptr %27, align 8, !tbaa !5
  %1167 = load ptr, ptr %30, align 8, !tbaa !5
  %1168 = load i64, ptr %39, align 8, !tbaa !9
  %1169 = getelementptr inbounds double, ptr %1167, i64 %1168
  %1170 = load ptr, ptr %31, align 8, !tbaa !5
  %1171 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef %1161, ptr noundef @.str.10, ptr noundef %44, ptr noundef %1162, ptr noundef @c_b14, ptr noundef %1165, ptr noundef %1166, ptr noundef %1169, ptr noundef %1170)
  %1172 = load i64, ptr %45, align 8, !tbaa !9
  %1173 = load ptr, ptr %23, align 8, !tbaa !5
  %1174 = load i64, ptr %1173, align 8, !tbaa !9
  %1175 = icmp sgt i64 %1172, %1174
  br i1 %1175, label %1176, label %1205

1176:                                             ; preds = %1160
  %1177 = load i64, ptr %45, align 8, !tbaa !9
  %1178 = load ptr, ptr %23, align 8, !tbaa !5
  %1179 = load i64, ptr %1178, align 8, !tbaa !9
  %1180 = sub nsw i64 %1177, %1179
  store i64 %1180, ptr %40, align 8, !tbaa !9
  %1181 = load ptr, ptr %23, align 8, !tbaa !5
  %1182 = load ptr, ptr %30, align 8, !tbaa !5
  %1183 = load i64, ptr %39, align 8, !tbaa !9
  %1184 = getelementptr inbounds double, ptr %1182, i64 %1183
  %1185 = load ptr, ptr %31, align 8, !tbaa !5
  %1186 = load ptr, ptr %24, align 8, !tbaa !5
  %1187 = load ptr, ptr %23, align 8, !tbaa !5
  %1188 = load i64, ptr %1187, align 8, !tbaa !9
  %1189 = add nsw i64 %1188, 1
  %1190 = load i64, ptr %36, align 8, !tbaa !9
  %1191 = mul nsw i64 %1189, %1190
  %1192 = add nsw i64 %1191, 1
  %1193 = getelementptr inbounds double, ptr %1186, i64 %1192
  %1194 = load ptr, ptr %25, align 8, !tbaa !5
  %1195 = load ptr, ptr %28, align 8, !tbaa !5
  %1196 = load ptr, ptr %23, align 8, !tbaa !5
  %1197 = load i64, ptr %1196, align 8, !tbaa !9
  %1198 = add nsw i64 %1197, 1
  %1199 = load i64, ptr %32, align 8, !tbaa !9
  %1200 = mul nsw i64 %1198, %1199
  %1201 = add nsw i64 %1200, 1
  %1202 = getelementptr inbounds double, ptr %1195, i64 %1201
  %1203 = load ptr, ptr %29, align 8, !tbaa !5
  %1204 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %44, ptr noundef %40, ptr noundef %1181, ptr noundef @c_b25, ptr noundef %1184, ptr noundef %1185, ptr noundef %1193, ptr noundef %1194, ptr noundef @c_b14, ptr noundef %1202, ptr noundef %1203)
  br label %1205

1205:                                             ; preds = %1176, %1160
  %1206 = load ptr, ptr %23, align 8, !tbaa !5
  %1207 = load ptr, ptr %24, align 8, !tbaa !5
  %1208 = load i64, ptr %37, align 8, !tbaa !9
  %1209 = getelementptr inbounds double, ptr %1207, i64 %1208
  %1210 = load ptr, ptr %25, align 8, !tbaa !5
  %1211 = load ptr, ptr %30, align 8, !tbaa !5
  %1212 = load i64, ptr %39, align 8, !tbaa !9
  %1213 = getelementptr inbounds double, ptr %1211, i64 %1212
  %1214 = load ptr, ptr %31, align 8, !tbaa !5
  %1215 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %44, ptr noundef %1206, ptr noundef @c_b14, ptr noundef %1209, ptr noundef %1210, ptr noundef %1213, ptr noundef %1214)
  %1216 = load ptr, ptr %23, align 8, !tbaa !5
  %1217 = load i64, ptr %1216, align 8, !tbaa !9
  store i64 %1217, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %1218

1218:                                             ; preds = %1250, %1205
  %1219 = load i64, ptr %43, align 8, !tbaa !9
  %1220 = load i64, ptr %40, align 8, !tbaa !9
  %1221 = icmp sle i64 %1219, %1220
  br i1 %1221, label %1222, label %1253

1222:                                             ; preds = %1218
  %1223 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1223, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %1224

1224:                                             ; preds = %1246, %1222
  %1225 = load i64, ptr %42, align 8, !tbaa !9
  %1226 = load i64, ptr %41, align 8, !tbaa !9
  %1227 = icmp sle i64 %1225, %1226
  br i1 %1227, label %1228, label %1249

1228:                                             ; preds = %1224
  %1229 = load ptr, ptr %30, align 8, !tbaa !5
  %1230 = load i64, ptr %42, align 8, !tbaa !9
  %1231 = load i64, ptr %43, align 8, !tbaa !9
  %1232 = load i64, ptr %38, align 8, !tbaa !9
  %1233 = mul nsw i64 %1231, %1232
  %1234 = add nsw i64 %1230, %1233
  %1235 = getelementptr inbounds double, ptr %1229, i64 %1234
  %1236 = load double, ptr %1235, align 8, !tbaa !14
  %1237 = load ptr, ptr %28, align 8, !tbaa !5
  %1238 = load i64, ptr %42, align 8, !tbaa !9
  %1239 = load i64, ptr %43, align 8, !tbaa !9
  %1240 = load i64, ptr %32, align 8, !tbaa !9
  %1241 = mul nsw i64 %1239, %1240
  %1242 = add nsw i64 %1238, %1241
  %1243 = getelementptr inbounds double, ptr %1237, i64 %1242
  %1244 = load double, ptr %1243, align 8, !tbaa !14
  %1245 = fsub double %1244, %1236
  store double %1245, ptr %1243, align 8, !tbaa !14
  br label %1246

1246:                                             ; preds = %1228
  %1247 = load i64, ptr %42, align 8, !tbaa !9
  %1248 = add nsw i64 %1247, 1
  store i64 %1248, ptr %42, align 8, !tbaa !9
  br label %1224, !llvm.loop !31

1249:                                             ; preds = %1224
  br label %1250

1250:                                             ; preds = %1249
  %1251 = load i64, ptr %43, align 8, !tbaa !9
  %1252 = add nsw i64 %1251, 1
  store i64 %1252, ptr %43, align 8, !tbaa !9
  br label %1218, !llvm.loop !32

1253:                                             ; preds = %1218
  br label %1254

1254:                                             ; preds = %1253, %1064
  br label %1255

1255:                                             ; preds = %1254, %1063
  br label %1646

1256:                                             ; preds = %872
  %1257 = load ptr, ptr %17, align 8, !tbaa !5
  %1258 = call i64 @lsame_(ptr noundef %1257, ptr noundef @.str.3)
  %1259 = icmp ne i64 %1258, 0
  br i1 %1259, label %1260, label %1450

1260:                                             ; preds = %1256
  %1261 = load ptr, ptr %23, align 8, !tbaa !5
  %1262 = load i64, ptr %1261, align 8, !tbaa !9
  store i64 %1262, ptr %40, align 8, !tbaa !9
  %1263 = load ptr, ptr %23, align 8, !tbaa !5
  %1264 = load ptr, ptr %21, align 8, !tbaa !5
  %1265 = load ptr, ptr %24, align 8, !tbaa !5
  %1266 = load i64, ptr %37, align 8, !tbaa !9
  %1267 = getelementptr inbounds double, ptr %1265, i64 %1266
  %1268 = load ptr, ptr %25, align 8, !tbaa !5
  %1269 = call i64 @iladlc_(ptr noundef %1263, ptr noundef %1264, ptr noundef %1267, ptr noundef %1268)
  store i64 %1269, ptr %41, align 8, !tbaa !9
  %1270 = load i64, ptr %40, align 8, !tbaa !9
  %1271 = load i64, ptr %41, align 8, !tbaa !9
  %1272 = icmp sge i64 %1270, %1271
  br i1 %1272, label %1273, label %1275

1273:                                             ; preds = %1260
  %1274 = load i64, ptr %40, align 8, !tbaa !9
  br label %1277

1275:                                             ; preds = %1260
  %1276 = load i64, ptr %41, align 8, !tbaa !9
  br label %1277

1277:                                             ; preds = %1275, %1273
  %1278 = phi i64 [ %1274, %1273 ], [ %1276, %1275 ]
  store i64 %1278, ptr %45, align 8, !tbaa !9
  %1279 = load ptr, ptr %22, align 8, !tbaa !5
  %1280 = load ptr, ptr %28, align 8, !tbaa !5
  %1281 = load i64, ptr %33, align 8, !tbaa !9
  %1282 = getelementptr inbounds double, ptr %1280, i64 %1281
  %1283 = load ptr, ptr %29, align 8, !tbaa !5
  %1284 = call i64 @iladlc_(ptr noundef %45, ptr noundef %1279, ptr noundef %1282, ptr noundef %1283)
  store i64 %1284, ptr %44, align 8, !tbaa !9
  %1285 = load ptr, ptr %23, align 8, !tbaa !5
  %1286 = load i64, ptr %1285, align 8, !tbaa !9
  store i64 %1286, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %1287

1287:                                             ; preds = %1310, %1277
  %1288 = load i64, ptr %43, align 8, !tbaa !9
  %1289 = load i64, ptr %40, align 8, !tbaa !9
  %1290 = icmp sle i64 %1288, %1289
  br i1 %1290, label %1291, label %1313

1291:                                             ; preds = %1287
  %1292 = load ptr, ptr %28, align 8, !tbaa !5
  %1293 = load i64, ptr %45, align 8, !tbaa !9
  %1294 = load ptr, ptr %23, align 8, !tbaa !5
  %1295 = load i64, ptr %1294, align 8, !tbaa !9
  %1296 = sub nsw i64 %1293, %1295
  %1297 = load i64, ptr %43, align 8, !tbaa !9
  %1298 = add nsw i64 %1296, %1297
  %1299 = load i64, ptr %32, align 8, !tbaa !9
  %1300 = add nsw i64 %1298, %1299
  %1301 = getelementptr inbounds double, ptr %1292, i64 %1300
  %1302 = load ptr, ptr %29, align 8, !tbaa !5
  %1303 = load ptr, ptr %30, align 8, !tbaa !5
  %1304 = load i64, ptr %43, align 8, !tbaa !9
  %1305 = load i64, ptr %38, align 8, !tbaa !9
  %1306 = mul nsw i64 %1304, %1305
  %1307 = add nsw i64 %1306, 1
  %1308 = getelementptr inbounds double, ptr %1303, i64 %1307
  %1309 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %1301, ptr noundef %1302, ptr noundef %1308, ptr noundef @c__1)
  br label %1310

1310:                                             ; preds = %1291
  %1311 = load i64, ptr %43, align 8, !tbaa !9
  %1312 = add nsw i64 %1311, 1
  store i64 %1312, ptr %43, align 8, !tbaa !9
  br label %1287, !llvm.loop !33

1313:                                             ; preds = %1287
  %1314 = load ptr, ptr %23, align 8, !tbaa !5
  %1315 = load ptr, ptr %24, align 8, !tbaa !5
  %1316 = load i64, ptr %45, align 8, !tbaa !9
  %1317 = load ptr, ptr %23, align 8, !tbaa !5
  %1318 = load i64, ptr %1317, align 8, !tbaa !9
  %1319 = sub nsw i64 %1316, %1318
  %1320 = add nsw i64 %1319, 1
  %1321 = load i64, ptr %36, align 8, !tbaa !9
  %1322 = mul nsw i64 %1320, %1321
  %1323 = add nsw i64 %1322, 1
  %1324 = getelementptr inbounds double, ptr %1315, i64 %1323
  %1325 = load ptr, ptr %25, align 8, !tbaa !5
  %1326 = load ptr, ptr %30, align 8, !tbaa !5
  %1327 = load i64, ptr %39, align 8, !tbaa !9
  %1328 = getelementptr inbounds double, ptr %1326, i64 %1327
  %1329 = load ptr, ptr %31, align 8, !tbaa !5
  %1330 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %44, ptr noundef %1314, ptr noundef @c_b14, ptr noundef %1324, ptr noundef %1325, ptr noundef %1328, ptr noundef %1329)
  %1331 = load i64, ptr %45, align 8, !tbaa !9
  %1332 = load ptr, ptr %23, align 8, !tbaa !5
  %1333 = load i64, ptr %1332, align 8, !tbaa !9
  %1334 = icmp sgt i64 %1331, %1333
  br i1 %1334, label %1335, label %1354

1335:                                             ; preds = %1313
  %1336 = load i64, ptr %45, align 8, !tbaa !9
  %1337 = load ptr, ptr %23, align 8, !tbaa !5
  %1338 = load i64, ptr %1337, align 8, !tbaa !9
  %1339 = sub nsw i64 %1336, %1338
  store i64 %1339, ptr %40, align 8, !tbaa !9
  %1340 = load ptr, ptr %23, align 8, !tbaa !5
  %1341 = load ptr, ptr %28, align 8, !tbaa !5
  %1342 = load i64, ptr %33, align 8, !tbaa !9
  %1343 = getelementptr inbounds double, ptr %1341, i64 %1342
  %1344 = load ptr, ptr %29, align 8, !tbaa !5
  %1345 = load ptr, ptr %24, align 8, !tbaa !5
  %1346 = load i64, ptr %37, align 8, !tbaa !9
  %1347 = getelementptr inbounds double, ptr %1345, i64 %1346
  %1348 = load ptr, ptr %25, align 8, !tbaa !5
  %1349 = load ptr, ptr %30, align 8, !tbaa !5
  %1350 = load i64, ptr %39, align 8, !tbaa !9
  %1351 = getelementptr inbounds double, ptr %1349, i64 %1350
  %1352 = load ptr, ptr %31, align 8, !tbaa !5
  %1353 = call i32 @f2c_dgemm(ptr noundef @.str.8, ptr noundef @.str.8, ptr noundef %44, ptr noundef %1340, ptr noundef %40, ptr noundef @c_b14, ptr noundef %1343, ptr noundef %1344, ptr noundef %1347, ptr noundef %1348, ptr noundef @c_b14, ptr noundef %1351, ptr noundef %1352)
  br label %1354

1354:                                             ; preds = %1335, %1313
  %1355 = getelementptr inbounds [1 x i8], ptr %46, i64 0, i64 0
  %1356 = load ptr, ptr %23, align 8, !tbaa !5
  %1357 = load ptr, ptr %26, align 8, !tbaa !5
  %1358 = load i64, ptr %35, align 8, !tbaa !9
  %1359 = getelementptr inbounds double, ptr %1357, i64 %1358
  %1360 = load ptr, ptr %27, align 8, !tbaa !5
  %1361 = load ptr, ptr %30, align 8, !tbaa !5
  %1362 = load i64, ptr %39, align 8, !tbaa !9
  %1363 = getelementptr inbounds double, ptr %1361, i64 %1362
  %1364 = load ptr, ptr %31, align 8, !tbaa !5
  %1365 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %1355, ptr noundef @.str.10, ptr noundef %44, ptr noundef %1356, ptr noundef @c_b14, ptr noundef %1359, ptr noundef %1360, ptr noundef %1363, ptr noundef %1364)
  %1366 = load i64, ptr %45, align 8, !tbaa !9
  %1367 = load ptr, ptr %23, align 8, !tbaa !5
  %1368 = load i64, ptr %1367, align 8, !tbaa !9
  %1369 = icmp sgt i64 %1366, %1368
  br i1 %1369, label %1370, label %1389

1370:                                             ; preds = %1354
  %1371 = load i64, ptr %45, align 8, !tbaa !9
  %1372 = load ptr, ptr %23, align 8, !tbaa !5
  %1373 = load i64, ptr %1372, align 8, !tbaa !9
  %1374 = sub nsw i64 %1371, %1373
  store i64 %1374, ptr %40, align 8, !tbaa !9
  %1375 = load ptr, ptr %23, align 8, !tbaa !5
  %1376 = load ptr, ptr %24, align 8, !tbaa !5
  %1377 = load i64, ptr %37, align 8, !tbaa !9
  %1378 = getelementptr inbounds double, ptr %1376, i64 %1377
  %1379 = load ptr, ptr %25, align 8, !tbaa !5
  %1380 = load ptr, ptr %30, align 8, !tbaa !5
  %1381 = load i64, ptr %39, align 8, !tbaa !9
  %1382 = getelementptr inbounds double, ptr %1380, i64 %1381
  %1383 = load ptr, ptr %31, align 8, !tbaa !5
  %1384 = load ptr, ptr %28, align 8, !tbaa !5
  %1385 = load i64, ptr %33, align 8, !tbaa !9
  %1386 = getelementptr inbounds double, ptr %1384, i64 %1385
  %1387 = load ptr, ptr %29, align 8, !tbaa !5
  %1388 = call i32 @f2c_dgemm(ptr noundef @.str.8, ptr noundef @.str.8, ptr noundef %40, ptr noundef %44, ptr noundef %1375, ptr noundef @c_b25, ptr noundef %1378, ptr noundef %1379, ptr noundef %1382, ptr noundef %1383, ptr noundef @c_b14, ptr noundef %1386, ptr noundef %1387)
  br label %1389

1389:                                             ; preds = %1370, %1354
  %1390 = load ptr, ptr %23, align 8, !tbaa !5
  %1391 = load ptr, ptr %24, align 8, !tbaa !5
  %1392 = load i64, ptr %45, align 8, !tbaa !9
  %1393 = load ptr, ptr %23, align 8, !tbaa !5
  %1394 = load i64, ptr %1393, align 8, !tbaa !9
  %1395 = sub nsw i64 %1392, %1394
  %1396 = add nsw i64 %1395, 1
  %1397 = load i64, ptr %36, align 8, !tbaa !9
  %1398 = mul nsw i64 %1396, %1397
  %1399 = add nsw i64 %1398, 1
  %1400 = getelementptr inbounds double, ptr %1391, i64 %1399
  %1401 = load ptr, ptr %25, align 8, !tbaa !5
  %1402 = load ptr, ptr %30, align 8, !tbaa !5
  %1403 = load i64, ptr %39, align 8, !tbaa !9
  %1404 = getelementptr inbounds double, ptr %1402, i64 %1403
  %1405 = load ptr, ptr %31, align 8, !tbaa !5
  %1406 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %44, ptr noundef %1390, ptr noundef @c_b14, ptr noundef %1400, ptr noundef %1401, ptr noundef %1404, ptr noundef %1405)
  %1407 = load ptr, ptr %23, align 8, !tbaa !5
  %1408 = load i64, ptr %1407, align 8, !tbaa !9
  store i64 %1408, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %1409

1409:                                             ; preds = %1446, %1389
  %1410 = load i64, ptr %43, align 8, !tbaa !9
  %1411 = load i64, ptr %40, align 8, !tbaa !9
  %1412 = icmp sle i64 %1410, %1411
  br i1 %1412, label %1413, label %1449

1413:                                             ; preds = %1409
  %1414 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1414, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %1415

1415:                                             ; preds = %1442, %1413
  %1416 = load i64, ptr %42, align 8, !tbaa !9
  %1417 = load i64, ptr %41, align 8, !tbaa !9
  %1418 = icmp sle i64 %1416, %1417
  br i1 %1418, label %1419, label %1445

1419:                                             ; preds = %1415
  %1420 = load ptr, ptr %30, align 8, !tbaa !5
  %1421 = load i64, ptr %42, align 8, !tbaa !9
  %1422 = load i64, ptr %43, align 8, !tbaa !9
  %1423 = load i64, ptr %38, align 8, !tbaa !9
  %1424 = mul nsw i64 %1422, %1423
  %1425 = add nsw i64 %1421, %1424
  %1426 = getelementptr inbounds double, ptr %1420, i64 %1425
  %1427 = load double, ptr %1426, align 8, !tbaa !14
  %1428 = load ptr, ptr %28, align 8, !tbaa !5
  %1429 = load i64, ptr %45, align 8, !tbaa !9
  %1430 = load ptr, ptr %23, align 8, !tbaa !5
  %1431 = load i64, ptr %1430, align 8, !tbaa !9
  %1432 = sub nsw i64 %1429, %1431
  %1433 = load i64, ptr %43, align 8, !tbaa !9
  %1434 = add nsw i64 %1432, %1433
  %1435 = load i64, ptr %42, align 8, !tbaa !9
  %1436 = load i64, ptr %32, align 8, !tbaa !9
  %1437 = mul nsw i64 %1435, %1436
  %1438 = add nsw i64 %1434, %1437
  %1439 = getelementptr inbounds double, ptr %1428, i64 %1438
  %1440 = load double, ptr %1439, align 8, !tbaa !14
  %1441 = fsub double %1440, %1427
  store double %1441, ptr %1439, align 8, !tbaa !14
  br label %1442

1442:                                             ; preds = %1419
  %1443 = load i64, ptr %42, align 8, !tbaa !9
  %1444 = add nsw i64 %1443, 1
  store i64 %1444, ptr %42, align 8, !tbaa !9
  br label %1415, !llvm.loop !34

1445:                                             ; preds = %1415
  br label %1446

1446:                                             ; preds = %1445
  %1447 = load i64, ptr %43, align 8, !tbaa !9
  %1448 = add nsw i64 %1447, 1
  store i64 %1448, ptr %43, align 8, !tbaa !9
  br label %1409, !llvm.loop !35

1449:                                             ; preds = %1409
  br label %1645

1450:                                             ; preds = %1256
  %1451 = load ptr, ptr %17, align 8, !tbaa !5
  %1452 = call i64 @lsame_(ptr noundef %1451, ptr noundef @.str.11)
  %1453 = icmp ne i64 %1452, 0
  br i1 %1453, label %1454, label %1644

1454:                                             ; preds = %1450
  %1455 = load ptr, ptr %23, align 8, !tbaa !5
  %1456 = load i64, ptr %1455, align 8, !tbaa !9
  store i64 %1456, ptr %40, align 8, !tbaa !9
  %1457 = load ptr, ptr %23, align 8, !tbaa !5
  %1458 = load ptr, ptr %22, align 8, !tbaa !5
  %1459 = load ptr, ptr %24, align 8, !tbaa !5
  %1460 = load i64, ptr %37, align 8, !tbaa !9
  %1461 = getelementptr inbounds double, ptr %1459, i64 %1460
  %1462 = load ptr, ptr %25, align 8, !tbaa !5
  %1463 = call i64 @iladlc_(ptr noundef %1457, ptr noundef %1458, ptr noundef %1461, ptr noundef %1462)
  store i64 %1463, ptr %41, align 8, !tbaa !9
  %1464 = load i64, ptr %40, align 8, !tbaa !9
  %1465 = load i64, ptr %41, align 8, !tbaa !9
  %1466 = icmp sge i64 %1464, %1465
  br i1 %1466, label %1467, label %1469

1467:                                             ; preds = %1454
  %1468 = load i64, ptr %40, align 8, !tbaa !9
  br label %1471

1469:                                             ; preds = %1454
  %1470 = load i64, ptr %41, align 8, !tbaa !9
  br label %1471

1471:                                             ; preds = %1469, %1467
  %1472 = phi i64 [ %1468, %1467 ], [ %1470, %1469 ]
  store i64 %1472, ptr %45, align 8, !tbaa !9
  %1473 = load ptr, ptr %21, align 8, !tbaa !5
  %1474 = load ptr, ptr %28, align 8, !tbaa !5
  %1475 = load i64, ptr %33, align 8, !tbaa !9
  %1476 = getelementptr inbounds double, ptr %1474, i64 %1475
  %1477 = load ptr, ptr %29, align 8, !tbaa !5
  %1478 = call i64 @iladlr_(ptr noundef %1473, ptr noundef %45, ptr noundef %1476, ptr noundef %1477)
  store i64 %1478, ptr %44, align 8, !tbaa !9
  %1479 = load ptr, ptr %23, align 8, !tbaa !5
  %1480 = load i64, ptr %1479, align 8, !tbaa !9
  store i64 %1480, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %1481

1481:                                             ; preds = %1504, %1471
  %1482 = load i64, ptr %43, align 8, !tbaa !9
  %1483 = load i64, ptr %40, align 8, !tbaa !9
  %1484 = icmp sle i64 %1482, %1483
  br i1 %1484, label %1485, label %1507

1485:                                             ; preds = %1481
  %1486 = load ptr, ptr %28, align 8, !tbaa !5
  %1487 = load i64, ptr %45, align 8, !tbaa !9
  %1488 = load ptr, ptr %23, align 8, !tbaa !5
  %1489 = load i64, ptr %1488, align 8, !tbaa !9
  %1490 = sub nsw i64 %1487, %1489
  %1491 = load i64, ptr %43, align 8, !tbaa !9
  %1492 = add nsw i64 %1490, %1491
  %1493 = load i64, ptr %32, align 8, !tbaa !9
  %1494 = mul nsw i64 %1492, %1493
  %1495 = add nsw i64 %1494, 1
  %1496 = getelementptr inbounds double, ptr %1486, i64 %1495
  %1497 = load ptr, ptr %30, align 8, !tbaa !5
  %1498 = load i64, ptr %43, align 8, !tbaa !9
  %1499 = load i64, ptr %38, align 8, !tbaa !9
  %1500 = mul nsw i64 %1498, %1499
  %1501 = add nsw i64 %1500, 1
  %1502 = getelementptr inbounds double, ptr %1497, i64 %1501
  %1503 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %1496, ptr noundef @c__1, ptr noundef %1502, ptr noundef @c__1)
  br label %1504

1504:                                             ; preds = %1485
  %1505 = load i64, ptr %43, align 8, !tbaa !9
  %1506 = add nsw i64 %1505, 1
  store i64 %1506, ptr %43, align 8, !tbaa !9
  br label %1481, !llvm.loop !36

1507:                                             ; preds = %1481
  %1508 = load ptr, ptr %23, align 8, !tbaa !5
  %1509 = load ptr, ptr %24, align 8, !tbaa !5
  %1510 = load i64, ptr %45, align 8, !tbaa !9
  %1511 = load ptr, ptr %23, align 8, !tbaa !5
  %1512 = load i64, ptr %1511, align 8, !tbaa !9
  %1513 = sub nsw i64 %1510, %1512
  %1514 = add nsw i64 %1513, 1
  %1515 = load i64, ptr %36, align 8, !tbaa !9
  %1516 = mul nsw i64 %1514, %1515
  %1517 = add nsw i64 %1516, 1
  %1518 = getelementptr inbounds double, ptr %1509, i64 %1517
  %1519 = load ptr, ptr %25, align 8, !tbaa !5
  %1520 = load ptr, ptr %30, align 8, !tbaa !5
  %1521 = load i64, ptr %39, align 8, !tbaa !9
  %1522 = getelementptr inbounds double, ptr %1520, i64 %1521
  %1523 = load ptr, ptr %31, align 8, !tbaa !5
  %1524 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %44, ptr noundef %1508, ptr noundef @c_b14, ptr noundef %1518, ptr noundef %1519, ptr noundef %1522, ptr noundef %1523)
  %1525 = load i64, ptr %45, align 8, !tbaa !9
  %1526 = load ptr, ptr %23, align 8, !tbaa !5
  %1527 = load i64, ptr %1526, align 8, !tbaa !9
  %1528 = icmp sgt i64 %1525, %1527
  br i1 %1528, label %1529, label %1548

1529:                                             ; preds = %1507
  %1530 = load i64, ptr %45, align 8, !tbaa !9
  %1531 = load ptr, ptr %23, align 8, !tbaa !5
  %1532 = load i64, ptr %1531, align 8, !tbaa !9
  %1533 = sub nsw i64 %1530, %1532
  store i64 %1533, ptr %40, align 8, !tbaa !9
  %1534 = load ptr, ptr %23, align 8, !tbaa !5
  %1535 = load ptr, ptr %28, align 8, !tbaa !5
  %1536 = load i64, ptr %33, align 8, !tbaa !9
  %1537 = getelementptr inbounds double, ptr %1535, i64 %1536
  %1538 = load ptr, ptr %29, align 8, !tbaa !5
  %1539 = load ptr, ptr %24, align 8, !tbaa !5
  %1540 = load i64, ptr %37, align 8, !tbaa !9
  %1541 = getelementptr inbounds double, ptr %1539, i64 %1540
  %1542 = load ptr, ptr %25, align 8, !tbaa !5
  %1543 = load ptr, ptr %30, align 8, !tbaa !5
  %1544 = load i64, ptr %39, align 8, !tbaa !9
  %1545 = getelementptr inbounds double, ptr %1543, i64 %1544
  %1546 = load ptr, ptr %31, align 8, !tbaa !5
  %1547 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %44, ptr noundef %1534, ptr noundef %40, ptr noundef @c_b14, ptr noundef %1537, ptr noundef %1538, ptr noundef %1541, ptr noundef %1542, ptr noundef @c_b14, ptr noundef %1545, ptr noundef %1546)
  br label %1548

1548:                                             ; preds = %1529, %1507
  %1549 = load ptr, ptr %18, align 8, !tbaa !5
  %1550 = load ptr, ptr %23, align 8, !tbaa !5
  %1551 = load ptr, ptr %26, align 8, !tbaa !5
  %1552 = load i64, ptr %35, align 8, !tbaa !9
  %1553 = getelementptr inbounds double, ptr %1551, i64 %1552
  %1554 = load ptr, ptr %27, align 8, !tbaa !5
  %1555 = load ptr, ptr %30, align 8, !tbaa !5
  %1556 = load i64, ptr %39, align 8, !tbaa !9
  %1557 = getelementptr inbounds double, ptr %1555, i64 %1556
  %1558 = load ptr, ptr %31, align 8, !tbaa !5
  %1559 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %1549, ptr noundef @.str.10, ptr noundef %44, ptr noundef %1550, ptr noundef @c_b14, ptr noundef %1553, ptr noundef %1554, ptr noundef %1557, ptr noundef %1558)
  %1560 = load i64, ptr %45, align 8, !tbaa !9
  %1561 = load ptr, ptr %23, align 8, !tbaa !5
  %1562 = load i64, ptr %1561, align 8, !tbaa !9
  %1563 = icmp sgt i64 %1560, %1562
  br i1 %1563, label %1564, label %1583

1564:                                             ; preds = %1548
  %1565 = load i64, ptr %45, align 8, !tbaa !9
  %1566 = load ptr, ptr %23, align 8, !tbaa !5
  %1567 = load i64, ptr %1566, align 8, !tbaa !9
  %1568 = sub nsw i64 %1565, %1567
  store i64 %1568, ptr %40, align 8, !tbaa !9
  %1569 = load ptr, ptr %23, align 8, !tbaa !5
  %1570 = load ptr, ptr %30, align 8, !tbaa !5
  %1571 = load i64, ptr %39, align 8, !tbaa !9
  %1572 = getelementptr inbounds double, ptr %1570, i64 %1571
  %1573 = load ptr, ptr %31, align 8, !tbaa !5
  %1574 = load ptr, ptr %24, align 8, !tbaa !5
  %1575 = load i64, ptr %37, align 8, !tbaa !9
  %1576 = getelementptr inbounds double, ptr %1574, i64 %1575
  %1577 = load ptr, ptr %25, align 8, !tbaa !5
  %1578 = load ptr, ptr %28, align 8, !tbaa !5
  %1579 = load i64, ptr %33, align 8, !tbaa !9
  %1580 = getelementptr inbounds double, ptr %1578, i64 %1579
  %1581 = load ptr, ptr %29, align 8, !tbaa !5
  %1582 = call i32 @f2c_dgemm(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %44, ptr noundef %40, ptr noundef %1569, ptr noundef @c_b25, ptr noundef %1572, ptr noundef %1573, ptr noundef %1576, ptr noundef %1577, ptr noundef @c_b14, ptr noundef %1580, ptr noundef %1581)
  br label %1583

1583:                                             ; preds = %1564, %1548
  %1584 = load ptr, ptr %23, align 8, !tbaa !5
  %1585 = load ptr, ptr %24, align 8, !tbaa !5
  %1586 = load i64, ptr %45, align 8, !tbaa !9
  %1587 = load ptr, ptr %23, align 8, !tbaa !5
  %1588 = load i64, ptr %1587, align 8, !tbaa !9
  %1589 = sub nsw i64 %1586, %1588
  %1590 = add nsw i64 %1589, 1
  %1591 = load i64, ptr %36, align 8, !tbaa !9
  %1592 = mul nsw i64 %1590, %1591
  %1593 = add nsw i64 %1592, 1
  %1594 = getelementptr inbounds double, ptr %1585, i64 %1593
  %1595 = load ptr, ptr %25, align 8, !tbaa !5
  %1596 = load ptr, ptr %30, align 8, !tbaa !5
  %1597 = load i64, ptr %39, align 8, !tbaa !9
  %1598 = getelementptr inbounds double, ptr %1596, i64 %1597
  %1599 = load ptr, ptr %31, align 8, !tbaa !5
  %1600 = call i32 @f2c_dtrmm(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %44, ptr noundef %1584, ptr noundef @c_b14, ptr noundef %1594, ptr noundef %1595, ptr noundef %1598, ptr noundef %1599)
  %1601 = load ptr, ptr %23, align 8, !tbaa !5
  %1602 = load i64, ptr %1601, align 8, !tbaa !9
  store i64 %1602, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %1603

1603:                                             ; preds = %1640, %1583
  %1604 = load i64, ptr %43, align 8, !tbaa !9
  %1605 = load i64, ptr %40, align 8, !tbaa !9
  %1606 = icmp sle i64 %1604, %1605
  br i1 %1606, label %1607, label %1643

1607:                                             ; preds = %1603
  %1608 = load i64, ptr %44, align 8, !tbaa !9
  store i64 %1608, ptr %41, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %1609

1609:                                             ; preds = %1636, %1607
  %1610 = load i64, ptr %42, align 8, !tbaa !9
  %1611 = load i64, ptr %41, align 8, !tbaa !9
  %1612 = icmp sle i64 %1610, %1611
  br i1 %1612, label %1613, label %1639

1613:                                             ; preds = %1609
  %1614 = load ptr, ptr %30, align 8, !tbaa !5
  %1615 = load i64, ptr %42, align 8, !tbaa !9
  %1616 = load i64, ptr %43, align 8, !tbaa !9
  %1617 = load i64, ptr %38, align 8, !tbaa !9
  %1618 = mul nsw i64 %1616, %1617
  %1619 = add nsw i64 %1615, %1618
  %1620 = getelementptr inbounds double, ptr %1614, i64 %1619
  %1621 = load double, ptr %1620, align 8, !tbaa !14
  %1622 = load ptr, ptr %28, align 8, !tbaa !5
  %1623 = load i64, ptr %42, align 8, !tbaa !9
  %1624 = load i64, ptr %45, align 8, !tbaa !9
  %1625 = load ptr, ptr %23, align 8, !tbaa !5
  %1626 = load i64, ptr %1625, align 8, !tbaa !9
  %1627 = sub nsw i64 %1624, %1626
  %1628 = load i64, ptr %43, align 8, !tbaa !9
  %1629 = add nsw i64 %1627, %1628
  %1630 = load i64, ptr %32, align 8, !tbaa !9
  %1631 = mul nsw i64 %1629, %1630
  %1632 = add nsw i64 %1623, %1631
  %1633 = getelementptr inbounds double, ptr %1622, i64 %1632
  %1634 = load double, ptr %1633, align 8, !tbaa !14
  %1635 = fsub double %1634, %1621
  store double %1635, ptr %1633, align 8, !tbaa !14
  br label %1636

1636:                                             ; preds = %1613
  %1637 = load i64, ptr %42, align 8, !tbaa !9
  %1638 = add nsw i64 %1637, 1
  store i64 %1638, ptr %42, align 8, !tbaa !9
  br label %1609, !llvm.loop !37

1639:                                             ; preds = %1609
  br label %1640

1640:                                             ; preds = %1639
  %1641 = load i64, ptr %43, align 8, !tbaa !9
  %1642 = add nsw i64 %1641, 1
  store i64 %1642, ptr %43, align 8, !tbaa !9
  br label %1603, !llvm.loop !38

1643:                                             ; preds = %1603
  br label %1644

1644:                                             ; preds = %1643, %1450
  br label %1645

1645:                                             ; preds = %1644, %1449
  br label %1646

1646:                                             ; preds = %1645, %1255
  br label %1647

1647:                                             ; preds = %1646, %868
  br label %1648

1648:                                             ; preds = %1647, %867
  store i32 0, ptr %16, align 4
  store i32 1, ptr %47, align 4
  br label %1649

1649:                                             ; preds = %1648, %87
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  %1650 = load i32, ptr %16, align 4
  ret i32 %1650
}

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = distinct !{!16, !13}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}


; 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 [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b14 = external hidden global double, align 8
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [9 x i8], align 1
@c_b25 = external hidden global double, align 8
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlarfb_(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) local_unnamed_addr #0 {
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #4
  %20 = load i64, ptr %8, align 8, !tbaa !5
  %21 = xor i64 %20, -1
  %22 = getelementptr inbounds double, ptr %7, i64 %21
  %23 = load i64, ptr %12, align 8, !tbaa !5
  %24 = xor i64 %23, -1
  %25 = getelementptr inbounds double, ptr %11, i64 %24
  %26 = load i64, ptr %14, align 8, !tbaa !5
  %27 = xor i64 %26, -1
  %28 = getelementptr inbounds double, ptr %13, i64 %27
  %29 = load i64, ptr %4, align 8, !tbaa !5
  %30 = icmp slt i64 %29, 1
  br i1 %30, label %.loopexit, label %31

31:                                               ; preds = %15
  %32 = load i64, ptr %5, align 8, !tbaa !5
  %33 = icmp slt i64 %32, 1
  br i1 %33, label %.loopexit, label %34

34:                                               ; preds = %31
  %35 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %.not = icmp eq i64 %35, 0
  %. = select i1 %.not, i8 78, i8 84
  store i8 %., ptr %19, align 1, !tbaa !9
  %36 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #4
  %.not753 = icmp eq i64 %36, 0
  br i1 %.not753, label %379, label %37

37:                                               ; preds = %34
  %38 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #4
  %.not776 = icmp eq i64 %38, 0
  %39 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %.not777 = icmp eq i64 %39, 0
  br i1 %.not776, label %198, label %40

40:                                               ; preds = %37
  br i1 %.not777, label %111, label %41

41:                                               ; preds = %40
  %42 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %42, ptr %16, align 8, !tbaa !5
  %43 = tail call i64 @iladlr_(ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8) #4
  %44 = tail call i64 @llvm.smax.i64(i64 %42, i64 %43)
  store i64 %44, ptr %18, align 8, !tbaa !5
  %45 = call i64 @iladlc_(ptr noundef nonnull %18, ptr noundef nonnull %5, ptr noundef %11, ptr noundef nonnull %12) #4
  store i64 %45, ptr %17, align 8, !tbaa !5
  %46 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %46, ptr %16, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %11, i64 -8
  %invariant.gep811 = getelementptr i8, ptr %28, i64 8
  %.not794813 = icmp slt i64 %46, 1
  br i1 %.not794813, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %41, %.lr.ph
  %.0814 = phi i64 [ %49, %.lr.ph ], [ 1, %41 ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0814
  %47 = mul nsw i64 %.0814, %26
  %gep812 = getelementptr double, ptr %invariant.gep811, i64 %47
  %48 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %gep, ptr noundef nonnull %12, ptr noundef %gep812, ptr noundef nonnull @c__1) #4
  %49 = add nuw nsw i64 %.0814, 1
  %50 = load i64, ptr %16, align 8, !tbaa !5
  %.not794.not = icmp slt i64 %.0814, %50
  br i1 %.not794.not, label %.lr.ph, label %._crit_edge, !llvm.loop !10

._crit_edge:                                      ; preds = %.lr.ph, %41
  %51 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %52 = load i64, ptr %18, align 8, !tbaa !5
  %53 = load i64, ptr %6, align 8, !tbaa !5
  %54 = icmp sgt i64 %52, %53
  br i1 %54, label %55, label %60

55:                                               ; preds = %._crit_edge
  %56 = sub nsw i64 %52, %53
  store i64 %56, ptr %16, align 8, !tbaa !5
  %57 = getelementptr inbounds double, ptr %11, i64 %53
  %58 = getelementptr inbounds double, ptr %7, i64 %53
  %59 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %57, ptr noundef nonnull %12, ptr noundef %58, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #4
  br label %60

60:                                               ; preds = %55, %._crit_edge
  %61 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull %19, ptr noundef nonnull @.str.10, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef %10, ptr noundef %13, ptr noundef nonnull %14) #4
  %62 = load i64, ptr %18, align 8, !tbaa !5
  %63 = load i64, ptr %6, align 8, !tbaa !5
  %64 = icmp sgt i64 %62, %63
  br i1 %64, label %65, label %70

65:                                               ; preds = %60
  %66 = sub nsw i64 %62, %63
  store i64 %66, ptr %16, align 8, !tbaa !5
  %67 = getelementptr inbounds double, ptr %7, i64 %63
  %68 = getelementptr inbounds double, ptr %11, i64 %63
  %69 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %67, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b14, ptr noundef %68, ptr noundef nonnull %12) #4
  br label %70

70:                                               ; preds = %65, %60
  %71 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %72 = load i64, ptr %6, align 8, !tbaa !5
  %.not795822 = icmp slt i64 %72, 1
  br i1 %.not795822, label %.loopexit, label %.lr.ph825

.lr.ph825:                                        ; preds = %70
  %73 = load i64, ptr %17, align 8, !tbaa !5
  %.not796815 = icmp slt i64 %73, 1
  br i1 %.not796815, label %.loopexit, label %.lr.ph818.preheader

.lr.ph818.preheader:                              ; preds = %.lr.ph825
  %74 = add nuw i64 %72, %73
  %75 = shl i64 %74, 3
  %76 = getelementptr i8, ptr %11, i64 %75
  %scevgep = getelementptr i8, ptr %76, i64 -8
  %77 = add nuw i64 %72, 2305843009213693951
  %78 = mul i64 %26, %77
  %79 = add i64 %78, %73
  %80 = shl i64 %79, 3
  %scevgep1033 = getelementptr i8, ptr %13, i64 %80
  %min.iters.check = icmp ugt i64 %73, 5
  %ident.check.not = icmp eq i64 %23, 1
  %or.cond = select i1 %min.iters.check, i1 %ident.check.not, i1 false
  %bound0 = icmp ugt ptr %scevgep1033, %11
  %bound1 = icmp ugt ptr %scevgep, %13
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %26, 1152921504606846976
  %stride.check = icmp ne i64 %.mask, 0
  %81 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %73, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %73, %n.vec
  %xtraiter = and i64 %73, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.lr.ph818

.lr.ph818:                                        ; preds = %.lr.ph818.preheader, %._crit_edge819
  %.1823 = phi i64 [ %110, %._crit_edge819 ], [ 1, %.lr.ph818.preheader ]
  %82 = mul nsw i64 %.1823, %26
  %invariant.gep820 = getelementptr double, ptr %28, i64 %82
  %83 = getelementptr double, ptr %25, i64 %.1823
  %or.cond.not = xor i1 %or.cond, true
  %brmerge = select i1 %or.cond.not, i1 true, i1 %81
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph818, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph818 ]
  %offset.idx = or disjoint i64 %index, 1
  %84 = getelementptr double, ptr %invariant.gep820, i64 %offset.idx
  %85 = getelementptr i8, ptr %84, i64 16
  %wide.load = load <2 x double>, ptr %84, align 8, !tbaa !12, !alias.scope !14
  %wide.load1034 = load <2 x double>, ptr %85, align 8, !tbaa !12, !alias.scope !14
  %86 = getelementptr double, ptr %83, i64 %offset.idx
  %87 = getelementptr i8, ptr %86, i64 16
  %wide.load1035 = load <2 x double>, ptr %86, align 8, !tbaa !12, !alias.scope !17, !noalias !14
  %wide.load1036 = load <2 x double>, ptr %87, align 8, !tbaa !12, !alias.scope !17, !noalias !14
  %88 = fsub <2 x double> %wide.load1035, %wide.load
  %89 = fsub <2 x double> %wide.load1036, %wide.load1034
  store <2 x double> %88, ptr %86, align 8, !tbaa !12, !alias.scope !17, !noalias !14
  store <2 x double> %89, ptr %87, align 8, !tbaa !12, !alias.scope !17, !noalias !14
  %index.next = add nuw i64 %index, 4
  %90 = icmp eq i64 %index.next, %n.vec
  br i1 %90, label %middle.block, label %vector.body, !llvm.loop !19

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge819, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %.lr.ph818, %middle.block
  %.0712816.ph = phi i64 [ 1, %.lr.ph818 ], [ %ind.end, %middle.block ]
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %gep821.prol = getelementptr double, ptr %invariant.gep820, i64 %.0712816.ph
  %91 = load double, ptr %gep821.prol, align 8, !tbaa !12
  %92 = mul nsw i64 %.0712816.ph, %23
  %93 = getelementptr double, ptr %83, i64 %92
  %94 = load double, ptr %93, align 8, !tbaa !12
  %95 = fsub double %94, %91
  store double %95, ptr %93, align 8, !tbaa !12
  %96 = add nuw i64 %.0712816.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0712816.unr = phi i64 [ %.0712816.ph, %scalar.ph.preheader ], [ %96, %scalar.ph.prol ]
  %97 = icmp eq i64 %73, %.0712816.ph
  br i1 %97, label %._crit_edge819, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.0712816 = phi i64 [ %109, %scalar.ph ], [ %.0712816.unr, %scalar.ph.prol.loopexit ]
  %gep821 = getelementptr double, ptr %invariant.gep820, i64 %.0712816
  %98 = load double, ptr %gep821, align 8, !tbaa !12
  %99 = mul nsw i64 %.0712816, %23
  %100 = getelementptr double, ptr %83, i64 %99
  %101 = load double, ptr %100, align 8, !tbaa !12
  %102 = fsub double %101, %98
  store double %102, ptr %100, align 8, !tbaa !12
  %103 = add nuw i64 %.0712816, 1
  %gep821.1 = getelementptr double, ptr %invariant.gep820, i64 %103
  %104 = load double, ptr %gep821.1, align 8, !tbaa !12
  %105 = mul nsw i64 %103, %23
  %106 = getelementptr double, ptr %83, i64 %105
  %107 = load double, ptr %106, align 8, !tbaa !12
  %108 = fsub double %107, %104
  store double %108, ptr %106, align 8, !tbaa !12
  %109 = add nuw i64 %.0712816, 2
  %exitcond.not.1 = icmp eq i64 %103, %73
  br i1 %exitcond.not.1, label %._crit_edge819, label %scalar.ph, !llvm.loop !22

._crit_edge819:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %110 = add nuw i64 %.1823, 1
  %exitcond993.not = icmp eq i64 %.1823, %72
  br i1 %exitcond993.not, label %.loopexit, label %.lr.ph818, !llvm.loop !23

111:                                              ; preds = %40
  %112 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.11) #4
  %.not788 = icmp eq i64 %112, 0
  br i1 %.not788, label %.loopexit, label %113

113:                                              ; preds = %111
  %114 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %114, ptr %16, align 8, !tbaa !5
  %115 = tail call i64 @iladlr_(ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8) #4
  %116 = tail call i64 @llvm.smax.i64(i64 %114, i64 %115)
  store i64 %116, ptr %18, align 8, !tbaa !5
  %117 = call i64 @iladlr_(ptr noundef nonnull %4, ptr noundef nonnull %18, ptr noundef %11, ptr noundef nonnull %12) #4
  store i64 %117, ptr %17, align 8, !tbaa !5
  %118 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %118, ptr %16, align 8, !tbaa !5
  %invariant.gep826 = getelementptr i8, ptr %25, i64 8
  %invariant.gep828 = getelementptr i8, ptr %28, i64 8
  %.not790830 = icmp slt i64 %118, 1
  br i1 %.not790830, label %._crit_edge834, label %.lr.ph833

.lr.ph833:                                        ; preds = %113, %.lr.ph833
  %.2831 = phi i64 [ %122, %.lr.ph833 ], [ 1, %113 ]
  %119 = mul nsw i64 %.2831, %23
  %gep827 = getelementptr double, ptr %invariant.gep826, i64 %119
  %120 = mul nsw i64 %.2831, %26
  %gep829 = getelementptr double, ptr %invariant.gep828, i64 %120
  %121 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %gep827, ptr noundef nonnull @c__1, ptr noundef %gep829, ptr noundef nonnull @c__1) #4
  %122 = add nuw nsw i64 %.2831, 1
  %123 = load i64, ptr %16, align 8, !tbaa !5
  %.not790.not = icmp slt i64 %.2831, %123
  br i1 %.not790.not, label %.lr.ph833, label %._crit_edge834, !llvm.loop !24

._crit_edge834:                                   ; preds = %.lr.ph833, %113
  %124 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %125 = load i64, ptr %18, align 8, !tbaa !5
  %126 = load i64, ptr %6, align 8, !tbaa !5
  %127 = icmp sgt i64 %125, %126
  br i1 %127, label %128, label %136

128:                                              ; preds = %._crit_edge834
  %129 = sub nsw i64 %125, %126
  store i64 %129, ptr %16, align 8, !tbaa !5
  %130 = add nsw i64 %126, 1
  %131 = mul nsw i64 %130, %23
  %132 = getelementptr double, ptr %25, i64 %131
  %133 = getelementptr i8, ptr %132, i64 8
  %134 = getelementptr inbounds double, ptr %7, i64 %126
  %135 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %133, ptr noundef nonnull %12, ptr noundef %134, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #4
  br label %136

136:                                              ; preds = %128, %._crit_edge834
  %137 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef %1, ptr noundef nonnull @.str.10, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #4
  %138 = load i64, ptr %18, align 8, !tbaa !5
  %139 = load i64, ptr %6, align 8, !tbaa !5
  %140 = icmp sgt i64 %138, %139
  br i1 %140, label %141, label %149

141:                                              ; preds = %136
  %142 = sub nsw i64 %138, %139
  store i64 %142, ptr %16, align 8, !tbaa !5
  %143 = add nsw i64 %139, 1
  %144 = getelementptr inbounds double, ptr %7, i64 %139
  %145 = mul nsw i64 %143, %23
  %146 = getelementptr double, ptr %25, i64 %145
  %147 = getelementptr i8, ptr %146, i64 8
  %148 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %144, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %147, ptr noundef nonnull %12) #4
  br label %149

149:                                              ; preds = %141, %136
  %150 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %151 = load i64, ptr %6, align 8, !tbaa !5
  %.not791844 = icmp slt i64 %151, 1
  br i1 %.not791844, label %.loopexit, label %.lr.ph847

.lr.ph847:                                        ; preds = %149
  %152 = load i64, ptr %17, align 8, !tbaa !5
  %.not792835 = icmp slt i64 %152, 1
  br i1 %.not792835, label %.loopexit, label %.lr.ph838.preheader

.lr.ph838.preheader:                              ; preds = %.lr.ph847
  %153 = add nsw i64 %151, -1
  %154 = mul i64 %23, %153
  %155 = add i64 %154, %152
  %156 = shl i64 %155, 3
  %scevgep1038 = getelementptr i8, ptr %11, i64 %156
  %157 = mul i64 %26, %153
  %158 = add i64 %157, %152
  %159 = shl i64 %158, 3
  %scevgep1039 = getelementptr i8, ptr %13, i64 %159
  %160 = add nuw i64 %152, 1
  %min.iters.check1047 = icmp ult i64 %152, 6
  %bound01040 = icmp ugt ptr %scevgep1039, %11
  %bound11041 = icmp ugt ptr %scevgep1038, %13
  %found.conflict1042 = and i1 %bound01040, %bound11041
  %161 = or i64 %23, %26
  %162 = and i64 %161, 1152921504606846976
  %163 = icmp ne i64 %162, 0
  %164 = or i1 %found.conflict1042, %163
  %n.vec1050 = and i64 %152, 9223372036854775804
  %ind.end1051 = or disjoint i64 %n.vec1050, 1
  %cmp.n1061 = icmp eq i64 %152, %n.vec1050
  br label %.lr.ph838

.lr.ph838:                                        ; preds = %.lr.ph838.preheader, %._crit_edge839
  %.3845 = phi i64 [ %197, %._crit_edge839 ], [ 1, %.lr.ph838.preheader ]
  %165 = mul nsw i64 %.3845, %26
  %invariant.gep840 = getelementptr double, ptr %28, i64 %165
  %166 = mul nsw i64 %.3845, %23
  %invariant.gep842 = getelementptr double, ptr %25, i64 %166
  %brmerge1263 = select i1 %min.iters.check1047, i1 true, i1 %164
  br i1 %brmerge1263, label %scalar.ph1046.preheader, label %vector.body1053

vector.body1053:                                  ; preds = %.lr.ph838, %vector.body1053
  %index1054 = phi i64 [ %index.next1060, %vector.body1053 ], [ 0, %.lr.ph838 ]
  %offset.idx1055 = or disjoint i64 %index1054, 1
  %167 = getelementptr double, ptr %invariant.gep840, i64 %offset.idx1055
  %168 = getelementptr i8, ptr %167, i64 16
  %wide.load1056 = load <2 x double>, ptr %167, align 8, !tbaa !12, !alias.scope !25
  %wide.load1057 = load <2 x double>, ptr %168, align 8, !tbaa !12, !alias.scope !25
  %169 = getelementptr double, ptr %invariant.gep842, i64 %offset.idx1055
  %170 = getelementptr i8, ptr %169, i64 16
  %wide.load1058 = load <2 x double>, ptr %169, align 8, !tbaa !12, !alias.scope !28, !noalias !25
  %wide.load1059 = load <2 x double>, ptr %170, align 8, !tbaa !12, !alias.scope !28, !noalias !25
  %171 = fsub <2 x double> %wide.load1058, %wide.load1056
  %172 = fsub <2 x double> %wide.load1059, %wide.load1057
  store <2 x double> %171, ptr %169, align 8, !tbaa !12, !alias.scope !28, !noalias !25
  store <2 x double> %172, ptr %170, align 8, !tbaa !12, !alias.scope !28, !noalias !25
  %index.next1060 = add nuw i64 %index1054, 4
  %173 = icmp eq i64 %index.next1060, %n.vec1050
  br i1 %173, label %middle.block1045, label %vector.body1053, !llvm.loop !30

middle.block1045:                                 ; preds = %vector.body1053
  br i1 %cmp.n1061, label %._crit_edge839, label %scalar.ph1046.preheader

scalar.ph1046.preheader:                          ; preds = %.lr.ph838, %middle.block1045
  %.1713836.ph = phi i64 [ 1, %.lr.ph838 ], [ %ind.end1051, %middle.block1045 ]
  %174 = sub i64 %160, %.1713836.ph
  %175 = sub i64 %152, %.1713836.ph
  %xtraiter1240 = and i64 %174, 3
  %lcmp.mod1241.not = icmp eq i64 %xtraiter1240, 0
  br i1 %lcmp.mod1241.not, label %scalar.ph1046.prol.loopexit, label %scalar.ph1046.prol

scalar.ph1046.prol:                               ; preds = %scalar.ph1046.preheader, %scalar.ph1046.prol
  %.1713836.prol = phi i64 [ %179, %scalar.ph1046.prol ], [ %.1713836.ph, %scalar.ph1046.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph1046.prol ], [ 0, %scalar.ph1046.preheader ]
  %gep841.prol = getelementptr double, ptr %invariant.gep840, i64 %.1713836.prol
  %176 = load double, ptr %gep841.prol, align 8, !tbaa !12
  %gep843.prol = getelementptr double, ptr %invariant.gep842, i64 %.1713836.prol
  %177 = load double, ptr %gep843.prol, align 8, !tbaa !12
  %178 = fsub double %177, %176
  store double %178, ptr %gep843.prol, align 8, !tbaa !12
  %179 = add nuw i64 %.1713836.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1240
  br i1 %prol.iter.cmp.not, label %scalar.ph1046.prol.loopexit, label %scalar.ph1046.prol, !llvm.loop !31

scalar.ph1046.prol.loopexit:                      ; preds = %scalar.ph1046.prol, %scalar.ph1046.preheader
  %.1713836.unr = phi i64 [ %.1713836.ph, %scalar.ph1046.preheader ], [ %179, %scalar.ph1046.prol ]
  %180 = icmp ult i64 %175, 3
  br i1 %180, label %._crit_edge839, label %scalar.ph1046

scalar.ph1046:                                    ; preds = %scalar.ph1046.prol.loopexit, %scalar.ph1046
  %.1713836 = phi i64 [ %196, %scalar.ph1046 ], [ %.1713836.unr, %scalar.ph1046.prol.loopexit ]
  %gep841 = getelementptr double, ptr %invariant.gep840, i64 %.1713836
  %181 = load double, ptr %gep841, align 8, !tbaa !12
  %gep843 = getelementptr double, ptr %invariant.gep842, i64 %.1713836
  %182 = load double, ptr %gep843, align 8, !tbaa !12
  %183 = fsub double %182, %181
  store double %183, ptr %gep843, align 8, !tbaa !12
  %184 = add nuw i64 %.1713836, 1
  %gep841.1 = getelementptr double, ptr %invariant.gep840, i64 %184
  %185 = load double, ptr %gep841.1, align 8, !tbaa !12
  %gep843.1 = getelementptr double, ptr %invariant.gep842, i64 %184
  %186 = load double, ptr %gep843.1, align 8, !tbaa !12
  %187 = fsub double %186, %185
  store double %187, ptr %gep843.1, align 8, !tbaa !12
  %188 = add nuw i64 %.1713836, 2
  %gep841.2 = getelementptr double, ptr %invariant.gep840, i64 %188
  %189 = load double, ptr %gep841.2, align 8, !tbaa !12
  %gep843.2 = getelementptr double, ptr %invariant.gep842, i64 %188
  %190 = load double, ptr %gep843.2, align 8, !tbaa !12
  %191 = fsub double %190, %189
  store double %191, ptr %gep843.2, align 8, !tbaa !12
  %192 = add nuw i64 %.1713836, 3
  %gep841.3 = getelementptr double, ptr %invariant.gep840, i64 %192
  %193 = load double, ptr %gep841.3, align 8, !tbaa !12
  %gep843.3 = getelementptr double, ptr %invariant.gep842, i64 %192
  %194 = load double, ptr %gep843.3, align 8, !tbaa !12
  %195 = fsub double %194, %193
  store double %195, ptr %gep843.3, align 8, !tbaa !12
  %196 = add nuw i64 %.1713836, 4
  %exitcond994.not.3 = icmp eq i64 %192, %152
  br i1 %exitcond994.not.3, label %._crit_edge839, label %scalar.ph1046, !llvm.loop !33

._crit_edge839:                                   ; preds = %scalar.ph1046.prol.loopexit, %scalar.ph1046, %middle.block1045
  %197 = add nuw i64 %.3845, 1
  %exitcond995.not = icmp eq i64 %.3845, %151
  br i1 %exitcond995.not, label %.loopexit, label %.lr.ph838, !llvm.loop !34

198:                                              ; preds = %37
  br i1 %.not777, label %282, label %199

199:                                              ; preds = %198
  %200 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %200, ptr %16, align 8, !tbaa !5
  %201 = tail call i64 @iladlr_(ptr noundef nonnull %4, ptr noundef %6, ptr noundef %7, ptr noundef nonnull %8) #4
  %202 = tail call i64 @llvm.smax.i64(i64 %200, i64 %201)
  store i64 %202, ptr %18, align 8, !tbaa !5
  %203 = call i64 @iladlc_(ptr noundef nonnull %18, ptr noundef nonnull %5, ptr noundef %11, ptr noundef nonnull %12) #4
  store i64 %203, ptr %17, align 8, !tbaa !5
  %204 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %204, ptr %16, align 8, !tbaa !5
  %invariant.gep848 = getelementptr i8, ptr %28, i64 8
  %.not784850 = icmp slt i64 %204, 1
  br i1 %.not784850, label %._crit_edge854, label %.lr.ph853

.lr.ph853:                                        ; preds = %199, %.lr.ph853
  %.4851 = phi i64 [ %213, %.lr.ph853 ], [ 1, %199 ]
  %205 = load i64, ptr %18, align 8, !tbaa !5
  %206 = load i64, ptr %6, align 8, !tbaa !5
  %207 = sub nsw i64 %205, %206
  %208 = getelementptr double, ptr %25, i64 %207
  %209 = getelementptr double, ptr %208, i64 %.4851
  %210 = getelementptr double, ptr %209, i64 %23
  %211 = mul nsw i64 %.4851, %26
  %gep849 = getelementptr double, ptr %invariant.gep848, i64 %211
  %212 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %210, ptr noundef nonnull %12, ptr noundef %gep849, ptr noundef nonnull @c__1) #4
  %213 = add nuw nsw i64 %.4851, 1
  %214 = load i64, ptr %16, align 8, !tbaa !5
  %.not784.not = icmp slt i64 %.4851, %214
  br i1 %.not784.not, label %.lr.ph853, label %._crit_edge854.loopexit, !llvm.loop !35

._crit_edge854.loopexit:                          ; preds = %.lr.ph853
  %.pre = load i64, ptr %6, align 8, !tbaa !5
  br label %._crit_edge854

._crit_edge854:                                   ; preds = %._crit_edge854.loopexit, %199
  %215 = phi i64 [ %.pre, %._crit_edge854.loopexit ], [ %204, %199 ]
  %216 = load i64, ptr %18, align 8, !tbaa !5
  %217 = sub nsw i64 %216, %215
  %218 = getelementptr inbounds double, ptr %7, i64 %217
  %219 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %218, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %220 = load i64, ptr %18, align 8, !tbaa !5
  %221 = load i64, ptr %6, align 8, !tbaa !5
  %222 = icmp sgt i64 %220, %221
  br i1 %222, label %223, label %226

223:                                              ; preds = %._crit_edge854
  %224 = sub nsw i64 %220, %221
  store i64 %224, ptr %16, align 8, !tbaa !5
  %225 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #4
  br label %226

226:                                              ; preds = %223, %._crit_edge854
  %227 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %19, ptr noundef nonnull @.str.10, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #4
  %228 = load i64, ptr %18, align 8, !tbaa !5
  %229 = load i64, ptr %6, align 8, !tbaa !5
  %230 = icmp sgt i64 %228, %229
  br i1 %230, label %231, label %234

231:                                              ; preds = %226
  %232 = sub nsw i64 %228, %229
  store i64 %232, ptr %16, align 8, !tbaa !5
  %233 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b14, ptr noundef %11, ptr noundef nonnull %12) #4
  %.pre1008 = load i64, ptr %18, align 8, !tbaa !5
  %.pre1009 = load i64, ptr %6, align 8, !tbaa !5
  br label %234

234:                                              ; preds = %231, %226
  %235 = phi i64 [ %.pre1009, %231 ], [ %229, %226 ]
  %236 = phi i64 [ %.pre1008, %231 ], [ %228, %226 ]
  %237 = sub nsw i64 %236, %235
  %238 = getelementptr inbounds double, ptr %7, i64 %237
  %239 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %238, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %240 = load i64, ptr %6, align 8, !tbaa !5
  %.not785864 = icmp slt i64 %240, 1
  br i1 %.not785864, label %.loopexit, label %.lr.ph867

.lr.ph867:                                        ; preds = %234
  %241 = load i64, ptr %17, align 8, !tbaa !5
  %.not786857 = icmp slt i64 %241, 1
  %242 = load i64, ptr %18, align 8
  %243 = sub nsw i64 %242, %240
  %invariant.gep868 = getelementptr double, ptr %25, i64 %243
  br i1 %.not786857, label %.loopexit, label %.lr.ph860.preheader

.lr.ph860.preheader:                              ; preds = %.lr.ph867
  %244 = sub i64 %242, %240
  %245 = shl i64 %244, 3
  %scevgep1065 = getelementptr i8, ptr %11, i64 %245
  %246 = add i64 %242, %241
  %247 = shl i64 %246, 3
  %248 = getelementptr i8, ptr %11, i64 %247
  %scevgep1066 = getelementptr i8, ptr %248, i64 -8
  %249 = add nuw i64 %240, 2305843009213693951
  %250 = mul i64 %26, %249
  %251 = add i64 %250, %241
  %252 = shl i64 %251, 3
  %scevgep1067 = getelementptr i8, ptr %13, i64 %252
  %min.iters.check1074 = icmp ugt i64 %241, 5
  %ident.check1063.not = icmp eq i64 %23, 1
  %or.cond1230 = select i1 %min.iters.check1074, i1 %ident.check1063.not, i1 false
  %bound01068 = icmp ult ptr %scevgep1065, %scevgep1067
  %bound11069 = icmp ugt ptr %scevgep1066, %13
  %found.conflict1070 = and i1 %bound01068, %bound11069
  %.mask1221 = and i64 %26, 1152921504606846976
  %stride.check1071 = icmp ne i64 %.mask1221, 0
  %253 = or i1 %found.conflict1070, %stride.check1071
  %n.vec1077 = and i64 %241, 9223372036854775804
  %ind.end1078 = or disjoint i64 %n.vec1077, 1
  %cmp.n1088 = icmp eq i64 %241, %n.vec1077
  %xtraiter1242 = and i64 %241, 1
  %lcmp.mod1243.not = icmp eq i64 %xtraiter1242, 0
  br label %.lr.ph860

.lr.ph860:                                        ; preds = %.lr.ph860.preheader, %._crit_edge861
  %.5865 = phi i64 [ %281, %._crit_edge861 ], [ 1, %.lr.ph860.preheader ]
  %254 = mul nsw i64 %.5865, %26
  %invariant.gep862 = getelementptr double, ptr %28, i64 %254
  %gep869 = getelementptr double, ptr %invariant.gep868, i64 %.5865
  %or.cond1230.not = xor i1 %or.cond1230, true
  %brmerge1264 = select i1 %or.cond1230.not, i1 true, i1 %253
  br i1 %brmerge1264, label %scalar.ph1073.preheader, label %vector.body1080

vector.body1080:                                  ; preds = %.lr.ph860, %vector.body1080
  %index1081 = phi i64 [ %index.next1087, %vector.body1080 ], [ 0, %.lr.ph860 ]
  %offset.idx1082 = or disjoint i64 %index1081, 1
  %255 = getelementptr double, ptr %invariant.gep862, i64 %offset.idx1082
  %256 = getelementptr i8, ptr %255, i64 16
  %wide.load1083 = load <2 x double>, ptr %255, align 8, !tbaa !12, !alias.scope !36
  %wide.load1084 = load <2 x double>, ptr %256, align 8, !tbaa !12, !alias.scope !36
  %257 = getelementptr double, ptr %gep869, i64 %offset.idx1082
  %258 = getelementptr i8, ptr %257, i64 16
  %wide.load1085 = load <2 x double>, ptr %257, align 8, !tbaa !12, !alias.scope !39, !noalias !36
  %wide.load1086 = load <2 x double>, ptr %258, align 8, !tbaa !12, !alias.scope !39, !noalias !36
  %259 = fsub <2 x double> %wide.load1085, %wide.load1083
  %260 = fsub <2 x double> %wide.load1086, %wide.load1084
  store <2 x double> %259, ptr %257, align 8, !tbaa !12, !alias.scope !39, !noalias !36
  store <2 x double> %260, ptr %258, align 8, !tbaa !12, !alias.scope !39, !noalias !36
  %index.next1087 = add nuw i64 %index1081, 4
  %261 = icmp eq i64 %index.next1087, %n.vec1077
  br i1 %261, label %middle.block1072, label %vector.body1080, !llvm.loop !41

middle.block1072:                                 ; preds = %vector.body1080
  br i1 %cmp.n1088, label %._crit_edge861, label %scalar.ph1073.preheader

scalar.ph1073.preheader:                          ; preds = %.lr.ph860, %middle.block1072
  %.2714858.ph = phi i64 [ 1, %.lr.ph860 ], [ %ind.end1078, %middle.block1072 ]
  br i1 %lcmp.mod1243.not, label %scalar.ph1073.prol.loopexit, label %scalar.ph1073.prol

scalar.ph1073.prol:                               ; preds = %scalar.ph1073.preheader
  %gep863.prol = getelementptr double, ptr %invariant.gep862, i64 %.2714858.ph
  %262 = load double, ptr %gep863.prol, align 8, !tbaa !12
  %263 = mul nsw i64 %.2714858.ph, %23
  %264 = getelementptr double, ptr %gep869, i64 %263
  %265 = load double, ptr %264, align 8, !tbaa !12
  %266 = fsub double %265, %262
  store double %266, ptr %264, align 8, !tbaa !12
  %267 = add nuw i64 %.2714858.ph, 1
  br label %scalar.ph1073.prol.loopexit

scalar.ph1073.prol.loopexit:                      ; preds = %scalar.ph1073.prol, %scalar.ph1073.preheader
  %.2714858.unr = phi i64 [ %.2714858.ph, %scalar.ph1073.preheader ], [ %267, %scalar.ph1073.prol ]
  %268 = icmp eq i64 %241, %.2714858.ph
  br i1 %268, label %._crit_edge861, label %scalar.ph1073

scalar.ph1073:                                    ; preds = %scalar.ph1073.prol.loopexit, %scalar.ph1073
  %.2714858 = phi i64 [ %280, %scalar.ph1073 ], [ %.2714858.unr, %scalar.ph1073.prol.loopexit ]
  %gep863 = getelementptr double, ptr %invariant.gep862, i64 %.2714858
  %269 = load double, ptr %gep863, align 8, !tbaa !12
  %270 = mul nsw i64 %.2714858, %23
  %271 = getelementptr double, ptr %gep869, i64 %270
  %272 = load double, ptr %271, align 8, !tbaa !12
  %273 = fsub double %272, %269
  store double %273, ptr %271, align 8, !tbaa !12
  %274 = add nuw i64 %.2714858, 1
  %gep863.1 = getelementptr double, ptr %invariant.gep862, i64 %274
  %275 = load double, ptr %gep863.1, align 8, !tbaa !12
  %276 = mul nsw i64 %274, %23
  %277 = getelementptr double, ptr %gep869, i64 %276
  %278 = load double, ptr %277, align 8, !tbaa !12
  %279 = fsub double %278, %275
  store double %279, ptr %277, align 8, !tbaa !12
  %280 = add nuw i64 %.2714858, 2
  %exitcond996.not.1 = icmp eq i64 %274, %241
  br i1 %exitcond996.not.1, label %._crit_edge861, label %scalar.ph1073, !llvm.loop !42

._crit_edge861:                                   ; preds = %scalar.ph1073.prol.loopexit, %scalar.ph1073, %middle.block1072
  %281 = add nuw i64 %.5865, 1
  %exitcond997.not = icmp eq i64 %.5865, %240
  br i1 %exitcond997.not, label %.loopexit, label %.lr.ph860, !llvm.loop !43

282:                                              ; preds = %198
  %283 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.11) #4
  %.not778 = icmp eq i64 %283, 0
  br i1 %.not778, label %.loopexit, label %284

284:                                              ; preds = %282
  %285 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %285, ptr %16, align 8, !tbaa !5
  %286 = tail call i64 @iladlr_(ptr noundef nonnull %5, ptr noundef %6, ptr noundef %7, ptr noundef nonnull %8) #4
  %287 = tail call i64 @llvm.smax.i64(i64 %285, i64 %286)
  store i64 %287, ptr %18, align 8, !tbaa !5
  %288 = call i64 @iladlr_(ptr noundef nonnull %4, ptr noundef nonnull %18, ptr noundef %11, ptr noundef nonnull %12) #4
  store i64 %288, ptr %17, align 8, !tbaa !5
  %289 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %289, ptr %16, align 8, !tbaa !5
  %invariant.gep870 = getelementptr i8, ptr %25, i64 8
  %invariant.gep872 = getelementptr i8, ptr %28, i64 8
  %.not780874 = icmp slt i64 %289, 1
  br i1 %.not780874, label %._crit_edge878, label %.lr.ph877

.lr.ph877:                                        ; preds = %284, %.lr.ph877
  %.6875 = phi i64 [ %297, %.lr.ph877 ], [ 1, %284 ]
  %290 = load i64, ptr %5, align 8, !tbaa !5
  %291 = load i64, ptr %6, align 8, !tbaa !5
  %292 = add i64 %290, %.6875
  %293 = sub i64 %292, %291
  %294 = mul nsw i64 %293, %23
  %gep871 = getelementptr double, ptr %invariant.gep870, i64 %294
  %295 = mul nsw i64 %.6875, %26
  %gep873 = getelementptr double, ptr %invariant.gep872, i64 %295
  %296 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %gep871, ptr noundef nonnull @c__1, ptr noundef %gep873, ptr noundef nonnull @c__1) #4
  %297 = add nuw nsw i64 %.6875, 1
  %298 = load i64, ptr %16, align 8, !tbaa !5
  %.not780.not = icmp slt i64 %.6875, %298
  br i1 %.not780.not, label %.lr.ph877, label %._crit_edge878.loopexit, !llvm.loop !44

._crit_edge878.loopexit:                          ; preds = %.lr.ph877
  %.pre1010 = load i64, ptr %6, align 8, !tbaa !5
  br label %._crit_edge878

._crit_edge878:                                   ; preds = %._crit_edge878.loopexit, %284
  %299 = phi i64 [ %.pre1010, %._crit_edge878.loopexit ], [ %289, %284 ]
  %300 = load i64, ptr %18, align 8, !tbaa !5
  %301 = sub nsw i64 %300, %299
  %302 = getelementptr inbounds double, ptr %7, i64 %301
  %303 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %302, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %304 = load i64, ptr %18, align 8, !tbaa !5
  %305 = load i64, ptr %6, align 8, !tbaa !5
  %306 = icmp sgt i64 %304, %305
  br i1 %306, label %307, label %310

307:                                              ; preds = %._crit_edge878
  %308 = sub nsw i64 %304, %305
  store i64 %308, ptr %16, align 8, !tbaa !5
  %309 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #4
  br label %310

310:                                              ; preds = %307, %._crit_edge878
  %311 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef %1, ptr noundef nonnull @.str.10, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #4
  %312 = load i64, ptr %18, align 8, !tbaa !5
  %313 = load i64, ptr %6, align 8, !tbaa !5
  %314 = icmp sgt i64 %312, %313
  br i1 %314, label %315, label %318

315:                                              ; preds = %310
  %316 = sub nsw i64 %312, %313
  store i64 %316, ptr %16, align 8, !tbaa !5
  %317 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %11, ptr noundef nonnull %12) #4
  %.pre1011 = load i64, ptr %18, align 8, !tbaa !5
  %.pre1012 = load i64, ptr %6, align 8, !tbaa !5
  br label %318

318:                                              ; preds = %315, %310
  %319 = phi i64 [ %.pre1012, %315 ], [ %313, %310 ]
  %320 = phi i64 [ %.pre1011, %315 ], [ %312, %310 ]
  %321 = sub nsw i64 %320, %319
  %322 = getelementptr inbounds double, ptr %7, i64 %321
  %323 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %322, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %324 = load i64, ptr %6, align 8, !tbaa !5
  %.not781888 = icmp slt i64 %324, 1
  br i1 %.not781888, label %.loopexit, label %.lr.ph891

.lr.ph891:                                        ; preds = %318
  %325 = load i64, ptr %17, align 8, !tbaa !5
  %.not782879 = icmp slt i64 %325, 1
  %326 = load i64, ptr %18, align 8
  br i1 %.not782879, label %.loopexit, label %.lr.ph882.preheader

.lr.ph882.preheader:                              ; preds = %.lr.ph891
  %327 = shl i64 %326, 3
  %328 = sub i64 %326, %324
  %329 = shl i64 %328, 3
  %330 = mul i64 %23, %329
  %scevgep1090 = getelementptr i8, ptr %11, i64 %330
  %331 = add i64 %327, -8
  %332 = mul i64 %23, %331
  %333 = shl i64 %325, 3
  %334 = getelementptr i8, ptr %11, i64 %332
  %scevgep1091 = getelementptr i8, ptr %334, i64 %333
  %335 = add nuw i64 %324, 2305843009213693951
  %336 = mul i64 %26, %335
  %337 = add i64 %336, %325
  %338 = shl i64 %337, 3
  %scevgep1092 = getelementptr i8, ptr %13, i64 %338
  %339 = add nuw i64 %325, 1
  %min.iters.check1100 = icmp ult i64 %325, 6
  %bound01093 = icmp ult ptr %scevgep1090, %scevgep1092
  %bound11094 = icmp ugt ptr %scevgep1091, %13
  %found.conflict1095 = and i1 %bound01093, %bound11094
  %340 = or i64 %23, %26
  %341 = and i64 %340, 1152921504606846976
  %342 = icmp ne i64 %341, 0
  %343 = or i1 %found.conflict1095, %342
  %n.vec1103 = and i64 %325, 9223372036854775804
  %ind.end1104 = or disjoint i64 %n.vec1103, 1
  %cmp.n1114 = icmp eq i64 %325, %n.vec1103
  br label %.lr.ph882

.lr.ph882:                                        ; preds = %.lr.ph882.preheader, %._crit_edge883
  %.7889 = phi i64 [ %378, %._crit_edge883 ], [ 1, %.lr.ph882.preheader ]
  %344 = mul nsw i64 %.7889, %26
  %invariant.gep884 = getelementptr double, ptr %28, i64 %344
  %345 = sub nsw i64 %.7889, %324
  %346 = add i64 %345, %326
  %347 = mul nsw i64 %346, %23
  %invariant.gep886 = getelementptr double, ptr %25, i64 %347
  %brmerge1265 = select i1 %min.iters.check1100, i1 true, i1 %343
  br i1 %brmerge1265, label %scalar.ph1099.preheader, label %vector.body1106

vector.body1106:                                  ; preds = %.lr.ph882, %vector.body1106
  %index1107 = phi i64 [ %index.next1113, %vector.body1106 ], [ 0, %.lr.ph882 ]
  %offset.idx1108 = or disjoint i64 %index1107, 1
  %348 = getelementptr double, ptr %invariant.gep884, i64 %offset.idx1108
  %349 = getelementptr i8, ptr %348, i64 16
  %wide.load1109 = load <2 x double>, ptr %348, align 8, !tbaa !12, !alias.scope !45
  %wide.load1110 = load <2 x double>, ptr %349, align 8, !tbaa !12, !alias.scope !45
  %350 = getelementptr double, ptr %invariant.gep886, i64 %offset.idx1108
  %351 = getelementptr i8, ptr %350, i64 16
  %wide.load1111 = load <2 x double>, ptr %350, align 8, !tbaa !12, !alias.scope !48, !noalias !45
  %wide.load1112 = load <2 x double>, ptr %351, align 8, !tbaa !12, !alias.scope !48, !noalias !45
  %352 = fsub <2 x double> %wide.load1111, %wide.load1109
  %353 = fsub <2 x double> %wide.load1112, %wide.load1110
  store <2 x double> %352, ptr %350, align 8, !tbaa !12, !alias.scope !48, !noalias !45
  store <2 x double> %353, ptr %351, align 8, !tbaa !12, !alias.scope !48, !noalias !45
  %index.next1113 = add nuw i64 %index1107, 4
  %354 = icmp eq i64 %index.next1113, %n.vec1103
  br i1 %354, label %middle.block1098, label %vector.body1106, !llvm.loop !50

middle.block1098:                                 ; preds = %vector.body1106
  br i1 %cmp.n1114, label %._crit_edge883, label %scalar.ph1099.preheader

scalar.ph1099.preheader:                          ; preds = %.lr.ph882, %middle.block1098
  %.3715880.ph = phi i64 [ 1, %.lr.ph882 ], [ %ind.end1104, %middle.block1098 ]
  %355 = sub i64 %339, %.3715880.ph
  %356 = sub i64 %325, %.3715880.ph
  %xtraiter1245 = and i64 %355, 3
  %lcmp.mod1246.not = icmp eq i64 %xtraiter1245, 0
  br i1 %lcmp.mod1246.not, label %scalar.ph1099.prol.loopexit, label %scalar.ph1099.prol

scalar.ph1099.prol:                               ; preds = %scalar.ph1099.preheader, %scalar.ph1099.prol
  %.3715880.prol = phi i64 [ %360, %scalar.ph1099.prol ], [ %.3715880.ph, %scalar.ph1099.preheader ]
  %prol.iter1247 = phi i64 [ %prol.iter1247.next, %scalar.ph1099.prol ], [ 0, %scalar.ph1099.preheader ]
  %gep885.prol = getelementptr double, ptr %invariant.gep884, i64 %.3715880.prol
  %357 = load double, ptr %gep885.prol, align 8, !tbaa !12
  %gep887.prol = getelementptr double, ptr %invariant.gep886, i64 %.3715880.prol
  %358 = load double, ptr %gep887.prol, align 8, !tbaa !12
  %359 = fsub double %358, %357
  store double %359, ptr %gep887.prol, align 8, !tbaa !12
  %360 = add nuw i64 %.3715880.prol, 1
  %prol.iter1247.next = add i64 %prol.iter1247, 1
  %prol.iter1247.cmp.not = icmp eq i64 %prol.iter1247.next, %xtraiter1245
  br i1 %prol.iter1247.cmp.not, label %scalar.ph1099.prol.loopexit, label %scalar.ph1099.prol, !llvm.loop !51

scalar.ph1099.prol.loopexit:                      ; preds = %scalar.ph1099.prol, %scalar.ph1099.preheader
  %.3715880.unr = phi i64 [ %.3715880.ph, %scalar.ph1099.preheader ], [ %360, %scalar.ph1099.prol ]
  %361 = icmp ult i64 %356, 3
  br i1 %361, label %._crit_edge883, label %scalar.ph1099

scalar.ph1099:                                    ; preds = %scalar.ph1099.prol.loopexit, %scalar.ph1099
  %.3715880 = phi i64 [ %377, %scalar.ph1099 ], [ %.3715880.unr, %scalar.ph1099.prol.loopexit ]
  %gep885 = getelementptr double, ptr %invariant.gep884, i64 %.3715880
  %362 = load double, ptr %gep885, align 8, !tbaa !12
  %gep887 = getelementptr double, ptr %invariant.gep886, i64 %.3715880
  %363 = load double, ptr %gep887, align 8, !tbaa !12
  %364 = fsub double %363, %362
  store double %364, ptr %gep887, align 8, !tbaa !12
  %365 = add nuw i64 %.3715880, 1
  %gep885.1 = getelementptr double, ptr %invariant.gep884, i64 %365
  %366 = load double, ptr %gep885.1, align 8, !tbaa !12
  %gep887.1 = getelementptr double, ptr %invariant.gep886, i64 %365
  %367 = load double, ptr %gep887.1, align 8, !tbaa !12
  %368 = fsub double %367, %366
  store double %368, ptr %gep887.1, align 8, !tbaa !12
  %369 = add nuw i64 %.3715880, 2
  %gep885.2 = getelementptr double, ptr %invariant.gep884, i64 %369
  %370 = load double, ptr %gep885.2, align 8, !tbaa !12
  %gep887.2 = getelementptr double, ptr %invariant.gep886, i64 %369
  %371 = load double, ptr %gep887.2, align 8, !tbaa !12
  %372 = fsub double %371, %370
  store double %372, ptr %gep887.2, align 8, !tbaa !12
  %373 = add nuw i64 %.3715880, 3
  %gep885.3 = getelementptr double, ptr %invariant.gep884, i64 %373
  %374 = load double, ptr %gep885.3, align 8, !tbaa !12
  %gep887.3 = getelementptr double, ptr %invariant.gep886, i64 %373
  %375 = load double, ptr %gep887.3, align 8, !tbaa !12
  %376 = fsub double %375, %374
  store double %376, ptr %gep887.3, align 8, !tbaa !12
  %377 = add nuw i64 %.3715880, 4
  %exitcond998.not.3 = icmp eq i64 %373, %325
  br i1 %exitcond998.not.3, label %._crit_edge883, label %scalar.ph1099, !llvm.loop !52

._crit_edge883:                                   ; preds = %scalar.ph1099.prol.loopexit, %scalar.ph1099, %middle.block1098
  %378 = add nuw i64 %.7889, 1
  %exitcond999.not = icmp eq i64 %.7889, %324
  br i1 %exitcond999.not, label %.loopexit, label %.lr.ph882, !llvm.loop !53

379:                                              ; preds = %34
  %380 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.11) #4
  %.not754 = icmp eq i64 %380, 0
  br i1 %.not754, label %.loopexit, label %381

381:                                              ; preds = %379
  %382 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #4
  %.not755 = icmp eq i64 %382, 0
  %383 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %.not756 = icmp eq i64 %383, 0
  br i1 %.not755, label %552, label %384

384:                                              ; preds = %381
  br i1 %.not756, label %461, label %385

385:                                              ; preds = %384
  %386 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %386, ptr %16, align 8, !tbaa !5
  %387 = tail call i64 @iladlc_(ptr noundef %6, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8) #4
  %388 = tail call i64 @llvm.smax.i64(i64 %386, i64 %387)
  store i64 %388, ptr %18, align 8, !tbaa !5
  %389 = call i64 @iladlc_(ptr noundef nonnull %18, ptr noundef nonnull %5, ptr noundef %11, ptr noundef nonnull %12) #4
  store i64 %389, ptr %17, align 8, !tbaa !5
  %390 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %390, ptr %16, align 8, !tbaa !5
  %invariant.gep892 = getelementptr i8, ptr %11, i64 -8
  %invariant.gep894 = getelementptr i8, ptr %28, i64 8
  %.not773896 = icmp slt i64 %390, 1
  br i1 %.not773896, label %._crit_edge900, label %.lr.ph899

.lr.ph899:                                        ; preds = %385, %.lr.ph899
  %.8897 = phi i64 [ %393, %.lr.ph899 ], [ 1, %385 ]
  %gep893 = getelementptr double, ptr %invariant.gep892, i64 %.8897
  %391 = mul nsw i64 %.8897, %26
  %gep895 = getelementptr double, ptr %invariant.gep894, i64 %391
  %392 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %gep893, ptr noundef nonnull %12, ptr noundef %gep895, ptr noundef nonnull @c__1) #4
  %393 = add nuw nsw i64 %.8897, 1
  %394 = load i64, ptr %16, align 8, !tbaa !5
  %.not773.not = icmp slt i64 %.8897, %394
  br i1 %.not773.not, label %.lr.ph899, label %._crit_edge900, !llvm.loop !54

._crit_edge900:                                   ; preds = %.lr.ph899, %385
  %395 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %396 = load i64, ptr %18, align 8, !tbaa !5
  %397 = load i64, ptr %6, align 8, !tbaa !5
  %398 = icmp sgt i64 %396, %397
  br i1 %398, label %399, label %407

399:                                              ; preds = %._crit_edge900
  %400 = sub nsw i64 %396, %397
  store i64 %400, ptr %16, align 8, !tbaa !5
  %401 = add nsw i64 %397, 1
  %402 = getelementptr inbounds double, ptr %11, i64 %397
  %403 = mul nsw i64 %401, %20
  %404 = getelementptr double, ptr %22, i64 %403
  %405 = getelementptr i8, ptr %404, i64 8
  %406 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.8, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %402, ptr noundef nonnull %12, ptr noundef %405, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #4
  br label %407

407:                                              ; preds = %399, %._crit_edge900
  %408 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull %19, ptr noundef nonnull @.str.10, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #4
  %409 = load i64, ptr %18, align 8, !tbaa !5
  %410 = load i64, ptr %6, align 8, !tbaa !5
  %411 = icmp sgt i64 %409, %410
  br i1 %411, label %412, label %420

412:                                              ; preds = %407
  %413 = sub nsw i64 %409, %410
  store i64 %413, ptr %16, align 8, !tbaa !5
  %414 = add nsw i64 %410, 1
  %415 = mul nsw i64 %414, %20
  %416 = getelementptr double, ptr %22, i64 %415
  %417 = getelementptr i8, ptr %416, i64 8
  %418 = getelementptr inbounds double, ptr %11, i64 %410
  %419 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %417, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b14, ptr noundef %418, ptr noundef nonnull %12) #4
  br label %420

420:                                              ; preds = %412, %407
  %421 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %422 = load i64, ptr %6, align 8, !tbaa !5
  %.not774908 = icmp slt i64 %422, 1
  br i1 %.not774908, label %.loopexit, label %.lr.ph911

.lr.ph911:                                        ; preds = %420
  %423 = load i64, ptr %17, align 8, !tbaa !5
  %.not775901 = icmp slt i64 %423, 1
  br i1 %.not775901, label %.loopexit, label %.lr.ph904.preheader

.lr.ph904.preheader:                              ; preds = %.lr.ph911
  %424 = add nuw i64 %422, %423
  %425 = shl i64 %424, 3
  %426 = getelementptr i8, ptr %11, i64 %425
  %scevgep1118 = getelementptr i8, ptr %426, i64 -8
  %427 = add nuw i64 %422, 2305843009213693951
  %428 = mul i64 %26, %427
  %429 = add i64 %428, %423
  %430 = shl i64 %429, 3
  %scevgep1119 = getelementptr i8, ptr %13, i64 %430
  %min.iters.check1126 = icmp ugt i64 %423, 5
  %ident.check1116.not = icmp eq i64 %23, 1
  %or.cond1231 = select i1 %min.iters.check1126, i1 %ident.check1116.not, i1 false
  %bound01120 = icmp ugt ptr %scevgep1119, %11
  %bound11121 = icmp ugt ptr %scevgep1118, %13
  %found.conflict1122 = and i1 %bound01120, %bound11121
  %.mask1224 = and i64 %26, 1152921504606846976
  %stride.check1123 = icmp ne i64 %.mask1224, 0
  %431 = or i1 %found.conflict1122, %stride.check1123
  %n.vec1129 = and i64 %423, 9223372036854775804
  %ind.end1130 = or disjoint i64 %n.vec1129, 1
  %cmp.n1140 = icmp eq i64 %423, %n.vec1129
  %xtraiter1248 = and i64 %423, 1
  %lcmp.mod1249.not = icmp eq i64 %xtraiter1248, 0
  br label %.lr.ph904

.lr.ph904:                                        ; preds = %.lr.ph904.preheader, %._crit_edge905
  %.9909 = phi i64 [ %460, %._crit_edge905 ], [ 1, %.lr.ph904.preheader ]
  %432 = mul nsw i64 %.9909, %26
  %invariant.gep906 = getelementptr double, ptr %28, i64 %432
  %433 = getelementptr double, ptr %25, i64 %.9909
  %or.cond1231.not = xor i1 %or.cond1231, true
  %brmerge1266 = select i1 %or.cond1231.not, i1 true, i1 %431
  br i1 %brmerge1266, label %scalar.ph1125.preheader, label %vector.body1132

vector.body1132:                                  ; preds = %.lr.ph904, %vector.body1132
  %index1133 = phi i64 [ %index.next1139, %vector.body1132 ], [ 0, %.lr.ph904 ]
  %offset.idx1134 = or disjoint i64 %index1133, 1
  %434 = getelementptr double, ptr %invariant.gep906, i64 %offset.idx1134
  %435 = getelementptr i8, ptr %434, i64 16
  %wide.load1135 = load <2 x double>, ptr %434, align 8, !tbaa !12, !alias.scope !55
  %wide.load1136 = load <2 x double>, ptr %435, align 8, !tbaa !12, !alias.scope !55
  %436 = getelementptr double, ptr %433, i64 %offset.idx1134
  %437 = getelementptr i8, ptr %436, i64 16
  %wide.load1137 = load <2 x double>, ptr %436, align 8, !tbaa !12, !alias.scope !58, !noalias !55
  %wide.load1138 = load <2 x double>, ptr %437, align 8, !tbaa !12, !alias.scope !58, !noalias !55
  %438 = fsub <2 x double> %wide.load1137, %wide.load1135
  %439 = fsub <2 x double> %wide.load1138, %wide.load1136
  store <2 x double> %438, ptr %436, align 8, !tbaa !12, !alias.scope !58, !noalias !55
  store <2 x double> %439, ptr %437, align 8, !tbaa !12, !alias.scope !58, !noalias !55
  %index.next1139 = add nuw i64 %index1133, 4
  %440 = icmp eq i64 %index.next1139, %n.vec1129
  br i1 %440, label %middle.block1124, label %vector.body1132, !llvm.loop !60

middle.block1124:                                 ; preds = %vector.body1132
  br i1 %cmp.n1140, label %._crit_edge905, label %scalar.ph1125.preheader

scalar.ph1125.preheader:                          ; preds = %.lr.ph904, %middle.block1124
  %.4716902.ph = phi i64 [ 1, %.lr.ph904 ], [ %ind.end1130, %middle.block1124 ]
  br i1 %lcmp.mod1249.not, label %scalar.ph1125.prol.loopexit, label %scalar.ph1125.prol

scalar.ph1125.prol:                               ; preds = %scalar.ph1125.preheader
  %gep907.prol = getelementptr double, ptr %invariant.gep906, i64 %.4716902.ph
  %441 = load double, ptr %gep907.prol, align 8, !tbaa !12
  %442 = mul nsw i64 %.4716902.ph, %23
  %443 = getelementptr double, ptr %433, i64 %442
  %444 = load double, ptr %443, align 8, !tbaa !12
  %445 = fsub double %444, %441
  store double %445, ptr %443, align 8, !tbaa !12
  %446 = add nuw i64 %.4716902.ph, 1
  br label %scalar.ph1125.prol.loopexit

scalar.ph1125.prol.loopexit:                      ; preds = %scalar.ph1125.prol, %scalar.ph1125.preheader
  %.4716902.unr = phi i64 [ %.4716902.ph, %scalar.ph1125.preheader ], [ %446, %scalar.ph1125.prol ]
  %447 = icmp eq i64 %423, %.4716902.ph
  br i1 %447, label %._crit_edge905, label %scalar.ph1125

scalar.ph1125:                                    ; preds = %scalar.ph1125.prol.loopexit, %scalar.ph1125
  %.4716902 = phi i64 [ %459, %scalar.ph1125 ], [ %.4716902.unr, %scalar.ph1125.prol.loopexit ]
  %gep907 = getelementptr double, ptr %invariant.gep906, i64 %.4716902
  %448 = load double, ptr %gep907, align 8, !tbaa !12
  %449 = mul nsw i64 %.4716902, %23
  %450 = getelementptr double, ptr %433, i64 %449
  %451 = load double, ptr %450, align 8, !tbaa !12
  %452 = fsub double %451, %448
  store double %452, ptr %450, align 8, !tbaa !12
  %453 = add nuw i64 %.4716902, 1
  %gep907.1 = getelementptr double, ptr %invariant.gep906, i64 %453
  %454 = load double, ptr %gep907.1, align 8, !tbaa !12
  %455 = mul nsw i64 %453, %23
  %456 = getelementptr double, ptr %433, i64 %455
  %457 = load double, ptr %456, align 8, !tbaa !12
  %458 = fsub double %457, %454
  store double %458, ptr %456, align 8, !tbaa !12
  %459 = add nuw i64 %.4716902, 2
  %exitcond1000.not.1 = icmp eq i64 %453, %423
  br i1 %exitcond1000.not.1, label %._crit_edge905, label %scalar.ph1125, !llvm.loop !61

._crit_edge905:                                   ; preds = %scalar.ph1125.prol.loopexit, %scalar.ph1125, %middle.block1124
  %460 = add nuw i64 %.9909, 1
  %exitcond1001.not = icmp eq i64 %.9909, %422
  br i1 %exitcond1001.not, label %.loopexit, label %.lr.ph904, !llvm.loop !62

461:                                              ; preds = %384
  %462 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.11) #4
  %.not767 = icmp eq i64 %462, 0
  br i1 %.not767, label %.loopexit, label %463

463:                                              ; preds = %461
  %464 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %464, ptr %16, align 8, !tbaa !5
  %465 = tail call i64 @iladlc_(ptr noundef %6, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8) #4
  %466 = tail call i64 @llvm.smax.i64(i64 %464, i64 %465)
  store i64 %466, ptr %18, align 8, !tbaa !5
  %467 = call i64 @iladlr_(ptr noundef nonnull %4, ptr noundef nonnull %18, ptr noundef %11, ptr noundef nonnull %12) #4
  store i64 %467, ptr %17, align 8, !tbaa !5
  %468 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %468, ptr %16, align 8, !tbaa !5
  %invariant.gep912 = getelementptr i8, ptr %25, i64 8
  %invariant.gep914 = getelementptr i8, ptr %28, i64 8
  %.not769916 = icmp slt i64 %468, 1
  br i1 %.not769916, label %._crit_edge920, label %.lr.ph919

.lr.ph919:                                        ; preds = %463, %.lr.ph919
  %.10917 = phi i64 [ %472, %.lr.ph919 ], [ 1, %463 ]
  %469 = mul nsw i64 %.10917, %23
  %gep913 = getelementptr double, ptr %invariant.gep912, i64 %469
  %470 = mul nsw i64 %.10917, %26
  %gep915 = getelementptr double, ptr %invariant.gep914, i64 %470
  %471 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %gep913, ptr noundef nonnull @c__1, ptr noundef %gep915, ptr noundef nonnull @c__1) #4
  %472 = add nuw nsw i64 %.10917, 1
  %473 = load i64, ptr %16, align 8, !tbaa !5
  %.not769.not = icmp slt i64 %.10917, %473
  br i1 %.not769.not, label %.lr.ph919, label %._crit_edge920, !llvm.loop !63

._crit_edge920:                                   ; preds = %.lr.ph919, %463
  %474 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %475 = load i64, ptr %18, align 8, !tbaa !5
  %476 = load i64, ptr %6, align 8, !tbaa !5
  %477 = icmp sgt i64 %475, %476
  br i1 %477, label %478, label %488

478:                                              ; preds = %._crit_edge920
  %479 = sub nsw i64 %475, %476
  store i64 %479, ptr %16, align 8, !tbaa !5
  %480 = add nsw i64 %476, 1
  %481 = mul nsw i64 %480, %23
  %482 = getelementptr double, ptr %25, i64 %481
  %483 = getelementptr i8, ptr %482, i64 8
  %484 = mul nsw i64 %480, %20
  %485 = getelementptr double, ptr %22, i64 %484
  %486 = getelementptr i8, ptr %485, i64 8
  %487 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %483, ptr noundef nonnull %12, ptr noundef %486, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #4
  br label %488

488:                                              ; preds = %478, %._crit_edge920
  %489 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef %1, ptr noundef nonnull @.str.10, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #4
  %490 = load i64, ptr %18, align 8, !tbaa !5
  %491 = load i64, ptr %6, align 8, !tbaa !5
  %492 = icmp sgt i64 %490, %491
  br i1 %492, label %493, label %503

493:                                              ; preds = %488
  %494 = sub nsw i64 %490, %491
  store i64 %494, ptr %16, align 8, !tbaa !5
  %495 = add nsw i64 %491, 1
  %496 = mul nsw i64 %495, %20
  %497 = getelementptr double, ptr %22, i64 %496
  %498 = getelementptr i8, ptr %497, i64 8
  %499 = mul nsw i64 %495, %23
  %500 = getelementptr double, ptr %25, i64 %499
  %501 = getelementptr i8, ptr %500, i64 8
  %502 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %498, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %501, ptr noundef nonnull %12) #4
  br label %503

503:                                              ; preds = %493, %488
  %504 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %505 = load i64, ptr %6, align 8, !tbaa !5
  %.not770930 = icmp slt i64 %505, 1
  br i1 %.not770930, label %.loopexit, label %.lr.ph933

.lr.ph933:                                        ; preds = %503
  %506 = load i64, ptr %17, align 8, !tbaa !5
  %.not771921 = icmp slt i64 %506, 1
  br i1 %.not771921, label %.loopexit, label %.lr.ph924.preheader

.lr.ph924.preheader:                              ; preds = %.lr.ph933
  %507 = add nsw i64 %505, -1
  %508 = mul i64 %23, %507
  %509 = add i64 %508, %506
  %510 = shl i64 %509, 3
  %scevgep1142 = getelementptr i8, ptr %11, i64 %510
  %511 = mul i64 %26, %507
  %512 = add i64 %511, %506
  %513 = shl i64 %512, 3
  %scevgep1143 = getelementptr i8, ptr %13, i64 %513
  %514 = add nuw i64 %506, 1
  %min.iters.check1151 = icmp ult i64 %506, 6
  %bound01144 = icmp ugt ptr %scevgep1143, %11
  %bound11145 = icmp ugt ptr %scevgep1142, %13
  %found.conflict1146 = and i1 %bound01144, %bound11145
  %515 = or i64 %23, %26
  %516 = and i64 %515, 1152921504606846976
  %517 = icmp ne i64 %516, 0
  %518 = or i1 %found.conflict1146, %517
  %n.vec1154 = and i64 %506, 9223372036854775804
  %ind.end1155 = or disjoint i64 %n.vec1154, 1
  %cmp.n1165 = icmp eq i64 %506, %n.vec1154
  br label %.lr.ph924

.lr.ph924:                                        ; preds = %.lr.ph924.preheader, %._crit_edge925
  %.11931 = phi i64 [ %551, %._crit_edge925 ], [ 1, %.lr.ph924.preheader ]
  %519 = mul nsw i64 %.11931, %26
  %invariant.gep926 = getelementptr double, ptr %28, i64 %519
  %520 = mul nsw i64 %.11931, %23
  %invariant.gep928 = getelementptr double, ptr %25, i64 %520
  %brmerge1267 = select i1 %min.iters.check1151, i1 true, i1 %518
  br i1 %brmerge1267, label %scalar.ph1150.preheader, label %vector.body1157

vector.body1157:                                  ; preds = %.lr.ph924, %vector.body1157
  %index1158 = phi i64 [ %index.next1164, %vector.body1157 ], [ 0, %.lr.ph924 ]
  %offset.idx1159 = or disjoint i64 %index1158, 1
  %521 = getelementptr double, ptr %invariant.gep926, i64 %offset.idx1159
  %522 = getelementptr i8, ptr %521, i64 16
  %wide.load1160 = load <2 x double>, ptr %521, align 8, !tbaa !12, !alias.scope !64
  %wide.load1161 = load <2 x double>, ptr %522, align 8, !tbaa !12, !alias.scope !64
  %523 = getelementptr double, ptr %invariant.gep928, i64 %offset.idx1159
  %524 = getelementptr i8, ptr %523, i64 16
  %wide.load1162 = load <2 x double>, ptr %523, align 8, !tbaa !12, !alias.scope !67, !noalias !64
  %wide.load1163 = load <2 x double>, ptr %524, align 8, !tbaa !12, !alias.scope !67, !noalias !64
  %525 = fsub <2 x double> %wide.load1162, %wide.load1160
  %526 = fsub <2 x double> %wide.load1163, %wide.load1161
  store <2 x double> %525, ptr %523, align 8, !tbaa !12, !alias.scope !67, !noalias !64
  store <2 x double> %526, ptr %524, align 8, !tbaa !12, !alias.scope !67, !noalias !64
  %index.next1164 = add nuw i64 %index1158, 4
  %527 = icmp eq i64 %index.next1164, %n.vec1154
  br i1 %527, label %middle.block1149, label %vector.body1157, !llvm.loop !69

middle.block1149:                                 ; preds = %vector.body1157
  br i1 %cmp.n1165, label %._crit_edge925, label %scalar.ph1150.preheader

scalar.ph1150.preheader:                          ; preds = %.lr.ph924, %middle.block1149
  %.5717922.ph = phi i64 [ 1, %.lr.ph924 ], [ %ind.end1155, %middle.block1149 ]
  %528 = sub i64 %514, %.5717922.ph
  %529 = sub i64 %506, %.5717922.ph
  %xtraiter1251 = and i64 %528, 3
  %lcmp.mod1252.not = icmp eq i64 %xtraiter1251, 0
  br i1 %lcmp.mod1252.not, label %scalar.ph1150.prol.loopexit, label %scalar.ph1150.prol

scalar.ph1150.prol:                               ; preds = %scalar.ph1150.preheader, %scalar.ph1150.prol
  %.5717922.prol = phi i64 [ %533, %scalar.ph1150.prol ], [ %.5717922.ph, %scalar.ph1150.preheader ]
  %prol.iter1253 = phi i64 [ %prol.iter1253.next, %scalar.ph1150.prol ], [ 0, %scalar.ph1150.preheader ]
  %gep927.prol = getelementptr double, ptr %invariant.gep926, i64 %.5717922.prol
  %530 = load double, ptr %gep927.prol, align 8, !tbaa !12
  %gep929.prol = getelementptr double, ptr %invariant.gep928, i64 %.5717922.prol
  %531 = load double, ptr %gep929.prol, align 8, !tbaa !12
  %532 = fsub double %531, %530
  store double %532, ptr %gep929.prol, align 8, !tbaa !12
  %533 = add nuw i64 %.5717922.prol, 1
  %prol.iter1253.next = add i64 %prol.iter1253, 1
  %prol.iter1253.cmp.not = icmp eq i64 %prol.iter1253.next, %xtraiter1251
  br i1 %prol.iter1253.cmp.not, label %scalar.ph1150.prol.loopexit, label %scalar.ph1150.prol, !llvm.loop !70

scalar.ph1150.prol.loopexit:                      ; preds = %scalar.ph1150.prol, %scalar.ph1150.preheader
  %.5717922.unr = phi i64 [ %.5717922.ph, %scalar.ph1150.preheader ], [ %533, %scalar.ph1150.prol ]
  %534 = icmp ult i64 %529, 3
  br i1 %534, label %._crit_edge925, label %scalar.ph1150

scalar.ph1150:                                    ; preds = %scalar.ph1150.prol.loopexit, %scalar.ph1150
  %.5717922 = phi i64 [ %550, %scalar.ph1150 ], [ %.5717922.unr, %scalar.ph1150.prol.loopexit ]
  %gep927 = getelementptr double, ptr %invariant.gep926, i64 %.5717922
  %535 = load double, ptr %gep927, align 8, !tbaa !12
  %gep929 = getelementptr double, ptr %invariant.gep928, i64 %.5717922
  %536 = load double, ptr %gep929, align 8, !tbaa !12
  %537 = fsub double %536, %535
  store double %537, ptr %gep929, align 8, !tbaa !12
  %538 = add nuw i64 %.5717922, 1
  %gep927.1 = getelementptr double, ptr %invariant.gep926, i64 %538
  %539 = load double, ptr %gep927.1, align 8, !tbaa !12
  %gep929.1 = getelementptr double, ptr %invariant.gep928, i64 %538
  %540 = load double, ptr %gep929.1, align 8, !tbaa !12
  %541 = fsub double %540, %539
  store double %541, ptr %gep929.1, align 8, !tbaa !12
  %542 = add nuw i64 %.5717922, 2
  %gep927.2 = getelementptr double, ptr %invariant.gep926, i64 %542
  %543 = load double, ptr %gep927.2, align 8, !tbaa !12
  %gep929.2 = getelementptr double, ptr %invariant.gep928, i64 %542
  %544 = load double, ptr %gep929.2, align 8, !tbaa !12
  %545 = fsub double %544, %543
  store double %545, ptr %gep929.2, align 8, !tbaa !12
  %546 = add nuw i64 %.5717922, 3
  %gep927.3 = getelementptr double, ptr %invariant.gep926, i64 %546
  %547 = load double, ptr %gep927.3, align 8, !tbaa !12
  %gep929.3 = getelementptr double, ptr %invariant.gep928, i64 %546
  %548 = load double, ptr %gep929.3, align 8, !tbaa !12
  %549 = fsub double %548, %547
  store double %549, ptr %gep929.3, align 8, !tbaa !12
  %550 = add nuw i64 %.5717922, 4
  %exitcond1002.not.3 = icmp eq i64 %546, %506
  br i1 %exitcond1002.not.3, label %._crit_edge925, label %scalar.ph1150, !llvm.loop !71

._crit_edge925:                                   ; preds = %scalar.ph1150.prol.loopexit, %scalar.ph1150, %middle.block1149
  %551 = add nuw i64 %.11931, 1
  %exitcond1003.not = icmp eq i64 %.11931, %505
  br i1 %exitcond1003.not, label %.loopexit, label %.lr.ph924, !llvm.loop !72

552:                                              ; preds = %381
  br i1 %.not756, label %642, label %553

553:                                              ; preds = %552
  %554 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %554, ptr %16, align 8, !tbaa !5
  %555 = tail call i64 @iladlc_(ptr noundef %6, ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull %8) #4
  %556 = tail call i64 @llvm.smax.i64(i64 %554, i64 %555)
  store i64 %556, ptr %18, align 8, !tbaa !5
  %557 = call i64 @iladlc_(ptr noundef nonnull %18, ptr noundef nonnull %5, ptr noundef %11, ptr noundef nonnull %12) #4
  store i64 %557, ptr %17, align 8, !tbaa !5
  %558 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %558, ptr %16, align 8, !tbaa !5
  %invariant.gep934 = getelementptr i8, ptr %28, i64 8
  %.not763936 = icmp slt i64 %558, 1
  br i1 %.not763936, label %._crit_edge940, label %.lr.ph939

.lr.ph939:                                        ; preds = %553, %.lr.ph939
  %.12937 = phi i64 [ %567, %.lr.ph939 ], [ 1, %553 ]
  %559 = load i64, ptr %18, align 8, !tbaa !5
  %560 = load i64, ptr %6, align 8, !tbaa !5
  %561 = sub nsw i64 %559, %560
  %562 = getelementptr double, ptr %25, i64 %561
  %563 = getelementptr double, ptr %562, i64 %.12937
  %564 = getelementptr double, ptr %563, i64 %23
  %565 = mul nsw i64 %.12937, %26
  %gep935 = getelementptr double, ptr %invariant.gep934, i64 %565
  %566 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %564, ptr noundef nonnull %12, ptr noundef %gep935, ptr noundef nonnull @c__1) #4
  %567 = add nuw nsw i64 %.12937, 1
  %568 = load i64, ptr %16, align 8, !tbaa !5
  %.not763.not = icmp slt i64 %.12937, %568
  br i1 %.not763.not, label %.lr.ph939, label %._crit_edge940.loopexit, !llvm.loop !73

._crit_edge940.loopexit:                          ; preds = %.lr.ph939
  %.pre1013 = load i64, ptr %6, align 8, !tbaa !5
  br label %._crit_edge940

._crit_edge940:                                   ; preds = %._crit_edge940.loopexit, %553
  %569 = phi i64 [ %.pre1013, %._crit_edge940.loopexit ], [ %558, %553 ]
  %570 = load i64, ptr %18, align 8, !tbaa !5
  %571 = add i64 %570, 1
  %572 = sub i64 %571, %569
  %573 = mul nsw i64 %572, %20
  %574 = getelementptr double, ptr %22, i64 %573
  %575 = getelementptr i8, ptr %574, i64 8
  %576 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %575, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %577 = load i64, ptr %18, align 8, !tbaa !5
  %578 = load i64, ptr %6, align 8, !tbaa !5
  %579 = icmp sgt i64 %577, %578
  br i1 %579, label %580, label %583

580:                                              ; preds = %._crit_edge940
  %581 = sub nsw i64 %577, %578
  store i64 %581, ptr %16, align 8, !tbaa !5
  %582 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.8, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #4
  br label %583

583:                                              ; preds = %580, %._crit_edge940
  %584 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %19, ptr noundef nonnull @.str.10, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #4
  %585 = load i64, ptr %18, align 8, !tbaa !5
  %586 = load i64, ptr %6, align 8, !tbaa !5
  %587 = icmp sgt i64 %585, %586
  br i1 %587, label %588, label %591

588:                                              ; preds = %583
  %589 = sub nsw i64 %585, %586
  store i64 %589, ptr %16, align 8, !tbaa !5
  %590 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b14, ptr noundef %11, ptr noundef nonnull %12) #4
  %.pre1014 = load i64, ptr %18, align 8, !tbaa !5
  %.pre1015 = load i64, ptr %6, align 8, !tbaa !5
  br label %591

591:                                              ; preds = %588, %583
  %592 = phi i64 [ %.pre1015, %588 ], [ %586, %583 ]
  %593 = phi i64 [ %.pre1014, %588 ], [ %585, %583 ]
  %594 = add i64 %593, 1
  %595 = sub i64 %594, %592
  %596 = mul nsw i64 %595, %20
  %597 = getelementptr double, ptr %22, i64 %596
  %598 = getelementptr i8, ptr %597, i64 8
  %599 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %598, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %600 = load i64, ptr %6, align 8, !tbaa !5
  %.not764950 = icmp slt i64 %600, 1
  br i1 %.not764950, label %.loopexit, label %.lr.ph953

.lr.ph953:                                        ; preds = %591
  %601 = load i64, ptr %17, align 8, !tbaa !5
  %.not765943 = icmp slt i64 %601, 1
  %602 = load i64, ptr %18, align 8
  %603 = sub nsw i64 %602, %600
  %invariant.gep954 = getelementptr double, ptr %25, i64 %603
  br i1 %.not765943, label %.loopexit, label %.lr.ph946.preheader

.lr.ph946.preheader:                              ; preds = %.lr.ph953
  %604 = sub i64 %602, %600
  %605 = shl i64 %604, 3
  %scevgep1169 = getelementptr i8, ptr %11, i64 %605
  %606 = add i64 %602, %601
  %607 = shl i64 %606, 3
  %608 = getelementptr i8, ptr %11, i64 %607
  %scevgep1170 = getelementptr i8, ptr %608, i64 -8
  %609 = add nuw i64 %600, 2305843009213693951
  %610 = mul i64 %26, %609
  %611 = add i64 %610, %601
  %612 = shl i64 %611, 3
  %scevgep1171 = getelementptr i8, ptr %13, i64 %612
  %min.iters.check1178 = icmp ugt i64 %601, 5
  %ident.check1167.not = icmp eq i64 %23, 1
  %or.cond1232 = select i1 %min.iters.check1178, i1 %ident.check1167.not, i1 false
  %bound01172 = icmp ult ptr %scevgep1169, %scevgep1171
  %bound11173 = icmp ugt ptr %scevgep1170, %13
  %found.conflict1174 = and i1 %bound01172, %bound11173
  %.mask1227 = and i64 %26, 1152921504606846976
  %stride.check1175 = icmp ne i64 %.mask1227, 0
  %613 = or i1 %found.conflict1174, %stride.check1175
  %n.vec1181 = and i64 %601, 9223372036854775804
  %ind.end1182 = or disjoint i64 %n.vec1181, 1
  %cmp.n1192 = icmp eq i64 %601, %n.vec1181
  %xtraiter1254 = and i64 %601, 1
  %lcmp.mod1255.not = icmp eq i64 %xtraiter1254, 0
  br label %.lr.ph946

.lr.ph946:                                        ; preds = %.lr.ph946.preheader, %._crit_edge947
  %.13951 = phi i64 [ %641, %._crit_edge947 ], [ 1, %.lr.ph946.preheader ]
  %614 = mul nsw i64 %.13951, %26
  %invariant.gep948 = getelementptr double, ptr %28, i64 %614
  %gep955 = getelementptr double, ptr %invariant.gep954, i64 %.13951
  %or.cond1232.not = xor i1 %or.cond1232, true
  %brmerge1268 = select i1 %or.cond1232.not, i1 true, i1 %613
  br i1 %brmerge1268, label %scalar.ph1177.preheader, label %vector.body1184

vector.body1184:                                  ; preds = %.lr.ph946, %vector.body1184
  %index1185 = phi i64 [ %index.next1191, %vector.body1184 ], [ 0, %.lr.ph946 ]
  %offset.idx1186 = or disjoint i64 %index1185, 1
  %615 = getelementptr double, ptr %invariant.gep948, i64 %offset.idx1186
  %616 = getelementptr i8, ptr %615, i64 16
  %wide.load1187 = load <2 x double>, ptr %615, align 8, !tbaa !12, !alias.scope !74
  %wide.load1188 = load <2 x double>, ptr %616, align 8, !tbaa !12, !alias.scope !74
  %617 = getelementptr double, ptr %gep955, i64 %offset.idx1186
  %618 = getelementptr i8, ptr %617, i64 16
  %wide.load1189 = load <2 x double>, ptr %617, align 8, !tbaa !12, !alias.scope !77, !noalias !74
  %wide.load1190 = load <2 x double>, ptr %618, align 8, !tbaa !12, !alias.scope !77, !noalias !74
  %619 = fsub <2 x double> %wide.load1189, %wide.load1187
  %620 = fsub <2 x double> %wide.load1190, %wide.load1188
  store <2 x double> %619, ptr %617, align 8, !tbaa !12, !alias.scope !77, !noalias !74
  store <2 x double> %620, ptr %618, align 8, !tbaa !12, !alias.scope !77, !noalias !74
  %index.next1191 = add nuw i64 %index1185, 4
  %621 = icmp eq i64 %index.next1191, %n.vec1181
  br i1 %621, label %middle.block1176, label %vector.body1184, !llvm.loop !79

middle.block1176:                                 ; preds = %vector.body1184
  br i1 %cmp.n1192, label %._crit_edge947, label %scalar.ph1177.preheader

scalar.ph1177.preheader:                          ; preds = %.lr.ph946, %middle.block1176
  %.6718944.ph = phi i64 [ 1, %.lr.ph946 ], [ %ind.end1182, %middle.block1176 ]
  br i1 %lcmp.mod1255.not, label %scalar.ph1177.prol.loopexit, label %scalar.ph1177.prol

scalar.ph1177.prol:                               ; preds = %scalar.ph1177.preheader
  %gep949.prol = getelementptr double, ptr %invariant.gep948, i64 %.6718944.ph
  %622 = load double, ptr %gep949.prol, align 8, !tbaa !12
  %623 = mul nsw i64 %.6718944.ph, %23
  %624 = getelementptr double, ptr %gep955, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !12
  %626 = fsub double %625, %622
  store double %626, ptr %624, align 8, !tbaa !12
  %627 = add nuw i64 %.6718944.ph, 1
  br label %scalar.ph1177.prol.loopexit

scalar.ph1177.prol.loopexit:                      ; preds = %scalar.ph1177.prol, %scalar.ph1177.preheader
  %.6718944.unr = phi i64 [ %.6718944.ph, %scalar.ph1177.preheader ], [ %627, %scalar.ph1177.prol ]
  %628 = icmp eq i64 %601, %.6718944.ph
  br i1 %628, label %._crit_edge947, label %scalar.ph1177

scalar.ph1177:                                    ; preds = %scalar.ph1177.prol.loopexit, %scalar.ph1177
  %.6718944 = phi i64 [ %640, %scalar.ph1177 ], [ %.6718944.unr, %scalar.ph1177.prol.loopexit ]
  %gep949 = getelementptr double, ptr %invariant.gep948, i64 %.6718944
  %629 = load double, ptr %gep949, align 8, !tbaa !12
  %630 = mul nsw i64 %.6718944, %23
  %631 = getelementptr double, ptr %gep955, i64 %630
  %632 = load double, ptr %631, align 8, !tbaa !12
  %633 = fsub double %632, %629
  store double %633, ptr %631, align 8, !tbaa !12
  %634 = add nuw i64 %.6718944, 1
  %gep949.1 = getelementptr double, ptr %invariant.gep948, i64 %634
  %635 = load double, ptr %gep949.1, align 8, !tbaa !12
  %636 = mul nsw i64 %634, %23
  %637 = getelementptr double, ptr %gep955, i64 %636
  %638 = load double, ptr %637, align 8, !tbaa !12
  %639 = fsub double %638, %635
  store double %639, ptr %637, align 8, !tbaa !12
  %640 = add nuw i64 %.6718944, 2
  %exitcond1004.not.1 = icmp eq i64 %634, %601
  br i1 %exitcond1004.not.1, label %._crit_edge947, label %scalar.ph1177, !llvm.loop !80

._crit_edge947:                                   ; preds = %scalar.ph1177.prol.loopexit, %scalar.ph1177, %middle.block1176
  %641 = add nuw i64 %.13951, 1
  %exitcond1005.not = icmp eq i64 %.13951, %600
  br i1 %exitcond1005.not, label %.loopexit, label %.lr.ph946, !llvm.loop !81

642:                                              ; preds = %552
  %643 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.11) #4
  %.not757 = icmp eq i64 %643, 0
  br i1 %.not757, label %.loopexit, label %644

644:                                              ; preds = %642
  %645 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %645, ptr %16, align 8, !tbaa !5
  %646 = tail call i64 @iladlc_(ptr noundef %6, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8) #4
  %647 = tail call i64 @llvm.smax.i64(i64 %645, i64 %646)
  store i64 %647, ptr %18, align 8, !tbaa !5
  %648 = call i64 @iladlr_(ptr noundef nonnull %4, ptr noundef nonnull %18, ptr noundef %11, ptr noundef nonnull %12) #4
  store i64 %648, ptr %17, align 8, !tbaa !5
  %649 = load i64, ptr %6, align 8, !tbaa !5
  store i64 %649, ptr %16, align 8, !tbaa !5
  %invariant.gep956 = getelementptr i8, ptr %25, i64 8
  %invariant.gep958 = getelementptr i8, ptr %28, i64 8
  %.not759960 = icmp slt i64 %649, 1
  br i1 %.not759960, label %._crit_edge964, label %.lr.ph963

.lr.ph963:                                        ; preds = %644, %.lr.ph963
  %.14961 = phi i64 [ %657, %.lr.ph963 ], [ 1, %644 ]
  %650 = load i64, ptr %18, align 8, !tbaa !5
  %651 = load i64, ptr %6, align 8, !tbaa !5
  %652 = add i64 %650, %.14961
  %653 = sub i64 %652, %651
  %654 = mul nsw i64 %653, %23
  %gep957 = getelementptr double, ptr %invariant.gep956, i64 %654
  %655 = mul nsw i64 %.14961, %26
  %gep959 = getelementptr double, ptr %invariant.gep958, i64 %655
  %656 = call i32 @f2c_dcopy(ptr noundef nonnull %17, ptr noundef %gep957, ptr noundef nonnull @c__1, ptr noundef %gep959, ptr noundef nonnull @c__1) #4
  %657 = add nuw nsw i64 %.14961, 1
  %658 = load i64, ptr %16, align 8, !tbaa !5
  %.not759.not = icmp slt i64 %.14961, %658
  br i1 %.not759.not, label %.lr.ph963, label %._crit_edge964.loopexit, !llvm.loop !82

._crit_edge964.loopexit:                          ; preds = %.lr.ph963
  %.pre1016 = load i64, ptr %6, align 8, !tbaa !5
  br label %._crit_edge964

._crit_edge964:                                   ; preds = %._crit_edge964.loopexit, %644
  %659 = phi i64 [ %.pre1016, %._crit_edge964.loopexit ], [ %649, %644 ]
  %660 = load i64, ptr %18, align 8, !tbaa !5
  %661 = add i64 %660, 1
  %662 = sub i64 %661, %659
  %663 = mul nsw i64 %662, %20
  %664 = getelementptr double, ptr %22, i64 %663
  %665 = getelementptr i8, ptr %664, i64 8
  %666 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %665, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %667 = load i64, ptr %18, align 8, !tbaa !5
  %668 = load i64, ptr %6, align 8, !tbaa !5
  %669 = icmp sgt i64 %667, %668
  br i1 %669, label %670, label %673

670:                                              ; preds = %._crit_edge964
  %671 = sub nsw i64 %667, %668
  store i64 %671, ptr %16, align 8, !tbaa !5
  %672 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #4
  br label %673

673:                                              ; preds = %670, %._crit_edge964
  %674 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef %1, ptr noundef nonnull @.str.10, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #4
  %675 = load i64, ptr %18, align 8, !tbaa !5
  %676 = load i64, ptr %6, align 8, !tbaa !5
  %677 = icmp sgt i64 %675, %676
  br i1 %677, label %678, label %681

678:                                              ; preds = %673
  %679 = sub nsw i64 %675, %676
  store i64 %679, ptr %16, align 8, !tbaa !5
  %680 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %17, ptr noundef nonnull %16, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %11, ptr noundef nonnull %12) #4
  %.pre1017 = load i64, ptr %18, align 8, !tbaa !5
  %.pre1018 = load i64, ptr %6, align 8, !tbaa !5
  br label %681

681:                                              ; preds = %678, %673
  %682 = phi i64 [ %.pre1018, %678 ], [ %676, %673 ]
  %683 = phi i64 [ %.pre1017, %678 ], [ %675, %673 ]
  %684 = add i64 %683, 1
  %685 = sub i64 %684, %682
  %686 = mul nsw i64 %685, %20
  %687 = getelementptr double, ptr %22, i64 %686
  %688 = getelementptr i8, ptr %687, i64 8
  %689 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %17, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %688, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #4
  %690 = load i64, ptr %6, align 8, !tbaa !5
  %.not760974 = icmp slt i64 %690, 1
  br i1 %.not760974, label %.loopexit, label %.lr.ph977

.lr.ph977:                                        ; preds = %681
  %691 = load i64, ptr %17, align 8, !tbaa !5
  %.not761965 = icmp slt i64 %691, 1
  %692 = load i64, ptr %18, align 8
  br i1 %.not761965, label %.loopexit, label %.lr.ph968.preheader

.lr.ph968.preheader:                              ; preds = %.lr.ph977
  %693 = shl i64 %692, 3
  %694 = sub i64 %692, %690
  %695 = shl i64 %694, 3
  %696 = mul i64 %23, %695
  %scevgep1194 = getelementptr i8, ptr %11, i64 %696
  %697 = add i64 %693, -8
  %698 = mul i64 %23, %697
  %699 = shl i64 %691, 3
  %700 = getelementptr i8, ptr %11, i64 %698
  %scevgep1195 = getelementptr i8, ptr %700, i64 %699
  %701 = add nuw i64 %690, 2305843009213693951
  %702 = mul i64 %26, %701
  %703 = add i64 %702, %691
  %704 = shl i64 %703, 3
  %scevgep1196 = getelementptr i8, ptr %13, i64 %704
  %705 = add nuw i64 %691, 1
  %min.iters.check1204 = icmp ult i64 %691, 6
  %bound01197 = icmp ult ptr %scevgep1194, %scevgep1196
  %bound11198 = icmp ugt ptr %scevgep1195, %13
  %found.conflict1199 = and i1 %bound01197, %bound11198
  %706 = or i64 %23, %26
  %707 = and i64 %706, 1152921504606846976
  %708 = icmp ne i64 %707, 0
  %709 = or i1 %found.conflict1199, %708
  %n.vec1207 = and i64 %691, 9223372036854775804
  %ind.end1208 = or disjoint i64 %n.vec1207, 1
  %cmp.n1218 = icmp eq i64 %691, %n.vec1207
  br label %.lr.ph968

.lr.ph968:                                        ; preds = %.lr.ph968.preheader, %._crit_edge969
  %.15975 = phi i64 [ %744, %._crit_edge969 ], [ 1, %.lr.ph968.preheader ]
  %710 = mul nsw i64 %.15975, %26
  %invariant.gep970 = getelementptr double, ptr %28, i64 %710
  %711 = sub nsw i64 %.15975, %690
  %712 = add i64 %711, %692
  %713 = mul nsw i64 %712, %23
  %invariant.gep972 = getelementptr double, ptr %25, i64 %713
  %brmerge1269 = select i1 %min.iters.check1204, i1 true, i1 %709
  br i1 %brmerge1269, label %scalar.ph1203.preheader, label %vector.body1210

vector.body1210:                                  ; preds = %.lr.ph968, %vector.body1210
  %index1211 = phi i64 [ %index.next1217, %vector.body1210 ], [ 0, %.lr.ph968 ]
  %offset.idx1212 = or disjoint i64 %index1211, 1
  %714 = getelementptr double, ptr %invariant.gep970, i64 %offset.idx1212
  %715 = getelementptr i8, ptr %714, i64 16
  %wide.load1213 = load <2 x double>, ptr %714, align 8, !tbaa !12, !alias.scope !83
  %wide.load1214 = load <2 x double>, ptr %715, align 8, !tbaa !12, !alias.scope !83
  %716 = getelementptr double, ptr %invariant.gep972, i64 %offset.idx1212
  %717 = getelementptr i8, ptr %716, i64 16
  %wide.load1215 = load <2 x double>, ptr %716, align 8, !tbaa !12, !alias.scope !86, !noalias !83
  %wide.load1216 = load <2 x double>, ptr %717, align 8, !tbaa !12, !alias.scope !86, !noalias !83
  %718 = fsub <2 x double> %wide.load1215, %wide.load1213
  %719 = fsub <2 x double> %wide.load1216, %wide.load1214
  store <2 x double> %718, ptr %716, align 8, !tbaa !12, !alias.scope !86, !noalias !83
  store <2 x double> %719, ptr %717, align 8, !tbaa !12, !alias.scope !86, !noalias !83
  %index.next1217 = add nuw i64 %index1211, 4
  %720 = icmp eq i64 %index.next1217, %n.vec1207
  br i1 %720, label %middle.block1202, label %vector.body1210, !llvm.loop !88

middle.block1202:                                 ; preds = %vector.body1210
  br i1 %cmp.n1218, label %._crit_edge969, label %scalar.ph1203.preheader

scalar.ph1203.preheader:                          ; preds = %.lr.ph968, %middle.block1202
  %.7719966.ph = phi i64 [ 1, %.lr.ph968 ], [ %ind.end1208, %middle.block1202 ]
  %721 = sub i64 %705, %.7719966.ph
  %722 = sub i64 %691, %.7719966.ph
  %xtraiter1257 = and i64 %721, 3
  %lcmp.mod1258.not = icmp eq i64 %xtraiter1257, 0
  br i1 %lcmp.mod1258.not, label %scalar.ph1203.prol.loopexit, label %scalar.ph1203.prol

scalar.ph1203.prol:                               ; preds = %scalar.ph1203.preheader, %scalar.ph1203.prol
  %.7719966.prol = phi i64 [ %726, %scalar.ph1203.prol ], [ %.7719966.ph, %scalar.ph1203.preheader ]
  %prol.iter1259 = phi i64 [ %prol.iter1259.next, %scalar.ph1203.prol ], [ 0, %scalar.ph1203.preheader ]
  %gep971.prol = getelementptr double, ptr %invariant.gep970, i64 %.7719966.prol
  %723 = load double, ptr %gep971.prol, align 8, !tbaa !12
  %gep973.prol = getelementptr double, ptr %invariant.gep972, i64 %.7719966.prol
  %724 = load double, ptr %gep973.prol, align 8, !tbaa !12
  %725 = fsub double %724, %723
  store double %725, ptr %gep973.prol, align 8, !tbaa !12
  %726 = add nuw i64 %.7719966.prol, 1
  %prol.iter1259.next = add i64 %prol.iter1259, 1
  %prol.iter1259.cmp.not = icmp eq i64 %prol.iter1259.next, %xtraiter1257
  br i1 %prol.iter1259.cmp.not, label %scalar.ph1203.prol.loopexit, label %scalar.ph1203.prol, !llvm.loop !89

scalar.ph1203.prol.loopexit:                      ; preds = %scalar.ph1203.prol, %scalar.ph1203.preheader
  %.7719966.unr = phi i64 [ %.7719966.ph, %scalar.ph1203.preheader ], [ %726, %scalar.ph1203.prol ]
  %727 = icmp ult i64 %722, 3
  br i1 %727, label %._crit_edge969, label %scalar.ph1203

scalar.ph1203:                                    ; preds = %scalar.ph1203.prol.loopexit, %scalar.ph1203
  %.7719966 = phi i64 [ %743, %scalar.ph1203 ], [ %.7719966.unr, %scalar.ph1203.prol.loopexit ]
  %gep971 = getelementptr double, ptr %invariant.gep970, i64 %.7719966
  %728 = load double, ptr %gep971, align 8, !tbaa !12
  %gep973 = getelementptr double, ptr %invariant.gep972, i64 %.7719966
  %729 = load double, ptr %gep973, align 8, !tbaa !12
  %730 = fsub double %729, %728
  store double %730, ptr %gep973, align 8, !tbaa !12
  %731 = add nuw i64 %.7719966, 1
  %gep971.1 = getelementptr double, ptr %invariant.gep970, i64 %731
  %732 = load double, ptr %gep971.1, align 8, !tbaa !12
  %gep973.1 = getelementptr double, ptr %invariant.gep972, i64 %731
  %733 = load double, ptr %gep973.1, align 8, !tbaa !12
  %734 = fsub double %733, %732
  store double %734, ptr %gep973.1, align 8, !tbaa !12
  %735 = add nuw i64 %.7719966, 2
  %gep971.2 = getelementptr double, ptr %invariant.gep970, i64 %735
  %736 = load double, ptr %gep971.2, align 8, !tbaa !12
  %gep973.2 = getelementptr double, ptr %invariant.gep972, i64 %735
  %737 = load double, ptr %gep973.2, align 8, !tbaa !12
  %738 = fsub double %737, %736
  store double %738, ptr %gep973.2, align 8, !tbaa !12
  %739 = add nuw i64 %.7719966, 3
  %gep971.3 = getelementptr double, ptr %invariant.gep970, i64 %739
  %740 = load double, ptr %gep971.3, align 8, !tbaa !12
  %gep973.3 = getelementptr double, ptr %invariant.gep972, i64 %739
  %741 = load double, ptr %gep973.3, align 8, !tbaa !12
  %742 = fsub double %741, %740
  store double %742, ptr %gep973.3, align 8, !tbaa !12
  %743 = add nuw i64 %.7719966, 4
  %exitcond1006.not.3 = icmp eq i64 %739, %691
  br i1 %exitcond1006.not.3, label %._crit_edge969, label %scalar.ph1203, !llvm.loop !90

._crit_edge969:                                   ; preds = %scalar.ph1203.prol.loopexit, %scalar.ph1203, %middle.block1202
  %744 = add nuw i64 %.15975, 1
  %exitcond1007.not = icmp eq i64 %.15975, %690
  br i1 %exitcond1007.not, label %.loopexit, label %.lr.ph968, !llvm.loop !91

.loopexit:                                        ; preds = %._crit_edge819, %._crit_edge839, %._crit_edge861, %._crit_edge883, %._crit_edge905, %._crit_edge925, %._crit_edge947, %._crit_edge969, %.lr.ph977, %.lr.ph953, %.lr.ph933, %.lr.ph911, %.lr.ph891, %.lr.ph867, %.lr.ph847, %.lr.ph825, %70, %149, %234, %318, %420, %503, %591, %681, %282, %111, %461, %642, %379, %15, %31
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  ret i32 0
}

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = !{!15}
!15 = distinct !{!15, !16}
!16 = distinct !{!16, !"LVerDomain"}
!17 = !{!18}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !11, !20, !21}
!20 = !{!"llvm.loop.isvectorized", i32 1}
!21 = !{!"llvm.loop.unroll.runtime.disable"}
!22 = distinct !{!22, !11, !20}
!23 = distinct !{!23, !11}
!24 = distinct !{!24, !11}
!25 = !{!26}
!26 = distinct !{!26, !27}
!27 = distinct !{!27, !"LVerDomain"}
!28 = !{!29}
!29 = distinct !{!29, !27}
!30 = distinct !{!30, !11, !20, !21}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.unroll.disable"}
!33 = distinct !{!33, !11, !20}
!34 = distinct !{!34, !11}
!35 = distinct !{!35, !11}
!36 = !{!37}
!37 = distinct !{!37, !38}
!38 = distinct !{!38, !"LVerDomain"}
!39 = !{!40}
!40 = distinct !{!40, !38}
!41 = distinct !{!41, !11, !20, !21}
!42 = distinct !{!42, !11, !20}
!43 = distinct !{!43, !11}
!44 = distinct !{!44, !11}
!45 = !{!46}
!46 = distinct !{!46, !47}
!47 = distinct !{!47, !"LVerDomain"}
!48 = !{!49}
!49 = distinct !{!49, !47}
!50 = distinct !{!50, !11, !20, !21}
!51 = distinct !{!51, !32}
!52 = distinct !{!52, !11, !20}
!53 = distinct !{!53, !11}
!54 = distinct !{!54, !11}
!55 = !{!56}
!56 = distinct !{!56, !57}
!57 = distinct !{!57, !"LVerDomain"}
!58 = !{!59}
!59 = distinct !{!59, !57}
!60 = distinct !{!60, !11, !20, !21}
!61 = distinct !{!61, !11, !20}
!62 = distinct !{!62, !11}
!63 = distinct !{!63, !11}
!64 = !{!65}
!65 = distinct !{!65, !66}
!66 = distinct !{!66, !"LVerDomain"}
!67 = !{!68}
!68 = distinct !{!68, !66}
!69 = distinct !{!69, !11, !20, !21}
!70 = distinct !{!70, !32}
!71 = distinct !{!71, !11, !20}
!72 = distinct !{!72, !11}
!73 = distinct !{!73, !11}
!74 = !{!75}
!75 = distinct !{!75, !76}
!76 = distinct !{!76, !"LVerDomain"}
!77 = !{!78}
!78 = distinct !{!78, !76}
!79 = distinct !{!79, !11, !20, !21}
!80 = distinct !{!80, !11, !20}
!81 = distinct !{!81, !11}
!82 = distinct !{!82, !11}
!83 = !{!84}
!84 = distinct !{!84, !85}
!85 = distinct !{!85, !"LVerDomain"}
!86 = !{!87}
!87 = distinct !{!87, !85}
!88 = distinct !{!88, !11, !20, !21}
!89 = distinct !{!89, !32}
!90 = distinct !{!90, !11, !20}
!91 = distinct !{!91, !11}


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