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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b19 = external hidden global double, align 8
@c_b21 = external hidden global double, align 8
@c__2 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@c_false = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8

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

142:                                              ; preds = %20
  %143 = load i64, ptr %88, align 8, !tbaa !9
  %144 = icmp ne i64 %143, 0
  br label %145

145:                                              ; preds = %142, %20
  %146 = phi i1 [ true, %20 ], [ %144, %142 ]
  %147 = zext i1 %146 to i32
  %148 = sext i32 %147 to i64
  store i64 %148, ptr %80, align 8, !tbaa !9
  %149 = load ptr, ptr %22, align 8, !tbaa !5
  %150 = call i64 @lsame_(ptr noundef %149, ptr noundef @.str.2)
  %151 = icmp ne i64 %150, 0
  br i1 %151, label %155, label %152

152:                                              ; preds = %145
  %153 = load i64, ptr %88, align 8, !tbaa !9
  %154 = icmp ne i64 %153, 0
  br label %155

155:                                              ; preds = %152, %145
  %156 = phi i1 [ true, %145 ], [ %154, %152 ]
  %157 = zext i1 %156 to i32
  %158 = sext i32 %157 to i64
  store i64 %158, ptr %89, align 8, !tbaa !9
  %159 = load ptr, ptr %23, align 8, !tbaa !5
  %160 = call i64 @lsame_(ptr noundef %159, ptr noundef @.str.3)
  store i64 %160, ptr %90, align 8, !tbaa !9
  %161 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %161, align 8, !tbaa !9
  %162 = load ptr, ptr %39, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp eq i64 %163, -1
  %165 = zext i1 %164 to i32
  %166 = sext i32 %165 to i64
  store i64 %166, ptr %93, align 8, !tbaa !9
  %167 = load i64, ptr %80, align 8, !tbaa !9
  %168 = icmp ne i64 %167, 0
  br i1 %168, label %174, label %169

169:                                              ; preds = %155
  %170 = load i64, ptr %89, align 8, !tbaa !9
  %171 = icmp ne i64 %170, 0
  br i1 %171, label %174, label %172

172:                                              ; preds = %169
  %173 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %173, align 8, !tbaa !9
  br label %380

174:                                              ; preds = %169, %155
  %175 = load ptr, ptr %23, align 8, !tbaa !5
  %176 = call i64 @lsame_(ptr noundef %175, ptr noundef @.str.4)
  %177 = icmp ne i64 %176, 0
  br i1 %177, label %183, label %178

178:                                              ; preds = %174
  %179 = load i64, ptr %90, align 8, !tbaa !9
  %180 = icmp ne i64 %179, 0
  br i1 %180, label %183, label %181

181:                                              ; preds = %178
  %182 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -2, ptr %182, align 8, !tbaa !9
  br label %379

183:                                              ; preds = %178, %174
  %184 = load ptr, ptr %25, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp slt i64 %185, 0
  br i1 %186, label %187, label %189

187:                                              ; preds = %183
  %188 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %188, align 8, !tbaa !9
  br label %378

189:                                              ; preds = %183
  %190 = load ptr, ptr %27, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = icmp sge i64 1, %193
  br i1 %194, label %195, label %196

195:                                              ; preds = %189
  br label %199

196:                                              ; preds = %189
  %197 = load ptr, ptr %25, align 8, !tbaa !5
  %198 = load i64, ptr %197, align 8, !tbaa !9
  br label %199

199:                                              ; preds = %196, %195
  %200 = phi i64 [ 1, %195 ], [ %198, %196 ]
  %201 = icmp slt i64 %191, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %199
  %203 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -6, ptr %203, align 8, !tbaa !9
  br label %377

204:                                              ; preds = %199
  %205 = load ptr, ptr %29, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = load ptr, ptr %25, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = icmp sge i64 1, %208
  br i1 %209, label %210, label %211

210:                                              ; preds = %204
  br label %214

211:                                              ; preds = %204
  %212 = load ptr, ptr %25, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  br label %214

214:                                              ; preds = %211, %210
  %215 = phi i64 [ 1, %210 ], [ %213, %211 ]
  %216 = icmp slt i64 %206, %215
  br i1 %216, label %217, label %219

217:                                              ; preds = %214
  %218 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -8, ptr %218, align 8, !tbaa !9
  br label %376

219:                                              ; preds = %214
  %220 = load i64, ptr %80, align 8, !tbaa !9
  %221 = icmp ne i64 %220, 0
  br i1 %221, label %222, label %230

222:                                              ; preds = %219
  %223 = load ptr, ptr %31, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = load ptr, ptr %25, align 8, !tbaa !5
  %226 = load i64, ptr %225, align 8, !tbaa !9
  %227 = icmp slt i64 %224, %226
  br i1 %227, label %228, label %230

228:                                              ; preds = %222
  %229 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -10, ptr %229, align 8, !tbaa !9
  br label %375

230:                                              ; preds = %222, %219
  %231 = load i64, ptr %80, align 8, !tbaa !9
  %232 = icmp ne i64 %231, 0
  br i1 %232, label %233, label %241

233:                                              ; preds = %230
  %234 = load ptr, ptr %33, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  %236 = load ptr, ptr %25, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  %238 = icmp slt i64 %235, %237
  br i1 %238, label %239, label %241

239:                                              ; preds = %233
  %240 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -12, ptr %240, align 8, !tbaa !9
  br label %374

241:                                              ; preds = %233, %230
  %242 = load i64, ptr %90, align 8, !tbaa !9
  %243 = icmp ne i64 %242, 0
  br i1 %243, label %244, label %320

244:                                              ; preds = %241
  %245 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 0, ptr %245, align 8, !tbaa !9
  store i64 0, ptr %65, align 8, !tbaa !9
  %246 = load ptr, ptr %25, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  store i64 %247, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %248

248:                                              ; preds = %316, %244
  %249 = load i64, ptr %55, align 8, !tbaa !9
  %250 = load i64, ptr %50, align 8, !tbaa !9
  %251 = icmp sle i64 %249, %250
  br i1 %251, label %252, label %319

252:                                              ; preds = %248
  %253 = load i64, ptr %65, align 8, !tbaa !9
  %254 = icmp ne i64 %253, 0
  br i1 %254, label %255, label %256

255:                                              ; preds = %252
  store i64 0, ptr %65, align 8, !tbaa !9
  br label %315

256:                                              ; preds = %252
  %257 = load i64, ptr %55, align 8, !tbaa !9
  %258 = load ptr, ptr %25, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = icmp slt i64 %257, %259
  br i1 %260, label %261, label %302

261:                                              ; preds = %256
  %262 = load ptr, ptr %26, align 8, !tbaa !5
  %263 = load i64, ptr %55, align 8, !tbaa !9
  %264 = add nsw i64 %263, 1
  %265 = load i64, ptr %55, align 8, !tbaa !9
  %266 = load i64, ptr %42, align 8, !tbaa !9
  %267 = mul nsw i64 %265, %266
  %268 = add nsw i64 %264, %267
  %269 = getelementptr inbounds double, ptr %262, i64 %268
  %270 = load double, ptr %269, align 8, !tbaa !11
  %271 = fcmp oeq double %270, 0.000000e+00
  br i1 %271, label %272, label %283

272:                                              ; preds = %261
  %273 = load ptr, ptr %24, align 8, !tbaa !5
  %274 = load i64, ptr %55, align 8, !tbaa !9
  %275 = getelementptr inbounds i64, ptr %273, i64 %274
  %276 = load i64, ptr %275, align 8, !tbaa !9
  %277 = icmp ne i64 %276, 0
  br i1 %277, label %278, label %282

278:                                              ; preds = %272
  %279 = load ptr, ptr %37, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = add nsw i64 %280, 1
  store i64 %281, ptr %279, align 8, !tbaa !9
  br label %282

282:                                              ; preds = %278, %272
  br label %301

283:                                              ; preds = %261
  store i64 1, ptr %65, align 8, !tbaa !9
  %284 = load ptr, ptr %24, align 8, !tbaa !5
  %285 = load i64, ptr %55, align 8, !tbaa !9
  %286 = getelementptr inbounds i64, ptr %284, i64 %285
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = icmp ne i64 %287, 0
  br i1 %288, label %296, label %289

289:                                              ; preds = %283
  %290 = load ptr, ptr %24, align 8, !tbaa !5
  %291 = load i64, ptr %55, align 8, !tbaa !9
  %292 = add nsw i64 %291, 1
  %293 = getelementptr inbounds i64, ptr %290, i64 %292
  %294 = load i64, ptr %293, align 8, !tbaa !9
  %295 = icmp ne i64 %294, 0
  br i1 %295, label %296, label %300

296:                                              ; preds = %289, %283
  %297 = load ptr, ptr %37, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = add nsw i64 %298, 2
  store i64 %299, ptr %297, align 8, !tbaa !9
  br label %300

300:                                              ; preds = %296, %289
  br label %301

301:                                              ; preds = %300, %282
  br label %314

302:                                              ; preds = %256
  %303 = load ptr, ptr %24, align 8, !tbaa !5
  %304 = load ptr, ptr %25, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = getelementptr inbounds i64, ptr %303, i64 %305
  %307 = load i64, ptr %306, align 8, !tbaa !9
  %308 = icmp ne i64 %307, 0
  br i1 %308, label %309, label %313

309:                                              ; preds = %302
  %310 = load ptr, ptr %37, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  %312 = add nsw i64 %311, 1
  store i64 %312, ptr %310, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %309, %302
  br label %314

314:                                              ; preds = %313, %301
  br label %315

315:                                              ; preds = %314, %255
  br label %316

316:                                              ; preds = %315
  %317 = load i64, ptr %55, align 8, !tbaa !9
  %318 = add nsw i64 %317, 1
  store i64 %318, ptr %55, align 8, !tbaa !9
  br label %248, !llvm.loop !13

319:                                              ; preds = %248
  br label %324

320:                                              ; preds = %241
  %321 = load ptr, ptr %25, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 %322, ptr %323, align 8, !tbaa !9
  br label %324

324:                                              ; preds = %320, %319
  %325 = load ptr, ptr %25, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = icmp eq i64 %326, 0
  br i1 %327, label %328, label %329

328:                                              ; preds = %324
  store i64 1, ptr %79, align 8, !tbaa !9
  br label %350

329:                                              ; preds = %324
  %330 = load ptr, ptr %22, align 8, !tbaa !5
  %331 = call i64 @lsame_(ptr noundef %330, ptr noundef @.str.2)
  %332 = icmp ne i64 %331, 0
  br i1 %332, label %337, label %333

333:                                              ; preds = %329
  %334 = load ptr, ptr %22, align 8, !tbaa !5
  %335 = call i64 @lsame_(ptr noundef %334, ptr noundef @.str)
  %336 = icmp ne i64 %335, 0
  br i1 %336, label %337, label %346

337:                                              ; preds = %333, %329
  %338 = load ptr, ptr %25, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  %340 = shl i64 %339, 1
  %341 = load ptr, ptr %25, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = add nsw i64 %342, 2
  %344 = mul nsw i64 %340, %343
  %345 = add nsw i64 %344, 16
  store i64 %345, ptr %79, align 8, !tbaa !9
  br label %349

346:                                              ; preds = %333
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = load i64, ptr %347, align 8, !tbaa !9
  store i64 %348, ptr %79, align 8, !tbaa !9
  br label %349

349:                                              ; preds = %346, %337
  br label %350

350:                                              ; preds = %349, %328
  %351 = load i64, ptr %79, align 8, !tbaa !9
  %352 = sitofp i64 %351 to double
  %353 = load ptr, ptr %38, align 8, !tbaa !5
  %354 = getelementptr inbounds double, ptr %353, i64 1
  store double %352, ptr %354, align 8, !tbaa !11
  %355 = load ptr, ptr %36, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  %357 = load ptr, ptr %37, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = icmp slt i64 %356, %358
  br i1 %359, label %360, label %362

360:                                              ; preds = %350
  %361 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -15, ptr %361, align 8, !tbaa !9
  br label %373

362:                                              ; preds = %350
  %363 = load ptr, ptr %39, align 8, !tbaa !5
  %364 = load i64, ptr %363, align 8, !tbaa !9
  %365 = load i64, ptr %79, align 8, !tbaa !9
  %366 = icmp slt i64 %364, %365
  br i1 %366, label %367, label %372

367:                                              ; preds = %362
  %368 = load i64, ptr %93, align 8, !tbaa !9
  %369 = icmp ne i64 %368, 0
  br i1 %369, label %372, label %370

370:                                              ; preds = %367
  %371 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -18, ptr %371, align 8, !tbaa !9
  br label %372

372:                                              ; preds = %370, %367, %362
  br label %373

373:                                              ; preds = %372, %360
  br label %374

374:                                              ; preds = %373, %239
  br label %375

375:                                              ; preds = %374, %228
  br label %376

376:                                              ; preds = %375, %217
  br label %377

377:                                              ; preds = %376, %202
  br label %378

378:                                              ; preds = %377, %187
  br label %379

379:                                              ; preds = %378, %181
  br label %380

380:                                              ; preds = %379, %172
  %381 = load ptr, ptr %41, align 8, !tbaa !5
  %382 = load i64, ptr %381, align 8, !tbaa !9
  %383 = icmp ne i64 %382, 0
  br i1 %383, label %384, label %389

384:                                              ; preds = %380
  %385 = load ptr, ptr %41, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = sub nsw i64 0, %386
  store i64 %387, ptr %50, align 8, !tbaa !9
  %388 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %50)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %94, align 4
  br label %1153

389:                                              ; preds = %380
  %390 = load i64, ptr %93, align 8, !tbaa !9
  %391 = icmp ne i64 %390, 0
  br i1 %391, label %392, label %393

392:                                              ; preds = %389
  store i32 0, ptr %21, align 4
  store i32 1, ptr %94, align 4
  br label %1153

393:                                              ; preds = %389
  br label %394

394:                                              ; preds = %393
  %395 = load ptr, ptr %25, align 8, !tbaa !5
  %396 = load i64, ptr %395, align 8, !tbaa !9
  %397 = icmp eq i64 %396, 0
  br i1 %397, label %398, label %399

398:                                              ; preds = %394
  store i32 0, ptr %21, align 4
  store i32 1, ptr %94, align 4
  br label %1153

399:                                              ; preds = %394
  %400 = call double @dlamch_(ptr noundef @.str.6)
  store double %400, ptr %62, align 8, !tbaa !11
  %401 = call double @dlamch_(ptr noundef @.str.3)
  %402 = load double, ptr %62, align 8, !tbaa !11
  %403 = fdiv double %401, %402
  store double %403, ptr %92, align 8, !tbaa !11
  store i64 0, ptr %60, align 8, !tbaa !9
  store i64 0, ptr %65, align 8, !tbaa !9
  %404 = load ptr, ptr %25, align 8, !tbaa !5
  %405 = load i64, ptr %404, align 8, !tbaa !9
  store i64 %405, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %406

406:                                              ; preds = %1145, %399
  %407 = load i64, ptr %55, align 8, !tbaa !9
  %408 = load i64, ptr %50, align 8, !tbaa !9
  %409 = icmp sle i64 %407, %408
  br i1 %409, label %410, label %1148

410:                                              ; preds = %406
  %411 = load i64, ptr %65, align 8, !tbaa !9
  %412 = icmp ne i64 %411, 0
  br i1 %412, label %413, label %414

413:                                              ; preds = %410
  store i64 0, ptr %65, align 8, !tbaa !9
  br label %1144

414:                                              ; preds = %410
  %415 = load i64, ptr %55, align 8, !tbaa !9
  %416 = load ptr, ptr %25, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  %418 = icmp slt i64 %415, %417
  br i1 %418, label %419, label %432

419:                                              ; preds = %414
  %420 = load ptr, ptr %26, align 8, !tbaa !5
  %421 = load i64, ptr %55, align 8, !tbaa !9
  %422 = add nsw i64 %421, 1
  %423 = load i64, ptr %55, align 8, !tbaa !9
  %424 = load i64, ptr %42, align 8, !tbaa !9
  %425 = mul nsw i64 %423, %424
  %426 = add nsw i64 %422, %425
  %427 = getelementptr inbounds double, ptr %420, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !11
  %429 = fcmp une double %428, 0.000000e+00
  %430 = zext i1 %429 to i32
  %431 = sext i32 %430 to i64
  store i64 %431, ptr %65, align 8, !tbaa !9
  br label %432

432:                                              ; preds = %419, %414
  br label %433

433:                                              ; preds = %432
  %434 = load i64, ptr %90, align 8, !tbaa !9
  %435 = icmp ne i64 %434, 0
  br i1 %435, label %436, label %463

436:                                              ; preds = %433
  %437 = load i64, ptr %65, align 8, !tbaa !9
  %438 = icmp ne i64 %437, 0
  br i1 %438, label %439, label %454

439:                                              ; preds = %436
  %440 = load ptr, ptr %24, align 8, !tbaa !5
  %441 = load i64, ptr %55, align 8, !tbaa !9
  %442 = getelementptr inbounds i64, ptr %440, i64 %441
  %443 = load i64, ptr %442, align 8, !tbaa !9
  %444 = icmp ne i64 %443, 0
  br i1 %444, label %453, label %445

445:                                              ; preds = %439
  %446 = load ptr, ptr %24, align 8, !tbaa !5
  %447 = load i64, ptr %55, align 8, !tbaa !9
  %448 = add nsw i64 %447, 1
  %449 = getelementptr inbounds i64, ptr %446, i64 %448
  %450 = load i64, ptr %449, align 8, !tbaa !9
  %451 = icmp ne i64 %450, 0
  br i1 %451, label %453, label %452

452:                                              ; preds = %445
  br label %1144

453:                                              ; preds = %445, %439
  br label %462

454:                                              ; preds = %436
  %455 = load ptr, ptr %24, align 8, !tbaa !5
  %456 = load i64, ptr %55, align 8, !tbaa !9
  %457 = getelementptr inbounds i64, ptr %455, i64 %456
  %458 = load i64, ptr %457, align 8, !tbaa !9
  %459 = icmp ne i64 %458, 0
  br i1 %459, label %461, label %460

460:                                              ; preds = %454
  br label %1144

461:                                              ; preds = %454
  br label %462

462:                                              ; preds = %461, %453
  br label %463

463:                                              ; preds = %462, %433
  %464 = load i64, ptr %60, align 8, !tbaa !9
  %465 = add nsw i64 %464, 1
  store i64 %465, ptr %60, align 8, !tbaa !9
  %466 = load i64, ptr %80, align 8, !tbaa !9
  %467 = icmp ne i64 %466, 0
  br i1 %467, label %468, label %770

468:                                              ; preds = %463
  %469 = load i64, ptr %65, align 8, !tbaa !9
  %470 = icmp ne i64 %469, 0
  br i1 %470, label %471, label %685

471:                                              ; preds = %468
  %472 = load ptr, ptr %25, align 8, !tbaa !5
  %473 = load ptr, ptr %32, align 8, !tbaa !5
  %474 = load i64, ptr %60, align 8, !tbaa !9
  %475 = load i64, ptr %48, align 8, !tbaa !9
  %476 = mul nsw i64 %474, %475
  %477 = add nsw i64 %476, 1
  %478 = getelementptr inbounds double, ptr %473, i64 %477
  %479 = call double @f2c_dnrm2(ptr noundef %472, ptr noundef %478, ptr noundef @c__1)
  store double %479, ptr %52, align 8, !tbaa !11
  %480 = load ptr, ptr %25, align 8, !tbaa !5
  %481 = load ptr, ptr %32, align 8, !tbaa !5
  %482 = load i64, ptr %60, align 8, !tbaa !9
  %483 = add nsw i64 %482, 1
  %484 = load i64, ptr %48, align 8, !tbaa !9
  %485 = mul nsw i64 %483, %484
  %486 = add nsw i64 %485, 1
  %487 = getelementptr inbounds double, ptr %481, i64 %486
  %488 = call double @f2c_dnrm2(ptr noundef %480, ptr noundef %487, ptr noundef @c__1)
  store double %488, ptr %53, align 8, !tbaa !11
  %489 = call double @dlapy2_(ptr noundef %52, ptr noundef %53)
  store double %489, ptr %72, align 8, !tbaa !11
  %490 = load ptr, ptr %25, align 8, !tbaa !5
  %491 = load ptr, ptr %30, align 8, !tbaa !5
  %492 = load i64, ptr %60, align 8, !tbaa !9
  %493 = load i64, ptr %46, align 8, !tbaa !9
  %494 = mul nsw i64 %492, %493
  %495 = add nsw i64 %494, 1
  %496 = getelementptr inbounds double, ptr %491, i64 %495
  %497 = call double @f2c_dnrm2(ptr noundef %490, ptr noundef %496, ptr noundef @c__1)
  store double %497, ptr %52, align 8, !tbaa !11
  %498 = load ptr, ptr %25, align 8, !tbaa !5
  %499 = load ptr, ptr %30, align 8, !tbaa !5
  %500 = load i64, ptr %60, align 8, !tbaa !9
  %501 = add nsw i64 %500, 1
  %502 = load i64, ptr %46, align 8, !tbaa !9
  %503 = mul nsw i64 %501, %502
  %504 = add nsw i64 %503, 1
  %505 = getelementptr inbounds double, ptr %499, i64 %504
  %506 = call double @f2c_dnrm2(ptr noundef %498, ptr noundef %505, ptr noundef @c__1)
  store double %506, ptr %53, align 8, !tbaa !11
  %507 = call double @dlapy2_(ptr noundef %52, ptr noundef %53)
  store double %507, ptr %70, align 8, !tbaa !11
  %508 = load ptr, ptr %25, align 8, !tbaa !5
  %509 = load ptr, ptr %25, align 8, !tbaa !5
  %510 = load ptr, ptr %26, align 8, !tbaa !5
  %511 = load i64, ptr %43, align 8, !tbaa !9
  %512 = getelementptr inbounds double, ptr %510, i64 %511
  %513 = load ptr, ptr %27, align 8, !tbaa !5
  %514 = load ptr, ptr %32, align 8, !tbaa !5
  %515 = load i64, ptr %60, align 8, !tbaa !9
  %516 = load i64, ptr %48, align 8, !tbaa !9
  %517 = mul nsw i64 %515, %516
  %518 = add nsw i64 %517, 1
  %519 = getelementptr inbounds double, ptr %514, i64 %518
  %520 = load ptr, ptr %38, align 8, !tbaa !5
  %521 = getelementptr inbounds double, ptr %520, i64 1
  %522 = call i32 @f2c_dgemv(ptr noundef @.str.7, ptr noundef %508, ptr noundef %509, ptr noundef @c_b19, ptr noundef %512, ptr noundef %513, ptr noundef %519, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %521, ptr noundef @c__1)
  %523 = load ptr, ptr %25, align 8, !tbaa !5
  %524 = load ptr, ptr %38, align 8, !tbaa !5
  %525 = getelementptr inbounds double, ptr %524, i64 1
  %526 = load ptr, ptr %30, align 8, !tbaa !5
  %527 = load i64, ptr %60, align 8, !tbaa !9
  %528 = load i64, ptr %46, align 8, !tbaa !9
  %529 = mul nsw i64 %527, %528
  %530 = add nsw i64 %529, 1
  %531 = getelementptr inbounds double, ptr %526, i64 %530
  %532 = call double @f2c_ddot(ptr noundef %523, ptr noundef %525, ptr noundef @c__1, ptr noundef %531, ptr noundef @c__1)
  store double %532, ptr %84, align 8, !tbaa !11
  %533 = load ptr, ptr %25, align 8, !tbaa !5
  %534 = load ptr, ptr %38, align 8, !tbaa !5
  %535 = getelementptr inbounds double, ptr %534, i64 1
  %536 = load ptr, ptr %30, align 8, !tbaa !5
  %537 = load i64, ptr %60, align 8, !tbaa !9
  %538 = add nsw i64 %537, 1
  %539 = load i64, ptr %46, align 8, !tbaa !9
  %540 = mul nsw i64 %538, %539
  %541 = add nsw i64 %540, 1
  %542 = getelementptr inbounds double, ptr %536, i64 %541
  %543 = call double @f2c_ddot(ptr noundef %533, ptr noundef %535, ptr noundef @c__1, ptr noundef %542, ptr noundef @c__1)
  store double %543, ptr %82, align 8, !tbaa !11
  %544 = load ptr, ptr %25, align 8, !tbaa !5
  %545 = load ptr, ptr %25, align 8, !tbaa !5
  %546 = load ptr, ptr %26, align 8, !tbaa !5
  %547 = load i64, ptr %43, align 8, !tbaa !9
  %548 = getelementptr inbounds double, ptr %546, i64 %547
  %549 = load ptr, ptr %27, align 8, !tbaa !5
  %550 = load ptr, ptr %32, align 8, !tbaa !5
  %551 = load i64, ptr %60, align 8, !tbaa !9
  %552 = add nsw i64 %551, 1
  %553 = load i64, ptr %48, align 8, !tbaa !9
  %554 = mul nsw i64 %552, %553
  %555 = add nsw i64 %554, 1
  %556 = getelementptr inbounds double, ptr %550, i64 %555
  %557 = load ptr, ptr %38, align 8, !tbaa !5
  %558 = getelementptr inbounds double, ptr %557, i64 1
  %559 = call i32 @f2c_dgemv(ptr noundef @.str.7, ptr noundef %544, ptr noundef %545, ptr noundef @c_b19, ptr noundef %548, ptr noundef %549, ptr noundef %556, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %558, ptr noundef @c__1)
  %560 = load ptr, ptr %25, align 8, !tbaa !5
  %561 = load ptr, ptr %38, align 8, !tbaa !5
  %562 = getelementptr inbounds double, ptr %561, i64 1
  %563 = load ptr, ptr %30, align 8, !tbaa !5
  %564 = load i64, ptr %60, align 8, !tbaa !9
  %565 = add nsw i64 %564, 1
  %566 = load i64, ptr %46, align 8, !tbaa !9
  %567 = mul nsw i64 %565, %566
  %568 = add nsw i64 %567, 1
  %569 = getelementptr inbounds double, ptr %563, i64 %568
  %570 = call double @f2c_ddot(ptr noundef %560, ptr noundef %562, ptr noundef @c__1, ptr noundef %569, ptr noundef @c__1)
  store double %570, ptr %78, align 8, !tbaa !11
  %571 = load ptr, ptr %25, align 8, !tbaa !5
  %572 = load ptr, ptr %38, align 8, !tbaa !5
  %573 = getelementptr inbounds double, ptr %572, i64 1
  %574 = load ptr, ptr %30, align 8, !tbaa !5
  %575 = load i64, ptr %60, align 8, !tbaa !9
  %576 = load i64, ptr %46, align 8, !tbaa !9
  %577 = mul nsw i64 %575, %576
  %578 = add nsw i64 %577, 1
  %579 = getelementptr inbounds double, ptr %574, i64 %578
  %580 = call double @f2c_ddot(ptr noundef %571, ptr noundef %573, ptr noundef @c__1, ptr noundef %579, ptr noundef @c__1)
  store double %580, ptr %81, align 8, !tbaa !11
  %581 = load double, ptr %84, align 8, !tbaa !11
  %582 = load double, ptr %78, align 8, !tbaa !11
  %583 = fadd double %581, %582
  store double %583, ptr %67, align 8, !tbaa !11
  %584 = load double, ptr %81, align 8, !tbaa !11
  %585 = load double, ptr %82, align 8, !tbaa !11
  %586 = fsub double %584, %585
  store double %586, ptr %76, align 8, !tbaa !11
  %587 = load ptr, ptr %25, align 8, !tbaa !5
  %588 = load ptr, ptr %25, align 8, !tbaa !5
  %589 = load ptr, ptr %28, align 8, !tbaa !5
  %590 = load i64, ptr %45, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  %592 = load ptr, ptr %29, align 8, !tbaa !5
  %593 = load ptr, ptr %32, align 8, !tbaa !5
  %594 = load i64, ptr %60, align 8, !tbaa !9
  %595 = load i64, ptr %48, align 8, !tbaa !9
  %596 = mul nsw i64 %594, %595
  %597 = add nsw i64 %596, 1
  %598 = getelementptr inbounds double, ptr %593, i64 %597
  %599 = load ptr, ptr %38, align 8, !tbaa !5
  %600 = getelementptr inbounds double, ptr %599, i64 1
  %601 = call i32 @f2c_dgemv(ptr noundef @.str.7, ptr noundef %587, ptr noundef %588, ptr noundef @c_b19, ptr noundef %591, ptr noundef %592, ptr noundef %598, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %600, ptr noundef @c__1)
  %602 = load ptr, ptr %25, align 8, !tbaa !5
  %603 = load ptr, ptr %38, align 8, !tbaa !5
  %604 = getelementptr inbounds double, ptr %603, i64 1
  %605 = load ptr, ptr %30, align 8, !tbaa !5
  %606 = load i64, ptr %60, align 8, !tbaa !9
  %607 = load i64, ptr %46, align 8, !tbaa !9
  %608 = mul nsw i64 %606, %607
  %609 = add nsw i64 %608, 1
  %610 = getelementptr inbounds double, ptr %605, i64 %609
  %611 = call double @f2c_ddot(ptr noundef %602, ptr noundef %604, ptr noundef @c__1, ptr noundef %610, ptr noundef @c__1)
  store double %611, ptr %84, align 8, !tbaa !11
  %612 = load ptr, ptr %25, align 8, !tbaa !5
  %613 = load ptr, ptr %38, align 8, !tbaa !5
  %614 = getelementptr inbounds double, ptr %613, i64 1
  %615 = load ptr, ptr %30, align 8, !tbaa !5
  %616 = load i64, ptr %60, align 8, !tbaa !9
  %617 = add nsw i64 %616, 1
  %618 = load i64, ptr %46, align 8, !tbaa !9
  %619 = mul nsw i64 %617, %618
  %620 = add nsw i64 %619, 1
  %621 = getelementptr inbounds double, ptr %615, i64 %620
  %622 = call double @f2c_ddot(ptr noundef %612, ptr noundef %614, ptr noundef @c__1, ptr noundef %621, ptr noundef @c__1)
  store double %622, ptr %82, align 8, !tbaa !11
  %623 = load ptr, ptr %25, align 8, !tbaa !5
  %624 = load ptr, ptr %25, align 8, !tbaa !5
  %625 = load ptr, ptr %28, align 8, !tbaa !5
  %626 = load i64, ptr %45, align 8, !tbaa !9
  %627 = getelementptr inbounds double, ptr %625, i64 %626
  %628 = load ptr, ptr %29, align 8, !tbaa !5
  %629 = load ptr, ptr %32, align 8, !tbaa !5
  %630 = load i64, ptr %60, align 8, !tbaa !9
  %631 = add nsw i64 %630, 1
  %632 = load i64, ptr %48, align 8, !tbaa !9
  %633 = mul nsw i64 %631, %632
  %634 = add nsw i64 %633, 1
  %635 = getelementptr inbounds double, ptr %629, i64 %634
  %636 = load ptr, ptr %38, align 8, !tbaa !5
  %637 = getelementptr inbounds double, ptr %636, i64 1
  %638 = call i32 @f2c_dgemv(ptr noundef @.str.7, ptr noundef %623, ptr noundef %624, ptr noundef @c_b19, ptr noundef %627, ptr noundef %628, ptr noundef %635, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %637, ptr noundef @c__1)
  %639 = load ptr, ptr %25, align 8, !tbaa !5
  %640 = load ptr, ptr %38, align 8, !tbaa !5
  %641 = getelementptr inbounds double, ptr %640, i64 1
  %642 = load ptr, ptr %30, align 8, !tbaa !5
  %643 = load i64, ptr %60, align 8, !tbaa !9
  %644 = add nsw i64 %643, 1
  %645 = load i64, ptr %46, align 8, !tbaa !9
  %646 = mul nsw i64 %644, %645
  %647 = add nsw i64 %646, 1
  %648 = getelementptr inbounds double, ptr %642, i64 %647
  %649 = call double @f2c_ddot(ptr noundef %639, ptr noundef %641, ptr noundef @c__1, ptr noundef %648, ptr noundef @c__1)
  store double %649, ptr %78, align 8, !tbaa !11
  %650 = load ptr, ptr %25, align 8, !tbaa !5
  %651 = load ptr, ptr %38, align 8, !tbaa !5
  %652 = getelementptr inbounds double, ptr %651, i64 1
  %653 = load ptr, ptr %30, align 8, !tbaa !5
  %654 = load i64, ptr %60, align 8, !tbaa !9
  %655 = load i64, ptr %46, align 8, !tbaa !9
  %656 = mul nsw i64 %654, %655
  %657 = add nsw i64 %656, 1
  %658 = getelementptr inbounds double, ptr %653, i64 %657
  %659 = call double @f2c_ddot(ptr noundef %650, ptr noundef %652, ptr noundef @c__1, ptr noundef %658, ptr noundef @c__1)
  store double %659, ptr %81, align 8, !tbaa !11
  %660 = load double, ptr %84, align 8, !tbaa !11
  %661 = load double, ptr %78, align 8, !tbaa !11
  %662 = fadd double %660, %661
  store double %662, ptr %68, align 8, !tbaa !11
  %663 = load double, ptr %81, align 8, !tbaa !11
  %664 = load double, ptr %82, align 8, !tbaa !11
  %665 = fsub double %663, %664
  store double %665, ptr %77, align 8, !tbaa !11
  %666 = call double @dlapy2_(ptr noundef %67, ptr noundef %76)
  store double %666, ptr %67, align 8, !tbaa !11
  %667 = call double @dlapy2_(ptr noundef %68, ptr noundef %77)
  store double %667, ptr %68, align 8, !tbaa !11
  %668 = call double @dlapy2_(ptr noundef %67, ptr noundef %68)
  store double %668, ptr %64, align 8, !tbaa !11
  %669 = load double, ptr %64, align 8, !tbaa !11
  %670 = load double, ptr %72, align 8, !tbaa !11
  %671 = load double, ptr %70, align 8, !tbaa !11
  %672 = fmul double %670, %671
  %673 = fdiv double %669, %672
  %674 = load ptr, ptr %34, align 8, !tbaa !5
  %675 = load i64, ptr %60, align 8, !tbaa !9
  %676 = getelementptr inbounds double, ptr %674, i64 %675
  store double %673, ptr %676, align 8, !tbaa !11
  %677 = load ptr, ptr %34, align 8, !tbaa !5
  %678 = load i64, ptr %60, align 8, !tbaa !9
  %679 = getelementptr inbounds double, ptr %677, i64 %678
  %680 = load double, ptr %679, align 8, !tbaa !11
  %681 = load ptr, ptr %34, align 8, !tbaa !5
  %682 = load i64, ptr %60, align 8, !tbaa !9
  %683 = add nsw i64 %682, 1
  %684 = getelementptr inbounds double, ptr %681, i64 %683
  store double %680, ptr %684, align 8, !tbaa !11
  br label %769

685:                                              ; preds = %468
  %686 = load ptr, ptr %25, align 8, !tbaa !5
  %687 = load ptr, ptr %32, align 8, !tbaa !5
  %688 = load i64, ptr %60, align 8, !tbaa !9
  %689 = load i64, ptr %48, align 8, !tbaa !9
  %690 = mul nsw i64 %688, %689
  %691 = add nsw i64 %690, 1
  %692 = getelementptr inbounds double, ptr %687, i64 %691
  %693 = call double @f2c_dnrm2(ptr noundef %686, ptr noundef %692, ptr noundef @c__1)
  store double %693, ptr %72, align 8, !tbaa !11
  %694 = load ptr, ptr %25, align 8, !tbaa !5
  %695 = load ptr, ptr %30, align 8, !tbaa !5
  %696 = load i64, ptr %60, align 8, !tbaa !9
  %697 = load i64, ptr %46, align 8, !tbaa !9
  %698 = mul nsw i64 %696, %697
  %699 = add nsw i64 %698, 1
  %700 = getelementptr inbounds double, ptr %695, i64 %699
  %701 = call double @f2c_dnrm2(ptr noundef %694, ptr noundef %700, ptr noundef @c__1)
  store double %701, ptr %70, align 8, !tbaa !11
  %702 = load ptr, ptr %25, align 8, !tbaa !5
  %703 = load ptr, ptr %25, align 8, !tbaa !5
  %704 = load ptr, ptr %26, align 8, !tbaa !5
  %705 = load i64, ptr %43, align 8, !tbaa !9
  %706 = getelementptr inbounds double, ptr %704, i64 %705
  %707 = load ptr, ptr %27, align 8, !tbaa !5
  %708 = load ptr, ptr %32, align 8, !tbaa !5
  %709 = load i64, ptr %60, align 8, !tbaa !9
  %710 = load i64, ptr %48, align 8, !tbaa !9
  %711 = mul nsw i64 %709, %710
  %712 = add nsw i64 %711, 1
  %713 = getelementptr inbounds double, ptr %708, i64 %712
  %714 = load ptr, ptr %38, align 8, !tbaa !5
  %715 = getelementptr inbounds double, ptr %714, i64 1
  %716 = call i32 @f2c_dgemv(ptr noundef @.str.7, ptr noundef %702, ptr noundef %703, ptr noundef @c_b19, ptr noundef %706, ptr noundef %707, ptr noundef %713, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %715, ptr noundef @c__1)
  %717 = load ptr, ptr %25, align 8, !tbaa !5
  %718 = load ptr, ptr %38, align 8, !tbaa !5
  %719 = getelementptr inbounds double, ptr %718, i64 1
  %720 = load ptr, ptr %30, align 8, !tbaa !5
  %721 = load i64, ptr %60, align 8, !tbaa !9
  %722 = load i64, ptr %46, align 8, !tbaa !9
  %723 = mul nsw i64 %721, %722
  %724 = add nsw i64 %723, 1
  %725 = getelementptr inbounds double, ptr %720, i64 %724
  %726 = call double @f2c_ddot(ptr noundef %717, ptr noundef %719, ptr noundef @c__1, ptr noundef %725, ptr noundef @c__1)
  store double %726, ptr %67, align 8, !tbaa !11
  %727 = load ptr, ptr %25, align 8, !tbaa !5
  %728 = load ptr, ptr %25, align 8, !tbaa !5
  %729 = load ptr, ptr %28, align 8, !tbaa !5
  %730 = load i64, ptr %45, align 8, !tbaa !9
  %731 = getelementptr inbounds double, ptr %729, i64 %730
  %732 = load ptr, ptr %29, align 8, !tbaa !5
  %733 = load ptr, ptr %32, align 8, !tbaa !5
  %734 = load i64, ptr %60, align 8, !tbaa !9
  %735 = load i64, ptr %48, align 8, !tbaa !9
  %736 = mul nsw i64 %734, %735
  %737 = add nsw i64 %736, 1
  %738 = getelementptr inbounds double, ptr %733, i64 %737
  %739 = load ptr, ptr %38, align 8, !tbaa !5
  %740 = getelementptr inbounds double, ptr %739, i64 1
  %741 = call i32 @f2c_dgemv(ptr noundef @.str.7, ptr noundef %727, ptr noundef %728, ptr noundef @c_b19, ptr noundef %731, ptr noundef %732, ptr noundef %738, ptr noundef @c__1, ptr noundef @c_b21, ptr noundef %740, ptr noundef @c__1)
  %742 = load ptr, ptr %25, align 8, !tbaa !5
  %743 = load ptr, ptr %38, align 8, !tbaa !5
  %744 = getelementptr inbounds double, ptr %743, i64 1
  %745 = load ptr, ptr %30, align 8, !tbaa !5
  %746 = load i64, ptr %60, align 8, !tbaa !9
  %747 = load i64, ptr %46, align 8, !tbaa !9
  %748 = mul nsw i64 %746, %747
  %749 = add nsw i64 %748, 1
  %750 = getelementptr inbounds double, ptr %745, i64 %749
  %751 = call double @f2c_ddot(ptr noundef %742, ptr noundef %744, ptr noundef @c__1, ptr noundef %750, ptr noundef @c__1)
  store double %751, ptr %68, align 8, !tbaa !11
  %752 = call double @dlapy2_(ptr noundef %67, ptr noundef %68)
  store double %752, ptr %64, align 8, !tbaa !11
  %753 = load double, ptr %64, align 8, !tbaa !11
  %754 = fcmp oeq double %753, 0.000000e+00
  br i1 %754, label %755, label %759

755:                                              ; preds = %685
  %756 = load ptr, ptr %34, align 8, !tbaa !5
  %757 = load i64, ptr %60, align 8, !tbaa !9
  %758 = getelementptr inbounds double, ptr %756, i64 %757
  store double -1.000000e+00, ptr %758, align 8, !tbaa !11
  br label %768

759:                                              ; preds = %685
  %760 = load double, ptr %64, align 8, !tbaa !11
  %761 = load double, ptr %72, align 8, !tbaa !11
  %762 = load double, ptr %70, align 8, !tbaa !11
  %763 = fmul double %761, %762
  %764 = fdiv double %760, %763
  %765 = load ptr, ptr %34, align 8, !tbaa !5
  %766 = load i64, ptr %60, align 8, !tbaa !9
  %767 = getelementptr inbounds double, ptr %765, i64 %766
  store double %764, ptr %767, align 8, !tbaa !11
  br label %768

768:                                              ; preds = %759, %755
  br label %769

769:                                              ; preds = %768, %471
  br label %770

770:                                              ; preds = %769, %463
  %771 = load i64, ptr %89, align 8, !tbaa !9
  %772 = icmp ne i64 %771, 0
  br i1 %772, label %773, label %1137

773:                                              ; preds = %770
  %774 = load ptr, ptr %25, align 8, !tbaa !5
  %775 = load i64, ptr %774, align 8, !tbaa !9
  %776 = icmp eq i64 %775, 1
  br i1 %776, label %777, label %790

777:                                              ; preds = %773
  %778 = load ptr, ptr %26, align 8, !tbaa !5
  %779 = load i64, ptr %42, align 8, !tbaa !9
  %780 = add nsw i64 %779, 1
  %781 = getelementptr inbounds double, ptr %778, i64 %780
  %782 = load ptr, ptr %28, align 8, !tbaa !5
  %783 = load i64, ptr %44, align 8, !tbaa !9
  %784 = add nsw i64 %783, 1
  %785 = getelementptr inbounds double, ptr %782, i64 %784
  %786 = call double @dlapy2_(ptr noundef %781, ptr noundef %785)
  %787 = load ptr, ptr %35, align 8, !tbaa !5
  %788 = load i64, ptr %60, align 8, !tbaa !9
  %789 = getelementptr inbounds double, ptr %787, i64 %788
  store double %786, ptr %789, align 8, !tbaa !11
  br label %1144

790:                                              ; preds = %773
  %791 = load i64, ptr %65, align 8, !tbaa !9
  %792 = icmp ne i64 %791, 0
  br i1 %792, label %793, label %937

793:                                              ; preds = %790
  %794 = load ptr, ptr %26, align 8, !tbaa !5
  %795 = load i64, ptr %55, align 8, !tbaa !9
  %796 = load i64, ptr %55, align 8, !tbaa !9
  %797 = load i64, ptr %42, align 8, !tbaa !9
  %798 = mul nsw i64 %796, %797
  %799 = add nsw i64 %795, %798
  %800 = getelementptr inbounds double, ptr %794, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !11
  %802 = load ptr, ptr %38, align 8, !tbaa !5
  %803 = getelementptr inbounds double, ptr %802, i64 1
  store double %801, ptr %803, align 8, !tbaa !11
  %804 = load ptr, ptr %26, align 8, !tbaa !5
  %805 = load i64, ptr %55, align 8, !tbaa !9
  %806 = add nsw i64 %805, 1
  %807 = load i64, ptr %55, align 8, !tbaa !9
  %808 = load i64, ptr %42, align 8, !tbaa !9
  %809 = mul nsw i64 %807, %808
  %810 = add nsw i64 %806, %809
  %811 = getelementptr inbounds double, ptr %804, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !11
  %813 = load ptr, ptr %38, align 8, !tbaa !5
  %814 = getelementptr inbounds double, ptr %813, i64 2
  store double %812, ptr %814, align 8, !tbaa !11
  %815 = load ptr, ptr %26, align 8, !tbaa !5
  %816 = load i64, ptr %55, align 8, !tbaa !9
  %817 = load i64, ptr %55, align 8, !tbaa !9
  %818 = add nsw i64 %817, 1
  %819 = load i64, ptr %42, align 8, !tbaa !9
  %820 = mul nsw i64 %818, %819
  %821 = add nsw i64 %816, %820
  %822 = getelementptr inbounds double, ptr %815, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !11
  %824 = load ptr, ptr %38, align 8, !tbaa !5
  %825 = getelementptr inbounds double, ptr %824, i64 3
  store double %823, ptr %825, align 8, !tbaa !11
  %826 = load ptr, ptr %26, align 8, !tbaa !5
  %827 = load i64, ptr %55, align 8, !tbaa !9
  %828 = add nsw i64 %827, 1
  %829 = load i64, ptr %55, align 8, !tbaa !9
  %830 = add nsw i64 %829, 1
  %831 = load i64, ptr %42, align 8, !tbaa !9
  %832 = mul nsw i64 %830, %831
  %833 = add nsw i64 %828, %832
  %834 = getelementptr inbounds double, ptr %826, i64 %833
  %835 = load double, ptr %834, align 8, !tbaa !11
  %836 = load ptr, ptr %38, align 8, !tbaa !5
  %837 = getelementptr inbounds double, ptr %836, i64 4
  store double %835, ptr %837, align 8, !tbaa !11
  %838 = load ptr, ptr %28, align 8, !tbaa !5
  %839 = load i64, ptr %55, align 8, !tbaa !9
  %840 = load i64, ptr %55, align 8, !tbaa !9
  %841 = load i64, ptr %44, align 8, !tbaa !9
  %842 = mul nsw i64 %840, %841
  %843 = add nsw i64 %839, %842
  %844 = getelementptr inbounds double, ptr %838, i64 %843
  %845 = load double, ptr %844, align 8, !tbaa !11
  %846 = load ptr, ptr %38, align 8, !tbaa !5
  %847 = getelementptr inbounds double, ptr %846, i64 5
  store double %845, ptr %847, align 8, !tbaa !11
  %848 = load ptr, ptr %28, align 8, !tbaa !5
  %849 = load i64, ptr %55, align 8, !tbaa !9
  %850 = add nsw i64 %849, 1
  %851 = load i64, ptr %55, align 8, !tbaa !9
  %852 = load i64, ptr %44, align 8, !tbaa !9
  %853 = mul nsw i64 %851, %852
  %854 = add nsw i64 %850, %853
  %855 = getelementptr inbounds double, ptr %848, i64 %854
  %856 = load double, ptr %855, align 8, !tbaa !11
  %857 = load ptr, ptr %38, align 8, !tbaa !5
  %858 = getelementptr inbounds double, ptr %857, i64 6
  store double %856, ptr %858, align 8, !tbaa !11
  %859 = load ptr, ptr %28, align 8, !tbaa !5
  %860 = load i64, ptr %55, align 8, !tbaa !9
  %861 = load i64, ptr %55, align 8, !tbaa !9
  %862 = add nsw i64 %861, 1
  %863 = load i64, ptr %44, align 8, !tbaa !9
  %864 = mul nsw i64 %862, %863
  %865 = add nsw i64 %860, %864
  %866 = getelementptr inbounds double, ptr %859, i64 %865
  %867 = load double, ptr %866, align 8, !tbaa !11
  %868 = load ptr, ptr %38, align 8, !tbaa !5
  %869 = getelementptr inbounds double, ptr %868, i64 7
  store double %867, ptr %869, align 8, !tbaa !11
  %870 = load ptr, ptr %28, align 8, !tbaa !5
  %871 = load i64, ptr %55, align 8, !tbaa !9
  %872 = add nsw i64 %871, 1
  %873 = load i64, ptr %55, align 8, !tbaa !9
  %874 = add nsw i64 %873, 1
  %875 = load i64, ptr %44, align 8, !tbaa !9
  %876 = mul nsw i64 %874, %875
  %877 = add nsw i64 %872, %876
  %878 = getelementptr inbounds double, ptr %870, i64 %877
  %879 = load double, ptr %878, align 8, !tbaa !11
  %880 = load ptr, ptr %38, align 8, !tbaa !5
  %881 = getelementptr inbounds double, ptr %880, i64 8
  store double %879, ptr %881, align 8, !tbaa !11
  %882 = load double, ptr %92, align 8, !tbaa !11
  %883 = load double, ptr %62, align 8, !tbaa !11
  %884 = fmul double %882, %883
  store double %884, ptr %52, align 8, !tbaa !11
  %885 = load ptr, ptr %38, align 8, !tbaa !5
  %886 = getelementptr inbounds double, ptr %885, i64 1
  %887 = load ptr, ptr %38, align 8, !tbaa !5
  %888 = getelementptr inbounds double, ptr %887, i64 5
  %889 = getelementptr inbounds [1 x double], ptr %85, i64 0, i64 0
  %890 = getelementptr inbounds [1 x double], ptr %83, i64 0, i64 0
  %891 = call i32 @dlag2_(ptr noundef %886, ptr noundef @c__2, ptr noundef %888, ptr noundef @c__2, ptr noundef %52, ptr noundef %63, ptr noundef %889, ptr noundef %87, ptr noundef %890, ptr noundef %86)
  store double 1.000000e+00, ptr %91, align 8, !tbaa !11
  %892 = load double, ptr %87, align 8, !tbaa !11
  %893 = load double, ptr %87, align 8, !tbaa !11
  %894 = load double, ptr %86, align 8, !tbaa !11
  %895 = load double, ptr %86, align 8, !tbaa !11
  %896 = fmul double %894, %895
  %897 = call double @llvm.fmuladd.f64(double %892, double %893, double %896)
  %898 = load double, ptr %63, align 8, !tbaa !11
  %899 = load double, ptr %63, align 8, !tbaa !11
  %900 = call double @llvm.fmuladd.f64(double %898, double %899, double %897)
  %901 = fmul double %900, 2.000000e+00
  store double %901, ptr %56, align 8, !tbaa !11
  %902 = load double, ptr %63, align 8, !tbaa !11
  %903 = fmul double %902, 4.000000e+00
  %904 = load double, ptr %63, align 8, !tbaa !11
  %905 = fmul double %903, %904
  %906 = load double, ptr %86, align 8, !tbaa !11
  %907 = fmul double %905, %906
  %908 = load double, ptr %86, align 8, !tbaa !11
  %909 = fmul double %907, %908
  store double %909, ptr %57, align 8, !tbaa !11
  %910 = load double, ptr %56, align 8, !tbaa !11
  %911 = load double, ptr %56, align 8, !tbaa !11
  %912 = load double, ptr %56, align 8, !tbaa !11
  %913 = load double, ptr %57, align 8, !tbaa !11
  %914 = fmul double %913, 4.000000e+00
  %915 = fneg double %914
  %916 = call double @llvm.fmuladd.f64(double %911, double %912, double %915)
  %917 = call double @sqrt(double noundef %916) #5
  %918 = fadd double %910, %917
  store double %918, ptr %73, align 8, !tbaa !11
  %919 = load double, ptr %57, align 8, !tbaa !11
  %920 = load double, ptr %73, align 8, !tbaa !11
  %921 = fdiv double %919, %920
  store double %921, ptr %74, align 8, !tbaa !11
  %922 = load double, ptr %73, align 8, !tbaa !11
  %923 = fdiv double %922, 2.000000e+00
  store double %923, ptr %73, align 8, !tbaa !11
  %924 = load double, ptr %73, align 8, !tbaa !11
  %925 = call double @sqrt(double noundef %924) #5
  store double %925, ptr %52, align 8, !tbaa !11
  %926 = load double, ptr %74, align 8, !tbaa !11
  %927 = call double @sqrt(double noundef %926) #5
  store double %927, ptr %53, align 8, !tbaa !11
  %928 = load double, ptr %52, align 8, !tbaa !11
  %929 = load double, ptr %53, align 8, !tbaa !11
  %930 = fcmp ole double %928, %929
  br i1 %930, label %931, label %933

931:                                              ; preds = %793
  %932 = load double, ptr %52, align 8, !tbaa !11
  br label %935

933:                                              ; preds = %793
  %934 = load double, ptr %53, align 8, !tbaa !11
  br label %935

935:                                              ; preds = %933, %931
  %936 = phi double [ %932, %931 ], [ %934, %933 ]
  store double %936, ptr %64, align 8, !tbaa !11
  br label %937

937:                                              ; preds = %935, %790
  %938 = load ptr, ptr %25, align 8, !tbaa !5
  %939 = load ptr, ptr %25, align 8, !tbaa !5
  %940 = load ptr, ptr %26, align 8, !tbaa !5
  %941 = load i64, ptr %43, align 8, !tbaa !9
  %942 = getelementptr inbounds double, ptr %940, i64 %941
  %943 = load ptr, ptr %27, align 8, !tbaa !5
  %944 = load ptr, ptr %38, align 8, !tbaa !5
  %945 = getelementptr inbounds double, ptr %944, i64 1
  %946 = load ptr, ptr %25, align 8, !tbaa !5
  %947 = call i32 @dlacpy_(ptr noundef @.str.8, ptr noundef %938, ptr noundef %939, ptr noundef %942, ptr noundef %943, ptr noundef %945, ptr noundef %946)
  %948 = load ptr, ptr %25, align 8, !tbaa !5
  %949 = load ptr, ptr %25, align 8, !tbaa !5
  %950 = load ptr, ptr %28, align 8, !tbaa !5
  %951 = load i64, ptr %45, align 8, !tbaa !9
  %952 = getelementptr inbounds double, ptr %950, i64 %951
  %953 = load ptr, ptr %29, align 8, !tbaa !5
  %954 = load ptr, ptr %38, align 8, !tbaa !5
  %955 = load ptr, ptr %25, align 8, !tbaa !5
  %956 = load i64, ptr %955, align 8, !tbaa !9
  %957 = load ptr, ptr %25, align 8, !tbaa !5
  %958 = load i64, ptr %957, align 8, !tbaa !9
  %959 = mul nsw i64 %956, %958
  %960 = add nsw i64 %959, 1
  %961 = getelementptr inbounds double, ptr %954, i64 %960
  %962 = load ptr, ptr %25, align 8, !tbaa !5
  %963 = call i32 @dlacpy_(ptr noundef @.str.8, ptr noundef %948, ptr noundef %949, ptr noundef %952, ptr noundef %953, ptr noundef %961, ptr noundef %962)
  %964 = load i64, ptr %55, align 8, !tbaa !9
  store i64 %964, ptr %69, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  %965 = load ptr, ptr %39, align 8, !tbaa !5
  %966 = load i64, ptr %965, align 8, !tbaa !9
  %967 = load ptr, ptr %25, align 8, !tbaa !5
  %968 = load i64, ptr %967, align 8, !tbaa !9
  %969 = shl i64 %968, 1
  %970 = load ptr, ptr %25, align 8, !tbaa !5
  %971 = load i64, ptr %970, align 8, !tbaa !9
  %972 = mul nsw i64 %969, %971
  %973 = sub nsw i64 %966, %972
  store i64 %973, ptr %51, align 8, !tbaa !9
  %974 = load ptr, ptr %25, align 8, !tbaa !5
  %975 = load ptr, ptr %38, align 8, !tbaa !5
  %976 = getelementptr inbounds double, ptr %975, i64 1
  %977 = load ptr, ptr %25, align 8, !tbaa !5
  %978 = load ptr, ptr %38, align 8, !tbaa !5
  %979 = load ptr, ptr %25, align 8, !tbaa !5
  %980 = load i64, ptr %979, align 8, !tbaa !9
  %981 = load ptr, ptr %25, align 8, !tbaa !5
  %982 = load i64, ptr %981, align 8, !tbaa !9
  %983 = mul nsw i64 %980, %982
  %984 = add nsw i64 %983, 1
  %985 = getelementptr inbounds double, ptr %978, i64 %984
  %986 = load ptr, ptr %25, align 8, !tbaa !5
  %987 = getelementptr inbounds [1 x double], ptr %83, i64 0, i64 0
  %988 = getelementptr inbounds [1 x double], ptr %85, i64 0, i64 0
  %989 = load ptr, ptr %38, align 8, !tbaa !5
  %990 = load ptr, ptr %25, align 8, !tbaa !5
  %991 = load i64, ptr %990, align 8, !tbaa !9
  %992 = load ptr, ptr %25, align 8, !tbaa !5
  %993 = load i64, ptr %992, align 8, !tbaa !9
  %994 = mul nsw i64 %991, %993
  %995 = shl i64 %994, 1
  %996 = add nsw i64 %995, 1
  %997 = getelementptr inbounds double, ptr %989, i64 %996
  %998 = call i32 @dtgexc_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef %974, ptr noundef %976, ptr noundef %977, ptr noundef %985, ptr noundef %986, ptr noundef %987, ptr noundef @c__1, ptr noundef %988, ptr noundef @c__1, ptr noundef %69, ptr noundef %71, ptr noundef %997, ptr noundef %51, ptr noundef %66)
  %999 = load i64, ptr %66, align 8, !tbaa !9
  %1000 = icmp sgt i64 %999, 0
  br i1 %1000, label %1001, label %1005

1001:                                             ; preds = %937
  %1002 = load ptr, ptr %35, align 8, !tbaa !5
  %1003 = load i64, ptr %60, align 8, !tbaa !9
  %1004 = getelementptr inbounds double, ptr %1002, i64 %1003
  store double 0.000000e+00, ptr %1004, align 8, !tbaa !11
  br label %1124

1005:                                             ; preds = %937
  store i64 1, ptr %58, align 8, !tbaa !9
  %1006 = load ptr, ptr %38, align 8, !tbaa !5
  %1007 = getelementptr inbounds double, ptr %1006, i64 2
  %1008 = load double, ptr %1007, align 8, !tbaa !11
  %1009 = fcmp une double %1008, 0.000000e+00
  br i1 %1009, label %1010, label %1011

1010:                                             ; preds = %1005
  store i64 2, ptr %58, align 8, !tbaa !9
  br label %1011

1011:                                             ; preds = %1010, %1005
  %1012 = load ptr, ptr %25, align 8, !tbaa !5
  %1013 = load i64, ptr %1012, align 8, !tbaa !9
  %1014 = load i64, ptr %58, align 8, !tbaa !9
  %1015 = sub nsw i64 %1013, %1014
  store i64 %1015, ptr %59, align 8, !tbaa !9
  %1016 = load i64, ptr %59, align 8, !tbaa !9
  %1017 = icmp eq i64 %1016, 0
  br i1 %1017, label %1018, label %1023

1018:                                             ; preds = %1011
  %1019 = load double, ptr %64, align 8, !tbaa !11
  %1020 = load ptr, ptr %35, align 8, !tbaa !5
  %1021 = load i64, ptr %60, align 8, !tbaa !9
  %1022 = getelementptr inbounds double, ptr %1020, i64 %1021
  store double %1019, ptr %1022, align 8, !tbaa !11
  br label %1123

1023:                                             ; preds = %1011
  %1024 = load ptr, ptr %25, align 8, !tbaa !5
  %1025 = load i64, ptr %1024, align 8, !tbaa !9
  %1026 = load ptr, ptr %25, align 8, !tbaa !5
  %1027 = load i64, ptr %1026, align 8, !tbaa !9
  %1028 = mul nsw i64 %1025, %1027
  %1029 = add nsw i64 %1028, 1
  store i64 %1029, ptr %54, align 8, !tbaa !9
  %1030 = load ptr, ptr %25, align 8, !tbaa !5
  %1031 = load i64, ptr %1030, align 8, !tbaa !9
  %1032 = shl i64 %1031, 1
  %1033 = load ptr, ptr %25, align 8, !tbaa !5
  %1034 = load i64, ptr %1033, align 8, !tbaa !9
  %1035 = mul nsw i64 %1032, %1034
  %1036 = add nsw i64 %1035, 1
  store i64 %1036, ptr %61, align 8, !tbaa !9
  %1037 = load ptr, ptr %39, align 8, !tbaa !5
  %1038 = load i64, ptr %1037, align 8, !tbaa !9
  %1039 = load ptr, ptr %25, align 8, !tbaa !5
  %1040 = load i64, ptr %1039, align 8, !tbaa !9
  %1041 = shl i64 %1040, 1
  %1042 = load ptr, ptr %25, align 8, !tbaa !5
  %1043 = load i64, ptr %1042, align 8, !tbaa !9
  %1044 = mul nsw i64 %1041, %1043
  %1045 = sub nsw i64 %1038, %1044
  store i64 %1045, ptr %51, align 8, !tbaa !9
  %1046 = load ptr, ptr %38, align 8, !tbaa !5
  %1047 = load ptr, ptr %25, align 8, !tbaa !5
  %1048 = load i64, ptr %1047, align 8, !tbaa !9
  %1049 = load i64, ptr %58, align 8, !tbaa !9
  %1050 = mul nsw i64 %1048, %1049
  %1051 = load i64, ptr %58, align 8, !tbaa !9
  %1052 = add nsw i64 %1050, %1051
  %1053 = add nsw i64 %1052, 1
  %1054 = getelementptr inbounds double, ptr %1046, i64 %1053
  %1055 = load ptr, ptr %25, align 8, !tbaa !5
  %1056 = load ptr, ptr %38, align 8, !tbaa !5
  %1057 = getelementptr inbounds double, ptr %1056, i64 1
  %1058 = load ptr, ptr %25, align 8, !tbaa !5
  %1059 = load ptr, ptr %38, align 8, !tbaa !5
  %1060 = load i64, ptr %58, align 8, !tbaa !9
  %1061 = add nsw i64 %1060, 1
  %1062 = getelementptr inbounds double, ptr %1059, i64 %1061
  %1063 = load ptr, ptr %25, align 8, !tbaa !5
  %1064 = load ptr, ptr %38, align 8, !tbaa !5
  %1065 = load ptr, ptr %25, align 8, !tbaa !5
  %1066 = load i64, ptr %1065, align 8, !tbaa !9
  %1067 = load i64, ptr %58, align 8, !tbaa !9
  %1068 = mul nsw i64 %1066, %1067
  %1069 = load i64, ptr %58, align 8, !tbaa !9
  %1070 = add nsw i64 %1068, %1069
  %1071 = load i64, ptr %54, align 8, !tbaa !9
  %1072 = add nsw i64 %1070, %1071
  %1073 = getelementptr inbounds double, ptr %1064, i64 %1072
  %1074 = load ptr, ptr %25, align 8, !tbaa !5
  %1075 = load ptr, ptr %38, align 8, !tbaa !5
  %1076 = load i64, ptr %54, align 8, !tbaa !9
  %1077 = getelementptr inbounds double, ptr %1075, i64 %1076
  %1078 = load ptr, ptr %25, align 8, !tbaa !5
  %1079 = load ptr, ptr %38, align 8, !tbaa !5
  %1080 = load i64, ptr %58, align 8, !tbaa !9
  %1081 = load i64, ptr %54, align 8, !tbaa !9
  %1082 = add nsw i64 %1080, %1081
  %1083 = getelementptr inbounds double, ptr %1079, i64 %1082
  %1084 = load ptr, ptr %25, align 8, !tbaa !5
  %1085 = load ptr, ptr %35, align 8, !tbaa !5
  %1086 = load i64, ptr %60, align 8, !tbaa !9
  %1087 = getelementptr inbounds double, ptr %1085, i64 %1086
  %1088 = load ptr, ptr %38, align 8, !tbaa !5
  %1089 = load i64, ptr %61, align 8, !tbaa !9
  %1090 = add nsw i64 %1089, 1
  %1091 = getelementptr inbounds double, ptr %1088, i64 %1090
  %1092 = load ptr, ptr %40, align 8, !tbaa !5
  %1093 = getelementptr inbounds i64, ptr %1092, i64 1
  %1094 = call i32 @dtgsyl_(ptr noundef @.str.7, ptr noundef @c__3, ptr noundef %59, ptr noundef %58, ptr noundef %1054, ptr noundef %1055, ptr noundef %1057, ptr noundef %1058, ptr noundef %1062, ptr noundef %1063, ptr noundef %1073, ptr noundef %1074, ptr noundef %1077, ptr noundef %1078, ptr noundef %1083, ptr noundef %1084, ptr noundef %75, ptr noundef %1087, ptr noundef %1091, ptr noundef %51, ptr noundef %1093, ptr noundef %66)
  %1095 = load i64, ptr %65, align 8, !tbaa !9
  %1096 = icmp ne i64 %1095, 0
  br i1 %1096, label %1097, label %1122

1097:                                             ; preds = %1023
  %1098 = load double, ptr %91, align 8, !tbaa !11
  %1099 = fcmp oge double 1.000000e+00, %1098
  br i1 %1099, label %1100, label %1101

1100:                                             ; preds = %1097
  br label %1103

1101:                                             ; preds = %1097
  %1102 = load double, ptr %91, align 8, !tbaa !11
  br label %1103

1103:                                             ; preds = %1101, %1100
  %1104 = phi double [ 1.000000e+00, %1100 ], [ %1102, %1101 ]
  %1105 = load ptr, ptr %35, align 8, !tbaa !5
  %1106 = load i64, ptr %60, align 8, !tbaa !9
  %1107 = getelementptr inbounds double, ptr %1105, i64 %1106
  %1108 = load double, ptr %1107, align 8, !tbaa !11
  %1109 = fmul double %1104, %1108
  store double %1109, ptr %52, align 8, !tbaa !11
  %1110 = load double, ptr %52, align 8, !tbaa !11
  %1111 = load double, ptr %64, align 8, !tbaa !11
  %1112 = fcmp ole double %1110, %1111
  br i1 %1112, label %1113, label %1115

1113:                                             ; preds = %1103
  %1114 = load double, ptr %52, align 8, !tbaa !11
  br label %1117

1115:                                             ; preds = %1103
  %1116 = load double, ptr %64, align 8, !tbaa !11
  br label %1117

1117:                                             ; preds = %1115, %1113
  %1118 = phi double [ %1114, %1113 ], [ %1116, %1115 ]
  %1119 = load ptr, ptr %35, align 8, !tbaa !5
  %1120 = load i64, ptr %60, align 8, !tbaa !9
  %1121 = getelementptr inbounds double, ptr %1119, i64 %1120
  store double %1118, ptr %1121, align 8, !tbaa !11
  br label %1122

1122:                                             ; preds = %1117, %1023
  br label %1123

1123:                                             ; preds = %1122, %1018
  br label %1124

1124:                                             ; preds = %1123, %1001
  %1125 = load i64, ptr %65, align 8, !tbaa !9
  %1126 = icmp ne i64 %1125, 0
  br i1 %1126, label %1127, label %1136

1127:                                             ; preds = %1124
  %1128 = load ptr, ptr %35, align 8, !tbaa !5
  %1129 = load i64, ptr %60, align 8, !tbaa !9
  %1130 = getelementptr inbounds double, ptr %1128, i64 %1129
  %1131 = load double, ptr %1130, align 8, !tbaa !11
  %1132 = load ptr, ptr %35, align 8, !tbaa !5
  %1133 = load i64, ptr %60, align 8, !tbaa !9
  %1134 = add nsw i64 %1133, 1
  %1135 = getelementptr inbounds double, ptr %1132, i64 %1134
  store double %1131, ptr %1135, align 8, !tbaa !11
  br label %1136

1136:                                             ; preds = %1127, %1124
  br label %1137

1137:                                             ; preds = %1136, %770
  %1138 = load i64, ptr %65, align 8, !tbaa !9
  %1139 = icmp ne i64 %1138, 0
  br i1 %1139, label %1140, label %1143

1140:                                             ; preds = %1137
  %1141 = load i64, ptr %60, align 8, !tbaa !9
  %1142 = add nsw i64 %1141, 1
  store i64 %1142, ptr %60, align 8, !tbaa !9
  br label %1143

1143:                                             ; preds = %1140, %1137
  br label %1144

1144:                                             ; preds = %1143, %777, %460, %452, %413
  br label %1145

1145:                                             ; preds = %1144
  %1146 = load i64, ptr %55, align 8, !tbaa !9
  %1147 = add nsw i64 %1146, 1
  store i64 %1147, ptr %55, align 8, !tbaa !9
  br label %406, !llvm.loop !15

1148:                                             ; preds = %406
  %1149 = load i64, ptr %79, align 8, !tbaa !9
  %1150 = sitofp i64 %1149 to double
  %1151 = load ptr, ptr %38, align 8, !tbaa !5
  %1152 = getelementptr inbounds double, ptr %1151, i64 1
  store double %1150, ptr %1152, align 8, !tbaa !11
  store i32 0, ptr %21, align 4
  store i32 1, ptr %94, align 4
  br label %1153

1153:                                             ; preds = %1148, %398, %392, %384
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  %1154 = load i32, ptr %21, align 4
  ret i32 %1154
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

declare i32 @dlag2_(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 speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

; Function Attrs: nounwind
declare double @sqrt(double noundef) #4

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

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

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

; Function Attrs: 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b19 = external hidden global double, align 8
@c_b21 = external hidden global double, align 8
@c__2 = external hidden global i64, align 8
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@c_false = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dtgsna_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr noundef %10, ptr nocapture noundef readonly %11, ptr nocapture noundef writeonly %12, ptr noundef %13, ptr nocapture noundef readonly %14, ptr nocapture noundef %15, ptr noundef %16, ptr nocapture noundef readonly %17, ptr noundef %18, ptr nocapture noundef %19) local_unnamed_addr #0 {
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca double, align 8
  %28 = alloca i64, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca [1 x double], align 8
  %37 = alloca [1 x double], align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  %40 = getelementptr inbounds i8, ptr %2, i64 -8
  %41 = load i64, ptr %5, align 8, !tbaa !5
  %42 = xor i64 %41, -1
  %43 = getelementptr inbounds double, ptr %4, i64 %42
  %44 = load i64, ptr %7, align 8, !tbaa !5
  %45 = xor i64 %44, -1
  %46 = getelementptr inbounds double, ptr %6, i64 %45
  %47 = load i64, ptr %9, align 8, !tbaa !5
  %48 = xor i64 %47, -1
  %49 = getelementptr inbounds double, ptr %8, i64 %48
  %50 = load i64, ptr %11, align 8, !tbaa !5
  %51 = xor i64 %50, -1
  %52 = getelementptr inbounds double, ptr %10, i64 %51
  %53 = getelementptr inbounds i8, ptr %12, i64 -8
  %54 = getelementptr inbounds i8, ptr %16, i64 -8
  %55 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %56 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %57 = icmp ne i64 %56, 0
  %58 = icmp ne i64 %55, 0
  %59 = select i1 %57, i1 true, i1 %58
  %60 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %61 = icmp ne i64 %60, 0
  %62 = select i1 %61, i1 true, i1 %58
  %63 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  store i64 0, ptr %19, align 8, !tbaa !5
  %64 = load i64, ptr %17, align 8, !tbaa !5
  %65 = icmp eq i64 %64, -1
  %or.cond = select i1 %59, i1 true, i1 %62
  br i1 %or.cond, label %66, label %.thread.sink.split

66:                                               ; preds = %20
  %67 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %68 = icmp ne i64 %67, 0
  %69 = icmp ne i64 %63, 0
  %or.cond3 = select i1 %68, i1 true, i1 %69
  br i1 %or.cond3, label %70, label %.thread.sink.split

70:                                               ; preds = %66
  %71 = load i64, ptr %3, align 8, !tbaa !5
  %72 = icmp slt i64 %71, 0
  br i1 %72, label %.thread.sink.split, label %73

73:                                               ; preds = %70
  %74 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %71, i64 1)
  %75 = icmp slt i64 %74, %spec.select
  br i1 %75, label %.thread.sink.split, label %76

76:                                               ; preds = %73
  %77 = load i64, ptr %7, align 8, !tbaa !5
  %78 = icmp slt i64 %77, %spec.select
  br i1 %78, label %.thread.sink.split, label %79

79:                                               ; preds = %76
  br i1 %59, label %80, label %.critedge

80:                                               ; preds = %79
  %81 = load i64, ptr %9, align 8, !tbaa !5
  %82 = icmp slt i64 %81, %71
  br i1 %82, label %.thread.sink.split, label %83

83:                                               ; preds = %80
  %84 = load i64, ptr %11, align 8, !tbaa !5
  %85 = icmp slt i64 %84, %71
  br i1 %85, label %.thread.sink.split, label %.critedge

.critedge:                                        ; preds = %79, %83
  br i1 %69, label %86, label %111

86:                                               ; preds = %.critedge
  store i64 0, ptr %15, align 8, !tbaa !5
  %87 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %87, ptr %21, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %43, i64 8
  %.not483 = icmp slt i64 %87, 1
  br i1 %.not483, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %86, %108
  %88 = phi i64 [ %109, %108 ], [ 0, %86 ]
  %.0424485 = phi i64 [ %110, %108 ], [ 1, %86 ]
  %.0430484 = phi i64 [ %.1431, %108 ], [ 0, %86 ]
  %.not442 = icmp eq i64 %.0430484, 0
  br i1 %.not442, label %89, label %108

89:                                               ; preds = %.lr.ph
  %90 = load i64, ptr %3, align 8, !tbaa !5
  %91 = icmp slt i64 %.0424485, %90
  br i1 %91, label %92, label %104

92:                                               ; preds = %89
  %93 = mul nsw i64 %.0424485, %41
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0424485
  %94 = getelementptr double, ptr %gep, i64 %93
  %95 = load double, ptr %94, align 8, !tbaa !9
  %96 = fcmp oeq double %95, 0.000000e+00
  %97 = getelementptr inbounds i64, ptr %40, i64 %.0424485
  %98 = load i64, ptr %97, align 8, !tbaa !5
  %.not446 = icmp eq i64 %98, 0
  br i1 %96, label %99, label %100

99:                                               ; preds = %92
  br i1 %.not446, label %108, label %.sink.split

100:                                              ; preds = %92
  br i1 %.not446, label %101, label %.sink.split

101:                                              ; preds = %100
  %102 = getelementptr i64, ptr %2, i64 %.0424485
  %103 = load i64, ptr %102, align 8, !tbaa !5
  %.not445 = icmp eq i64 %103, 0
  br i1 %.not445, label %108, label %.sink.split

104:                                              ; preds = %89
  %105 = getelementptr inbounds i64, ptr %40, i64 %90
  %106 = load i64, ptr %105, align 8, !tbaa !5
  %.not443 = icmp eq i64 %106, 0
  br i1 %.not443, label %108, label %.sink.split

.sink.split:                                      ; preds = %104, %100, %101, %99
  %.sink523 = phi i64 [ 1, %99 ], [ 2, %101 ], [ 2, %100 ], [ 1, %104 ]
  %.1431.ph = phi i64 [ 0, %99 ], [ 1, %101 ], [ 1, %100 ], [ 0, %104 ]
  %107 = add nsw i64 %88, %.sink523
  store i64 %107, ptr %15, align 8, !tbaa !5
  br label %108

108:                                              ; preds = %.sink.split, %.lr.ph, %104, %99, %101
  %109 = phi i64 [ %88, %99 ], [ %88, %101 ], [ %88, %104 ], [ %88, %.lr.ph ], [ %107, %.sink.split ]
  %.1431 = phi i64 [ 0, %99 ], [ 1, %101 ], [ 0, %104 ], [ 0, %.lr.ph ], [ %.1431.ph, %.sink.split ]
  %110 = add nuw i64 %.0424485, 1
  %exitcond.not = icmp eq i64 %.0424485, %87
  br i1 %exitcond.not, label %.loopexitthread-pre-split, label %.lr.ph, !llvm.loop !11

111:                                              ; preds = %.critedge
  store i64 %71, ptr %15, align 8, !tbaa !5
  br label %.loopexitthread-pre-split

.loopexitthread-pre-split:                        ; preds = %108, %111
  %.pr516 = load i64, ptr %3, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexitthread-pre-split, %86
  %112 = phi i64 [ %.pr516, %.loopexitthread-pre-split ], [ %87, %86 ]
  %113 = icmp eq i64 %112, 0
  br i1 %113, label %126, label %114

114:                                              ; preds = %.loopexit
  %115 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not440 = icmp eq i64 %115, 0
  br i1 %.not440, label %116, label %118

116:                                              ; preds = %114
  %117 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not441 = icmp eq i64 %117, 0
  br i1 %.not441, label %124, label %118

118:                                              ; preds = %116, %114
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %120 = shl i64 %119, 1
  %121 = add nsw i64 %119, 2
  %122 = mul nsw i64 %120, %121
  %123 = add nsw i64 %122, 16
  br label %126

124:                                              ; preds = %116
  %125 = load i64, ptr %3, align 8, !tbaa !5
  br label %126

126:                                              ; preds = %.loopexit, %118, %124
  %127 = phi i64 [ %119, %118 ], [ %125, %124 ], [ 0, %.loopexit ]
  %.0423 = phi i64 [ %123, %118 ], [ %125, %124 ], [ 1, %.loopexit ]
  %128 = sitofp i64 %.0423 to double
  store double %128, ptr %16, align 8, !tbaa !9
  %129 = load i64, ptr %14, align 8, !tbaa !5
  %130 = load i64, ptr %15, align 8, !tbaa !5
  %131 = icmp slt i64 %129, %130
  br i1 %131, label %.thread.sink.split, label %132

132:                                              ; preds = %126
  %133 = load i64, ptr %17, align 8, !tbaa !5
  %134 = icmp sge i64 %133, %.0423
  %or.cond5 = select i1 %134, i1 true, i1 %65
  br i1 %or.cond5, label %135, label %.thread.sink.split

135:                                              ; preds = %132
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %.not447 = icmp eq i64 %.pr, 0
  br i1 %.not447, label %139, label %.thread

.thread.sink.split:                               ; preds = %132, %126, %83, %80, %76, %73, %70, %66, %20
  %.sink = phi i64 [ -1, %20 ], [ -2, %66 ], [ -4, %70 ], [ -6, %73 ], [ -8, %76 ], [ -10, %80 ], [ -12, %83 ], [ -15, %126 ], [ -18, %132 ]
  store i64 %.sink, ptr %19, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %135
  %136 = phi i64 [ %.pr, %135 ], [ %.sink, %.thread.sink.split ]
  %137 = sub nsw i64 0, %136
  store i64 %137, ptr %21, align 8, !tbaa !5
  %138 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %21) #6
  br label %341

139:                                              ; preds = %135
  %140 = icmp eq i64 %127, 0
  %or.cond524 = select i1 %65, i1 true, i1 %140
  br i1 %or.cond524, label %341, label %141

141:                                              ; preds = %139
  %142 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #6
  %143 = tail call double @dlamch_(ptr noundef nonnull @.str.3) #6
  %144 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep487 = getelementptr i8, ptr %43, i64 8
  %invariant.gep489 = getelementptr i8, ptr %52, i64 8
  %invariant.gep493 = getelementptr i8, ptr %49, i64 8
  %invariant.gep501 = getelementptr i8, ptr %16, i64 8
  %invariant.gep503 = getelementptr i8, ptr %13, i64 8
  %.not448505 = icmp slt i64 %144, 1
  br i1 %.not448505, label %._crit_edge, label %.lr.ph515

.lr.ph515:                                        ; preds = %141
  %145 = fdiv double %143, %142
  %.not450467 = icmp eq i64 %63, 0
  %146 = getelementptr inbounds i8, ptr %16, i64 16
  %147 = getelementptr inbounds i8, ptr %16, i64 24
  %148 = getelementptr inbounds i8, ptr %16, i64 32
  %149 = getelementptr inbounds i8, ptr %16, i64 40
  %150 = getelementptr inbounds i8, ptr %16, i64 48
  %151 = getelementptr inbounds i8, ptr %16, i64 56
  %152 = fmul double %142, %145
  br label %153

153:                                              ; preds = %.lr.ph515, %339
  %.1425509 = phi i64 [ 1, %.lr.ph515 ], [ %340, %339 ]
  %.0426508 = phi i64 [ 0, %.lr.ph515 ], [ %.1427, %339 ]
  %.0428507 = phi double [ undef, %.lr.ph515 ], [ %.4, %339 ]
  %.2432506 = phi i64 [ 0, %.lr.ph515 ], [ %.4434, %339 ]
  %.not449 = icmp eq i64 %.2432506, 0
  br i1 %.not449, label %154, label %339

154:                                              ; preds = %153
  %155 = load i64, ptr %3, align 8, !tbaa !5
  %156 = icmp slt i64 %.1425509, %155
  br i1 %156, label %157, label %.thread465

157:                                              ; preds = %154
  %158 = mul nsw i64 %.1425509, %41
  %gep488 = getelementptr double, ptr %invariant.gep487, i64 %.1425509
  %159 = getelementptr double, ptr %gep488, i64 %158
  %160 = load double, ptr %159, align 8, !tbaa !9
  %161 = fcmp une double %160, 0.000000e+00
  %162 = zext i1 %161 to i64
  br i1 %.not450467, label %172, label %163

.thread465:                                       ; preds = %154
  br i1 %.not450467, label %.thread474, label %.thread470

163:                                              ; preds = %157
  br i1 %161, label %164, label %.thread470

164:                                              ; preds = %163
  %165 = getelementptr inbounds i64, ptr %40, i64 %.1425509
  %166 = load i64, ptr %165, align 8, !tbaa !5
  %.not453 = icmp eq i64 %166, 0
  br i1 %.not453, label %167, label %172

167:                                              ; preds = %164
  %168 = getelementptr i64, ptr %2, i64 %.1425509
  %169 = load i64, ptr %168, align 8, !tbaa !5
  %.not454 = icmp eq i64 %169, 0
  br i1 %.not454, label %339, label %172

.thread470:                                       ; preds = %.thread465, %163
  %170 = getelementptr inbounds i64, ptr %40, i64 %.1425509
  %171 = load i64, ptr %170, align 8, !tbaa !5
  %.not452 = icmp eq i64 %171, 0
  br i1 %.not452, label %339, label %.thread517

172:                                              ; preds = %167, %164, %157
  %.3433469 = phi i64 [ 1, %167 ], [ 1, %164 ], [ %162, %157 ]
  %173 = add nsw i64 %.0426508, 1
  br i1 %59, label %176, label %229

.thread517:                                       ; preds = %.thread470
  %174 = add nsw i64 %.0426508, 1
  br i1 %59, label %.thread478, label %229

.thread474:                                       ; preds = %.thread465
  %175 = add nsw i64 %.0426508, 1
  br i1 %59, label %.thread478, label %229

176:                                              ; preds = %172
  %.not455 = icmp eq i64 %.3433469, 0
  br i1 %.not455, label %.thread478, label %177

177:                                              ; preds = %176
  %178 = mul nsw i64 %173, %50
  %gep490 = getelementptr double, ptr %invariant.gep489, i64 %178
  %179 = call double @f2c_dnrm2(ptr noundef nonnull %3, ptr noundef %gep490, ptr noundef nonnull @c__1) #6
  store double %179, ptr %23, align 8, !tbaa !9
  %180 = add nsw i64 %.0426508, 2
  %181 = mul nsw i64 %180, %50
  %gep492 = getelementptr double, ptr %invariant.gep489, i64 %181
  %182 = call double @f2c_dnrm2(ptr noundef nonnull %3, ptr noundef %gep492, ptr noundef nonnull @c__1) #6
  store double %182, ptr %24, align 8, !tbaa !9
  %183 = call double @dlapy2_(ptr noundef nonnull %23, ptr noundef nonnull %24) #6
  %184 = mul nsw i64 %173, %47
  %gep494 = getelementptr double, ptr %invariant.gep493, i64 %184
  %185 = call double @f2c_dnrm2(ptr noundef nonnull %3, ptr noundef %gep494, ptr noundef nonnull @c__1) #6
  store double %185, ptr %23, align 8, !tbaa !9
  %186 = mul nsw i64 %180, %47
  %gep496 = getelementptr double, ptr %invariant.gep493, i64 %186
  %187 = call double @f2c_dnrm2(ptr noundef nonnull %3, ptr noundef %gep496, ptr noundef nonnull @c__1) #6
  store double %187, ptr %24, align 8, !tbaa !9
  %188 = call double @dlapy2_(ptr noundef nonnull %23, ptr noundef nonnull %24) #6
  %189 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %gep490, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %190 = call double @f2c_ddot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep494, ptr noundef nonnull @c__1) #6
  %191 = call double @f2c_ddot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep496, ptr noundef nonnull @c__1) #6
  %192 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %gep492, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %193 = call double @f2c_ddot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep496, ptr noundef nonnull @c__1) #6
  %194 = call double @f2c_ddot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep494, ptr noundef nonnull @c__1) #6
  %195 = fadd double %190, %193
  store double %195, ptr %29, align 8, !tbaa !9
  %196 = fsub double %194, %191
  store double %196, ptr %34, align 8, !tbaa !9
  %197 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep490, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %198 = call double @f2c_ddot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep494, ptr noundef nonnull @c__1) #6
  %199 = call double @f2c_ddot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep496, ptr noundef nonnull @c__1) #6
  %200 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep492, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %201 = call double @f2c_ddot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep496, ptr noundef nonnull @c__1) #6
  %202 = call double @f2c_ddot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep494, ptr noundef nonnull @c__1) #6
  %203 = fadd double %198, %201
  store double %203, ptr %30, align 8, !tbaa !9
  %204 = fsub double %202, %199
  store double %204, ptr %35, align 8, !tbaa !9
  %205 = call double @dlapy2_(ptr noundef nonnull %29, ptr noundef nonnull %34) #6
  store double %205, ptr %29, align 8, !tbaa !9
  %206 = call double @dlapy2_(ptr noundef nonnull %30, ptr noundef nonnull %35) #6
  store double %206, ptr %30, align 8, !tbaa !9
  %207 = call double @dlapy2_(ptr noundef nonnull %29, ptr noundef nonnull %30) #6
  %208 = fmul double %183, %188
  %209 = fdiv double %207, %208
  %210 = getelementptr double, ptr %12, i64 %.0426508
  store double %209, ptr %210, align 8, !tbaa !9
  %211 = getelementptr inbounds double, ptr %53, i64 %180
  store double %209, ptr %211, align 8, !tbaa !9
  br label %229

.thread478:                                       ; preds = %.thread517, %.thread474, %176
  %212 = phi i64 [ %173, %176 ], [ %175, %.thread474 ], [ %174, %.thread517 ]
  %213 = mul nsw i64 %212, %50
  %gep498 = getelementptr double, ptr %invariant.gep489, i64 %213
  %214 = call double @f2c_dnrm2(ptr noundef nonnull %3, ptr noundef %gep498, ptr noundef nonnull @c__1) #6
  %215 = mul nsw i64 %212, %47
  %gep500 = getelementptr double, ptr %invariant.gep493, i64 %215
  %216 = call double @f2c_dnrm2(ptr noundef nonnull %3, ptr noundef %gep500, ptr noundef nonnull @c__1) #6
  %217 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %gep498, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %218 = call double @f2c_ddot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep500, ptr noundef nonnull @c__1) #6
  store double %218, ptr %29, align 8, !tbaa !9
  %219 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef nonnull @c_b19, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep498, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b21, ptr noundef %16, ptr noundef nonnull @c__1) #6
  %220 = call double @f2c_ddot(ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull @c__1, ptr noundef %gep500, ptr noundef nonnull @c__1) #6
  store double %220, ptr %30, align 8, !tbaa !9
  %221 = call double @dlapy2_(ptr noundef nonnull %29, ptr noundef nonnull %30) #6
  %222 = fcmp oeq double %221, 0.000000e+00
  br i1 %222, label %223, label %225

223:                                              ; preds = %.thread478
  %224 = getelementptr double, ptr %12, i64 %.0426508
  store double -1.000000e+00, ptr %224, align 8, !tbaa !9
  br label %229

225:                                              ; preds = %.thread478
  %226 = fmul double %214, %216
  %227 = fdiv double %221, %226
  %228 = getelementptr double, ptr %12, i64 %.0426508
  store double %227, ptr %228, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %.thread517, %.thread474, %177, %225, %223, %172
  %230 = phi i64 [ %173, %177 ], [ %212, %223 ], [ %212, %225 ], [ %173, %172 ], [ %175, %.thread474 ], [ %174, %.thread517 ]
  %.3433469477 = phi i64 [ 1, %177 ], [ 0, %223 ], [ 0, %225 ], [ %.3433469, %172 ], [ 0, %.thread474 ], [ 0, %.thread517 ]
  %.1429 = phi double [ %207, %177 ], [ %221, %223 ], [ %221, %225 ], [ %.0428507, %172 ], [ %.0428507, %.thread474 ], [ %.0428507, %.thread517 ]
  br i1 %62, label %231, label %.critedge460

231:                                              ; preds = %229
  %232 = load i64, ptr %3, align 8, !tbaa !5
  %233 = icmp eq i64 %232, 1
  br i1 %233, label %234, label %237

234:                                              ; preds = %231
  %235 = call double @dlapy2_(ptr noundef %4, ptr noundef %6) #6
  %236 = getelementptr double, ptr %13, i64 %.0426508
  store double %235, ptr %236, align 8, !tbaa !9
  br label %339

237:                                              ; preds = %231
  %.not456 = icmp eq i64 %.3433469477, 0
  br i1 %.not456, label %287, label %238

238:                                              ; preds = %237
  %239 = mul nsw i64 %.1425509, %41
  %240 = getelementptr double, ptr %43, i64 %.1425509
  %241 = getelementptr double, ptr %240, i64 %239
  %242 = load double, ptr %241, align 8, !tbaa !9
  store double %242, ptr %16, align 8, !tbaa !9
  %243 = add nuw nsw i64 %.1425509, 1
  %244 = getelementptr double, ptr %43, i64 %243
  %245 = getelementptr double, ptr %244, i64 %239
  %246 = load double, ptr %245, align 8, !tbaa !9
  store double %246, ptr %invariant.gep501, align 8, !tbaa !9
  %247 = mul nsw i64 %243, %41
  %248 = getelementptr double, ptr %240, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !9
  store double %249, ptr %146, align 8, !tbaa !9
  %250 = getelementptr double, ptr %244, i64 %247
  %251 = load double, ptr %250, align 8, !tbaa !9
  store double %251, ptr %147, align 8, !tbaa !9
  %252 = mul nsw i64 %.1425509, %44
  %253 = getelementptr double, ptr %46, i64 %.1425509
  %254 = getelementptr double, ptr %253, i64 %252
  %255 = load double, ptr %254, align 8, !tbaa !9
  store double %255, ptr %148, align 8, !tbaa !9
  %256 = getelementptr double, ptr %46, i64 %243
  %257 = getelementptr double, ptr %256, i64 %252
  %258 = load double, ptr %257, align 8, !tbaa !9
  store double %258, ptr %149, align 8, !tbaa !9
  %259 = mul nsw i64 %243, %44
  %260 = getelementptr double, ptr %253, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !9
  store double %261, ptr %150, align 8, !tbaa !9
  %262 = getelementptr double, ptr %256, i64 %259
  %263 = load double, ptr %262, align 8, !tbaa !9
  store double %263, ptr %151, align 8, !tbaa !9
  store double %152, ptr %23, align 8, !tbaa !9
  %264 = call i32 @dlag2_(ptr noundef nonnull %16, ptr noundef nonnull @c__2, ptr noundef nonnull %148, ptr noundef nonnull @c__2, ptr noundef nonnull %23, ptr noundef nonnull %27, ptr noundef nonnull %37, ptr noundef nonnull %39, ptr noundef nonnull %36, ptr noundef nonnull %38) #6
  %265 = load double, ptr %39, align 8, !tbaa !9
  %266 = load double, ptr %38, align 8, !tbaa !9
  %267 = fmul double %266, %266
  %268 = call double @llvm.fmuladd.f64(double %265, double %265, double %267)
  %269 = load double, ptr %27, align 8, !tbaa !9
  %270 = call double @llvm.fmuladd.f64(double %269, double %269, double %268)
  %271 = fmul double %270, 2.000000e+00
  %272 = fmul double %269, 4.000000e+00
  %273 = fmul double %269, %272
  %274 = fmul double %266, %273
  %275 = fmul double %266, %274
  %276 = fmul double %275, -4.000000e+00
  %277 = call double @llvm.fmuladd.f64(double %271, double %271, double %276)
  %278 = call double @sqrt(double noundef %277) #6
  %279 = fadd double %278, %271
  %280 = fdiv double %275, %279
  %281 = fmul double %279, 5.000000e-01
  %282 = call double @sqrt(double noundef %281) #6
  store double %282, ptr %23, align 8, !tbaa !9
  %283 = call double @sqrt(double noundef %280) #6
  store double %283, ptr %24, align 8, !tbaa !9
  %284 = load double, ptr %23, align 8
  %285 = fcmp ole double %284, %283
  %286 = select i1 %285, double %284, double %283
  br label %287

287:                                              ; preds = %238, %237
  %.2 = phi double [ %286, %238 ], [ %.1429, %237 ]
  %288 = call i32 @dlacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %16, ptr noundef nonnull %3) #6
  %289 = load i64, ptr %3, align 8, !tbaa !5
  %290 = mul nsw i64 %289, %289
  %291 = getelementptr double, ptr %16, i64 %290
  %292 = call i32 @dlacpy_(ptr noundef nonnull @.str.8, ptr noundef nonnull %3, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %291, ptr noundef nonnull %3) #6
  store i64 %.1425509, ptr %31, align 8, !tbaa !5
  store i64 1, ptr %32, align 8, !tbaa !5
  %293 = load i64, ptr %17, align 8, !tbaa !5
  %294 = load i64, ptr %3, align 8, !tbaa !5
  %295 = shl i64 %294, 1
  %296 = mul nsw i64 %295, %294
  %297 = sub nsw i64 %293, %296
  store i64 %297, ptr %22, align 8, !tbaa !5
  %298 = mul nsw i64 %294, %294
  %299 = getelementptr double, ptr %16, i64 %298
  %.idx = shl i64 %298, 4
  %300 = getelementptr i8, ptr %16, i64 %.idx
  %301 = call i32 @dtgexc_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_false, ptr noundef nonnull %3, ptr noundef %16, ptr noundef nonnull %3, ptr noundef %299, ptr noundef nonnull %3, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %37, ptr noundef nonnull @c__1, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef %300, ptr noundef nonnull %22, ptr noundef nonnull %28) #6
  %302 = load i64, ptr %28, align 8, !tbaa !5
  %303 = icmp sgt i64 %302, 0
  br i1 %303, label %334, label %304

304:                                              ; preds = %287
  store i64 1, ptr %25, align 8, !tbaa !5
  %305 = load double, ptr %invariant.gep501, align 8, !tbaa !9
  %306 = fcmp une double %305, 0.000000e+00
  br i1 %306, label %307, label %308

307:                                              ; preds = %304
  store i64 2, ptr %25, align 8, !tbaa !5
  br label %308

308:                                              ; preds = %307, %304
  %309 = phi i64 [ 2, %307 ], [ 1, %304 ]
  %310 = load i64, ptr %3, align 8, !tbaa !5
  %311 = sub nsw i64 %310, %309
  store i64 %311, ptr %26, align 8, !tbaa !5
  %312 = icmp eq i64 %310, %309
  br i1 %312, label %334, label %313

313:                                              ; preds = %308
  %314 = mul nsw i64 %310, %310
  %315 = add nuw nsw i64 %314, 1
  %316 = shl i64 %310, 1
  %317 = mul nsw i64 %316, %310
  %318 = load i64, ptr %17, align 8, !tbaa !5
  %319 = sub nsw i64 %318, %317
  store i64 %319, ptr %22, align 8, !tbaa !5
  %320 = add i64 %310, 1
  %321 = mul i64 %320, %309
  %322 = getelementptr double, ptr %16, i64 %321
  %323 = getelementptr double, ptr %16, i64 %309
  %324 = getelementptr double, ptr %54, i64 %321
  %325 = getelementptr double, ptr %324, i64 %315
  %326 = getelementptr double, ptr %16, i64 %314
  %327 = getelementptr double, ptr %54, i64 %309
  %328 = getelementptr double, ptr %327, i64 %315
  %329 = getelementptr double, ptr %13, i64 %.0426508
  %gep502 = getelementptr double, ptr %invariant.gep501, i64 %317
  %330 = call i32 @dtgsyl_(ptr noundef nonnull @.str.7, ptr noundef nonnull @c__3, ptr noundef nonnull %26, ptr noundef nonnull %25, ptr noundef %322, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull %3, ptr noundef %323, ptr noundef nonnull %3, ptr noundef %325, ptr noundef nonnull %3, ptr noundef %326, ptr noundef nonnull %3, ptr noundef %328, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %329, ptr noundef %gep502, ptr noundef nonnull %22, ptr noundef %18, ptr noundef nonnull %28) #6
  br i1 %.not456, label %.critedge460, label %.thread482

.thread482:                                       ; preds = %313
  %331 = load double, ptr %329, align 8, !tbaa !9
  store double %331, ptr %23, align 8, !tbaa !9
  %332 = fcmp ole double %331, %.2
  %333 = select i1 %332, double %331, double %.2
  store double %333, ptr %329, align 8, !tbaa !9
  br label %336

334:                                              ; preds = %308, %287
  %.2.sink = phi double [ 0.000000e+00, %287 ], [ %.2, %308 ]
  %335 = getelementptr double, ptr %13, i64 %.0426508
  store double %.2.sink, ptr %335, align 8, !tbaa !9
  br i1 %.not456, label %.critedge460, label %336

336:                                              ; preds = %.thread482, %334
  %337 = phi double [ %333, %.thread482 ], [ %.2.sink, %334 ]
  %gep504 = getelementptr double, ptr %invariant.gep503, i64 %.0426508
  store double %337, ptr %gep504, align 8, !tbaa !9
  br label %.critedge460

.critedge460:                                     ; preds = %313, %334, %336, %229
  %.3 = phi double [ %.2, %336 ], [ %.2, %334 ], [ %.1429, %229 ], [ %.2, %313 ]
  %.not457 = icmp ne i64 %.3433469477, 0
  %338 = add nsw i64 %.0426508, 2
  %spec.select461 = zext i1 %.not457 to i64
  %spec.select462 = select i1 %.not457, i64 %338, i64 %230
  br label %339

339:                                              ; preds = %.critedge460, %153, %234, %167, %.thread470
  %.4434 = phi i64 [ %.3433469477, %234 ], [ 1, %167 ], [ 0, %.thread470 ], [ 0, %153 ], [ %spec.select461, %.critedge460 ]
  %.4 = phi double [ %.1429, %234 ], [ %.0428507, %167 ], [ %.0428507, %.thread470 ], [ %.0428507, %153 ], [ %.3, %.critedge460 ]
  %.1427 = phi i64 [ %230, %234 ], [ %.0426508, %167 ], [ %.0426508, %.thread470 ], [ %.0426508, %153 ], [ %spec.select462, %.critedge460 ]
  %340 = add nuw nsw i64 %.1425509, 1
  %.not448.not = icmp slt i64 %.1425509, %144
  br i1 %.not448.not, label %153, label %._crit_edge, !llvm.loop !13

._crit_edge:                                      ; preds = %339, %141
  store double %128, ptr %16, align 8, !tbaa !9
  br label %341

341:                                              ; preds = %139, %._crit_edge, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #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 i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

declare i32 @dlag2_(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 speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #4

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

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

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

; Function Attrs: mustprogress 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.umax.i64(i64, i64) #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}


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