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

88:                                               ; preds = %15
  %89 = load ptr, ptr %21, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  %91 = icmp sle i32 %90, 0
  br i1 %91, label %92, label %93

92:                                               ; preds = %88, %15
  store i32 1, ptr %44, align 4
  br label %1645

93:                                               ; preds = %88
  %94 = load ptr, ptr %17, align 8, !tbaa !5
  %95 = call i32 @lsame_(ptr noundef %94, ptr noundef @.str)
  %96 = icmp ne i32 %95, 0
  br i1 %96, label %97, label %99

97:                                               ; preds = %93
  %98 = getelementptr inbounds [1 x i8], ptr %43, i64 0, i64 0
  store i8 84, ptr %98, align 1, !tbaa !11
  br label %101

99:                                               ; preds = %93
  %100 = getelementptr inbounds [1 x i8], ptr %43, i64 0, i64 0
  store i8 78, ptr %100, align 1, !tbaa !11
  br label %101

101:                                              ; preds = %99, %97
  %102 = load ptr, ptr %19, align 8, !tbaa !5
  %103 = call i32 @lsame_(ptr noundef %102, ptr noundef @.str.1)
  %104 = icmp ne i32 %103, 0
  br i1 %104, label %105, label %868

105:                                              ; preds = %101
  %106 = load ptr, ptr %18, align 8, !tbaa !5
  %107 = call i32 @lsame_(ptr noundef %106, ptr noundef @.str.2)
  %108 = icmp ne i32 %107, 0
  br i1 %108, label %109, label %479

109:                                              ; preds = %105
  %110 = load ptr, ptr %16, align 8, !tbaa !5
  %111 = call i32 @lsame_(ptr noundef %110, ptr noundef @.str.3)
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %113, label %292

113:                                              ; preds = %109
  %114 = load ptr, ptr %22, align 8, !tbaa !5
  %115 = load i32, ptr %114, align 4, !tbaa !9
  store i32 %115, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %116

116:                                              ; preds = %136, %113
  %117 = load i32, ptr %42, align 4, !tbaa !9
  %118 = load i32, ptr %39, align 4, !tbaa !9
  %119 = icmp sle i32 %117, %118
  br i1 %119, label %120, label %139

120:                                              ; preds = %116
  %121 = load ptr, ptr %21, align 8, !tbaa !5
  %122 = load ptr, ptr %27, align 8, !tbaa !5
  %123 = load i32, ptr %42, align 4, !tbaa !9
  %124 = load i32, ptr %31, align 4, !tbaa !9
  %125 = add nsw i32 %123, %124
  %126 = sext i32 %125 to i64
  %127 = getelementptr inbounds double, ptr %122, i64 %126
  %128 = load ptr, ptr %28, align 8, !tbaa !5
  %129 = load ptr, ptr %29, align 8, !tbaa !5
  %130 = load i32, ptr %42, align 4, !tbaa !9
  %131 = load i32, ptr %37, align 4, !tbaa !9
  %132 = mul nsw i32 %130, %131
  %133 = add nsw i32 %132, 1
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds double, ptr %129, i64 %134
  call void @dcopy_(ptr noundef %121, ptr noundef %127, ptr noundef %128, ptr noundef %135, ptr noundef @c__1)
  br label %136

136:                                              ; preds = %120
  %137 = load i32, ptr %42, align 4, !tbaa !9
  %138 = add nsw i32 %137, 1
  store i32 %138, ptr %42, align 4, !tbaa !9
  br label %116, !llvm.loop !12

139:                                              ; preds = %116
  %140 = load ptr, ptr %21, align 8, !tbaa !5
  %141 = load ptr, ptr %22, align 8, !tbaa !5
  %142 = load ptr, ptr %23, align 8, !tbaa !5
  %143 = load i32, ptr %36, align 4, !tbaa !9
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds double, ptr %142, i64 %144
  %146 = load ptr, ptr %24, align 8, !tbaa !5
  %147 = load ptr, ptr %29, align 8, !tbaa !5
  %148 = load i32, ptr %38, align 4, !tbaa !9
  %149 = sext i32 %148 to i64
  %150 = getelementptr inbounds double, ptr %147, i64 %149
  %151 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %140, ptr noundef %141, ptr noundef @c_b14, ptr noundef %145, ptr noundef %146, ptr noundef %150, ptr noundef %151)
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = load ptr, ptr %22, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = icmp sgt i32 %153, %155
  br i1 %156, label %157, label %188

157:                                              ; preds = %139
  %158 = load ptr, ptr %20, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = load ptr, ptr %22, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = sub nsw i32 %159, %161
  store i32 %162, ptr %39, align 4, !tbaa !9
  %163 = load ptr, ptr %21, align 8, !tbaa !5
  %164 = load ptr, ptr %22, align 8, !tbaa !5
  %165 = load ptr, ptr %27, align 8, !tbaa !5
  %166 = load ptr, ptr %22, align 8, !tbaa !5
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = add nsw i32 %167, 1
  %169 = load i32, ptr %31, align 4, !tbaa !9
  %170 = add nsw i32 %168, %169
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %165, i64 %171
  %173 = load ptr, ptr %28, align 8, !tbaa !5
  %174 = load ptr, ptr %23, align 8, !tbaa !5
  %175 = load ptr, ptr %22, align 8, !tbaa !5
  %176 = load i32, ptr %175, align 4, !tbaa !9
  %177 = add nsw i32 %176, 1
  %178 = load i32, ptr %35, align 4, !tbaa !9
  %179 = add nsw i32 %177, %178
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds double, ptr %174, i64 %180
  %182 = load ptr, ptr %24, align 8, !tbaa !5
  %183 = load ptr, ptr %29, align 8, !tbaa !5
  %184 = load i32, ptr %38, align 4, !tbaa !9
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds double, ptr %183, i64 %185
  %187 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.8, ptr noundef @.str.6, ptr noundef %163, ptr noundef %164, ptr noundef %39, ptr noundef @c_b14, ptr noundef %172, ptr noundef %173, ptr noundef %181, ptr noundef %182, ptr noundef @c_b14, ptr noundef %186, ptr noundef %187)
  br label %188

188:                                              ; preds = %157, %139
  %189 = getelementptr inbounds [1 x i8], ptr %43, i64 0, i64 0
  %190 = load ptr, ptr %21, align 8, !tbaa !5
  %191 = load ptr, ptr %22, align 8, !tbaa !5
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  %193 = load i32, ptr %34, align 4, !tbaa !9
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds double, ptr %192, i64 %194
  %196 = load ptr, ptr %26, align 8, !tbaa !5
  %197 = load ptr, ptr %29, align 8, !tbaa !5
  %198 = load i32, ptr %38, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds double, ptr %197, i64 %199
  %201 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef %189, ptr noundef @.str.10, ptr noundef %190, ptr noundef %191, ptr noundef @c_b14, ptr noundef %195, ptr noundef %196, ptr noundef %200, ptr noundef %201)
  %202 = load ptr, ptr %20, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = load ptr, ptr %22, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp sgt i32 %203, %205
  br i1 %206, label %207, label %238

207:                                              ; preds = %188
  %208 = load ptr, ptr %20, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = load ptr, ptr %22, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = sub nsw i32 %209, %211
  store i32 %212, ptr %39, align 4, !tbaa !9
  %213 = load ptr, ptr %21, align 8, !tbaa !5
  %214 = load ptr, ptr %22, align 8, !tbaa !5
  %215 = load ptr, ptr %23, align 8, !tbaa !5
  %216 = load ptr, ptr %22, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = add nsw i32 %217, 1
  %219 = load i32, ptr %35, align 4, !tbaa !9
  %220 = add nsw i32 %218, %219
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds double, ptr %215, i64 %221
  %223 = load ptr, ptr %24, align 8, !tbaa !5
  %224 = load ptr, ptr %29, align 8, !tbaa !5
  %225 = load i32, ptr %38, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds double, ptr %224, i64 %226
  %228 = load ptr, ptr %30, align 8, !tbaa !5
  %229 = load ptr, ptr %27, align 8, !tbaa !5
  %230 = load ptr, ptr %22, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = add nsw i32 %231, 1
  %233 = load i32, ptr %31, align 4, !tbaa !9
  %234 = add nsw i32 %232, %233
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds double, ptr %229, i64 %235
  %237 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %39, ptr noundef %213, ptr noundef %214, ptr noundef @c_b25, ptr noundef %222, ptr noundef %223, ptr noundef %227, ptr noundef %228, ptr noundef @c_b14, ptr noundef %236, ptr noundef %237)
  br label %238

238:                                              ; preds = %207, %188
  %239 = load ptr, ptr %21, align 8, !tbaa !5
  %240 = load ptr, ptr %22, align 8, !tbaa !5
  %241 = load ptr, ptr %23, align 8, !tbaa !5
  %242 = load i32, ptr %36, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %241, i64 %243
  %245 = load ptr, ptr %24, align 8, !tbaa !5
  %246 = load ptr, ptr %29, align 8, !tbaa !5
  %247 = load i32, ptr %38, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds double, ptr %246, i64 %248
  %250 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %239, ptr noundef %240, ptr noundef @c_b14, ptr noundef %244, ptr noundef %245, ptr noundef %249, ptr noundef %250)
  %251 = load ptr, ptr %22, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  store i32 %252, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %288, %238
  %254 = load i32, ptr %42, align 4, !tbaa !9
  %255 = load i32, ptr %39, align 4, !tbaa !9
  %256 = icmp sle i32 %254, %255
  br i1 %256, label %257, label %291

257:                                              ; preds = %253
  %258 = load ptr, ptr %21, align 8, !tbaa !5
  %259 = load i32, ptr %258, align 4, !tbaa !9
  store i32 %259, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %284, %257
  %261 = load i32, ptr %41, align 4, !tbaa !9
  %262 = load i32, ptr %40, align 4, !tbaa !9
  %263 = icmp sle i32 %261, %262
  br i1 %263, label %264, label %287

264:                                              ; preds = %260
  %265 = load ptr, ptr %29, align 8, !tbaa !5
  %266 = load i32, ptr %41, align 4, !tbaa !9
  %267 = load i32, ptr %42, align 4, !tbaa !9
  %268 = load i32, ptr %37, align 4, !tbaa !9
  %269 = mul nsw i32 %267, %268
  %270 = add nsw i32 %266, %269
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %265, i64 %271
  %273 = load double, ptr %272, align 8, !tbaa !14
  %274 = load ptr, ptr %27, align 8, !tbaa !5
  %275 = load i32, ptr %42, align 4, !tbaa !9
  %276 = load i32, ptr %41, align 4, !tbaa !9
  %277 = load i32, ptr %31, align 4, !tbaa !9
  %278 = mul nsw i32 %276, %277
  %279 = add nsw i32 %275, %278
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds double, ptr %274, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !14
  %283 = fsub double %282, %273
  store double %283, ptr %281, align 8, !tbaa !14
  br label %284

284:                                              ; preds = %264
  %285 = load i32, ptr %41, align 4, !tbaa !9
  %286 = add nsw i32 %285, 1
  store i32 %286, ptr %41, align 4, !tbaa !9
  br label %260, !llvm.loop !16

287:                                              ; preds = %260
  br label %288

288:                                              ; preds = %287
  %289 = load i32, ptr %42, align 4, !tbaa !9
  %290 = add nsw i32 %289, 1
  store i32 %290, ptr %42, align 4, !tbaa !9
  br label %253, !llvm.loop !17

291:                                              ; preds = %253
  br label %478

292:                                              ; preds = %109
  %293 = load ptr, ptr %16, align 8, !tbaa !5
  %294 = call i32 @lsame_(ptr noundef %293, ptr noundef @.str.11)
  %295 = icmp ne i32 %294, 0
  br i1 %295, label %296, label %477

296:                                              ; preds = %292
  %297 = load ptr, ptr %22, align 8, !tbaa !5
  %298 = load i32, ptr %297, align 4, !tbaa !9
  store i32 %298, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %299

299:                                              ; preds = %319, %296
  %300 = load i32, ptr %42, align 4, !tbaa !9
  %301 = load i32, ptr %39, align 4, !tbaa !9
  %302 = icmp sle i32 %300, %301
  br i1 %302, label %303, label %322

303:                                              ; preds = %299
  %304 = load ptr, ptr %20, align 8, !tbaa !5
  %305 = load ptr, ptr %27, align 8, !tbaa !5
  %306 = load i32, ptr %42, align 4, !tbaa !9
  %307 = load i32, ptr %31, align 4, !tbaa !9
  %308 = mul nsw i32 %306, %307
  %309 = add nsw i32 %308, 1
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds double, ptr %305, i64 %310
  %312 = load ptr, ptr %29, align 8, !tbaa !5
  %313 = load i32, ptr %42, align 4, !tbaa !9
  %314 = load i32, ptr %37, align 4, !tbaa !9
  %315 = mul nsw i32 %313, %314
  %316 = add nsw i32 %315, 1
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds double, ptr %312, i64 %317
  call void @dcopy_(ptr noundef %304, ptr noundef %311, ptr noundef @c__1, ptr noundef %318, ptr noundef @c__1)
  br label %319

319:                                              ; preds = %303
  %320 = load i32, ptr %42, align 4, !tbaa !9
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %42, align 4, !tbaa !9
  br label %299, !llvm.loop !18

322:                                              ; preds = %299
  %323 = load ptr, ptr %20, align 8, !tbaa !5
  %324 = load ptr, ptr %22, align 8, !tbaa !5
  %325 = load ptr, ptr %23, align 8, !tbaa !5
  %326 = load i32, ptr %36, align 4, !tbaa !9
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds double, ptr %325, i64 %327
  %329 = load ptr, ptr %24, align 8, !tbaa !5
  %330 = load ptr, ptr %29, align 8, !tbaa !5
  %331 = load i32, ptr %38, align 4, !tbaa !9
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds double, ptr %330, i64 %332
  %334 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %323, ptr noundef %324, ptr noundef @c_b14, ptr noundef %328, ptr noundef %329, ptr noundef %333, ptr noundef %334)
  %335 = load ptr, ptr %21, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = load ptr, ptr %22, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = icmp sgt i32 %336, %338
  br i1 %339, label %340, label %372

340:                                              ; preds = %322
  %341 = load ptr, ptr %21, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = load ptr, ptr %22, align 8, !tbaa !5
  %344 = load i32, ptr %343, align 4, !tbaa !9
  %345 = sub nsw i32 %342, %344
  store i32 %345, ptr %39, align 4, !tbaa !9
  %346 = load ptr, ptr %20, align 8, !tbaa !5
  %347 = load ptr, ptr %22, align 8, !tbaa !5
  %348 = load ptr, ptr %27, align 8, !tbaa !5
  %349 = load ptr, ptr %22, align 8, !tbaa !5
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = add nsw i32 %350, 1
  %352 = load i32, ptr %31, align 4, !tbaa !9
  %353 = mul nsw i32 %351, %352
  %354 = add nsw i32 %353, 1
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds double, ptr %348, i64 %355
  %357 = load ptr, ptr %28, align 8, !tbaa !5
  %358 = load ptr, ptr %23, align 8, !tbaa !5
  %359 = load ptr, ptr %22, align 8, !tbaa !5
  %360 = load i32, ptr %359, align 4, !tbaa !9
  %361 = add nsw i32 %360, 1
  %362 = load i32, ptr %35, align 4, !tbaa !9
  %363 = add nsw i32 %361, %362
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds double, ptr %358, i64 %364
  %366 = load ptr, ptr %24, align 8, !tbaa !5
  %367 = load ptr, ptr %29, align 8, !tbaa !5
  %368 = load i32, ptr %38, align 4, !tbaa !9
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %367, i64 %369
  %371 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %346, ptr noundef %347, ptr noundef %39, ptr noundef @c_b14, ptr noundef %356, ptr noundef %357, ptr noundef %365, ptr noundef %366, ptr noundef @c_b14, ptr noundef %370, ptr noundef %371)
  br label %372

372:                                              ; preds = %340, %322
  %373 = load ptr, ptr %17, align 8, !tbaa !5
  %374 = load ptr, ptr %20, align 8, !tbaa !5
  %375 = load ptr, ptr %22, align 8, !tbaa !5
  %376 = load ptr, ptr %25, align 8, !tbaa !5
  %377 = load i32, ptr %34, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %376, i64 %378
  %380 = load ptr, ptr %26, align 8, !tbaa !5
  %381 = load ptr, ptr %29, align 8, !tbaa !5
  %382 = load i32, ptr %38, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds double, ptr %381, i64 %383
  %385 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef %373, ptr noundef @.str.10, ptr noundef %374, ptr noundef %375, ptr noundef @c_b14, ptr noundef %379, ptr noundef %380, ptr noundef %384, ptr noundef %385)
  %386 = load ptr, ptr %21, align 8, !tbaa !5
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = load ptr, ptr %22, align 8, !tbaa !5
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = icmp sgt i32 %387, %389
  br i1 %390, label %391, label %423

391:                                              ; preds = %372
  %392 = load ptr, ptr %21, align 8, !tbaa !5
  %393 = load i32, ptr %392, align 4, !tbaa !9
  %394 = load ptr, ptr %22, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = sub nsw i32 %393, %395
  store i32 %396, ptr %39, align 4, !tbaa !9
  %397 = load ptr, ptr %20, align 8, !tbaa !5
  %398 = load ptr, ptr %22, align 8, !tbaa !5
  %399 = load ptr, ptr %29, align 8, !tbaa !5
  %400 = load i32, ptr %38, align 4, !tbaa !9
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds double, ptr %399, i64 %401
  %403 = load ptr, ptr %30, align 8, !tbaa !5
  %404 = load ptr, ptr %23, align 8, !tbaa !5
  %405 = load ptr, ptr %22, align 8, !tbaa !5
  %406 = load i32, ptr %405, align 4, !tbaa !9
  %407 = add nsw i32 %406, 1
  %408 = load i32, ptr %35, align 4, !tbaa !9
  %409 = add nsw i32 %407, %408
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds double, ptr %404, i64 %410
  %412 = load ptr, ptr %24, align 8, !tbaa !5
  %413 = load ptr, ptr %27, align 8, !tbaa !5
  %414 = load ptr, ptr %22, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = add nsw i32 %415, 1
  %417 = load i32, ptr %31, align 4, !tbaa !9
  %418 = mul nsw i32 %416, %417
  %419 = add nsw i32 %418, 1
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds double, ptr %413, i64 %420
  %422 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %397, ptr noundef %39, ptr noundef %398, ptr noundef @c_b25, ptr noundef %402, ptr noundef %403, ptr noundef %411, ptr noundef %412, ptr noundef @c_b14, ptr noundef %421, ptr noundef %422)
  br label %423

423:                                              ; preds = %391, %372
  %424 = load ptr, ptr %20, align 8, !tbaa !5
  %425 = load ptr, ptr %22, align 8, !tbaa !5
  %426 = load ptr, ptr %23, align 8, !tbaa !5
  %427 = load i32, ptr %36, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %426, i64 %428
  %430 = load ptr, ptr %24, align 8, !tbaa !5
  %431 = load ptr, ptr %29, align 8, !tbaa !5
  %432 = load i32, ptr %38, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds double, ptr %431, i64 %433
  %435 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %424, ptr noundef %425, ptr noundef @c_b14, ptr noundef %429, ptr noundef %430, ptr noundef %434, ptr noundef %435)
  %436 = load ptr, ptr %22, align 8, !tbaa !5
  %437 = load i32, ptr %436, align 4, !tbaa !9
  store i32 %437, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %438

438:                                              ; preds = %473, %423
  %439 = load i32, ptr %42, align 4, !tbaa !9
  %440 = load i32, ptr %39, align 4, !tbaa !9
  %441 = icmp sle i32 %439, %440
  br i1 %441, label %442, label %476

442:                                              ; preds = %438
  %443 = load ptr, ptr %20, align 8, !tbaa !5
  %444 = load i32, ptr %443, align 4, !tbaa !9
  store i32 %444, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %445

445:                                              ; preds = %469, %442
  %446 = load i32, ptr %41, align 4, !tbaa !9
  %447 = load i32, ptr %40, align 4, !tbaa !9
  %448 = icmp sle i32 %446, %447
  br i1 %448, label %449, label %472

449:                                              ; preds = %445
  %450 = load ptr, ptr %29, align 8, !tbaa !5
  %451 = load i32, ptr %41, align 4, !tbaa !9
  %452 = load i32, ptr %42, align 4, !tbaa !9
  %453 = load i32, ptr %37, align 4, !tbaa !9
  %454 = mul nsw i32 %452, %453
  %455 = add nsw i32 %451, %454
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds double, ptr %450, i64 %456
  %458 = load double, ptr %457, align 8, !tbaa !14
  %459 = load ptr, ptr %27, align 8, !tbaa !5
  %460 = load i32, ptr %41, align 4, !tbaa !9
  %461 = load i32, ptr %42, align 4, !tbaa !9
  %462 = load i32, ptr %31, align 4, !tbaa !9
  %463 = mul nsw i32 %461, %462
  %464 = add nsw i32 %460, %463
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %459, i64 %465
  %467 = load double, ptr %466, align 8, !tbaa !14
  %468 = fsub double %467, %458
  store double %468, ptr %466, align 8, !tbaa !14
  br label %469

469:                                              ; preds = %449
  %470 = load i32, ptr %41, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr %41, align 4, !tbaa !9
  br label %445, !llvm.loop !19

472:                                              ; preds = %445
  br label %473

473:                                              ; preds = %472
  %474 = load i32, ptr %42, align 4, !tbaa !9
  %475 = add nsw i32 %474, 1
  store i32 %475, ptr %42, align 4, !tbaa !9
  br label %438, !llvm.loop !20

476:                                              ; preds = %438
  br label %477

477:                                              ; preds = %476, %292
  br label %478

478:                                              ; preds = %477, %291
  br label %867

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

483:                                              ; preds = %479
  %484 = load ptr, ptr %22, align 8, !tbaa !5
  %485 = load i32, ptr %484, align 4, !tbaa !9
  store i32 %485, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %486

486:                                              ; preds = %512, %483
  %487 = load i32, ptr %42, align 4, !tbaa !9
  %488 = load i32, ptr %39, align 4, !tbaa !9
  %489 = icmp sle i32 %487, %488
  br i1 %489, label %490, label %515

490:                                              ; preds = %486
  %491 = load ptr, ptr %21, align 8, !tbaa !5
  %492 = load ptr, ptr %27, align 8, !tbaa !5
  %493 = load ptr, ptr %20, align 8, !tbaa !5
  %494 = load i32, ptr %493, align 4, !tbaa !9
  %495 = load ptr, ptr %22, align 8, !tbaa !5
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = sub nsw i32 %494, %496
  %498 = load i32, ptr %42, align 4, !tbaa !9
  %499 = add nsw i32 %497, %498
  %500 = load i32, ptr %31, align 4, !tbaa !9
  %501 = add nsw i32 %499, %500
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds double, ptr %492, i64 %502
  %504 = load ptr, ptr %28, align 8, !tbaa !5
  %505 = load ptr, ptr %29, align 8, !tbaa !5
  %506 = load i32, ptr %42, align 4, !tbaa !9
  %507 = load i32, ptr %37, align 4, !tbaa !9
  %508 = mul nsw i32 %506, %507
  %509 = add nsw i32 %508, 1
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %505, i64 %510
  call void @dcopy_(ptr noundef %491, ptr noundef %503, ptr noundef %504, ptr noundef %511, ptr noundef @c__1)
  br label %512

512:                                              ; preds = %490
  %513 = load i32, ptr %42, align 4, !tbaa !9
  %514 = add nsw i32 %513, 1
  store i32 %514, ptr %42, align 4, !tbaa !9
  br label %486, !llvm.loop !21

515:                                              ; preds = %486
  %516 = load ptr, ptr %21, align 8, !tbaa !5
  %517 = load ptr, ptr %22, align 8, !tbaa !5
  %518 = load ptr, ptr %23, align 8, !tbaa !5
  %519 = load ptr, ptr %20, align 8, !tbaa !5
  %520 = load i32, ptr %519, align 4, !tbaa !9
  %521 = load ptr, ptr %22, align 8, !tbaa !5
  %522 = load i32, ptr %521, align 4, !tbaa !9
  %523 = sub nsw i32 %520, %522
  %524 = add nsw i32 %523, 1
  %525 = load i32, ptr %35, align 4, !tbaa !9
  %526 = add nsw i32 %524, %525
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %518, i64 %527
  %529 = load ptr, ptr %24, align 8, !tbaa !5
  %530 = load ptr, ptr %29, align 8, !tbaa !5
  %531 = load i32, ptr %38, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %530, i64 %532
  %534 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %516, ptr noundef %517, ptr noundef @c_b14, ptr noundef %528, ptr noundef %529, ptr noundef %533, ptr noundef %534)
  %535 = load ptr, ptr %20, align 8, !tbaa !5
  %536 = load i32, ptr %535, align 4, !tbaa !9
  %537 = load ptr, ptr %22, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = icmp sgt i32 %536, %538
  br i1 %539, label %540, label %563

540:                                              ; preds = %515
  %541 = load ptr, ptr %20, align 8, !tbaa !5
  %542 = load i32, ptr %541, align 4, !tbaa !9
  %543 = load ptr, ptr %22, align 8, !tbaa !5
  %544 = load i32, ptr %543, align 4, !tbaa !9
  %545 = sub nsw i32 %542, %544
  store i32 %545, ptr %39, align 4, !tbaa !9
  %546 = load ptr, ptr %21, align 8, !tbaa !5
  %547 = load ptr, ptr %22, align 8, !tbaa !5
  %548 = load ptr, ptr %27, align 8, !tbaa !5
  %549 = load i32, ptr %32, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds double, ptr %548, i64 %550
  %552 = load ptr, ptr %28, align 8, !tbaa !5
  %553 = load ptr, ptr %23, align 8, !tbaa !5
  %554 = load i32, ptr %36, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds double, ptr %553, i64 %555
  %557 = load ptr, ptr %24, align 8, !tbaa !5
  %558 = load ptr, ptr %29, align 8, !tbaa !5
  %559 = load i32, ptr %38, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds double, ptr %558, i64 %560
  %562 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.8, ptr noundef @.str.6, ptr noundef %546, ptr noundef %547, ptr noundef %39, ptr noundef @c_b14, ptr noundef %551, ptr noundef %552, ptr noundef %556, ptr noundef %557, ptr noundef @c_b14, ptr noundef %561, ptr noundef %562)
  br label %563

563:                                              ; preds = %540, %515
  %564 = getelementptr inbounds [1 x i8], ptr %43, i64 0, i64 0
  %565 = load ptr, ptr %21, align 8, !tbaa !5
  %566 = load ptr, ptr %22, align 8, !tbaa !5
  %567 = load ptr, ptr %25, align 8, !tbaa !5
  %568 = load i32, ptr %34, align 4, !tbaa !9
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds double, ptr %567, i64 %569
  %571 = load ptr, ptr %26, align 8, !tbaa !5
  %572 = load ptr, ptr %29, align 8, !tbaa !5
  %573 = load i32, ptr %38, align 4, !tbaa !9
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds double, ptr %572, i64 %574
  %576 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %564, ptr noundef @.str.10, ptr noundef %565, ptr noundef %566, ptr noundef @c_b14, ptr noundef %570, ptr noundef %571, ptr noundef %575, ptr noundef %576)
  %577 = load ptr, ptr %20, align 8, !tbaa !5
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = load ptr, ptr %22, align 8, !tbaa !5
  %580 = load i32, ptr %579, align 4, !tbaa !9
  %581 = icmp sgt i32 %578, %580
  br i1 %581, label %582, label %605

582:                                              ; preds = %563
  %583 = load ptr, ptr %20, align 8, !tbaa !5
  %584 = load i32, ptr %583, align 4, !tbaa !9
  %585 = load ptr, ptr %22, align 8, !tbaa !5
  %586 = load i32, ptr %585, align 4, !tbaa !9
  %587 = sub nsw i32 %584, %586
  store i32 %587, ptr %39, align 4, !tbaa !9
  %588 = load ptr, ptr %21, align 8, !tbaa !5
  %589 = load ptr, ptr %22, align 8, !tbaa !5
  %590 = load ptr, ptr %23, align 8, !tbaa !5
  %591 = load i32, ptr %36, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %590, i64 %592
  %594 = load ptr, ptr %24, align 8, !tbaa !5
  %595 = load ptr, ptr %29, align 8, !tbaa !5
  %596 = load i32, ptr %38, align 4, !tbaa !9
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds double, ptr %595, i64 %597
  %599 = load ptr, ptr %30, align 8, !tbaa !5
  %600 = load ptr, ptr %27, align 8, !tbaa !5
  %601 = load i32, ptr %32, align 4, !tbaa !9
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds double, ptr %600, i64 %602
  %604 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %39, ptr noundef %588, ptr noundef %589, ptr noundef @c_b25, ptr noundef %593, ptr noundef %594, ptr noundef %598, ptr noundef %599, ptr noundef @c_b14, ptr noundef %603, ptr noundef %604)
  br label %605

605:                                              ; preds = %582, %563
  %606 = load ptr, ptr %21, align 8, !tbaa !5
  %607 = load ptr, ptr %22, align 8, !tbaa !5
  %608 = load ptr, ptr %23, align 8, !tbaa !5
  %609 = load ptr, ptr %20, align 8, !tbaa !5
  %610 = load i32, ptr %609, align 4, !tbaa !9
  %611 = load ptr, ptr %22, align 8, !tbaa !5
  %612 = load i32, ptr %611, align 4, !tbaa !9
  %613 = sub nsw i32 %610, %612
  %614 = add nsw i32 %613, 1
  %615 = load i32, ptr %35, align 4, !tbaa !9
  %616 = add nsw i32 %614, %615
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds double, ptr %608, i64 %617
  %619 = load ptr, ptr %24, align 8, !tbaa !5
  %620 = load ptr, ptr %29, align 8, !tbaa !5
  %621 = load i32, ptr %38, align 4, !tbaa !9
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds double, ptr %620, i64 %622
  %624 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %606, ptr noundef %607, ptr noundef @c_b14, ptr noundef %618, ptr noundef %619, ptr noundef %623, ptr noundef %624)
  %625 = load ptr, ptr %22, align 8, !tbaa !5
  %626 = load i32, ptr %625, align 4, !tbaa !9
  store i32 %626, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %627

627:                                              ; preds = %668, %605
  %628 = load i32, ptr %42, align 4, !tbaa !9
  %629 = load i32, ptr %39, align 4, !tbaa !9
  %630 = icmp sle i32 %628, %629
  br i1 %630, label %631, label %671

631:                                              ; preds = %627
  %632 = load ptr, ptr %21, align 8, !tbaa !5
  %633 = load i32, ptr %632, align 4, !tbaa !9
  store i32 %633, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %634

634:                                              ; preds = %664, %631
  %635 = load i32, ptr %41, align 4, !tbaa !9
  %636 = load i32, ptr %40, align 4, !tbaa !9
  %637 = icmp sle i32 %635, %636
  br i1 %637, label %638, label %667

638:                                              ; preds = %634
  %639 = load ptr, ptr %29, align 8, !tbaa !5
  %640 = load i32, ptr %41, align 4, !tbaa !9
  %641 = load i32, ptr %42, align 4, !tbaa !9
  %642 = load i32, ptr %37, align 4, !tbaa !9
  %643 = mul nsw i32 %641, %642
  %644 = add nsw i32 %640, %643
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %639, i64 %645
  %647 = load double, ptr %646, align 8, !tbaa !14
  %648 = load ptr, ptr %27, align 8, !tbaa !5
  %649 = load ptr, ptr %20, align 8, !tbaa !5
  %650 = load i32, ptr %649, align 4, !tbaa !9
  %651 = load ptr, ptr %22, align 8, !tbaa !5
  %652 = load i32, ptr %651, align 4, !tbaa !9
  %653 = sub nsw i32 %650, %652
  %654 = load i32, ptr %42, align 4, !tbaa !9
  %655 = add nsw i32 %653, %654
  %656 = load i32, ptr %41, align 4, !tbaa !9
  %657 = load i32, ptr %31, align 4, !tbaa !9
  %658 = mul nsw i32 %656, %657
  %659 = add nsw i32 %655, %658
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %648, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !14
  %663 = fsub double %662, %647
  store double %663, ptr %661, align 8, !tbaa !14
  br label %664

664:                                              ; preds = %638
  %665 = load i32, ptr %41, align 4, !tbaa !9
  %666 = add nsw i32 %665, 1
  store i32 %666, ptr %41, align 4, !tbaa !9
  br label %634, !llvm.loop !22

667:                                              ; preds = %634
  br label %668

668:                                              ; preds = %667
  %669 = load i32, ptr %42, align 4, !tbaa !9
  %670 = add nsw i32 %669, 1
  store i32 %670, ptr %42, align 4, !tbaa !9
  br label %627, !llvm.loop !23

671:                                              ; preds = %627
  br label %866

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

676:                                              ; preds = %672
  %677 = load ptr, ptr %22, align 8, !tbaa !5
  %678 = load i32, ptr %677, align 4, !tbaa !9
  store i32 %678, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %679

679:                                              ; preds = %705, %676
  %680 = load i32, ptr %42, align 4, !tbaa !9
  %681 = load i32, ptr %39, align 4, !tbaa !9
  %682 = icmp sle i32 %680, %681
  br i1 %682, label %683, label %708

683:                                              ; preds = %679
  %684 = load ptr, ptr %20, align 8, !tbaa !5
  %685 = load ptr, ptr %27, align 8, !tbaa !5
  %686 = load ptr, ptr %21, align 8, !tbaa !5
  %687 = load i32, ptr %686, align 4, !tbaa !9
  %688 = load ptr, ptr %22, align 8, !tbaa !5
  %689 = load i32, ptr %688, align 4, !tbaa !9
  %690 = sub nsw i32 %687, %689
  %691 = load i32, ptr %42, align 4, !tbaa !9
  %692 = add nsw i32 %690, %691
  %693 = load i32, ptr %31, align 4, !tbaa !9
  %694 = mul nsw i32 %692, %693
  %695 = add nsw i32 %694, 1
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds double, ptr %685, i64 %696
  %698 = load ptr, ptr %29, align 8, !tbaa !5
  %699 = load i32, ptr %42, align 4, !tbaa !9
  %700 = load i32, ptr %37, align 4, !tbaa !9
  %701 = mul nsw i32 %699, %700
  %702 = add nsw i32 %701, 1
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds double, ptr %698, i64 %703
  call void @dcopy_(ptr noundef %684, ptr noundef %697, ptr noundef @c__1, ptr noundef %704, ptr noundef @c__1)
  br label %705

705:                                              ; preds = %683
  %706 = load i32, ptr %42, align 4, !tbaa !9
  %707 = add nsw i32 %706, 1
  store i32 %707, ptr %42, align 4, !tbaa !9
  br label %679, !llvm.loop !24

708:                                              ; preds = %679
  %709 = load ptr, ptr %20, align 8, !tbaa !5
  %710 = load ptr, ptr %22, align 8, !tbaa !5
  %711 = load ptr, ptr %23, align 8, !tbaa !5
  %712 = load ptr, ptr %21, align 8, !tbaa !5
  %713 = load i32, ptr %712, align 4, !tbaa !9
  %714 = load ptr, ptr %22, align 8, !tbaa !5
  %715 = load i32, ptr %714, align 4, !tbaa !9
  %716 = sub nsw i32 %713, %715
  %717 = add nsw i32 %716, 1
  %718 = load i32, ptr %35, align 4, !tbaa !9
  %719 = add nsw i32 %717, %718
  %720 = sext i32 %719 to i64
  %721 = getelementptr inbounds double, ptr %711, i64 %720
  %722 = load ptr, ptr %24, align 8, !tbaa !5
  %723 = load ptr, ptr %29, align 8, !tbaa !5
  %724 = load i32, ptr %38, align 4, !tbaa !9
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %723, i64 %725
  %727 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %709, ptr noundef %710, ptr noundef @c_b14, ptr noundef %721, ptr noundef %722, ptr noundef %726, ptr noundef %727)
  %728 = load ptr, ptr %21, align 8, !tbaa !5
  %729 = load i32, ptr %728, align 4, !tbaa !9
  %730 = load ptr, ptr %22, align 8, !tbaa !5
  %731 = load i32, ptr %730, align 4, !tbaa !9
  %732 = icmp sgt i32 %729, %731
  br i1 %732, label %733, label %756

733:                                              ; preds = %708
  %734 = load ptr, ptr %21, align 8, !tbaa !5
  %735 = load i32, ptr %734, align 4, !tbaa !9
  %736 = load ptr, ptr %22, align 8, !tbaa !5
  %737 = load i32, ptr %736, align 4, !tbaa !9
  %738 = sub nsw i32 %735, %737
  store i32 %738, ptr %39, align 4, !tbaa !9
  %739 = load ptr, ptr %20, align 8, !tbaa !5
  %740 = load ptr, ptr %22, align 8, !tbaa !5
  %741 = load ptr, ptr %27, align 8, !tbaa !5
  %742 = load i32, ptr %32, align 4, !tbaa !9
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds double, ptr %741, i64 %743
  %745 = load ptr, ptr %28, align 8, !tbaa !5
  %746 = load ptr, ptr %23, align 8, !tbaa !5
  %747 = load i32, ptr %36, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds double, ptr %746, i64 %748
  %750 = load ptr, ptr %24, align 8, !tbaa !5
  %751 = load ptr, ptr %29, align 8, !tbaa !5
  %752 = load i32, ptr %38, align 4, !tbaa !9
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds double, ptr %751, i64 %753
  %755 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %739, ptr noundef %740, ptr noundef %39, ptr noundef @c_b14, ptr noundef %744, ptr noundef %745, ptr noundef %749, ptr noundef %750, ptr noundef @c_b14, ptr noundef %754, ptr noundef %755)
  br label %756

756:                                              ; preds = %733, %708
  %757 = load ptr, ptr %17, align 8, !tbaa !5
  %758 = load ptr, ptr %20, align 8, !tbaa !5
  %759 = load ptr, ptr %22, align 8, !tbaa !5
  %760 = load ptr, ptr %25, align 8, !tbaa !5
  %761 = load i32, ptr %34, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %760, i64 %762
  %764 = load ptr, ptr %26, align 8, !tbaa !5
  %765 = load ptr, ptr %29, align 8, !tbaa !5
  %766 = load i32, ptr %38, align 4, !tbaa !9
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds double, ptr %765, i64 %767
  %769 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %757, ptr noundef @.str.10, ptr noundef %758, ptr noundef %759, ptr noundef @c_b14, ptr noundef %763, ptr noundef %764, ptr noundef %768, ptr noundef %769)
  %770 = load ptr, ptr %21, align 8, !tbaa !5
  %771 = load i32, ptr %770, align 4, !tbaa !9
  %772 = load ptr, ptr %22, align 8, !tbaa !5
  %773 = load i32, ptr %772, align 4, !tbaa !9
  %774 = icmp sgt i32 %771, %773
  br i1 %774, label %775, label %798

775:                                              ; preds = %756
  %776 = load ptr, ptr %21, align 8, !tbaa !5
  %777 = load i32, ptr %776, align 4, !tbaa !9
  %778 = load ptr, ptr %22, align 8, !tbaa !5
  %779 = load i32, ptr %778, align 4, !tbaa !9
  %780 = sub nsw i32 %777, %779
  store i32 %780, ptr %39, align 4, !tbaa !9
  %781 = load ptr, ptr %20, align 8, !tbaa !5
  %782 = load ptr, ptr %22, align 8, !tbaa !5
  %783 = load ptr, ptr %29, align 8, !tbaa !5
  %784 = load i32, ptr %38, align 4, !tbaa !9
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds double, ptr %783, i64 %785
  %787 = load ptr, ptr %30, align 8, !tbaa !5
  %788 = load ptr, ptr %23, align 8, !tbaa !5
  %789 = load i32, ptr %36, align 4, !tbaa !9
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds double, ptr %788, i64 %790
  %792 = load ptr, ptr %24, align 8, !tbaa !5
  %793 = load ptr, ptr %27, align 8, !tbaa !5
  %794 = load i32, ptr %32, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %793, i64 %795
  %797 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %781, ptr noundef %39, ptr noundef %782, ptr noundef @c_b25, ptr noundef %786, ptr noundef %787, ptr noundef %791, ptr noundef %792, ptr noundef @c_b14, ptr noundef %796, ptr noundef %797)
  br label %798

798:                                              ; preds = %775, %756
  %799 = load ptr, ptr %20, align 8, !tbaa !5
  %800 = load ptr, ptr %22, align 8, !tbaa !5
  %801 = load ptr, ptr %23, align 8, !tbaa !5
  %802 = load ptr, ptr %21, align 8, !tbaa !5
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = load ptr, ptr %22, align 8, !tbaa !5
  %805 = load i32, ptr %804, align 4, !tbaa !9
  %806 = sub nsw i32 %803, %805
  %807 = add nsw i32 %806, 1
  %808 = load i32, ptr %35, align 4, !tbaa !9
  %809 = add nsw i32 %807, %808
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds double, ptr %801, i64 %810
  %812 = load ptr, ptr %24, align 8, !tbaa !5
  %813 = load ptr, ptr %29, align 8, !tbaa !5
  %814 = load i32, ptr %38, align 4, !tbaa !9
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds double, ptr %813, i64 %815
  %817 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %799, ptr noundef %800, ptr noundef @c_b14, ptr noundef %811, ptr noundef %812, ptr noundef %816, ptr noundef %817)
  %818 = load ptr, ptr %22, align 8, !tbaa !5
  %819 = load i32, ptr %818, align 4, !tbaa !9
  store i32 %819, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %820

820:                                              ; preds = %861, %798
  %821 = load i32, ptr %42, align 4, !tbaa !9
  %822 = load i32, ptr %39, align 4, !tbaa !9
  %823 = icmp sle i32 %821, %822
  br i1 %823, label %824, label %864

824:                                              ; preds = %820
  %825 = load ptr, ptr %20, align 8, !tbaa !5
  %826 = load i32, ptr %825, align 4, !tbaa !9
  store i32 %826, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %827

827:                                              ; preds = %857, %824
  %828 = load i32, ptr %41, align 4, !tbaa !9
  %829 = load i32, ptr %40, align 4, !tbaa !9
  %830 = icmp sle i32 %828, %829
  br i1 %830, label %831, label %860

831:                                              ; preds = %827
  %832 = load ptr, ptr %29, align 8, !tbaa !5
  %833 = load i32, ptr %41, align 4, !tbaa !9
  %834 = load i32, ptr %42, align 4, !tbaa !9
  %835 = load i32, ptr %37, align 4, !tbaa !9
  %836 = mul nsw i32 %834, %835
  %837 = add nsw i32 %833, %836
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds double, ptr %832, i64 %838
  %840 = load double, ptr %839, align 8, !tbaa !14
  %841 = load ptr, ptr %27, align 8, !tbaa !5
  %842 = load i32, ptr %41, align 4, !tbaa !9
  %843 = load ptr, ptr %21, align 8, !tbaa !5
  %844 = load i32, ptr %843, align 4, !tbaa !9
  %845 = load ptr, ptr %22, align 8, !tbaa !5
  %846 = load i32, ptr %845, align 4, !tbaa !9
  %847 = sub nsw i32 %844, %846
  %848 = load i32, ptr %42, align 4, !tbaa !9
  %849 = add nsw i32 %847, %848
  %850 = load i32, ptr %31, align 4, !tbaa !9
  %851 = mul nsw i32 %849, %850
  %852 = add nsw i32 %842, %851
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds double, ptr %841, i64 %853
  %855 = load double, ptr %854, align 8, !tbaa !14
  %856 = fsub double %855, %840
  store double %856, ptr %854, align 8, !tbaa !14
  br label %857

857:                                              ; preds = %831
  %858 = load i32, ptr %41, align 4, !tbaa !9
  %859 = add nsw i32 %858, 1
  store i32 %859, ptr %41, align 4, !tbaa !9
  br label %827, !llvm.loop !25

860:                                              ; preds = %827
  br label %861

861:                                              ; preds = %860
  %862 = load i32, ptr %42, align 4, !tbaa !9
  %863 = add nsw i32 %862, 1
  store i32 %863, ptr %42, align 4, !tbaa !9
  br label %820, !llvm.loop !26

864:                                              ; preds = %820
  br label %865

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

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

867:                                              ; preds = %866, %478
  br label %1644

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

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

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

880:                                              ; preds = %876
  %881 = load ptr, ptr %22, align 8, !tbaa !5
  %882 = load i32, ptr %881, align 4, !tbaa !9
  store i32 %882, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %883

883:                                              ; preds = %903, %880
  %884 = load i32, ptr %42, align 4, !tbaa !9
  %885 = load i32, ptr %39, align 4, !tbaa !9
  %886 = icmp sle i32 %884, %885
  br i1 %886, label %887, label %906

887:                                              ; preds = %883
  %888 = load ptr, ptr %21, align 8, !tbaa !5
  %889 = load ptr, ptr %27, align 8, !tbaa !5
  %890 = load i32, ptr %42, align 4, !tbaa !9
  %891 = load i32, ptr %31, align 4, !tbaa !9
  %892 = add nsw i32 %890, %891
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds double, ptr %889, i64 %893
  %895 = load ptr, ptr %28, align 8, !tbaa !5
  %896 = load ptr, ptr %29, align 8, !tbaa !5
  %897 = load i32, ptr %42, align 4, !tbaa !9
  %898 = load i32, ptr %37, align 4, !tbaa !9
  %899 = mul nsw i32 %897, %898
  %900 = add nsw i32 %899, 1
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds double, ptr %896, i64 %901
  call void @dcopy_(ptr noundef %888, ptr noundef %894, ptr noundef %895, ptr noundef %902, ptr noundef @c__1)
  br label %903

903:                                              ; preds = %887
  %904 = load i32, ptr %42, align 4, !tbaa !9
  %905 = add nsw i32 %904, 1
  store i32 %905, ptr %42, align 4, !tbaa !9
  br label %883, !llvm.loop !27

906:                                              ; preds = %883
  %907 = load ptr, ptr %21, align 8, !tbaa !5
  %908 = load ptr, ptr %22, align 8, !tbaa !5
  %909 = load ptr, ptr %23, align 8, !tbaa !5
  %910 = load i32, ptr %36, align 4, !tbaa !9
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds double, ptr %909, i64 %911
  %913 = load ptr, ptr %24, align 8, !tbaa !5
  %914 = load ptr, ptr %29, align 8, !tbaa !5
  %915 = load i32, ptr %38, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds double, ptr %914, i64 %916
  %918 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %907, ptr noundef %908, ptr noundef @c_b14, ptr noundef %912, ptr noundef %913, ptr noundef %917, ptr noundef %918)
  %919 = load ptr, ptr %20, align 8, !tbaa !5
  %920 = load i32, ptr %919, align 4, !tbaa !9
  %921 = load ptr, ptr %22, align 8, !tbaa !5
  %922 = load i32, ptr %921, align 4, !tbaa !9
  %923 = icmp sgt i32 %920, %922
  br i1 %923, label %924, label %956

924:                                              ; preds = %906
  %925 = load ptr, ptr %20, align 8, !tbaa !5
  %926 = load i32, ptr %925, align 4, !tbaa !9
  %927 = load ptr, ptr %22, align 8, !tbaa !5
  %928 = load i32, ptr %927, align 4, !tbaa !9
  %929 = sub nsw i32 %926, %928
  store i32 %929, ptr %39, align 4, !tbaa !9
  %930 = load ptr, ptr %21, align 8, !tbaa !5
  %931 = load ptr, ptr %22, align 8, !tbaa !5
  %932 = load ptr, ptr %27, align 8, !tbaa !5
  %933 = load ptr, ptr %22, align 8, !tbaa !5
  %934 = load i32, ptr %933, align 4, !tbaa !9
  %935 = add nsw i32 %934, 1
  %936 = load i32, ptr %31, align 4, !tbaa !9
  %937 = add nsw i32 %935, %936
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds double, ptr %932, i64 %938
  %940 = load ptr, ptr %28, align 8, !tbaa !5
  %941 = load ptr, ptr %23, align 8, !tbaa !5
  %942 = load ptr, ptr %22, align 8, !tbaa !5
  %943 = load i32, ptr %942, align 4, !tbaa !9
  %944 = add nsw i32 %943, 1
  %945 = load i32, ptr %35, align 4, !tbaa !9
  %946 = mul nsw i32 %944, %945
  %947 = add nsw i32 %946, 1
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds double, ptr %941, i64 %948
  %950 = load ptr, ptr %24, align 8, !tbaa !5
  %951 = load ptr, ptr %29, align 8, !tbaa !5
  %952 = load i32, ptr %38, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds double, ptr %951, i64 %953
  %955 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.8, ptr noundef @.str.8, ptr noundef %930, ptr noundef %931, ptr noundef %39, ptr noundef @c_b14, ptr noundef %939, ptr noundef %940, ptr noundef %949, ptr noundef %950, ptr noundef @c_b14, ptr noundef %954, ptr noundef %955)
  br label %956

956:                                              ; preds = %924, %906
  %957 = getelementptr inbounds [1 x i8], ptr %43, i64 0, i64 0
  %958 = load ptr, ptr %21, align 8, !tbaa !5
  %959 = load ptr, ptr %22, align 8, !tbaa !5
  %960 = load ptr, ptr %25, align 8, !tbaa !5
  %961 = load i32, ptr %34, align 4, !tbaa !9
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds double, ptr %960, i64 %962
  %964 = load ptr, ptr %26, align 8, !tbaa !5
  %965 = load ptr, ptr %29, align 8, !tbaa !5
  %966 = load i32, ptr %38, align 4, !tbaa !9
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds double, ptr %965, i64 %967
  %969 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef %957, ptr noundef @.str.10, ptr noundef %958, ptr noundef %959, ptr noundef @c_b14, ptr noundef %963, ptr noundef %964, ptr noundef %968, ptr noundef %969)
  %970 = load ptr, ptr %20, align 8, !tbaa !5
  %971 = load i32, ptr %970, align 4, !tbaa !9
  %972 = load ptr, ptr %22, align 8, !tbaa !5
  %973 = load i32, ptr %972, align 4, !tbaa !9
  %974 = icmp sgt i32 %971, %973
  br i1 %974, label %975, label %1007

975:                                              ; preds = %956
  %976 = load ptr, ptr %20, align 8, !tbaa !5
  %977 = load i32, ptr %976, align 4, !tbaa !9
  %978 = load ptr, ptr %22, align 8, !tbaa !5
  %979 = load i32, ptr %978, align 4, !tbaa !9
  %980 = sub nsw i32 %977, %979
  store i32 %980, ptr %39, align 4, !tbaa !9
  %981 = load ptr, ptr %21, align 8, !tbaa !5
  %982 = load ptr, ptr %22, align 8, !tbaa !5
  %983 = load ptr, ptr %23, align 8, !tbaa !5
  %984 = load ptr, ptr %22, align 8, !tbaa !5
  %985 = load i32, ptr %984, align 4, !tbaa !9
  %986 = add nsw i32 %985, 1
  %987 = load i32, ptr %35, align 4, !tbaa !9
  %988 = mul nsw i32 %986, %987
  %989 = add nsw i32 %988, 1
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds double, ptr %983, i64 %990
  %992 = load ptr, ptr %24, align 8, !tbaa !5
  %993 = load ptr, ptr %29, align 8, !tbaa !5
  %994 = load i32, ptr %38, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds double, ptr %993, i64 %995
  %997 = load ptr, ptr %30, align 8, !tbaa !5
  %998 = load ptr, ptr %27, align 8, !tbaa !5
  %999 = load ptr, ptr %22, align 8, !tbaa !5
  %1000 = load i32, ptr %999, align 4, !tbaa !9
  %1001 = add nsw i32 %1000, 1
  %1002 = load i32, ptr %31, align 4, !tbaa !9
  %1003 = add nsw i32 %1001, %1002
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds double, ptr %998, i64 %1004
  %1006 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.8, ptr noundef @.str.8, ptr noundef %39, ptr noundef %981, ptr noundef %982, ptr noundef @c_b25, ptr noundef %991, ptr noundef %992, ptr noundef %996, ptr noundef %997, ptr noundef @c_b14, ptr noundef %1005, ptr noundef %1006)
  br label %1007

1007:                                             ; preds = %975, %956
  %1008 = load ptr, ptr %21, align 8, !tbaa !5
  %1009 = load ptr, ptr %22, align 8, !tbaa !5
  %1010 = load ptr, ptr %23, align 8, !tbaa !5
  %1011 = load i32, ptr %36, align 4, !tbaa !9
  %1012 = sext i32 %1011 to i64
  %1013 = getelementptr inbounds double, ptr %1010, i64 %1012
  %1014 = load ptr, ptr %24, align 8, !tbaa !5
  %1015 = load ptr, ptr %29, align 8, !tbaa !5
  %1016 = load i32, ptr %38, align 4, !tbaa !9
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds double, ptr %1015, i64 %1017
  %1019 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %1008, ptr noundef %1009, ptr noundef @c_b14, ptr noundef %1013, ptr noundef %1014, ptr noundef %1018, ptr noundef %1019)
  %1020 = load ptr, ptr %22, align 8, !tbaa !5
  %1021 = load i32, ptr %1020, align 4, !tbaa !9
  store i32 %1021, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1022

1022:                                             ; preds = %1057, %1007
  %1023 = load i32, ptr %42, align 4, !tbaa !9
  %1024 = load i32, ptr %39, align 4, !tbaa !9
  %1025 = icmp sle i32 %1023, %1024
  br i1 %1025, label %1026, label %1060

1026:                                             ; preds = %1022
  %1027 = load ptr, ptr %21, align 8, !tbaa !5
  %1028 = load i32, ptr %1027, align 4, !tbaa !9
  store i32 %1028, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %1029

1029:                                             ; preds = %1053, %1026
  %1030 = load i32, ptr %41, align 4, !tbaa !9
  %1031 = load i32, ptr %40, align 4, !tbaa !9
  %1032 = icmp sle i32 %1030, %1031
  br i1 %1032, label %1033, label %1056

1033:                                             ; preds = %1029
  %1034 = load ptr, ptr %29, align 8, !tbaa !5
  %1035 = load i32, ptr %41, align 4, !tbaa !9
  %1036 = load i32, ptr %42, align 4, !tbaa !9
  %1037 = load i32, ptr %37, align 4, !tbaa !9
  %1038 = mul nsw i32 %1036, %1037
  %1039 = add nsw i32 %1035, %1038
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds double, ptr %1034, i64 %1040
  %1042 = load double, ptr %1041, align 8, !tbaa !14
  %1043 = load ptr, ptr %27, align 8, !tbaa !5
  %1044 = load i32, ptr %42, align 4, !tbaa !9
  %1045 = load i32, ptr %41, align 4, !tbaa !9
  %1046 = load i32, ptr %31, align 4, !tbaa !9
  %1047 = mul nsw i32 %1045, %1046
  %1048 = add nsw i32 %1044, %1047
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds double, ptr %1043, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !14
  %1052 = fsub double %1051, %1042
  store double %1052, ptr %1050, align 8, !tbaa !14
  br label %1053

1053:                                             ; preds = %1033
  %1054 = load i32, ptr %41, align 4, !tbaa !9
  %1055 = add nsw i32 %1054, 1
  store i32 %1055, ptr %41, align 4, !tbaa !9
  br label %1029, !llvm.loop !28

1056:                                             ; preds = %1029
  br label %1057

1057:                                             ; preds = %1056
  %1058 = load i32, ptr %42, align 4, !tbaa !9
  %1059 = add nsw i32 %1058, 1
  store i32 %1059, ptr %42, align 4, !tbaa !9
  br label %1022, !llvm.loop !29

1060:                                             ; preds = %1022
  br label %1249

1061:                                             ; preds = %876
  %1062 = load ptr, ptr %16, align 8, !tbaa !5
  %1063 = call i32 @lsame_(ptr noundef %1062, ptr noundef @.str.11)
  %1064 = icmp ne i32 %1063, 0
  br i1 %1064, label %1065, label %1248

1065:                                             ; preds = %1061
  %1066 = load ptr, ptr %22, align 8, !tbaa !5
  %1067 = load i32, ptr %1066, align 4, !tbaa !9
  store i32 %1067, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1068

1068:                                             ; preds = %1088, %1065
  %1069 = load i32, ptr %42, align 4, !tbaa !9
  %1070 = load i32, ptr %39, align 4, !tbaa !9
  %1071 = icmp sle i32 %1069, %1070
  br i1 %1071, label %1072, label %1091

1072:                                             ; preds = %1068
  %1073 = load ptr, ptr %20, align 8, !tbaa !5
  %1074 = load ptr, ptr %27, align 8, !tbaa !5
  %1075 = load i32, ptr %42, align 4, !tbaa !9
  %1076 = load i32, ptr %31, align 4, !tbaa !9
  %1077 = mul nsw i32 %1075, %1076
  %1078 = add nsw i32 %1077, 1
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds double, ptr %1074, i64 %1079
  %1081 = load ptr, ptr %29, align 8, !tbaa !5
  %1082 = load i32, ptr %42, align 4, !tbaa !9
  %1083 = load i32, ptr %37, align 4, !tbaa !9
  %1084 = mul nsw i32 %1082, %1083
  %1085 = add nsw i32 %1084, 1
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds double, ptr %1081, i64 %1086
  call void @dcopy_(ptr noundef %1073, ptr noundef %1080, ptr noundef @c__1, ptr noundef %1087, ptr noundef @c__1)
  br label %1088

1088:                                             ; preds = %1072
  %1089 = load i32, ptr %42, align 4, !tbaa !9
  %1090 = add nsw i32 %1089, 1
  store i32 %1090, ptr %42, align 4, !tbaa !9
  br label %1068, !llvm.loop !30

1091:                                             ; preds = %1068
  %1092 = load ptr, ptr %20, align 8, !tbaa !5
  %1093 = load ptr, ptr %22, align 8, !tbaa !5
  %1094 = load ptr, ptr %23, align 8, !tbaa !5
  %1095 = load i32, ptr %36, align 4, !tbaa !9
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds double, ptr %1094, i64 %1096
  %1098 = load ptr, ptr %24, align 8, !tbaa !5
  %1099 = load ptr, ptr %29, align 8, !tbaa !5
  %1100 = load i32, ptr %38, align 4, !tbaa !9
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds double, ptr %1099, i64 %1101
  %1103 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %1092, ptr noundef %1093, ptr noundef @c_b14, ptr noundef %1097, ptr noundef %1098, ptr noundef %1102, ptr noundef %1103)
  %1104 = load ptr, ptr %21, align 8, !tbaa !5
  %1105 = load i32, ptr %1104, align 4, !tbaa !9
  %1106 = load ptr, ptr %22, align 8, !tbaa !5
  %1107 = load i32, ptr %1106, align 4, !tbaa !9
  %1108 = icmp sgt i32 %1105, %1107
  br i1 %1108, label %1109, label %1142

1109:                                             ; preds = %1091
  %1110 = load ptr, ptr %21, align 8, !tbaa !5
  %1111 = load i32, ptr %1110, align 4, !tbaa !9
  %1112 = load ptr, ptr %22, align 8, !tbaa !5
  %1113 = load i32, ptr %1112, align 4, !tbaa !9
  %1114 = sub nsw i32 %1111, %1113
  store i32 %1114, ptr %39, align 4, !tbaa !9
  %1115 = load ptr, ptr %20, align 8, !tbaa !5
  %1116 = load ptr, ptr %22, align 8, !tbaa !5
  %1117 = load ptr, ptr %27, align 8, !tbaa !5
  %1118 = load ptr, ptr %22, align 8, !tbaa !5
  %1119 = load i32, ptr %1118, align 4, !tbaa !9
  %1120 = add nsw i32 %1119, 1
  %1121 = load i32, ptr %31, align 4, !tbaa !9
  %1122 = mul nsw i32 %1120, %1121
  %1123 = add nsw i32 %1122, 1
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds double, ptr %1117, i64 %1124
  %1126 = load ptr, ptr %28, align 8, !tbaa !5
  %1127 = load ptr, ptr %23, align 8, !tbaa !5
  %1128 = load ptr, ptr %22, align 8, !tbaa !5
  %1129 = load i32, ptr %1128, align 4, !tbaa !9
  %1130 = add nsw i32 %1129, 1
  %1131 = load i32, ptr %35, align 4, !tbaa !9
  %1132 = mul nsw i32 %1130, %1131
  %1133 = add nsw i32 %1132, 1
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds double, ptr %1127, i64 %1134
  %1136 = load ptr, ptr %24, align 8, !tbaa !5
  %1137 = load ptr, ptr %29, align 8, !tbaa !5
  %1138 = load i32, ptr %38, align 4, !tbaa !9
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds double, ptr %1137, i64 %1139
  %1141 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %1115, ptr noundef %1116, ptr noundef %39, ptr noundef @c_b14, ptr noundef %1125, ptr noundef %1126, ptr noundef %1135, ptr noundef %1136, ptr noundef @c_b14, ptr noundef %1140, ptr noundef %1141)
  br label %1142

1142:                                             ; preds = %1109, %1091
  %1143 = load ptr, ptr %17, align 8, !tbaa !5
  %1144 = load ptr, ptr %20, align 8, !tbaa !5
  %1145 = load ptr, ptr %22, align 8, !tbaa !5
  %1146 = load ptr, ptr %25, align 8, !tbaa !5
  %1147 = load i32, ptr %34, align 4, !tbaa !9
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds double, ptr %1146, i64 %1148
  %1150 = load ptr, ptr %26, align 8, !tbaa !5
  %1151 = load ptr, ptr %29, align 8, !tbaa !5
  %1152 = load i32, ptr %38, align 4, !tbaa !9
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds double, ptr %1151, i64 %1153
  %1155 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef %1143, ptr noundef @.str.10, ptr noundef %1144, ptr noundef %1145, ptr noundef @c_b14, ptr noundef %1149, ptr noundef %1150, ptr noundef %1154, ptr noundef %1155)
  %1156 = load ptr, ptr %21, align 8, !tbaa !5
  %1157 = load i32, ptr %1156, align 4, !tbaa !9
  %1158 = load ptr, ptr %22, align 8, !tbaa !5
  %1159 = load i32, ptr %1158, align 4, !tbaa !9
  %1160 = icmp sgt i32 %1157, %1159
  br i1 %1160, label %1161, label %1194

1161:                                             ; preds = %1142
  %1162 = load ptr, ptr %21, align 8, !tbaa !5
  %1163 = load i32, ptr %1162, align 4, !tbaa !9
  %1164 = load ptr, ptr %22, align 8, !tbaa !5
  %1165 = load i32, ptr %1164, align 4, !tbaa !9
  %1166 = sub nsw i32 %1163, %1165
  store i32 %1166, ptr %39, align 4, !tbaa !9
  %1167 = load ptr, ptr %20, align 8, !tbaa !5
  %1168 = load ptr, ptr %22, align 8, !tbaa !5
  %1169 = load ptr, ptr %29, align 8, !tbaa !5
  %1170 = load i32, ptr %38, align 4, !tbaa !9
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds double, ptr %1169, i64 %1171
  %1173 = load ptr, ptr %30, align 8, !tbaa !5
  %1174 = load ptr, ptr %23, align 8, !tbaa !5
  %1175 = load ptr, ptr %22, align 8, !tbaa !5
  %1176 = load i32, ptr %1175, align 4, !tbaa !9
  %1177 = add nsw i32 %1176, 1
  %1178 = load i32, ptr %35, align 4, !tbaa !9
  %1179 = mul nsw i32 %1177, %1178
  %1180 = add nsw i32 %1179, 1
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds double, ptr %1174, i64 %1181
  %1183 = load ptr, ptr %24, align 8, !tbaa !5
  %1184 = load ptr, ptr %27, align 8, !tbaa !5
  %1185 = load ptr, ptr %22, align 8, !tbaa !5
  %1186 = load i32, ptr %1185, align 4, !tbaa !9
  %1187 = add nsw i32 %1186, 1
  %1188 = load i32, ptr %31, align 4, !tbaa !9
  %1189 = mul nsw i32 %1187, %1188
  %1190 = add nsw i32 %1189, 1
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds double, ptr %1184, i64 %1191
  %1193 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %1167, ptr noundef %39, ptr noundef %1168, ptr noundef @c_b25, ptr noundef %1172, ptr noundef %1173, ptr noundef %1182, ptr noundef %1183, ptr noundef @c_b14, ptr noundef %1192, ptr noundef %1193)
  br label %1194

1194:                                             ; preds = %1161, %1142
  %1195 = load ptr, ptr %20, align 8, !tbaa !5
  %1196 = load ptr, ptr %22, align 8, !tbaa !5
  %1197 = load ptr, ptr %23, align 8, !tbaa !5
  %1198 = load i32, ptr %36, align 4, !tbaa !9
  %1199 = sext i32 %1198 to i64
  %1200 = getelementptr inbounds double, ptr %1197, i64 %1199
  %1201 = load ptr, ptr %24, align 8, !tbaa !5
  %1202 = load ptr, ptr %29, align 8, !tbaa !5
  %1203 = load i32, ptr %38, align 4, !tbaa !9
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds double, ptr %1202, i64 %1204
  %1206 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.9, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %1195, ptr noundef %1196, ptr noundef @c_b14, ptr noundef %1200, ptr noundef %1201, ptr noundef %1205, ptr noundef %1206)
  %1207 = load ptr, ptr %22, align 8, !tbaa !5
  %1208 = load i32, ptr %1207, align 4, !tbaa !9
  store i32 %1208, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1209

1209:                                             ; preds = %1244, %1194
  %1210 = load i32, ptr %42, align 4, !tbaa !9
  %1211 = load i32, ptr %39, align 4, !tbaa !9
  %1212 = icmp sle i32 %1210, %1211
  br i1 %1212, label %1213, label %1247

1213:                                             ; preds = %1209
  %1214 = load ptr, ptr %20, align 8, !tbaa !5
  %1215 = load i32, ptr %1214, align 4, !tbaa !9
  store i32 %1215, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %1216

1216:                                             ; preds = %1240, %1213
  %1217 = load i32, ptr %41, align 4, !tbaa !9
  %1218 = load i32, ptr %40, align 4, !tbaa !9
  %1219 = icmp sle i32 %1217, %1218
  br i1 %1219, label %1220, label %1243

1220:                                             ; preds = %1216
  %1221 = load ptr, ptr %29, align 8, !tbaa !5
  %1222 = load i32, ptr %41, align 4, !tbaa !9
  %1223 = load i32, ptr %42, align 4, !tbaa !9
  %1224 = load i32, ptr %37, align 4, !tbaa !9
  %1225 = mul nsw i32 %1223, %1224
  %1226 = add nsw i32 %1222, %1225
  %1227 = sext i32 %1226 to i64
  %1228 = getelementptr inbounds double, ptr %1221, i64 %1227
  %1229 = load double, ptr %1228, align 8, !tbaa !14
  %1230 = load ptr, ptr %27, align 8, !tbaa !5
  %1231 = load i32, ptr %41, align 4, !tbaa !9
  %1232 = load i32, ptr %42, align 4, !tbaa !9
  %1233 = load i32, ptr %31, align 4, !tbaa !9
  %1234 = mul nsw i32 %1232, %1233
  %1235 = add nsw i32 %1231, %1234
  %1236 = sext i32 %1235 to i64
  %1237 = getelementptr inbounds double, ptr %1230, i64 %1236
  %1238 = load double, ptr %1237, align 8, !tbaa !14
  %1239 = fsub double %1238, %1229
  store double %1239, ptr %1237, align 8, !tbaa !14
  br label %1240

1240:                                             ; preds = %1220
  %1241 = load i32, ptr %41, align 4, !tbaa !9
  %1242 = add nsw i32 %1241, 1
  store i32 %1242, ptr %41, align 4, !tbaa !9
  br label %1216, !llvm.loop !31

1243:                                             ; preds = %1216
  br label %1244

1244:                                             ; preds = %1243
  %1245 = load i32, ptr %42, align 4, !tbaa !9
  %1246 = add nsw i32 %1245, 1
  store i32 %1246, ptr %42, align 4, !tbaa !9
  br label %1209, !llvm.loop !32

1247:                                             ; preds = %1209
  br label %1248

1248:                                             ; preds = %1247, %1061
  br label %1249

1249:                                             ; preds = %1248, %1060
  br label %1642

1250:                                             ; preds = %872
  %1251 = load ptr, ptr %16, align 8, !tbaa !5
  %1252 = call i32 @lsame_(ptr noundef %1251, ptr noundef @.str.3)
  %1253 = icmp ne i32 %1252, 0
  br i1 %1253, label %1254, label %1445

1254:                                             ; preds = %1250
  %1255 = load ptr, ptr %22, align 8, !tbaa !5
  %1256 = load i32, ptr %1255, align 4, !tbaa !9
  store i32 %1256, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1257

1257:                                             ; preds = %1283, %1254
  %1258 = load i32, ptr %42, align 4, !tbaa !9
  %1259 = load i32, ptr %39, align 4, !tbaa !9
  %1260 = icmp sle i32 %1258, %1259
  br i1 %1260, label %1261, label %1286

1261:                                             ; preds = %1257
  %1262 = load ptr, ptr %21, align 8, !tbaa !5
  %1263 = load ptr, ptr %27, align 8, !tbaa !5
  %1264 = load ptr, ptr %20, align 8, !tbaa !5
  %1265 = load i32, ptr %1264, align 4, !tbaa !9
  %1266 = load ptr, ptr %22, align 8, !tbaa !5
  %1267 = load i32, ptr %1266, align 4, !tbaa !9
  %1268 = sub nsw i32 %1265, %1267
  %1269 = load i32, ptr %42, align 4, !tbaa !9
  %1270 = add nsw i32 %1268, %1269
  %1271 = load i32, ptr %31, align 4, !tbaa !9
  %1272 = add nsw i32 %1270, %1271
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr inbounds double, ptr %1263, i64 %1273
  %1275 = load ptr, ptr %28, align 8, !tbaa !5
  %1276 = load ptr, ptr %29, align 8, !tbaa !5
  %1277 = load i32, ptr %42, align 4, !tbaa !9
  %1278 = load i32, ptr %37, align 4, !tbaa !9
  %1279 = mul nsw i32 %1277, %1278
  %1280 = add nsw i32 %1279, 1
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds double, ptr %1276, i64 %1281
  call void @dcopy_(ptr noundef %1262, ptr noundef %1274, ptr noundef %1275, ptr noundef %1282, ptr noundef @c__1)
  br label %1283

1283:                                             ; preds = %1261
  %1284 = load i32, ptr %42, align 4, !tbaa !9
  %1285 = add nsw i32 %1284, 1
  store i32 %1285, ptr %42, align 4, !tbaa !9
  br label %1257, !llvm.loop !33

1286:                                             ; preds = %1257
  %1287 = load ptr, ptr %21, align 8, !tbaa !5
  %1288 = load ptr, ptr %22, align 8, !tbaa !5
  %1289 = load ptr, ptr %23, align 8, !tbaa !5
  %1290 = load ptr, ptr %20, align 8, !tbaa !5
  %1291 = load i32, ptr %1290, align 4, !tbaa !9
  %1292 = load ptr, ptr %22, align 8, !tbaa !5
  %1293 = load i32, ptr %1292, align 4, !tbaa !9
  %1294 = sub nsw i32 %1291, %1293
  %1295 = add nsw i32 %1294, 1
  %1296 = load i32, ptr %35, align 4, !tbaa !9
  %1297 = mul nsw i32 %1295, %1296
  %1298 = add nsw i32 %1297, 1
  %1299 = sext i32 %1298 to i64
  %1300 = getelementptr inbounds double, ptr %1289, i64 %1299
  %1301 = load ptr, ptr %24, align 8, !tbaa !5
  %1302 = load ptr, ptr %29, align 8, !tbaa !5
  %1303 = load i32, ptr %38, align 4, !tbaa !9
  %1304 = sext i32 %1303 to i64
  %1305 = getelementptr inbounds double, ptr %1302, i64 %1304
  %1306 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %1287, ptr noundef %1288, ptr noundef @c_b14, ptr noundef %1300, ptr noundef %1301, ptr noundef %1305, ptr noundef %1306)
  %1307 = load ptr, ptr %20, align 8, !tbaa !5
  %1308 = load i32, ptr %1307, align 4, !tbaa !9
  %1309 = load ptr, ptr %22, align 8, !tbaa !5
  %1310 = load i32, ptr %1309, align 4, !tbaa !9
  %1311 = icmp sgt i32 %1308, %1310
  br i1 %1311, label %1312, label %1335

1312:                                             ; preds = %1286
  %1313 = load ptr, ptr %20, align 8, !tbaa !5
  %1314 = load i32, ptr %1313, align 4, !tbaa !9
  %1315 = load ptr, ptr %22, align 8, !tbaa !5
  %1316 = load i32, ptr %1315, align 4, !tbaa !9
  %1317 = sub nsw i32 %1314, %1316
  store i32 %1317, ptr %39, align 4, !tbaa !9
  %1318 = load ptr, ptr %21, align 8, !tbaa !5
  %1319 = load ptr, ptr %22, align 8, !tbaa !5
  %1320 = load ptr, ptr %27, align 8, !tbaa !5
  %1321 = load i32, ptr %32, align 4, !tbaa !9
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds double, ptr %1320, i64 %1322
  %1324 = load ptr, ptr %28, align 8, !tbaa !5
  %1325 = load ptr, ptr %23, align 8, !tbaa !5
  %1326 = load i32, ptr %36, align 4, !tbaa !9
  %1327 = sext i32 %1326 to i64
  %1328 = getelementptr inbounds double, ptr %1325, i64 %1327
  %1329 = load ptr, ptr %24, align 8, !tbaa !5
  %1330 = load ptr, ptr %29, align 8, !tbaa !5
  %1331 = load i32, ptr %38, align 4, !tbaa !9
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds double, ptr %1330, i64 %1332
  %1334 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.8, ptr noundef @.str.8, ptr noundef %1318, ptr noundef %1319, ptr noundef %39, ptr noundef @c_b14, ptr noundef %1323, ptr noundef %1324, ptr noundef %1328, ptr noundef %1329, ptr noundef @c_b14, ptr noundef %1333, ptr noundef %1334)
  br label %1335

1335:                                             ; preds = %1312, %1286
  %1336 = getelementptr inbounds [1 x i8], ptr %43, i64 0, i64 0
  %1337 = load ptr, ptr %21, align 8, !tbaa !5
  %1338 = load ptr, ptr %22, align 8, !tbaa !5
  %1339 = load ptr, ptr %25, align 8, !tbaa !5
  %1340 = load i32, ptr %34, align 4, !tbaa !9
  %1341 = sext i32 %1340 to i64
  %1342 = getelementptr inbounds double, ptr %1339, i64 %1341
  %1343 = load ptr, ptr %26, align 8, !tbaa !5
  %1344 = load ptr, ptr %29, align 8, !tbaa !5
  %1345 = load i32, ptr %38, align 4, !tbaa !9
  %1346 = sext i32 %1345 to i64
  %1347 = getelementptr inbounds double, ptr %1344, i64 %1346
  %1348 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %1336, ptr noundef @.str.10, ptr noundef %1337, ptr noundef %1338, ptr noundef @c_b14, ptr noundef %1342, ptr noundef %1343, ptr noundef %1347, ptr noundef %1348)
  %1349 = load ptr, ptr %20, align 8, !tbaa !5
  %1350 = load i32, ptr %1349, align 4, !tbaa !9
  %1351 = load ptr, ptr %22, align 8, !tbaa !5
  %1352 = load i32, ptr %1351, align 4, !tbaa !9
  %1353 = icmp sgt i32 %1350, %1352
  br i1 %1353, label %1354, label %1377

1354:                                             ; preds = %1335
  %1355 = load ptr, ptr %20, align 8, !tbaa !5
  %1356 = load i32, ptr %1355, align 4, !tbaa !9
  %1357 = load ptr, ptr %22, align 8, !tbaa !5
  %1358 = load i32, ptr %1357, align 4, !tbaa !9
  %1359 = sub nsw i32 %1356, %1358
  store i32 %1359, ptr %39, align 4, !tbaa !9
  %1360 = load ptr, ptr %21, align 8, !tbaa !5
  %1361 = load ptr, ptr %22, align 8, !tbaa !5
  %1362 = load ptr, ptr %23, align 8, !tbaa !5
  %1363 = load i32, ptr %36, align 4, !tbaa !9
  %1364 = sext i32 %1363 to i64
  %1365 = getelementptr inbounds double, ptr %1362, i64 %1364
  %1366 = load ptr, ptr %24, align 8, !tbaa !5
  %1367 = load ptr, ptr %29, align 8, !tbaa !5
  %1368 = load i32, ptr %38, align 4, !tbaa !9
  %1369 = sext i32 %1368 to i64
  %1370 = getelementptr inbounds double, ptr %1367, i64 %1369
  %1371 = load ptr, ptr %30, align 8, !tbaa !5
  %1372 = load ptr, ptr %27, align 8, !tbaa !5
  %1373 = load i32, ptr %32, align 4, !tbaa !9
  %1374 = sext i32 %1373 to i64
  %1375 = getelementptr inbounds double, ptr %1372, i64 %1374
  %1376 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.8, ptr noundef @.str.8, ptr noundef %39, ptr noundef %1360, ptr noundef %1361, ptr noundef @c_b25, ptr noundef %1365, ptr noundef %1366, ptr noundef %1370, ptr noundef %1371, ptr noundef @c_b14, ptr noundef %1375, ptr noundef %1376)
  br label %1377

1377:                                             ; preds = %1354, %1335
  %1378 = load ptr, ptr %21, align 8, !tbaa !5
  %1379 = load ptr, ptr %22, align 8, !tbaa !5
  %1380 = load ptr, ptr %23, align 8, !tbaa !5
  %1381 = load ptr, ptr %20, align 8, !tbaa !5
  %1382 = load i32, ptr %1381, align 4, !tbaa !9
  %1383 = load ptr, ptr %22, align 8, !tbaa !5
  %1384 = load i32, ptr %1383, align 4, !tbaa !9
  %1385 = sub nsw i32 %1382, %1384
  %1386 = add nsw i32 %1385, 1
  %1387 = load i32, ptr %35, align 4, !tbaa !9
  %1388 = mul nsw i32 %1386, %1387
  %1389 = add nsw i32 %1388, 1
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds double, ptr %1380, i64 %1390
  %1392 = load ptr, ptr %24, align 8, !tbaa !5
  %1393 = load ptr, ptr %29, align 8, !tbaa !5
  %1394 = load i32, ptr %38, align 4, !tbaa !9
  %1395 = sext i32 %1394 to i64
  %1396 = getelementptr inbounds double, ptr %1393, i64 %1395
  %1397 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %1378, ptr noundef %1379, ptr noundef @c_b14, ptr noundef %1391, ptr noundef %1392, ptr noundef %1396, ptr noundef %1397)
  %1398 = load ptr, ptr %22, align 8, !tbaa !5
  %1399 = load i32, ptr %1398, align 4, !tbaa !9
  store i32 %1399, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1400

1400:                                             ; preds = %1441, %1377
  %1401 = load i32, ptr %42, align 4, !tbaa !9
  %1402 = load i32, ptr %39, align 4, !tbaa !9
  %1403 = icmp sle i32 %1401, %1402
  br i1 %1403, label %1404, label %1444

1404:                                             ; preds = %1400
  %1405 = load ptr, ptr %21, align 8, !tbaa !5
  %1406 = load i32, ptr %1405, align 4, !tbaa !9
  store i32 %1406, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %1407

1407:                                             ; preds = %1437, %1404
  %1408 = load i32, ptr %41, align 4, !tbaa !9
  %1409 = load i32, ptr %40, align 4, !tbaa !9
  %1410 = icmp sle i32 %1408, %1409
  br i1 %1410, label %1411, label %1440

1411:                                             ; preds = %1407
  %1412 = load ptr, ptr %29, align 8, !tbaa !5
  %1413 = load i32, ptr %41, align 4, !tbaa !9
  %1414 = load i32, ptr %42, align 4, !tbaa !9
  %1415 = load i32, ptr %37, align 4, !tbaa !9
  %1416 = mul nsw i32 %1414, %1415
  %1417 = add nsw i32 %1413, %1416
  %1418 = sext i32 %1417 to i64
  %1419 = getelementptr inbounds double, ptr %1412, i64 %1418
  %1420 = load double, ptr %1419, align 8, !tbaa !14
  %1421 = load ptr, ptr %27, align 8, !tbaa !5
  %1422 = load ptr, ptr %20, align 8, !tbaa !5
  %1423 = load i32, ptr %1422, align 4, !tbaa !9
  %1424 = load ptr, ptr %22, align 8, !tbaa !5
  %1425 = load i32, ptr %1424, align 4, !tbaa !9
  %1426 = sub nsw i32 %1423, %1425
  %1427 = load i32, ptr %42, align 4, !tbaa !9
  %1428 = add nsw i32 %1426, %1427
  %1429 = load i32, ptr %41, align 4, !tbaa !9
  %1430 = load i32, ptr %31, align 4, !tbaa !9
  %1431 = mul nsw i32 %1429, %1430
  %1432 = add nsw i32 %1428, %1431
  %1433 = sext i32 %1432 to i64
  %1434 = getelementptr inbounds double, ptr %1421, i64 %1433
  %1435 = load double, ptr %1434, align 8, !tbaa !14
  %1436 = fsub double %1435, %1420
  store double %1436, ptr %1434, align 8, !tbaa !14
  br label %1437

1437:                                             ; preds = %1411
  %1438 = load i32, ptr %41, align 4, !tbaa !9
  %1439 = add nsw i32 %1438, 1
  store i32 %1439, ptr %41, align 4, !tbaa !9
  br label %1407, !llvm.loop !34

1440:                                             ; preds = %1407
  br label %1441

1441:                                             ; preds = %1440
  %1442 = load i32, ptr %42, align 4, !tbaa !9
  %1443 = add nsw i32 %1442, 1
  store i32 %1443, ptr %42, align 4, !tbaa !9
  br label %1400, !llvm.loop !35

1444:                                             ; preds = %1400
  br label %1641

1445:                                             ; preds = %1250
  %1446 = load ptr, ptr %16, align 8, !tbaa !5
  %1447 = call i32 @lsame_(ptr noundef %1446, ptr noundef @.str.11)
  %1448 = icmp ne i32 %1447, 0
  br i1 %1448, label %1449, label %1640

1449:                                             ; preds = %1445
  %1450 = load ptr, ptr %22, align 8, !tbaa !5
  %1451 = load i32, ptr %1450, align 4, !tbaa !9
  store i32 %1451, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1452

1452:                                             ; preds = %1478, %1449
  %1453 = load i32, ptr %42, align 4, !tbaa !9
  %1454 = load i32, ptr %39, align 4, !tbaa !9
  %1455 = icmp sle i32 %1453, %1454
  br i1 %1455, label %1456, label %1481

1456:                                             ; preds = %1452
  %1457 = load ptr, ptr %20, align 8, !tbaa !5
  %1458 = load ptr, ptr %27, align 8, !tbaa !5
  %1459 = load ptr, ptr %21, align 8, !tbaa !5
  %1460 = load i32, ptr %1459, align 4, !tbaa !9
  %1461 = load ptr, ptr %22, align 8, !tbaa !5
  %1462 = load i32, ptr %1461, align 4, !tbaa !9
  %1463 = sub nsw i32 %1460, %1462
  %1464 = load i32, ptr %42, align 4, !tbaa !9
  %1465 = add nsw i32 %1463, %1464
  %1466 = load i32, ptr %31, align 4, !tbaa !9
  %1467 = mul nsw i32 %1465, %1466
  %1468 = add nsw i32 %1467, 1
  %1469 = sext i32 %1468 to i64
  %1470 = getelementptr inbounds double, ptr %1458, i64 %1469
  %1471 = load ptr, ptr %29, align 8, !tbaa !5
  %1472 = load i32, ptr %42, align 4, !tbaa !9
  %1473 = load i32, ptr %37, align 4, !tbaa !9
  %1474 = mul nsw i32 %1472, %1473
  %1475 = add nsw i32 %1474, 1
  %1476 = sext i32 %1475 to i64
  %1477 = getelementptr inbounds double, ptr %1471, i64 %1476
  call void @dcopy_(ptr noundef %1457, ptr noundef %1470, ptr noundef @c__1, ptr noundef %1477, ptr noundef @c__1)
  br label %1478

1478:                                             ; preds = %1456
  %1479 = load i32, ptr %42, align 4, !tbaa !9
  %1480 = add nsw i32 %1479, 1
  store i32 %1480, ptr %42, align 4, !tbaa !9
  br label %1452, !llvm.loop !36

1481:                                             ; preds = %1452
  %1482 = load ptr, ptr %20, align 8, !tbaa !5
  %1483 = load ptr, ptr %22, align 8, !tbaa !5
  %1484 = load ptr, ptr %23, align 8, !tbaa !5
  %1485 = load ptr, ptr %21, align 8, !tbaa !5
  %1486 = load i32, ptr %1485, align 4, !tbaa !9
  %1487 = load ptr, ptr %22, align 8, !tbaa !5
  %1488 = load i32, ptr %1487, align 4, !tbaa !9
  %1489 = sub nsw i32 %1486, %1488
  %1490 = add nsw i32 %1489, 1
  %1491 = load i32, ptr %35, align 4, !tbaa !9
  %1492 = mul nsw i32 %1490, %1491
  %1493 = add nsw i32 %1492, 1
  %1494 = sext i32 %1493 to i64
  %1495 = getelementptr inbounds double, ptr %1484, i64 %1494
  %1496 = load ptr, ptr %24, align 8, !tbaa !5
  %1497 = load ptr, ptr %29, align 8, !tbaa !5
  %1498 = load i32, ptr %38, align 4, !tbaa !9
  %1499 = sext i32 %1498 to i64
  %1500 = getelementptr inbounds double, ptr %1497, i64 %1499
  %1501 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.8, ptr noundef @.str.7, ptr noundef %1482, ptr noundef %1483, ptr noundef @c_b14, ptr noundef %1495, ptr noundef %1496, ptr noundef %1500, ptr noundef %1501)
  %1502 = load ptr, ptr %21, align 8, !tbaa !5
  %1503 = load i32, ptr %1502, align 4, !tbaa !9
  %1504 = load ptr, ptr %22, align 8, !tbaa !5
  %1505 = load i32, ptr %1504, align 4, !tbaa !9
  %1506 = icmp sgt i32 %1503, %1505
  br i1 %1506, label %1507, label %1530

1507:                                             ; preds = %1481
  %1508 = load ptr, ptr %21, align 8, !tbaa !5
  %1509 = load i32, ptr %1508, align 4, !tbaa !9
  %1510 = load ptr, ptr %22, align 8, !tbaa !5
  %1511 = load i32, ptr %1510, align 4, !tbaa !9
  %1512 = sub nsw i32 %1509, %1511
  store i32 %1512, ptr %39, align 4, !tbaa !9
  %1513 = load ptr, ptr %20, align 8, !tbaa !5
  %1514 = load ptr, ptr %22, align 8, !tbaa !5
  %1515 = load ptr, ptr %27, align 8, !tbaa !5
  %1516 = load i32, ptr %32, align 4, !tbaa !9
  %1517 = sext i32 %1516 to i64
  %1518 = getelementptr inbounds double, ptr %1515, i64 %1517
  %1519 = load ptr, ptr %28, align 8, !tbaa !5
  %1520 = load ptr, ptr %23, align 8, !tbaa !5
  %1521 = load i32, ptr %36, align 4, !tbaa !9
  %1522 = sext i32 %1521 to i64
  %1523 = getelementptr inbounds double, ptr %1520, i64 %1522
  %1524 = load ptr, ptr %24, align 8, !tbaa !5
  %1525 = load ptr, ptr %29, align 8, !tbaa !5
  %1526 = load i32, ptr %38, align 4, !tbaa !9
  %1527 = sext i32 %1526 to i64
  %1528 = getelementptr inbounds double, ptr %1525, i64 %1527
  %1529 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.8, ptr noundef %1513, ptr noundef %1514, ptr noundef %39, ptr noundef @c_b14, ptr noundef %1518, ptr noundef %1519, ptr noundef %1523, ptr noundef %1524, ptr noundef @c_b14, ptr noundef %1528, ptr noundef %1529)
  br label %1530

1530:                                             ; preds = %1507, %1481
  %1531 = load ptr, ptr %17, align 8, !tbaa !5
  %1532 = load ptr, ptr %20, align 8, !tbaa !5
  %1533 = load ptr, ptr %22, align 8, !tbaa !5
  %1534 = load ptr, ptr %25, align 8, !tbaa !5
  %1535 = load i32, ptr %34, align 4, !tbaa !9
  %1536 = sext i32 %1535 to i64
  %1537 = getelementptr inbounds double, ptr %1534, i64 %1536
  %1538 = load ptr, ptr %26, align 8, !tbaa !5
  %1539 = load ptr, ptr %29, align 8, !tbaa !5
  %1540 = load i32, ptr %38, align 4, !tbaa !9
  %1541 = sext i32 %1540 to i64
  %1542 = getelementptr inbounds double, ptr %1539, i64 %1541
  %1543 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %1531, ptr noundef @.str.10, ptr noundef %1532, ptr noundef %1533, ptr noundef @c_b14, ptr noundef %1537, ptr noundef %1538, ptr noundef %1542, ptr noundef %1543)
  %1544 = load ptr, ptr %21, align 8, !tbaa !5
  %1545 = load i32, ptr %1544, align 4, !tbaa !9
  %1546 = load ptr, ptr %22, align 8, !tbaa !5
  %1547 = load i32, ptr %1546, align 4, !tbaa !9
  %1548 = icmp sgt i32 %1545, %1547
  br i1 %1548, label %1549, label %1572

1549:                                             ; preds = %1530
  %1550 = load ptr, ptr %21, align 8, !tbaa !5
  %1551 = load i32, ptr %1550, align 4, !tbaa !9
  %1552 = load ptr, ptr %22, align 8, !tbaa !5
  %1553 = load i32, ptr %1552, align 4, !tbaa !9
  %1554 = sub nsw i32 %1551, %1553
  store i32 %1554, ptr %39, align 4, !tbaa !9
  %1555 = load ptr, ptr %20, align 8, !tbaa !5
  %1556 = load ptr, ptr %22, align 8, !tbaa !5
  %1557 = load ptr, ptr %29, align 8, !tbaa !5
  %1558 = load i32, ptr %38, align 4, !tbaa !9
  %1559 = sext i32 %1558 to i64
  %1560 = getelementptr inbounds double, ptr %1557, i64 %1559
  %1561 = load ptr, ptr %30, align 8, !tbaa !5
  %1562 = load ptr, ptr %23, align 8, !tbaa !5
  %1563 = load i32, ptr %36, align 4, !tbaa !9
  %1564 = sext i32 %1563 to i64
  %1565 = getelementptr inbounds double, ptr %1562, i64 %1564
  %1566 = load ptr, ptr %24, align 8, !tbaa !5
  %1567 = load ptr, ptr %27, align 8, !tbaa !5
  %1568 = load i32, ptr %32, align 4, !tbaa !9
  %1569 = sext i32 %1568 to i64
  %1570 = getelementptr inbounds double, ptr %1567, i64 %1569
  %1571 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.6, ptr noundef @.str.6, ptr noundef %1555, ptr noundef %39, ptr noundef %1556, ptr noundef @c_b25, ptr noundef %1560, ptr noundef %1561, ptr noundef %1565, ptr noundef %1566, ptr noundef @c_b14, ptr noundef %1570, ptr noundef %1571)
  br label %1572

1572:                                             ; preds = %1549, %1530
  %1573 = load ptr, ptr %20, align 8, !tbaa !5
  %1574 = load ptr, ptr %22, align 8, !tbaa !5
  %1575 = load ptr, ptr %23, align 8, !tbaa !5
  %1576 = load ptr, ptr %21, align 8, !tbaa !5
  %1577 = load i32, ptr %1576, align 4, !tbaa !9
  %1578 = load ptr, ptr %22, align 8, !tbaa !5
  %1579 = load i32, ptr %1578, align 4, !tbaa !9
  %1580 = sub nsw i32 %1577, %1579
  %1581 = add nsw i32 %1580, 1
  %1582 = load i32, ptr %35, align 4, !tbaa !9
  %1583 = mul nsw i32 %1581, %1582
  %1584 = add nsw i32 %1583, 1
  %1585 = sext i32 %1584 to i64
  %1586 = getelementptr inbounds double, ptr %1575, i64 %1585
  %1587 = load ptr, ptr %24, align 8, !tbaa !5
  %1588 = load ptr, ptr %29, align 8, !tbaa !5
  %1589 = load i32, ptr %38, align 4, !tbaa !9
  %1590 = sext i32 %1589 to i64
  %1591 = getelementptr inbounds double, ptr %1588, i64 %1590
  %1592 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dtrmm_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %1573, ptr noundef %1574, ptr noundef @c_b14, ptr noundef %1586, ptr noundef %1587, ptr noundef %1591, ptr noundef %1592)
  %1593 = load ptr, ptr %22, align 8, !tbaa !5
  %1594 = load i32, ptr %1593, align 4, !tbaa !9
  store i32 %1594, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %42, align 4, !tbaa !9
  br label %1595

1595:                                             ; preds = %1636, %1572
  %1596 = load i32, ptr %42, align 4, !tbaa !9
  %1597 = load i32, ptr %39, align 4, !tbaa !9
  %1598 = icmp sle i32 %1596, %1597
  br i1 %1598, label %1599, label %1639

1599:                                             ; preds = %1595
  %1600 = load ptr, ptr %20, align 8, !tbaa !5
  %1601 = load i32, ptr %1600, align 4, !tbaa !9
  store i32 %1601, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %41, align 4, !tbaa !9
  br label %1602

1602:                                             ; preds = %1632, %1599
  %1603 = load i32, ptr %41, align 4, !tbaa !9
  %1604 = load i32, ptr %40, align 4, !tbaa !9
  %1605 = icmp sle i32 %1603, %1604
  br i1 %1605, label %1606, label %1635

1606:                                             ; preds = %1602
  %1607 = load ptr, ptr %29, align 8, !tbaa !5
  %1608 = load i32, ptr %41, align 4, !tbaa !9
  %1609 = load i32, ptr %42, align 4, !tbaa !9
  %1610 = load i32, ptr %37, align 4, !tbaa !9
  %1611 = mul nsw i32 %1609, %1610
  %1612 = add nsw i32 %1608, %1611
  %1613 = sext i32 %1612 to i64
  %1614 = getelementptr inbounds double, ptr %1607, i64 %1613
  %1615 = load double, ptr %1614, align 8, !tbaa !14
  %1616 = load ptr, ptr %27, align 8, !tbaa !5
  %1617 = load i32, ptr %41, align 4, !tbaa !9
  %1618 = load ptr, ptr %21, align 8, !tbaa !5
  %1619 = load i32, ptr %1618, align 4, !tbaa !9
  %1620 = load ptr, ptr %22, align 8, !tbaa !5
  %1621 = load i32, ptr %1620, align 4, !tbaa !9
  %1622 = sub nsw i32 %1619, %1621
  %1623 = load i32, ptr %42, align 4, !tbaa !9
  %1624 = add nsw i32 %1622, %1623
  %1625 = load i32, ptr %31, align 4, !tbaa !9
  %1626 = mul nsw i32 %1624, %1625
  %1627 = add nsw i32 %1617, %1626
  %1628 = sext i32 %1627 to i64
  %1629 = getelementptr inbounds double, ptr %1616, i64 %1628
  %1630 = load double, ptr %1629, align 8, !tbaa !14
  %1631 = fsub double %1630, %1615
  store double %1631, ptr %1629, align 8, !tbaa !14
  br label %1632

1632:                                             ; preds = %1606
  %1633 = load i32, ptr %41, align 4, !tbaa !9
  %1634 = add nsw i32 %1633, 1
  store i32 %1634, ptr %41, align 4, !tbaa !9
  br label %1602, !llvm.loop !37

1635:                                             ; preds = %1602
  br label %1636

1636:                                             ; preds = %1635
  %1637 = load i32, ptr %42, align 4, !tbaa !9
  %1638 = add nsw i32 %1637, 1
  store i32 %1638, ptr %42, align 4, !tbaa !9
  br label %1595, !llvm.loop !38

1639:                                             ; preds = %1595
  br label %1640

1640:                                             ; preds = %1639, %1445
  br label %1641

1641:                                             ; preds = %1640, %1444
  br label %1642

1642:                                             ; preds = %1641, %1249
  br label %1643

1643:                                             ; preds = %1642, %868
  br label %1644

1644:                                             ; preds = %1643, %867
  store i32 1, ptr %44, align 4
  br label %1645

1645:                                             ; preds = %1644, %92
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  ret void
}

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

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

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

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

declare void @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 = !{!"int", !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 i32, align 4
@.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 void @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 i32, align 4
  %17 = alloca [1 x i8], align 1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #3
  %18 = load i32, ptr %8, align 4, !tbaa !5
  %narrow792 = xor i32 %18, -1
  %19 = sext i32 %narrow792 to i64
  %20 = getelementptr inbounds double, ptr %7, i64 %19
  %21 = load i32, ptr %12, align 4, !tbaa !5
  %narrow = xor i32 %21, -1
  %22 = sext i32 %narrow to i64
  %23 = getelementptr inbounds double, ptr %11, i64 %22
  %24 = load i32, ptr %14, align 4, !tbaa !5
  %narrow793 = xor i32 %24, -1
  %25 = sext i32 %narrow793 to i64
  %26 = getelementptr inbounds double, ptr %13, i64 %25
  %27 = load i32, ptr %4, align 4, !tbaa !5
  %28 = icmp slt i32 %27, 1
  br i1 %28, label %.loopexit, label %29

29:                                               ; preds = %15
  %30 = load i32, ptr %5, align 4, !tbaa !5
  %31 = icmp slt i32 %30, 1
  br i1 %31, label %.loopexit, label %32

32:                                               ; preds = %29
  %33 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #3
  %.not = icmp eq i32 %33, 0
  %. = select i1 %.not, i8 78, i8 84
  store i8 %., ptr %17, align 1, !tbaa !9
  %34 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #3
  %.not758 = icmp eq i32 %34, 0
  br i1 %.not758, label %422, label %35

35:                                               ; preds = %32
  %36 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #3
  %.not777 = icmp eq i32 %36, 0
  %37 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #3
  %.not778 = icmp eq i32 %37, 0
  br i1 %.not777, label %206, label %38

38:                                               ; preds = %35
  br i1 %.not778, label %114, label %39

39:                                               ; preds = %38
  %40 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %40, ptr %16, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %26, i64 8
  %.not791818 = icmp slt i32 %40, 1
  br i1 %.not791818, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %39
  %41 = sext i32 %21 to i64
  %42 = sext i32 %24 to i64
  %43 = add nuw i32 %40, 1
  %wide.trip.count = zext i32 %43 to i64
  %invariant.gep1098 = getelementptr double, ptr %23, i64 %41
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %gep1099 = getelementptr double, ptr %invariant.gep1098, i64 %indvars.iv
  %44 = mul nsw i64 %indvars.iv, %42
  %gep = getelementptr double, ptr %invariant.gep, i64 %44
  tail call void @dcopy_(ptr noundef nonnull %5, ptr noundef %gep1099, ptr noundef nonnull %12, ptr noundef %gep, ptr noundef nonnull @c__1) #3
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !10

._crit_edge:                                      ; preds = %.lr.ph, %39
  tail call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %45 = load i32, ptr %4, align 4, !tbaa !5
  %46 = load i32, ptr %6, align 4, !tbaa !5
  %47 = icmp sgt i32 %45, %46
  br i1 %47, label %48, label %57

48:                                               ; preds = %._crit_edge
  %49 = sub nsw i32 %45, %46
  store i32 %49, ptr %16, align 4, !tbaa !5
  %50 = add nsw i32 %46, 1
  %51 = add nsw i32 %50, %21
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds double, ptr %23, i64 %52
  %54 = add nsw i32 %50, %18
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds double, ptr %20, i64 %55
  call void @dgemm_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %53, ptr noundef nonnull %12, ptr noundef %56, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #3
  br label %57

57:                                               ; preds = %48, %._crit_edge
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull %17, ptr noundef nonnull @.str.10, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef %10, ptr noundef %13, ptr noundef nonnull %14) #3
  %58 = load i32, ptr %4, align 4, !tbaa !5
  %59 = load i32, ptr %6, align 4, !tbaa !5
  %60 = icmp sgt i32 %58, %59
  br i1 %60, label %61, label %70

61:                                               ; preds = %57
  %62 = sub nsw i32 %58, %59
  store i32 %62, ptr %16, align 4, !tbaa !5
  %63 = add nsw i32 %59, 1
  %64 = add nsw i32 %63, %18
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds double, ptr %20, i64 %65
  %67 = add nsw i32 %63, %21
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds double, ptr %23, i64 %68
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %66, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b14, ptr noundef %69, ptr noundef nonnull %12) #3
  br label %70

70:                                               ; preds = %61, %57
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %71 = load i32, ptr %6, align 4, !tbaa !5
  %.not794825 = icmp slt i32 %71, 1
  br i1 %.not794825, label %.loopexit, label %.lr.ph828

.lr.ph828:                                        ; preds = %70
  %72 = load i32, ptr %5, align 4, !tbaa !5
  %.not795820 = icmp slt i32 %72, 1
  br i1 %.not795820, label %.loopexit, label %.lr.ph823.preheader

.lr.ph823.preheader:                              ; preds = %.lr.ph828
  %73 = sext i32 %21 to i64
  %74 = add nuw i32 %72, 1
  %75 = sext i32 %24 to i64
  %76 = add nuw i32 %71, 1
  %wide.trip.count973 = zext i32 %76 to i64
  %wide.trip.count968 = zext i32 %74 to i64
  %77 = shl nuw nsw i64 %wide.trip.count973, 3
  %78 = shl nuw nsw i64 %wide.trip.count968, 3
  %79 = getelementptr i8, ptr %11, i64 %77
  %80 = getelementptr i8, ptr %79, i64 %78
  %scevgep = getelementptr i8, ptr %80, i64 -24
  %81 = shl nsw i64 %75, 3
  %82 = shl nsw i64 %25, 3
  %83 = getelementptr i8, ptr %13, i64 %81
  %84 = getelementptr i8, ptr %83, i64 %82
  %scevgep1137 = getelementptr i8, ptr %84, i64 8
  %85 = add nsw i64 %77, -8
  %86 = mul i64 %85, %75
  %87 = getelementptr i8, ptr %13, i64 %86
  %88 = getelementptr i8, ptr %87, i64 %82
  %scevgep1138 = getelementptr i8, ptr %88, i64 %78
  %89 = zext nneg i32 %72 to i64
  %90 = zext nneg i32 %72 to i64
  %min.iters.check = icmp ugt i32 %72, 5
  %ident.check.not = icmp eq i32 %21, 1
  %or.cond = select i1 %min.iters.check, i1 %ident.check.not, i1 false
  %bound0 = icmp ugt ptr %scevgep1138, %11
  %bound1 = icmp ult ptr %scevgep1137, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %24, 0
  %91 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %89, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %n.vec, %89
  %92 = and i32 %72, 1
  %lcmp.mod.not = icmp eq i32 %92, 0
  br label %.lr.ph823

.lr.ph823:                                        ; preds = %.lr.ph823.preheader, %._crit_edge824
  %indvars.iv970 = phi i64 [ 1, %.lr.ph823.preheader ], [ %indvars.iv.next971, %._crit_edge824 ]
  %93 = mul nsw i64 %indvars.iv970, %75
  %invariant.gep1100 = getelementptr double, ptr %26, i64 %93
  %invariant.gep1102 = getelementptr double, ptr %23, i64 %indvars.iv970
  %or.cond.not = xor i1 %or.cond, true
  %brmerge = select i1 %or.cond.not, i1 true, i1 %91
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph823, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph823 ]
  %offset.idx = or disjoint i64 %index, 1
  %94 = getelementptr double, ptr %invariant.gep1100, i64 %offset.idx
  %95 = getelementptr i8, ptr %94, i64 16
  %wide.load = load <2 x double>, ptr %94, align 8, !tbaa !12, !alias.scope !14
  %wide.load1139 = load <2 x double>, ptr %95, align 8, !tbaa !12, !alias.scope !14
  %96 = getelementptr double, ptr %invariant.gep1102, i64 %offset.idx
  %97 = getelementptr i8, ptr %96, i64 16
  %wide.load1140 = load <2 x double>, ptr %96, align 8, !tbaa !12, !alias.scope !17, !noalias !14
  %wide.load1141 = load <2 x double>, ptr %97, align 8, !tbaa !12, !alias.scope !17, !noalias !14
  %98 = fsub <2 x double> %wide.load1140, %wide.load
  %99 = fsub <2 x double> %wide.load1141, %wide.load1139
  store <2 x double> %98, ptr %96, align 8, !tbaa !12, !alias.scope !17, !noalias !14
  store <2 x double> %99, ptr %97, align 8, !tbaa !12, !alias.scope !17, !noalias !14
  %index.next = add nuw i64 %index, 4
  %100 = icmp eq i64 %index.next, %n.vec
  br i1 %100, label %middle.block, label %vector.body, !llvm.loop !19

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

scalar.ph.preheader:                              ; preds = %.lr.ph823, %middle.block
  %indvars.iv965.ph = phi i64 [ 1, %.lr.ph823 ], [ %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
  %gep1101.prol = getelementptr double, ptr %invariant.gep1100, i64 %indvars.iv965.ph
  %101 = load double, ptr %gep1101.prol, align 8, !tbaa !12
  %102 = mul nsw i64 %indvars.iv965.ph, %73
  %gep1103.prol = getelementptr double, ptr %invariant.gep1102, i64 %102
  %103 = load double, ptr %gep1103.prol, align 8, !tbaa !12
  %104 = fsub double %103, %101
  store double %104, ptr %gep1103.prol, align 8, !tbaa !12
  %indvars.iv.next966.prol = add nuw nsw i64 %indvars.iv965.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv965.unr = phi i64 [ %indvars.iv965.ph, %scalar.ph.preheader ], [ %indvars.iv.next966.prol, %scalar.ph.prol ]
  %105 = icmp eq i64 %indvars.iv965.ph, %90
  br i1 %105, label %._crit_edge824, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv965 = phi i64 [ %indvars.iv.next966.1, %scalar.ph ], [ %indvars.iv965.unr, %scalar.ph.prol.loopexit ]
  %gep1101 = getelementptr double, ptr %invariant.gep1100, i64 %indvars.iv965
  %106 = load double, ptr %gep1101, align 8, !tbaa !12
  %107 = mul nsw i64 %indvars.iv965, %73
  %gep1103 = getelementptr double, ptr %invariant.gep1102, i64 %107
  %108 = load double, ptr %gep1103, align 8, !tbaa !12
  %109 = fsub double %108, %106
  store double %109, ptr %gep1103, align 8, !tbaa !12
  %indvars.iv.next966 = add nuw nsw i64 %indvars.iv965, 1
  %gep1101.1 = getelementptr double, ptr %invariant.gep1100, i64 %indvars.iv.next966
  %110 = load double, ptr %gep1101.1, align 8, !tbaa !12
  %111 = mul nsw i64 %indvars.iv.next966, %73
  %gep1103.1 = getelementptr double, ptr %invariant.gep1102, i64 %111
  %112 = load double, ptr %gep1103.1, align 8, !tbaa !12
  %113 = fsub double %112, %110
  store double %113, ptr %gep1103.1, align 8, !tbaa !12
  %indvars.iv.next966.1 = add nuw nsw i64 %indvars.iv965, 2
  %exitcond969.not.1 = icmp eq i64 %indvars.iv.next966.1, %wide.trip.count968
  br i1 %exitcond969.not.1, label %._crit_edge824, label %scalar.ph, !llvm.loop !22

._crit_edge824:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next971 = add nuw nsw i64 %indvars.iv970, 1
  %exitcond974.not = icmp eq i64 %indvars.iv.next971, %wide.trip.count973
  br i1 %exitcond974.not, label %.loopexit, label %.lr.ph823, !llvm.loop !23

114:                                              ; preds = %38
  %115 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.11) #3
  %.not787 = icmp eq i32 %115, 0
  br i1 %.not787, label %.loopexit, label %116

116:                                              ; preds = %114
  %117 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %117, ptr %16, align 4, !tbaa !5
  %invariant.gep829 = getelementptr i8, ptr %23, i64 8
  %invariant.gep831 = getelementptr i8, ptr %26, i64 8
  %.not788833 = icmp slt i32 %117, 1
  br i1 %.not788833, label %._crit_edge837, label %.lr.ph836.preheader

.lr.ph836.preheader:                              ; preds = %116
  %118 = sext i32 %21 to i64
  %119 = sext i32 %24 to i64
  %120 = add nuw i32 %117, 1
  %wide.trip.count978 = zext i32 %120 to i64
  br label %.lr.ph836

.lr.ph836:                                        ; preds = %.lr.ph836.preheader, %.lr.ph836
  %indvars.iv975 = phi i64 [ 1, %.lr.ph836.preheader ], [ %indvars.iv.next976, %.lr.ph836 ]
  %121 = mul nsw i64 %indvars.iv975, %118
  %gep830 = getelementptr double, ptr %invariant.gep829, i64 %121
  %122 = mul nsw i64 %indvars.iv975, %119
  %gep832 = getelementptr double, ptr %invariant.gep831, i64 %122
  tail call void @dcopy_(ptr noundef nonnull %4, ptr noundef %gep830, ptr noundef nonnull @c__1, ptr noundef %gep832, ptr noundef nonnull @c__1) #3
  %indvars.iv.next976 = add nuw nsw i64 %indvars.iv975, 1
  %exitcond979.not = icmp eq i64 %indvars.iv.next976, %wide.trip.count978
  br i1 %exitcond979.not, label %._crit_edge837, label %.lr.ph836, !llvm.loop !24

._crit_edge837:                                   ; preds = %.lr.ph836, %116
  tail call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %123 = load i32, ptr %5, align 4, !tbaa !5
  %124 = load i32, ptr %6, align 4, !tbaa !5
  %125 = icmp sgt i32 %123, %124
  br i1 %125, label %126, label %136

126:                                              ; preds = %._crit_edge837
  %127 = sub nsw i32 %123, %124
  store i32 %127, ptr %16, align 4, !tbaa !5
  %128 = add nsw i32 %124, 1
  %129 = mul nsw i32 %128, %21
  %130 = sext i32 %129 to i64
  %131 = getelementptr double, ptr %23, i64 %130
  %132 = getelementptr i8, ptr %131, i64 8
  %133 = add nsw i32 %128, %18
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds double, ptr %20, i64 %134
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %132, ptr noundef nonnull %12, ptr noundef %135, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #3
  br label %136

136:                                              ; preds = %126, %._crit_edge837
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef %1, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #3
  %137 = load i32, ptr %5, align 4, !tbaa !5
  %138 = load i32, ptr %6, align 4, !tbaa !5
  %139 = icmp sgt i32 %137, %138
  br i1 %139, label %140, label %150

140:                                              ; preds = %136
  %141 = sub nsw i32 %137, %138
  store i32 %141, ptr %16, align 4, !tbaa !5
  %142 = add nsw i32 %138, 1
  %143 = add nsw i32 %142, %18
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds double, ptr %20, i64 %144
  %146 = mul nsw i32 %142, %21
  %147 = sext i32 %146 to i64
  %148 = getelementptr double, ptr %23, i64 %147
  %149 = getelementptr i8, ptr %148, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %145, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %149, ptr noundef nonnull %12) #3
  br label %150

150:                                              ; preds = %140, %136
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %151 = load i32, ptr %6, align 4, !tbaa !5
  %.not789843 = icmp slt i32 %151, 1
  br i1 %.not789843, label %.loopexit, label %.lr.ph846

.lr.ph846:                                        ; preds = %150
  %152 = load i32, ptr %4, align 4, !tbaa !5
  %.not790838 = icmp slt i32 %152, 1
  br i1 %.not790838, label %.loopexit, label %.lr.ph841.preheader

.lr.ph841.preheader:                              ; preds = %.lr.ph846
  %153 = add nuw i32 %152, 1
  %154 = sext i32 %24 to i64
  %155 = sext i32 %21 to i64
  %156 = add nuw i32 %151, 1
  %wide.trip.count988 = zext i32 %156 to i64
  %wide.trip.count983 = zext i32 %153 to i64
  %157 = shl nsw i64 %155, 3
  %158 = shl nsw i64 %22, 3
  %159 = getelementptr i8, ptr %11, i64 %157
  %160 = getelementptr i8, ptr %159, i64 %158
  %scevgep1143 = getelementptr i8, ptr %160, i64 8
  %161 = shl nuw nsw i64 %wide.trip.count988, 3
  %162 = add nsw i64 %161, -8
  %163 = mul i64 %162, %155
  %164 = shl nuw nsw i64 %wide.trip.count983, 3
  %165 = getelementptr i8, ptr %11, i64 %163
  %166 = getelementptr i8, ptr %165, i64 %158
  %scevgep1144 = getelementptr i8, ptr %166, i64 %164
  %167 = shl nsw i64 %154, 3
  %168 = shl nsw i64 %25, 3
  %169 = getelementptr i8, ptr %13, i64 %167
  %170 = getelementptr i8, ptr %169, i64 %168
  %scevgep1145 = getelementptr i8, ptr %170, i64 8
  %171 = mul i64 %162, %154
  %172 = getelementptr i8, ptr %13, i64 %171
  %173 = getelementptr i8, ptr %172, i64 %168
  %scevgep1146 = getelementptr i8, ptr %173, i64 %164
  %174 = zext nneg i32 %152 to i64
  %175 = zext nneg i32 %152 to i64
  %min.iters.check1154 = icmp ult i32 %152, 6
  %bound01147 = icmp ult ptr %scevgep1143, %scevgep1146
  %bound11148 = icmp ult ptr %scevgep1145, %scevgep1144
  %found.conflict1149 = and i1 %bound01147, %bound11148
  %176 = or i32 %21, %24
  %177 = icmp slt i32 %176, 0
  %178 = or i1 %found.conflict1149, %177
  %n.vec1157 = and i64 %174, 2147483644
  %ind.end1158 = or disjoint i64 %n.vec1157, 1
  %cmp.n1168 = icmp eq i64 %n.vec1157, %174
  br label %.lr.ph841

.lr.ph841:                                        ; preds = %.lr.ph841.preheader, %._crit_edge842
  %indvars.iv985 = phi i64 [ 1, %.lr.ph841.preheader ], [ %indvars.iv.next986, %._crit_edge842 ]
  %179 = mul nsw i64 %indvars.iv985, %154
  %180 = mul nsw i64 %indvars.iv985, %155
  %invariant.gep1104 = getelementptr double, ptr %26, i64 %179
  %invariant.gep1106 = getelementptr double, ptr %23, i64 %180
  %brmerge1375 = select i1 %min.iters.check1154, i1 true, i1 %178
  br i1 %brmerge1375, label %scalar.ph1153.preheader, label %vector.body1160

vector.body1160:                                  ; preds = %.lr.ph841, %vector.body1160
  %index1161 = phi i64 [ %index.next1167, %vector.body1160 ], [ 0, %.lr.ph841 ]
  %offset.idx1162 = or disjoint i64 %index1161, 1
  %181 = getelementptr double, ptr %invariant.gep1104, i64 %offset.idx1162
  %182 = getelementptr i8, ptr %181, i64 16
  %wide.load1163 = load <2 x double>, ptr %181, align 8, !tbaa !12, !alias.scope !25
  %wide.load1164 = load <2 x double>, ptr %182, align 8, !tbaa !12, !alias.scope !25
  %183 = getelementptr double, ptr %invariant.gep1106, i64 %offset.idx1162
  %184 = getelementptr i8, ptr %183, i64 16
  %wide.load1165 = load <2 x double>, ptr %183, align 8, !tbaa !12, !alias.scope !28, !noalias !25
  %wide.load1166 = load <2 x double>, ptr %184, align 8, !tbaa !12, !alias.scope !28, !noalias !25
  %185 = fsub <2 x double> %wide.load1165, %wide.load1163
  %186 = fsub <2 x double> %wide.load1166, %wide.load1164
  store <2 x double> %185, ptr %183, align 8, !tbaa !12, !alias.scope !28, !noalias !25
  store <2 x double> %186, ptr %184, align 8, !tbaa !12, !alias.scope !28, !noalias !25
  %index.next1167 = add nuw i64 %index1161, 4
  %187 = icmp eq i64 %index.next1167, %n.vec1157
  br i1 %187, label %middle.block1152, label %vector.body1160, !llvm.loop !30

middle.block1152:                                 ; preds = %vector.body1160
  br i1 %cmp.n1168, label %._crit_edge842, label %scalar.ph1153.preheader

scalar.ph1153.preheader:                          ; preds = %.lr.ph841, %middle.block1152
  %indvars.iv980.ph = phi i64 [ 1, %.lr.ph841 ], [ %ind.end1158, %middle.block1152 ]
  %188 = sub nsw i64 %wide.trip.count983, %indvars.iv980.ph
  %189 = sub nsw i64 %175, %indvars.iv980.ph
  %xtraiter1355 = and i64 %188, 3
  %lcmp.mod1356.not = icmp eq i64 %xtraiter1355, 0
  br i1 %lcmp.mod1356.not, label %scalar.ph1153.prol.loopexit, label %scalar.ph1153.prol

scalar.ph1153.prol:                               ; preds = %scalar.ph1153.preheader, %scalar.ph1153.prol
  %indvars.iv980.prol = phi i64 [ %indvars.iv.next981.prol, %scalar.ph1153.prol ], [ %indvars.iv980.ph, %scalar.ph1153.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph1153.prol ], [ 0, %scalar.ph1153.preheader ]
  %gep1105.prol = getelementptr double, ptr %invariant.gep1104, i64 %indvars.iv980.prol
  %190 = load double, ptr %gep1105.prol, align 8, !tbaa !12
  %gep1107.prol = getelementptr double, ptr %invariant.gep1106, i64 %indvars.iv980.prol
  %191 = load double, ptr %gep1107.prol, align 8, !tbaa !12
  %192 = fsub double %191, %190
  store double %192, ptr %gep1107.prol, align 8, !tbaa !12
  %indvars.iv.next981.prol = add nuw nsw i64 %indvars.iv980.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1355
  br i1 %prol.iter.cmp.not, label %scalar.ph1153.prol.loopexit, label %scalar.ph1153.prol, !llvm.loop !31

scalar.ph1153.prol.loopexit:                      ; preds = %scalar.ph1153.prol, %scalar.ph1153.preheader
  %indvars.iv980.unr = phi i64 [ %indvars.iv980.ph, %scalar.ph1153.preheader ], [ %indvars.iv.next981.prol, %scalar.ph1153.prol ]
  %193 = icmp ult i64 %189, 3
  br i1 %193, label %._crit_edge842, label %scalar.ph1153

scalar.ph1153:                                    ; preds = %scalar.ph1153.prol.loopexit, %scalar.ph1153
  %indvars.iv980 = phi i64 [ %indvars.iv.next981.3, %scalar.ph1153 ], [ %indvars.iv980.unr, %scalar.ph1153.prol.loopexit ]
  %gep1105 = getelementptr double, ptr %invariant.gep1104, i64 %indvars.iv980
  %194 = load double, ptr %gep1105, align 8, !tbaa !12
  %gep1107 = getelementptr double, ptr %invariant.gep1106, i64 %indvars.iv980
  %195 = load double, ptr %gep1107, align 8, !tbaa !12
  %196 = fsub double %195, %194
  store double %196, ptr %gep1107, align 8, !tbaa !12
  %indvars.iv.next981 = add nuw nsw i64 %indvars.iv980, 1
  %gep1105.1 = getelementptr double, ptr %invariant.gep1104, i64 %indvars.iv.next981
  %197 = load double, ptr %gep1105.1, align 8, !tbaa !12
  %gep1107.1 = getelementptr double, ptr %invariant.gep1106, i64 %indvars.iv.next981
  %198 = load double, ptr %gep1107.1, align 8, !tbaa !12
  %199 = fsub double %198, %197
  store double %199, ptr %gep1107.1, align 8, !tbaa !12
  %indvars.iv.next981.1 = add nuw nsw i64 %indvars.iv980, 2
  %gep1105.2 = getelementptr double, ptr %invariant.gep1104, i64 %indvars.iv.next981.1
  %200 = load double, ptr %gep1105.2, align 8, !tbaa !12
  %gep1107.2 = getelementptr double, ptr %invariant.gep1106, i64 %indvars.iv.next981.1
  %201 = load double, ptr %gep1107.2, align 8, !tbaa !12
  %202 = fsub double %201, %200
  store double %202, ptr %gep1107.2, align 8, !tbaa !12
  %indvars.iv.next981.2 = add nuw nsw i64 %indvars.iv980, 3
  %gep1105.3 = getelementptr double, ptr %invariant.gep1104, i64 %indvars.iv.next981.2
  %203 = load double, ptr %gep1105.3, align 8, !tbaa !12
  %gep1107.3 = getelementptr double, ptr %invariant.gep1106, i64 %indvars.iv.next981.2
  %204 = load double, ptr %gep1107.3, align 8, !tbaa !12
  %205 = fsub double %204, %203
  store double %205, ptr %gep1107.3, align 8, !tbaa !12
  %indvars.iv.next981.3 = add nuw nsw i64 %indvars.iv980, 4
  %exitcond984.not.3 = icmp eq i64 %indvars.iv.next981.3, %wide.trip.count983
  br i1 %exitcond984.not.3, label %._crit_edge842, label %scalar.ph1153, !llvm.loop !33

._crit_edge842:                                   ; preds = %scalar.ph1153.prol.loopexit, %scalar.ph1153, %middle.block1152
  %indvars.iv.next986 = add nuw nsw i64 %indvars.iv985, 1
  %exitcond989.not = icmp eq i64 %indvars.iv.next986, %wide.trip.count988
  br i1 %exitcond989.not, label %.loopexit, label %.lr.ph841, !llvm.loop !34

206:                                              ; preds = %35
  br i1 %.not778, label %324, label %207

207:                                              ; preds = %206
  %208 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %208, ptr %16, align 4, !tbaa !5
  %invariant.gep847 = getelementptr i8, ptr %26, i64 8
  %.not783849 = icmp slt i32 %208, 1
  br i1 %.not783849, label %._crit_edge853, label %.lr.ph852.preheader

.lr.ph852.preheader:                              ; preds = %207
  %209 = sext i32 %24 to i64
  %210 = add nuw i32 %208, 1
  %wide.trip.count993 = zext i32 %210 to i64
  br label %.lr.ph852

.lr.ph852:                                        ; preds = %.lr.ph852.preheader, %.lr.ph852
  %indvars.iv990 = phi i64 [ 1, %.lr.ph852.preheader ], [ %indvars.iv.next991, %.lr.ph852 ]
  %211 = load i32, ptr %4, align 4, !tbaa !5
  %212 = load i32, ptr %6, align 4, !tbaa !5
  %213 = trunc nuw nsw i64 %indvars.iv990 to i32
  %214 = add i32 %21, %213
  %215 = add i32 %214, %211
  %216 = sub i32 %215, %212
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds double, ptr %23, i64 %217
  %219 = mul nsw i64 %indvars.iv990, %209
  %gep848 = getelementptr double, ptr %invariant.gep847, i64 %219
  tail call void @dcopy_(ptr noundef nonnull %5, ptr noundef %218, ptr noundef nonnull %12, ptr noundef %gep848, ptr noundef nonnull @c__1) #3
  %indvars.iv.next991 = add nuw nsw i64 %indvars.iv990, 1
  %exitcond994.not = icmp eq i64 %indvars.iv.next991, %wide.trip.count993
  br i1 %exitcond994.not, label %._crit_edge853.loopexit, label %.lr.ph852, !llvm.loop !35

._crit_edge853.loopexit:                          ; preds = %.lr.ph852
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge853

._crit_edge853:                                   ; preds = %._crit_edge853.loopexit, %207
  %220 = phi i32 [ %.pre, %._crit_edge853.loopexit ], [ %208, %207 ]
  %221 = load i32, ptr %4, align 4, !tbaa !5
  %222 = add i32 %18, 1
  %223 = add i32 %222, %221
  %224 = sub i32 %223, %220
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds double, ptr %20, i64 %225
  tail call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %226, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %227 = load i32, ptr %4, align 4, !tbaa !5
  %228 = load i32, ptr %6, align 4, !tbaa !5
  %229 = icmp sgt i32 %227, %228
  br i1 %229, label %230, label %232

230:                                              ; preds = %._crit_edge853
  %231 = sub nsw i32 %227, %228
  store i32 %231, ptr %16, align 4, !tbaa !5
  call void @dgemm_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.6, ptr noundef nonnull %5, 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) #3
  br label %232

232:                                              ; preds = %230, %._crit_edge853
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %17, ptr noundef nonnull @.str.10, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #3
  %233 = load i32, ptr %4, align 4, !tbaa !5
  %234 = load i32, ptr %6, align 4, !tbaa !5
  %235 = icmp sgt i32 %233, %234
  br i1 %235, label %236, label %238

236:                                              ; preds = %232
  %237 = sub nsw i32 %233, %234
  store i32 %237, ptr %16, align 4, !tbaa !5
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %5, 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) #3
  %.pre1080 = load i32, ptr %4, align 4, !tbaa !5
  %.pre1081 = load i32, ptr %6, align 4, !tbaa !5
  br label %238

238:                                              ; preds = %236, %232
  %239 = phi i32 [ %.pre1081, %236 ], [ %234, %232 ]
  %240 = phi i32 [ %.pre1080, %236 ], [ %233, %232 ]
  %241 = add i32 %222, %240
  %242 = sub i32 %241, %239
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds double, ptr %20, i64 %243
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %244, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %245 = load i32, ptr %6, align 4, !tbaa !5
  %.not784859 = icmp slt i32 %245, 1
  br i1 %.not784859, label %.loopexit, label %.lr.ph862

.lr.ph862:                                        ; preds = %238
  %246 = load i32, ptr %5, align 4, !tbaa !5
  %.not785854 = icmp slt i32 %246, 1
  br i1 %.not785854, label %.loopexit, label %.lr.ph862.split

.lr.ph862.split:                                  ; preds = %.lr.ph862
  %247 = load i32, ptr %4, align 4, !tbaa !5
  %248 = add nuw i32 %246, 1
  %249 = sext i32 %24 to i64
  %250 = add nuw i32 %245, 1
  %wide.trip.count1003 = zext i32 %250 to i64
  %wide.trip.count998 = zext i32 %248 to i64
  %251 = add nsw i64 %wide.trip.count998, -2
  %252 = add i32 %247, 2
  %253 = sub i32 %252, %245
  %254 = shl nsw i64 %249, 3
  %255 = shl nsw i64 %25, 3
  %256 = getelementptr i8, ptr %13, i64 %254
  %257 = getelementptr i8, ptr %256, i64 %255
  %scevgep1172 = getelementptr i8, ptr %257, i64 8
  %258 = shl nuw nsw i64 %wide.trip.count1003, 3
  %259 = add nsw i64 %258, -8
  %260 = mul i64 %259, %249
  %261 = shl nuw nsw i64 %wide.trip.count998, 3
  %262 = getelementptr i8, ptr %13, i64 %260
  %263 = getelementptr i8, ptr %262, i64 %255
  %scevgep1173 = getelementptr i8, ptr %263, i64 %261
  %scevgep1174 = getelementptr i8, ptr %11, i64 -16
  %264 = add i32 %247, 2
  %265 = sub i32 %264, %245
  %266 = getelementptr i8, ptr %11, i64 %261
  %scevgep1176 = getelementptr i8, ptr %266, i64 -24
  %267 = zext nneg i32 %246 to i64
  %268 = zext nneg i32 %246 to i64
  %min.iters.check1184 = icmp ult i32 %246, 8
  %ident.check1170 = icmp ne i32 %21, 1
  %269 = trunc i64 %251 to i32
  %270 = icmp ugt i64 %251, 4294967295
  %stride.check1181 = icmp slt i32 %24, 0
  %n.vec1187 = and i64 %267, 2147483644
  %ind.end1188 = or disjoint i64 %n.vec1187, 1
  %cmp.n1199 = icmp eq i64 %n.vec1187, %267
  %271 = and i32 %246, 1
  %lcmp.mod1358.not = icmp eq i32 %271, 0
  br label %.lr.ph857

.lr.ph857:                                        ; preds = %.lr.ph862.split, %._crit_edge858
  %indvar = phi i32 [ 0, %.lr.ph862.split ], [ %indvar.next, %._crit_edge858 ]
  %indvars.iv1000 = phi i64 [ 1, %.lr.ph862.split ], [ %indvars.iv.next1001, %._crit_edge858 ]
  %272 = add i32 %265, %indvar
  %273 = sext i32 %272 to i64
  %274 = shl nsw i64 %273, 3
  %scevgep1175 = getelementptr i8, ptr %scevgep1174, i64 %274
  %scevgep1177 = getelementptr i8, ptr %scevgep1176, i64 %274
  %275 = mul nsw i64 %indvars.iv1000, %249
  %invariant.gep1108 = getelementptr double, ptr %26, i64 %275
  %276 = trunc i64 %indvars.iv1000 to i32
  %277 = sub i32 %276, %245
  br i1 %min.iters.check1184, label %scalar.ph1183.preheader, label %vector.scevcheck1169

vector.scevcheck1169:                             ; preds = %.lr.ph857
  %278 = add i32 %253, %indvar
  %279 = add i32 %278, %269
  %280 = icmp slt i32 %279, %278
  %281 = or i1 %280, %270
  %282 = or i1 %ident.check1170, %281
  br i1 %282, label %scalar.ph1183.preheader, label %vector.memcheck1171

vector.memcheck1171:                              ; preds = %vector.scevcheck1169
  %bound01178 = icmp ult ptr %scevgep1172, %scevgep1177
  %bound11179 = icmp ult ptr %scevgep1175, %scevgep1173
  %found.conflict1180 = and i1 %bound01178, %bound11179
  %283 = or i1 %found.conflict1180, %stride.check1181
  br i1 %283, label %scalar.ph1183.preheader, label %vector.body1190

vector.body1190:                                  ; preds = %vector.memcheck1171, %vector.body1190
  %index1191 = phi i64 [ %index.next1198, %vector.body1190 ], [ 0, %vector.memcheck1171 ]
  %offset.idx1192 = or disjoint i64 %index1191, 1
  %284 = trunc i64 %index1191 to i32
  %285 = or disjoint i32 %284, 1
  %286 = getelementptr double, ptr %invariant.gep1108, i64 %offset.idx1192
  %287 = getelementptr i8, ptr %286, i64 16
  %wide.load1194 = load <2 x double>, ptr %286, align 8, !tbaa !12, !alias.scope !36, !noalias !39
  %wide.load1195 = load <2 x double>, ptr %287, align 8, !tbaa !12, !alias.scope !36, !noalias !39
  %288 = add i32 %277, %285
  %289 = add i32 %288, %247
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds double, ptr %23, i64 %290
  %292 = getelementptr inbounds i8, ptr %291, i64 16
  %wide.load1196 = load <2 x double>, ptr %291, align 8, !tbaa !12, !alias.scope !39
  %wide.load1197 = load <2 x double>, ptr %292, align 8, !tbaa !12, !alias.scope !39
  %293 = fsub <2 x double> %wide.load1196, %wide.load1194
  %294 = fsub <2 x double> %wide.load1197, %wide.load1195
  store <2 x double> %293, ptr %291, align 8, !tbaa !12, !alias.scope !39
  store <2 x double> %294, ptr %292, align 8, !tbaa !12, !alias.scope !39
  %index.next1198 = add nuw i64 %index1191, 4
  %295 = icmp eq i64 %index.next1198, %n.vec1187
  br i1 %295, label %middle.block1182, label %vector.body1190, !llvm.loop !41

middle.block1182:                                 ; preds = %vector.body1190
  br i1 %cmp.n1199, label %._crit_edge858, label %scalar.ph1183.preheader

scalar.ph1183.preheader:                          ; preds = %middle.block1182, %vector.memcheck1171, %vector.scevcheck1169, %.lr.ph857
  %indvars.iv995.ph = phi i64 [ 1, %vector.memcheck1171 ], [ 1, %vector.scevcheck1169 ], [ 1, %.lr.ph857 ], [ %ind.end1188, %middle.block1182 ]
  br i1 %lcmp.mod1358.not, label %scalar.ph1183.prol.loopexit, label %scalar.ph1183.prol

scalar.ph1183.prol:                               ; preds = %scalar.ph1183.preheader
  %gep1109.prol = getelementptr double, ptr %invariant.gep1108, i64 %indvars.iv995.ph
  %296 = load double, ptr %gep1109.prol, align 8, !tbaa !12
  %297 = trunc nsw i64 %indvars.iv995.ph to i32
  %298 = mul i32 %21, %297
  %299 = add i32 %277, %298
  %300 = add i32 %299, %247
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds double, ptr %23, i64 %301
  %303 = load double, ptr %302, align 8, !tbaa !12
  %304 = fsub double %303, %296
  store double %304, ptr %302, align 8, !tbaa !12
  %indvars.iv.next996.prol = add nuw nsw i64 %indvars.iv995.ph, 1
  br label %scalar.ph1183.prol.loopexit

scalar.ph1183.prol.loopexit:                      ; preds = %scalar.ph1183.prol, %scalar.ph1183.preheader
  %indvars.iv995.unr = phi i64 [ %indvars.iv995.ph, %scalar.ph1183.preheader ], [ %indvars.iv.next996.prol, %scalar.ph1183.prol ]
  %305 = icmp eq i64 %indvars.iv995.ph, %268
  br i1 %305, label %._crit_edge858, label %scalar.ph1183

scalar.ph1183:                                    ; preds = %scalar.ph1183.prol.loopexit, %scalar.ph1183
  %indvars.iv995 = phi i64 [ %indvars.iv.next996.1, %scalar.ph1183 ], [ %indvars.iv995.unr, %scalar.ph1183.prol.loopexit ]
  %gep1109 = getelementptr double, ptr %invariant.gep1108, i64 %indvars.iv995
  %306 = load double, ptr %gep1109, align 8, !tbaa !12
  %307 = trunc i64 %indvars.iv995 to i32
  %308 = mul i32 %21, %307
  %309 = add i32 %277, %308
  %310 = add i32 %309, %247
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds double, ptr %23, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !12
  %314 = fsub double %313, %306
  store double %314, ptr %312, align 8, !tbaa !12
  %indvars.iv.next996 = add nuw nsw i64 %indvars.iv995, 1
  %gep1109.1 = getelementptr double, ptr %invariant.gep1108, i64 %indvars.iv.next996
  %315 = load double, ptr %gep1109.1, align 8, !tbaa !12
  %316 = trunc i64 %indvars.iv.next996 to i32
  %317 = mul i32 %21, %316
  %318 = add i32 %277, %317
  %319 = add i32 %318, %247
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds double, ptr %23, i64 %320
  %322 = load double, ptr %321, align 8, !tbaa !12
  %323 = fsub double %322, %315
  store double %323, ptr %321, align 8, !tbaa !12
  %indvars.iv.next996.1 = add nuw nsw i64 %indvars.iv995, 2
  %exitcond999.not.1 = icmp eq i64 %indvars.iv.next996.1, %wide.trip.count998
  br i1 %exitcond999.not.1, label %._crit_edge858, label %scalar.ph1183, !llvm.loop !42

._crit_edge858:                                   ; preds = %scalar.ph1183.prol.loopexit, %scalar.ph1183, %middle.block1182
  %indvars.iv.next1001 = add nuw nsw i64 %indvars.iv1000, 1
  %exitcond1004.not = icmp eq i64 %indvars.iv.next1001, %wide.trip.count1003
  %indvar.next = add i32 %indvar, 1
  br i1 %exitcond1004.not, label %.loopexit, label %.lr.ph857, !llvm.loop !43

324:                                              ; preds = %206
  %325 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.11) #3
  %.not779 = icmp eq i32 %325, 0
  br i1 %.not779, label %.loopexit, label %326

326:                                              ; preds = %324
  %327 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %327, ptr %16, align 4, !tbaa !5
  %invariant.gep863 = getelementptr i8, ptr %23, i64 8
  %invariant.gep865 = getelementptr i8, ptr %26, i64 8
  %.not780867 = icmp slt i32 %327, 1
  br i1 %.not780867, label %._crit_edge871, label %.lr.ph870.preheader

.lr.ph870.preheader:                              ; preds = %326
  %328 = sext i32 %24 to i64
  %329 = add nuw i32 %327, 1
  %wide.trip.count1008 = zext i32 %329 to i64
  br label %.lr.ph870

.lr.ph870:                                        ; preds = %.lr.ph870.preheader, %.lr.ph870
  %indvars.iv1005 = phi i64 [ 1, %.lr.ph870.preheader ], [ %indvars.iv.next1006, %.lr.ph870 ]
  %330 = load i32, ptr %5, align 4, !tbaa !5
  %331 = load i32, ptr %6, align 4, !tbaa !5
  %332 = trunc nuw nsw i64 %indvars.iv1005 to i32
  %333 = add i32 %330, %332
  %334 = sub i32 %333, %331
  %335 = mul nsw i32 %334, %21
  %336 = sext i32 %335 to i64
  %gep864 = getelementptr double, ptr %invariant.gep863, i64 %336
  %337 = mul nsw i64 %indvars.iv1005, %328
  %gep866 = getelementptr double, ptr %invariant.gep865, i64 %337
  tail call void @dcopy_(ptr noundef nonnull %4, ptr noundef %gep864, ptr noundef nonnull @c__1, ptr noundef %gep866, ptr noundef nonnull @c__1) #3
  %indvars.iv.next1006 = add nuw nsw i64 %indvars.iv1005, 1
  %exitcond1009.not = icmp eq i64 %indvars.iv.next1006, %wide.trip.count1008
  br i1 %exitcond1009.not, label %._crit_edge871.loopexit, label %.lr.ph870, !llvm.loop !44

._crit_edge871.loopexit:                          ; preds = %.lr.ph870
  %.pre1082 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge871

._crit_edge871:                                   ; preds = %._crit_edge871.loopexit, %326
  %338 = phi i32 [ %.pre1082, %._crit_edge871.loopexit ], [ %327, %326 ]
  %339 = load i32, ptr %5, align 4, !tbaa !5
  %340 = add i32 %18, 1
  %341 = add i32 %340, %339
  %342 = sub i32 %341, %338
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds double, ptr %20, i64 %343
  tail call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %344, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %345 = load i32, ptr %5, align 4, !tbaa !5
  %346 = load i32, ptr %6, align 4, !tbaa !5
  %347 = icmp sgt i32 %345, %346
  br i1 %347, label %348, label %350

348:                                              ; preds = %._crit_edge871
  %349 = sub nsw i32 %345, %346
  store i32 %349, ptr %16, align 4, !tbaa !5
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, 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) #3
  br label %350

350:                                              ; preds = %348, %._crit_edge871
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef %1, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #3
  %351 = load i32, ptr %5, align 4, !tbaa !5
  %352 = load i32, ptr %6, align 4, !tbaa !5
  %353 = icmp sgt i32 %351, %352
  br i1 %353, label %354, label %356

354:                                              ; preds = %350
  %355 = sub nsw i32 %351, %352
  store i32 %355, ptr %16, align 4, !tbaa !5
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %4, 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) #3
  %.pre1083 = load i32, ptr %5, align 4, !tbaa !5
  %.pre1084 = load i32, ptr %6, align 4, !tbaa !5
  br label %356

356:                                              ; preds = %354, %350
  %357 = phi i32 [ %.pre1084, %354 ], [ %352, %350 ]
  %358 = phi i32 [ %.pre1083, %354 ], [ %351, %350 ]
  %359 = add i32 %340, %358
  %360 = sub i32 %359, %357
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %20, i64 %361
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %362, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %363 = load i32, ptr %6, align 4, !tbaa !5
  %.not781877 = icmp slt i32 %363, 1
  br i1 %.not781877, label %.loopexit, label %.lr.ph880

.lr.ph880:                                        ; preds = %356
  %364 = load i32, ptr %4, align 4, !tbaa !5
  %.not782872 = icmp slt i32 %364, 1
  br i1 %.not782872, label %.loopexit, label %.lr.ph880.split

.lr.ph880.split:                                  ; preds = %.lr.ph880
  %365 = load i32, ptr %5, align 4, !tbaa !5
  %366 = add nuw i32 %364, 1
  %367 = sext i32 %24 to i64
  %368 = add nuw i32 %363, 1
  %wide.trip.count1018 = zext i32 %368 to i64
  %wide.trip.count1013 = zext i32 %366 to i64
  %369 = shl nsw i64 %22, 3
  %370 = getelementptr i8, ptr %11, i64 %369
  %scevgep1201 = getelementptr i8, ptr %370, i64 8
  %371 = add i32 %365, 1
  %372 = sub i32 %371, %363
  %373 = shl nuw nsw i64 %wide.trip.count1013, 3
  %374 = getelementptr i8, ptr %11, i64 %369
  %scevgep1205 = getelementptr i8, ptr %374, i64 %373
  %375 = shl nsw i64 %367, 3
  %376 = shl nsw i64 %25, 3
  %377 = getelementptr i8, ptr %13, i64 %375
  %378 = getelementptr i8, ptr %377, i64 %376
  %scevgep1207 = getelementptr i8, ptr %378, i64 8
  %379 = shl nuw nsw i64 %wide.trip.count1018, 3
  %380 = add nsw i64 %379, -8
  %381 = mul i64 %380, %367
  %382 = getelementptr i8, ptr %13, i64 %381
  %383 = getelementptr i8, ptr %382, i64 %376
  %scevgep1208 = getelementptr i8, ptr %383, i64 %373
  %384 = zext nneg i32 %364 to i64
  %385 = zext nneg i32 %364 to i64
  %min.iters.check1215 = icmp ult i32 %364, 4
  %stride.check1212 = icmp slt i32 %24, 0
  %n.vec1218 = and i64 %384, 2147483644
  %ind.end1219 = or disjoint i64 %n.vec1218, 1
  %cmp.n1229 = icmp eq i64 %n.vec1218, %384
  br label %.lr.ph875

.lr.ph875:                                        ; preds = %.lr.ph880.split, %._crit_edge876
  %indvar1202 = phi i32 [ 0, %.lr.ph880.split ], [ %indvar.next1203, %._crit_edge876 ]
  %indvars.iv1015 = phi i64 [ 1, %.lr.ph880.split ], [ %indvars.iv.next1016, %._crit_edge876 ]
  %386 = mul nsw i64 %indvars.iv1015, %367
  %387 = trunc i64 %indvars.iv1015 to i32
  %388 = sub i32 %387, %363
  %389 = add i32 %388, %365
  %390 = mul nsw i32 %389, %21
  %391 = sext i32 %390 to i64
  %invariant.gep1110 = getelementptr double, ptr %26, i64 %386
  %invariant.gep1112 = getelementptr double, ptr %23, i64 %391
  br i1 %min.iters.check1215, label %scalar.ph1214.preheader, label %vector.memcheck1200

vector.memcheck1200:                              ; preds = %.lr.ph875
  %392 = add i32 %372, %indvar1202
  %393 = mul i32 %21, %392
  %394 = sext i32 %393 to i64
  %395 = shl nsw i64 %394, 3
  %scevgep1206 = getelementptr i8, ptr %scevgep1205, i64 %395
  %scevgep1204 = getelementptr i8, ptr %scevgep1201, i64 %395
  %bound01209 = icmp ult ptr %scevgep1204, %scevgep1208
  %bound11210 = icmp ult ptr %scevgep1207, %scevgep1206
  %found.conflict1211 = and i1 %bound01209, %bound11210
  %396 = or i1 %found.conflict1211, %stride.check1212
  br i1 %396, label %scalar.ph1214.preheader, label %vector.body1221

vector.body1221:                                  ; preds = %vector.memcheck1200, %vector.body1221
  %index1222 = phi i64 [ %index.next1228, %vector.body1221 ], [ 0, %vector.memcheck1200 ]
  %offset.idx1223 = or disjoint i64 %index1222, 1
  %397 = getelementptr double, ptr %invariant.gep1110, i64 %offset.idx1223
  %398 = getelementptr i8, ptr %397, i64 16
  %wide.load1224 = load <2 x double>, ptr %397, align 8, !tbaa !12, !alias.scope !45
  %wide.load1225 = load <2 x double>, ptr %398, align 8, !tbaa !12, !alias.scope !45
  %399 = getelementptr double, ptr %invariant.gep1112, i64 %offset.idx1223
  %400 = getelementptr i8, ptr %399, i64 16
  %wide.load1226 = load <2 x double>, ptr %399, align 8, !tbaa !12, !alias.scope !48, !noalias !45
  %wide.load1227 = load <2 x double>, ptr %400, align 8, !tbaa !12, !alias.scope !48, !noalias !45
  %401 = fsub <2 x double> %wide.load1226, %wide.load1224
  %402 = fsub <2 x double> %wide.load1227, %wide.load1225
  store <2 x double> %401, ptr %399, align 8, !tbaa !12, !alias.scope !48, !noalias !45
  store <2 x double> %402, ptr %400, align 8, !tbaa !12, !alias.scope !48, !noalias !45
  %index.next1228 = add nuw i64 %index1222, 4
  %403 = icmp eq i64 %index.next1228, %n.vec1218
  br i1 %403, label %middle.block1213, label %vector.body1221, !llvm.loop !50

middle.block1213:                                 ; preds = %vector.body1221
  br i1 %cmp.n1229, label %._crit_edge876, label %scalar.ph1214.preheader

scalar.ph1214.preheader:                          ; preds = %middle.block1213, %vector.memcheck1200, %.lr.ph875
  %indvars.iv1010.ph = phi i64 [ 1, %vector.memcheck1200 ], [ 1, %.lr.ph875 ], [ %ind.end1219, %middle.block1213 ]
  %404 = sub nsw i64 %wide.trip.count1013, %indvars.iv1010.ph
  %405 = sub nsw i64 %385, %indvars.iv1010.ph
  %xtraiter1360 = and i64 %404, 3
  %lcmp.mod1361.not = icmp eq i64 %xtraiter1360, 0
  br i1 %lcmp.mod1361.not, label %scalar.ph1214.prol.loopexit, label %scalar.ph1214.prol

scalar.ph1214.prol:                               ; preds = %scalar.ph1214.preheader, %scalar.ph1214.prol
  %indvars.iv1010.prol = phi i64 [ %indvars.iv.next1011.prol, %scalar.ph1214.prol ], [ %indvars.iv1010.ph, %scalar.ph1214.preheader ]
  %prol.iter1362 = phi i64 [ %prol.iter1362.next, %scalar.ph1214.prol ], [ 0, %scalar.ph1214.preheader ]
  %gep1111.prol = getelementptr double, ptr %invariant.gep1110, i64 %indvars.iv1010.prol
  %406 = load double, ptr %gep1111.prol, align 8, !tbaa !12
  %gep1113.prol = getelementptr double, ptr %invariant.gep1112, i64 %indvars.iv1010.prol
  %407 = load double, ptr %gep1113.prol, align 8, !tbaa !12
  %408 = fsub double %407, %406
  store double %408, ptr %gep1113.prol, align 8, !tbaa !12
  %indvars.iv.next1011.prol = add nuw nsw i64 %indvars.iv1010.prol, 1
  %prol.iter1362.next = add i64 %prol.iter1362, 1
  %prol.iter1362.cmp.not = icmp eq i64 %prol.iter1362.next, %xtraiter1360
  br i1 %prol.iter1362.cmp.not, label %scalar.ph1214.prol.loopexit, label %scalar.ph1214.prol, !llvm.loop !51

scalar.ph1214.prol.loopexit:                      ; preds = %scalar.ph1214.prol, %scalar.ph1214.preheader
  %indvars.iv1010.unr = phi i64 [ %indvars.iv1010.ph, %scalar.ph1214.preheader ], [ %indvars.iv.next1011.prol, %scalar.ph1214.prol ]
  %409 = icmp ult i64 %405, 3
  br i1 %409, label %._crit_edge876, label %scalar.ph1214

scalar.ph1214:                                    ; preds = %scalar.ph1214.prol.loopexit, %scalar.ph1214
  %indvars.iv1010 = phi i64 [ %indvars.iv.next1011.3, %scalar.ph1214 ], [ %indvars.iv1010.unr, %scalar.ph1214.prol.loopexit ]
  %gep1111 = getelementptr double, ptr %invariant.gep1110, i64 %indvars.iv1010
  %410 = load double, ptr %gep1111, align 8, !tbaa !12
  %gep1113 = getelementptr double, ptr %invariant.gep1112, i64 %indvars.iv1010
  %411 = load double, ptr %gep1113, align 8, !tbaa !12
  %412 = fsub double %411, %410
  store double %412, ptr %gep1113, align 8, !tbaa !12
  %indvars.iv.next1011 = add nuw nsw i64 %indvars.iv1010, 1
  %gep1111.1 = getelementptr double, ptr %invariant.gep1110, i64 %indvars.iv.next1011
  %413 = load double, ptr %gep1111.1, align 8, !tbaa !12
  %gep1113.1 = getelementptr double, ptr %invariant.gep1112, i64 %indvars.iv.next1011
  %414 = load double, ptr %gep1113.1, align 8, !tbaa !12
  %415 = fsub double %414, %413
  store double %415, ptr %gep1113.1, align 8, !tbaa !12
  %indvars.iv.next1011.1 = add nuw nsw i64 %indvars.iv1010, 2
  %gep1111.2 = getelementptr double, ptr %invariant.gep1110, i64 %indvars.iv.next1011.1
  %416 = load double, ptr %gep1111.2, align 8, !tbaa !12
  %gep1113.2 = getelementptr double, ptr %invariant.gep1112, i64 %indvars.iv.next1011.1
  %417 = load double, ptr %gep1113.2, align 8, !tbaa !12
  %418 = fsub double %417, %416
  store double %418, ptr %gep1113.2, align 8, !tbaa !12
  %indvars.iv.next1011.2 = add nuw nsw i64 %indvars.iv1010, 3
  %gep1111.3 = getelementptr double, ptr %invariant.gep1110, i64 %indvars.iv.next1011.2
  %419 = load double, ptr %gep1111.3, align 8, !tbaa !12
  %gep1113.3 = getelementptr double, ptr %invariant.gep1112, i64 %indvars.iv.next1011.2
  %420 = load double, ptr %gep1113.3, align 8, !tbaa !12
  %421 = fsub double %420, %419
  store double %421, ptr %gep1113.3, align 8, !tbaa !12
  %indvars.iv.next1011.3 = add nuw nsw i64 %indvars.iv1010, 4
  %exitcond1014.not.3 = icmp eq i64 %indvars.iv.next1011.3, %wide.trip.count1013
  br i1 %exitcond1014.not.3, label %._crit_edge876, label %scalar.ph1214, !llvm.loop !52

._crit_edge876:                                   ; preds = %scalar.ph1214.prol.loopexit, %scalar.ph1214, %middle.block1213
  %indvars.iv.next1016 = add nuw nsw i64 %indvars.iv1015, 1
  %exitcond1019.not = icmp eq i64 %indvars.iv.next1016, %wide.trip.count1018
  %indvar.next1203 = add i32 %indvar1202, 1
  br i1 %exitcond1019.not, label %.loopexit, label %.lr.ph875, !llvm.loop !53

422:                                              ; preds = %32
  %423 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.11) #3
  %.not759 = icmp eq i32 %423, 0
  br i1 %.not759, label %.loopexit, label %424

424:                                              ; preds = %422
  %425 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.2) #3
  %.not760 = icmp eq i32 %425, 0
  %426 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #3
  %.not761 = icmp eq i32 %426, 0
  br i1 %.not760, label %599, label %427

427:                                              ; preds = %424
  br i1 %.not761, label %505, label %428

428:                                              ; preds = %427
  %429 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %429, ptr %16, align 4, !tbaa !5
  %invariant.gep881 = getelementptr i8, ptr %26, i64 8
  %.not774883 = icmp slt i32 %429, 1
  br i1 %.not774883, label %._crit_edge887, label %.lr.ph886.preheader

.lr.ph886.preheader:                              ; preds = %428
  %430 = sext i32 %21 to i64
  %431 = sext i32 %24 to i64
  %432 = add nuw i32 %429, 1
  %wide.trip.count1023 = zext i32 %432 to i64
  %invariant.gep1114 = getelementptr double, ptr %23, i64 %430
  br label %.lr.ph886

.lr.ph886:                                        ; preds = %.lr.ph886.preheader, %.lr.ph886
  %indvars.iv1020 = phi i64 [ 1, %.lr.ph886.preheader ], [ %indvars.iv.next1021, %.lr.ph886 ]
  %gep1115 = getelementptr double, ptr %invariant.gep1114, i64 %indvars.iv1020
  %433 = mul nsw i64 %indvars.iv1020, %431
  %gep882 = getelementptr double, ptr %invariant.gep881, i64 %433
  tail call void @dcopy_(ptr noundef nonnull %5, ptr noundef %gep1115, ptr noundef nonnull %12, ptr noundef %gep882, ptr noundef nonnull @c__1) #3
  %indvars.iv.next1021 = add nuw nsw i64 %indvars.iv1020, 1
  %exitcond1024.not = icmp eq i64 %indvars.iv.next1021, %wide.trip.count1023
  br i1 %exitcond1024.not, label %._crit_edge887, label %.lr.ph886, !llvm.loop !54

._crit_edge887:                                   ; preds = %.lr.ph886, %428
  tail call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %434 = load i32, ptr %4, align 4, !tbaa !5
  %435 = load i32, ptr %6, align 4, !tbaa !5
  %436 = icmp sgt i32 %434, %435
  br i1 %436, label %437, label %447

437:                                              ; preds = %._crit_edge887
  %438 = sub nsw i32 %434, %435
  store i32 %438, ptr %16, align 4, !tbaa !5
  %439 = add nsw i32 %435, 1
  %440 = add nsw i32 %439, %21
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %23, i64 %441
  %443 = mul nsw i32 %439, %18
  %444 = sext i32 %443 to i64
  %445 = getelementptr double, ptr %20, i64 %444
  %446 = getelementptr i8, ptr %445, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %442, ptr noundef nonnull %12, ptr noundef %446, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #3
  br label %447

447:                                              ; preds = %437, %._crit_edge887
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull %17, ptr noundef nonnull @.str.10, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #3
  %448 = load i32, ptr %4, align 4, !tbaa !5
  %449 = load i32, ptr %6, align 4, !tbaa !5
  %450 = icmp sgt i32 %448, %449
  br i1 %450, label %451, label %461

451:                                              ; preds = %447
  %452 = sub nsw i32 %448, %449
  store i32 %452, ptr %16, align 4, !tbaa !5
  %453 = add nsw i32 %449, 1
  %454 = mul nsw i32 %453, %18
  %455 = sext i32 %454 to i64
  %456 = getelementptr double, ptr %20, i64 %455
  %457 = getelementptr i8, ptr %456, i64 8
  %458 = add nsw i32 %453, %21
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds double, ptr %23, i64 %459
  call void @dgemm_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %457, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull @c_b14, ptr noundef %460, ptr noundef nonnull %12) #3
  br label %461

461:                                              ; preds = %451, %447
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %462 = load i32, ptr %6, align 4, !tbaa !5
  %.not775893 = icmp slt i32 %462, 1
  br i1 %.not775893, label %.loopexit, label %.lr.ph896

.lr.ph896:                                        ; preds = %461
  %463 = load i32, ptr %5, align 4, !tbaa !5
  %.not776888 = icmp slt i32 %463, 1
  br i1 %.not776888, label %.loopexit, label %.lr.ph891.preheader

.lr.ph891.preheader:                              ; preds = %.lr.ph896
  %464 = sext i32 %21 to i64
  %465 = add nuw i32 %463, 1
  %466 = sext i32 %24 to i64
  %467 = add nuw i32 %462, 1
  %wide.trip.count1033 = zext i32 %467 to i64
  %wide.trip.count1028 = zext i32 %465 to i64
  %468 = shl nuw nsw i64 %wide.trip.count1033, 3
  %469 = shl nuw nsw i64 %wide.trip.count1028, 3
  %470 = getelementptr i8, ptr %11, i64 %468
  %471 = getelementptr i8, ptr %470, i64 %469
  %scevgep1233 = getelementptr i8, ptr %471, i64 -24
  %472 = shl nsw i64 %466, 3
  %473 = shl nsw i64 %25, 3
  %474 = getelementptr i8, ptr %13, i64 %472
  %475 = getelementptr i8, ptr %474, i64 %473
  %scevgep1234 = getelementptr i8, ptr %475, i64 8
  %476 = add nsw i64 %468, -8
  %477 = mul i64 %476, %466
  %478 = getelementptr i8, ptr %13, i64 %477
  %479 = getelementptr i8, ptr %478, i64 %473
  %scevgep1235 = getelementptr i8, ptr %479, i64 %469
  %480 = zext nneg i32 %463 to i64
  %481 = zext nneg i32 %463 to i64
  %min.iters.check1242 = icmp ugt i32 %463, 5
  %ident.check1231.not = icmp eq i32 %21, 1
  %or.cond1347 = select i1 %min.iters.check1242, i1 %ident.check1231.not, i1 false
  %bound01236 = icmp ugt ptr %scevgep1235, %11
  %bound11237 = icmp ult ptr %scevgep1234, %scevgep1233
  %found.conflict1238 = and i1 %bound01236, %bound11237
  %stride.check1239 = icmp slt i32 %24, 0
  %482 = or i1 %found.conflict1238, %stride.check1239
  %n.vec1245 = and i64 %480, 2147483644
  %ind.end1246 = or disjoint i64 %n.vec1245, 1
  %cmp.n1256 = icmp eq i64 %n.vec1245, %480
  %483 = and i32 %463, 1
  %lcmp.mod1364.not = icmp eq i32 %483, 0
  br label %.lr.ph891

.lr.ph891:                                        ; preds = %.lr.ph891.preheader, %._crit_edge892
  %indvars.iv1030 = phi i64 [ 1, %.lr.ph891.preheader ], [ %indvars.iv.next1031, %._crit_edge892 ]
  %484 = mul nsw i64 %indvars.iv1030, %466
  %invariant.gep1116 = getelementptr double, ptr %26, i64 %484
  %invariant.gep1118 = getelementptr double, ptr %23, i64 %indvars.iv1030
  %or.cond1347.not = xor i1 %or.cond1347, true
  %brmerge1376 = select i1 %or.cond1347.not, i1 true, i1 %482
  br i1 %brmerge1376, label %scalar.ph1241.preheader, label %vector.body1248

vector.body1248:                                  ; preds = %.lr.ph891, %vector.body1248
  %index1249 = phi i64 [ %index.next1255, %vector.body1248 ], [ 0, %.lr.ph891 ]
  %offset.idx1250 = or disjoint i64 %index1249, 1
  %485 = getelementptr double, ptr %invariant.gep1116, i64 %offset.idx1250
  %486 = getelementptr i8, ptr %485, i64 16
  %wide.load1251 = load <2 x double>, ptr %485, align 8, !tbaa !12, !alias.scope !55
  %wide.load1252 = load <2 x double>, ptr %486, align 8, !tbaa !12, !alias.scope !55
  %487 = getelementptr double, ptr %invariant.gep1118, i64 %offset.idx1250
  %488 = getelementptr i8, ptr %487, i64 16
  %wide.load1253 = load <2 x double>, ptr %487, align 8, !tbaa !12, !alias.scope !58, !noalias !55
  %wide.load1254 = load <2 x double>, ptr %488, align 8, !tbaa !12, !alias.scope !58, !noalias !55
  %489 = fsub <2 x double> %wide.load1253, %wide.load1251
  %490 = fsub <2 x double> %wide.load1254, %wide.load1252
  store <2 x double> %489, ptr %487, align 8, !tbaa !12, !alias.scope !58, !noalias !55
  store <2 x double> %490, ptr %488, align 8, !tbaa !12, !alias.scope !58, !noalias !55
  %index.next1255 = add nuw i64 %index1249, 4
  %491 = icmp eq i64 %index.next1255, %n.vec1245
  br i1 %491, label %middle.block1240, label %vector.body1248, !llvm.loop !60

middle.block1240:                                 ; preds = %vector.body1248
  br i1 %cmp.n1256, label %._crit_edge892, label %scalar.ph1241.preheader

scalar.ph1241.preheader:                          ; preds = %.lr.ph891, %middle.block1240
  %indvars.iv1025.ph = phi i64 [ 1, %.lr.ph891 ], [ %ind.end1246, %middle.block1240 ]
  br i1 %lcmp.mod1364.not, label %scalar.ph1241.prol.loopexit, label %scalar.ph1241.prol

scalar.ph1241.prol:                               ; preds = %scalar.ph1241.preheader
  %gep1117.prol = getelementptr double, ptr %invariant.gep1116, i64 %indvars.iv1025.ph
  %492 = load double, ptr %gep1117.prol, align 8, !tbaa !12
  %493 = mul nsw i64 %indvars.iv1025.ph, %464
  %gep1119.prol = getelementptr double, ptr %invariant.gep1118, i64 %493
  %494 = load double, ptr %gep1119.prol, align 8, !tbaa !12
  %495 = fsub double %494, %492
  store double %495, ptr %gep1119.prol, align 8, !tbaa !12
  %indvars.iv.next1026.prol = add nuw nsw i64 %indvars.iv1025.ph, 1
  br label %scalar.ph1241.prol.loopexit

scalar.ph1241.prol.loopexit:                      ; preds = %scalar.ph1241.prol, %scalar.ph1241.preheader
  %indvars.iv1025.unr = phi i64 [ %indvars.iv1025.ph, %scalar.ph1241.preheader ], [ %indvars.iv.next1026.prol, %scalar.ph1241.prol ]
  %496 = icmp eq i64 %indvars.iv1025.ph, %481
  br i1 %496, label %._crit_edge892, label %scalar.ph1241

scalar.ph1241:                                    ; preds = %scalar.ph1241.prol.loopexit, %scalar.ph1241
  %indvars.iv1025 = phi i64 [ %indvars.iv.next1026.1, %scalar.ph1241 ], [ %indvars.iv1025.unr, %scalar.ph1241.prol.loopexit ]
  %gep1117 = getelementptr double, ptr %invariant.gep1116, i64 %indvars.iv1025
  %497 = load double, ptr %gep1117, align 8, !tbaa !12
  %498 = mul nsw i64 %indvars.iv1025, %464
  %gep1119 = getelementptr double, ptr %invariant.gep1118, i64 %498
  %499 = load double, ptr %gep1119, align 8, !tbaa !12
  %500 = fsub double %499, %497
  store double %500, ptr %gep1119, align 8, !tbaa !12
  %indvars.iv.next1026 = add nuw nsw i64 %indvars.iv1025, 1
  %gep1117.1 = getelementptr double, ptr %invariant.gep1116, i64 %indvars.iv.next1026
  %501 = load double, ptr %gep1117.1, align 8, !tbaa !12
  %502 = mul nsw i64 %indvars.iv.next1026, %464
  %gep1119.1 = getelementptr double, ptr %invariant.gep1118, i64 %502
  %503 = load double, ptr %gep1119.1, align 8, !tbaa !12
  %504 = fsub double %503, %501
  store double %504, ptr %gep1119.1, align 8, !tbaa !12
  %indvars.iv.next1026.1 = add nuw nsw i64 %indvars.iv1025, 2
  %exitcond1029.not.1 = icmp eq i64 %indvars.iv.next1026.1, %wide.trip.count1028
  br i1 %exitcond1029.not.1, label %._crit_edge892, label %scalar.ph1241, !llvm.loop !61

._crit_edge892:                                   ; preds = %scalar.ph1241.prol.loopexit, %scalar.ph1241, %middle.block1240
  %indvars.iv.next1031 = add nuw nsw i64 %indvars.iv1030, 1
  %exitcond1034.not = icmp eq i64 %indvars.iv.next1031, %wide.trip.count1033
  br i1 %exitcond1034.not, label %.loopexit, label %.lr.ph891, !llvm.loop !62

505:                                              ; preds = %427
  %506 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.11) #3
  %.not770 = icmp eq i32 %506, 0
  br i1 %.not770, label %.loopexit, label %507

507:                                              ; preds = %505
  %508 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %508, ptr %16, align 4, !tbaa !5
  %invariant.gep897 = getelementptr i8, ptr %23, i64 8
  %invariant.gep899 = getelementptr i8, ptr %26, i64 8
  %.not771901 = icmp slt i32 %508, 1
  br i1 %.not771901, label %._crit_edge905, label %.lr.ph904.preheader

.lr.ph904.preheader:                              ; preds = %507
  %509 = sext i32 %21 to i64
  %510 = sext i32 %24 to i64
  %511 = add nuw i32 %508, 1
  %wide.trip.count1038 = zext i32 %511 to i64
  br label %.lr.ph904

.lr.ph904:                                        ; preds = %.lr.ph904.preheader, %.lr.ph904
  %indvars.iv1035 = phi i64 [ 1, %.lr.ph904.preheader ], [ %indvars.iv.next1036, %.lr.ph904 ]
  %512 = mul nsw i64 %indvars.iv1035, %509
  %gep898 = getelementptr double, ptr %invariant.gep897, i64 %512
  %513 = mul nsw i64 %indvars.iv1035, %510
  %gep900 = getelementptr double, ptr %invariant.gep899, i64 %513
  tail call void @dcopy_(ptr noundef nonnull %4, ptr noundef %gep898, ptr noundef nonnull @c__1, ptr noundef %gep900, ptr noundef nonnull @c__1) #3
  %indvars.iv.next1036 = add nuw nsw i64 %indvars.iv1035, 1
  %exitcond1039.not = icmp eq i64 %indvars.iv.next1036, %wide.trip.count1038
  br i1 %exitcond1039.not, label %._crit_edge905, label %.lr.ph904, !llvm.loop !63

._crit_edge905:                                   ; preds = %.lr.ph904, %507
  tail call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %514 = load i32, ptr %5, align 4, !tbaa !5
  %515 = load i32, ptr %6, align 4, !tbaa !5
  %516 = icmp sgt i32 %514, %515
  br i1 %516, label %517, label %528

517:                                              ; preds = %._crit_edge905
  %518 = sub nsw i32 %514, %515
  store i32 %518, ptr %16, align 4, !tbaa !5
  %519 = add nsw i32 %515, 1
  %520 = mul nsw i32 %519, %21
  %521 = sext i32 %520 to i64
  %522 = getelementptr double, ptr %23, i64 %521
  %523 = getelementptr i8, ptr %522, i64 8
  %524 = mul nsw i32 %519, %18
  %525 = sext i32 %524 to i64
  %526 = getelementptr double, ptr %20, i64 %525
  %527 = getelementptr i8, ptr %526, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %16, ptr noundef nonnull @c_b14, ptr noundef %523, ptr noundef nonnull %12, ptr noundef %527, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %13, ptr noundef nonnull %14) #3
  br label %528

528:                                              ; preds = %517, %._crit_edge905
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef %1, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #3
  %529 = load i32, ptr %5, align 4, !tbaa !5
  %530 = load i32, ptr %6, align 4, !tbaa !5
  %531 = icmp sgt i32 %529, %530
  br i1 %531, label %532, label %543

532:                                              ; preds = %528
  %533 = sub nsw i32 %529, %530
  store i32 %533, ptr %16, align 4, !tbaa !5
  %534 = add nsw i32 %530, 1
  %535 = mul nsw i32 %534, %18
  %536 = sext i32 %535 to i64
  %537 = getelementptr double, ptr %20, i64 %536
  %538 = getelementptr i8, ptr %537, i64 8
  %539 = mul nsw i32 %534, %21
  %540 = sext i32 %539 to i64
  %541 = getelementptr double, ptr %23, i64 %540
  %542 = getelementptr i8, ptr %541, i64 8
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %6, ptr noundef nonnull @c_b25, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %538, ptr noundef nonnull %8, ptr noundef nonnull @c_b14, ptr noundef %542, ptr noundef nonnull %12) #3
  br label %543

543:                                              ; preds = %532, %528
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %544 = load i32, ptr %6, align 4, !tbaa !5
  %.not772911 = icmp slt i32 %544, 1
  br i1 %.not772911, label %.loopexit, label %.lr.ph914

.lr.ph914:                                        ; preds = %543
  %545 = load i32, ptr %4, align 4, !tbaa !5
  %.not773906 = icmp slt i32 %545, 1
  br i1 %.not773906, label %.loopexit, label %.lr.ph909.preheader

.lr.ph909.preheader:                              ; preds = %.lr.ph914
  %546 = add nuw i32 %545, 1
  %547 = sext i32 %24 to i64
  %548 = sext i32 %21 to i64
  %549 = add nuw i32 %544, 1
  %wide.trip.count1048 = zext i32 %549 to i64
  %wide.trip.count1043 = zext i32 %546 to i64
  %550 = shl nsw i64 %548, 3
  %551 = shl nsw i64 %22, 3
  %552 = getelementptr i8, ptr %11, i64 %550
  %553 = getelementptr i8, ptr %552, i64 %551
  %scevgep1258 = getelementptr i8, ptr %553, i64 8
  %554 = shl nuw nsw i64 %wide.trip.count1048, 3
  %555 = add nsw i64 %554, -8
  %556 = mul i64 %555, %548
  %557 = shl nuw nsw i64 %wide.trip.count1043, 3
  %558 = getelementptr i8, ptr %11, i64 %556
  %559 = getelementptr i8, ptr %558, i64 %551
  %scevgep1259 = getelementptr i8, ptr %559, i64 %557
  %560 = shl nsw i64 %547, 3
  %561 = shl nsw i64 %25, 3
  %562 = getelementptr i8, ptr %13, i64 %560
  %563 = getelementptr i8, ptr %562, i64 %561
  %scevgep1260 = getelementptr i8, ptr %563, i64 8
  %564 = mul i64 %555, %547
  %565 = getelementptr i8, ptr %13, i64 %564
  %566 = getelementptr i8, ptr %565, i64 %561
  %scevgep1261 = getelementptr i8, ptr %566, i64 %557
  %567 = zext nneg i32 %545 to i64
  %568 = zext nneg i32 %545 to i64
  %min.iters.check1269 = icmp ult i32 %545, 6
  %bound01262 = icmp ult ptr %scevgep1258, %scevgep1261
  %bound11263 = icmp ult ptr %scevgep1260, %scevgep1259
  %found.conflict1264 = and i1 %bound01262, %bound11263
  %569 = or i32 %21, %24
  %570 = icmp slt i32 %569, 0
  %571 = or i1 %found.conflict1264, %570
  %n.vec1272 = and i64 %567, 2147483644
  %ind.end1273 = or disjoint i64 %n.vec1272, 1
  %cmp.n1283 = icmp eq i64 %n.vec1272, %567
  br label %.lr.ph909

.lr.ph909:                                        ; preds = %.lr.ph909.preheader, %._crit_edge910
  %indvars.iv1045 = phi i64 [ 1, %.lr.ph909.preheader ], [ %indvars.iv.next1046, %._crit_edge910 ]
  %572 = mul nsw i64 %indvars.iv1045, %547
  %573 = mul nsw i64 %indvars.iv1045, %548
  %invariant.gep1120 = getelementptr double, ptr %26, i64 %572
  %invariant.gep1122 = getelementptr double, ptr %23, i64 %573
  %brmerge1377 = select i1 %min.iters.check1269, i1 true, i1 %571
  br i1 %brmerge1377, label %scalar.ph1268.preheader, label %vector.body1275

vector.body1275:                                  ; preds = %.lr.ph909, %vector.body1275
  %index1276 = phi i64 [ %index.next1282, %vector.body1275 ], [ 0, %.lr.ph909 ]
  %offset.idx1277 = or disjoint i64 %index1276, 1
  %574 = getelementptr double, ptr %invariant.gep1120, i64 %offset.idx1277
  %575 = getelementptr i8, ptr %574, i64 16
  %wide.load1278 = load <2 x double>, ptr %574, align 8, !tbaa !12, !alias.scope !64
  %wide.load1279 = load <2 x double>, ptr %575, align 8, !tbaa !12, !alias.scope !64
  %576 = getelementptr double, ptr %invariant.gep1122, i64 %offset.idx1277
  %577 = getelementptr i8, ptr %576, i64 16
  %wide.load1280 = load <2 x double>, ptr %576, align 8, !tbaa !12, !alias.scope !67, !noalias !64
  %wide.load1281 = load <2 x double>, ptr %577, align 8, !tbaa !12, !alias.scope !67, !noalias !64
  %578 = fsub <2 x double> %wide.load1280, %wide.load1278
  %579 = fsub <2 x double> %wide.load1281, %wide.load1279
  store <2 x double> %578, ptr %576, align 8, !tbaa !12, !alias.scope !67, !noalias !64
  store <2 x double> %579, ptr %577, align 8, !tbaa !12, !alias.scope !67, !noalias !64
  %index.next1282 = add nuw i64 %index1276, 4
  %580 = icmp eq i64 %index.next1282, %n.vec1272
  br i1 %580, label %middle.block1267, label %vector.body1275, !llvm.loop !69

middle.block1267:                                 ; preds = %vector.body1275
  br i1 %cmp.n1283, label %._crit_edge910, label %scalar.ph1268.preheader

scalar.ph1268.preheader:                          ; preds = %.lr.ph909, %middle.block1267
  %indvars.iv1040.ph = phi i64 [ 1, %.lr.ph909 ], [ %ind.end1273, %middle.block1267 ]
  %581 = sub nsw i64 %wide.trip.count1043, %indvars.iv1040.ph
  %582 = sub nsw i64 %568, %indvars.iv1040.ph
  %xtraiter1366 = and i64 %581, 3
  %lcmp.mod1367.not = icmp eq i64 %xtraiter1366, 0
  br i1 %lcmp.mod1367.not, label %scalar.ph1268.prol.loopexit, label %scalar.ph1268.prol

scalar.ph1268.prol:                               ; preds = %scalar.ph1268.preheader, %scalar.ph1268.prol
  %indvars.iv1040.prol = phi i64 [ %indvars.iv.next1041.prol, %scalar.ph1268.prol ], [ %indvars.iv1040.ph, %scalar.ph1268.preheader ]
  %prol.iter1368 = phi i64 [ %prol.iter1368.next, %scalar.ph1268.prol ], [ 0, %scalar.ph1268.preheader ]
  %gep1121.prol = getelementptr double, ptr %invariant.gep1120, i64 %indvars.iv1040.prol
  %583 = load double, ptr %gep1121.prol, align 8, !tbaa !12
  %gep1123.prol = getelementptr double, ptr %invariant.gep1122, i64 %indvars.iv1040.prol
  %584 = load double, ptr %gep1123.prol, align 8, !tbaa !12
  %585 = fsub double %584, %583
  store double %585, ptr %gep1123.prol, align 8, !tbaa !12
  %indvars.iv.next1041.prol = add nuw nsw i64 %indvars.iv1040.prol, 1
  %prol.iter1368.next = add i64 %prol.iter1368, 1
  %prol.iter1368.cmp.not = icmp eq i64 %prol.iter1368.next, %xtraiter1366
  br i1 %prol.iter1368.cmp.not, label %scalar.ph1268.prol.loopexit, label %scalar.ph1268.prol, !llvm.loop !70

scalar.ph1268.prol.loopexit:                      ; preds = %scalar.ph1268.prol, %scalar.ph1268.preheader
  %indvars.iv1040.unr = phi i64 [ %indvars.iv1040.ph, %scalar.ph1268.preheader ], [ %indvars.iv.next1041.prol, %scalar.ph1268.prol ]
  %586 = icmp ult i64 %582, 3
  br i1 %586, label %._crit_edge910, label %scalar.ph1268

scalar.ph1268:                                    ; preds = %scalar.ph1268.prol.loopexit, %scalar.ph1268
  %indvars.iv1040 = phi i64 [ %indvars.iv.next1041.3, %scalar.ph1268 ], [ %indvars.iv1040.unr, %scalar.ph1268.prol.loopexit ]
  %gep1121 = getelementptr double, ptr %invariant.gep1120, i64 %indvars.iv1040
  %587 = load double, ptr %gep1121, align 8, !tbaa !12
  %gep1123 = getelementptr double, ptr %invariant.gep1122, i64 %indvars.iv1040
  %588 = load double, ptr %gep1123, align 8, !tbaa !12
  %589 = fsub double %588, %587
  store double %589, ptr %gep1123, align 8, !tbaa !12
  %indvars.iv.next1041 = add nuw nsw i64 %indvars.iv1040, 1
  %gep1121.1 = getelementptr double, ptr %invariant.gep1120, i64 %indvars.iv.next1041
  %590 = load double, ptr %gep1121.1, align 8, !tbaa !12
  %gep1123.1 = getelementptr double, ptr %invariant.gep1122, i64 %indvars.iv.next1041
  %591 = load double, ptr %gep1123.1, align 8, !tbaa !12
  %592 = fsub double %591, %590
  store double %592, ptr %gep1123.1, align 8, !tbaa !12
  %indvars.iv.next1041.1 = add nuw nsw i64 %indvars.iv1040, 2
  %gep1121.2 = getelementptr double, ptr %invariant.gep1120, i64 %indvars.iv.next1041.1
  %593 = load double, ptr %gep1121.2, align 8, !tbaa !12
  %gep1123.2 = getelementptr double, ptr %invariant.gep1122, i64 %indvars.iv.next1041.1
  %594 = load double, ptr %gep1123.2, align 8, !tbaa !12
  %595 = fsub double %594, %593
  store double %595, ptr %gep1123.2, align 8, !tbaa !12
  %indvars.iv.next1041.2 = add nuw nsw i64 %indvars.iv1040, 3
  %gep1121.3 = getelementptr double, ptr %invariant.gep1120, i64 %indvars.iv.next1041.2
  %596 = load double, ptr %gep1121.3, align 8, !tbaa !12
  %gep1123.3 = getelementptr double, ptr %invariant.gep1122, i64 %indvars.iv.next1041.2
  %597 = load double, ptr %gep1123.3, align 8, !tbaa !12
  %598 = fsub double %597, %596
  store double %598, ptr %gep1123.3, align 8, !tbaa !12
  %indvars.iv.next1041.3 = add nuw nsw i64 %indvars.iv1040, 4
  %exitcond1044.not.3 = icmp eq i64 %indvars.iv.next1041.3, %wide.trip.count1043
  br i1 %exitcond1044.not.3, label %._crit_edge910, label %scalar.ph1268, !llvm.loop !71

._crit_edge910:                                   ; preds = %scalar.ph1268.prol.loopexit, %scalar.ph1268, %middle.block1267
  %indvars.iv.next1046 = add nuw nsw i64 %indvars.iv1045, 1
  %exitcond1049.not = icmp eq i64 %indvars.iv.next1046, %wide.trip.count1048
  br i1 %exitcond1049.not, label %.loopexit, label %.lr.ph909, !llvm.loop !72

599:                                              ; preds = %424
  br i1 %.not761, label %720, label %600

600:                                              ; preds = %599
  %601 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %601, ptr %16, align 4, !tbaa !5
  %invariant.gep915 = getelementptr i8, ptr %26, i64 8
  %.not766917 = icmp slt i32 %601, 1
  br i1 %.not766917, label %._crit_edge921, label %.lr.ph920.preheader

.lr.ph920.preheader:                              ; preds = %600
  %602 = sext i32 %24 to i64
  %603 = add nuw i32 %601, 1
  %wide.trip.count1053 = zext i32 %603 to i64
  br label %.lr.ph920

.lr.ph920:                                        ; preds = %.lr.ph920.preheader, %.lr.ph920
  %indvars.iv1050 = phi i64 [ 1, %.lr.ph920.preheader ], [ %indvars.iv.next1051, %.lr.ph920 ]
  %604 = load i32, ptr %4, align 4, !tbaa !5
  %605 = load i32, ptr %6, align 4, !tbaa !5
  %606 = trunc nuw nsw i64 %indvars.iv1050 to i32
  %607 = add i32 %21, %606
  %608 = add i32 %607, %604
  %609 = sub i32 %608, %605
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds double, ptr %23, i64 %610
  %612 = mul nsw i64 %indvars.iv1050, %602
  %gep916 = getelementptr double, ptr %invariant.gep915, i64 %612
  tail call void @dcopy_(ptr noundef nonnull %5, ptr noundef %611, ptr noundef nonnull %12, ptr noundef %gep916, ptr noundef nonnull @c__1) #3
  %indvars.iv.next1051 = add nuw nsw i64 %indvars.iv1050, 1
  %exitcond1054.not = icmp eq i64 %indvars.iv.next1051, %wide.trip.count1053
  br i1 %exitcond1054.not, label %._crit_edge921.loopexit, label %.lr.ph920, !llvm.loop !73

._crit_edge921.loopexit:                          ; preds = %.lr.ph920
  %.pre1085 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge921

._crit_edge921:                                   ; preds = %._crit_edge921.loopexit, %600
  %613 = phi i32 [ %.pre1085, %._crit_edge921.loopexit ], [ %601, %600 ]
  %614 = load i32, ptr %4, align 4, !tbaa !5
  %615 = add i32 %614, 1
  %616 = sub i32 %615, %613
  %617 = mul nsw i32 %616, %18
  %618 = sext i32 %617 to i64
  %619 = getelementptr double, ptr %20, i64 %618
  %620 = getelementptr i8, ptr %619, i64 8
  tail call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %620, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %621 = load i32, ptr %4, align 4, !tbaa !5
  %622 = load i32, ptr %6, align 4, !tbaa !5
  %623 = icmp sgt i32 %621, %622
  br i1 %623, label %624, label %626

624:                                              ; preds = %._crit_edge921
  %625 = sub nsw i32 %621, %622
  store i32 %625, ptr %16, align 4, !tbaa !5
  call void @dgemm_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, 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) #3
  br label %626

626:                                              ; preds = %624, %._crit_edge921
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %17, ptr noundef nonnull @.str.10, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #3
  %627 = load i32, ptr %4, align 4, !tbaa !5
  %628 = load i32, ptr %6, align 4, !tbaa !5
  %629 = icmp sgt i32 %627, %628
  br i1 %629, label %630, label %632

630:                                              ; preds = %626
  %631 = sub nsw i32 %627, %628
  store i32 %631, ptr %16, align 4, !tbaa !5
  call void @dgemm_(ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.8, ptr noundef nonnull %16, ptr noundef nonnull %5, 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) #3
  %.pre1086 = load i32, ptr %4, align 4, !tbaa !5
  %.pre1087 = load i32, ptr %6, align 4, !tbaa !5
  br label %632

632:                                              ; preds = %630, %626
  %633 = phi i32 [ %.pre1087, %630 ], [ %628, %626 ]
  %634 = phi i32 [ %.pre1086, %630 ], [ %627, %626 ]
  %635 = add i32 %634, 1
  %636 = sub i32 %635, %633
  %637 = mul nsw i32 %636, %18
  %638 = sext i32 %637 to i64
  %639 = getelementptr double, ptr %20, i64 %638
  %640 = getelementptr i8, ptr %639, i64 8
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %640, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %641 = load i32, ptr %6, align 4, !tbaa !5
  %.not767927 = icmp slt i32 %641, 1
  br i1 %.not767927, label %.loopexit, label %.lr.ph930

.lr.ph930:                                        ; preds = %632
  %642 = load i32, ptr %5, align 4, !tbaa !5
  %.not768922 = icmp slt i32 %642, 1
  br i1 %.not768922, label %.loopexit, label %.lr.ph930.split

.lr.ph930.split:                                  ; preds = %.lr.ph930
  %643 = load i32, ptr %4, align 4, !tbaa !5
  %644 = add nuw i32 %642, 1
  %645 = sext i32 %24 to i64
  %646 = add nuw i32 %641, 1
  %wide.trip.count1063 = zext i32 %646 to i64
  %wide.trip.count1058 = zext i32 %644 to i64
  %647 = add nsw i64 %wide.trip.count1058, -2
  %648 = add i32 %643, 2
  %649 = sub i32 %648, %641
  %650 = shl nsw i64 %645, 3
  %651 = shl nsw i64 %25, 3
  %652 = getelementptr i8, ptr %13, i64 %650
  %653 = getelementptr i8, ptr %652, i64 %651
  %scevgep1289 = getelementptr i8, ptr %653, i64 8
  %654 = shl nuw nsw i64 %wide.trip.count1063, 3
  %655 = add nsw i64 %654, -8
  %656 = mul i64 %655, %645
  %657 = shl nuw nsw i64 %wide.trip.count1058, 3
  %658 = getelementptr i8, ptr %13, i64 %656
  %659 = getelementptr i8, ptr %658, i64 %651
  %scevgep1290 = getelementptr i8, ptr %659, i64 %657
  %scevgep1291 = getelementptr i8, ptr %11, i64 -16
  %660 = add i32 %643, 2
  %661 = sub i32 %660, %641
  %662 = getelementptr i8, ptr %11, i64 %657
  %scevgep1293 = getelementptr i8, ptr %662, i64 -24
  %663 = zext nneg i32 %642 to i64
  %664 = zext nneg i32 %642 to i64
  %min.iters.check1301 = icmp ult i32 %642, 8
  %ident.check1285 = icmp ne i32 %21, 1
  %665 = trunc i64 %647 to i32
  %666 = icmp ugt i64 %647, 4294967295
  %stride.check1298 = icmp slt i32 %24, 0
  %n.vec1304 = and i64 %663, 2147483644
  %ind.end1305 = or disjoint i64 %n.vec1304, 1
  %cmp.n1316 = icmp eq i64 %n.vec1304, %663
  %667 = and i32 %642, 1
  %lcmp.mod1370.not = icmp eq i32 %667, 0
  br label %.lr.ph925

.lr.ph925:                                        ; preds = %.lr.ph930.split, %._crit_edge926
  %indvar1286 = phi i32 [ 0, %.lr.ph930.split ], [ %indvar.next1287, %._crit_edge926 ]
  %indvars.iv1060 = phi i64 [ 1, %.lr.ph930.split ], [ %indvars.iv.next1061, %._crit_edge926 ]
  %668 = add i32 %661, %indvar1286
  %669 = sext i32 %668 to i64
  %670 = shl nsw i64 %669, 3
  %scevgep1292 = getelementptr i8, ptr %scevgep1291, i64 %670
  %scevgep1294 = getelementptr i8, ptr %scevgep1293, i64 %670
  %671 = mul nsw i64 %indvars.iv1060, %645
  %invariant.gep1124 = getelementptr double, ptr %26, i64 %671
  %672 = trunc i64 %indvars.iv1060 to i32
  %673 = sub i32 %672, %641
  br i1 %min.iters.check1301, label %scalar.ph1300.preheader, label %vector.scevcheck1284

vector.scevcheck1284:                             ; preds = %.lr.ph925
  %674 = add i32 %649, %indvar1286
  %675 = add i32 %674, %665
  %676 = icmp slt i32 %675, %674
  %677 = or i1 %676, %666
  %678 = or i1 %ident.check1285, %677
  br i1 %678, label %scalar.ph1300.preheader, label %vector.memcheck1288

vector.memcheck1288:                              ; preds = %vector.scevcheck1284
  %bound01295 = icmp ult ptr %scevgep1289, %scevgep1294
  %bound11296 = icmp ult ptr %scevgep1292, %scevgep1290
  %found.conflict1297 = and i1 %bound01295, %bound11296
  %679 = or i1 %found.conflict1297, %stride.check1298
  br i1 %679, label %scalar.ph1300.preheader, label %vector.body1307

vector.body1307:                                  ; preds = %vector.memcheck1288, %vector.body1307
  %index1308 = phi i64 [ %index.next1315, %vector.body1307 ], [ 0, %vector.memcheck1288 ]
  %offset.idx1309 = or disjoint i64 %index1308, 1
  %680 = trunc i64 %index1308 to i32
  %681 = or disjoint i32 %680, 1
  %682 = getelementptr double, ptr %invariant.gep1124, i64 %offset.idx1309
  %683 = getelementptr i8, ptr %682, i64 16
  %wide.load1311 = load <2 x double>, ptr %682, align 8, !tbaa !12, !alias.scope !74, !noalias !77
  %wide.load1312 = load <2 x double>, ptr %683, align 8, !tbaa !12, !alias.scope !74, !noalias !77
  %684 = add i32 %673, %681
  %685 = add i32 %684, %643
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %23, i64 %686
  %688 = getelementptr inbounds i8, ptr %687, i64 16
  %wide.load1313 = load <2 x double>, ptr %687, align 8, !tbaa !12, !alias.scope !77
  %wide.load1314 = load <2 x double>, ptr %688, align 8, !tbaa !12, !alias.scope !77
  %689 = fsub <2 x double> %wide.load1313, %wide.load1311
  %690 = fsub <2 x double> %wide.load1314, %wide.load1312
  store <2 x double> %689, ptr %687, align 8, !tbaa !12, !alias.scope !77
  store <2 x double> %690, ptr %688, align 8, !tbaa !12, !alias.scope !77
  %index.next1315 = add nuw i64 %index1308, 4
  %691 = icmp eq i64 %index.next1315, %n.vec1304
  br i1 %691, label %middle.block1299, label %vector.body1307, !llvm.loop !79

middle.block1299:                                 ; preds = %vector.body1307
  br i1 %cmp.n1316, label %._crit_edge926, label %scalar.ph1300.preheader

scalar.ph1300.preheader:                          ; preds = %middle.block1299, %vector.memcheck1288, %vector.scevcheck1284, %.lr.ph925
  %indvars.iv1055.ph = phi i64 [ 1, %vector.memcheck1288 ], [ 1, %vector.scevcheck1284 ], [ 1, %.lr.ph925 ], [ %ind.end1305, %middle.block1299 ]
  br i1 %lcmp.mod1370.not, label %scalar.ph1300.prol.loopexit, label %scalar.ph1300.prol

scalar.ph1300.prol:                               ; preds = %scalar.ph1300.preheader
  %gep1125.prol = getelementptr double, ptr %invariant.gep1124, i64 %indvars.iv1055.ph
  %692 = load double, ptr %gep1125.prol, align 8, !tbaa !12
  %693 = trunc nsw i64 %indvars.iv1055.ph to i32
  %694 = mul i32 %21, %693
  %695 = add i32 %673, %694
  %696 = add i32 %695, %643
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds double, ptr %23, i64 %697
  %699 = load double, ptr %698, align 8, !tbaa !12
  %700 = fsub double %699, %692
  store double %700, ptr %698, align 8, !tbaa !12
  %indvars.iv.next1056.prol = add nuw nsw i64 %indvars.iv1055.ph, 1
  br label %scalar.ph1300.prol.loopexit

scalar.ph1300.prol.loopexit:                      ; preds = %scalar.ph1300.prol, %scalar.ph1300.preheader
  %indvars.iv1055.unr = phi i64 [ %indvars.iv1055.ph, %scalar.ph1300.preheader ], [ %indvars.iv.next1056.prol, %scalar.ph1300.prol ]
  %701 = icmp eq i64 %indvars.iv1055.ph, %664
  br i1 %701, label %._crit_edge926, label %scalar.ph1300

scalar.ph1300:                                    ; preds = %scalar.ph1300.prol.loopexit, %scalar.ph1300
  %indvars.iv1055 = phi i64 [ %indvars.iv.next1056.1, %scalar.ph1300 ], [ %indvars.iv1055.unr, %scalar.ph1300.prol.loopexit ]
  %gep1125 = getelementptr double, ptr %invariant.gep1124, i64 %indvars.iv1055
  %702 = load double, ptr %gep1125, align 8, !tbaa !12
  %703 = trunc i64 %indvars.iv1055 to i32
  %704 = mul i32 %21, %703
  %705 = add i32 %673, %704
  %706 = add i32 %705, %643
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %23, i64 %707
  %709 = load double, ptr %708, align 8, !tbaa !12
  %710 = fsub double %709, %702
  store double %710, ptr %708, align 8, !tbaa !12
  %indvars.iv.next1056 = add nuw nsw i64 %indvars.iv1055, 1
  %gep1125.1 = getelementptr double, ptr %invariant.gep1124, i64 %indvars.iv.next1056
  %711 = load double, ptr %gep1125.1, align 8, !tbaa !12
  %712 = trunc i64 %indvars.iv.next1056 to i32
  %713 = mul i32 %21, %712
  %714 = add i32 %673, %713
  %715 = add i32 %714, %643
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds double, ptr %23, i64 %716
  %718 = load double, ptr %717, align 8, !tbaa !12
  %719 = fsub double %718, %711
  store double %719, ptr %717, align 8, !tbaa !12
  %indvars.iv.next1056.1 = add nuw nsw i64 %indvars.iv1055, 2
  %exitcond1059.not.1 = icmp eq i64 %indvars.iv.next1056.1, %wide.trip.count1058
  br i1 %exitcond1059.not.1, label %._crit_edge926, label %scalar.ph1300, !llvm.loop !80

._crit_edge926:                                   ; preds = %scalar.ph1300.prol.loopexit, %scalar.ph1300, %middle.block1299
  %indvars.iv.next1061 = add nuw nsw i64 %indvars.iv1060, 1
  %exitcond1064.not = icmp eq i64 %indvars.iv.next1061, %wide.trip.count1063
  %indvar.next1287 = add i32 %indvar1286, 1
  br i1 %exitcond1064.not, label %.loopexit, label %.lr.ph925, !llvm.loop !81

720:                                              ; preds = %599
  %721 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.11) #3
  %.not762 = icmp eq i32 %721, 0
  br i1 %.not762, label %.loopexit, label %722

722:                                              ; preds = %720
  %723 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %723, ptr %16, align 4, !tbaa !5
  %invariant.gep931 = getelementptr i8, ptr %23, i64 8
  %invariant.gep933 = getelementptr i8, ptr %26, i64 8
  %.not763935 = icmp slt i32 %723, 1
  br i1 %.not763935, label %._crit_edge939, label %.lr.ph938.preheader

.lr.ph938.preheader:                              ; preds = %722
  %724 = sext i32 %24 to i64
  %725 = add nuw i32 %723, 1
  %wide.trip.count1068 = zext i32 %725 to i64
  br label %.lr.ph938

.lr.ph938:                                        ; preds = %.lr.ph938.preheader, %.lr.ph938
  %indvars.iv1065 = phi i64 [ 1, %.lr.ph938.preheader ], [ %indvars.iv.next1066, %.lr.ph938 ]
  %726 = load i32, ptr %5, align 4, !tbaa !5
  %727 = load i32, ptr %6, align 4, !tbaa !5
  %728 = trunc nuw nsw i64 %indvars.iv1065 to i32
  %729 = add i32 %726, %728
  %730 = sub i32 %729, %727
  %731 = mul nsw i32 %730, %21
  %732 = sext i32 %731 to i64
  %gep932 = getelementptr double, ptr %invariant.gep931, i64 %732
  %733 = mul nsw i64 %indvars.iv1065, %724
  %gep934 = getelementptr double, ptr %invariant.gep933, i64 %733
  tail call void @dcopy_(ptr noundef nonnull %4, ptr noundef %gep932, ptr noundef nonnull @c__1, ptr noundef %gep934, ptr noundef nonnull @c__1) #3
  %indvars.iv.next1066 = add nuw nsw i64 %indvars.iv1065, 1
  %exitcond1069.not = icmp eq i64 %indvars.iv.next1066, %wide.trip.count1068
  br i1 %exitcond1069.not, label %._crit_edge939.loopexit, label %.lr.ph938, !llvm.loop !82

._crit_edge939.loopexit:                          ; preds = %.lr.ph938
  %.pre1088 = load i32, ptr %6, align 4, !tbaa !5
  br label %._crit_edge939

._crit_edge939:                                   ; preds = %._crit_edge939.loopexit, %722
  %734 = phi i32 [ %.pre1088, %._crit_edge939.loopexit ], [ %723, %722 ]
  %735 = load i32, ptr %5, align 4, !tbaa !5
  %736 = add i32 %735, 1
  %737 = sub i32 %736, %734
  %738 = mul nsw i32 %737, %18
  %739 = sext i32 %738 to i64
  %740 = getelementptr double, ptr %20, i64 %739
  %741 = getelementptr i8, ptr %740, i64 8
  tail call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %741, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %742 = load i32, ptr %5, align 4, !tbaa !5
  %743 = load i32, ptr %6, align 4, !tbaa !5
  %744 = icmp sgt i32 %742, %743
  br i1 %744, label %745, label %747

745:                                              ; preds = %._crit_edge939
  %746 = sub nsw i32 %742, %743
  store i32 %746, ptr %16, align 4, !tbaa !5
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.8, ptr noundef nonnull %4, 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) #3
  br label %747

747:                                              ; preds = %745, %._crit_edge939
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef %1, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %13, ptr noundef nonnull %14) #3
  %748 = load i32, ptr %5, align 4, !tbaa !5
  %749 = load i32, ptr %6, align 4, !tbaa !5
  %750 = icmp sgt i32 %748, %749
  br i1 %750, label %751, label %753

751:                                              ; preds = %747
  %752 = sub nsw i32 %748, %749
  store i32 %752, ptr %16, align 4, !tbaa !5
  call void @dgemm_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.6, ptr noundef nonnull %4, 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) #3
  %.pre1089 = load i32, ptr %5, align 4, !tbaa !5
  %.pre1090 = load i32, ptr %6, align 4, !tbaa !5
  br label %753

753:                                              ; preds = %751, %747
  %754 = phi i32 [ %.pre1090, %751 ], [ %749, %747 ]
  %755 = phi i32 [ %.pre1089, %751 ], [ %748, %747 ]
  %756 = add i32 %755, 1
  %757 = sub i32 %756, %754
  %758 = mul nsw i32 %757, %18
  %759 = sext i32 %758 to i64
  %760 = getelementptr double, ptr %20, i64 %759
  %761 = getelementptr i8, ptr %760, i64 8
  call void @dtrmm_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull @c_b14, ptr noundef %761, ptr noundef nonnull %8, ptr noundef %13, ptr noundef nonnull %14) #3
  %762 = load i32, ptr %6, align 4, !tbaa !5
  %.not764945 = icmp slt i32 %762, 1
  br i1 %.not764945, label %.loopexit, label %.lr.ph948

.lr.ph948:                                        ; preds = %753
  %763 = load i32, ptr %4, align 4, !tbaa !5
  %.not765940 = icmp slt i32 %763, 1
  br i1 %.not765940, label %.loopexit, label %.lr.ph948.split

.lr.ph948.split:                                  ; preds = %.lr.ph948
  %764 = load i32, ptr %5, align 4, !tbaa !5
  %765 = add nuw i32 %763, 1
  %766 = sext i32 %24 to i64
  %767 = add nuw i32 %762, 1
  %wide.trip.count1078 = zext i32 %767 to i64
  %wide.trip.count1073 = zext i32 %765 to i64
  %768 = shl nsw i64 %22, 3
  %769 = getelementptr i8, ptr %11, i64 %768
  %scevgep1318 = getelementptr i8, ptr %769, i64 8
  %770 = add i32 %764, 1
  %771 = sub i32 %770, %762
  %772 = shl nuw nsw i64 %wide.trip.count1073, 3
  %773 = getelementptr i8, ptr %11, i64 %768
  %scevgep1322 = getelementptr i8, ptr %773, i64 %772
  %774 = shl nsw i64 %766, 3
  %775 = shl nsw i64 %25, 3
  %776 = getelementptr i8, ptr %13, i64 %774
  %777 = getelementptr i8, ptr %776, i64 %775
  %scevgep1324 = getelementptr i8, ptr %777, i64 8
  %778 = shl nuw nsw i64 %wide.trip.count1078, 3
  %779 = add nsw i64 %778, -8
  %780 = mul i64 %779, %766
  %781 = getelementptr i8, ptr %13, i64 %780
  %782 = getelementptr i8, ptr %781, i64 %775
  %scevgep1325 = getelementptr i8, ptr %782, i64 %772
  %783 = zext nneg i32 %763 to i64
  %784 = zext nneg i32 %763 to i64
  %min.iters.check1332 = icmp ult i32 %763, 4
  %stride.check1329 = icmp slt i32 %24, 0
  %n.vec1335 = and i64 %783, 2147483644
  %ind.end1336 = or disjoint i64 %n.vec1335, 1
  %cmp.n1346 = icmp eq i64 %n.vec1335, %783
  br label %.lr.ph943

.lr.ph943:                                        ; preds = %.lr.ph948.split, %._crit_edge944
  %indvar1319 = phi i32 [ 0, %.lr.ph948.split ], [ %indvar.next1320, %._crit_edge944 ]
  %indvars.iv1075 = phi i64 [ 1, %.lr.ph948.split ], [ %indvars.iv.next1076, %._crit_edge944 ]
  %785 = mul nsw i64 %indvars.iv1075, %766
  %786 = trunc i64 %indvars.iv1075 to i32
  %787 = sub i32 %786, %762
  %788 = add i32 %787, %764
  %789 = mul nsw i32 %788, %21
  %790 = sext i32 %789 to i64
  %invariant.gep1126 = getelementptr double, ptr %26, i64 %785
  %invariant.gep1128 = getelementptr double, ptr %23, i64 %790
  br i1 %min.iters.check1332, label %scalar.ph1331.preheader, label %vector.memcheck1317

vector.memcheck1317:                              ; preds = %.lr.ph943
  %791 = add i32 %771, %indvar1319
  %792 = mul i32 %21, %791
  %793 = sext i32 %792 to i64
  %794 = shl nsw i64 %793, 3
  %scevgep1323 = getelementptr i8, ptr %scevgep1322, i64 %794
  %scevgep1321 = getelementptr i8, ptr %scevgep1318, i64 %794
  %bound01326 = icmp ult ptr %scevgep1321, %scevgep1325
  %bound11327 = icmp ult ptr %scevgep1324, %scevgep1323
  %found.conflict1328 = and i1 %bound01326, %bound11327
  %795 = or i1 %found.conflict1328, %stride.check1329
  br i1 %795, label %scalar.ph1331.preheader, label %vector.body1338

vector.body1338:                                  ; preds = %vector.memcheck1317, %vector.body1338
  %index1339 = phi i64 [ %index.next1345, %vector.body1338 ], [ 0, %vector.memcheck1317 ]
  %offset.idx1340 = or disjoint i64 %index1339, 1
  %796 = getelementptr double, ptr %invariant.gep1126, i64 %offset.idx1340
  %797 = getelementptr i8, ptr %796, i64 16
  %wide.load1341 = load <2 x double>, ptr %796, align 8, !tbaa !12, !alias.scope !83
  %wide.load1342 = load <2 x double>, ptr %797, align 8, !tbaa !12, !alias.scope !83
  %798 = getelementptr double, ptr %invariant.gep1128, i64 %offset.idx1340
  %799 = getelementptr i8, ptr %798, i64 16
  %wide.load1343 = load <2 x double>, ptr %798, align 8, !tbaa !12, !alias.scope !86, !noalias !83
  %wide.load1344 = load <2 x double>, ptr %799, align 8, !tbaa !12, !alias.scope !86, !noalias !83
  %800 = fsub <2 x double> %wide.load1343, %wide.load1341
  %801 = fsub <2 x double> %wide.load1344, %wide.load1342
  store <2 x double> %800, ptr %798, align 8, !tbaa !12, !alias.scope !86, !noalias !83
  store <2 x double> %801, ptr %799, align 8, !tbaa !12, !alias.scope !86, !noalias !83
  %index.next1345 = add nuw i64 %index1339, 4
  %802 = icmp eq i64 %index.next1345, %n.vec1335
  br i1 %802, label %middle.block1330, label %vector.body1338, !llvm.loop !88

middle.block1330:                                 ; preds = %vector.body1338
  br i1 %cmp.n1346, label %._crit_edge944, label %scalar.ph1331.preheader

scalar.ph1331.preheader:                          ; preds = %middle.block1330, %vector.memcheck1317, %.lr.ph943
  %indvars.iv1070.ph = phi i64 [ 1, %vector.memcheck1317 ], [ 1, %.lr.ph943 ], [ %ind.end1336, %middle.block1330 ]
  %803 = sub nsw i64 %wide.trip.count1073, %indvars.iv1070.ph
  %804 = sub nsw i64 %784, %indvars.iv1070.ph
  %xtraiter1372 = and i64 %803, 3
  %lcmp.mod1373.not = icmp eq i64 %xtraiter1372, 0
  br i1 %lcmp.mod1373.not, label %scalar.ph1331.prol.loopexit, label %scalar.ph1331.prol

scalar.ph1331.prol:                               ; preds = %scalar.ph1331.preheader, %scalar.ph1331.prol
  %indvars.iv1070.prol = phi i64 [ %indvars.iv.next1071.prol, %scalar.ph1331.prol ], [ %indvars.iv1070.ph, %scalar.ph1331.preheader ]
  %prol.iter1374 = phi i64 [ %prol.iter1374.next, %scalar.ph1331.prol ], [ 0, %scalar.ph1331.preheader ]
  %gep1127.prol = getelementptr double, ptr %invariant.gep1126, i64 %indvars.iv1070.prol
  %805 = load double, ptr %gep1127.prol, align 8, !tbaa !12
  %gep1129.prol = getelementptr double, ptr %invariant.gep1128, i64 %indvars.iv1070.prol
  %806 = load double, ptr %gep1129.prol, align 8, !tbaa !12
  %807 = fsub double %806, %805
  store double %807, ptr %gep1129.prol, align 8, !tbaa !12
  %indvars.iv.next1071.prol = add nuw nsw i64 %indvars.iv1070.prol, 1
  %prol.iter1374.next = add i64 %prol.iter1374, 1
  %prol.iter1374.cmp.not = icmp eq i64 %prol.iter1374.next, %xtraiter1372
  br i1 %prol.iter1374.cmp.not, label %scalar.ph1331.prol.loopexit, label %scalar.ph1331.prol, !llvm.loop !89

scalar.ph1331.prol.loopexit:                      ; preds = %scalar.ph1331.prol, %scalar.ph1331.preheader
  %indvars.iv1070.unr = phi i64 [ %indvars.iv1070.ph, %scalar.ph1331.preheader ], [ %indvars.iv.next1071.prol, %scalar.ph1331.prol ]
  %808 = icmp ult i64 %804, 3
  br i1 %808, label %._crit_edge944, label %scalar.ph1331

scalar.ph1331:                                    ; preds = %scalar.ph1331.prol.loopexit, %scalar.ph1331
  %indvars.iv1070 = phi i64 [ %indvars.iv.next1071.3, %scalar.ph1331 ], [ %indvars.iv1070.unr, %scalar.ph1331.prol.loopexit ]
  %gep1127 = getelementptr double, ptr %invariant.gep1126, i64 %indvars.iv1070
  %809 = load double, ptr %gep1127, align 8, !tbaa !12
  %gep1129 = getelementptr double, ptr %invariant.gep1128, i64 %indvars.iv1070
  %810 = load double, ptr %gep1129, align 8, !tbaa !12
  %811 = fsub double %810, %809
  store double %811, ptr %gep1129, align 8, !tbaa !12
  %indvars.iv.next1071 = add nuw nsw i64 %indvars.iv1070, 1
  %gep1127.1 = getelementptr double, ptr %invariant.gep1126, i64 %indvars.iv.next1071
  %812 = load double, ptr %gep1127.1, align 8, !tbaa !12
  %gep1129.1 = getelementptr double, ptr %invariant.gep1128, i64 %indvars.iv.next1071
  %813 = load double, ptr %gep1129.1, align 8, !tbaa !12
  %814 = fsub double %813, %812
  store double %814, ptr %gep1129.1, align 8, !tbaa !12
  %indvars.iv.next1071.1 = add nuw nsw i64 %indvars.iv1070, 2
  %gep1127.2 = getelementptr double, ptr %invariant.gep1126, i64 %indvars.iv.next1071.1
  %815 = load double, ptr %gep1127.2, align 8, !tbaa !12
  %gep1129.2 = getelementptr double, ptr %invariant.gep1128, i64 %indvars.iv.next1071.1
  %816 = load double, ptr %gep1129.2, align 8, !tbaa !12
  %817 = fsub double %816, %815
  store double %817, ptr %gep1129.2, align 8, !tbaa !12
  %indvars.iv.next1071.2 = add nuw nsw i64 %indvars.iv1070, 3
  %gep1127.3 = getelementptr double, ptr %invariant.gep1126, i64 %indvars.iv.next1071.2
  %818 = load double, ptr %gep1127.3, align 8, !tbaa !12
  %gep1129.3 = getelementptr double, ptr %invariant.gep1128, i64 %indvars.iv.next1071.2
  %819 = load double, ptr %gep1129.3, align 8, !tbaa !12
  %820 = fsub double %819, %818
  store double %820, ptr %gep1129.3, align 8, !tbaa !12
  %indvars.iv.next1071.3 = add nuw nsw i64 %indvars.iv1070, 4
  %exitcond1074.not.3 = icmp eq i64 %indvars.iv.next1071.3, %wide.trip.count1073
  br i1 %exitcond1074.not.3, label %._crit_edge944, label %scalar.ph1331, !llvm.loop !90

._crit_edge944:                                   ; preds = %scalar.ph1331.prol.loopexit, %scalar.ph1331, %middle.block1330
  %indvars.iv.next1076 = add nuw nsw i64 %indvars.iv1075, 1
  %exitcond1079.not = icmp eq i64 %indvars.iv.next1076, %wide.trip.count1078
  %indvar.next1320 = add i32 %indvar1319, 1
  br i1 %exitcond1079.not, label %.loopexit, label %.lr.ph943, !llvm.loop !91

.loopexit:                                        ; preds = %._crit_edge824, %._crit_edge842, %._crit_edge858, %._crit_edge876, %._crit_edge892, %._crit_edge910, %._crit_edge926, %._crit_edge944, %.lr.ph948, %.lr.ph930, %.lr.ph914, %.lr.ph896, %.lr.ph880, %.lr.ph862, %.lr.ph846, %.lr.ph828, %70, %150, %238, %356, %461, %543, %632, %753, %324, %114, %505, %720, %422, %15, %29
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #3
  ret void
}

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

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

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

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

declare void @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

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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!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: BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass