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

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

; Function Attrs: nounwind uwtable
define dso_local void @dlatrs3_(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 double, align 8
  %44 = alloca double, align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca i32, align 4
  %51 = alloca double, align 8
  %52 = alloca [32 x double], align 16
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca [64 x double], align 16
  %57 = alloca double, align 8
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca i32, align 4
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca double, align 8
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  store ptr %0, ptr %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 8, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 256, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 512, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #3
  %86 = load ptr, ptr %23, align 8, !tbaa !5
  %87 = load i32, ptr %86, align 4, !tbaa !9
  store i32 %87, ptr %31, align 4, !tbaa !9
  %88 = load i32, ptr %31, align 4, !tbaa !9
  %89 = mul nsw i32 %88, 1
  %90 = add nsw i32 1, %89
  store i32 %90, ptr %32, align 4, !tbaa !9
  %91 = load i32, ptr %32, align 4, !tbaa !9
  %92 = load ptr, ptr %22, align 8, !tbaa !5
  %93 = sext i32 %91 to i64
  %94 = sub i64 0, %93
  %95 = getelementptr inbounds double, ptr %92, i64 %94
  store ptr %95, ptr %22, align 8, !tbaa !5
  %96 = load ptr, ptr %25, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %97, ptr %33, align 4, !tbaa !9
  %98 = load i32, ptr %33, align 4, !tbaa !9
  %99 = mul nsw i32 %98, 1
  %100 = add nsw i32 1, %99
  store i32 %100, ptr %34, align 4, !tbaa !9
  %101 = load i32, ptr %34, align 4, !tbaa !9
  %102 = load ptr, ptr %24, align 8, !tbaa !5
  %103 = sext i32 %101 to i64
  %104 = sub i64 0, %103
  %105 = getelementptr inbounds double, ptr %102, i64 %104
  store ptr %105, ptr %24, align 8, !tbaa !5
  %106 = load ptr, ptr %26, align 8, !tbaa !5
  %107 = getelementptr inbounds double, ptr %106, i32 -1
  store ptr %107, ptr %26, align 8, !tbaa !5
  %108 = load ptr, ptr %27, align 8, !tbaa !5
  %109 = getelementptr inbounds double, ptr %108, i32 -1
  store ptr %109, ptr %27, align 8, !tbaa !5
  %110 = load ptr, ptr %28, align 8, !tbaa !5
  %111 = getelementptr inbounds double, ptr %110, i32 -1
  store ptr %111, ptr %28, align 8, !tbaa !5
  %112 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 0, ptr %112, align 4, !tbaa !9
  %113 = load ptr, ptr %16, align 8, !tbaa !5
  %114 = call i32 @lsame_(ptr noundef %113, ptr noundef @.str)
  store i32 %114, ptr %62, align 4, !tbaa !9
  %115 = load ptr, ptr %17, align 8, !tbaa !5
  %116 = call i32 @lsame_(ptr noundef %115, ptr noundef @.str.1)
  store i32 %116, ptr %76, align 4, !tbaa !9
  %117 = load ptr, ptr %18, align 8, !tbaa !5
  %118 = call i32 @lsame_(ptr noundef %117, ptr noundef @.str.1)
  store i32 %118, ptr %79, align 4, !tbaa !9
  %119 = load ptr, ptr %29, align 8, !tbaa !5
  %120 = load i32, ptr %119, align 4, !tbaa !9
  %121 = icmp eq i32 %120, -1
  %122 = zext i1 %121 to i32
  store i32 %122, ptr %80, align 4, !tbaa !9
  store i32 8, ptr %35, align 4, !tbaa !9
  %123 = load ptr, ptr %20, align 8, !tbaa !5
  %124 = load ptr, ptr %20, align 8, !tbaa !5
  %125 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %123, ptr noundef %124, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 0)
  store i32 %125, ptr %36, align 4, !tbaa !9
  %126 = load i32, ptr %35, align 4, !tbaa !9
  %127 = load i32, ptr %36, align 4, !tbaa !9
  %128 = icmp sge i32 %126, %127
  br i1 %128, label %129, label %131

129:                                              ; preds = %15
  %130 = load i32, ptr %35, align 4, !tbaa !9
  br label %133

131:                                              ; preds = %15
  %132 = load i32, ptr %36, align 4, !tbaa !9
  br label %133

133:                                              ; preds = %131, %129
  %134 = phi i32 [ %130, %129 ], [ %132, %131 ]
  store i32 %134, ptr %68, align 4, !tbaa !9
  %135 = load i32, ptr %68, align 4, !tbaa !9
  %136 = icmp sle i32 64, %135
  br i1 %136, label %137, label %138

137:                                              ; preds = %133
  br label %140

138:                                              ; preds = %133
  %139 = load i32, ptr %68, align 4, !tbaa !9
  br label %140

140:                                              ; preds = %138, %137
  %141 = phi i32 [ 64, %137 ], [ %139, %138 ]
  store i32 %141, ptr %68, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  %142 = load ptr, ptr %20, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 4, !tbaa !9
  %144 = load i32, ptr %68, align 4, !tbaa !9
  %145 = add nsw i32 %143, %144
  %146 = sub nsw i32 %145, 1
  %147 = load i32, ptr %68, align 4, !tbaa !9
  %148 = sdiv i32 %146, %147
  store i32 %148, ptr %36, align 4, !tbaa !9
  %149 = load i32, ptr %35, align 4, !tbaa !9
  %150 = load i32, ptr %36, align 4, !tbaa !9
  %151 = icmp sge i32 %149, %150
  br i1 %151, label %152, label %154

152:                                              ; preds = %140
  %153 = load i32, ptr %35, align 4, !tbaa !9
  br label %156

154:                                              ; preds = %140
  %155 = load i32, ptr %36, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %154, %152
  %157 = phi i32 [ %153, %152 ], [ %155, %154 ]
  store i32 %157, ptr %81, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  %158 = load ptr, ptr %21, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = add nsw i32 %159, 31
  %161 = sdiv i32 %160, 32
  store i32 %161, ptr %36, align 4, !tbaa !9
  %162 = load i32, ptr %35, align 4, !tbaa !9
  %163 = load i32, ptr %36, align 4, !tbaa !9
  %164 = icmp sge i32 %162, %163
  br i1 %164, label %165, label %167

165:                                              ; preds = %156
  %166 = load i32, ptr %35, align 4, !tbaa !9
  br label %169

167:                                              ; preds = %156
  %168 = load i32, ptr %36, align 4, !tbaa !9
  br label %169

169:                                              ; preds = %167, %165
  %170 = phi i32 [ %166, %165 ], [ %168, %167 ]
  store i32 %170, ptr %83, align 4, !tbaa !9
  %171 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %171, ptr %35, align 4, !tbaa !9
  %172 = load ptr, ptr %21, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = icmp sle i32 %173, 32
  br i1 %174, label %175, label %178

175:                                              ; preds = %169
  %176 = load ptr, ptr %21, align 8, !tbaa !5
  %177 = load i32, ptr %176, align 4, !tbaa !9
  br label %179

178:                                              ; preds = %169
  br label %179

179:                                              ; preds = %178, %175
  %180 = phi i32 [ %177, %175 ], [ 32, %178 ]
  store i32 %180, ptr %36, align 4, !tbaa !9
  %181 = load i32, ptr %81, align 4, !tbaa !9
  %182 = load i32, ptr %35, align 4, !tbaa !9
  %183 = load i32, ptr %36, align 4, !tbaa !9
  %184 = icmp sge i32 %182, %183
  br i1 %184, label %185, label %187

185:                                              ; preds = %179
  %186 = load i32, ptr %35, align 4, !tbaa !9
  br label %189

187:                                              ; preds = %179
  %188 = load i32, ptr %36, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %187, %185
  %190 = phi i32 [ %186, %185 ], [ %188, %187 ]
  %191 = mul nsw i32 %181, %190
  store i32 %191, ptr %71, align 4, !tbaa !9
  %192 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %192, ptr %82, align 4, !tbaa !9
  %193 = load i32, ptr %81, align 4, !tbaa !9
  %194 = load i32, ptr %81, align 4, !tbaa !9
  %195 = mul nsw i32 %193, %194
  store i32 %195, ptr %58, align 4, !tbaa !9
  %196 = load i32, ptr %71, align 4, !tbaa !9
  store i32 %196, ptr %50, align 4, !tbaa !9
  %197 = load i32, ptr %71, align 4, !tbaa !9
  %198 = load i32, ptr %58, align 4, !tbaa !9
  %199 = add nsw i32 %197, %198
  %200 = sitofp i32 %199 to double
  %201 = load ptr, ptr %28, align 8, !tbaa !5
  %202 = getelementptr inbounds double, ptr %201, i64 1
  store double %200, ptr %202, align 8, !tbaa !11
  %203 = load i32, ptr %62, align 4, !tbaa !9
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %211, label %205

205:                                              ; preds = %189
  %206 = load ptr, ptr %16, align 8, !tbaa !5
  %207 = call i32 @lsame_(ptr noundef %206, ptr noundef @.str.4)
  %208 = icmp ne i32 %207, 0
  br i1 %208, label %211, label %209

209:                                              ; preds = %205
  %210 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -1, ptr %210, align 4, !tbaa !9
  br label %306

211:                                              ; preds = %205, %189
  %212 = load i32, ptr %76, align 4, !tbaa !9
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %224, label %214

214:                                              ; preds = %211
  %215 = load ptr, ptr %17, align 8, !tbaa !5
  %216 = call i32 @lsame_(ptr noundef %215, ptr noundef @.str.5)
  %217 = icmp ne i32 %216, 0
  br i1 %217, label %224, label %218

218:                                              ; preds = %214
  %219 = load ptr, ptr %17, align 8, !tbaa !5
  %220 = call i32 @lsame_(ptr noundef %219, ptr noundef @.str.6)
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %224, label %222

222:                                              ; preds = %218
  %223 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -2, ptr %223, align 4, !tbaa !9
  br label %305

224:                                              ; preds = %218, %214, %211
  %225 = load i32, ptr %79, align 4, !tbaa !9
  %226 = icmp ne i32 %225, 0
  br i1 %226, label %233, label %227

227:                                              ; preds = %224
  %228 = load ptr, ptr %18, align 8, !tbaa !5
  %229 = call i32 @lsame_(ptr noundef %228, ptr noundef @.str)
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %233, label %231

231:                                              ; preds = %227
  %232 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -3, ptr %232, align 4, !tbaa !9
  br label %304

233:                                              ; preds = %227, %224
  %234 = load ptr, ptr %19, align 8, !tbaa !5
  %235 = call i32 @lsame_(ptr noundef %234, ptr noundef @.str.7)
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %243, label %237

237:                                              ; preds = %233
  %238 = load ptr, ptr %19, align 8, !tbaa !5
  %239 = call i32 @lsame_(ptr noundef %238, ptr noundef @.str.1)
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %243, label %241

241:                                              ; preds = %237
  %242 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -4, ptr %242, align 4, !tbaa !9
  br label %303

243:                                              ; preds = %237, %233
  %244 = load ptr, ptr %20, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = icmp slt i32 %245, 0
  br i1 %246, label %247, label %249

247:                                              ; preds = %243
  %248 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -5, ptr %248, align 4, !tbaa !9
  br label %302

249:                                              ; preds = %243
  %250 = load ptr, ptr %21, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = icmp slt i32 %251, 0
  br i1 %252, label %253, label %255

253:                                              ; preds = %249
  %254 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -6, ptr %254, align 4, !tbaa !9
  br label %301

255:                                              ; preds = %249
  %256 = load ptr, ptr %23, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = load ptr, ptr %20, align 8, !tbaa !5
  %259 = load i32, ptr %258, align 4, !tbaa !9
  %260 = icmp sge i32 1, %259
  br i1 %260, label %261, label %262

261:                                              ; preds = %255
  br label %265

262:                                              ; preds = %255
  %263 = load ptr, ptr %20, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  br label %265

265:                                              ; preds = %262, %261
  %266 = phi i32 [ 1, %261 ], [ %264, %262 ]
  %267 = icmp slt i32 %257, %266
  br i1 %267, label %268, label %270

268:                                              ; preds = %265
  %269 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -8, ptr %269, align 4, !tbaa !9
  br label %300

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

276:                                              ; preds = %270
  br label %280

277:                                              ; preds = %270
  %278 = load ptr, ptr %20, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  br label %280

280:                                              ; preds = %277, %276
  %281 = phi i32 [ 1, %276 ], [ %279, %277 ]
  %282 = icmp slt i32 %272, %281
  br i1 %282, label %283, label %285

283:                                              ; preds = %280
  %284 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -10, ptr %284, align 4, !tbaa !9
  br label %299

285:                                              ; preds = %280
  %286 = load i32, ptr %80, align 4, !tbaa !9
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %298, label %288

288:                                              ; preds = %285
  %289 = load ptr, ptr %29, align 8, !tbaa !5
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = sitofp i32 %290 to double
  %292 = load ptr, ptr %28, align 8, !tbaa !5
  %293 = getelementptr inbounds double, ptr %292, i64 1
  %294 = load double, ptr %293, align 8, !tbaa !11
  %295 = fcmp olt double %291, %294
  br i1 %295, label %296, label %298

296:                                              ; preds = %288
  %297 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -14, ptr %297, align 4, !tbaa !9
  br label %298

298:                                              ; preds = %296, %288, %285
  br label %299

299:                                              ; preds = %298, %283
  br label %300

300:                                              ; preds = %299, %268
  br label %301

301:                                              ; preds = %300, %253
  br label %302

302:                                              ; preds = %301, %247
  br label %303

303:                                              ; preds = %302, %241
  br label %304

304:                                              ; preds = %303, %231
  br label %305

305:                                              ; preds = %304, %222
  br label %306

306:                                              ; preds = %305, %209
  %307 = load ptr, ptr %30, align 8, !tbaa !5
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = icmp ne i32 %308, 0
  br i1 %309, label %310, label %315

310:                                              ; preds = %306
  %311 = load ptr, ptr %30, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = sub nsw i32 0, %312
  store i32 %313, ptr %35, align 4, !tbaa !9
  %314 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %35, i32 noundef 7)
  store i32 1, ptr %85, align 4
  br label %1477

315:                                              ; preds = %306
  %316 = load i32, ptr %80, align 4, !tbaa !9
  %317 = icmp ne i32 %316, 0
  br i1 %317, label %318, label %319

318:                                              ; preds = %315
  store i32 1, ptr %85, align 4
  br label %1477

319:                                              ; preds = %315
  br label %320

320:                                              ; preds = %319
  %321 = load ptr, ptr %21, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  store i32 %322, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %323

323:                                              ; preds = %332, %320
  %324 = load i32, ptr %70, align 4, !tbaa !9
  %325 = load i32, ptr %35, align 4, !tbaa !9
  %326 = icmp sle i32 %324, %325
  br i1 %326, label %327, label %335

327:                                              ; preds = %323
  %328 = load ptr, ptr %26, align 8, !tbaa !5
  %329 = load i32, ptr %70, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds double, ptr %328, i64 %330
  store double 1.000000e+00, ptr %331, align 8, !tbaa !11
  br label %332

332:                                              ; preds = %327
  %333 = load i32, ptr %70, align 4, !tbaa !9
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %70, align 4, !tbaa !9
  br label %323, !llvm.loop !13

335:                                              ; preds = %323
  %336 = load ptr, ptr %20, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = load ptr, ptr %21, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = icmp sle i32 %337, %339
  br i1 %340, label %341, label %344

341:                                              ; preds = %335
  %342 = load ptr, ptr %20, align 8, !tbaa !5
  %343 = load i32, ptr %342, align 4, !tbaa !9
  br label %347

344:                                              ; preds = %335
  %345 = load ptr, ptr %21, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  br label %347

347:                                              ; preds = %344, %341
  %348 = phi i32 [ %343, %341 ], [ %346, %344 ]
  %349 = icmp eq i32 %348, 0
  br i1 %349, label %350, label %351

350:                                              ; preds = %347
  store i32 1, ptr %85, align 4
  br label %1477

351:                                              ; preds = %347
  %352 = call double @dlamch_(ptr noundef @.str.9)
  store double %352, ptr %74, align 8, !tbaa !11
  %353 = call double @dlamch_(ptr noundef @.str.10)
  store double %353, ptr %78, align 8, !tbaa !11
  %354 = load ptr, ptr %21, align 8, !tbaa !5
  %355 = load i32, ptr %354, align 4, !tbaa !9
  %356 = icmp slt i32 %355, 2
  br i1 %356, label %357, label %412

357:                                              ; preds = %351
  %358 = load ptr, ptr %16, align 8, !tbaa !5
  %359 = load ptr, ptr %17, align 8, !tbaa !5
  %360 = load ptr, ptr %18, align 8, !tbaa !5
  %361 = load ptr, ptr %19, align 8, !tbaa !5
  %362 = load ptr, ptr %20, align 8, !tbaa !5
  %363 = load ptr, ptr %22, align 8, !tbaa !5
  %364 = load i32, ptr %32, align 4, !tbaa !9
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %363, i64 %365
  %367 = load ptr, ptr %23, align 8, !tbaa !5
  %368 = load ptr, ptr %24, align 8, !tbaa !5
  %369 = load i32, ptr %33, align 4, !tbaa !9
  %370 = add nsw i32 %369, 1
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds double, ptr %368, i64 %371
  %373 = load ptr, ptr %26, align 8, !tbaa !5
  %374 = getelementptr inbounds double, ptr %373, i64 1
  %375 = load ptr, ptr %27, align 8, !tbaa !5
  %376 = getelementptr inbounds double, ptr %375, i64 1
  %377 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dlatrs_(ptr noundef %358, ptr noundef %359, ptr noundef %360, ptr noundef %361, ptr noundef %362, ptr noundef %366, ptr noundef %367, ptr noundef %372, ptr noundef %374, ptr noundef %376, ptr noundef %377)
  %378 = load ptr, ptr %21, align 8, !tbaa !5
  %379 = load i32, ptr %378, align 4, !tbaa !9
  store i32 %379, ptr %35, align 4, !tbaa !9
  store i32 2, ptr %55, align 4, !tbaa !9
  br label %380

380:                                              ; preds = %408, %357
  %381 = load i32, ptr %55, align 4, !tbaa !9
  %382 = load i32, ptr %35, align 4, !tbaa !9
  %383 = icmp sle i32 %381, %382
  br i1 %383, label %384, label %411

384:                                              ; preds = %380
  %385 = load ptr, ptr %16, align 8, !tbaa !5
  %386 = load ptr, ptr %17, align 8, !tbaa !5
  %387 = load ptr, ptr %18, align 8, !tbaa !5
  %388 = load ptr, ptr %20, align 8, !tbaa !5
  %389 = load ptr, ptr %22, align 8, !tbaa !5
  %390 = load i32, ptr %32, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %389, i64 %391
  %393 = load ptr, ptr %23, align 8, !tbaa !5
  %394 = load ptr, ptr %24, align 8, !tbaa !5
  %395 = load i32, ptr %55, align 4, !tbaa !9
  %396 = load i32, ptr %33, align 4, !tbaa !9
  %397 = mul nsw i32 %395, %396
  %398 = add nsw i32 %397, 1
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds double, ptr %394, i64 %399
  %401 = load ptr, ptr %26, align 8, !tbaa !5
  %402 = load i32, ptr %55, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds double, ptr %401, i64 %403
  %405 = load ptr, ptr %27, align 8, !tbaa !5
  %406 = getelementptr inbounds double, ptr %405, i64 1
  %407 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dlatrs_(ptr noundef %385, ptr noundef %386, ptr noundef %387, ptr noundef @.str.7, ptr noundef %388, ptr noundef %392, ptr noundef %393, ptr noundef %400, ptr noundef %404, ptr noundef %406, ptr noundef %407)
  br label %408

408:                                              ; preds = %384
  %409 = load i32, ptr %55, align 4, !tbaa !9
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr %55, align 4, !tbaa !9
  br label %380, !llvm.loop !15

411:                                              ; preds = %380
  store i32 1, ptr %85, align 4
  br label %1477

412:                                              ; preds = %351
  store double 0.000000e+00, ptr %51, align 8, !tbaa !11
  %413 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %413, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %414

414:                                              ; preds = %552, %412
  %415 = load i32, ptr %54, align 4, !tbaa !9
  %416 = load i32, ptr %35, align 4, !tbaa !9
  %417 = icmp sle i32 %415, %416
  br i1 %417, label %418, label %555

418:                                              ; preds = %414
  %419 = load i32, ptr %54, align 4, !tbaa !9
  %420 = sub nsw i32 %419, 1
  %421 = load i32, ptr %68, align 4, !tbaa !9
  %422 = mul nsw i32 %420, %421
  %423 = add nsw i32 %422, 1
  store i32 %423, ptr %64, align 4, !tbaa !9
  %424 = load i32, ptr %54, align 4, !tbaa !9
  %425 = load i32, ptr %68, align 4, !tbaa !9
  %426 = mul nsw i32 %424, %425
  store i32 %426, ptr %36, align 4, !tbaa !9
  %427 = load i32, ptr %36, align 4, !tbaa !9
  %428 = load ptr, ptr %20, align 8, !tbaa !5
  %429 = load i32, ptr %428, align 4, !tbaa !9
  %430 = icmp sle i32 %427, %429
  br i1 %430, label %431, label %433

431:                                              ; preds = %418
  %432 = load i32, ptr %36, align 4, !tbaa !9
  br label %436

433:                                              ; preds = %418
  %434 = load ptr, ptr %20, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  br label %436

436:                                              ; preds = %433, %431
  %437 = phi i32 [ %432, %431 ], [ %435, %433 ]
  %438 = add nsw i32 %437, 1
  store i32 %438, ptr %65, align 4, !tbaa !9
  %439 = load i32, ptr %62, align 4, !tbaa !9
  %440 = icmp ne i32 %439, 0
  br i1 %440, label %441, label %444

441:                                              ; preds = %436
  store i32 1, ptr %75, align 4, !tbaa !9
  %442 = load i32, ptr %54, align 4, !tbaa !9
  %443 = sub nsw i32 %442, 1
  store i32 %443, ptr %59, align 4, !tbaa !9
  br label %448

444:                                              ; preds = %436
  %445 = load i32, ptr %54, align 4, !tbaa !9
  %446 = add nsw i32 %445, 1
  store i32 %446, ptr %75, align 4, !tbaa !9
  %447 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %447, ptr %59, align 4, !tbaa !9
  br label %448

448:                                              ; preds = %444, %441
  %449 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %449, ptr %36, align 4, !tbaa !9
  %450 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %450, ptr %53, align 4, !tbaa !9
  br label %451

451:                                              ; preds = %548, %448
  %452 = load i32, ptr %53, align 4, !tbaa !9
  %453 = load i32, ptr %36, align 4, !tbaa !9
  %454 = icmp sle i32 %452, %453
  br i1 %454, label %455, label %551

455:                                              ; preds = %451
  %456 = load i32, ptr %53, align 4, !tbaa !9
  %457 = sub nsw i32 %456, 1
  %458 = load i32, ptr %68, align 4, !tbaa !9
  %459 = mul nsw i32 %457, %458
  %460 = add nsw i32 %459, 1
  store i32 %460, ptr %61, align 4, !tbaa !9
  %461 = load i32, ptr %53, align 4, !tbaa !9
  %462 = load i32, ptr %68, align 4, !tbaa !9
  %463 = mul nsw i32 %461, %462
  store i32 %463, ptr %37, align 4, !tbaa !9
  %464 = load i32, ptr %37, align 4, !tbaa !9
  %465 = load ptr, ptr %20, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = icmp sle i32 %464, %466
  br i1 %467, label %468, label %470

468:                                              ; preds = %455
  %469 = load i32, ptr %37, align 4, !tbaa !9
  br label %473

470:                                              ; preds = %455
  %471 = load ptr, ptr %20, align 8, !tbaa !5
  %472 = load i32, ptr %471, align 4, !tbaa !9
  br label %473

473:                                              ; preds = %470, %468
  %474 = phi i32 [ %469, %468 ], [ %472, %470 ]
  %475 = add nsw i32 %474, 1
  store i32 %475, ptr %63, align 4, !tbaa !9
  %476 = load i32, ptr %76, align 4, !tbaa !9
  %477 = icmp ne i32 %476, 0
  br i1 %477, label %478, label %508

478:                                              ; preds = %473
  %479 = load i32, ptr %63, align 4, !tbaa !9
  %480 = load i32, ptr %61, align 4, !tbaa !9
  %481 = sub nsw i32 %479, %480
  store i32 %481, ptr %37, align 4, !tbaa !9
  %482 = load i32, ptr %65, align 4, !tbaa !9
  %483 = load i32, ptr %64, align 4, !tbaa !9
  %484 = sub nsw i32 %482, %483
  store i32 %484, ptr %38, align 4, !tbaa !9
  %485 = load ptr, ptr %22, align 8, !tbaa !5
  %486 = load i32, ptr %61, align 4, !tbaa !9
  %487 = load i32, ptr %64, align 4, !tbaa !9
  %488 = load i32, ptr %31, align 4, !tbaa !9
  %489 = mul nsw i32 %487, %488
  %490 = add nsw i32 %486, %489
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds double, ptr %485, i64 %491
  %493 = load ptr, ptr %23, align 8, !tbaa !5
  %494 = getelementptr inbounds [64 x double], ptr %56, i64 0, i64 0
  %495 = call double @dlange_(ptr noundef @.str.11, ptr noundef %37, ptr noundef %38, ptr noundef %492, ptr noundef %493, ptr noundef %494)
  store double %495, ptr %48, align 8, !tbaa !11
  %496 = load double, ptr %48, align 8, !tbaa !11
  %497 = load ptr, ptr %28, align 8, !tbaa !5
  %498 = load i32, ptr %50, align 4, !tbaa !9
  %499 = load i32, ptr %53, align 4, !tbaa !9
  %500 = add nsw i32 %498, %499
  %501 = load i32, ptr %54, align 4, !tbaa !9
  %502 = sub nsw i32 %501, 1
  %503 = load i32, ptr %81, align 4, !tbaa !9
  %504 = mul nsw i32 %502, %503
  %505 = add nsw i32 %500, %504
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds double, ptr %497, i64 %506
  store double %496, ptr %507, align 8, !tbaa !11
  br label %538

508:                                              ; preds = %473
  %509 = load i32, ptr %63, align 4, !tbaa !9
  %510 = load i32, ptr %61, align 4, !tbaa !9
  %511 = sub nsw i32 %509, %510
  store i32 %511, ptr %37, align 4, !tbaa !9
  %512 = load i32, ptr %65, align 4, !tbaa !9
  %513 = load i32, ptr %64, align 4, !tbaa !9
  %514 = sub nsw i32 %512, %513
  store i32 %514, ptr %38, align 4, !tbaa !9
  %515 = load ptr, ptr %22, align 8, !tbaa !5
  %516 = load i32, ptr %61, align 4, !tbaa !9
  %517 = load i32, ptr %64, align 4, !tbaa !9
  %518 = load i32, ptr %31, align 4, !tbaa !9
  %519 = mul nsw i32 %517, %518
  %520 = add nsw i32 %516, %519
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds double, ptr %515, i64 %521
  %523 = load ptr, ptr %23, align 8, !tbaa !5
  %524 = getelementptr inbounds [64 x double], ptr %56, i64 0, i64 0
  %525 = call double @dlange_(ptr noundef @.str.12, ptr noundef %37, ptr noundef %38, ptr noundef %522, ptr noundef %523, ptr noundef %524)
  store double %525, ptr %48, align 8, !tbaa !11
  %526 = load double, ptr %48, align 8, !tbaa !11
  %527 = load ptr, ptr %28, align 8, !tbaa !5
  %528 = load i32, ptr %50, align 4, !tbaa !9
  %529 = load i32, ptr %54, align 4, !tbaa !9
  %530 = add nsw i32 %528, %529
  %531 = load i32, ptr %53, align 4, !tbaa !9
  %532 = sub nsw i32 %531, 1
  %533 = load i32, ptr %81, align 4, !tbaa !9
  %534 = mul nsw i32 %532, %533
  %535 = add nsw i32 %530, %534
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds double, ptr %527, i64 %536
  store double %526, ptr %537, align 8, !tbaa !11
  br label %538

538:                                              ; preds = %508, %478
  %539 = load double, ptr %51, align 8, !tbaa !11
  %540 = load double, ptr %48, align 8, !tbaa !11
  %541 = fcmp oge double %539, %540
  br i1 %541, label %542, label %544

542:                                              ; preds = %538
  %543 = load double, ptr %51, align 8, !tbaa !11
  br label %546

544:                                              ; preds = %538
  %545 = load double, ptr %48, align 8, !tbaa !11
  br label %546

546:                                              ; preds = %544, %542
  %547 = phi double [ %543, %542 ], [ %545, %544 ]
  store double %547, ptr %51, align 8, !tbaa !11
  br label %548

548:                                              ; preds = %546
  %549 = load i32, ptr %53, align 4, !tbaa !9
  %550 = add nsw i32 %549, 1
  store i32 %550, ptr %53, align 4, !tbaa !9
  br label %451, !llvm.loop !16

551:                                              ; preds = %451
  br label %552

552:                                              ; preds = %551
  %553 = load i32, ptr %54, align 4, !tbaa !9
  %554 = add nsw i32 %553, 1
  store i32 %554, ptr %54, align 4, !tbaa !9
  br label %414, !llvm.loop !17

555:                                              ; preds = %414
  %556 = load double, ptr %51, align 8, !tbaa !11
  %557 = call double @dlamch_(ptr noundef @.str.9)
  %558 = fcmp ole double %556, %557
  br i1 %558, label %594, label %559

559:                                              ; preds = %555
  %560 = load ptr, ptr %21, align 8, !tbaa !5
  %561 = load i32, ptr %560, align 4, !tbaa !9
  store i32 %561, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %562

562:                                              ; preds = %590, %559
  %563 = load i32, ptr %55, align 4, !tbaa !9
  %564 = load i32, ptr %35, align 4, !tbaa !9
  %565 = icmp sle i32 %563, %564
  br i1 %565, label %566, label %593

566:                                              ; preds = %562
  %567 = load ptr, ptr %16, align 8, !tbaa !5
  %568 = load ptr, ptr %17, align 8, !tbaa !5
  %569 = load ptr, ptr %18, align 8, !tbaa !5
  %570 = load ptr, ptr %20, align 8, !tbaa !5
  %571 = load ptr, ptr %22, align 8, !tbaa !5
  %572 = load i32, ptr %32, align 4, !tbaa !9
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %571, i64 %573
  %575 = load ptr, ptr %23, align 8, !tbaa !5
  %576 = load ptr, ptr %24, align 8, !tbaa !5
  %577 = load i32, ptr %55, align 4, !tbaa !9
  %578 = load i32, ptr %33, align 4, !tbaa !9
  %579 = mul nsw i32 %577, %578
  %580 = add nsw i32 %579, 1
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds double, ptr %576, i64 %581
  %583 = load ptr, ptr %26, align 8, !tbaa !5
  %584 = load i32, ptr %55, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds double, ptr %583, i64 %585
  %587 = load ptr, ptr %27, align 8, !tbaa !5
  %588 = getelementptr inbounds double, ptr %587, i64 1
  %589 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dlatrs_(ptr noundef %567, ptr noundef %568, ptr noundef %569, ptr noundef @.str.1, ptr noundef %570, ptr noundef %574, ptr noundef %575, ptr noundef %582, ptr noundef %586, ptr noundef %588, ptr noundef %589)
  br label %590

590:                                              ; preds = %566
  %591 = load i32, ptr %55, align 4, !tbaa !9
  %592 = add nsw i32 %591, 1
  store i32 %592, ptr %55, align 4, !tbaa !9
  br label %562, !llvm.loop !18

593:                                              ; preds = %562
  store i32 1, ptr %85, align 4
  br label %1477

594:                                              ; preds = %555
  %595 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %595, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %55, align 4, !tbaa !9
  br label %596

596:                                              ; preds = %1473, %594
  %597 = load i32, ptr %55, align 4, !tbaa !9
  %598 = load i32, ptr %35, align 4, !tbaa !9
  %599 = icmp sle i32 %597, %598
  br i1 %599, label %600, label %1476

600:                                              ; preds = %596
  %601 = load i32, ptr %55, align 4, !tbaa !9
  %602 = sub nsw i32 %601, 1
  %603 = shl i32 %602, 5
  %604 = add nsw i32 %603, 1
  store i32 %604, ptr %66, align 4, !tbaa !9
  %605 = load i32, ptr %55, align 4, !tbaa !9
  %606 = shl i32 %605, 5
  store i32 %606, ptr %36, align 4, !tbaa !9
  %607 = load i32, ptr %36, align 4, !tbaa !9
  %608 = load ptr, ptr %21, align 8, !tbaa !5
  %609 = load i32, ptr %608, align 4, !tbaa !9
  %610 = icmp sle i32 %607, %609
  br i1 %610, label %611, label %613

611:                                              ; preds = %600
  %612 = load i32, ptr %36, align 4, !tbaa !9
  br label %616

613:                                              ; preds = %600
  %614 = load ptr, ptr %21, align 8, !tbaa !5
  %615 = load i32, ptr %614, align 4, !tbaa !9
  br label %616

616:                                              ; preds = %613, %611
  %617 = phi i32 [ %612, %611 ], [ %615, %613 ]
  %618 = add nsw i32 %617, 1
  store i32 %618, ptr %67, align 4, !tbaa !9
  %619 = load i32, ptr %67, align 4, !tbaa !9
  %620 = load i32, ptr %66, align 4, !tbaa !9
  %621 = sub nsw i32 %619, %620
  store i32 %621, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %622

622:                                              ; preds = %645, %616
  %623 = load i32, ptr %70, align 4, !tbaa !9
  %624 = load i32, ptr %36, align 4, !tbaa !9
  %625 = icmp sle i32 %623, %624
  br i1 %625, label %626, label %648

626:                                              ; preds = %622
  %627 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %627, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %628

628:                                              ; preds = %641, %626
  %629 = load i32, ptr %53, align 4, !tbaa !9
  %630 = load i32, ptr %37, align 4, !tbaa !9
  %631 = icmp sle i32 %629, %630
  br i1 %631, label %632, label %644

632:                                              ; preds = %628
  %633 = load ptr, ptr %28, align 8, !tbaa !5
  %634 = load i32, ptr %53, align 4, !tbaa !9
  %635 = load i32, ptr %70, align 4, !tbaa !9
  %636 = load i32, ptr %82, align 4, !tbaa !9
  %637 = mul nsw i32 %635, %636
  %638 = add nsw i32 %634, %637
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds double, ptr %633, i64 %639
  store double 1.000000e+00, ptr %640, align 8, !tbaa !11
  br label %641

641:                                              ; preds = %632
  %642 = load i32, ptr %53, align 4, !tbaa !9
  %643 = add nsw i32 %642, 1
  store i32 %643, ptr %53, align 4, !tbaa !9
  br label %628, !llvm.loop !19

644:                                              ; preds = %628
  br label %645

645:                                              ; preds = %644
  %646 = load i32, ptr %70, align 4, !tbaa !9
  %647 = add nsw i32 %646, 1
  store i32 %647, ptr %70, align 4, !tbaa !9
  br label %622, !llvm.loop !20

648:                                              ; preds = %622
  %649 = load i32, ptr %76, align 4, !tbaa !9
  %650 = icmp ne i32 %649, 0
  br i1 %650, label %651, label %659

651:                                              ; preds = %648
  %652 = load i32, ptr %62, align 4, !tbaa !9
  %653 = icmp ne i32 %652, 0
  br i1 %653, label %654, label %656

654:                                              ; preds = %651
  %655 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %655, ptr %77, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  store i32 -1, ptr %46, align 4, !tbaa !9
  br label %658

656:                                              ; preds = %651
  store i32 1, ptr %77, align 4, !tbaa !9
  %657 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %657, ptr %60, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %658

658:                                              ; preds = %656, %654
  br label %667

659:                                              ; preds = %648
  %660 = load i32, ptr %62, align 4, !tbaa !9
  %661 = icmp ne i32 %660, 0
  br i1 %661, label %662, label %664

662:                                              ; preds = %659
  store i32 1, ptr %77, align 4, !tbaa !9
  %663 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %663, ptr %60, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %666

664:                                              ; preds = %659
  %665 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %665, ptr %77, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  store i32 -1, ptr %46, align 4, !tbaa !9
  br label %666

666:                                              ; preds = %664, %662
  br label %667

667:                                              ; preds = %666, %658
  %668 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %668, ptr %36, align 4, !tbaa !9
  %669 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %669, ptr %37, align 4, !tbaa !9
  %670 = load i32, ptr %77, align 4, !tbaa !9
  store i32 %670, ptr %54, align 4, !tbaa !9
  br label %671

671:                                              ; preds = %1324, %667
  %672 = load i32, ptr %37, align 4, !tbaa !9
  %673 = icmp slt i32 %672, 0
  br i1 %673, label %674, label %679

674:                                              ; preds = %671
  %675 = load i32, ptr %54, align 4, !tbaa !9
  %676 = load i32, ptr %36, align 4, !tbaa !9
  %677 = icmp sge i32 %675, %676
  %678 = zext i1 %677 to i32
  br label %684

679:                                              ; preds = %671
  %680 = load i32, ptr %54, align 4, !tbaa !9
  %681 = load i32, ptr %36, align 4, !tbaa !9
  %682 = icmp sle i32 %680, %681
  %683 = zext i1 %682 to i32
  br label %684

684:                                              ; preds = %679, %674
  %685 = phi i32 [ %678, %674 ], [ %683, %679 ]
  %686 = icmp ne i32 %685, 0
  br i1 %686, label %687, label %1328

687:                                              ; preds = %684
  %688 = load i32, ptr %54, align 4, !tbaa !9
  %689 = sub nsw i32 %688, 1
  %690 = load i32, ptr %68, align 4, !tbaa !9
  %691 = mul nsw i32 %689, %690
  %692 = add nsw i32 %691, 1
  store i32 %692, ptr %64, align 4, !tbaa !9
  %693 = load i32, ptr %54, align 4, !tbaa !9
  %694 = load i32, ptr %68, align 4, !tbaa !9
  %695 = mul nsw i32 %693, %694
  store i32 %695, ptr %38, align 4, !tbaa !9
  %696 = load i32, ptr %38, align 4, !tbaa !9
  %697 = load ptr, ptr %20, align 8, !tbaa !5
  %698 = load i32, ptr %697, align 4, !tbaa !9
  %699 = icmp sle i32 %696, %698
  br i1 %699, label %700, label %702

700:                                              ; preds = %687
  %701 = load i32, ptr %38, align 4, !tbaa !9
  br label %705

702:                                              ; preds = %687
  %703 = load ptr, ptr %20, align 8, !tbaa !5
  %704 = load i32, ptr %703, align 4, !tbaa !9
  br label %705

705:                                              ; preds = %702, %700
  %706 = phi i32 [ %701, %700 ], [ %704, %702 ]
  %707 = add nsw i32 %706, 1
  store i32 %707, ptr %65, align 4, !tbaa !9
  %708 = load i32, ptr %67, align 4, !tbaa !9
  %709 = load i32, ptr %66, align 4, !tbaa !9
  %710 = sub nsw i32 %708, %709
  store i32 %710, ptr %38, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %711

711:                                              ; preds = %991, %705
  %712 = load i32, ptr %70, align 4, !tbaa !9
  %713 = load i32, ptr %38, align 4, !tbaa !9
  %714 = icmp sle i32 %712, %713
  br i1 %714, label %715, label %994

715:                                              ; preds = %711
  %716 = load i32, ptr %66, align 4, !tbaa !9
  %717 = load i32, ptr %70, align 4, !tbaa !9
  %718 = add nsw i32 %716, %717
  %719 = sub nsw i32 %718, 1
  store i32 %719, ptr %84, align 4, !tbaa !9
  %720 = load i32, ptr %70, align 4, !tbaa !9
  %721 = icmp eq i32 %720, 1
  br i1 %721, label %722, label %749

722:                                              ; preds = %715
  %723 = load i32, ptr %65, align 4, !tbaa !9
  %724 = load i32, ptr %64, align 4, !tbaa !9
  %725 = sub nsw i32 %723, %724
  store i32 %725, ptr %39, align 4, !tbaa !9
  %726 = load ptr, ptr %16, align 8, !tbaa !5
  %727 = load ptr, ptr %17, align 8, !tbaa !5
  %728 = load ptr, ptr %18, align 8, !tbaa !5
  %729 = load ptr, ptr %22, align 8, !tbaa !5
  %730 = load i32, ptr %64, align 4, !tbaa !9
  %731 = load i32, ptr %64, align 4, !tbaa !9
  %732 = load i32, ptr %31, align 4, !tbaa !9
  %733 = mul nsw i32 %731, %732
  %734 = add nsw i32 %730, %733
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds double, ptr %729, i64 %735
  %737 = load ptr, ptr %23, align 8, !tbaa !5
  %738 = load ptr, ptr %24, align 8, !tbaa !5
  %739 = load i32, ptr %64, align 4, !tbaa !9
  %740 = load i32, ptr %84, align 4, !tbaa !9
  %741 = load i32, ptr %33, align 4, !tbaa !9
  %742 = mul nsw i32 %740, %741
  %743 = add nsw i32 %739, %742
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds double, ptr %738, i64 %744
  %746 = load ptr, ptr %27, align 8, !tbaa !5
  %747 = getelementptr inbounds double, ptr %746, i64 1
  %748 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dlatrs_(ptr noundef %726, ptr noundef %727, ptr noundef %728, ptr noundef @.str.1, ptr noundef %39, ptr noundef %736, ptr noundef %737, ptr noundef %745, ptr noundef %72, ptr noundef %747, ptr noundef %748)
  br label %776

749:                                              ; preds = %715
  %750 = load i32, ptr %65, align 4, !tbaa !9
  %751 = load i32, ptr %64, align 4, !tbaa !9
  %752 = sub nsw i32 %750, %751
  store i32 %752, ptr %39, align 4, !tbaa !9
  %753 = load ptr, ptr %16, align 8, !tbaa !5
  %754 = load ptr, ptr %17, align 8, !tbaa !5
  %755 = load ptr, ptr %18, align 8, !tbaa !5
  %756 = load ptr, ptr %22, align 8, !tbaa !5
  %757 = load i32, ptr %64, align 4, !tbaa !9
  %758 = load i32, ptr %64, align 4, !tbaa !9
  %759 = load i32, ptr %31, align 4, !tbaa !9
  %760 = mul nsw i32 %758, %759
  %761 = add nsw i32 %757, %760
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds double, ptr %756, i64 %762
  %764 = load ptr, ptr %23, align 8, !tbaa !5
  %765 = load ptr, ptr %24, align 8, !tbaa !5
  %766 = load i32, ptr %64, align 4, !tbaa !9
  %767 = load i32, ptr %84, align 4, !tbaa !9
  %768 = load i32, ptr %33, align 4, !tbaa !9
  %769 = mul nsw i32 %767, %768
  %770 = add nsw i32 %766, %769
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds double, ptr %765, i64 %771
  %773 = load ptr, ptr %27, align 8, !tbaa !5
  %774 = getelementptr inbounds double, ptr %773, i64 1
  %775 = load ptr, ptr %30, align 8, !tbaa !5
  call void @dlatrs_(ptr noundef %753, ptr noundef %754, ptr noundef %755, ptr noundef @.str.7, ptr noundef %39, ptr noundef %763, ptr noundef %764, ptr noundef %772, ptr noundef %72, ptr noundef %774, ptr noundef %775)
  br label %776

776:                                              ; preds = %749, %722
  %777 = load i32, ptr %65, align 4, !tbaa !9
  %778 = load i32, ptr %64, align 4, !tbaa !9
  %779 = sub nsw i32 %777, %778
  store i32 %779, ptr %39, align 4, !tbaa !9
  %780 = load ptr, ptr %24, align 8, !tbaa !5
  %781 = load i32, ptr %64, align 4, !tbaa !9
  %782 = load i32, ptr %84, align 4, !tbaa !9
  %783 = load i32, ptr %33, align 4, !tbaa !9
  %784 = mul nsw i32 %782, %783
  %785 = add nsw i32 %781, %784
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %780, i64 %786
  %788 = load ptr, ptr %25, align 8, !tbaa !5
  %789 = getelementptr inbounds [64 x double], ptr %56, i64 0, i64 0
  %790 = call double @dlange_(ptr noundef @.str.11, ptr noundef %39, ptr noundef @c__1, ptr noundef %787, ptr noundef %788, ptr noundef %789)
  %791 = load i32, ptr %70, align 4, !tbaa !9
  %792 = sub nsw i32 %791, 1
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds [32 x double], ptr %52, i64 0, i64 %793
  store double %790, ptr %794, align 8, !tbaa !11
  %795 = load double, ptr %72, align 8, !tbaa !11
  %796 = fcmp oeq double %795, 0.000000e+00
  br i1 %796, label %797, label %859

797:                                              ; preds = %776
  %798 = load ptr, ptr %26, align 8, !tbaa !5
  %799 = load i32, ptr %84, align 4, !tbaa !9
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds double, ptr %798, i64 %800
  store double 0.000000e+00, ptr %801, align 8, !tbaa !11
  %802 = load i32, ptr %64, align 4, !tbaa !9
  %803 = sub nsw i32 %802, 1
  store i32 %803, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %804

804:                                              ; preds = %817, %797
  %805 = load i32, ptr %69, align 4, !tbaa !9
  %806 = load i32, ptr %39, align 4, !tbaa !9
  %807 = icmp sle i32 %805, %806
  br i1 %807, label %808, label %820

808:                                              ; preds = %804
  %809 = load ptr, ptr %24, align 8, !tbaa !5
  %810 = load i32, ptr %69, align 4, !tbaa !9
  %811 = load i32, ptr %70, align 4, !tbaa !9
  %812 = load i32, ptr %33, align 4, !tbaa !9
  %813 = mul nsw i32 %811, %812
  %814 = add nsw i32 %810, %813
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds double, ptr %809, i64 %815
  store double 0.000000e+00, ptr %816, align 8, !tbaa !11
  br label %817

817:                                              ; preds = %808
  %818 = load i32, ptr %69, align 4, !tbaa !9
  %819 = add nsw i32 %818, 1
  store i32 %819, ptr %69, align 4, !tbaa !9
  br label %804, !llvm.loop !21

820:                                              ; preds = %804
  %821 = load ptr, ptr %20, align 8, !tbaa !5
  %822 = load i32, ptr %821, align 4, !tbaa !9
  store i32 %822, ptr %39, align 4, !tbaa !9
  %823 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %823, ptr %69, align 4, !tbaa !9
  br label %824

824:                                              ; preds = %837, %820
  %825 = load i32, ptr %69, align 4, !tbaa !9
  %826 = load i32, ptr %39, align 4, !tbaa !9
  %827 = icmp sle i32 %825, %826
  br i1 %827, label %828, label %840

828:                                              ; preds = %824
  %829 = load ptr, ptr %24, align 8, !tbaa !5
  %830 = load i32, ptr %69, align 4, !tbaa !9
  %831 = load i32, ptr %70, align 4, !tbaa !9
  %832 = load i32, ptr %33, align 4, !tbaa !9
  %833 = mul nsw i32 %831, %832
  %834 = add nsw i32 %830, %833
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %829, i64 %835
  store double 0.000000e+00, ptr %836, align 8, !tbaa !11
  br label %837

837:                                              ; preds = %828
  %838 = load i32, ptr %69, align 4, !tbaa !9
  %839 = add nsw i32 %838, 1
  store i32 %839, ptr %69, align 4, !tbaa !9
  br label %824, !llvm.loop !22

840:                                              ; preds = %824
  %841 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %841, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %842

842:                                              ; preds = %855, %840
  %843 = load i32, ptr %69, align 4, !tbaa !9
  %844 = load i32, ptr %39, align 4, !tbaa !9
  %845 = icmp sle i32 %843, %844
  br i1 %845, label %846, label %858

846:                                              ; preds = %842
  %847 = load ptr, ptr %28, align 8, !tbaa !5
  %848 = load i32, ptr %69, align 4, !tbaa !9
  %849 = load i32, ptr %70, align 4, !tbaa !9
  %850 = load i32, ptr %82, align 4, !tbaa !9
  %851 = mul nsw i32 %849, %850
  %852 = add nsw i32 %848, %851
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds double, ptr %847, i64 %853
  store double 1.000000e+00, ptr %854, align 8, !tbaa !11
  br label %855

855:                                              ; preds = %846
  %856 = load i32, ptr %69, align 4, !tbaa !9
  %857 = add nsw i32 %856, 1
  store i32 %857, ptr %69, align 4, !tbaa !9
  br label %842, !llvm.loop !23

858:                                              ; preds = %842
  store double 1.000000e+00, ptr %72, align 8, !tbaa !11
  br label %970

859:                                              ; preds = %776
  %860 = load double, ptr %72, align 8, !tbaa !11
  %861 = load ptr, ptr %28, align 8, !tbaa !5
  %862 = load i32, ptr %54, align 4, !tbaa !9
  %863 = load i32, ptr %70, align 4, !tbaa !9
  %864 = load i32, ptr %82, align 4, !tbaa !9
  %865 = mul nsw i32 %863, %864
  %866 = add nsw i32 %862, %865
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds double, ptr %861, i64 %867
  %869 = load double, ptr %868, align 8, !tbaa !11
  %870 = fmul double %860, %869
  %871 = fcmp oeq double %870, 0.000000e+00
  br i1 %871, label %872, label %969

872:                                              ; preds = %859
  %873 = load ptr, ptr %28, align 8, !tbaa !5
  %874 = load i32, ptr %54, align 4, !tbaa !9
  %875 = load i32, ptr %70, align 4, !tbaa !9
  %876 = load i32, ptr %82, align 4, !tbaa !9
  %877 = mul nsw i32 %875, %876
  %878 = add nsw i32 %874, %877
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds double, ptr %873, i64 %879
  %881 = load double, ptr %880, align 8, !tbaa !11
  %882 = load double, ptr %78, align 8, !tbaa !11
  %883 = fdiv double %881, %882
  store double %883, ptr %47, align 8, !tbaa !11
  %884 = load double, ptr %47, align 8, !tbaa !11
  %885 = load double, ptr %72, align 8, !tbaa !11
  %886 = fmul double %885, %884
  store double %886, ptr %72, align 8, !tbaa !11
  %887 = load double, ptr %78, align 8, !tbaa !11
  %888 = load ptr, ptr %28, align 8, !tbaa !5
  %889 = load i32, ptr %54, align 4, !tbaa !9
  %890 = load i32, ptr %70, align 4, !tbaa !9
  %891 = load i32, ptr %82, align 4, !tbaa !9
  %892 = mul nsw i32 %890, %891
  %893 = add nsw i32 %889, %892
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds double, ptr %888, i64 %894
  store double %887, ptr %895, align 8, !tbaa !11
  %896 = load double, ptr %72, align 8, !tbaa !11
  %897 = fdiv double 1.000000e+00, %896
  store double %897, ptr %57, align 8, !tbaa !11
  %898 = load i32, ptr %70, align 4, !tbaa !9
  %899 = sub nsw i32 %898, 1
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds [32 x double], ptr %52, i64 0, i64 %900
  %902 = load double, ptr %901, align 8, !tbaa !11
  %903 = load double, ptr %57, align 8, !tbaa !11
  %904 = fmul double %902, %903
  %905 = load double, ptr %74, align 8, !tbaa !11
  %906 = fcmp ole double %904, %905
  br i1 %906, label %907, label %926

907:                                              ; preds = %872
  %908 = load double, ptr %57, align 8, !tbaa !11
  %909 = load i32, ptr %70, align 4, !tbaa !9
  %910 = sub nsw i32 %909, 1
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds [32 x double], ptr %52, i64 0, i64 %911
  %913 = load double, ptr %912, align 8, !tbaa !11
  %914 = fmul double %913, %908
  store double %914, ptr %912, align 8, !tbaa !11
  %915 = load i32, ptr %65, align 4, !tbaa !9
  %916 = load i32, ptr %64, align 4, !tbaa !9
  %917 = sub nsw i32 %915, %916
  store i32 %917, ptr %39, align 4, !tbaa !9
  %918 = load ptr, ptr %24, align 8, !tbaa !5
  %919 = load i32, ptr %64, align 4, !tbaa !9
  %920 = load i32, ptr %84, align 4, !tbaa !9
  %921 = load i32, ptr %33, align 4, !tbaa !9
  %922 = mul nsw i32 %920, %921
  %923 = add nsw i32 %919, %922
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds double, ptr %918, i64 %924
  call void @dscal_(ptr noundef %39, ptr noundef %57, ptr noundef %925, ptr noundef @c__1)
  store double 1.000000e+00, ptr %72, align 8, !tbaa !11
  br label %968

926:                                              ; preds = %872
  %927 = load ptr, ptr %26, align 8, !tbaa !5
  %928 = load i32, ptr %84, align 4, !tbaa !9
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds double, ptr %927, i64 %929
  store double 0.000000e+00, ptr %930, align 8, !tbaa !11
  %931 = load ptr, ptr %20, align 8, !tbaa !5
  %932 = load i32, ptr %931, align 4, !tbaa !9
  store i32 %932, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %933

933:                                              ; preds = %946, %926
  %934 = load i32, ptr %69, align 4, !tbaa !9
  %935 = load i32, ptr %39, align 4, !tbaa !9
  %936 = icmp sle i32 %934, %935
  br i1 %936, label %937, label %949

937:                                              ; preds = %933
  %938 = load ptr, ptr %24, align 8, !tbaa !5
  %939 = load i32, ptr %69, align 4, !tbaa !9
  %940 = load i32, ptr %70, align 4, !tbaa !9
  %941 = load i32, ptr %33, align 4, !tbaa !9
  %942 = mul nsw i32 %940, %941
  %943 = add nsw i32 %939, %942
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds double, ptr %938, i64 %944
  store double 0.000000e+00, ptr %945, align 8, !tbaa !11
  br label %946

946:                                              ; preds = %937
  %947 = load i32, ptr %69, align 4, !tbaa !9
  %948 = add nsw i32 %947, 1
  store i32 %948, ptr %69, align 4, !tbaa !9
  br label %933, !llvm.loop !24

949:                                              ; preds = %933
  %950 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %950, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %951

951:                                              ; preds = %964, %949
  %952 = load i32, ptr %69, align 4, !tbaa !9
  %953 = load i32, ptr %39, align 4, !tbaa !9
  %954 = icmp sle i32 %952, %953
  br i1 %954, label %955, label %967

955:                                              ; preds = %951
  %956 = load ptr, ptr %28, align 8, !tbaa !5
  %957 = load i32, ptr %69, align 4, !tbaa !9
  %958 = load i32, ptr %70, align 4, !tbaa !9
  %959 = load i32, ptr %82, align 4, !tbaa !9
  %960 = mul nsw i32 %958, %959
  %961 = add nsw i32 %957, %960
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds double, ptr %956, i64 %962
  store double 1.000000e+00, ptr %963, align 8, !tbaa !11
  br label %964

964:                                              ; preds = %955
  %965 = load i32, ptr %69, align 4, !tbaa !9
  %966 = add nsw i32 %965, 1
  store i32 %966, ptr %69, align 4, !tbaa !9
  br label %951, !llvm.loop !25

967:                                              ; preds = %951
  store double 1.000000e+00, ptr %72, align 8, !tbaa !11
  br label %968

968:                                              ; preds = %967, %907
  br label %969

969:                                              ; preds = %968, %859
  br label %970

970:                                              ; preds = %969, %858
  %971 = load ptr, ptr %28, align 8, !tbaa !5
  %972 = load i32, ptr %54, align 4, !tbaa !9
  %973 = load i32, ptr %70, align 4, !tbaa !9
  %974 = load i32, ptr %82, align 4, !tbaa !9
  %975 = mul nsw i32 %973, %974
  %976 = add nsw i32 %972, %975
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds double, ptr %971, i64 %977
  %979 = load double, ptr %978, align 8, !tbaa !11
  %980 = load double, ptr %72, align 8, !tbaa !11
  %981 = fmul double %980, %979
  store double %981, ptr %72, align 8, !tbaa !11
  %982 = load double, ptr %72, align 8, !tbaa !11
  %983 = load ptr, ptr %28, align 8, !tbaa !5
  %984 = load i32, ptr %54, align 4, !tbaa !9
  %985 = load i32, ptr %70, align 4, !tbaa !9
  %986 = load i32, ptr %82, align 4, !tbaa !9
  %987 = mul nsw i32 %985, %986
  %988 = add nsw i32 %984, %987
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds double, ptr %983, i64 %989
  store double %982, ptr %990, align 8, !tbaa !11
  br label %991

991:                                              ; preds = %970
  %992 = load i32, ptr %70, align 4, !tbaa !9
  %993 = add nsw i32 %992, 1
  store i32 %993, ptr %70, align 4, !tbaa !9
  br label %711, !llvm.loop !26

994:                                              ; preds = %711
  %995 = load i32, ptr %76, align 4, !tbaa !9
  %996 = icmp ne i32 %995, 0
  br i1 %996, label %997, label %1008

997:                                              ; preds = %994
  %998 = load i32, ptr %62, align 4, !tbaa !9
  %999 = icmp ne i32 %998, 0
  br i1 %999, label %1000, label %1003

1000:                                             ; preds = %997
  %1001 = load i32, ptr %54, align 4, !tbaa !9
  %1002 = sub nsw i32 %1001, 1
  store i32 %1002, ptr %75, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  store i32 -1, ptr %45, align 4, !tbaa !9
  br label %1007

1003:                                             ; preds = %997
  %1004 = load i32, ptr %54, align 4, !tbaa !9
  %1005 = add nsw i32 %1004, 1
  store i32 %1005, ptr %75, align 4, !tbaa !9
  %1006 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %1006, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %1007

1007:                                             ; preds = %1003, %1000
  br label %1019

1008:                                             ; preds = %994
  %1009 = load i32, ptr %62, align 4, !tbaa !9
  %1010 = icmp ne i32 %1009, 0
  br i1 %1010, label %1011, label %1015

1011:                                             ; preds = %1008
  %1012 = load i32, ptr %54, align 4, !tbaa !9
  %1013 = add nsw i32 %1012, 1
  store i32 %1013, ptr %75, align 4, !tbaa !9
  %1014 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %1014, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %45, align 4, !tbaa !9
  br label %1018

1015:                                             ; preds = %1008
  %1016 = load i32, ptr %54, align 4, !tbaa !9
  %1017 = sub nsw i32 %1016, 1
  store i32 %1017, ptr %75, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  store i32 -1, ptr %45, align 4, !tbaa !9
  br label %1018

1018:                                             ; preds = %1015, %1011
  br label %1019

1019:                                             ; preds = %1018, %1007
  %1020 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %1020, ptr %38, align 4, !tbaa !9
  %1021 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %1021, ptr %39, align 4, !tbaa !9
  %1022 = load i32, ptr %75, align 4, !tbaa !9
  store i32 %1022, ptr %53, align 4, !tbaa !9
  br label %1023

1023:                                             ; preds = %1319, %1019
  %1024 = load i32, ptr %39, align 4, !tbaa !9
  %1025 = icmp slt i32 %1024, 0
  br i1 %1025, label %1026, label %1031

1026:                                             ; preds = %1023
  %1027 = load i32, ptr %53, align 4, !tbaa !9
  %1028 = load i32, ptr %38, align 4, !tbaa !9
  %1029 = icmp sge i32 %1027, %1028
  %1030 = zext i1 %1029 to i32
  br label %1036

1031:                                             ; preds = %1023
  %1032 = load i32, ptr %53, align 4, !tbaa !9
  %1033 = load i32, ptr %38, align 4, !tbaa !9
  %1034 = icmp sle i32 %1032, %1033
  %1035 = zext i1 %1034 to i32
  br label %1036

1036:                                             ; preds = %1031, %1026
  %1037 = phi i32 [ %1030, %1026 ], [ %1035, %1031 ]
  %1038 = icmp ne i32 %1037, 0
  br i1 %1038, label %1039, label %1323

1039:                                             ; preds = %1036
  %1040 = load i32, ptr %53, align 4, !tbaa !9
  %1041 = sub nsw i32 %1040, 1
  %1042 = load i32, ptr %68, align 4, !tbaa !9
  %1043 = mul nsw i32 %1041, %1042
  %1044 = add nsw i32 %1043, 1
  store i32 %1044, ptr %61, align 4, !tbaa !9
  %1045 = load i32, ptr %53, align 4, !tbaa !9
  %1046 = load i32, ptr %68, align 4, !tbaa !9
  %1047 = mul nsw i32 %1045, %1046
  store i32 %1047, ptr %40, align 4, !tbaa !9
  %1048 = load i32, ptr %40, align 4, !tbaa !9
  %1049 = load ptr, ptr %20, align 8, !tbaa !5
  %1050 = load i32, ptr %1049, align 4, !tbaa !9
  %1051 = icmp sle i32 %1048, %1050
  br i1 %1051, label %1052, label %1054

1052:                                             ; preds = %1039
  %1053 = load i32, ptr %40, align 4, !tbaa !9
  br label %1057

1054:                                             ; preds = %1039
  %1055 = load ptr, ptr %20, align 8, !tbaa !5
  %1056 = load i32, ptr %1055, align 4, !tbaa !9
  br label %1057

1057:                                             ; preds = %1054, %1052
  %1058 = phi i32 [ %1053, %1052 ], [ %1056, %1054 ]
  %1059 = add nsw i32 %1058, 1
  store i32 %1059, ptr %63, align 4, !tbaa !9
  %1060 = load i32, ptr %67, align 4, !tbaa !9
  %1061 = load i32, ptr %66, align 4, !tbaa !9
  %1062 = sub nsw i32 %1060, %1061
  store i32 %1062, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %1063

1063:                                             ; preds = %1238, %1057
  %1064 = load i32, ptr %70, align 4, !tbaa !9
  %1065 = load i32, ptr %40, align 4, !tbaa !9
  %1066 = icmp sle i32 %1064, %1065
  br i1 %1066, label %1067, label %1241

1067:                                             ; preds = %1063
  %1068 = load i32, ptr %66, align 4, !tbaa !9
  %1069 = load i32, ptr %70, align 4, !tbaa !9
  %1070 = add nsw i32 %1068, %1069
  %1071 = sub nsw i32 %1070, 1
  store i32 %1071, ptr %84, align 4, !tbaa !9
  %1072 = load ptr, ptr %28, align 8, !tbaa !5
  %1073 = load i32, ptr %53, align 4, !tbaa !9
  %1074 = load i32, ptr %70, align 4, !tbaa !9
  %1075 = load i32, ptr %82, align 4, !tbaa !9
  %1076 = mul nsw i32 %1074, %1075
  %1077 = add nsw i32 %1073, %1076
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds double, ptr %1072, i64 %1078
  %1080 = load double, ptr %1079, align 8, !tbaa !11
  store double %1080, ptr %43, align 8, !tbaa !11
  %1081 = load ptr, ptr %28, align 8, !tbaa !5
  %1082 = load i32, ptr %54, align 4, !tbaa !9
  %1083 = load i32, ptr %70, align 4, !tbaa !9
  %1084 = load i32, ptr %82, align 4, !tbaa !9
  %1085 = mul nsw i32 %1083, %1084
  %1086 = add nsw i32 %1082, %1085
  %1087 = sext i32 %1086 to i64
  %1088 = getelementptr inbounds double, ptr %1081, i64 %1087
  %1089 = load double, ptr %1088, align 8, !tbaa !11
  store double %1089, ptr %44, align 8, !tbaa !11
  %1090 = load double, ptr %43, align 8, !tbaa !11
  %1091 = load double, ptr %44, align 8, !tbaa !11
  %1092 = fcmp ole double %1090, %1091
  br i1 %1092, label %1093, label %1095

1093:                                             ; preds = %1067
  %1094 = load double, ptr %43, align 8, !tbaa !11
  br label %1097

1095:                                             ; preds = %1067
  %1096 = load double, ptr %44, align 8, !tbaa !11
  br label %1097

1097:                                             ; preds = %1095, %1093
  %1098 = phi double [ %1094, %1093 ], [ %1096, %1095 ]
  store double %1098, ptr %73, align 8, !tbaa !11
  %1099 = load i32, ptr %63, align 4, !tbaa !9
  %1100 = load i32, ptr %61, align 4, !tbaa !9
  %1101 = sub nsw i32 %1099, %1100
  store i32 %1101, ptr %41, align 4, !tbaa !9
  %1102 = load ptr, ptr %24, align 8, !tbaa !5
  %1103 = load i32, ptr %61, align 4, !tbaa !9
  %1104 = load i32, ptr %84, align 4, !tbaa !9
  %1105 = load i32, ptr %33, align 4, !tbaa !9
  %1106 = mul nsw i32 %1104, %1105
  %1107 = add nsw i32 %1103, %1106
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds double, ptr %1102, i64 %1108
  %1110 = load ptr, ptr %25, align 8, !tbaa !5
  %1111 = getelementptr inbounds [64 x double], ptr %56, i64 0, i64 0
  %1112 = call double @dlange_(ptr noundef @.str.11, ptr noundef %41, ptr noundef @c__1, ptr noundef %1109, ptr noundef %1110, ptr noundef %1111)
  store double %1112, ptr %49, align 8, !tbaa !11
  %1113 = load double, ptr %73, align 8, !tbaa !11
  %1114 = load ptr, ptr %28, align 8, !tbaa !5
  %1115 = load i32, ptr %53, align 4, !tbaa !9
  %1116 = load i32, ptr %70, align 4, !tbaa !9
  %1117 = load i32, ptr %82, align 4, !tbaa !9
  %1118 = mul nsw i32 %1116, %1117
  %1119 = add nsw i32 %1115, %1118
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds double, ptr %1114, i64 %1120
  %1122 = load double, ptr %1121, align 8, !tbaa !11
  %1123 = fdiv double %1113, %1122
  %1124 = load double, ptr %49, align 8, !tbaa !11
  %1125 = fmul double %1124, %1123
  store double %1125, ptr %49, align 8, !tbaa !11
  %1126 = load double, ptr %73, align 8, !tbaa !11
  %1127 = load ptr, ptr %28, align 8, !tbaa !5
  %1128 = load i32, ptr %54, align 4, !tbaa !9
  %1129 = load i32, ptr %70, align 4, !tbaa !9
  %1130 = load i32, ptr %82, align 4, !tbaa !9
  %1131 = mul nsw i32 %1129, %1130
  %1132 = add nsw i32 %1128, %1131
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds double, ptr %1127, i64 %1133
  %1135 = load double, ptr %1134, align 8, !tbaa !11
  %1136 = fdiv double %1126, %1135
  %1137 = load i32, ptr %70, align 4, !tbaa !9
  %1138 = sub nsw i32 %1137, 1
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds [32 x double], ptr %52, i64 0, i64 %1139
  %1141 = load double, ptr %1140, align 8, !tbaa !11
  %1142 = fmul double %1141, %1136
  store double %1142, ptr %1140, align 8, !tbaa !11
  %1143 = load ptr, ptr %28, align 8, !tbaa !5
  %1144 = load i32, ptr %50, align 4, !tbaa !9
  %1145 = load i32, ptr %53, align 4, !tbaa !9
  %1146 = add nsw i32 %1144, %1145
  %1147 = load i32, ptr %54, align 4, !tbaa !9
  %1148 = sub nsw i32 %1147, 1
  %1149 = load i32, ptr %81, align 4, !tbaa !9
  %1150 = mul nsw i32 %1148, %1149
  %1151 = add nsw i32 %1146, %1150
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds double, ptr %1143, i64 %1152
  %1154 = load double, ptr %1153, align 8, !tbaa !11
  store double %1154, ptr %48, align 8, !tbaa !11
  %1155 = load i32, ptr %70, align 4, !tbaa !9
  %1156 = sub nsw i32 %1155, 1
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds [32 x double], ptr %52, i64 0, i64 %1157
  %1159 = call double @dlarmm_(ptr noundef %48, ptr noundef %1158, ptr noundef %49)
  store double %1159, ptr %72, align 8, !tbaa !11
  %1160 = load double, ptr %73, align 8, !tbaa !11
  %1161 = load ptr, ptr %28, align 8, !tbaa !5
  %1162 = load i32, ptr %53, align 4, !tbaa !9
  %1163 = load i32, ptr %70, align 4, !tbaa !9
  %1164 = load i32, ptr %82, align 4, !tbaa !9
  %1165 = mul nsw i32 %1163, %1164
  %1166 = add nsw i32 %1162, %1165
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds double, ptr %1161, i64 %1167
  %1169 = load double, ptr %1168, align 8, !tbaa !11
  %1170 = fdiv double %1160, %1169
  %1171 = load double, ptr %72, align 8, !tbaa !11
  %1172 = fmul double %1170, %1171
  store double %1172, ptr %47, align 8, !tbaa !11
  %1173 = load double, ptr %47, align 8, !tbaa !11
  %1174 = fcmp une double %1173, 1.000000e+00
  br i1 %1174, label %1175, label %1198

1175:                                             ; preds = %1097
  %1176 = load i32, ptr %63, align 4, !tbaa !9
  %1177 = load i32, ptr %61, align 4, !tbaa !9
  %1178 = sub nsw i32 %1176, %1177
  store i32 %1178, ptr %41, align 4, !tbaa !9
  %1179 = load ptr, ptr %24, align 8, !tbaa !5
  %1180 = load i32, ptr %61, align 4, !tbaa !9
  %1181 = load i32, ptr %84, align 4, !tbaa !9
  %1182 = load i32, ptr %33, align 4, !tbaa !9
  %1183 = mul nsw i32 %1181, %1182
  %1184 = add nsw i32 %1180, %1183
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds double, ptr %1179, i64 %1185
  call void @dscal_(ptr noundef %41, ptr noundef %47, ptr noundef %1186, ptr noundef @c__1)
  %1187 = load double, ptr %73, align 8, !tbaa !11
  %1188 = load double, ptr %72, align 8, !tbaa !11
  %1189 = fmul double %1187, %1188
  %1190 = load ptr, ptr %28, align 8, !tbaa !5
  %1191 = load i32, ptr %53, align 4, !tbaa !9
  %1192 = load i32, ptr %70, align 4, !tbaa !9
  %1193 = load i32, ptr %82, align 4, !tbaa !9
  %1194 = mul nsw i32 %1192, %1193
  %1195 = add nsw i32 %1191, %1194
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds double, ptr %1190, i64 %1196
  store double %1189, ptr %1197, align 8, !tbaa !11
  br label %1198

1198:                                             ; preds = %1175, %1097
  %1199 = load double, ptr %73, align 8, !tbaa !11
  %1200 = load ptr, ptr %28, align 8, !tbaa !5
  %1201 = load i32, ptr %54, align 4, !tbaa !9
  %1202 = load i32, ptr %70, align 4, !tbaa !9
  %1203 = load i32, ptr %82, align 4, !tbaa !9
  %1204 = mul nsw i32 %1202, %1203
  %1205 = add nsw i32 %1201, %1204
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds double, ptr %1200, i64 %1206
  %1208 = load double, ptr %1207, align 8, !tbaa !11
  %1209 = fdiv double %1199, %1208
  %1210 = load double, ptr %72, align 8, !tbaa !11
  %1211 = fmul double %1209, %1210
  store double %1211, ptr %47, align 8, !tbaa !11
  %1212 = load double, ptr %47, align 8, !tbaa !11
  %1213 = fcmp une double %1212, 1.000000e+00
  br i1 %1213, label %1214, label %1237

1214:                                             ; preds = %1198
  %1215 = load i32, ptr %65, align 4, !tbaa !9
  %1216 = load i32, ptr %64, align 4, !tbaa !9
  %1217 = sub nsw i32 %1215, %1216
  store i32 %1217, ptr %41, align 4, !tbaa !9
  %1218 = load ptr, ptr %24, align 8, !tbaa !5
  %1219 = load i32, ptr %64, align 4, !tbaa !9
  %1220 = load i32, ptr %84, align 4, !tbaa !9
  %1221 = load i32, ptr %33, align 4, !tbaa !9
  %1222 = mul nsw i32 %1220, %1221
  %1223 = add nsw i32 %1219, %1222
  %1224 = sext i32 %1223 to i64
  %1225 = getelementptr inbounds double, ptr %1218, i64 %1224
  call void @dscal_(ptr noundef %41, ptr noundef %47, ptr noundef %1225, ptr noundef @c__1)
  %1226 = load double, ptr %73, align 8, !tbaa !11
  %1227 = load double, ptr %72, align 8, !tbaa !11
  %1228 = fmul double %1226, %1227
  %1229 = load ptr, ptr %28, align 8, !tbaa !5
  %1230 = load i32, ptr %54, align 4, !tbaa !9
  %1231 = load i32, ptr %70, align 4, !tbaa !9
  %1232 = load i32, ptr %82, align 4, !tbaa !9
  %1233 = mul nsw i32 %1231, %1232
  %1234 = add nsw i32 %1230, %1233
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds double, ptr %1229, i64 %1235
  store double %1228, ptr %1236, align 8, !tbaa !11
  br label %1237

1237:                                             ; preds = %1214, %1198
  br label %1238

1238:                                             ; preds = %1237
  %1239 = load i32, ptr %70, align 4, !tbaa !9
  %1240 = add nsw i32 %1239, 1
  store i32 %1240, ptr %70, align 4, !tbaa !9
  br label %1063, !llvm.loop !27

1241:                                             ; preds = %1063
  %1242 = load i32, ptr %76, align 4, !tbaa !9
  %1243 = icmp ne i32 %1242, 0
  br i1 %1243, label %1244, label %1281

1244:                                             ; preds = %1241
  %1245 = load i32, ptr %63, align 4, !tbaa !9
  %1246 = load i32, ptr %61, align 4, !tbaa !9
  %1247 = sub nsw i32 %1245, %1246
  store i32 %1247, ptr %40, align 4, !tbaa !9
  %1248 = load i32, ptr %67, align 4, !tbaa !9
  %1249 = load i32, ptr %66, align 4, !tbaa !9
  %1250 = sub nsw i32 %1248, %1249
  store i32 %1250, ptr %41, align 4, !tbaa !9
  %1251 = load i32, ptr %65, align 4, !tbaa !9
  %1252 = load i32, ptr %64, align 4, !tbaa !9
  %1253 = sub nsw i32 %1251, %1252
  store i32 %1253, ptr %42, align 4, !tbaa !9
  %1254 = load ptr, ptr %22, align 8, !tbaa !5
  %1255 = load i32, ptr %61, align 4, !tbaa !9
  %1256 = load i32, ptr %64, align 4, !tbaa !9
  %1257 = load i32, ptr %31, align 4, !tbaa !9
  %1258 = mul nsw i32 %1256, %1257
  %1259 = add nsw i32 %1255, %1258
  %1260 = sext i32 %1259 to i64
  %1261 = getelementptr inbounds double, ptr %1254, i64 %1260
  %1262 = load ptr, ptr %23, align 8, !tbaa !5
  %1263 = load ptr, ptr %24, align 8, !tbaa !5
  %1264 = load i32, ptr %64, align 4, !tbaa !9
  %1265 = load i32, ptr %66, align 4, !tbaa !9
  %1266 = load i32, ptr %33, align 4, !tbaa !9
  %1267 = mul nsw i32 %1265, %1266
  %1268 = add nsw i32 %1264, %1267
  %1269 = sext i32 %1268 to i64
  %1270 = getelementptr inbounds double, ptr %1263, i64 %1269
  %1271 = load ptr, ptr %25, align 8, !tbaa !5
  %1272 = load ptr, ptr %24, align 8, !tbaa !5
  %1273 = load i32, ptr %61, align 4, !tbaa !9
  %1274 = load i32, ptr %66, align 4, !tbaa !9
  %1275 = load i32, ptr %33, align 4, !tbaa !9
  %1276 = mul nsw i32 %1274, %1275
  %1277 = add nsw i32 %1273, %1276
  %1278 = sext i32 %1277 to i64
  %1279 = getelementptr inbounds double, ptr %1272, i64 %1278
  %1280 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef %40, ptr noundef %41, ptr noundef %42, ptr noundef @c_b35, ptr noundef %1261, ptr noundef %1262, ptr noundef %1270, ptr noundef %1271, ptr noundef @c_b36, ptr noundef %1279, ptr noundef %1280)
  br label %1318

1281:                                             ; preds = %1241
  %1282 = load i32, ptr %63, align 4, !tbaa !9
  %1283 = load i32, ptr %61, align 4, !tbaa !9
  %1284 = sub nsw i32 %1282, %1283
  store i32 %1284, ptr %40, align 4, !tbaa !9
  %1285 = load i32, ptr %67, align 4, !tbaa !9
  %1286 = load i32, ptr %66, align 4, !tbaa !9
  %1287 = sub nsw i32 %1285, %1286
  store i32 %1287, ptr %41, align 4, !tbaa !9
  %1288 = load i32, ptr %65, align 4, !tbaa !9
  %1289 = load i32, ptr %64, align 4, !tbaa !9
  %1290 = sub nsw i32 %1288, %1289
  store i32 %1290, ptr %42, align 4, !tbaa !9
  %1291 = load ptr, ptr %22, align 8, !tbaa !5
  %1292 = load i32, ptr %64, align 4, !tbaa !9
  %1293 = load i32, ptr %61, align 4, !tbaa !9
  %1294 = load i32, ptr %31, align 4, !tbaa !9
  %1295 = mul nsw i32 %1293, %1294
  %1296 = add nsw i32 %1292, %1295
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds double, ptr %1291, i64 %1297
  %1299 = load ptr, ptr %23, align 8, !tbaa !5
  %1300 = load ptr, ptr %24, align 8, !tbaa !5
  %1301 = load i32, ptr %64, align 4, !tbaa !9
  %1302 = load i32, ptr %66, align 4, !tbaa !9
  %1303 = load i32, ptr %33, align 4, !tbaa !9
  %1304 = mul nsw i32 %1302, %1303
  %1305 = add nsw i32 %1301, %1304
  %1306 = sext i32 %1305 to i64
  %1307 = getelementptr inbounds double, ptr %1300, i64 %1306
  %1308 = load ptr, ptr %25, align 8, !tbaa !5
  %1309 = load ptr, ptr %24, align 8, !tbaa !5
  %1310 = load i32, ptr %61, align 4, !tbaa !9
  %1311 = load i32, ptr %66, align 4, !tbaa !9
  %1312 = load i32, ptr %33, align 4, !tbaa !9
  %1313 = mul nsw i32 %1311, %1312
  %1314 = add nsw i32 %1310, %1313
  %1315 = sext i32 %1314 to i64
  %1316 = getelementptr inbounds double, ptr %1309, i64 %1315
  %1317 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef %40, ptr noundef %41, ptr noundef %42, ptr noundef @c_b35, ptr noundef %1298, ptr noundef %1299, ptr noundef %1307, ptr noundef %1308, ptr noundef @c_b36, ptr noundef %1316, ptr noundef %1317)
  br label %1318

1318:                                             ; preds = %1281, %1244
  br label %1319

1319:                                             ; preds = %1318
  %1320 = load i32, ptr %39, align 4, !tbaa !9
  %1321 = load i32, ptr %53, align 4, !tbaa !9
  %1322 = add nsw i32 %1321, %1320
  store i32 %1322, ptr %53, align 4, !tbaa !9
  br label %1023, !llvm.loop !28

1323:                                             ; preds = %1036
  br label %1324

1324:                                             ; preds = %1323
  %1325 = load i32, ptr %37, align 4, !tbaa !9
  %1326 = load i32, ptr %54, align 4, !tbaa !9
  %1327 = add nsw i32 %1326, %1325
  store i32 %1327, ptr %54, align 4, !tbaa !9
  br label %671, !llvm.loop !29

1328:                                             ; preds = %684
  %1329 = load i32, ptr %67, align 4, !tbaa !9
  %1330 = load i32, ptr %66, align 4, !tbaa !9
  %1331 = sub nsw i32 %1329, %1330
  store i32 %1331, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %1332

1332:                                             ; preds = %1378, %1328
  %1333 = load i32, ptr %70, align 4, !tbaa !9
  %1334 = load i32, ptr %37, align 4, !tbaa !9
  %1335 = icmp sle i32 %1333, %1334
  br i1 %1335, label %1336, label %1381

1336:                                             ; preds = %1332
  %1337 = load i32, ptr %66, align 4, !tbaa !9
  %1338 = load i32, ptr %70, align 4, !tbaa !9
  %1339 = add nsw i32 %1337, %1338
  %1340 = sub nsw i32 %1339, 1
  store i32 %1340, ptr %84, align 4, !tbaa !9
  %1341 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %1341, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %1342

1342:                                             ; preds = %1374, %1336
  %1343 = load i32, ptr %53, align 4, !tbaa !9
  %1344 = load i32, ptr %36, align 4, !tbaa !9
  %1345 = icmp sle i32 %1343, %1344
  br i1 %1345, label %1346, label %1377

1346:                                             ; preds = %1342
  %1347 = load ptr, ptr %26, align 8, !tbaa !5
  %1348 = load i32, ptr %84, align 4, !tbaa !9
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds double, ptr %1347, i64 %1349
  %1351 = load double, ptr %1350, align 8, !tbaa !11
  store double %1351, ptr %43, align 8, !tbaa !11
  %1352 = load ptr, ptr %28, align 8, !tbaa !5
  %1353 = load i32, ptr %53, align 4, !tbaa !9
  %1354 = load i32, ptr %70, align 4, !tbaa !9
  %1355 = load i32, ptr %82, align 4, !tbaa !9
  %1356 = mul nsw i32 %1354, %1355
  %1357 = add nsw i32 %1353, %1356
  %1358 = sext i32 %1357 to i64
  %1359 = getelementptr inbounds double, ptr %1352, i64 %1358
  %1360 = load double, ptr %1359, align 8, !tbaa !11
  store double %1360, ptr %44, align 8, !tbaa !11
  %1361 = load double, ptr %43, align 8, !tbaa !11
  %1362 = load double, ptr %44, align 8, !tbaa !11
  %1363 = fcmp ole double %1361, %1362
  br i1 %1363, label %1364, label %1366

1364:                                             ; preds = %1346
  %1365 = load double, ptr %43, align 8, !tbaa !11
  br label %1368

1366:                                             ; preds = %1346
  %1367 = load double, ptr %44, align 8, !tbaa !11
  br label %1368

1368:                                             ; preds = %1366, %1364
  %1369 = phi double [ %1365, %1364 ], [ %1367, %1366 ]
  %1370 = load ptr, ptr %26, align 8, !tbaa !5
  %1371 = load i32, ptr %84, align 4, !tbaa !9
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds double, ptr %1370, i64 %1372
  store double %1369, ptr %1373, align 8, !tbaa !11
  br label %1374

1374:                                             ; preds = %1368
  %1375 = load i32, ptr %53, align 4, !tbaa !9
  %1376 = add nsw i32 %1375, 1
  store i32 %1376, ptr %53, align 4, !tbaa !9
  br label %1342, !llvm.loop !30

1377:                                             ; preds = %1342
  br label %1378

1378:                                             ; preds = %1377
  %1379 = load i32, ptr %70, align 4, !tbaa !9
  %1380 = add nsw i32 %1379, 1
  store i32 %1380, ptr %70, align 4, !tbaa !9
  br label %1332, !llvm.loop !31

1381:                                             ; preds = %1332
  %1382 = load i32, ptr %67, align 4, !tbaa !9
  %1383 = load i32, ptr %66, align 4, !tbaa !9
  %1384 = sub nsw i32 %1382, %1383
  store i32 %1384, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %1385

1385:                                             ; preds = %1469, %1381
  %1386 = load i32, ptr %70, align 4, !tbaa !9
  %1387 = load i32, ptr %37, align 4, !tbaa !9
  %1388 = icmp sle i32 %1386, %1387
  br i1 %1388, label %1389, label %1472

1389:                                             ; preds = %1385
  %1390 = load i32, ptr %66, align 4, !tbaa !9
  %1391 = load i32, ptr %70, align 4, !tbaa !9
  %1392 = add nsw i32 %1390, %1391
  %1393 = sub nsw i32 %1392, 1
  store i32 %1393, ptr %84, align 4, !tbaa !9
  %1394 = load ptr, ptr %26, align 8, !tbaa !5
  %1395 = load i32, ptr %84, align 4, !tbaa !9
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds double, ptr %1394, i64 %1396
  %1398 = load double, ptr %1397, align 8, !tbaa !11
  %1399 = fcmp une double %1398, 1.000000e+00
  br i1 %1399, label %1400, label %1468

1400:                                             ; preds = %1389
  %1401 = load ptr, ptr %26, align 8, !tbaa !5
  %1402 = load i32, ptr %84, align 4, !tbaa !9
  %1403 = sext i32 %1402 to i64
  %1404 = getelementptr inbounds double, ptr %1401, i64 %1403
  %1405 = load double, ptr %1404, align 8, !tbaa !11
  %1406 = fcmp une double %1405, 0.000000e+00
  br i1 %1406, label %1407, label %1468

1407:                                             ; preds = %1400
  %1408 = load i32, ptr %81, align 4, !tbaa !9
  store i32 %1408, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %1409

1409:                                             ; preds = %1464, %1407
  %1410 = load i32, ptr %53, align 4, !tbaa !9
  %1411 = load i32, ptr %36, align 4, !tbaa !9
  %1412 = icmp sle i32 %1410, %1411
  br i1 %1412, label %1413, label %1467

1413:                                             ; preds = %1409
  %1414 = load i32, ptr %53, align 4, !tbaa !9
  %1415 = sub nsw i32 %1414, 1
  %1416 = load i32, ptr %68, align 4, !tbaa !9
  %1417 = mul nsw i32 %1415, %1416
  %1418 = add nsw i32 %1417, 1
  store i32 %1418, ptr %61, align 4, !tbaa !9
  %1419 = load i32, ptr %53, align 4, !tbaa !9
  %1420 = load i32, ptr %68, align 4, !tbaa !9
  %1421 = mul nsw i32 %1419, %1420
  store i32 %1421, ptr %39, align 4, !tbaa !9
  %1422 = load i32, ptr %39, align 4, !tbaa !9
  %1423 = load ptr, ptr %20, align 8, !tbaa !5
  %1424 = load i32, ptr %1423, align 4, !tbaa !9
  %1425 = icmp sle i32 %1422, %1424
  br i1 %1425, label %1426, label %1428

1426:                                             ; preds = %1413
  %1427 = load i32, ptr %39, align 4, !tbaa !9
  br label %1431

1428:                                             ; preds = %1413
  %1429 = load ptr, ptr %20, align 8, !tbaa !5
  %1430 = load i32, ptr %1429, align 4, !tbaa !9
  br label %1431

1431:                                             ; preds = %1428, %1426
  %1432 = phi i32 [ %1427, %1426 ], [ %1430, %1428 ]
  %1433 = add nsw i32 %1432, 1
  store i32 %1433, ptr %63, align 4, !tbaa !9
  %1434 = load ptr, ptr %26, align 8, !tbaa !5
  %1435 = load i32, ptr %84, align 4, !tbaa !9
  %1436 = sext i32 %1435 to i64
  %1437 = getelementptr inbounds double, ptr %1434, i64 %1436
  %1438 = load double, ptr %1437, align 8, !tbaa !11
  %1439 = load ptr, ptr %28, align 8, !tbaa !5
  %1440 = load i32, ptr %53, align 4, !tbaa !9
  %1441 = load i32, ptr %70, align 4, !tbaa !9
  %1442 = load i32, ptr %82, align 4, !tbaa !9
  %1443 = mul nsw i32 %1441, %1442
  %1444 = add nsw i32 %1440, %1443
  %1445 = sext i32 %1444 to i64
  %1446 = getelementptr inbounds double, ptr %1439, i64 %1445
  %1447 = load double, ptr %1446, align 8, !tbaa !11
  %1448 = fdiv double %1438, %1447
  store double %1448, ptr %47, align 8, !tbaa !11
  %1449 = load double, ptr %47, align 8, !tbaa !11
  %1450 = fcmp une double %1449, 1.000000e+00
  br i1 %1450, label %1451, label %1463

1451:                                             ; preds = %1431
  %1452 = load i32, ptr %63, align 4, !tbaa !9
  %1453 = load i32, ptr %61, align 4, !tbaa !9
  %1454 = sub nsw i32 %1452, %1453
  store i32 %1454, ptr %39, align 4, !tbaa !9
  %1455 = load ptr, ptr %24, align 8, !tbaa !5
  %1456 = load i32, ptr %61, align 4, !tbaa !9
  %1457 = load i32, ptr %84, align 4, !tbaa !9
  %1458 = load i32, ptr %33, align 4, !tbaa !9
  %1459 = mul nsw i32 %1457, %1458
  %1460 = add nsw i32 %1456, %1459
  %1461 = sext i32 %1460 to i64
  %1462 = getelementptr inbounds double, ptr %1455, i64 %1461
  call void @dscal_(ptr noundef %39, ptr noundef %47, ptr noundef %1462, ptr noundef @c__1)
  br label %1463

1463:                                             ; preds = %1451, %1431
  br label %1464

1464:                                             ; preds = %1463
  %1465 = load i32, ptr %53, align 4, !tbaa !9
  %1466 = add nsw i32 %1465, 1
  store i32 %1466, ptr %53, align 4, !tbaa !9
  br label %1409, !llvm.loop !32

1467:                                             ; preds = %1409
  br label %1468

1468:                                             ; preds = %1467, %1400, %1389
  br label %1469

1469:                                             ; preds = %1468
  %1470 = load i32, ptr %70, align 4, !tbaa !9
  %1471 = add nsw i32 %1470, 1
  store i32 %1471, ptr %70, align 4, !tbaa !9
  br label %1385, !llvm.loop !33

1472:                                             ; preds = %1385
  br label %1473

1473:                                             ; preds = %1472
  %1474 = load i32, ptr %55, align 4, !tbaa !9
  %1475 = add nsw i32 %1474, 1
  store i32 %1475, ptr %55, align 4, !tbaa !9
  br label %596, !llvm.loop !34

1476:                                             ; preds = %596
  store i32 1, ptr %85, align 4
  br label %1477

1477:                                             ; preds = %1476, %593, %411, %350, %318, %310
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 512, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 256, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 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 i32 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

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

declare double @dlamch_(ptr noundef) #2

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

declare double @dlange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare double @dlarmm_(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 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [1 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b35 = external hidden global double, align 8
@c_b36 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @dlatrs3_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr nocapture noundef readonly %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr nocapture noundef %12, ptr nocapture noundef readonly %13, ptr noundef %14) local_unnamed_addr #0 {
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca [32 x double], align 16
  %27 = alloca [64 x double], align 16
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  %30 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %30, -1
  %31 = sext i32 %narrow to i64
  %32 = getelementptr inbounds double, ptr %6, i64 %31
  %33 = load i32, ptr %9, align 4, !tbaa !5
  %narrow627 = xor i32 %33, -1
  %34 = sext i32 %narrow627 to i64
  %35 = getelementptr inbounds double, ptr %8, i64 %34
  %36 = getelementptr inbounds i8, ptr %10, i64 -8
  %37 = getelementptr inbounds i8, ptr %12, i64 -8
  store i32 0, ptr %14, align 4, !tbaa !5
  %38 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %39 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %40 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #5
  %41 = load i32, ptr %13, align 4, !tbaa !5
  %42 = icmp eq i32 %41, -1
  %43 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef %4, ptr noundef %4, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 0) #5
  %44 = tail call i32 @llvm.smax.i32(i32 %43, i32 8)
  %45 = tail call i32 @llvm.umin.i32(i32 %44, i32 64)
  %46 = load i32, ptr %4, align 4, !tbaa !5
  %47 = add nsw i32 %45, -1
  %48 = add i32 %47, %46
  %49 = sdiv i32 %48, %45
  %50 = tail call i32 @llvm.smax.i32(i32 %49, i32 1)
  store i32 1, ptr %16, align 4, !tbaa !5
  %51 = load i32, ptr %5, align 4, !tbaa !5
  %52 = add nsw i32 %51, 31
  %53 = sdiv i32 %52, 32
  %54 = icmp slt i32 %51, 33
  %55 = select i1 %54, i32 1, i32 %53
  %spec.select = select i1 %54, i32 %51, i32 32
  %56 = tail call i32 @llvm.smax.i32(i32 %50, i32 %spec.select)
  %57 = mul nuw nsw i32 %56, %50
  %58 = add nuw i32 %56, %50
  %59 = mul i32 %58, %50
  %60 = sitofp i32 %59 to double
  store double %60, ptr %12, align 8, !tbaa !9
  %.not = icmp eq i32 %38, 0
  br i1 %.not, label %61, label %63

61:                                               ; preds = %15
  %62 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #5
  %.not590 = icmp eq i32 %62, 0
  br i1 %.not590, label %.thread.sink.split, label %63

63:                                               ; preds = %61, %15
  %.not591 = icmp eq i32 %39, 0
  br i1 %.not591, label %64, label %68

64:                                               ; preds = %63
  %65 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #5
  %.not592 = icmp eq i32 %65, 0
  br i1 %.not592, label %66, label %68

66:                                               ; preds = %64
  %67 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #5
  %.not593 = icmp eq i32 %67, 0
  br i1 %.not593, label %.thread.sink.split, label %68

68:                                               ; preds = %66, %64, %63
  %.not594 = icmp eq i32 %40, 0
  br i1 %.not594, label %69, label %71

69:                                               ; preds = %68
  %70 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not595 = icmp eq i32 %70, 0
  br i1 %.not595, label %.thread.sink.split, label %71

71:                                               ; preds = %69, %68
  %72 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.7) #5
  %.not596 = icmp eq i32 %72, 0
  br i1 %.not596, label %73, label %75

73:                                               ; preds = %71
  %74 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #5
  %.not597 = icmp eq i32 %74, 0
  br i1 %.not597, label %.thread.sink.split, label %75

75:                                               ; preds = %73, %71
  %76 = load i32, ptr %4, align 4, !tbaa !5
  %77 = icmp slt i32 %76, 0
  br i1 %77, label %.thread.sink.split, label %78

78:                                               ; preds = %75
  %79 = load i32, ptr %5, align 4, !tbaa !5
  %80 = icmp slt i32 %79, 0
  br i1 %80, label %.thread.sink.split, label %81

81:                                               ; preds = %78
  %82 = load i32, ptr %7, align 4, !tbaa !5
  %spec.select629 = tail call i32 @llvm.umax.i32(i32 %76, i32 1)
  %83 = icmp slt i32 %82, %spec.select629
  br i1 %83, label %.thread.sink.split, label %84

84:                                               ; preds = %81
  %85 = load i32, ptr %9, align 4, !tbaa !5
  %86 = icmp slt i32 %85, %spec.select629
  br i1 %86, label %.thread.sink.split, label %87

87:                                               ; preds = %84
  br i1 %42, label %93, label %88

88:                                               ; preds = %87
  %89 = load i32, ptr %13, align 4, !tbaa !5
  %90 = sitofp i32 %89 to double
  %91 = load double, ptr %12, align 8, !tbaa !9
  %92 = fcmp ogt double %91, %90
  br i1 %92, label %.thread.sink.split, label %.thread644

93:                                               ; preds = %87
  %.pr = load i32, ptr %14, align 4, !tbaa !5
  %.not598 = icmp eq i32 %.pr, 0
  br i1 %.not598, label %.loopexit, label %.thread

.thread644:                                       ; preds = %88
  %.pr645 = load i32, ptr %14, align 4, !tbaa !5
  %.not598646 = icmp eq i32 %.pr645, 0
  br i1 %.not598646, label %97, label %.thread

.thread.sink.split:                               ; preds = %88, %84, %81, %78, %75, %73, %69, %66, %61
  %.sink = phi i32 [ -1, %61 ], [ -2, %66 ], [ -3, %69 ], [ -4, %73 ], [ -5, %75 ], [ -6, %78 ], [ -8, %81 ], [ -10, %84 ], [ -14, %88 ]
  store i32 %.sink, ptr %14, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %.thread644, %93
  %94 = phi i32 [ %.pr, %93 ], [ %.pr645, %.thread644 ], [ %.sink, %.thread.sink.split ]
  %95 = sub nsw i32 0, %94
  store i32 %95, ptr %16, align 4, !tbaa !5
  %96 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %16, i32 noundef 7) #5
  br label %.loopexit

97:                                               ; preds = %.thread644
  %.not599652 = icmp eq i32 %79, 0
  br i1 %.not599652, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %97
  %98 = add nuw i32 %79, 1
  %wide.trip.count = zext i32 %98 to i64
  %99 = zext nneg i32 %79 to i64
  %min.iters.check = icmp ult i32 %79, 4
  br i1 %min.iters.check, label %.lr.ph.preheader921, label %vector.ph

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

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %100 = getelementptr double, ptr %10, i64 %index
  %101 = getelementptr inbounds i8, ptr %100, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %100, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %101, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %102 = icmp eq i64 %index.next, %n.vec
  br i1 %102, label %middle.block, label %vector.body, !llvm.loop !11

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

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

.lr.ph:                                           ; preds = %.lr.ph.preheader921, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader921 ]
  %103 = getelementptr inbounds double, ptr %36, i64 %indvars.iv
  store double 1.000000e+00, ptr %103, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !15

._crit_edge:                                      ; preds = %.lr.ph, %middle.block, %97
  %. = tail call i32 @llvm.smin.i32(i32 %76, i32 %79)
  %104 = icmp eq i32 %., 0
  br i1 %104, label %.loopexit, label %105

105:                                              ; preds = %._crit_edge
  %106 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %107 = tail call double @dlamch_(ptr noundef nonnull @.str.10) #5
  %108 = load i32, ptr %5, align 4, !tbaa !5
  %109 = icmp slt i32 %108, 2
  br i1 %109, label %110, label %.lr.ph663

110:                                              ; preds = %105
  tail call void @dlatrs_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %14) #5
  %111 = load i32, ptr %5, align 4, !tbaa !5
  %invariant.gep731 = getelementptr i8, ptr %35, i64 8
  %.not628733 = icmp slt i32 %111, 2
  br i1 %.not628733, label %.loopexit, label %.lr.ph736.preheader

.lr.ph736.preheader:                              ; preds = %110
  %112 = sext i32 %33 to i64
  %113 = add nuw i32 %111, 1
  %wide.trip.count821 = zext i32 %113 to i64
  br label %.lr.ph736

.lr.ph736:                                        ; preds = %.lr.ph736.preheader, %.lr.ph736
  %indvars.iv818 = phi i64 [ 2, %.lr.ph736.preheader ], [ %indvars.iv.next819, %.lr.ph736 ]
  %114 = mul nsw i64 %indvars.iv818, %112
  %gep732 = getelementptr double, ptr %invariant.gep731, i64 %114
  %115 = getelementptr inbounds double, ptr %36, i64 %indvars.iv818
  tail call void @dlatrs_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull @.str.7, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep732, ptr noundef nonnull %115, ptr noundef %11, ptr noundef nonnull %14) #5
  %indvars.iv.next819 = add nuw nsw i64 %indvars.iv818, 1
  %exitcond822.not = icmp eq i64 %indvars.iv.next819, %wide.trip.count821
  br i1 %exitcond822.not, label %.loopexit, label %.lr.ph736, !llvm.loop !16

.lr.ph663:                                        ; preds = %105
  store i32 %50, ptr %16, align 4, !tbaa !5
  %116 = zext nneg i32 %45 to i64
  %117 = zext nneg i32 %50 to i64
  %118 = sext i32 %30 to i64
  %119 = zext nneg i32 %57 to i64
  %invariant.gep839 = getelementptr i8, ptr %32, i64 8
  %invariant.gep843 = getelementptr i8, ptr %32, i64 8
  %invariant.gep847 = getelementptr double, ptr %37, i64 %119
  br label %120

.loopexit651:                                     ; preds = %.lr.ph658.split, %.lr.ph658.split.us, %120
  %.1552.lcssa = phi double [ %.0551661, %120 ], [ %148, %.lr.ph658.split.us ], [ %162, %.lr.ph658.split ]
  %.not601.not = icmp ult i64 %indvars.iv752, %117
  br i1 %.not601.not, label %120, label %._crit_edge664, !llvm.loop !17

120:                                              ; preds = %.lr.ph663, %.loopexit651
  %indvars.iv752 = phi i64 [ 1, %.lr.ph663 ], [ %indvars.iv.next753, %.loopexit651 ]
  %.0551661 = phi double [ 0.000000e+00, %.lr.ph663 ], [ %.1552.lcssa, %.loopexit651 ]
  %121 = add nsw i64 %indvars.iv752, -1
  %indvars.iv.next753 = add nuw nsw i64 %indvars.iv752, 1
  %122 = trunc nuw nsw i64 %121 to i32
  %.0561 = select i1 %.not, i32 %50, i32 %122
  %123 = trunc nsw i64 %indvars.iv.next753 to i32
  %.0541 = select i1 %.not, i32 %123, i32 1
  %.not624654 = icmp sgt i32 %.0541, %.0561
  br i1 %.not624654, label %.loopexit651, label %.lr.ph658

.lr.ph658:                                        ; preds = %120
  %124 = load i32, ptr %4, align 4, !tbaa !5
  %125 = trunc i64 %indvars.iv752 to i32
  %126 = mul i32 %45, %125
  %.631 = call i32 @llvm.smin.i32(i32 %126, i32 %124)
  %127 = mul nuw nsw i64 %121, %116
  %128 = add nuw nsw i64 %127, 1
  %129 = trunc nsw i64 %127 to i32
  %130 = sub i32 %.631, %129
  %131 = mul nsw i64 %128, %118
  %132 = trunc i64 %121 to i32
  %133 = add i32 %56, %132
  %134 = mul i32 %133, %50
  %135 = zext nneg i32 %.0541 to i64
  %136 = add i32 %.0561, 1
  %wide.trip.count750 = zext i32 %136 to i64
  br i1 %.not591, label %.lr.ph658.split.us.preheader, label %.lr.ph658.split.preheader

.lr.ph658.split.preheader:                        ; preds = %.lr.ph658
  %invariant.gep841 = getelementptr double, ptr %invariant.gep839, i64 %131
  br label %.lr.ph658.split

.lr.ph658.split.us.preheader:                     ; preds = %.lr.ph658
  %invariant.gep845 = getelementptr double, ptr %invariant.gep843, i64 %131
  %gep848 = getelementptr double, ptr %invariant.gep847, i64 %indvars.iv752
  br label %.lr.ph658.split.us

.lr.ph658.split.us:                               ; preds = %.lr.ph658.split.us.preheader, %.lr.ph658.split.us
  %indvars.iv747 = phi i64 [ %135, %.lr.ph658.split.us.preheader ], [ %indvars.iv.next748, %.lr.ph658.split.us ]
  %.1552656.us = phi double [ %.0551661, %.lr.ph658.split.us.preheader ], [ %148, %.lr.ph658.split.us ]
  %137 = add nsw i64 %indvars.iv747, -1
  %138 = mul nsw i64 %137, %116
  %139 = trunc i64 %indvars.iv747 to i32
  %140 = mul i32 %45, %139
  %141 = load i32, ptr %4, align 4, !tbaa !5
  %.632.us = call i32 @llvm.smin.i32(i32 %140, i32 %141)
  %142 = trunc nsw i64 %138 to i32
  %143 = sub i32 %.632.us, %142
  store i32 %143, ptr %17, align 4, !tbaa !5
  store i32 %130, ptr %18, align 4, !tbaa !5
  %gep846 = getelementptr double, ptr %invariant.gep845, i64 %138
  %144 = call double @dlange_(ptr noundef nonnull @.str.12, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %gep846, ptr noundef nonnull %7, ptr noundef nonnull %27) #5
  store double %144, ptr %24, align 8, !tbaa !9
  %145 = mul nsw i64 %137, %117
  %146 = getelementptr double, ptr %gep848, i64 %145
  store double %144, ptr %146, align 8, !tbaa !9
  %147 = fcmp oge double %.1552656.us, %144
  %148 = select i1 %147, double %.1552656.us, double %144
  %indvars.iv.next748 = add nuw nsw i64 %indvars.iv747, 1
  %exitcond751.not = icmp eq i64 %indvars.iv.next748, %wide.trip.count750
  br i1 %exitcond751.not, label %.loopexit651, label %.lr.ph658.split.us, !llvm.loop !18

.lr.ph658.split:                                  ; preds = %.lr.ph658.split.preheader, %.lr.ph658.split
  %indvars.iv742 = phi i64 [ %135, %.lr.ph658.split.preheader ], [ %indvars.iv.next743, %.lr.ph658.split ]
  %.1552656 = phi double [ %.0551661, %.lr.ph658.split.preheader ], [ %162, %.lr.ph658.split ]
  %149 = add nsw i64 %indvars.iv742, -1
  %150 = mul nsw i64 %149, %116
  %151 = trunc i64 %indvars.iv742 to i32
  %152 = mul i32 %45, %151
  %153 = load i32, ptr %4, align 4, !tbaa !5
  %.632 = call i32 @llvm.smin.i32(i32 %152, i32 %153)
  %154 = trunc nsw i64 %150 to i32
  %155 = sub i32 %.632, %154
  store i32 %155, ptr %17, align 4, !tbaa !5
  store i32 %130, ptr %18, align 4, !tbaa !5
  %gep842 = getelementptr double, ptr %invariant.gep841, i64 %150
  %156 = call double @dlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %17, ptr noundef nonnull %18, ptr noundef %gep842, ptr noundef nonnull %7, ptr noundef nonnull %27) #5
  store double %156, ptr %24, align 8, !tbaa !9
  %157 = trunc nuw nsw i64 %indvars.iv742 to i32
  %158 = add i32 %134, %157
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds double, ptr %37, i64 %159
  store double %156, ptr %160, align 8, !tbaa !9
  %161 = fcmp oge double %.1552656, %156
  %162 = select i1 %161, double %.1552656, double %156
  %indvars.iv.next743 = add nuw nsw i64 %indvars.iv742, 1
  %exitcond746.not = icmp eq i64 %indvars.iv.next743, %wide.trip.count750
  br i1 %exitcond746.not, label %.loopexit651, label %.lr.ph658.split, !llvm.loop !18

._crit_edge664:                                   ; preds = %.loopexit651
  %163 = call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %164 = fcmp ugt double %.1552.lcssa, %163
  br i1 %164, label %165, label %171

165:                                              ; preds = %._crit_edge664
  %166 = load i32, ptr %5, align 4, !tbaa !5
  %invariant.gep725 = getelementptr i8, ptr %35, i64 8
  %.not602727 = icmp slt i32 %166, 1
  br i1 %.not602727, label %.loopexit, label %.lr.ph730.preheader

.lr.ph730.preheader:                              ; preds = %165
  %167 = sext i32 %33 to i64
  %168 = zext nneg i32 %166 to i64
  br label %.lr.ph730

.lr.ph730:                                        ; preds = %.lr.ph730.preheader, %.lr.ph730
  %indvars.iv815 = phi i64 [ 1, %.lr.ph730.preheader ], [ %indvars.iv.next816, %.lr.ph730 ]
  %169 = mul nsw i64 %indvars.iv815, %167
  %gep726 = getelementptr double, ptr %invariant.gep725, i64 %169
  %170 = getelementptr inbounds double, ptr %36, i64 %indvars.iv815
  call void @dlatrs_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull @.str.1, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep726, ptr noundef nonnull %170, ptr noundef %11, ptr noundef nonnull %14) #5
  %indvars.iv.next816 = add nuw nsw i64 %indvars.iv815, 1
  %.not602.not = icmp ult i64 %indvars.iv815, %168
  br i1 %.not602.not, label %.lr.ph730, label %.loopexit, !llvm.loop !19

171:                                              ; preds = %._crit_edge664
  %.not603721 = icmp slt i32 %55, 1
  br i1 %.not603721, label %.loopexit, label %.lr.ph724

.lr.ph724:                                        ; preds = %171
  %172 = add i32 %30, 1
  %invariant.gep = getelementptr i8, ptr %10, i64 -16
  %173 = add nuw nsw i32 %50, 1
  %174 = zext nneg i32 %50 to i64
  %175 = shl nsw i64 %34, 3
  %scevgep = getelementptr i8, ptr %8, i64 %175
  %176 = add i32 %33, 1
  %177 = zext nneg i32 %50 to i64
  %wide.trip.count758 = zext nneg i32 %173 to i64
  %178 = xor i1 %.not, %.not591
  %.637..634 = select i1 %178, i32 %50, i32 1
  %.638..635 = select i1 %178, i32 1, i32 -1
  %.639..636 = select i1 %178, i32 1, i32 %50
  %wide.trip.count770 = zext nneg i32 %173 to i64
  %wide.trip.count784 = zext nneg i32 %173 to i64
  %wide.trip.count807 = zext nneg i32 %173 to i64
  %179 = zext nneg i32 %55 to i64
  %min.iters.check904 = icmp slt i32 %49, 4
  %n.vec907 = and i64 %117, 2147483644
  %ind.end908 = or disjoint i64 %n.vec907, 1
  %cmp.n914 = icmp eq i64 %n.vec907, %117
  %min.iters.check891 = icmp slt i32 %49, 4
  %n.vec894 = and i64 %117, 2147483644
  %ind.end895 = or disjoint i64 %n.vec894, 1
  %cmp.n901 = icmp eq i64 %n.vec894, %117
  %min.iters.check878 = icmp slt i32 %49, 4
  %n.vec881 = and i64 %117, 2147483644
  %ind.end882 = or disjoint i64 %n.vec881, 1
  %cmp.n888 = icmp eq i64 %n.vec881, %117
  %180 = xor i1 %.not591, %.not
  %.str.1.sink = select i1 %.not591, ptr @.str.5, ptr @.str.1
  %xtraiter = and i64 %117, 1
  %181 = icmp slt i32 %49, 2
  %unroll_iter = and i64 %117, 2147483646
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %182

182:                                              ; preds = %.lr.ph724, %._crit_edge720
  %indvars.iv812 = phi i64 [ 1, %.lr.ph724 ], [ %indvars.iv.next813, %._crit_edge720 ]
  %183 = trunc nuw nsw i64 %indvars.iv812 to i32
  %184 = shl i32 %183, 5
  %185 = add i32 %184, -31
  %186 = load i32, ptr %5, align 4, !tbaa !5
  %.633 = call i32 @llvm.smin.i32(i32 %184, i32 %186)
  %reass.sub = sub i32 %.633, %184
  %187 = add i32 %reass.sub, 32
  %.not605667 = icmp slt i32 %187, 1
  br i1 %.not605667, label %.lr.ph707, label %.lr.ph670

.lr.ph670:                                        ; preds = %182
  %188 = zext nneg i32 %187 to i64
  br label %189

189:                                              ; preds = %.lr.ph670, %.loopexit916
  %indvars.iv760 = phi i64 [ 1, %.lr.ph670 ], [ %indvars.iv.next761, %.loopexit916 ]
  %190 = mul nuw nsw i64 %indvars.iv760, %174
  %invariant.gep849 = getelementptr inbounds double, ptr %37, i64 %190
  br i1 %min.iters.check904, label %scalar.ph903.preheader, label %vector.body910

vector.body910:                                   ; preds = %189, %vector.body910
  %index911 = phi i64 [ %index.next913, %vector.body910 ], [ 0, %189 ]
  %offset.idx912 = or disjoint i64 %index911, 1
  %191 = getelementptr inbounds double, ptr %invariant.gep849, i64 %offset.idx912
  %192 = getelementptr inbounds i8, ptr %191, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %191, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %192, align 8, !tbaa !9
  %index.next913 = add nuw i64 %index911, 4
  %193 = icmp eq i64 %index.next913, %n.vec907
  br i1 %193, label %middle.block902, label %vector.body910, !llvm.loop !20

middle.block902:                                  ; preds = %vector.body910
  br i1 %cmp.n914, label %.loopexit916, label %scalar.ph903.preheader

scalar.ph903.preheader:                           ; preds = %middle.block902, %189
  %indvars.iv755.ph = phi i64 [ 1, %189 ], [ %ind.end908, %middle.block902 ]
  br label %scalar.ph903

scalar.ph903:                                     ; preds = %scalar.ph903.preheader, %scalar.ph903
  %indvars.iv755 = phi i64 [ %indvars.iv.next756, %scalar.ph903 ], [ %indvars.iv755.ph, %scalar.ph903.preheader ]
  %gep850 = getelementptr inbounds double, ptr %invariant.gep849, i64 %indvars.iv755
  store double 1.000000e+00, ptr %gep850, align 8, !tbaa !9
  %indvars.iv.next756 = add nuw nsw i64 %indvars.iv755, 1
  %exitcond759.not = icmp eq i64 %indvars.iv.next756, %wide.trip.count758
  br i1 %exitcond759.not, label %.loopexit916, label %scalar.ph903, !llvm.loop !21

.loopexit916:                                     ; preds = %scalar.ph903, %middle.block902
  %indvars.iv.next761 = add nuw nsw i64 %indvars.iv760, 1
  %.not605.not = icmp ult i64 %indvars.iv760, %188
  br i1 %.not605.not, label %189, label %.lr.ph707, !llvm.loop !22

.lr.ph707:                                        ; preds = %.loopexit916, %182
  store i32 %.638..635, ptr %17, align 4, !tbaa !5
  %194 = add i32 %184, -32
  %195 = mul nsw i32 %185, %33
  br label %196

196:                                              ; preds = %.lr.ph707, %._crit_edge703
  %.1559705 = phi i32 [ %.639..636, %.lr.ph707 ], [ %361, %._crit_edge703 ]
  %197 = add i32 %.1559705, -1
  %198 = mul i32 %197, %45
  %199 = add nsw i32 %198, 1
  %200 = mul i32 %.1559705, %45
  %201 = load i32, ptr %4, align 4, !tbaa !5
  %.640 = call i32 @llvm.smin.i32(i32 %200, i32 %201)
  store i32 %187, ptr %18, align 4, !tbaa !5
  br i1 %.not605667, label %._crit_edge693, label %.lr.ph692

.lr.ph692:                                        ; preds = %196
  %202 = sub i32 %.640, %198
  %203 = mul i32 %199, %172
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds double, ptr %32, i64 %204
  %.not619678 = icmp slt i32 %198, 1
  %206 = zext i32 %198 to i64
  %207 = shl nuw nsw i64 %206, 3
  %208 = add i32 %176, %.640
  %209 = xor i32 %.640, -1
  %210 = sext i32 %.1559705 to i64
  br label %211

211:                                              ; preds = %.lr.ph692, %.loopexit872
  %indvars.iv788 = phi i64 [ 1, %.lr.ph692 ], [ %indvars.iv.next789, %.loopexit872 ]
  %indvars.iv786 = phi i64 [ 0, %.lr.ph692 ], [ %indvars.iv.next787, %.loopexit872 ]
  %212 = trunc nuw nsw i64 %indvars.iv786 to i32
  %213 = mul i32 %33, %212
  %214 = add i32 %208, %213
  %215 = sext i32 %214 to i64
  %216 = shl nsw i64 %215, 3
  %scevgep778 = getelementptr i8, ptr %scevgep, i64 %216
  %217 = add i32 %176, %213
  %218 = sext i32 %217 to i64
  %219 = shl nsw i64 %218, 3
  %scevgep773 = getelementptr i8, ptr %scevgep, i64 %219
  %220 = trunc nuw nsw i64 %indvars.iv788 to i32
  %221 = add i32 %194, %220
  %222 = icmp eq i64 %indvars.iv788, 1
  store i32 %202, ptr %19, align 4, !tbaa !5
  %223 = mul nsw i32 %221, %33
  %224 = add nsw i32 %223, %199
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds double, ptr %35, i64 %225
  %.str.1..str.7 = select i1 %222, ptr @.str.1, ptr @.str.7
  call void @dlatrs_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %.str.1..str.7, ptr noundef nonnull %19, ptr noundef %205, ptr noundef nonnull %7, ptr noundef %226, ptr noundef nonnull %29, ptr noundef %11, ptr noundef nonnull %14) #5
  store i32 %202, ptr %19, align 4, !tbaa !5
  %227 = getelementptr inbounds double, ptr %35, i64 %225
  %228 = call double @dlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef %227, ptr noundef nonnull %9, ptr noundef nonnull %27) #5
  %229 = add nsw i64 %indvars.iv788, -1
  %230 = getelementptr inbounds [32 x double], ptr %26, i64 0, i64 %229
  store double %228, ptr %230, align 8, !tbaa !9
  %231 = load double, ptr %29, align 8, !tbaa !9
  %232 = fcmp oeq double %231, 0.000000e+00
  br i1 %232, label %233, label %246

233:                                              ; preds = %211
  %234 = sext i32 %221 to i64
  %235 = getelementptr inbounds double, ptr %36, i64 %234
  store double 0.000000e+00, ptr %235, align 8, !tbaa !9
  br i1 %.not619678, label %._crit_edge682, label %.lr.ph681

.lr.ph681:                                        ; preds = %233
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep773, i8 0, i64 %207, i1 false), !tbaa !9
  br label %._crit_edge682

._crit_edge682:                                   ; preds = %.lr.ph681, %233
  %236 = load i32, ptr %4, align 4, !tbaa !5
  %.not620.not683 = icmp slt i32 %.640, %236
  br i1 %.not620.not683, label %.lr.ph686, label %._crit_edge687

.lr.ph686:                                        ; preds = %._crit_edge682
  %237 = add i32 %236, %209
  %238 = zext i32 %237 to i64
  %239 = shl nuw nsw i64 %238, 3
  %240 = add nuw nsw i64 %239, 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep778, i8 0, i64 %240, i1 false), !tbaa !9
  br label %._crit_edge687

._crit_edge687:                                   ; preds = %.lr.ph686, %._crit_edge682
  store i32 %50, ptr %19, align 4, !tbaa !5
  %241 = mul nuw nsw i64 %indvars.iv788, %177
  %242 = and i64 %241, 4294967295
  %invariant.gep853 = getelementptr inbounds double, ptr %37, i64 %242
  br i1 %min.iters.check878, label %scalar.ph877.preheader, label %vector.body884

vector.body884:                                   ; preds = %._crit_edge687, %vector.body884
  %index885 = phi i64 [ %index.next887, %vector.body884 ], [ 0, %._crit_edge687 ]
  %offset.idx886 = or disjoint i64 %index885, 1
  %243 = getelementptr inbounds double, ptr %invariant.gep853, i64 %offset.idx886
  %244 = getelementptr inbounds i8, ptr %243, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %243, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %244, align 8, !tbaa !9
  %index.next887 = add nuw i64 %index885, 4
  %245 = icmp eq i64 %index.next887, %n.vec881
  br i1 %245, label %middle.block876, label %vector.body884, !llvm.loop !23

middle.block876:                                  ; preds = %vector.body884
  br i1 %cmp.n888, label %.loopexit915, label %scalar.ph877.preheader

scalar.ph877.preheader:                           ; preds = %middle.block876, %._crit_edge687
  %indvars.iv781.ph = phi i64 [ 1, %._crit_edge687 ], [ %ind.end882, %middle.block876 ]
  br label %scalar.ph877

scalar.ph877:                                     ; preds = %scalar.ph877.preheader, %scalar.ph877
  %indvars.iv781 = phi i64 [ %indvars.iv.next782, %scalar.ph877 ], [ %indvars.iv781.ph, %scalar.ph877.preheader ]
  %gep854 = getelementptr inbounds double, ptr %invariant.gep853, i64 %indvars.iv781
  store double 1.000000e+00, ptr %gep854, align 8, !tbaa !9
  %indvars.iv.next782 = add nuw nsw i64 %indvars.iv781, 1
  %exitcond785.not = icmp eq i64 %indvars.iv.next782, %wide.trip.count784
  br i1 %exitcond785.not, label %.loopexit915, label %scalar.ph877, !llvm.loop !24

.loopexit915:                                     ; preds = %scalar.ph877, %middle.block876
  %.pre = add nsw i64 %241, %210
  br label %.loopexit872

246:                                              ; preds = %211
  %247 = mul nuw nsw i64 %indvars.iv788, %177
  %248 = add nsw i64 %247, %210
  %249 = getelementptr inbounds double, ptr %37, i64 %248
  %250 = load double, ptr %249, align 8, !tbaa !9
  %251 = fmul double %231, %250
  %252 = fcmp oeq double %251, 0.000000e+00
  br i1 %252, label %253, label %.loopexit872

253:                                              ; preds = %246
  %254 = fdiv double %250, %107
  store double %254, ptr %23, align 8, !tbaa !9
  %255 = fmul double %231, %254
  store double %255, ptr %29, align 8, !tbaa !9
  store double %107, ptr %249, align 8, !tbaa !9
  %256 = fdiv double 1.000000e+00, %255
  store double %256, ptr %28, align 8, !tbaa !9
  %257 = fmul double %228, %256
  %258 = fcmp ugt double %257, %106
  br i1 %258, label %260, label %259

259:                                              ; preds = %253
  store double %257, ptr %230, align 8, !tbaa !9
  store i32 %202, ptr %19, align 4, !tbaa !5
  call void @dscal_(ptr noundef nonnull %19, ptr noundef nonnull %28, ptr noundef %227, ptr noundef nonnull @c__1) #5
  br label %.loopexit872

260:                                              ; preds = %253
  %261 = sext i32 %221 to i64
  %262 = getelementptr inbounds double, ptr %36, i64 %261
  store double 0.000000e+00, ptr %262, align 8, !tbaa !9
  %263 = load i32, ptr %4, align 4, !tbaa !5
  %.not617672 = icmp slt i32 %263, 1
  br i1 %.not617672, label %._crit_edge676, label %.lr.ph675

.lr.ph675:                                        ; preds = %260
  %264 = zext nneg i32 %263 to i64
  %265 = shl nuw nsw i64 %264, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep773, i8 0, i64 %265, i1 false), !tbaa !9
  br label %._crit_edge676

._crit_edge676:                                   ; preds = %.lr.ph675, %260
  store i32 %50, ptr %19, align 4, !tbaa !5
  %266 = and i64 %247, 4294967295
  %invariant.gep851 = getelementptr inbounds double, ptr %37, i64 %266
  br i1 %min.iters.check891, label %scalar.ph890.preheader, label %vector.body897

vector.body897:                                   ; preds = %._crit_edge676, %vector.body897
  %index898 = phi i64 [ %index.next900, %vector.body897 ], [ 0, %._crit_edge676 ]
  %offset.idx899 = or disjoint i64 %index898, 1
  %267 = getelementptr inbounds double, ptr %invariant.gep851, i64 %offset.idx899
  %268 = getelementptr inbounds i8, ptr %267, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %267, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %268, align 8, !tbaa !9
  %index.next900 = add nuw i64 %index898, 4
  %269 = icmp eq i64 %index.next900, %n.vec894
  br i1 %269, label %middle.block889, label %vector.body897, !llvm.loop !25

middle.block889:                                  ; preds = %vector.body897
  br i1 %cmp.n901, label %.loopexit872, label %scalar.ph890.preheader

scalar.ph890.preheader:                           ; preds = %middle.block889, %._crit_edge676
  %indvars.iv767.ph = phi i64 [ 1, %._crit_edge676 ], [ %ind.end895, %middle.block889 ]
  br label %scalar.ph890

scalar.ph890:                                     ; preds = %scalar.ph890.preheader, %scalar.ph890
  %indvars.iv767 = phi i64 [ %indvars.iv.next768, %scalar.ph890 ], [ %indvars.iv767.ph, %scalar.ph890.preheader ]
  %gep852 = getelementptr inbounds double, ptr %invariant.gep851, i64 %indvars.iv767
  store double 1.000000e+00, ptr %gep852, align 8, !tbaa !9
  %indvars.iv.next768 = add nuw nsw i64 %indvars.iv767, 1
  %exitcond771.not = icmp eq i64 %indvars.iv.next768, %wide.trip.count770
  br i1 %exitcond771.not, label %.loopexit872, label %scalar.ph890, !llvm.loop !26

.loopexit872:                                     ; preds = %scalar.ph890, %middle.block889, %246, %259, %.loopexit915
  %270 = phi double [ %231, %246 ], [ 1.000000e+00, %259 ], [ 1.000000e+00, %.loopexit915 ], [ 1.000000e+00, %middle.block889 ], [ 1.000000e+00, %scalar.ph890 ]
  %.pre-phi = phi i64 [ %248, %246 ], [ %248, %259 ], [ %.pre, %.loopexit915 ], [ %248, %middle.block889 ], [ %248, %scalar.ph890 ]
  %271 = getelementptr inbounds double, ptr %37, i64 %.pre-phi
  %272 = load double, ptr %271, align 8, !tbaa !9
  %273 = fmul double %272, %270
  store double %273, ptr %29, align 8, !tbaa !9
  store double %273, ptr %271, align 8, !tbaa !9
  %indvars.iv.next789 = add nuw nsw i64 %indvars.iv788, 1
  %274 = load i32, ptr %18, align 4, !tbaa !5
  %275 = sext i32 %274 to i64
  %.not613.not = icmp slt i64 %indvars.iv788, %275
  %indvars.iv.next787 = add nuw nsw i64 %indvars.iv786, 1
  br i1 %.not613.not, label %211, label %._crit_edge693, !llvm.loop !27

._crit_edge693:                                   ; preds = %.loopexit872, %196
  br i1 %180, label %278, label %276

276:                                              ; preds = %._crit_edge693
  store i32 1, ptr %18, align 4, !tbaa !5
  store i32 -1, ptr %19, align 4, !tbaa !5
  %277 = icmp sgt i32 %197, 0
  br i1 %277, label %.lr.ph702, label %._crit_edge703

278:                                              ; preds = %._crit_edge693
  %279 = add nsw i32 %.1559705, 1
  store i32 %50, ptr %18, align 4, !tbaa !5
  store i32 1, ptr %19, align 4, !tbaa !5
  %.not870.not = icmp slt i32 %.1559705, %50
  br i1 %.not870.not, label %.lr.ph702, label %._crit_edge703

.lr.ph702:                                        ; preds = %276, %278
  %.1832834 = phi i32 [ %197, %276 ], [ %279, %278 ]
  %280 = add i32 %197, %56
  %281 = mul i32 %280, %50
  %282 = sub i32 %.640, %198
  %283 = mul nsw i32 %199, %30
  %284 = add nsw i32 %199, %195
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds double, ptr %35, i64 %285
  %287 = sext i32 %.1559705 to i64
  %invariant.gep857 = getelementptr double, ptr %37, i64 %287
  br label %288

288:                                              ; preds = %.lr.ph702, %._crit_edge698
  %.2555700 = phi i32 [ %.1832834, %.lr.ph702 ], [ %355, %._crit_edge698 ]
  %289 = add nsw i32 %.2555700, -1
  %290 = mul nsw i32 %289, %45
  %291 = add nsw i32 %290, 1
  %292 = mul nsw i32 %.2555700, %45
  %293 = load i32, ptr %4, align 4, !tbaa !5
  %.641 = call i32 @llvm.smin.i32(i32 %292, i32 %293)
  store i32 %187, ptr %20, align 4, !tbaa !5
  br i1 %.not605667, label %._crit_edge698, label %.lr.ph697

.lr.ph697:                                        ; preds = %288
  %294 = sub i32 %.641, %290
  %295 = add i32 %281, %.2555700
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %37, i64 %296
  %298 = sext i32 %.2555700 to i64
  %invariant.gep855 = getelementptr double, ptr %37, i64 %298
  br label %299

299:                                              ; preds = %.lr.ph697, %342
  %indvars.iv793 = phi i64 [ 1, %.lr.ph697 ], [ %indvars.iv.next794, %342 ]
  %300 = trunc nuw nsw i64 %indvars.iv793 to i32
  %301 = add i32 %194, %300
  %302 = mul nuw nsw i64 %indvars.iv793, %177
  %gep856 = getelementptr double, ptr %invariant.gep855, i64 %302
  %303 = load double, ptr %gep856, align 8, !tbaa !9
  %gep858 = getelementptr double, ptr %invariant.gep857, i64 %302
  %304 = load double, ptr %gep858, align 8, !tbaa !9
  %305 = fcmp ole double %303, %304
  %306 = select i1 %305, double %303, double %304
  store i32 %294, ptr %21, align 4, !tbaa !5
  %307 = mul nsw i32 %301, %33
  %308 = add nsw i32 %307, %291
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds double, ptr %35, i64 %309
  %311 = call double @dlange_(ptr noundef nonnull @.str.11, ptr noundef nonnull %21, ptr noundef nonnull @c__1, ptr noundef %310, ptr noundef nonnull %9, ptr noundef nonnull %27) #5
  %312 = load double, ptr %gep856, align 8, !tbaa !9
  %313 = fdiv double %306, %312
  %314 = fmul double %311, %313
  store double %314, ptr %25, align 8, !tbaa !9
  %315 = load double, ptr %gep858, align 8, !tbaa !9
  %316 = fdiv double %306, %315
  %317 = add nsw i64 %indvars.iv793, -1
  %318 = getelementptr inbounds [32 x double], ptr %26, i64 0, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !9
  %320 = fmul double %319, %316
  store double %320, ptr %318, align 8, !tbaa !9
  %321 = load double, ptr %297, align 8, !tbaa !9
  store double %321, ptr %24, align 8, !tbaa !9
  %322 = call double @dlarmm_(ptr noundef nonnull %24, ptr noundef nonnull %318, ptr noundef nonnull %25) #5
  store double %322, ptr %29, align 8, !tbaa !9
  %323 = load double, ptr %gep856, align 8, !tbaa !9
  %324 = fdiv double %306, %323
  %325 = fmul double %322, %324
  store double %325, ptr %23, align 8, !tbaa !9
  %326 = fcmp une double %325, 1.000000e+00
  br i1 %326, label %327, label %330

327:                                              ; preds = %299
  store i32 %294, ptr %21, align 4, !tbaa !5
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %23, ptr noundef %310, ptr noundef nonnull @c__1) #5
  %328 = load double, ptr %29, align 8, !tbaa !9
  %329 = fmul double %306, %328
  store double %329, ptr %gep856, align 8, !tbaa !9
  br label %330

330:                                              ; preds = %327, %299
  %331 = phi double [ %328, %327 ], [ %322, %299 ]
  %332 = load double, ptr %gep858, align 8, !tbaa !9
  %333 = fdiv double %306, %332
  %334 = fmul double %333, %331
  store double %334, ptr %23, align 8, !tbaa !9
  %335 = fcmp une double %334, 1.000000e+00
  br i1 %335, label %336, label %342

336:                                              ; preds = %330
  store i32 %282, ptr %21, align 4, !tbaa !5
  %337 = add nsw i32 %307, %199
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds double, ptr %35, i64 %338
  call void @dscal_(ptr noundef nonnull %21, ptr noundef nonnull %23, ptr noundef %339, ptr noundef nonnull @c__1) #5
  %340 = load double, ptr %29, align 8, !tbaa !9
  %341 = fmul double %306, %340
  store double %341, ptr %gep858, align 8, !tbaa !9
  br label %342

342:                                              ; preds = %330, %336
  %indvars.iv.next794 = add nuw nsw i64 %indvars.iv793, 1
  %343 = load i32, ptr %20, align 4, !tbaa !5
  %344 = sext i32 %343 to i64
  %.not616.not = icmp slt i64 %indvars.iv793, %344
  br i1 %.not616.not, label %299, label %._crit_edge698, !llvm.loop !28

._crit_edge698:                                   ; preds = %342, %288
  %345 = sub i32 %.641, %290
  store i32 %345, ptr %20, align 4, !tbaa !5
  store i32 %187, ptr %21, align 4, !tbaa !5
  store i32 %282, ptr %22, align 4, !tbaa !5
  %346 = add nsw i32 %291, %283
  %347 = mul nsw i32 %291, %30
  %348 = add nsw i32 %347, %199
  %.sink869 = select i1 %.not591, i32 %348, i32 %346
  %349 = sext i32 %.sink869 to i64
  %350 = getelementptr inbounds double, ptr %32, i64 %349
  %351 = add nsw i32 %291, %195
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds double, ptr %35, i64 %352
  call void @dgemm_(ptr noundef nonnull %.str.1.sink, ptr noundef nonnull @.str.1, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull @c_b35, ptr noundef %350, ptr noundef nonnull %7, ptr noundef %286, ptr noundef nonnull %9, ptr noundef nonnull @c_b36, ptr noundef %353, ptr noundef nonnull %9) #5
  %354 = load i32, ptr %19, align 4, !tbaa !5
  %355 = add nsw i32 %354, %.2555700
  %356 = icmp slt i32 %354, 0
  %357 = load i32, ptr %18, align 4
  %358 = icmp sge i32 %355, %357
  %359 = icmp sle i32 %355, %357
  %.in614 = select i1 %356, i1 %358, i1 %359
  br i1 %.in614, label %288, label %._crit_edge703, !llvm.loop !29

._crit_edge703:                                   ; preds = %._crit_edge698, %276, %278
  %360 = load i32, ptr %17, align 4, !tbaa !5
  %361 = add nsw i32 %360, %.1559705
  %362 = icmp slt i32 %360, 0
  %363 = icmp sge i32 %361, %.637..634
  %364 = icmp sle i32 %361, %.637..634
  %.in = select i1 %362, i1 %363, i1 %364
  br i1 %.in, label %196, label %._crit_edge708, !llvm.loop !30

._crit_edge708:                                   ; preds = %._crit_edge703
  br i1 %.not605667, label %._crit_edge714.thread, label %.lr.ph713.preheader

._crit_edge714.thread:                            ; preds = %._crit_edge708
  store i32 %187, ptr %17, align 4, !tbaa !5
  br label %._crit_edge720

.lr.ph713.preheader:                              ; preds = %._crit_edge708
  %365 = sext i32 %185 to i64
  %366 = zext nneg i32 %187 to i64
  %invariant.gep861 = getelementptr double, ptr %invariant.gep, i64 %365
  br label %.lr.ph713

.lr.ph713:                                        ; preds = %.lr.ph713.preheader, %379
  %indvars.iv801 = phi i64 [ 1, %.lr.ph713.preheader ], [ %indvars.iv.next802, %379 ]
  %gep862 = getelementptr double, ptr %invariant.gep861, i64 %indvars.iv801
  %367 = mul nuw nsw i64 %indvars.iv801, %177
  %.promoted = load double, ptr %gep862, align 8, !tbaa !9
  %invariant.gep859 = getelementptr inbounds double, ptr %37, i64 %367
  br i1 %181, label %.unr-lcssa, label %.lr.ph713.new

.lr.ph713.new:                                    ; preds = %.lr.ph713
  %invariant.gep924 = getelementptr inbounds i8, ptr %invariant.gep859, i64 8
  br label %368

368:                                              ; preds = %368, %.lr.ph713.new
  %indvars.iv796 = phi i64 [ 1, %.lr.ph713.new ], [ %indvars.iv.next797.1, %368 ]
  %369 = phi double [ %.promoted, %.lr.ph713.new ], [ %375, %368 ]
  %niter = phi i64 [ 0, %.lr.ph713.new ], [ %niter.next.1, %368 ]
  %gep860 = getelementptr inbounds double, ptr %invariant.gep859, i64 %indvars.iv796
  %370 = load double, ptr %gep860, align 8, !tbaa !9
  %371 = fcmp ole double %369, %370
  %372 = select i1 %371, double %369, double %370
  store double %372, ptr %gep862, align 8, !tbaa !9
  %gep925 = getelementptr inbounds double, ptr %invariant.gep924, i64 %indvars.iv796
  %373 = load double, ptr %gep925, align 8, !tbaa !9
  %374 = fcmp ole double %372, %373
  %375 = select i1 %374, double %372, double %373
  store double %375, ptr %gep862, align 8, !tbaa !9
  %indvars.iv.next797.1 = add nuw nsw i64 %indvars.iv796, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.unr-lcssa, label %368, !llvm.loop !31

.unr-lcssa:                                       ; preds = %368, %.lr.ph713
  %indvars.iv796.unr = phi i64 [ 1, %.lr.ph713 ], [ %indvars.iv.next797.1, %368 ]
  %.unr = phi double [ %.promoted, %.lr.ph713 ], [ %375, %368 ]
  br i1 %lcmp.mod.not, label %379, label %.epilog-lcssa

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %gep860.epil = getelementptr inbounds double, ptr %invariant.gep859, i64 %indvars.iv796.unr
  %376 = load double, ptr %gep860.epil, align 8, !tbaa !9
  %377 = fcmp ole double %.unr, %376
  %378 = select i1 %377, double %.unr, double %376
  store double %378, ptr %gep862, align 8, !tbaa !9
  br label %379

379:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %indvars.iv.next802 = add nuw nsw i64 %indvars.iv801, 1
  %.not607.not = icmp ult i64 %indvars.iv801, %366
  br i1 %.not607.not, label %.lr.ph713, label %._crit_edge714, !llvm.loop !32

._crit_edge714:                                   ; preds = %379
  store i32 %187, ptr %17, align 4, !tbaa !5
  br i1 %.not605667, label %._crit_edge720, label %.lr.ph719

.lr.ph719:                                        ; preds = %._crit_edge714
  %380 = add i32 %184, -32
  br label %381

381:                                              ; preds = %.lr.ph719, %.loopexit649
  %382 = phi i32 [ %187, %.lr.ph719 ], [ %410, %.loopexit649 ]
  %indvars.iv809 = phi i64 [ 1, %.lr.ph719 ], [ %indvars.iv.next810, %.loopexit649 ]
  %383 = trunc nuw nsw i64 %indvars.iv809 to i32
  %384 = add i32 %380, %383
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds double, ptr %36, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !9
  %388 = fcmp une double %387, 1.000000e+00
  %389 = fcmp une double %387, 0.000000e+00
  %or.cond = and i1 %388, %389
  br i1 %or.cond, label %.preheader, label %.loopexit649

.preheader:                                       ; preds = %381
  %390 = mul nuw nsw i64 %indvars.iv809, %177
  %391 = mul nsw i32 %384, %33
  %392 = add i32 %391, 1
  %invariant.gep863 = getelementptr inbounds double, ptr %37, i64 %390
  br label %393

393:                                              ; preds = %.preheader, %409
  %indvars.iv804 = phi i64 [ 1, %.preheader ], [ %indvars.iv.next805, %409 ]
  %394 = trunc i64 %indvars.iv804 to i32
  %395 = mul i32 %45, %394
  store i32 %395, ptr %19, align 4, !tbaa !5
  %396 = load i32, ptr %4, align 4, !tbaa !5
  %397 = load double, ptr %386, align 8, !tbaa !9
  %gep = getelementptr inbounds double, ptr %invariant.gep863, i64 %indvars.iv804
  %398 = load double, ptr %gep, align 8, !tbaa !9
  %399 = fdiv double %397, %398
  store double %399, ptr %23, align 8, !tbaa !9
  %400 = fcmp une double %399, 1.000000e+00
  br i1 %400, label %401, label %409

401:                                              ; preds = %393
  %.642 = call i32 @llvm.smin.i32(i32 %395, i32 %396)
  %402 = trunc i64 %indvars.iv804 to i32
  %403 = add i32 %402, -1
  %404 = mul i32 %403, %45
  %405 = sub i32 %.642, %404
  store i32 %405, ptr %19, align 4, !tbaa !5
  %406 = add i32 %392, %404
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds double, ptr %35, i64 %407
  call void @dscal_(ptr noundef nonnull %19, ptr noundef nonnull %23, ptr noundef %408, ptr noundef nonnull @c__1) #5
  br label %409

409:                                              ; preds = %393, %401
  %indvars.iv.next805 = add nuw nsw i64 %indvars.iv804, 1
  %exitcond808.not = icmp eq i64 %indvars.iv.next805, %wide.trip.count807
  br i1 %exitcond808.not, label %.loopexit649.loopexit, label %393, !llvm.loop !33

.loopexit649.loopexit:                            ; preds = %409
  %.pre823 = load i32, ptr %17, align 4, !tbaa !5
  br label %.loopexit649

.loopexit649:                                     ; preds = %.loopexit649.loopexit, %381
  %410 = phi i32 [ %.pre823, %.loopexit649.loopexit ], [ %382, %381 ]
  %indvars.iv.next810 = add nuw nsw i64 %indvars.iv809, 1
  %411 = sext i32 %410 to i64
  %.not608.not = icmp slt i64 %indvars.iv809, %411
  br i1 %.not608.not, label %381, label %._crit_edge720, !llvm.loop !34

._crit_edge720:                                   ; preds = %.loopexit649, %._crit_edge714.thread, %._crit_edge714
  %indvars.iv.next813 = add nuw nsw i64 %indvars.iv812, 1
  %.not603.not = icmp ult i64 %indvars.iv812, %179
  br i1 %.not603.not, label %182, label %.loopexit, !llvm.loop !35

.loopexit:                                        ; preds = %._crit_edge720, %.lr.ph730, %.lr.ph736, %171, %165, %110, %93, %._crit_edge, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #5
  ret void
}

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

declare double @dlarmm_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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

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

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

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


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