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

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

; Function Attrs: nounwind uwtable
define dso_local i32 @dgbtrf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #0 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca double, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca double, align 8
  %46 = alloca [4160 x double], align 16
  %47 = alloca [4160 x double], align 16
  %48 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 33280, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 33280, ptr %47) #3
  %49 = load ptr, ptr %15, align 8, !tbaa !5
  %50 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %50, ptr %18, align 8, !tbaa !9
  %51 = load i64, ptr %18, align 8, !tbaa !9
  %52 = add nsw i64 1, %51
  store i64 %52, ptr %19, align 8, !tbaa !9
  %53 = load i64, ptr %19, align 8, !tbaa !9
  %54 = load ptr, ptr %14, align 8, !tbaa !5
  %55 = sub i64 0, %53
  %56 = getelementptr inbounds double, ptr %54, i64 %55
  store ptr %56, ptr %14, align 8, !tbaa !5
  %57 = load ptr, ptr %16, align 8, !tbaa !5
  %58 = getelementptr inbounds i64, ptr %57, i32 -1
  store ptr %58, ptr %16, align 8, !tbaa !5
  %59 = load ptr, ptr %13, align 8, !tbaa !5
  %60 = load i64, ptr %59, align 8, !tbaa !9
  %61 = load ptr, ptr %12, align 8, !tbaa !5
  %62 = load i64, ptr %61, align 8, !tbaa !9
  %63 = add nsw i64 %60, %62
  store i64 %63, ptr %43, align 8, !tbaa !9
  %64 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 0, ptr %64, align 8, !tbaa !9
  %65 = load ptr, ptr %10, align 8, !tbaa !5
  %66 = load i64, ptr %65, align 8, !tbaa !9
  %67 = icmp slt i64 %66, 0
  br i1 %67, label %68, label %70

68:                                               ; preds = %8
  %69 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -1, ptr %69, align 8, !tbaa !9
  br label %103

70:                                               ; preds = %8
  %71 = load ptr, ptr %11, align 8, !tbaa !5
  %72 = load i64, ptr %71, align 8, !tbaa !9
  %73 = icmp slt i64 %72, 0
  br i1 %73, label %74, label %76

74:                                               ; preds = %70
  %75 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -2, ptr %75, align 8, !tbaa !9
  br label %102

76:                                               ; preds = %70
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = load i64, ptr %77, align 8, !tbaa !9
  %79 = icmp slt i64 %78, 0
  br i1 %79, label %80, label %82

80:                                               ; preds = %76
  %81 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -3, ptr %81, align 8, !tbaa !9
  br label %101

82:                                               ; preds = %76
  %83 = load ptr, ptr %13, align 8, !tbaa !5
  %84 = load i64, ptr %83, align 8, !tbaa !9
  %85 = icmp slt i64 %84, 0
  br i1 %85, label %86, label %88

86:                                               ; preds = %82
  %87 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -4, ptr %87, align 8, !tbaa !9
  br label %100

88:                                               ; preds = %82
  %89 = load ptr, ptr %15, align 8, !tbaa !5
  %90 = load i64, ptr %89, align 8, !tbaa !9
  %91 = load ptr, ptr %12, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  %93 = load i64, ptr %43, align 8, !tbaa !9
  %94 = add nsw i64 %92, %93
  %95 = add nsw i64 %94, 1
  %96 = icmp slt i64 %90, %95
  br i1 %96, label %97, label %99

97:                                               ; preds = %88
  %98 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -6, ptr %98, align 8, !tbaa !9
  br label %99

99:                                               ; preds = %97, %88
  br label %100

100:                                              ; preds = %99, %86
  br label %101

101:                                              ; preds = %100, %80
  br label %102

102:                                              ; preds = %101, %74
  br label %103

103:                                              ; preds = %102, %68
  %104 = load ptr, ptr %17, align 8, !tbaa !5
  %105 = load i64, ptr %104, align 8, !tbaa !9
  %106 = icmp ne i64 %105, 0
  br i1 %106, label %107, label %112

107:                                              ; preds = %103
  %108 = load ptr, ptr %17, align 8, !tbaa !5
  %109 = load i64, ptr %108, align 8, !tbaa !9
  %110 = sub nsw i64 0, %109
  store i64 %110, ptr %20, align 8, !tbaa !9
  %111 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %20)
  store i32 0, ptr %9, align 4
  store i32 1, ptr %48, align 4
  br label %1316

112:                                              ; preds = %103
  %113 = load ptr, ptr %10, align 8, !tbaa !5
  %114 = load i64, ptr %113, align 8, !tbaa !9
  %115 = icmp eq i64 %114, 0
  br i1 %115, label %120, label %116

116:                                              ; preds = %112
  %117 = load ptr, ptr %11, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  %119 = icmp eq i64 %118, 0
  br i1 %119, label %120, label %121

120:                                              ; preds = %116, %112
  store i32 0, ptr %9, align 4
  store i32 1, ptr %48, align 4
  br label %1316

121:                                              ; preds = %116
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = load ptr, ptr %12, align 8, !tbaa !5
  %125 = load ptr, ptr %13, align 8, !tbaa !5
  %126 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %122, ptr noundef %123, ptr noundef %124, ptr noundef %125)
  store i64 %126, ptr %35, align 8, !tbaa !9
  %127 = load i64, ptr %35, align 8, !tbaa !9
  %128 = icmp sle i64 %127, 64
  br i1 %128, label %129, label %131

129:                                              ; preds = %121
  %130 = load i64, ptr %35, align 8, !tbaa !9
  br label %132

131:                                              ; preds = %121
  br label %132

132:                                              ; preds = %131, %129
  %133 = phi i64 [ %130, %129 ], [ 64, %131 ]
  store i64 %133, ptr %35, align 8, !tbaa !9
  %134 = load i64, ptr %35, align 8, !tbaa !9
  %135 = icmp sle i64 %134, 1
  br i1 %135, label %141, label %136

136:                                              ; preds = %132
  %137 = load i64, ptr %35, align 8, !tbaa !9
  %138 = load ptr, ptr %12, align 8, !tbaa !5
  %139 = load i64, ptr %138, align 8, !tbaa !9
  %140 = icmp sgt i64 %137, %139
  br i1 %140, label %141, label %154

141:                                              ; preds = %136, %132
  %142 = load ptr, ptr %10, align 8, !tbaa !5
  %143 = load ptr, ptr %11, align 8, !tbaa !5
  %144 = load ptr, ptr %12, align 8, !tbaa !5
  %145 = load ptr, ptr %13, align 8, !tbaa !5
  %146 = load ptr, ptr %14, align 8, !tbaa !5
  %147 = load i64, ptr %19, align 8, !tbaa !9
  %148 = getelementptr inbounds double, ptr %146, i64 %147
  %149 = load ptr, ptr %15, align 8, !tbaa !5
  %150 = load ptr, ptr %16, align 8, !tbaa !5
  %151 = getelementptr inbounds i64, ptr %150, i64 1
  %152 = load ptr, ptr %17, align 8, !tbaa !5
  %153 = call i32 @dgbtf2_(ptr noundef %142, ptr noundef %143, ptr noundef %144, ptr noundef %145, ptr noundef %148, ptr noundef %149, ptr noundef %151, ptr noundef %152)
  br label %1315

154:                                              ; preds = %136
  %155 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %155, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %156

156:                                              ; preds = %178, %154
  %157 = load i64, ptr %28, align 8, !tbaa !9
  %158 = load i64, ptr %20, align 8, !tbaa !9
  %159 = icmp sle i64 %157, %158
  br i1 %159, label %160, label %181

160:                                              ; preds = %156
  %161 = load i64, ptr %28, align 8, !tbaa !9
  %162 = sub nsw i64 %161, 1
  store i64 %162, ptr %21, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %163

163:                                              ; preds = %174, %160
  %164 = load i64, ptr %27, align 8, !tbaa !9
  %165 = load i64, ptr %21, align 8, !tbaa !9
  %166 = icmp sle i64 %164, %165
  br i1 %166, label %167, label %177

167:                                              ; preds = %163
  %168 = load i64, ptr %27, align 8, !tbaa !9
  %169 = load i64, ptr %28, align 8, !tbaa !9
  %170 = mul nsw i64 %169, 65
  %171 = add nsw i64 %168, %170
  %172 = sub nsw i64 %171, 66
  %173 = getelementptr inbounds [4160 x double], ptr %46, i64 0, i64 %172
  store double 0.000000e+00, ptr %173, align 8, !tbaa !11
  br label %174

174:                                              ; preds = %167
  %175 = load i64, ptr %27, align 8, !tbaa !9
  %176 = add nsw i64 %175, 1
  store i64 %176, ptr %27, align 8, !tbaa !9
  br label %163, !llvm.loop !13

177:                                              ; preds = %163
  br label %178

178:                                              ; preds = %177
  %179 = load i64, ptr %28, align 8, !tbaa !9
  %180 = add nsw i64 %179, 1
  store i64 %180, ptr %28, align 8, !tbaa !9
  br label %156, !llvm.loop !15

181:                                              ; preds = %156
  %182 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %182, ptr %20, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %183

183:                                              ; preds = %206, %181
  %184 = load i64, ptr %28, align 8, !tbaa !9
  %185 = load i64, ptr %20, align 8, !tbaa !9
  %186 = icmp sle i64 %184, %185
  br i1 %186, label %187, label %209

187:                                              ; preds = %183
  %188 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %188, ptr %21, align 8, !tbaa !9
  %189 = load i64, ptr %28, align 8, !tbaa !9
  %190 = add nsw i64 %189, 1
  store i64 %190, ptr %27, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %202, %187
  %192 = load i64, ptr %27, align 8, !tbaa !9
  %193 = load i64, ptr %21, align 8, !tbaa !9
  %194 = icmp sle i64 %192, %193
  br i1 %194, label %195, label %205

195:                                              ; preds = %191
  %196 = load i64, ptr %27, align 8, !tbaa !9
  %197 = load i64, ptr %28, align 8, !tbaa !9
  %198 = mul nsw i64 %197, 65
  %199 = add nsw i64 %196, %198
  %200 = sub nsw i64 %199, 66
  %201 = getelementptr inbounds [4160 x double], ptr %47, i64 0, i64 %200
  store double 0.000000e+00, ptr %201, align 8, !tbaa !11
  br label %202

202:                                              ; preds = %195
  %203 = load i64, ptr %27, align 8, !tbaa !9
  %204 = add nsw i64 %203, 1
  store i64 %204, ptr %27, align 8, !tbaa !9
  br label %191, !llvm.loop !16

205:                                              ; preds = %191
  br label %206

206:                                              ; preds = %205
  %207 = load i64, ptr %28, align 8, !tbaa !9
  %208 = add nsw i64 %207, 1
  store i64 %208, ptr %28, align 8, !tbaa !9
  br label %183, !llvm.loop !17

209:                                              ; preds = %183
  %210 = load i64, ptr %43, align 8, !tbaa !9
  %211 = load ptr, ptr %11, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp sle i64 %210, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %209
  %215 = load i64, ptr %43, align 8, !tbaa !9
  br label %219

216:                                              ; preds = %209
  %217 = load ptr, ptr %11, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %216, %214
  %220 = phi i64 [ %215, %214 ], [ %218, %216 ]
  store i64 %220, ptr %20, align 8, !tbaa !9
  %221 = load ptr, ptr %13, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = add nsw i64 %222, 2
  store i64 %223, ptr %28, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %251, %219
  %225 = load i64, ptr %28, align 8, !tbaa !9
  %226 = load i64, ptr %20, align 8, !tbaa !9
  %227 = icmp sle i64 %225, %226
  br i1 %227, label %228, label %254

228:                                              ; preds = %224
  %229 = load ptr, ptr %12, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  store i64 %230, ptr %21, align 8, !tbaa !9
  %231 = load i64, ptr %43, align 8, !tbaa !9
  %232 = load i64, ptr %28, align 8, !tbaa !9
  %233 = sub nsw i64 %231, %232
  %234 = add nsw i64 %233, 2
  store i64 %234, ptr %27, align 8, !tbaa !9
  br label %235

235:                                              ; preds = %247, %228
  %236 = load i64, ptr %27, align 8, !tbaa !9
  %237 = load i64, ptr %21, align 8, !tbaa !9
  %238 = icmp sle i64 %236, %237
  br i1 %238, label %239, label %250

239:                                              ; preds = %235
  %240 = load ptr, ptr %14, align 8, !tbaa !5
  %241 = load i64, ptr %27, align 8, !tbaa !9
  %242 = load i64, ptr %28, align 8, !tbaa !9
  %243 = load i64, ptr %18, align 8, !tbaa !9
  %244 = mul nsw i64 %242, %243
  %245 = add nsw i64 %241, %244
  %246 = getelementptr inbounds double, ptr %240, i64 %245
  store double 0.000000e+00, ptr %246, align 8, !tbaa !11
  br label %247

247:                                              ; preds = %239
  %248 = load i64, ptr %27, align 8, !tbaa !9
  %249 = add nsw i64 %248, 1
  store i64 %249, ptr %27, align 8, !tbaa !9
  br label %235, !llvm.loop !18

250:                                              ; preds = %235
  br label %251

251:                                              ; preds = %250
  %252 = load i64, ptr %28, align 8, !tbaa !9
  %253 = add nsw i64 %252, 1
  store i64 %253, ptr %28, align 8, !tbaa !9
  br label %224, !llvm.loop !19

254:                                              ; preds = %224
  store i64 1, ptr %42, align 8, !tbaa !9
  %255 = load ptr, ptr %10, align 8, !tbaa !5
  %256 = load i64, ptr %255, align 8, !tbaa !9
  %257 = load ptr, ptr %11, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = icmp sle i64 %256, %258
  br i1 %259, label %260, label %263

260:                                              ; preds = %254
  %261 = load ptr, ptr %10, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  br label %266

263:                                              ; preds = %254
  %264 = load ptr, ptr %11, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  br label %266

266:                                              ; preds = %263, %260
  %267 = phi i64 [ %262, %260 ], [ %265, %263 ]
  store i64 %267, ptr %20, align 8, !tbaa !9
  %268 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %268, ptr %21, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %269

269:                                              ; preds = %1310, %266
  %270 = load i64, ptr %21, align 8, !tbaa !9
  %271 = icmp slt i64 %270, 0
  br i1 %271, label %272, label %277

272:                                              ; preds = %269
  %273 = load i64, ptr %28, align 8, !tbaa !9
  %274 = load i64, ptr %20, align 8, !tbaa !9
  %275 = icmp sge i64 %273, %274
  %276 = zext i1 %275 to i32
  br label %282

277:                                              ; preds = %269
  %278 = load i64, ptr %28, align 8, !tbaa !9
  %279 = load i64, ptr %20, align 8, !tbaa !9
  %280 = icmp sle i64 %278, %279
  %281 = zext i1 %280 to i32
  br label %282

282:                                              ; preds = %277, %272
  %283 = phi i32 [ %276, %272 ], [ %281, %277 ]
  %284 = icmp ne i32 %283, 0
  br i1 %284, label %285, label %1314

285:                                              ; preds = %282
  %286 = load i64, ptr %35, align 8, !tbaa !9
  store i64 %286, ptr %22, align 8, !tbaa !9
  %287 = load ptr, ptr %10, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = load ptr, ptr %11, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = icmp sle i64 %288, %290
  br i1 %291, label %292, label %295

292:                                              ; preds = %285
  %293 = load ptr, ptr %10, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  br label %298

295:                                              ; preds = %285
  %296 = load ptr, ptr %11, align 8, !tbaa !5
  %297 = load i64, ptr %296, align 8, !tbaa !9
  br label %298

298:                                              ; preds = %295, %292
  %299 = phi i64 [ %294, %292 ], [ %297, %295 ]
  %300 = load i64, ptr %28, align 8, !tbaa !9
  %301 = sub nsw i64 %299, %300
  %302 = add nsw i64 %301, 1
  store i64 %302, ptr %23, align 8, !tbaa !9
  %303 = load i64, ptr %22, align 8, !tbaa !9
  %304 = load i64, ptr %23, align 8, !tbaa !9
  %305 = icmp sle i64 %303, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %298
  %307 = load i64, ptr %22, align 8, !tbaa !9
  br label %310

308:                                              ; preds = %298
  %309 = load i64, ptr %23, align 8, !tbaa !9
  br label %310

310:                                              ; preds = %308, %306
  %311 = phi i64 [ %307, %306 ], [ %309, %308 ]
  store i64 %311, ptr %34, align 8, !tbaa !9
  %312 = load ptr, ptr %12, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  %314 = load i64, ptr %34, align 8, !tbaa !9
  %315 = sub nsw i64 %313, %314
  store i64 %315, ptr %22, align 8, !tbaa !9
  %316 = load ptr, ptr %10, align 8, !tbaa !5
  %317 = load i64, ptr %316, align 8, !tbaa !9
  %318 = load i64, ptr %28, align 8, !tbaa !9
  %319 = sub nsw i64 %317, %318
  %320 = load i64, ptr %34, align 8, !tbaa !9
  %321 = sub nsw i64 %319, %320
  %322 = add nsw i64 %321, 1
  store i64 %322, ptr %23, align 8, !tbaa !9
  %323 = load i64, ptr %22, align 8, !tbaa !9
  %324 = load i64, ptr %23, align 8, !tbaa !9
  %325 = icmp sle i64 %323, %324
  br i1 %325, label %326, label %328

326:                                              ; preds = %310
  %327 = load i64, ptr %22, align 8, !tbaa !9
  br label %330

328:                                              ; preds = %310
  %329 = load i64, ptr %23, align 8, !tbaa !9
  br label %330

330:                                              ; preds = %328, %326
  %331 = phi i64 [ %327, %326 ], [ %329, %328 ]
  store i64 %331, ptr %29, align 8, !tbaa !9
  %332 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %332, ptr %22, align 8, !tbaa !9
  %333 = load ptr, ptr %10, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = load i64, ptr %28, align 8, !tbaa !9
  %336 = sub nsw i64 %334, %335
  %337 = load ptr, ptr %12, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  %339 = sub nsw i64 %336, %338
  %340 = add nsw i64 %339, 1
  store i64 %340, ptr %23, align 8, !tbaa !9
  %341 = load i64, ptr %22, align 8, !tbaa !9
  %342 = load i64, ptr %23, align 8, !tbaa !9
  %343 = icmp sle i64 %341, %342
  br i1 %343, label %344, label %346

344:                                              ; preds = %330
  %345 = load i64, ptr %22, align 8, !tbaa !9
  br label %348

346:                                              ; preds = %330
  %347 = load i64, ptr %23, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %346, %344
  %349 = phi i64 [ %345, %344 ], [ %347, %346 ]
  store i64 %349, ptr %30, align 8, !tbaa !9
  %350 = load i64, ptr %28, align 8, !tbaa !9
  %351 = load i64, ptr %34, align 8, !tbaa !9
  %352 = add nsw i64 %350, %351
  %353 = sub nsw i64 %352, 1
  store i64 %353, ptr %22, align 8, !tbaa !9
  %354 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %354, ptr %37, align 8, !tbaa !9
  br label %355

355:                                              ; preds = %690, %348
  %356 = load i64, ptr %37, align 8, !tbaa !9
  %357 = load i64, ptr %22, align 8, !tbaa !9
  %358 = icmp sle i64 %356, %357
  br i1 %358, label %359, label %693

359:                                              ; preds = %355
  %360 = load i64, ptr %37, align 8, !tbaa !9
  %361 = load i64, ptr %43, align 8, !tbaa !9
  %362 = add nsw i64 %360, %361
  %363 = load ptr, ptr %11, align 8, !tbaa !5
  %364 = load i64, ptr %363, align 8, !tbaa !9
  %365 = icmp sle i64 %362, %364
  br i1 %365, label %366, label %387

366:                                              ; preds = %359
  %367 = load ptr, ptr %12, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  store i64 %368, ptr %23, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %369

369:                                              ; preds = %383, %366
  %370 = load i64, ptr %27, align 8, !tbaa !9
  %371 = load i64, ptr %23, align 8, !tbaa !9
  %372 = icmp sle i64 %370, %371
  br i1 %372, label %373, label %386

373:                                              ; preds = %369
  %374 = load ptr, ptr %14, align 8, !tbaa !5
  %375 = load i64, ptr %27, align 8, !tbaa !9
  %376 = load i64, ptr %37, align 8, !tbaa !9
  %377 = load i64, ptr %43, align 8, !tbaa !9
  %378 = add nsw i64 %376, %377
  %379 = load i64, ptr %18, align 8, !tbaa !9
  %380 = mul nsw i64 %378, %379
  %381 = add nsw i64 %375, %380
  %382 = getelementptr inbounds double, ptr %374, i64 %381
  store double 0.000000e+00, ptr %382, align 8, !tbaa !11
  br label %383

383:                                              ; preds = %373
  %384 = load i64, ptr %27, align 8, !tbaa !9
  %385 = add nsw i64 %384, 1
  store i64 %385, ptr %27, align 8, !tbaa !9
  br label %369, !llvm.loop !20

386:                                              ; preds = %369
  br label %387

387:                                              ; preds = %386, %359
  %388 = load ptr, ptr %12, align 8, !tbaa !5
  %389 = load i64, ptr %388, align 8, !tbaa !9
  store i64 %389, ptr %23, align 8, !tbaa !9
  %390 = load ptr, ptr %10, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = load i64, ptr %37, align 8, !tbaa !9
  %393 = sub nsw i64 %391, %392
  store i64 %393, ptr %24, align 8, !tbaa !9
  %394 = load i64, ptr %23, align 8, !tbaa !9
  %395 = load i64, ptr %24, align 8, !tbaa !9
  %396 = icmp sle i64 %394, %395
  br i1 %396, label %397, label %399

397:                                              ; preds = %387
  %398 = load i64, ptr %23, align 8, !tbaa !9
  br label %401

399:                                              ; preds = %387
  %400 = load i64, ptr %24, align 8, !tbaa !9
  br label %401

401:                                              ; preds = %399, %397
  %402 = phi i64 [ %398, %397 ], [ %400, %399 ]
  store i64 %402, ptr %41, align 8, !tbaa !9
  %403 = load i64, ptr %41, align 8, !tbaa !9
  %404 = add nsw i64 %403, 1
  store i64 %404, ptr %23, align 8, !tbaa !9
  %405 = load ptr, ptr %14, align 8, !tbaa !5
  %406 = load i64, ptr %43, align 8, !tbaa !9
  %407 = add nsw i64 %406, 1
  %408 = load i64, ptr %37, align 8, !tbaa !9
  %409 = load i64, ptr %18, align 8, !tbaa !9
  %410 = mul nsw i64 %408, %409
  %411 = add nsw i64 %407, %410
  %412 = getelementptr inbounds double, ptr %405, i64 %411
  %413 = call i64 @f2c_idamax(ptr noundef %23, ptr noundef %412, ptr noundef @c__1)
  store i64 %413, ptr %40, align 8, !tbaa !9
  %414 = load i64, ptr %40, align 8, !tbaa !9
  %415 = load i64, ptr %37, align 8, !tbaa !9
  %416 = add nsw i64 %414, %415
  %417 = load i64, ptr %28, align 8, !tbaa !9
  %418 = sub nsw i64 %416, %417
  %419 = load ptr, ptr %16, align 8, !tbaa !5
  %420 = load i64, ptr %37, align 8, !tbaa !9
  %421 = getelementptr inbounds i64, ptr %419, i64 %420
  store i64 %418, ptr %421, align 8, !tbaa !9
  %422 = load ptr, ptr %14, align 8, !tbaa !5
  %423 = load i64, ptr %43, align 8, !tbaa !9
  %424 = load i64, ptr %40, align 8, !tbaa !9
  %425 = add nsw i64 %423, %424
  %426 = load i64, ptr %37, align 8, !tbaa !9
  %427 = load i64, ptr %18, align 8, !tbaa !9
  %428 = mul nsw i64 %426, %427
  %429 = add nsw i64 %425, %428
  %430 = getelementptr inbounds double, ptr %422, i64 %429
  %431 = load double, ptr %430, align 8, !tbaa !11
  %432 = fcmp une double %431, 0.000000e+00
  br i1 %432, label %433, label %641

433:                                              ; preds = %401
  %434 = load i64, ptr %37, align 8, !tbaa !9
  %435 = load ptr, ptr %13, align 8, !tbaa !5
  %436 = load i64, ptr %435, align 8, !tbaa !9
  %437 = add nsw i64 %434, %436
  %438 = load i64, ptr %40, align 8, !tbaa !9
  %439 = add nsw i64 %437, %438
  %440 = sub nsw i64 %439, 1
  store i64 %440, ptr %25, align 8, !tbaa !9
  %441 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %441, ptr %23, align 8, !tbaa !9
  %442 = load i64, ptr %25, align 8, !tbaa !9
  %443 = load ptr, ptr %11, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = icmp sle i64 %442, %444
  br i1 %445, label %446, label %448

446:                                              ; preds = %433
  %447 = load i64, ptr %25, align 8, !tbaa !9
  br label %451

448:                                              ; preds = %433
  %449 = load ptr, ptr %11, align 8, !tbaa !5
  %450 = load i64, ptr %449, align 8, !tbaa !9
  br label %451

451:                                              ; preds = %448, %446
  %452 = phi i64 [ %447, %446 ], [ %450, %448 ]
  store i64 %452, ptr %24, align 8, !tbaa !9
  %453 = load i64, ptr %23, align 8, !tbaa !9
  %454 = load i64, ptr %24, align 8, !tbaa !9
  %455 = icmp sge i64 %453, %454
  br i1 %455, label %456, label %458

456:                                              ; preds = %451
  %457 = load i64, ptr %23, align 8, !tbaa !9
  br label %460

458:                                              ; preds = %451
  %459 = load i64, ptr %24, align 8, !tbaa !9
  br label %460

460:                                              ; preds = %458, %456
  %461 = phi i64 [ %457, %456 ], [ %459, %458 ]
  store i64 %461, ptr %42, align 8, !tbaa !9
  %462 = load i64, ptr %40, align 8, !tbaa !9
  %463 = icmp ne i64 %462, 1
  br i1 %463, label %464, label %567

464:                                              ; preds = %460
  %465 = load i64, ptr %40, align 8, !tbaa !9
  %466 = load i64, ptr %37, align 8, !tbaa !9
  %467 = add nsw i64 %465, %466
  %468 = sub nsw i64 %467, 1
  %469 = load i64, ptr %28, align 8, !tbaa !9
  %470 = load ptr, ptr %12, align 8, !tbaa !5
  %471 = load i64, ptr %470, align 8, !tbaa !9
  %472 = add nsw i64 %469, %471
  %473 = icmp slt i64 %468, %472
  br i1 %473, label %474, label %507

474:                                              ; preds = %464
  %475 = load ptr, ptr %15, align 8, !tbaa !5
  %476 = load i64, ptr %475, align 8, !tbaa !9
  %477 = sub nsw i64 %476, 1
  store i64 %477, ptr %23, align 8, !tbaa !9
  %478 = load ptr, ptr %15, align 8, !tbaa !5
  %479 = load i64, ptr %478, align 8, !tbaa !9
  %480 = sub nsw i64 %479, 1
  store i64 %480, ptr %24, align 8, !tbaa !9
  %481 = load ptr, ptr %14, align 8, !tbaa !5
  %482 = load i64, ptr %43, align 8, !tbaa !9
  %483 = add nsw i64 %482, 1
  %484 = load i64, ptr %37, align 8, !tbaa !9
  %485 = add nsw i64 %483, %484
  %486 = load i64, ptr %28, align 8, !tbaa !9
  %487 = sub nsw i64 %485, %486
  %488 = load i64, ptr %28, align 8, !tbaa !9
  %489 = load i64, ptr %18, align 8, !tbaa !9
  %490 = mul nsw i64 %488, %489
  %491 = add nsw i64 %487, %490
  %492 = getelementptr inbounds double, ptr %481, i64 %491
  %493 = load ptr, ptr %14, align 8, !tbaa !5
  %494 = load i64, ptr %43, align 8, !tbaa !9
  %495 = load i64, ptr %40, align 8, !tbaa !9
  %496 = add nsw i64 %494, %495
  %497 = load i64, ptr %37, align 8, !tbaa !9
  %498 = add nsw i64 %496, %497
  %499 = load i64, ptr %28, align 8, !tbaa !9
  %500 = sub nsw i64 %498, %499
  %501 = load i64, ptr %28, align 8, !tbaa !9
  %502 = load i64, ptr %18, align 8, !tbaa !9
  %503 = mul nsw i64 %501, %502
  %504 = add nsw i64 %500, %503
  %505 = getelementptr inbounds double, ptr %493, i64 %504
  %506 = call i32 @f2c_dswap(ptr noundef %34, ptr noundef %492, ptr noundef %23, ptr noundef %505, ptr noundef %24)
  br label %566

507:                                              ; preds = %464
  %508 = load i64, ptr %37, align 8, !tbaa !9
  %509 = load i64, ptr %28, align 8, !tbaa !9
  %510 = sub nsw i64 %508, %509
  store i64 %510, ptr %23, align 8, !tbaa !9
  %511 = load ptr, ptr %15, align 8, !tbaa !5
  %512 = load i64, ptr %511, align 8, !tbaa !9
  %513 = sub nsw i64 %512, 1
  store i64 %513, ptr %24, align 8, !tbaa !9
  %514 = load ptr, ptr %14, align 8, !tbaa !5
  %515 = load i64, ptr %43, align 8, !tbaa !9
  %516 = add nsw i64 %515, 1
  %517 = load i64, ptr %37, align 8, !tbaa !9
  %518 = add nsw i64 %516, %517
  %519 = load i64, ptr %28, align 8, !tbaa !9
  %520 = sub nsw i64 %518, %519
  %521 = load i64, ptr %28, align 8, !tbaa !9
  %522 = load i64, ptr %18, align 8, !tbaa !9
  %523 = mul nsw i64 %521, %522
  %524 = add nsw i64 %520, %523
  %525 = getelementptr inbounds double, ptr %514, i64 %524
  %526 = load i64, ptr %40, align 8, !tbaa !9
  %527 = load i64, ptr %37, align 8, !tbaa !9
  %528 = add nsw i64 %526, %527
  %529 = load i64, ptr %28, align 8, !tbaa !9
  %530 = sub nsw i64 %528, %529
  %531 = load ptr, ptr %12, align 8, !tbaa !5
  %532 = load i64, ptr %531, align 8, !tbaa !9
  %533 = sub nsw i64 %530, %532
  %534 = sub nsw i64 %533, 1
  %535 = getelementptr inbounds [4160 x double], ptr %47, i64 0, i64 %534
  %536 = call i32 @f2c_dswap(ptr noundef %23, ptr noundef %525, ptr noundef %24, ptr noundef %535, ptr noundef @c__65)
  %537 = load i64, ptr %28, align 8, !tbaa !9
  %538 = load i64, ptr %34, align 8, !tbaa !9
  %539 = add nsw i64 %537, %538
  %540 = load i64, ptr %37, align 8, !tbaa !9
  %541 = sub nsw i64 %539, %540
  store i64 %541, ptr %23, align 8, !tbaa !9
  %542 = load ptr, ptr %15, align 8, !tbaa !5
  %543 = load i64, ptr %542, align 8, !tbaa !9
  %544 = sub nsw i64 %543, 1
  store i64 %544, ptr %24, align 8, !tbaa !9
  %545 = load ptr, ptr %15, align 8, !tbaa !5
  %546 = load i64, ptr %545, align 8, !tbaa !9
  %547 = sub nsw i64 %546, 1
  store i64 %547, ptr %25, align 8, !tbaa !9
  %548 = load ptr, ptr %14, align 8, !tbaa !5
  %549 = load i64, ptr %43, align 8, !tbaa !9
  %550 = add nsw i64 %549, 1
  %551 = load i64, ptr %37, align 8, !tbaa !9
  %552 = load i64, ptr %18, align 8, !tbaa !9
  %553 = mul nsw i64 %551, %552
  %554 = add nsw i64 %550, %553
  %555 = getelementptr inbounds double, ptr %548, i64 %554
  %556 = load ptr, ptr %14, align 8, !tbaa !5
  %557 = load i64, ptr %43, align 8, !tbaa !9
  %558 = load i64, ptr %40, align 8, !tbaa !9
  %559 = add nsw i64 %557, %558
  %560 = load i64, ptr %37, align 8, !tbaa !9
  %561 = load i64, ptr %18, align 8, !tbaa !9
  %562 = mul nsw i64 %560, %561
  %563 = add nsw i64 %559, %562
  %564 = getelementptr inbounds double, ptr %556, i64 %563
  %565 = call i32 @f2c_dswap(ptr noundef %23, ptr noundef %555, ptr noundef %24, ptr noundef %564, ptr noundef %25)
  br label %566

566:                                              ; preds = %507, %474
  br label %567

567:                                              ; preds = %566, %460
  %568 = load ptr, ptr %14, align 8, !tbaa !5
  %569 = load i64, ptr %43, align 8, !tbaa !9
  %570 = add nsw i64 %569, 1
  %571 = load i64, ptr %37, align 8, !tbaa !9
  %572 = load i64, ptr %18, align 8, !tbaa !9
  %573 = mul nsw i64 %571, %572
  %574 = add nsw i64 %570, %573
  %575 = getelementptr inbounds double, ptr %568, i64 %574
  %576 = load double, ptr %575, align 8, !tbaa !11
  %577 = fdiv double 1.000000e+00, %576
  store double %577, ptr %26, align 8, !tbaa !11
  %578 = load ptr, ptr %14, align 8, !tbaa !5
  %579 = load i64, ptr %43, align 8, !tbaa !9
  %580 = add nsw i64 %579, 2
  %581 = load i64, ptr %37, align 8, !tbaa !9
  %582 = load i64, ptr %18, align 8, !tbaa !9
  %583 = mul nsw i64 %581, %582
  %584 = add nsw i64 %580, %583
  %585 = getelementptr inbounds double, ptr %578, i64 %584
  %586 = call i32 @f2c_dscal(ptr noundef %41, ptr noundef %26, ptr noundef %585, ptr noundef @c__1)
  %587 = load i64, ptr %42, align 8, !tbaa !9
  store i64 %587, ptr %23, align 8, !tbaa !9
  %588 = load i64, ptr %28, align 8, !tbaa !9
  %589 = load i64, ptr %34, align 8, !tbaa !9
  %590 = add nsw i64 %588, %589
  %591 = sub nsw i64 %590, 1
  store i64 %591, ptr %24, align 8, !tbaa !9
  %592 = load i64, ptr %23, align 8, !tbaa !9
  %593 = load i64, ptr %24, align 8, !tbaa !9
  %594 = icmp sle i64 %592, %593
  br i1 %594, label %595, label %597

595:                                              ; preds = %567
  %596 = load i64, ptr %23, align 8, !tbaa !9
  br label %599

597:                                              ; preds = %567
  %598 = load i64, ptr %24, align 8, !tbaa !9
  br label %599

599:                                              ; preds = %597, %595
  %600 = phi i64 [ %596, %595 ], [ %598, %597 ]
  store i64 %600, ptr %38, align 8, !tbaa !9
  %601 = load i64, ptr %38, align 8, !tbaa !9
  %602 = load i64, ptr %37, align 8, !tbaa !9
  %603 = icmp sgt i64 %601, %602
  br i1 %603, label %604, label %640

604:                                              ; preds = %599
  %605 = load i64, ptr %38, align 8, !tbaa !9
  %606 = load i64, ptr %37, align 8, !tbaa !9
  %607 = sub nsw i64 %605, %606
  store i64 %607, ptr %23, align 8, !tbaa !9
  %608 = load ptr, ptr %15, align 8, !tbaa !5
  %609 = load i64, ptr %608, align 8, !tbaa !9
  %610 = sub nsw i64 %609, 1
  store i64 %610, ptr %24, align 8, !tbaa !9
  %611 = load ptr, ptr %15, align 8, !tbaa !5
  %612 = load i64, ptr %611, align 8, !tbaa !9
  %613 = sub nsw i64 %612, 1
  store i64 %613, ptr %25, align 8, !tbaa !9
  %614 = load ptr, ptr %14, align 8, !tbaa !5
  %615 = load i64, ptr %43, align 8, !tbaa !9
  %616 = add nsw i64 %615, 2
  %617 = load i64, ptr %37, align 8, !tbaa !9
  %618 = load i64, ptr %18, align 8, !tbaa !9
  %619 = mul nsw i64 %617, %618
  %620 = add nsw i64 %616, %619
  %621 = getelementptr inbounds double, ptr %614, i64 %620
  %622 = load ptr, ptr %14, align 8, !tbaa !5
  %623 = load i64, ptr %43, align 8, !tbaa !9
  %624 = load i64, ptr %37, align 8, !tbaa !9
  %625 = add nsw i64 %624, 1
  %626 = load i64, ptr %18, align 8, !tbaa !9
  %627 = mul nsw i64 %625, %626
  %628 = add nsw i64 %623, %627
  %629 = getelementptr inbounds double, ptr %622, i64 %628
  %630 = load ptr, ptr %14, align 8, !tbaa !5
  %631 = load i64, ptr %43, align 8, !tbaa !9
  %632 = add nsw i64 %631, 1
  %633 = load i64, ptr %37, align 8, !tbaa !9
  %634 = add nsw i64 %633, 1
  %635 = load i64, ptr %18, align 8, !tbaa !9
  %636 = mul nsw i64 %634, %635
  %637 = add nsw i64 %632, %636
  %638 = getelementptr inbounds double, ptr %630, i64 %637
  %639 = call i32 @f2c_dger(ptr noundef %41, ptr noundef %23, ptr noundef @c_b18, ptr noundef %621, ptr noundef @c__1, ptr noundef %629, ptr noundef %24, ptr noundef %638, ptr noundef %25)
  br label %640

640:                                              ; preds = %604, %599
  br label %649

641:                                              ; preds = %401
  %642 = load ptr, ptr %17, align 8, !tbaa !5
  %643 = load i64, ptr %642, align 8, !tbaa !9
  %644 = icmp eq i64 %643, 0
  br i1 %644, label %645, label %648

645:                                              ; preds = %641
  %646 = load i64, ptr %37, align 8, !tbaa !9
  %647 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 %646, ptr %647, align 8, !tbaa !9
  br label %648

648:                                              ; preds = %645, %641
  br label %649

649:                                              ; preds = %648, %640
  %650 = load i64, ptr %37, align 8, !tbaa !9
  %651 = load i64, ptr %28, align 8, !tbaa !9
  %652 = sub nsw i64 %650, %651
  %653 = add nsw i64 %652, 1
  store i64 %653, ptr %23, align 8, !tbaa !9
  %654 = load i64, ptr %23, align 8, !tbaa !9
  %655 = load i64, ptr %30, align 8, !tbaa !9
  %656 = icmp sle i64 %654, %655
  br i1 %656, label %657, label %659

657:                                              ; preds = %649
  %658 = load i64, ptr %23, align 8, !tbaa !9
  br label %661

659:                                              ; preds = %649
  %660 = load i64, ptr %30, align 8, !tbaa !9
  br label %661

661:                                              ; preds = %659, %657
  %662 = phi i64 [ %658, %657 ], [ %660, %659 ]
  store i64 %662, ptr %44, align 8, !tbaa !9
  %663 = load i64, ptr %44, align 8, !tbaa !9
  %664 = icmp sgt i64 %663, 0
  br i1 %664, label %665, label %689

665:                                              ; preds = %661
  %666 = load ptr, ptr %14, align 8, !tbaa !5
  %667 = load i64, ptr %43, align 8, !tbaa !9
  %668 = load ptr, ptr %12, align 8, !tbaa !5
  %669 = load i64, ptr %668, align 8, !tbaa !9
  %670 = add nsw i64 %667, %669
  %671 = add nsw i64 %670, 1
  %672 = load i64, ptr %37, align 8, !tbaa !9
  %673 = sub nsw i64 %671, %672
  %674 = load i64, ptr %28, align 8, !tbaa !9
  %675 = add nsw i64 %673, %674
  %676 = load i64, ptr %37, align 8, !tbaa !9
  %677 = load i64, ptr %18, align 8, !tbaa !9
  %678 = mul nsw i64 %676, %677
  %679 = add nsw i64 %675, %678
  %680 = getelementptr inbounds double, ptr %666, i64 %679
  %681 = load i64, ptr %37, align 8, !tbaa !9
  %682 = load i64, ptr %28, align 8, !tbaa !9
  %683 = sub nsw i64 %681, %682
  %684 = add nsw i64 %683, 1
  %685 = mul nsw i64 %684, 65
  %686 = sub nsw i64 %685, 65
  %687 = getelementptr inbounds [4160 x double], ptr %47, i64 0, i64 %686
  %688 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %680, ptr noundef @c__1, ptr noundef %687, ptr noundef @c__1)
  br label %689

689:                                              ; preds = %665, %661
  br label %690

690:                                              ; preds = %689
  %691 = load i64, ptr %37, align 8, !tbaa !9
  %692 = add nsw i64 %691, 1
  store i64 %692, ptr %37, align 8, !tbaa !9
  br label %355, !llvm.loop !21

693:                                              ; preds = %355
  %694 = load i64, ptr %28, align 8, !tbaa !9
  %695 = load i64, ptr %34, align 8, !tbaa !9
  %696 = add nsw i64 %694, %695
  %697 = load ptr, ptr %11, align 8, !tbaa !5
  %698 = load i64, ptr %697, align 8, !tbaa !9
  %699 = icmp sle i64 %696, %698
  br i1 %699, label %700, label %1142

700:                                              ; preds = %693
  %701 = load i64, ptr %42, align 8, !tbaa !9
  %702 = load i64, ptr %28, align 8, !tbaa !9
  %703 = sub nsw i64 %701, %702
  %704 = add nsw i64 %703, 1
  store i64 %704, ptr %22, align 8, !tbaa !9
  %705 = load i64, ptr %22, align 8, !tbaa !9
  %706 = load i64, ptr %43, align 8, !tbaa !9
  %707 = icmp sle i64 %705, %706
  br i1 %707, label %708, label %710

708:                                              ; preds = %700
  %709 = load i64, ptr %22, align 8, !tbaa !9
  br label %712

710:                                              ; preds = %700
  %711 = load i64, ptr %43, align 8, !tbaa !9
  br label %712

712:                                              ; preds = %710, %708
  %713 = phi i64 [ %709, %708 ], [ %711, %710 ]
  %714 = load i64, ptr %34, align 8, !tbaa !9
  %715 = sub nsw i64 %713, %714
  store i64 %715, ptr %31, align 8, !tbaa !9
  store i64 0, ptr %22, align 8, !tbaa !9
  %716 = load i64, ptr %42, align 8, !tbaa !9
  %717 = load i64, ptr %28, align 8, !tbaa !9
  %718 = sub nsw i64 %716, %717
  %719 = load i64, ptr %43, align 8, !tbaa !9
  %720 = sub nsw i64 %718, %719
  %721 = add nsw i64 %720, 1
  store i64 %721, ptr %23, align 8, !tbaa !9
  %722 = load i64, ptr %22, align 8, !tbaa !9
  %723 = load i64, ptr %23, align 8, !tbaa !9
  %724 = icmp sge i64 %722, %723
  br i1 %724, label %725, label %727

725:                                              ; preds = %712
  %726 = load i64, ptr %22, align 8, !tbaa !9
  br label %729

727:                                              ; preds = %712
  %728 = load i64, ptr %23, align 8, !tbaa !9
  br label %729

729:                                              ; preds = %727, %725
  %730 = phi i64 [ %726, %725 ], [ %728, %727 ]
  store i64 %730, ptr %32, align 8, !tbaa !9
  %731 = load ptr, ptr %15, align 8, !tbaa !5
  %732 = load i64, ptr %731, align 8, !tbaa !9
  %733 = sub nsw i64 %732, 1
  store i64 %733, ptr %22, align 8, !tbaa !9
  %734 = load ptr, ptr %14, align 8, !tbaa !5
  %735 = load i64, ptr %43, align 8, !tbaa !9
  %736 = add nsw i64 %735, 1
  %737 = load i64, ptr %34, align 8, !tbaa !9
  %738 = sub nsw i64 %736, %737
  %739 = load i64, ptr %28, align 8, !tbaa !9
  %740 = load i64, ptr %34, align 8, !tbaa !9
  %741 = add nsw i64 %739, %740
  %742 = load i64, ptr %18, align 8, !tbaa !9
  %743 = mul nsw i64 %741, %742
  %744 = add nsw i64 %738, %743
  %745 = getelementptr inbounds double, ptr %734, i64 %744
  %746 = load ptr, ptr %16, align 8, !tbaa !5
  %747 = load i64, ptr %28, align 8, !tbaa !9
  %748 = getelementptr inbounds i64, ptr %746, i64 %747
  %749 = call i32 @dlaswp_(ptr noundef %31, ptr noundef %745, ptr noundef %22, ptr noundef @c__1, ptr noundef %34, ptr noundef %748, ptr noundef @c__1)
  %750 = load i64, ptr %28, align 8, !tbaa !9
  %751 = load i64, ptr %34, align 8, !tbaa !9
  %752 = add nsw i64 %750, %751
  %753 = sub nsw i64 %752, 1
  store i64 %753, ptr %22, align 8, !tbaa !9
  %754 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %754, ptr %27, align 8, !tbaa !9
  br label %755

755:                                              ; preds = %770, %729
  %756 = load i64, ptr %27, align 8, !tbaa !9
  %757 = load i64, ptr %22, align 8, !tbaa !9
  %758 = icmp sle i64 %756, %757
  br i1 %758, label %759, label %773

759:                                              ; preds = %755
  %760 = load ptr, ptr %16, align 8, !tbaa !5
  %761 = load i64, ptr %27, align 8, !tbaa !9
  %762 = getelementptr inbounds i64, ptr %760, i64 %761
  %763 = load i64, ptr %762, align 8, !tbaa !9
  %764 = load i64, ptr %28, align 8, !tbaa !9
  %765 = add nsw i64 %763, %764
  %766 = sub nsw i64 %765, 1
  %767 = load ptr, ptr %16, align 8, !tbaa !5
  %768 = load i64, ptr %27, align 8, !tbaa !9
  %769 = getelementptr inbounds i64, ptr %767, i64 %768
  store i64 %766, ptr %769, align 8, !tbaa !9
  br label %770

770:                                              ; preds = %759
  %771 = load i64, ptr %27, align 8, !tbaa !9
  %772 = add nsw i64 %771, 1
  store i64 %772, ptr %27, align 8, !tbaa !9
  br label %755, !llvm.loop !22

773:                                              ; preds = %755
  %774 = load i64, ptr %28, align 8, !tbaa !9
  %775 = sub nsw i64 %774, 1
  %776 = load i64, ptr %34, align 8, !tbaa !9
  %777 = add nsw i64 %775, %776
  %778 = load i64, ptr %31, align 8, !tbaa !9
  %779 = add nsw i64 %777, %778
  store i64 %779, ptr %33, align 8, !tbaa !9
  %780 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %780, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %27, align 8, !tbaa !9
  br label %781

781:                                              ; preds = %866, %773
  %782 = load i64, ptr %27, align 8, !tbaa !9
  %783 = load i64, ptr %22, align 8, !tbaa !9
  %784 = icmp sle i64 %782, %783
  br i1 %784, label %785, label %869

785:                                              ; preds = %781
  %786 = load i64, ptr %33, align 8, !tbaa !9
  %787 = load i64, ptr %27, align 8, !tbaa !9
  %788 = add nsw i64 %786, %787
  store i64 %788, ptr %37, align 8, !tbaa !9
  %789 = load i64, ptr %28, align 8, !tbaa !9
  %790 = load i64, ptr %34, align 8, !tbaa !9
  %791 = add nsw i64 %789, %790
  %792 = sub nsw i64 %791, 1
  store i64 %792, ptr %23, align 8, !tbaa !9
  %793 = load i64, ptr %28, align 8, !tbaa !9
  %794 = load i64, ptr %27, align 8, !tbaa !9
  %795 = add nsw i64 %793, %794
  %796 = sub nsw i64 %795, 1
  store i64 %796, ptr %36, align 8, !tbaa !9
  br label %797

797:                                              ; preds = %862, %785
  %798 = load i64, ptr %36, align 8, !tbaa !9
  %799 = load i64, ptr %23, align 8, !tbaa !9
  %800 = icmp sle i64 %798, %799
  br i1 %800, label %801, label %865

801:                                              ; preds = %797
  %802 = load ptr, ptr %16, align 8, !tbaa !5
  %803 = load i64, ptr %36, align 8, !tbaa !9
  %804 = getelementptr inbounds i64, ptr %802, i64 %803
  %805 = load i64, ptr %804, align 8, !tbaa !9
  store i64 %805, ptr %39, align 8, !tbaa !9
  %806 = load i64, ptr %39, align 8, !tbaa !9
  %807 = load i64, ptr %36, align 8, !tbaa !9
  %808 = icmp ne i64 %806, %807
  br i1 %808, label %809, label %861

809:                                              ; preds = %801
  %810 = load ptr, ptr %14, align 8, !tbaa !5
  %811 = load i64, ptr %43, align 8, !tbaa !9
  %812 = add nsw i64 %811, 1
  %813 = load i64, ptr %36, align 8, !tbaa !9
  %814 = add nsw i64 %812, %813
  %815 = load i64, ptr %37, align 8, !tbaa !9
  %816 = sub nsw i64 %814, %815
  %817 = load i64, ptr %37, align 8, !tbaa !9
  %818 = load i64, ptr %18, align 8, !tbaa !9
  %819 = mul nsw i64 %817, %818
  %820 = add nsw i64 %816, %819
  %821 = getelementptr inbounds double, ptr %810, i64 %820
  %822 = load double, ptr %821, align 8, !tbaa !11
  store double %822, ptr %45, align 8, !tbaa !11
  %823 = load ptr, ptr %14, align 8, !tbaa !5
  %824 = load i64, ptr %43, align 8, !tbaa !9
  %825 = add nsw i64 %824, 1
  %826 = load i64, ptr %39, align 8, !tbaa !9
  %827 = add nsw i64 %825, %826
  %828 = load i64, ptr %37, align 8, !tbaa !9
  %829 = sub nsw i64 %827, %828
  %830 = load i64, ptr %37, align 8, !tbaa !9
  %831 = load i64, ptr %18, align 8, !tbaa !9
  %832 = mul nsw i64 %830, %831
  %833 = add nsw i64 %829, %832
  %834 = getelementptr inbounds double, ptr %823, i64 %833
  %835 = load double, ptr %834, align 8, !tbaa !11
  %836 = load ptr, ptr %14, align 8, !tbaa !5
  %837 = load i64, ptr %43, align 8, !tbaa !9
  %838 = add nsw i64 %837, 1
  %839 = load i64, ptr %36, align 8, !tbaa !9
  %840 = add nsw i64 %838, %839
  %841 = load i64, ptr %37, align 8, !tbaa !9
  %842 = sub nsw i64 %840, %841
  %843 = load i64, ptr %37, align 8, !tbaa !9
  %844 = load i64, ptr %18, align 8, !tbaa !9
  %845 = mul nsw i64 %843, %844
  %846 = add nsw i64 %842, %845
  %847 = getelementptr inbounds double, ptr %836, i64 %846
  store double %835, ptr %847, align 8, !tbaa !11
  %848 = load double, ptr %45, align 8, !tbaa !11
  %849 = load ptr, ptr %14, align 8, !tbaa !5
  %850 = load i64, ptr %43, align 8, !tbaa !9
  %851 = add nsw i64 %850, 1
  %852 = load i64, ptr %39, align 8, !tbaa !9
  %853 = add nsw i64 %851, %852
  %854 = load i64, ptr %37, align 8, !tbaa !9
  %855 = sub nsw i64 %853, %854
  %856 = load i64, ptr %37, align 8, !tbaa !9
  %857 = load i64, ptr %18, align 8, !tbaa !9
  %858 = mul nsw i64 %856, %857
  %859 = add nsw i64 %855, %858
  %860 = getelementptr inbounds double, ptr %849, i64 %859
  store double %848, ptr %860, align 8, !tbaa !11
  br label %861

861:                                              ; preds = %809, %801
  br label %862

862:                                              ; preds = %861
  %863 = load i64, ptr %36, align 8, !tbaa !9
  %864 = add nsw i64 %863, 1
  store i64 %864, ptr %36, align 8, !tbaa !9
  br label %797, !llvm.loop !23

865:                                              ; preds = %797
  br label %866

866:                                              ; preds = %865
  %867 = load i64, ptr %27, align 8, !tbaa !9
  %868 = add nsw i64 %867, 1
  store i64 %868, ptr %27, align 8, !tbaa !9
  br label %781, !llvm.loop !24

869:                                              ; preds = %781
  %870 = load i64, ptr %31, align 8, !tbaa !9
  %871 = icmp sgt i64 %870, 0
  br i1 %871, label %872, label %985

872:                                              ; preds = %869
  %873 = load ptr, ptr %15, align 8, !tbaa !5
  %874 = load i64, ptr %873, align 8, !tbaa !9
  %875 = sub nsw i64 %874, 1
  store i64 %875, ptr %22, align 8, !tbaa !9
  %876 = load ptr, ptr %15, align 8, !tbaa !5
  %877 = load i64, ptr %876, align 8, !tbaa !9
  %878 = sub nsw i64 %877, 1
  store i64 %878, ptr %23, align 8, !tbaa !9
  %879 = load ptr, ptr %14, align 8, !tbaa !5
  %880 = load i64, ptr %43, align 8, !tbaa !9
  %881 = add nsw i64 %880, 1
  %882 = load i64, ptr %28, align 8, !tbaa !9
  %883 = load i64, ptr %18, align 8, !tbaa !9
  %884 = mul nsw i64 %882, %883
  %885 = add nsw i64 %881, %884
  %886 = getelementptr inbounds double, ptr %879, i64 %885
  %887 = load ptr, ptr %14, align 8, !tbaa !5
  %888 = load i64, ptr %43, align 8, !tbaa !9
  %889 = add nsw i64 %888, 1
  %890 = load i64, ptr %34, align 8, !tbaa !9
  %891 = sub nsw i64 %889, %890
  %892 = load i64, ptr %28, align 8, !tbaa !9
  %893 = load i64, ptr %34, align 8, !tbaa !9
  %894 = add nsw i64 %892, %893
  %895 = load i64, ptr %18, align 8, !tbaa !9
  %896 = mul nsw i64 %894, %895
  %897 = add nsw i64 %891, %896
  %898 = getelementptr inbounds double, ptr %887, i64 %897
  %899 = call i32 @f2c_dtrsm(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %34, ptr noundef %31, ptr noundef @c_b31, ptr noundef %886, ptr noundef %22, ptr noundef %898, ptr noundef %23)
  %900 = load i64, ptr %29, align 8, !tbaa !9
  %901 = icmp sgt i64 %900, 0
  br i1 %901, label %902, label %945

902:                                              ; preds = %872
  %903 = load ptr, ptr %15, align 8, !tbaa !5
  %904 = load i64, ptr %903, align 8, !tbaa !9
  %905 = sub nsw i64 %904, 1
  store i64 %905, ptr %22, align 8, !tbaa !9
  %906 = load ptr, ptr %15, align 8, !tbaa !5
  %907 = load i64, ptr %906, align 8, !tbaa !9
  %908 = sub nsw i64 %907, 1
  store i64 %908, ptr %23, align 8, !tbaa !9
  %909 = load ptr, ptr %15, align 8, !tbaa !5
  %910 = load i64, ptr %909, align 8, !tbaa !9
  %911 = sub nsw i64 %910, 1
  store i64 %911, ptr %24, align 8, !tbaa !9
  %912 = load ptr, ptr %14, align 8, !tbaa !5
  %913 = load i64, ptr %43, align 8, !tbaa !9
  %914 = add nsw i64 %913, 1
  %915 = load i64, ptr %34, align 8, !tbaa !9
  %916 = add nsw i64 %914, %915
  %917 = load i64, ptr %28, align 8, !tbaa !9
  %918 = load i64, ptr %18, align 8, !tbaa !9
  %919 = mul nsw i64 %917, %918
  %920 = add nsw i64 %916, %919
  %921 = getelementptr inbounds double, ptr %912, i64 %920
  %922 = load ptr, ptr %14, align 8, !tbaa !5
  %923 = load i64, ptr %43, align 8, !tbaa !9
  %924 = add nsw i64 %923, 1
  %925 = load i64, ptr %34, align 8, !tbaa !9
  %926 = sub nsw i64 %924, %925
  %927 = load i64, ptr %28, align 8, !tbaa !9
  %928 = load i64, ptr %34, align 8, !tbaa !9
  %929 = add nsw i64 %927, %928
  %930 = load i64, ptr %18, align 8, !tbaa !9
  %931 = mul nsw i64 %929, %930
  %932 = add nsw i64 %926, %931
  %933 = getelementptr inbounds double, ptr %922, i64 %932
  %934 = load ptr, ptr %14, align 8, !tbaa !5
  %935 = load i64, ptr %43, align 8, !tbaa !9
  %936 = add nsw i64 %935, 1
  %937 = load i64, ptr %28, align 8, !tbaa !9
  %938 = load i64, ptr %34, align 8, !tbaa !9
  %939 = add nsw i64 %937, %938
  %940 = load i64, ptr %18, align 8, !tbaa !9
  %941 = mul nsw i64 %939, %940
  %942 = add nsw i64 %936, %941
  %943 = getelementptr inbounds double, ptr %934, i64 %942
  %944 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %29, ptr noundef %31, ptr noundef %34, ptr noundef @c_b18, ptr noundef %921, ptr noundef %22, ptr noundef %933, ptr noundef %23, ptr noundef @c_b31, ptr noundef %943, ptr noundef %24)
  br label %945

945:                                              ; preds = %902, %872
  %946 = load i64, ptr %30, align 8, !tbaa !9
  %947 = icmp sgt i64 %946, 0
  br i1 %947, label %948, label %984

948:                                              ; preds = %945
  %949 = load ptr, ptr %15, align 8, !tbaa !5
  %950 = load i64, ptr %949, align 8, !tbaa !9
  %951 = sub nsw i64 %950, 1
  store i64 %951, ptr %22, align 8, !tbaa !9
  %952 = load ptr, ptr %15, align 8, !tbaa !5
  %953 = load i64, ptr %952, align 8, !tbaa !9
  %954 = sub nsw i64 %953, 1
  store i64 %954, ptr %23, align 8, !tbaa !9
  %955 = getelementptr inbounds [4160 x double], ptr %47, i64 0, i64 0
  %956 = load ptr, ptr %14, align 8, !tbaa !5
  %957 = load i64, ptr %43, align 8, !tbaa !9
  %958 = add nsw i64 %957, 1
  %959 = load i64, ptr %34, align 8, !tbaa !9
  %960 = sub nsw i64 %958, %959
  %961 = load i64, ptr %28, align 8, !tbaa !9
  %962 = load i64, ptr %34, align 8, !tbaa !9
  %963 = add nsw i64 %961, %962
  %964 = load i64, ptr %18, align 8, !tbaa !9
  %965 = mul nsw i64 %963, %964
  %966 = add nsw i64 %960, %965
  %967 = getelementptr inbounds double, ptr %956, i64 %966
  %968 = load ptr, ptr %14, align 8, !tbaa !5
  %969 = load i64, ptr %43, align 8, !tbaa !9
  %970 = load ptr, ptr %12, align 8, !tbaa !5
  %971 = load i64, ptr %970, align 8, !tbaa !9
  %972 = add nsw i64 %969, %971
  %973 = add nsw i64 %972, 1
  %974 = load i64, ptr %34, align 8, !tbaa !9
  %975 = sub nsw i64 %973, %974
  %976 = load i64, ptr %28, align 8, !tbaa !9
  %977 = load i64, ptr %34, align 8, !tbaa !9
  %978 = add nsw i64 %976, %977
  %979 = load i64, ptr %18, align 8, !tbaa !9
  %980 = mul nsw i64 %978, %979
  %981 = add nsw i64 %975, %980
  %982 = getelementptr inbounds double, ptr %968, i64 %981
  %983 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %30, ptr noundef %31, ptr noundef %34, ptr noundef @c_b18, ptr noundef %955, ptr noundef @c__65, ptr noundef %967, ptr noundef %22, ptr noundef @c_b31, ptr noundef %982, ptr noundef %23)
  br label %984

984:                                              ; preds = %948, %945
  br label %985

985:                                              ; preds = %984, %869
  %986 = load i64, ptr %32, align 8, !tbaa !9
  %987 = icmp sgt i64 %986, 0
  br i1 %987, label %988, label %1141

988:                                              ; preds = %985
  %989 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %989, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %990

990:                                              ; preds = %1028, %988
  %991 = load i64, ptr %37, align 8, !tbaa !9
  %992 = load i64, ptr %22, align 8, !tbaa !9
  %993 = icmp sle i64 %991, %992
  br i1 %993, label %994, label %1031

994:                                              ; preds = %990
  %995 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %995, ptr %23, align 8, !tbaa !9
  %996 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %996, ptr %36, align 8, !tbaa !9
  br label %997

997:                                              ; preds = %1024, %994
  %998 = load i64, ptr %36, align 8, !tbaa !9
  %999 = load i64, ptr %23, align 8, !tbaa !9
  %1000 = icmp sle i64 %998, %999
  br i1 %1000, label %1001, label %1027

1001:                                             ; preds = %997
  %1002 = load ptr, ptr %14, align 8, !tbaa !5
  %1003 = load i64, ptr %36, align 8, !tbaa !9
  %1004 = load i64, ptr %37, align 8, !tbaa !9
  %1005 = sub nsw i64 %1003, %1004
  %1006 = add nsw i64 %1005, 1
  %1007 = load i64, ptr %37, align 8, !tbaa !9
  %1008 = load i64, ptr %28, align 8, !tbaa !9
  %1009 = add nsw i64 %1007, %1008
  %1010 = load i64, ptr %43, align 8, !tbaa !9
  %1011 = add nsw i64 %1009, %1010
  %1012 = sub nsw i64 %1011, 1
  %1013 = load i64, ptr %18, align 8, !tbaa !9
  %1014 = mul nsw i64 %1012, %1013
  %1015 = add nsw i64 %1006, %1014
  %1016 = getelementptr inbounds double, ptr %1002, i64 %1015
  %1017 = load double, ptr %1016, align 8, !tbaa !11
  %1018 = load i64, ptr %36, align 8, !tbaa !9
  %1019 = load i64, ptr %37, align 8, !tbaa !9
  %1020 = mul nsw i64 %1019, 65
  %1021 = add nsw i64 %1018, %1020
  %1022 = sub nsw i64 %1021, 66
  %1023 = getelementptr inbounds [4160 x double], ptr %46, i64 0, i64 %1022
  store double %1017, ptr %1023, align 8, !tbaa !11
  br label %1024

1024:                                             ; preds = %1001
  %1025 = load i64, ptr %36, align 8, !tbaa !9
  %1026 = add nsw i64 %1025, 1
  store i64 %1026, ptr %36, align 8, !tbaa !9
  br label %997, !llvm.loop !25

1027:                                             ; preds = %997
  br label %1028

1028:                                             ; preds = %1027
  %1029 = load i64, ptr %37, align 8, !tbaa !9
  %1030 = add nsw i64 %1029, 1
  store i64 %1030, ptr %37, align 8, !tbaa !9
  br label %990, !llvm.loop !26

1031:                                             ; preds = %990
  %1032 = load ptr, ptr %15, align 8, !tbaa !5
  %1033 = load i64, ptr %1032, align 8, !tbaa !9
  %1034 = sub nsw i64 %1033, 1
  store i64 %1034, ptr %22, align 8, !tbaa !9
  %1035 = load ptr, ptr %14, align 8, !tbaa !5
  %1036 = load i64, ptr %43, align 8, !tbaa !9
  %1037 = add nsw i64 %1036, 1
  %1038 = load i64, ptr %28, align 8, !tbaa !9
  %1039 = load i64, ptr %18, align 8, !tbaa !9
  %1040 = mul nsw i64 %1038, %1039
  %1041 = add nsw i64 %1037, %1040
  %1042 = getelementptr inbounds double, ptr %1035, i64 %1041
  %1043 = getelementptr inbounds [4160 x double], ptr %46, i64 0, i64 0
  %1044 = call i32 @f2c_dtrsm(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef %34, ptr noundef %32, ptr noundef @c_b31, ptr noundef %1042, ptr noundef %22, ptr noundef %1043, ptr noundef @c__65)
  %1045 = load i64, ptr %29, align 8, !tbaa !9
  %1046 = icmp sgt i64 %1045, 0
  br i1 %1046, label %1047, label %1076

1047:                                             ; preds = %1031
  %1048 = load ptr, ptr %15, align 8, !tbaa !5
  %1049 = load i64, ptr %1048, align 8, !tbaa !9
  %1050 = sub nsw i64 %1049, 1
  store i64 %1050, ptr %22, align 8, !tbaa !9
  %1051 = load ptr, ptr %15, align 8, !tbaa !5
  %1052 = load i64, ptr %1051, align 8, !tbaa !9
  %1053 = sub nsw i64 %1052, 1
  store i64 %1053, ptr %23, align 8, !tbaa !9
  %1054 = load ptr, ptr %14, align 8, !tbaa !5
  %1055 = load i64, ptr %43, align 8, !tbaa !9
  %1056 = add nsw i64 %1055, 1
  %1057 = load i64, ptr %34, align 8, !tbaa !9
  %1058 = add nsw i64 %1056, %1057
  %1059 = load i64, ptr %28, align 8, !tbaa !9
  %1060 = load i64, ptr %18, align 8, !tbaa !9
  %1061 = mul nsw i64 %1059, %1060
  %1062 = add nsw i64 %1058, %1061
  %1063 = getelementptr inbounds double, ptr %1054, i64 %1062
  %1064 = getelementptr inbounds [4160 x double], ptr %46, i64 0, i64 0
  %1065 = load ptr, ptr %14, align 8, !tbaa !5
  %1066 = load i64, ptr %34, align 8, !tbaa !9
  %1067 = add nsw i64 %1066, 1
  %1068 = load i64, ptr %28, align 8, !tbaa !9
  %1069 = load i64, ptr %43, align 8, !tbaa !9
  %1070 = add nsw i64 %1068, %1069
  %1071 = load i64, ptr %18, align 8, !tbaa !9
  %1072 = mul nsw i64 %1070, %1071
  %1073 = add nsw i64 %1067, %1072
  %1074 = getelementptr inbounds double, ptr %1065, i64 %1073
  %1075 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %29, ptr noundef %32, ptr noundef %34, ptr noundef @c_b18, ptr noundef %1063, ptr noundef %22, ptr noundef %1064, ptr noundef @c__65, ptr noundef @c_b31, ptr noundef %1074, ptr noundef %23)
  br label %1076

1076:                                             ; preds = %1047, %1031
  %1077 = load i64, ptr %30, align 8, !tbaa !9
  %1078 = icmp sgt i64 %1077, 0
  br i1 %1078, label %1079, label %1097

1079:                                             ; preds = %1076
  %1080 = load ptr, ptr %15, align 8, !tbaa !5
  %1081 = load i64, ptr %1080, align 8, !tbaa !9
  %1082 = sub nsw i64 %1081, 1
  store i64 %1082, ptr %22, align 8, !tbaa !9
  %1083 = getelementptr inbounds [4160 x double], ptr %47, i64 0, i64 0
  %1084 = getelementptr inbounds [4160 x double], ptr %46, i64 0, i64 0
  %1085 = load ptr, ptr %14, align 8, !tbaa !5
  %1086 = load ptr, ptr %12, align 8, !tbaa !5
  %1087 = load i64, ptr %1086, align 8, !tbaa !9
  %1088 = add nsw i64 %1087, 1
  %1089 = load i64, ptr %28, align 8, !tbaa !9
  %1090 = load i64, ptr %43, align 8, !tbaa !9
  %1091 = add nsw i64 %1089, %1090
  %1092 = load i64, ptr %18, align 8, !tbaa !9
  %1093 = mul nsw i64 %1091, %1092
  %1094 = add nsw i64 %1088, %1093
  %1095 = getelementptr inbounds double, ptr %1085, i64 %1094
  %1096 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %30, ptr noundef %32, ptr noundef %34, ptr noundef @c_b18, ptr noundef %1083, ptr noundef @c__65, ptr noundef %1084, ptr noundef @c__65, ptr noundef @c_b31, ptr noundef %1095, ptr noundef %22)
  br label %1097

1097:                                             ; preds = %1079, %1076
  %1098 = load i64, ptr %32, align 8, !tbaa !9
  store i64 %1098, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %1099

1099:                                             ; preds = %1137, %1097
  %1100 = load i64, ptr %37, align 8, !tbaa !9
  %1101 = load i64, ptr %22, align 8, !tbaa !9
  %1102 = icmp sle i64 %1100, %1101
  br i1 %1102, label %1103, label %1140

1103:                                             ; preds = %1099
  %1104 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %1104, ptr %23, align 8, !tbaa !9
  %1105 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %1105, ptr %36, align 8, !tbaa !9
  br label %1106

1106:                                             ; preds = %1133, %1103
  %1107 = load i64, ptr %36, align 8, !tbaa !9
  %1108 = load i64, ptr %23, align 8, !tbaa !9
  %1109 = icmp sle i64 %1107, %1108
  br i1 %1109, label %1110, label %1136

1110:                                             ; preds = %1106
  %1111 = load i64, ptr %36, align 8, !tbaa !9
  %1112 = load i64, ptr %37, align 8, !tbaa !9
  %1113 = mul nsw i64 %1112, 65
  %1114 = add nsw i64 %1111, %1113
  %1115 = sub nsw i64 %1114, 66
  %1116 = getelementptr inbounds [4160 x double], ptr %46, i64 0, i64 %1115
  %1117 = load double, ptr %1116, align 8, !tbaa !11
  %1118 = load ptr, ptr %14, align 8, !tbaa !5
  %1119 = load i64, ptr %36, align 8, !tbaa !9
  %1120 = load i64, ptr %37, align 8, !tbaa !9
  %1121 = sub nsw i64 %1119, %1120
  %1122 = add nsw i64 %1121, 1
  %1123 = load i64, ptr %37, align 8, !tbaa !9
  %1124 = load i64, ptr %28, align 8, !tbaa !9
  %1125 = add nsw i64 %1123, %1124
  %1126 = load i64, ptr %43, align 8, !tbaa !9
  %1127 = add nsw i64 %1125, %1126
  %1128 = sub nsw i64 %1127, 1
  %1129 = load i64, ptr %18, align 8, !tbaa !9
  %1130 = mul nsw i64 %1128, %1129
  %1131 = add nsw i64 %1122, %1130
  %1132 = getelementptr inbounds double, ptr %1118, i64 %1131
  store double %1117, ptr %1132, align 8, !tbaa !11
  br label %1133

1133:                                             ; preds = %1110
  %1134 = load i64, ptr %36, align 8, !tbaa !9
  %1135 = add nsw i64 %1134, 1
  store i64 %1135, ptr %36, align 8, !tbaa !9
  br label %1106, !llvm.loop !27

1136:                                             ; preds = %1106
  br label %1137

1137:                                             ; preds = %1136
  %1138 = load i64, ptr %37, align 8, !tbaa !9
  %1139 = add nsw i64 %1138, 1
  store i64 %1139, ptr %37, align 8, !tbaa !9
  br label %1099, !llvm.loop !28

1140:                                             ; preds = %1099
  br label %1141

1141:                                             ; preds = %1140, %985
  br label %1167

1142:                                             ; preds = %693
  %1143 = load i64, ptr %28, align 8, !tbaa !9
  %1144 = load i64, ptr %34, align 8, !tbaa !9
  %1145 = add nsw i64 %1143, %1144
  %1146 = sub nsw i64 %1145, 1
  store i64 %1146, ptr %22, align 8, !tbaa !9
  %1147 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %1147, ptr %27, align 8, !tbaa !9
  br label %1148

1148:                                             ; preds = %1163, %1142
  %1149 = load i64, ptr %27, align 8, !tbaa !9
  %1150 = load i64, ptr %22, align 8, !tbaa !9
  %1151 = icmp sle i64 %1149, %1150
  br i1 %1151, label %1152, label %1166

1152:                                             ; preds = %1148
  %1153 = load ptr, ptr %16, align 8, !tbaa !5
  %1154 = load i64, ptr %27, align 8, !tbaa !9
  %1155 = getelementptr inbounds i64, ptr %1153, i64 %1154
  %1156 = load i64, ptr %1155, align 8, !tbaa !9
  %1157 = load i64, ptr %28, align 8, !tbaa !9
  %1158 = add nsw i64 %1156, %1157
  %1159 = sub nsw i64 %1158, 1
  %1160 = load ptr, ptr %16, align 8, !tbaa !5
  %1161 = load i64, ptr %27, align 8, !tbaa !9
  %1162 = getelementptr inbounds i64, ptr %1160, i64 %1161
  store i64 %1159, ptr %1162, align 8, !tbaa !9
  br label %1163

1163:                                             ; preds = %1152
  %1164 = load i64, ptr %27, align 8, !tbaa !9
  %1165 = add nsw i64 %1164, 1
  store i64 %1165, ptr %27, align 8, !tbaa !9
  br label %1148, !llvm.loop !29

1166:                                             ; preds = %1148
  br label %1167

1167:                                             ; preds = %1166, %1141
  %1168 = load i64, ptr %28, align 8, !tbaa !9
  store i64 %1168, ptr %22, align 8, !tbaa !9
  %1169 = load i64, ptr %28, align 8, !tbaa !9
  %1170 = load i64, ptr %34, align 8, !tbaa !9
  %1171 = add nsw i64 %1169, %1170
  %1172 = sub nsw i64 %1171, 1
  store i64 %1172, ptr %37, align 8, !tbaa !9
  br label %1173

1173:                                             ; preds = %1306, %1167
  %1174 = load i64, ptr %37, align 8, !tbaa !9
  %1175 = load i64, ptr %22, align 8, !tbaa !9
  %1176 = icmp sge i64 %1174, %1175
  br i1 %1176, label %1177, label %1309

1177:                                             ; preds = %1173
  %1178 = load ptr, ptr %16, align 8, !tbaa !5
  %1179 = load i64, ptr %37, align 8, !tbaa !9
  %1180 = getelementptr inbounds i64, ptr %1178, i64 %1179
  %1181 = load i64, ptr %1180, align 8, !tbaa !9
  %1182 = load i64, ptr %37, align 8, !tbaa !9
  %1183 = sub nsw i64 %1181, %1182
  %1184 = add nsw i64 %1183, 1
  store i64 %1184, ptr %40, align 8, !tbaa !9
  %1185 = load i64, ptr %40, align 8, !tbaa !9
  %1186 = icmp ne i64 %1185, 1
  br i1 %1186, label %1187, label %1264

1187:                                             ; preds = %1177
  %1188 = load i64, ptr %40, align 8, !tbaa !9
  %1189 = load i64, ptr %37, align 8, !tbaa !9
  %1190 = add nsw i64 %1188, %1189
  %1191 = sub nsw i64 %1190, 1
  %1192 = load i64, ptr %28, align 8, !tbaa !9
  %1193 = load ptr, ptr %12, align 8, !tbaa !5
  %1194 = load i64, ptr %1193, align 8, !tbaa !9
  %1195 = add nsw i64 %1192, %1194
  %1196 = icmp slt i64 %1191, %1195
  br i1 %1196, label %1197, label %1233

1197:                                             ; preds = %1187
  %1198 = load i64, ptr %37, align 8, !tbaa !9
  %1199 = load i64, ptr %28, align 8, !tbaa !9
  %1200 = sub nsw i64 %1198, %1199
  store i64 %1200, ptr %23, align 8, !tbaa !9
  %1201 = load ptr, ptr %15, align 8, !tbaa !5
  %1202 = load i64, ptr %1201, align 8, !tbaa !9
  %1203 = sub nsw i64 %1202, 1
  store i64 %1203, ptr %24, align 8, !tbaa !9
  %1204 = load ptr, ptr %15, align 8, !tbaa !5
  %1205 = load i64, ptr %1204, align 8, !tbaa !9
  %1206 = sub nsw i64 %1205, 1
  store i64 %1206, ptr %25, align 8, !tbaa !9
  %1207 = load ptr, ptr %14, align 8, !tbaa !5
  %1208 = load i64, ptr %43, align 8, !tbaa !9
  %1209 = add nsw i64 %1208, 1
  %1210 = load i64, ptr %37, align 8, !tbaa !9
  %1211 = add nsw i64 %1209, %1210
  %1212 = load i64, ptr %28, align 8, !tbaa !9
  %1213 = sub nsw i64 %1211, %1212
  %1214 = load i64, ptr %28, align 8, !tbaa !9
  %1215 = load i64, ptr %18, align 8, !tbaa !9
  %1216 = mul nsw i64 %1214, %1215
  %1217 = add nsw i64 %1213, %1216
  %1218 = getelementptr inbounds double, ptr %1207, i64 %1217
  %1219 = load ptr, ptr %14, align 8, !tbaa !5
  %1220 = load i64, ptr %43, align 8, !tbaa !9
  %1221 = load i64, ptr %40, align 8, !tbaa !9
  %1222 = add nsw i64 %1220, %1221
  %1223 = load i64, ptr %37, align 8, !tbaa !9
  %1224 = add nsw i64 %1222, %1223
  %1225 = load i64, ptr %28, align 8, !tbaa !9
  %1226 = sub nsw i64 %1224, %1225
  %1227 = load i64, ptr %28, align 8, !tbaa !9
  %1228 = load i64, ptr %18, align 8, !tbaa !9
  %1229 = mul nsw i64 %1227, %1228
  %1230 = add nsw i64 %1226, %1229
  %1231 = getelementptr inbounds double, ptr %1219, i64 %1230
  %1232 = call i32 @f2c_dswap(ptr noundef %23, ptr noundef %1218, ptr noundef %24, ptr noundef %1231, ptr noundef %25)
  br label %1263

1233:                                             ; preds = %1187
  %1234 = load i64, ptr %37, align 8, !tbaa !9
  %1235 = load i64, ptr %28, align 8, !tbaa !9
  %1236 = sub nsw i64 %1234, %1235
  store i64 %1236, ptr %23, align 8, !tbaa !9
  %1237 = load ptr, ptr %15, align 8, !tbaa !5
  %1238 = load i64, ptr %1237, align 8, !tbaa !9
  %1239 = sub nsw i64 %1238, 1
  store i64 %1239, ptr %24, align 8, !tbaa !9
  %1240 = load ptr, ptr %14, align 8, !tbaa !5
  %1241 = load i64, ptr %43, align 8, !tbaa !9
  %1242 = add nsw i64 %1241, 1
  %1243 = load i64, ptr %37, align 8, !tbaa !9
  %1244 = add nsw i64 %1242, %1243
  %1245 = load i64, ptr %28, align 8, !tbaa !9
  %1246 = sub nsw i64 %1244, %1245
  %1247 = load i64, ptr %28, align 8, !tbaa !9
  %1248 = load i64, ptr %18, align 8, !tbaa !9
  %1249 = mul nsw i64 %1247, %1248
  %1250 = add nsw i64 %1246, %1249
  %1251 = getelementptr inbounds double, ptr %1240, i64 %1250
  %1252 = load i64, ptr %40, align 8, !tbaa !9
  %1253 = load i64, ptr %37, align 8, !tbaa !9
  %1254 = add nsw i64 %1252, %1253
  %1255 = load i64, ptr %28, align 8, !tbaa !9
  %1256 = sub nsw i64 %1254, %1255
  %1257 = load ptr, ptr %12, align 8, !tbaa !5
  %1258 = load i64, ptr %1257, align 8, !tbaa !9
  %1259 = sub nsw i64 %1256, %1258
  %1260 = sub nsw i64 %1259, 1
  %1261 = getelementptr inbounds [4160 x double], ptr %47, i64 0, i64 %1260
  %1262 = call i32 @f2c_dswap(ptr noundef %23, ptr noundef %1251, ptr noundef %24, ptr noundef %1261, ptr noundef @c__65)
  br label %1263

1263:                                             ; preds = %1233, %1197
  br label %1264

1264:                                             ; preds = %1263, %1177
  %1265 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %1265, ptr %23, align 8, !tbaa !9
  %1266 = load i64, ptr %37, align 8, !tbaa !9
  %1267 = load i64, ptr %28, align 8, !tbaa !9
  %1268 = sub nsw i64 %1266, %1267
  %1269 = add nsw i64 %1268, 1
  store i64 %1269, ptr %24, align 8, !tbaa !9
  %1270 = load i64, ptr %23, align 8, !tbaa !9
  %1271 = load i64, ptr %24, align 8, !tbaa !9
  %1272 = icmp sle i64 %1270, %1271
  br i1 %1272, label %1273, label %1275

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

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

1277:                                             ; preds = %1275, %1273
  %1278 = phi i64 [ %1274, %1273 ], [ %1276, %1275 ]
  store i64 %1278, ptr %44, align 8, !tbaa !9
  %1279 = load i64, ptr %44, align 8, !tbaa !9
  %1280 = icmp sgt i64 %1279, 0
  br i1 %1280, label %1281, label %1305

1281:                                             ; preds = %1277
  %1282 = load i64, ptr %37, align 8, !tbaa !9
  %1283 = load i64, ptr %28, align 8, !tbaa !9
  %1284 = sub nsw i64 %1282, %1283
  %1285 = add nsw i64 %1284, 1
  %1286 = mul nsw i64 %1285, 65
  %1287 = sub nsw i64 %1286, 65
  %1288 = getelementptr inbounds [4160 x double], ptr %47, i64 0, i64 %1287
  %1289 = load ptr, ptr %14, align 8, !tbaa !5
  %1290 = load i64, ptr %43, align 8, !tbaa !9
  %1291 = load ptr, ptr %12, align 8, !tbaa !5
  %1292 = load i64, ptr %1291, align 8, !tbaa !9
  %1293 = add nsw i64 %1290, %1292
  %1294 = add nsw i64 %1293, 1
  %1295 = load i64, ptr %37, align 8, !tbaa !9
  %1296 = sub nsw i64 %1294, %1295
  %1297 = load i64, ptr %28, align 8, !tbaa !9
  %1298 = add nsw i64 %1296, %1297
  %1299 = load i64, ptr %37, align 8, !tbaa !9
  %1300 = load i64, ptr %18, align 8, !tbaa !9
  %1301 = mul nsw i64 %1299, %1300
  %1302 = add nsw i64 %1298, %1301
  %1303 = getelementptr inbounds double, ptr %1289, i64 %1302
  %1304 = call i32 @f2c_dcopy(ptr noundef %44, ptr noundef %1288, ptr noundef @c__1, ptr noundef %1303, ptr noundef @c__1)
  br label %1305

1305:                                             ; preds = %1281, %1277
  br label %1306

1306:                                             ; preds = %1305
  %1307 = load i64, ptr %37, align 8, !tbaa !9
  %1308 = add nsw i64 %1307, -1
  store i64 %1308, ptr %37, align 8, !tbaa !9
  br label %1173, !llvm.loop !30

1309:                                             ; preds = %1173
  br label %1310

1310:                                             ; preds = %1309
  %1311 = load i64, ptr %21, align 8, !tbaa !9
  %1312 = load i64, ptr %28, align 8, !tbaa !9
  %1313 = add nsw i64 %1312, %1311
  store i64 %1313, ptr %28, align 8, !tbaa !9
  br label %269, !llvm.loop !31

1314:                                             ; preds = %282
  br label %1315

1315:                                             ; preds = %1314, %141
  store i32 0, ptr %9, align 4
  store i32 1, ptr %48, align 4
  br label %1316

1316:                                             ; preds = %1315, %120, %107
  call void @llvm.lifetime.end.p0(i64 33280, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 33280, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  %1317 = load i32, ptr %9, align 4
  ret i32 %1317
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!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}


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dgbtrf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) local_unnamed_addr #0 {
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca double, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca [4160 x double], align 16
  %23 = alloca [4160 x double], align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 33280, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 33280, ptr nonnull %23) #6
  %24 = load i64, ptr %5, align 8, !tbaa !5
  %25 = xor i64 %24, -1
  %26 = getelementptr inbounds double, ptr %4, i64 %25
  %27 = getelementptr inbounds i8, ptr %6, i64 -8
  %28 = load i64, ptr %3, align 8, !tbaa !5
  %29 = load i64, ptr %2, align 8, !tbaa !5
  %30 = add i64 %29, %28
  store i64 0, ptr %7, align 8, !tbaa !5
  %31 = load i64, ptr %0, align 8, !tbaa !5
  %32 = icmp slt i64 %31, 0
  br i1 %32, label %.thread, label %33

33:                                               ; preds = %8
  %34 = load i64, ptr %1, align 8, !tbaa !5
  %35 = icmp slt i64 %34, 0
  br i1 %35, label %.thread, label %36

36:                                               ; preds = %33
  %37 = load i64, ptr %2, align 8, !tbaa !5
  %38 = icmp slt i64 %37, 0
  br i1 %38, label %.thread, label %39

39:                                               ; preds = %36
  %40 = load i64, ptr %3, align 8, !tbaa !5
  %41 = icmp slt i64 %40, 0
  br i1 %41, label %.thread, label %42

42:                                               ; preds = %39
  %43 = load i64, ptr %5, align 8, !tbaa !5
  %44 = add nsw i64 %37, %30
  %.not = icmp sgt i64 %43, %44
  br i1 %.not, label %46, label %.thread

.thread:                                          ; preds = %42, %39, %36, %33, %8
  %.sink = phi i64 [ -1, %8 ], [ -2, %33 ], [ -3, %36 ], [ -4, %39 ], [ -6, %42 ]
  %.neg = phi i64 [ 1, %8 ], [ 2, %33 ], [ 3, %36 ], [ 4, %39 ], [ 6, %42 ]
  store i64 %.sink, ptr %7, align 8, !tbaa !5
  store i64 %.neg, ptr %9, align 8, !tbaa !5
  %45 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %9) #6
  br label %.loopexit515

46:                                               ; preds = %42
  %47 = icmp eq i64 %31, 0
  %48 = icmp eq i64 %34, 0
  %or.cond = or i1 %47, %48
  br i1 %or.cond, label %.loopexit515, label %49

49:                                               ; preds = %46
  %50 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3) #6
  %51 = tail call i64 @llvm.smin.i64(i64 %50, i64 64)
  %52 = icmp slt i64 %50, 2
  br i1 %52, label %59, label %53

53:                                               ; preds = %49
  %54 = load i64, ptr %2, align 8, !tbaa !5
  %55 = icmp sgt i64 %51, %54
  br i1 %55, label %59, label %._crit_edge.preheader

._crit_edge.preheader:                            ; preds = %53
  %56 = add nsw i64 %51, -1
  %57 = add nsw i64 %51, -2
  %xtraiter = and i64 %56, 3
  %58 = icmp ult i64 %57, 3
  br i1 %58, label %.lr.ph529.preheader.unr-lcssa, label %._crit_edge.preheader.new

._crit_edge.preheader.new:                        ; preds = %._crit_edge.preheader
  %unroll_iter = and i64 %56, -4
  br label %._crit_edge

59:                                               ; preds = %53, %49
  %60 = tail call i32 @dgbtf2_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7) #6
  br label %.loopexit515

._crit_edge:                                      ; preds = %._crit_edge, %._crit_edge.preheader.new
  %indvar = phi i64 [ 1, %._crit_edge.preheader.new ], [ %indvar.next.3, %._crit_edge ]
  %niter = phi i64 [ 0, %._crit_edge.preheader.new ], [ %niter.next.3, %._crit_edge ]
  %61 = shl nuw nsw i64 %indvar, 3
  %62 = mul nuw nsw i64 %indvar, 520
  %scevgep = getelementptr i8, ptr %22, i64 %62
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep, i8 0, i64 %61, i1 false), !tbaa !9
  %indvar.next = add nuw nsw i64 %indvar, 1
  %63 = shl nuw nsw i64 %indvar.next, 3
  %64 = mul nuw nsw i64 %indvar.next, 520
  %scevgep.1 = getelementptr i8, ptr %22, i64 %64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep.1, i8 0, i64 %63, i1 false), !tbaa !9
  %indvar.next.1 = add nuw nsw i64 %indvar, 2
  %65 = shl nuw nsw i64 %indvar.next.1, 3
  %66 = mul nuw nsw i64 %indvar.next.1, 520
  %scevgep.2 = getelementptr i8, ptr %22, i64 %66
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep.2, i8 0, i64 %65, i1 false), !tbaa !9
  %indvar.next.2 = add nuw nsw i64 %indvar, 3
  %67 = shl nuw nsw i64 %indvar.next.2, 3
  %68 = mul nuw nsw i64 %indvar.next.2, 520
  %scevgep.3 = getelementptr i8, ptr %22, i64 %68
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep.3, i8 0, i64 %67, i1 false), !tbaa !9
  %indvar.next.3 = add nuw nsw i64 %indvar, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.lr.ph529.preheader.unr-lcssa, label %._crit_edge, !llvm.loop !11

.lr.ph529.preheader.unr-lcssa:                    ; preds = %._crit_edge, %._crit_edge.preheader
  %indvar.unr = phi i64 [ 1, %._crit_edge.preheader ], [ %indvar.next.3, %._crit_edge ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph529.preheader, label %._crit_edge.epil

._crit_edge.epil:                                 ; preds = %.lr.ph529.preheader.unr-lcssa, %._crit_edge.epil
  %indvar.epil = phi i64 [ %indvar.next.epil, %._crit_edge.epil ], [ %indvar.unr, %.lr.ph529.preheader.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %._crit_edge.epil ], [ 0, %.lr.ph529.preheader.unr-lcssa ]
  %69 = shl nuw nsw i64 %indvar.epil, 3
  %70 = mul nuw nsw i64 %indvar.epil, 520
  %scevgep.epil = getelementptr i8, ptr %22, i64 %70
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep.epil, i8 0, i64 %69, i1 false), !tbaa !9
  %indvar.next.epil = add nuw nsw i64 %indvar.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.lr.ph529.preheader, label %._crit_edge.epil, !llvm.loop !14

.lr.ph529.preheader:                              ; preds = %._crit_edge.epil, %.lr.ph529.preheader.unr-lcssa
  %71 = shl nuw nsw i64 %51, 3
  %72 = add nsw i64 %71, -8
  %smax = tail call i64 @llvm.smax.i64(i64 %51, i64 1)
  %xtraiter700 = and i64 %smax, 1
  %unroll_iter703 = and i64 %smax, 126
  br label %.lr.ph529

.loopexit516:                                     ; preds = %.lr.ph525, %.lr.ph529
  %73 = add nuw nsw i64 %.1449527, 2
  %.not504522.not.1 = icmp slt i64 %78, %51
  br i1 %.not504522.not.1, label %.lr.ph525.1, label %.loopexit516.1

.lr.ph525.1:                                      ; preds = %.loopexit516
  %indvar.next637 = or disjoint i64 %indvar636, 1
  %74 = shl i64 %indvar.next637, 3
  %75 = sub i64 %72, %74
  %76 = mul nuw nsw i64 %indvar.next637, 528
  %77 = or disjoint i64 %76, 8
  %scevgep638.1 = getelementptr i8, ptr %23, i64 %77
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep638.1, i8 0, i64 %75, i1 false), !tbaa !9
  br label %.loopexit516.1

.loopexit516.1:                                   ; preds = %.lr.ph525.1, %.loopexit516
  %indvar.next637.1 = add nuw nsw i64 %indvar636, 2
  %niter704.next.1 = add i64 %niter704, 2
  %niter704.ncmp.1 = icmp eq i64 %niter704.next.1, %unroll_iter703
  br i1 %niter704.ncmp.1, label %._crit_edge530.unr-lcssa, label %.lr.ph529, !llvm.loop !16

.lr.ph529:                                        ; preds = %.loopexit516.1, %.lr.ph529.preheader
  %indvar636 = phi i64 [ 0, %.lr.ph529.preheader ], [ %indvar.next637.1, %.loopexit516.1 ]
  %.1449527 = phi i64 [ 1, %.lr.ph529.preheader ], [ %73, %.loopexit516.1 ]
  %niter704 = phi i64 [ 0, %.lr.ph529.preheader ], [ %niter704.next.1, %.loopexit516.1 ]
  %78 = add nuw nsw i64 %.1449527, 1
  %.not504522.not = icmp slt i64 %.1449527, %51
  br i1 %.not504522.not, label %.lr.ph525, label %.loopexit516

.lr.ph525:                                        ; preds = %.lr.ph529
  %79 = shl i64 %indvar636, 3
  %80 = sub i64 %72, %79
  %81 = mul nuw nsw i64 %indvar636, 528
  %82 = or disjoint i64 %81, 8
  %scevgep638 = getelementptr i8, ptr %23, i64 %82
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep638, i8 0, i64 %80, i1 false), !tbaa !9
  br label %.loopexit516

._crit_edge530.unr-lcssa:                         ; preds = %.loopexit516.1
  %lcmp.mod702.not = icmp ne i64 %xtraiter700, 0
  %.not504522.not.epil = icmp slt i64 %73, %51
  %or.cond726 = select i1 %lcmp.mod702.not, i1 %.not504522.not.epil, i1 false
  br i1 %or.cond726, label %.lr.ph525.epil, label %._crit_edge530

.lr.ph525.epil:                                   ; preds = %._crit_edge530.unr-lcssa
  %83 = shl i64 %indvar.next637.1, 3
  %84 = sub i64 %72, %83
  %85 = mul nuw nsw i64 %indvar.next637.1, 528
  %86 = or disjoint i64 %85, 8
  %scevgep638.epil = getelementptr i8, ptr %23, i64 %86
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep638.epil, i8 0, i64 %84, i1 false), !tbaa !9
  br label %._crit_edge530

._crit_edge530:                                   ; preds = %.lr.ph525.epil, %._crit_edge530.unr-lcssa
  %87 = load i64, ptr %1, align 8, !tbaa !5
  %. = tail call i64 @llvm.smin.i64(i64 %30, i64 %87)
  %88 = load i64, ptr %3, align 8, !tbaa !5
  %89 = add nsw i64 %88, 2
  %.not472536 = icmp sgt i64 %89, %.
  br i1 %.not472536, label %._crit_edge540, label %.lr.ph539

.lr.ph539:                                        ; preds = %._crit_edge530
  %90 = add i64 %30, 2
  %91 = shl i64 %88, 3
  %92 = add i64 %91, 8
  %93 = mul i64 %24, %92
  %94 = sub i64 %30, %88
  %95 = shl i64 %94, 3
  %96 = shl i64 %24, 3
  %97 = add i64 %96, -8
  %98 = add i64 %88, %54
  %99 = add i64 %98, 1
  %100 = add i64 %28, %29
  %101 = sub i64 %99, %100
  %102 = xor i64 %88, -1
  %103 = add i64 %., %102
  %104 = getelementptr i8, ptr %4, i64 %93
  %105 = getelementptr i8, ptr %104, i64 %95
  %106 = getelementptr i8, ptr %105, i64 -8
  %107 = add i64 %., -2
  %xtraiter705 = and i64 %103, 1
  %108 = icmp eq i64 %107, %88
  br i1 %108, label %._crit_edge540.loopexit.unr-lcssa, label %.lr.ph539.new

.lr.ph539.new:                                    ; preds = %.lr.ph539
  %unroll_iter708 = and i64 %103, -2
  br label %109

109:                                              ; preds = %._crit_edge535.1, %.lr.ph539.new
  %indvar640 = phi i64 [ 0, %.lr.ph539.new ], [ %indvar.next641.1, %._crit_edge535.1 ]
  %.2450537 = phi i64 [ %89, %.lr.ph539.new ], [ %118, %._crit_edge535.1 ]
  %niter709 = phi i64 [ 0, %.lr.ph539.new ], [ %niter709.next.1, %._crit_edge535.1 ]
  %110 = sub i64 %90, %.2450537
  %.not503531 = icmp sgt i64 %110, %54
  br i1 %.not503531, label %._crit_edge535, label %.lr.ph534

.lr.ph534:                                        ; preds = %109
  %111 = add i64 %101, %indvar640
  %112 = shl i64 %111, 3
  %113 = mul i64 %97, %indvar640
  %scevgep642 = getelementptr i8, ptr %106, i64 %113
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep642, i8 0, i64 %112, i1 false), !tbaa !9
  br label %._crit_edge535

._crit_edge535:                                   ; preds = %.lr.ph534, %109
  %.neg722 = xor i64 %.2450537, -1
  %114 = add i64 %90, %.neg722
  %.not503531.1 = icmp sgt i64 %114, %54
  br i1 %.not503531.1, label %._crit_edge535.1, label %.lr.ph534.1

.lr.ph534.1:                                      ; preds = %._crit_edge535
  %indvar.next641 = or disjoint i64 %indvar640, 1
  %115 = add i64 %101, %indvar.next641
  %116 = shl i64 %115, 3
  %117 = mul i64 %97, %indvar.next641
  %scevgep642.1 = getelementptr i8, ptr %106, i64 %117
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep642.1, i8 0, i64 %116, i1 false), !tbaa !9
  br label %._crit_edge535.1

._crit_edge535.1:                                 ; preds = %.lr.ph534.1, %._crit_edge535
  %118 = add nsw i64 %.2450537, 2
  %indvar.next641.1 = add nuw i64 %indvar640, 2
  %niter709.next.1 = add i64 %niter709, 2
  %niter709.ncmp.1 = icmp eq i64 %niter709.next.1, %unroll_iter708
  br i1 %niter709.ncmp.1, label %._crit_edge540.loopexit.unr-lcssa, label %109, !llvm.loop !17

._crit_edge540.loopexit.unr-lcssa:                ; preds = %._crit_edge535.1, %.lr.ph539
  %indvar640.unr = phi i64 [ 0, %.lr.ph539 ], [ %indvar.next641.1, %._crit_edge535.1 ]
  %.2450537.unr = phi i64 [ %89, %.lr.ph539 ], [ %118, %._crit_edge535.1 ]
  %lcmp.mod707.not = icmp eq i64 %xtraiter705, 0
  %119 = sub i64 %90, %.2450537.unr
  %.not503531.epil = icmp sgt i64 %119, %54
  %or.cond727 = select i1 %lcmp.mod707.not, i1 true, i1 %.not503531.epil
  br i1 %or.cond727, label %._crit_edge540, label %.lr.ph534.epil

.lr.ph534.epil:                                   ; preds = %._crit_edge540.loopexit.unr-lcssa
  %120 = add i64 %101, %indvar640.unr
  %121 = shl i64 %120, 3
  %122 = mul i64 %97, %indvar640.unr
  %scevgep642.epil = getelementptr i8, ptr %106, i64 %122
  tail call void @llvm.memset.p0.i64(ptr align 8 %scevgep642.epil, i8 0, i64 %121, i1 false), !tbaa !9
  br label %._crit_edge540

._crit_edge540:                                   ; preds = %._crit_edge540.loopexit.unr-lcssa, %.lr.ph534.epil, %._crit_edge530
  %123 = load i64, ptr %0, align 8, !tbaa !5
  %.506 = tail call i64 @llvm.smin.i64(i64 %123, i64 %87)
  store i64 %.506, ptr %9, align 8, !tbaa !5
  %invariant.gep624 = getelementptr i8, ptr %26, i64 8
  %.not474628 = icmp slt i64 %.506, 1
  br i1 %.not474628, label %.loopexit515, label %.lr.ph633

.lr.ph633:                                        ; preds = %._crit_edge540
  %124 = add i64 %30, 1
  %125 = getelementptr double, ptr %26, i64 %124
  %126 = getelementptr double, ptr %26, i64 %30
  %127 = getelementptr i8, ptr %126, i64 16
  %128 = mul i64 %24, %30
  %129 = shl i64 %128, 3
  %130 = mul i64 %24, %51
  %131 = shl i64 %130, 3
  %132 = shl i64 %24, 3
  br label %133

133:                                              ; preds = %.lr.ph633, %._crit_edge617
  %indvar644 = phi i64 [ 0, %.lr.ph633 ], [ %indvar.next645, %._crit_edge617 ]
  %.3451.neg631 = phi i64 [ -1, %.lr.ph633 ], [ %.3451.neg, %._crit_edge617 ]
  %.0437630 = phi i64 [ 1, %.lr.ph633 ], [ %.1.lcssa, %._crit_edge617 ]
  %.3451629 = phi i64 [ 1, %.lr.ph633 ], [ %475, %._crit_edge617 ]
  %134 = mul i64 %51, %indvar644
  %135 = add i64 %134, 2
  %136 = mul i64 %51, %indvar644
  %137 = xor i64 %136, -1
  %138 = mul i64 %51, %indvar644
  %139 = add i64 %138, 2
  %140 = mul i64 %51, %indvar644
  %141 = xor i64 %140, -1
  %142 = mul i64 %131, %indvar644
  %143 = add i64 %129, %142
  %144 = load i64, ptr %0, align 8, !tbaa !5
  %145 = load i64, ptr %1, align 8, !tbaa !5
  %.507 = call i64 @llvm.smin.i64(i64 %144, i64 %145)
  %146 = sub nsw i64 %.507, %.3451629
  %147 = add nsw i64 %146, 1
  %148 = call i64 @llvm.smin.i64(i64 %51, i64 %147)
  store i64 %148, ptr %19, align 8, !tbaa !5
  %149 = load i64, ptr %2, align 8, !tbaa !5
  %150 = sub nsw i64 %149, %148
  %151 = add i64 %148, %.3451629
  %152 = sub i64 %144, %151
  %153 = add nsw i64 %152, 1
  %154 = call i64 @llvm.smin.i64(i64 %150, i64 %153)
  store i64 %154, ptr %15, align 8, !tbaa !5
  %.neg510 = add i64 %.3451.neg631, 1
  %155 = add i64 %.neg510, %144
  %156 = sub i64 %155, %149
  store i64 %156, ptr %11, align 8, !tbaa !5
  %157 = call i64 @llvm.smin.i64(i64 %148, i64 %156)
  store i64 %157, ptr %16, align 8, !tbaa !5
  %158 = add nsw i64 %151, -1
  store i64 %158, ptr %10, align 8, !tbaa !5
  %invariant.gep547 = getelementptr double, ptr %26, i64 %.3451629
  %.not479550.not = icmp slt i64 %.3451629, %151
  br i1 %.not479550.not, label %.lr.ph555, label %._crit_edge556

.lr.ph555:                                        ; preds = %133
  %159 = mul nsw i64 %.3451629, %24
  %invariant.gep557 = getelementptr double, ptr %26, i64 %159
  %160 = add nsw i64 %.3451629, -1
  %161 = getelementptr i8, ptr %4, i64 %143
  %162 = getelementptr double, ptr %invariant.gep557, i64 %.3451.neg631
  %163 = getelementptr double, ptr %162, i64 %124
  %invariant.gep = getelementptr double, ptr %invariant.gep557, i64 %.3451.neg631
  %164 = getelementptr double, ptr %invariant.gep557, i64 %.3451.neg631
  %165 = getelementptr double, ptr %164, i64 %124
  br label %166

166:                                              ; preds = %.lr.ph555, %251
  %indvar646 = phi i64 [ 0, %.lr.ph555 ], [ %indvar.next647, %251 ]
  %.1552 = phi i64 [ %.0437630, %.lr.ph555 ], [ %.2, %251 ]
  %.0438551 = phi i64 [ %.3451629, %.lr.ph555 ], [ %252, %251 ]
  %167 = add nsw i64 %.0438551, %30
  %168 = load i64, ptr %1, align 8, !tbaa !5
  %.not494 = icmp sgt i64 %167, %168
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  %.not495541 = icmp slt i64 %.pre, 1
  %or.cond676 = select i1 %.not494, i1 true, i1 %.not495541
  br i1 %or.cond676, label %.loopexit, label %.lr.ph544

.lr.ph544:                                        ; preds = %166
  %169 = mul i64 %132, %indvar646
  %scevgep648 = getelementptr i8, ptr %161, i64 %169
  %170 = shl nuw i64 %.pre, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep648, i8 0, i64 %170, i1 false), !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph544, %166
  %171 = load i64, ptr %0, align 8, !tbaa !5
  %172 = sub nsw i64 %171, %.0438551
  store i64 %172, ptr %12, align 8, !tbaa !5
  %173 = call i64 @llvm.smin.i64(i64 %.pre, i64 %172)
  store i64 %173, ptr %20, align 8, !tbaa !5
  %174 = add nsw i64 %173, 1
  store i64 %174, ptr %11, align 8, !tbaa !5
  %175 = mul nsw i64 %.0438551, %24
  %176 = getelementptr double, ptr %125, i64 %175
  %177 = call i64 @f2c_idamax(ptr noundef nonnull %11, ptr noundef %176, ptr noundef nonnull @c__1) #6
  %178 = add nsw i64 %177, %.0438551
  %179 = sub nsw i64 %178, %.3451629
  %180 = getelementptr inbounds i64, ptr %27, i64 %.0438551
  store i64 %179, ptr %180, align 8, !tbaa !5
  %181 = add nsw i64 %177, %30
  %182 = getelementptr double, ptr %26, i64 %181
  %183 = getelementptr double, ptr %182, i64 %175
  %184 = load double, ptr %183, align 8, !tbaa !9
  %185 = fcmp une double %184, 0.000000e+00
  br i1 %185, label %186, label %232

186:                                              ; preds = %.loopexit
  %187 = load i64, ptr %3, align 8, !tbaa !5
  %188 = add nsw i64 %.0438551, -1
  %189 = add i64 %188, %177
  %190 = add i64 %189, %187
  store i64 %190, ptr %13, align 8, !tbaa !5
  store i64 %.1552, ptr %11, align 8, !tbaa !5
  %191 = load i64, ptr %1, align 8, !tbaa !5
  %.508 = call i64 @llvm.smin.i64(i64 %190, i64 %191)
  store i64 %.508, ptr %12, align 8, !tbaa !5
  %192 = call i64 @llvm.smax.i64(i64 %.1552, i64 %.508)
  %.not499 = icmp eq i64 %177, 1
  br i1 %.not499, label %214, label %193

193:                                              ; preds = %186
  %194 = load i64, ptr %2, align 8, !tbaa !5
  %195 = add nsw i64 %194, %.3451629
  %.not500 = icmp sgt i64 %178, %195
  br i1 %.not500, label %200, label %196

196:                                              ; preds = %193
  %197 = load i64, ptr %5, align 8, !tbaa !5
  %198 = add nsw i64 %197, -1
  store i64 %198, ptr %11, align 8, !tbaa !5
  store i64 %198, ptr %12, align 8, !tbaa !5
  %gep558 = getelementptr double, ptr %163, i64 %.0438551
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0438551
  %gep560 = getelementptr double, ptr %gep, i64 %181
  %199 = call i32 @f2c_dswap(ptr noundef nonnull %19, ptr noundef %gep558, ptr noundef nonnull %11, ptr noundef %gep560, ptr noundef nonnull %12) #6
  br label %214

200:                                              ; preds = %193
  %201 = sub nuw nsw i64 %.0438551, %.3451629
  store i64 %201, ptr %11, align 8, !tbaa !5
  %202 = load i64, ptr %5, align 8, !tbaa !5
  %203 = add nsw i64 %202, -1
  store i64 %203, ptr %12, align 8, !tbaa !5
  %gep562 = getelementptr double, ptr %165, i64 %.0438551
  %204 = xor i64 %194, -1
  %205 = add i64 %179, %204
  %206 = getelementptr inbounds [4160 x double], ptr %23, i64 0, i64 %205
  %207 = call i32 @f2c_dswap(ptr noundef nonnull %11, ptr noundef %gep562, ptr noundef nonnull %12, ptr noundef nonnull %206, ptr noundef nonnull @c__65) #6
  %208 = load i64, ptr %19, align 8, !tbaa !5
  %209 = sub nsw i64 %.3451629, %.0438551
  %210 = add i64 %209, %208
  store i64 %210, ptr %11, align 8, !tbaa !5
  %211 = load i64, ptr %5, align 8, !tbaa !5
  %212 = add nsw i64 %211, -1
  store i64 %212, ptr %12, align 8, !tbaa !5
  store i64 %212, ptr %13, align 8, !tbaa !5
  %213 = call i32 @f2c_dswap(ptr noundef nonnull %11, ptr noundef %176, ptr noundef nonnull %12, ptr noundef nonnull %183, ptr noundef nonnull %13) #6
  br label %214

214:                                              ; preds = %196, %200, %186
  %215 = load double, ptr %176, align 8, !tbaa !9
  %216 = fdiv double 1.000000e+00, %215
  store double %216, ptr %14, align 8, !tbaa !9
  %217 = getelementptr double, ptr %127, i64 %175
  %218 = call i32 @f2c_dscal(ptr noundef nonnull %20, ptr noundef nonnull %14, ptr noundef %217, ptr noundef nonnull @c__1) #6
  %219 = load i64, ptr %19, align 8, !tbaa !5
  %220 = add i64 %160, %219
  store i64 %220, ptr %12, align 8, !tbaa !5
  %221 = call i64 @llvm.smin.i64(i64 %192, i64 %220)
  %222 = icmp sgt i64 %221, %.0438551
  br i1 %222, label %223, label %236

223:                                              ; preds = %214
  %224 = sub nsw i64 %221, %.0438551
  store i64 %224, ptr %11, align 8, !tbaa !5
  %225 = load i64, ptr %5, align 8, !tbaa !5
  %226 = add nsw i64 %225, -1
  store i64 %226, ptr %12, align 8, !tbaa !5
  store i64 %226, ptr %13, align 8, !tbaa !5
  %227 = add nuw nsw i64 %.0438551, 1
  %228 = mul nsw i64 %227, %24
  %229 = getelementptr double, ptr %126, i64 %228
  %230 = getelementptr double, ptr %125, i64 %228
  %231 = call i32 @f2c_dger(ptr noundef nonnull %20, ptr noundef nonnull %11, ptr noundef nonnull @c_b18, ptr noundef %217, ptr noundef nonnull @c__1, ptr noundef %229, ptr noundef nonnull %12, ptr noundef %230, ptr noundef nonnull %13) #6
  br label %236

232:                                              ; preds = %.loopexit
  %233 = load i64, ptr %7, align 8, !tbaa !5
  %234 = icmp eq i64 %233, 0
  br i1 %234, label %235, label %236

235:                                              ; preds = %232
  store i64 %.0438551, ptr %7, align 8, !tbaa !5
  br label %236

236:                                              ; preds = %232, %235, %214, %223
  %.2 = phi i64 [ %192, %223 ], [ %192, %214 ], [ %.1552, %235 ], [ %.1552, %232 ]
  %237 = sub nuw nsw i64 %.0438551, %.3451629
  %238 = add nuw nsw i64 %237, 1
  store i64 %238, ptr %11, align 8, !tbaa !5
  %239 = load i64, ptr %16, align 8
  %240 = call i64 @llvm.smin.i64(i64 %238, i64 %239)
  store i64 %240, ptr %21, align 8, !tbaa !5
  %241 = icmp sgt i64 %239, 0
  br i1 %241, label %242, label %251

242:                                              ; preds = %236
  %243 = load i64, ptr %2, align 8, !tbaa !5
  %244 = sub i64 %124, %.0438551
  %245 = getelementptr double, ptr %invariant.gep547, i64 %244
  %gep548 = getelementptr double, ptr %245, i64 %243
  %246 = getelementptr double, ptr %gep548, i64 %175
  %247 = mul nuw nsw i64 %238, 65
  %248 = add nsw i64 %247, -65
  %249 = getelementptr inbounds [4160 x double], ptr %23, i64 0, i64 %248
  %250 = call i32 @f2c_dcopy(ptr noundef nonnull %21, ptr noundef %246, ptr noundef nonnull @c__1, ptr noundef nonnull %249, ptr noundef nonnull @c__1) #6
  br label %251

251:                                              ; preds = %236, %242
  %252 = add nuw nsw i64 %.0438551, 1
  %253 = load i64, ptr %10, align 8, !tbaa !5
  %.not479.not = icmp slt i64 %.0438551, %253
  %indvar.next647 = add i64 %indvar646, 1
  br i1 %.not479.not, label %166, label %._crit_edge556.loopexit, !llvm.loop !18

._crit_edge556.loopexit:                          ; preds = %251
  %.pre660 = load i64, ptr %19, align 8, !tbaa !5
  %.pre661 = load i64, ptr %1, align 8, !tbaa !5
  %.pre666 = add nsw i64 %.pre660, %.3451629
  br label %._crit_edge556

._crit_edge556:                                   ; preds = %._crit_edge556.loopexit, %133
  %.pre-phi = phi i64 [ %.pre666, %._crit_edge556.loopexit ], [ %151, %133 ]
  %254 = phi i64 [ %.pre661, %._crit_edge556.loopexit ], [ %145, %133 ]
  %255 = phi i64 [ %.pre660, %._crit_edge556.loopexit ], [ %148, %133 ]
  %.1.lcssa = phi i64 [ %.2, %._crit_edge556.loopexit ], [ %.0437630, %133 ]
  %.not480 = icmp sgt i64 %.pre-phi, %254
  br i1 %.not480, label %410, label %256

256:                                              ; preds = %._crit_edge556
  %257 = sub nsw i64 %.1.lcssa, %.3451629
  %258 = add nsw i64 %257, 1
  %259 = call i64 @llvm.smin.i64(i64 %258, i64 %30)
  %260 = sub nsw i64 %259, %255
  store i64 %260, ptr %17, align 8, !tbaa !5
  %261 = sub nsw i64 %257, %30
  %262 = add nsw i64 %261, 1
  store i64 %262, ptr %11, align 8, !tbaa !5
  %263 = icmp slt i64 %261, 0
  %264 = select i1 %263, i64 0, i64 %262
  store i64 %264, ptr %18, align 8, !tbaa !5
  %265 = load i64, ptr %5, align 8, !tbaa !5
  %266 = add nsw i64 %265, -1
  store i64 %266, ptr %10, align 8, !tbaa !5
  %267 = sub nsw i64 %124, %255
  %268 = mul nsw i64 %.pre-phi, %24
  %269 = getelementptr double, ptr %26, i64 %267
  %270 = getelementptr double, ptr %269, i64 %268
  %271 = getelementptr inbounds i64, ptr %27, i64 %.3451629
  %272 = call i32 @dlaswp_(ptr noundef nonnull %17, ptr noundef %270, ptr noundef nonnull %10, ptr noundef nonnull @c__1, ptr noundef nonnull %19, ptr noundef nonnull %271, ptr noundef nonnull @c__1) #6
  %273 = load i64, ptr %19, align 8, !tbaa !5
  %274 = add i64 %273, %.3451629
  %275 = add nsw i64 %274, -1
  %.not483.not563 = icmp sgt i64 %273, 0
  %276 = add nsw i64 %.3451629, -1
  br i1 %.not483.not563, label %.lr.ph566.preheader, label %._crit_edge567

.lr.ph566.preheader:                              ; preds = %256
  %smax680 = call i64 @llvm.smax.i64(i64 %135, i64 %274)
  %277 = add i64 %smax680, %137
  %min.iters.check683 = icmp ult i64 %277, 4
  br i1 %min.iters.check683, label %.lr.ph566.preheader699, label %vector.ph684

vector.ph684:                                     ; preds = %.lr.ph566.preheader
  %n.vec686 = and i64 %277, -4
  %ind.end687 = add i64 %.3451629, %n.vec686
  %broadcast.splatinsert694 = insertelement <2 x i64> poison, i64 %276, i64 0
  %broadcast.splat695 = shufflevector <2 x i64> %broadcast.splatinsert694, <2 x i64> poison, <2 x i32> zeroinitializer
  %278 = getelementptr i64, ptr %27, i64 %.3451629
  br label %vector.body689

vector.body689:                                   ; preds = %vector.body689, %vector.ph684
  %index690 = phi i64 [ 0, %vector.ph684 ], [ %index.next696, %vector.body689 ]
  %279 = getelementptr i64, ptr %278, i64 %index690
  %280 = getelementptr inbounds i8, ptr %279, i64 16
  %wide.load692 = load <2 x i64>, ptr %279, align 8, !tbaa !5
  %wide.load693 = load <2 x i64>, ptr %280, align 8, !tbaa !5
  %281 = add <2 x i64> %broadcast.splat695, %wide.load692
  %282 = add <2 x i64> %broadcast.splat695, %wide.load693
  store <2 x i64> %281, ptr %279, align 8, !tbaa !5
  store <2 x i64> %282, ptr %280, align 8, !tbaa !5
  %index.next696 = add nuw i64 %index690, 4
  %283 = icmp eq i64 %index.next696, %n.vec686
  br i1 %283, label %middle.block681, label %vector.body689, !llvm.loop !19

middle.block681:                                  ; preds = %vector.body689
  %cmp.n697 = icmp eq i64 %277, %n.vec686
  br i1 %cmp.n697, label %._crit_edge567, label %.lr.ph566.preheader699

.lr.ph566.preheader699:                           ; preds = %middle.block681, %.lr.ph566.preheader
  %.4564.ph = phi i64 [ %.3451629, %.lr.ph566.preheader ], [ %ind.end687, %middle.block681 ]
  br label %.lr.ph566

.lr.ph566:                                        ; preds = %.lr.ph566.preheader699, %.lr.ph566
  %.4564 = phi i64 [ %287, %.lr.ph566 ], [ %.4564.ph, %.lr.ph566.preheader699 ]
  %284 = getelementptr inbounds i64, ptr %27, i64 %.4564
  %285 = load i64, ptr %284, align 8, !tbaa !5
  %286 = add i64 %276, %285
  store i64 %286, ptr %284, align 8, !tbaa !5
  %287 = add nuw nsw i64 %.4564, 1
  %.not483.not = icmp slt i64 %287, %274
  br i1 %.not483.not, label %.lr.ph566, label %._crit_edge567, !llvm.loop !22

._crit_edge567:                                   ; preds = %.lr.ph566, %middle.block681, %256
  %288 = add nsw i64 %276, %273
  %289 = load i64, ptr %17, align 8, !tbaa !5
  %290 = add nsw i64 %288, %289
  %291 = load i64, ptr %18, align 8, !tbaa !5
  %.not484577 = icmp slt i64 %291, 1
  br i1 %.not484577, label %306, label %.lr.ph580

.lr.ph580:                                        ; preds = %._crit_edge567, %._crit_edge572
  %.5578 = phi i64 [ %305, %._crit_edge572 ], [ 1, %._crit_edge567 ]
  %292 = add i64 %276, %.5578
  %.not492.not568 = icmp slt i64 %292, %274
  br i1 %.not492.not568, label %.lr.ph571, label %._crit_edge572

.lr.ph571:                                        ; preds = %.lr.ph580
  %293 = add nsw i64 %290, %.5578
  %294 = sub i64 %124, %293
  %295 = mul nsw i64 %293, %24
  %invariant.gep573 = getelementptr double, ptr %26, i64 %295
  %296 = getelementptr double, ptr %invariant.gep573, i64 %294
  br label %297

297:                                              ; preds = %.lr.ph571, %303
  %.0441569 = phi i64 [ %292, %.lr.ph571 ], [ %304, %303 ]
  %298 = getelementptr inbounds i64, ptr %27, i64 %.0441569
  %299 = load i64, ptr %298, align 8, !tbaa !5
  %.not493 = icmp eq i64 %299, %.0441569
  br i1 %.not493, label %303, label %300

300:                                              ; preds = %297
  %gep574 = getelementptr double, ptr %296, i64 %.0441569
  %301 = load double, ptr %gep574, align 8, !tbaa !9
  %gep576 = getelementptr double, ptr %296, i64 %299
  %302 = load double, ptr %gep576, align 8, !tbaa !9
  store double %302, ptr %gep574, align 8, !tbaa !9
  store double %301, ptr %gep576, align 8, !tbaa !9
  br label %303

303:                                              ; preds = %297, %300
  %304 = add nsw i64 %.0441569, 1
  %.not492.not = icmp slt i64 %304, %274
  br i1 %.not492.not, label %297, label %._crit_edge572, !llvm.loop !23

._crit_edge572:                                   ; preds = %303, %.lr.ph580
  %305 = add nuw i64 %.5578, 1
  %exitcond649.not = icmp eq i64 %.5578, %291
  br i1 %exitcond649.not, label %._crit_edge581, label %.lr.ph580, !llvm.loop !24

._crit_edge581:                                   ; preds = %._crit_edge572
  store i64 %275, ptr %11, align 8, !tbaa !5
  br label %306

306:                                              ; preds = %._crit_edge581, %._crit_edge567
  %307 = icmp sgt i64 %289, 0
  br i1 %307, label %308, label %348

308:                                              ; preds = %306
  %309 = load i64, ptr %5, align 8, !tbaa !5
  %310 = add nsw i64 %309, -1
  store i64 %310, ptr %10, align 8, !tbaa !5
  store i64 %310, ptr %11, align 8, !tbaa !5
  %311 = mul nsw i64 %.3451629, %24
  %312 = getelementptr double, ptr %125, i64 %311
  %313 = sub nsw i64 %124, %273
  %314 = mul nsw i64 %274, %24
  %315 = getelementptr double, ptr %26, i64 %313
  %316 = getelementptr double, ptr %315, i64 %314
  %317 = call i32 @f2c_dtrsm(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %19, ptr noundef nonnull %17, ptr noundef nonnull @c_b31, ptr noundef %312, ptr noundef nonnull %10, ptr noundef %316, ptr noundef nonnull %11) #6
  %318 = load i64, ptr %15, align 8, !tbaa !5
  %319 = icmp sgt i64 %318, 0
  br i1 %319, label %320, label %333

320:                                              ; preds = %308
  %321 = load i64, ptr %5, align 8, !tbaa !5
  %322 = add nsw i64 %321, -1
  store i64 %322, ptr %10, align 8, !tbaa !5
  store i64 %322, ptr %11, align 8, !tbaa !5
  store i64 %322, ptr %12, align 8, !tbaa !5
  %323 = load i64, ptr %19, align 8, !tbaa !5
  %324 = getelementptr double, ptr %125, i64 %323
  %325 = getelementptr double, ptr %324, i64 %311
  %326 = sub nsw i64 %124, %323
  %327 = add nsw i64 %323, %.3451629
  %328 = mul nsw i64 %327, %24
  %329 = getelementptr double, ptr %26, i64 %326
  %330 = getelementptr double, ptr %329, i64 %328
  %331 = getelementptr double, ptr %125, i64 %328
  %332 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %15, ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull @c_b18, ptr noundef %325, ptr noundef nonnull %10, ptr noundef %330, ptr noundef nonnull %11, ptr noundef nonnull @c_b31, ptr noundef %331, ptr noundef nonnull %12) #6
  br label %333

333:                                              ; preds = %320, %308
  %334 = load i64, ptr %16, align 8, !tbaa !5
  %335 = icmp sgt i64 %334, 0
  %.pre663.pre664 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %335, label %336, label %348

336:                                              ; preds = %333
  %337 = load i64, ptr %5, align 8, !tbaa !5
  %338 = add nsw i64 %337, -1
  store i64 %338, ptr %10, align 8, !tbaa !5
  store i64 %338, ptr %11, align 8, !tbaa !5
  %339 = sub i64 %124, %.pre663.pre664
  %340 = add nsw i64 %.pre663.pre664, %.3451629
  %341 = mul nsw i64 %340, %24
  %342 = getelementptr double, ptr %26, i64 %339
  %343 = getelementptr double, ptr %342, i64 %341
  %344 = load i64, ptr %2, align 8, !tbaa !5
  %345 = getelementptr double, ptr %342, i64 %344
  %346 = getelementptr double, ptr %345, i64 %341
  %347 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %19, ptr noundef nonnull @c_b18, ptr noundef nonnull %23, ptr noundef nonnull @c__65, ptr noundef %343, ptr noundef nonnull %10, ptr noundef nonnull @c_b31, ptr noundef %346, ptr noundef nonnull %11) #6
  %.pre663.pre = load i64, ptr %19, align 8, !tbaa !5
  br label %348

348:                                              ; preds = %333, %336, %306
  %.pre663 = phi i64 [ %.pre663.pre664, %333 ], [ %.pre663.pre, %336 ], [ %273, %306 ]
  %349 = load i64, ptr %18, align 8, !tbaa !5
  %350 = icmp sgt i64 %349, 0
  br i1 %350, label %351, label %.loopexit513

351:                                              ; preds = %348
  store i64 %.pre663, ptr %11, align 8, !tbaa !5
  %352 = getelementptr i8, ptr %4, i64 %143
  %xtraiter711 = and i64 %349, 1
  %353 = icmp eq i64 %349, 1
  br i1 %353, label %.unr-lcssa, label %.new

.new:                                             ; preds = %351
  %unroll_iter714 = and i64 %349, 9223372036854775806
  br label %354

354:                                              ; preds = %._crit_edge588.1, %.new
  %indvar650 = phi i64 [ 0, %.new ], [ %indvar.next651.1, %._crit_edge588.1 ]
  %.1439591 = phi i64 [ 1, %.new ], [ %363, %._crit_edge588.1 ]
  %niter715 = phi i64 [ 0, %.new ], [ %niter715.next.1, %._crit_edge588.1 ]
  %.not491584 = icmp sgt i64 %.1439591, %.pre663
  br i1 %.not491584, label %._crit_edge588, label %.lr.ph587

.lr.ph587:                                        ; preds = %354
  %355 = sub i64 %.pre663, %indvar650
  %356 = shl i64 %355, 3
  %357 = mul i64 %132, %indvar650
  %scevgep653 = getelementptr i8, ptr %352, i64 %357
  %358 = mul i64 %indvar650, 528
  %scevgep652 = getelementptr i8, ptr %22, i64 %358
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %scevgep652, ptr align 8 %scevgep653, i64 %356, i1 false), !tbaa !9
  br label %._crit_edge588

._crit_edge588:                                   ; preds = %.lr.ph587, %354
  %.not491584.1.not = icmp slt i64 %.1439591, %.pre663
  br i1 %.not491584.1.not, label %.lr.ph587.1, label %._crit_edge588.1

.lr.ph587.1:                                      ; preds = %._crit_edge588
  %indvar.next651 = or disjoint i64 %indvar650, 1
  %359 = sub i64 %.pre663, %indvar.next651
  %360 = shl i64 %359, 3
  %361 = mul i64 %132, %indvar.next651
  %scevgep653.1 = getelementptr i8, ptr %352, i64 %361
  %362 = mul i64 %indvar.next651, 528
  %scevgep652.1 = getelementptr i8, ptr %22, i64 %362
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %scevgep652.1, ptr align 8 %scevgep653.1, i64 %360, i1 false), !tbaa !9
  br label %._crit_edge588.1

._crit_edge588.1:                                 ; preds = %.lr.ph587.1, %._crit_edge588
  %363 = add nuw nsw i64 %.1439591, 2
  %indvar.next651.1 = add nuw nsw i64 %indvar650, 2
  %niter715.next.1 = add i64 %niter715, 2
  %niter715.ncmp.1 = icmp eq i64 %niter715.next.1, %unroll_iter714
  br i1 %niter715.ncmp.1, label %.unr-lcssa, label %354, !llvm.loop !25

.unr-lcssa:                                       ; preds = %._crit_edge588.1, %351
  %indvar650.unr = phi i64 [ 0, %351 ], [ %indvar.next651.1, %._crit_edge588.1 ]
  %.1439591.unr = phi i64 [ 1, %351 ], [ %363, %._crit_edge588.1 ]
  %lcmp.mod713.not = icmp eq i64 %xtraiter711, 0
  %.not491584.epil = icmp sgt i64 %.1439591.unr, %.pre663
  %or.cond728 = select i1 %lcmp.mod713.not, i1 true, i1 %.not491584.epil
  br i1 %or.cond728, label %._crit_edge588.epil, label %.lr.ph587.epil

.lr.ph587.epil:                                   ; preds = %.unr-lcssa
  %364 = sub i64 %.pre663, %indvar650.unr
  %365 = shl i64 %364, 3
  %366 = mul i64 %132, %indvar650.unr
  %scevgep653.epil = getelementptr i8, ptr %352, i64 %366
  %367 = mul i64 %indvar650.unr, 528
  %scevgep652.epil = getelementptr i8, ptr %22, i64 %367
  call void @llvm.memcpy.p0.p0.i64(ptr align 16 %scevgep652.epil, ptr align 8 %scevgep653.epil, i64 %365, i1 false), !tbaa !9
  br label %._crit_edge588.epil

._crit_edge588.epil:                              ; preds = %.lr.ph587.epil, %.unr-lcssa
  %368 = load i64, ptr %5, align 8, !tbaa !5
  %369 = add nsw i64 %368, -1
  store i64 %369, ptr %10, align 8, !tbaa !5
  %370 = mul nsw i64 %.3451629, %24
  %371 = getelementptr double, ptr %125, i64 %370
  %372 = call i32 @f2c_dtrsm(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull %19, ptr noundef nonnull %18, ptr noundef nonnull @c_b31, ptr noundef %371, ptr noundef nonnull %10, ptr noundef nonnull %22, ptr noundef nonnull @c__65) #6
  %373 = load i64, ptr %15, align 8, !tbaa !5
  %374 = icmp sgt i64 %373, 0
  br i1 %374, label %375, label %385

375:                                              ; preds = %._crit_edge588.epil
  %376 = load i64, ptr %5, align 8, !tbaa !5
  %377 = add nsw i64 %376, -1
  store i64 %377, ptr %10, align 8, !tbaa !5
  store i64 %377, ptr %11, align 8, !tbaa !5
  %378 = load i64, ptr %19, align 8, !tbaa !5
  %379 = getelementptr double, ptr %125, i64 %378
  %380 = getelementptr double, ptr %379, i64 %370
  %381 = add nsw i64 %.3451629, %30
  %382 = mul nsw i64 %381, %24
  %gep625 = getelementptr double, ptr %invariant.gep624, i64 %378
  %383 = getelementptr double, ptr %gep625, i64 %382
  %384 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %15, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b18, ptr noundef %380, ptr noundef nonnull %10, ptr noundef nonnull %22, ptr noundef nonnull @c__65, ptr noundef nonnull @c_b31, ptr noundef %383, ptr noundef nonnull %11) #6
  br label %385

385:                                              ; preds = %375, %._crit_edge588.epil
  %386 = load i64, ptr %16, align 8, !tbaa !5
  %387 = icmp sgt i64 %386, 0
  br i1 %387, label %388, label %396

388:                                              ; preds = %385
  %389 = load i64, ptr %5, align 8, !tbaa !5
  %390 = add nsw i64 %389, -1
  store i64 %390, ptr %10, align 8, !tbaa !5
  %391 = load i64, ptr %2, align 8, !tbaa !5
  %392 = add nsw i64 %.3451629, %30
  %393 = mul nsw i64 %392, %24
  %gep627 = getelementptr double, ptr %invariant.gep624, i64 %391
  %394 = getelementptr double, ptr %gep627, i64 %393
  %395 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c_b18, ptr noundef nonnull %23, ptr noundef nonnull @c__65, ptr noundef nonnull %22, ptr noundef nonnull @c__65, ptr noundef nonnull @c_b31, ptr noundef %394, ptr noundef nonnull %10) #6
  br label %396

396:                                              ; preds = %388, %385
  %397 = load i64, ptr %18, align 8, !tbaa !5
  %.not486601 = icmp slt i64 %397, 1
  %.pre662 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %.not486601, label %.loopexit513, label %.lr.ph604

.lr.ph604:                                        ; preds = %396
  store i64 %.pre662, ptr %11, align 8, !tbaa !5
  %398 = getelementptr i8, ptr %4, i64 %143
  %xtraiter717 = and i64 %397, 1
  %399 = icmp eq i64 %397, 1
  br i1 %399, label %.loopexit513.loopexit698.unr-lcssa, label %.lr.ph604.new

.lr.ph604.new:                                    ; preds = %.lr.ph604
  %unroll_iter720 = and i64 %397, 9223372036854775806
  br label %400

400:                                              ; preds = %._crit_edge598.1, %.lr.ph604.new
  %indvar655 = phi i64 [ 0, %.lr.ph604.new ], [ %indvar.next656.1, %._crit_edge598.1 ]
  %.2440602 = phi i64 [ 1, %.lr.ph604.new ], [ %409, %._crit_edge598.1 ]
  %niter721 = phi i64 [ 0, %.lr.ph604.new ], [ %niter721.next.1, %._crit_edge598.1 ]
  %.not490594 = icmp sgt i64 %.2440602, %.pre662
  br i1 %.not490594, label %._crit_edge598, label %.lr.ph597

.lr.ph597:                                        ; preds = %400
  %401 = sub i64 %.pre662, %indvar655
  %402 = shl i64 %401, 3
  %403 = mul i64 %indvar655, 528
  %scevgep658 = getelementptr i8, ptr %22, i64 %403
  %404 = mul i64 %132, %indvar655
  %scevgep657 = getelementptr i8, ptr %398, i64 %404
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep657, ptr align 16 %scevgep658, i64 %402, i1 false), !tbaa !9
  br label %._crit_edge598

._crit_edge598:                                   ; preds = %.lr.ph597, %400
  %.not490594.1.not = icmp slt i64 %.2440602, %.pre662
  br i1 %.not490594.1.not, label %.lr.ph597.1, label %._crit_edge598.1

.lr.ph597.1:                                      ; preds = %._crit_edge598
  %indvar.next656 = or disjoint i64 %indvar655, 1
  %405 = sub i64 %.pre662, %indvar.next656
  %406 = shl i64 %405, 3
  %407 = mul i64 %indvar.next656, 528
  %scevgep658.1 = getelementptr i8, ptr %22, i64 %407
  %408 = mul i64 %132, %indvar.next656
  %scevgep657.1 = getelementptr i8, ptr %398, i64 %408
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep657.1, ptr align 16 %scevgep658.1, i64 %406, i1 false), !tbaa !9
  br label %._crit_edge598.1

._crit_edge598.1:                                 ; preds = %.lr.ph597.1, %._crit_edge598
  %409 = add nuw nsw i64 %.2440602, 2
  %indvar.next656.1 = add nuw nsw i64 %indvar655, 2
  %niter721.next.1 = add i64 %niter721, 2
  %niter721.ncmp.1 = icmp eq i64 %niter721.next.1, %unroll_iter720
  br i1 %niter721.ncmp.1, label %.loopexit513.loopexit698.unr-lcssa, label %400, !llvm.loop !26

410:                                              ; preds = %._crit_edge556
  %.not481.not605 = icmp sgt i64 %255, 0
  br i1 %.not481.not605, label %.lr.ph608, label %.loopexit513.thread

.loopexit513.thread:                              ; preds = %410
  store i64 %.3451629, ptr %10, align 8, !tbaa !5
  br label %._crit_edge617

.lr.ph608:                                        ; preds = %410
  %411 = add nsw i64 %.3451629, -1
  %smax678 = call i64 @llvm.smax.i64(i64 %.pre-phi, i64 %139)
  %412 = add i64 %smax678, %141
  %min.iters.check = icmp ult i64 %412, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph608
  %n.vec = and i64 %412, -4
  %ind.end = add i64 %.3451629, %n.vec
  %broadcast.splatinsert = insertelement <2 x i64> poison, i64 %411, i64 0
  %broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer
  %413 = getelementptr i64, ptr %27, i64 %.3451629
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %414 = getelementptr i64, ptr %413, i64 %index
  %415 = getelementptr inbounds i8, ptr %414, i64 16
  %wide.load = load <2 x i64>, ptr %414, align 8, !tbaa !5
  %wide.load679 = load <2 x i64>, ptr %415, align 8, !tbaa !5
  %416 = add <2 x i64> %broadcast.splat, %wide.load
  %417 = add <2 x i64> %broadcast.splat, %wide.load679
  store <2 x i64> %416, ptr %414, align 8, !tbaa !5
  store <2 x i64> %417, ptr %415, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %418 = icmp eq i64 %index.next, %n.vec
  br i1 %418, label %middle.block, label %vector.body, !llvm.loop !27

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %412, %n.vec
  br i1 %cmp.n, label %.loopexit513, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph608
  %.6606.ph = phi i64 [ %.3451629, %.lr.ph608 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.6606 = phi i64 [ %422, %scalar.ph ], [ %.6606.ph, %scalar.ph.preheader ]
  %419 = getelementptr inbounds i64, ptr %27, i64 %.6606
  %420 = load i64, ptr %419, align 8, !tbaa !5
  %421 = add i64 %411, %420
  store i64 %421, ptr %419, align 8, !tbaa !5
  %422 = add nuw nsw i64 %.6606, 1
  %.not481.not = icmp slt i64 %422, %.pre-phi
  br i1 %.not481.not, label %scalar.ph, label %.loopexit513, !llvm.loop !28

.loopexit513.loopexit698.unr-lcssa:               ; preds = %._crit_edge598.1, %.lr.ph604
  %indvar655.unr = phi i64 [ 0, %.lr.ph604 ], [ %indvar.next656.1, %._crit_edge598.1 ]
  %.2440602.unr = phi i64 [ 1, %.lr.ph604 ], [ %409, %._crit_edge598.1 ]
  %lcmp.mod719.not = icmp eq i64 %xtraiter717, 0
  %.not490594.epil = icmp sgt i64 %.2440602.unr, %.pre662
  %or.cond729 = select i1 %lcmp.mod719.not, i1 true, i1 %.not490594.epil
  br i1 %or.cond729, label %.loopexit513, label %.lr.ph597.epil

.lr.ph597.epil:                                   ; preds = %.loopexit513.loopexit698.unr-lcssa
  %423 = sub i64 %.pre662, %indvar655.unr
  %424 = shl i64 %423, 3
  %425 = mul i64 %indvar655.unr, 528
  %scevgep658.epil = getelementptr i8, ptr %22, i64 %425
  %426 = mul i64 %132, %indvar655.unr
  %scevgep657.epil = getelementptr i8, ptr %398, i64 %426
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep657.epil, ptr align 16 %scevgep658.epil, i64 %424, i1 false), !tbaa !9
  br label %.loopexit513

.loopexit513:                                     ; preds = %.loopexit513.loopexit698.unr-lcssa, %.lr.ph597.epil, %scalar.ph, %middle.block, %396, %348
  %427 = phi i64 [ %.pre662, %396 ], [ %.pre663, %348 ], [ %255, %middle.block ], [ %255, %scalar.ph ], [ %.pre662, %.lr.ph597.epil ], [ %.pre662, %.loopexit513.loopexit698.unr-lcssa ]
  store i64 %.3451629, ptr %10, align 8, !tbaa !5
  %.not487.not612 = icmp sgt i64 %427, 0
  br i1 %.not487.not612, label %.lr.ph616, label %._crit_edge617

.lr.ph616:                                        ; preds = %.loopexit513
  %428 = add nuw nsw i64 %427, %.3451629
  %429 = mul nsw i64 %.3451629, %24
  %invariant.gep618 = getelementptr double, ptr %26, i64 %429
  %430 = getelementptr double, ptr %invariant.gep618, i64 %.3451.neg631
  %431 = getelementptr double, ptr %430, i64 %30
  %432 = getelementptr double, ptr %invariant.gep618, i64 %.3451.neg631
  %433 = getelementptr double, ptr %432, i64 %30
  %434 = getelementptr double, ptr %invariant.gep618, i64 %30
  %435 = getelementptr i8, ptr %434, i64 8
  %436 = getelementptr double, ptr %435, i64 %.3451.neg631
  %invariant.gep674 = getelementptr i8, ptr %invariant.gep547, i64 16
  br label %437

437:                                              ; preds = %.lr.ph616, %473
  %.3.in613 = phi i64 [ %428, %.lr.ph616 ], [ %.3614, %473 ]
  %.3614 = add nsw i64 %.3.in613, -1
  %438 = getelementptr inbounds i64, ptr %27, i64 %.3614
  %439 = load i64, ptr %438, align 8, !tbaa !5
  %440 = sub nsw i64 %439, %.3614
  %.not488 = icmp eq i64 %439, %.3614
  br i1 %.not488, label %._crit_edge667, label %441

._crit_edge667:                                   ; preds = %437
  %.pre668 = sub nsw i64 %.3614, %.3451629
  br label %459

441:                                              ; preds = %437
  %442 = load i64, ptr %2, align 8, !tbaa !5
  %443 = add nsw i64 %442, %.3451629
  %444 = icmp slt i64 %439, %443
  br i1 %444, label %445, label %450

445:                                              ; preds = %441
  %446 = sub nsw i64 %.3614, %.3451629
  store i64 %446, ptr %11, align 8, !tbaa !5
  %447 = load i64, ptr %5, align 8, !tbaa !5
  %448 = add nsw i64 %447, -1
  store i64 %448, ptr %12, align 8, !tbaa !5
  store i64 %448, ptr %13, align 8, !tbaa !5
  %gep621 = getelementptr double, ptr %433, i64 %.3.in613
  %gep623 = getelementptr double, ptr %436, i64 %439
  %449 = call i32 @f2c_dswap(ptr noundef nonnull %11, ptr noundef %gep621, ptr noundef nonnull %12, ptr noundef %gep623, ptr noundef nonnull %13) #6
  br label %459

450:                                              ; preds = %441
  %451 = add i64 %440, %.3.in613
  %452 = sub nsw i64 %.3614, %.3451629
  store i64 %452, ptr %11, align 8, !tbaa !5
  %453 = load i64, ptr %5, align 8, !tbaa !5
  %454 = add nsw i64 %453, -1
  store i64 %454, ptr %12, align 8, !tbaa !5
  %gep619 = getelementptr double, ptr %431, i64 %.3.in613
  %455 = xor i64 %443, -1
  %456 = add i64 %451, %455
  %457 = getelementptr inbounds [4160 x double], ptr %23, i64 0, i64 %456
  %458 = call i32 @f2c_dswap(ptr noundef nonnull %11, ptr noundef %gep619, ptr noundef nonnull %12, ptr noundef nonnull %457, ptr noundef nonnull @c__65) #6
  br label %459

459:                                              ; preds = %._crit_edge667, %445, %450
  %.pre-phi669 = phi i64 [ %.pre668, %._crit_edge667 ], [ %446, %445 ], [ %452, %450 ]
  %460 = load i64, ptr %16, align 8, !tbaa !5
  store i64 %460, ptr %11, align 8, !tbaa !5
  %461 = add nsw i64 %.pre-phi669, 1
  store i64 %461, ptr %12, align 8, !tbaa !5
  %462 = call i64 @llvm.smin.i64(i64 %460, i64 %461)
  store i64 %462, ptr %21, align 8, !tbaa !5
  %463 = icmp sgt i64 %462, 0
  br i1 %463, label %464, label %473

464:                                              ; preds = %459
  %465 = mul nsw i64 %461, 65
  %466 = add nsw i64 %465, -65
  %467 = getelementptr inbounds [4160 x double], ptr %23, i64 0, i64 %466
  %468 = load i64, ptr %2, align 8, !tbaa !5
  %469 = sub i64 %30, %.3.in613
  %470 = mul nsw i64 %.3614, %24
  %gep675 = getelementptr double, ptr %invariant.gep674, i64 %469
  %gep610 = getelementptr double, ptr %gep675, i64 %468
  %471 = getelementptr double, ptr %gep610, i64 %470
  %472 = call i32 @f2c_dcopy(ptr noundef nonnull %21, ptr noundef nonnull %467, ptr noundef nonnull @c__1, ptr noundef %471, ptr noundef nonnull @c__1) #6
  br label %473

473:                                              ; preds = %459, %464
  %474 = load i64, ptr %10, align 8, !tbaa !5
  %.not487.not = icmp sgt i64 %.3614, %474
  br i1 %.not487.not, label %437, label %._crit_edge617, !llvm.loop !29

._crit_edge617:                                   ; preds = %473, %.loopexit513.thread, %.loopexit513
  %475 = add nuw nsw i64 %.3451629, %51
  %.3451.neg = sub nsw i64 0, %475
  %.not474 = icmp sgt i64 %475, %.506
  %indvar.next645 = add i64 %indvar644, 1
  br i1 %.not474, label %.loopexit515, label %133, !llvm.loop !30

.loopexit515:                                     ; preds = %._crit_edge617, %._crit_edge540, %59, %46, %.thread
  call void @llvm.lifetime.end.p0(i64 33280, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 33280, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  ret i32 0
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #5

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { nounwind }

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

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


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