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

; 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"

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [8 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 [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8
@c_false = external hidden global i64, align 8

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

158:                                              ; preds = %27
  %159 = load ptr, ptr %52, align 8, !tbaa !5
  %160 = getelementptr inbounds double, ptr %159, i64 1
  %161 = load double, ptr %160, align 8, !tbaa !11
  %162 = fcmp olt double %161, 0.000000e+00
  br i1 %162, label %163, label %166

163:                                              ; preds = %158
  %164 = load ptr, ptr %52, align 8, !tbaa !5
  %165 = getelementptr inbounds double, ptr %164, i64 1
  store double 1.000000e+00, ptr %165, align 8, !tbaa !11
  br label %171

166:                                              ; preds = %158
  %167 = load ptr, ptr %52, align 8, !tbaa !5
  %168 = getelementptr inbounds double, ptr %167, i64 1
  %169 = load double, ptr %168, align 8, !tbaa !11
  %170 = fptosi double %169 to i64
  store i64 %170, ptr %74, align 8, !tbaa !9
  br label %171

171:                                              ; preds = %166, %163
  br label %172

172:                                              ; preds = %171, %27
  %173 = load ptr, ptr %31, align 8, !tbaa !5
  %174 = load i64, ptr %173, align 8, !tbaa !9
  %175 = sitofp i64 %174 to double
  %176 = call double @dlamch_(ptr noundef @.str)
  %177 = fmul double %175, %176
  store double %177, ptr %71, align 8, !tbaa !11
  store i64 10, ptr %86, align 8, !tbaa !9
  store double 5.000000e-01, ptr %88, align 8, !tbaa !11
  store double 2.500000e-01, ptr %72, align 8, !tbaa !11
  store i64 0, ptr %81, align 8, !tbaa !9
  %178 = load ptr, ptr %51, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = icmp sge i64 %179, 2
  br i1 %180, label %181, label %197

181:                                              ; preds = %172
  %182 = load ptr, ptr %52, align 8, !tbaa !5
  %183 = getelementptr inbounds double, ptr %182, i64 2
  %184 = load double, ptr %183, align 8, !tbaa !11
  %185 = fcmp olt double %184, 0.000000e+00
  br i1 %185, label %186, label %191

186:                                              ; preds = %181
  %187 = load i64, ptr %86, align 8, !tbaa !9
  %188 = sitofp i64 %187 to double
  %189 = load ptr, ptr %52, align 8, !tbaa !5
  %190 = getelementptr inbounds double, ptr %189, i64 2
  store double %188, ptr %190, align 8, !tbaa !11
  br label %196

191:                                              ; preds = %181
  %192 = load ptr, ptr %52, align 8, !tbaa !5
  %193 = getelementptr inbounds double, ptr %192, i64 2
  %194 = load double, ptr %193, align 8, !tbaa !11
  %195 = fptosi double %194 to i64
  store i64 %195, ptr %86, align 8, !tbaa !9
  br label %196

196:                                              ; preds = %191, %186
  br label %197

197:                                              ; preds = %196, %172
  %198 = load ptr, ptr %51, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = icmp sge i64 %199, 3
  br i1 %200, label %201, label %224

201:                                              ; preds = %197
  %202 = load ptr, ptr %52, align 8, !tbaa !5
  %203 = getelementptr inbounds double, ptr %202, i64 3
  %204 = load double, ptr %203, align 8, !tbaa !11
  %205 = fcmp olt double %204, 0.000000e+00
  br i1 %205, label %206, label %216

206:                                              ; preds = %201
  %207 = load i64, ptr %81, align 8, !tbaa !9
  %208 = icmp ne i64 %207, 0
  br i1 %208, label %209, label %212

209:                                              ; preds = %206
  %210 = load ptr, ptr %52, align 8, !tbaa !5
  %211 = getelementptr inbounds double, ptr %210, i64 3
  store double 0.000000e+00, ptr %211, align 8, !tbaa !11
  br label %215

212:                                              ; preds = %206
  %213 = load ptr, ptr %52, align 8, !tbaa !5
  %214 = getelementptr inbounds double, ptr %213, i64 3
  store double 1.000000e+00, ptr %214, align 8, !tbaa !11
  br label %215

215:                                              ; preds = %212, %209
  br label %223

216:                                              ; preds = %201
  %217 = load ptr, ptr %52, align 8, !tbaa !5
  %218 = getelementptr inbounds double, ptr %217, i64 3
  %219 = load double, ptr %218, align 8, !tbaa !11
  %220 = fcmp oeq double %219, 0.000000e+00
  %221 = zext i1 %220 to i32
  %222 = sext i32 %221 to i64
  store i64 %222, ptr %81, align 8, !tbaa !9
  br label %223

223:                                              ; preds = %216, %215
  br label %224

224:                                              ; preds = %223, %197
  %225 = load i64, ptr %74, align 8, !tbaa !9
  %226 = icmp eq i64 %225, 0
  br i1 %226, label %231, label %227

227:                                              ; preds = %224
  %228 = load ptr, ptr %48, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = icmp eq i64 %229, 0
  br i1 %230, label %231, label %232

231:                                              ; preds = %227, %224
  store i64 0, ptr %87, align 8, !tbaa !9
  br label %238

232:                                              ; preds = %227
  %233 = load i64, ptr %81, align 8, !tbaa !9
  %234 = icmp ne i64 %233, 0
  br i1 %234, label %235, label %236

235:                                              ; preds = %232
  store i64 1, ptr %87, align 8, !tbaa !9
  br label %237

236:                                              ; preds = %232
  store i64 2, ptr %87, align 8, !tbaa !9
  br label %237

237:                                              ; preds = %236, %235
  br label %238

238:                                              ; preds = %237, %231
  %239 = load ptr, ptr %29, align 8, !tbaa !5
  %240 = call i64 @lsame_(ptr noundef %239, ptr noundef @.str.1)
  store i64 %240, ptr %84, align 8, !tbaa !9
  %241 = load ptr, ptr %30, align 8, !tbaa !5
  %242 = call i64 @lsame_(ptr noundef %241, ptr noundef @.str.2)
  %243 = icmp ne i64 %242, 0
  br i1 %243, label %248, label %244

244:                                              ; preds = %238
  %245 = load ptr, ptr %30, align 8, !tbaa !5
  %246 = call i64 @lsame_(ptr noundef %245, ptr noundef @.str.3)
  %247 = icmp ne i64 %246, 0
  br label %248

248:                                              ; preds = %244, %238
  %249 = phi i1 [ true, %238 ], [ %247, %244 ]
  %250 = zext i1 %249 to i32
  %251 = sext i32 %250 to i64
  store i64 %251, ptr %85, align 8, !tbaa !9
  %252 = load ptr, ptr %30, align 8, !tbaa !5
  %253 = call i64 @lsame_(ptr noundef %252, ptr noundef @.str.4)
  %254 = icmp ne i64 %253, 0
  br i1 %254, label %259, label %255

255:                                              ; preds = %248
  %256 = load ptr, ptr %30, align 8, !tbaa !5
  %257 = call i64 @lsame_(ptr noundef %256, ptr noundef @.str.3)
  %258 = icmp ne i64 %257, 0
  br label %259

259:                                              ; preds = %255, %248
  %260 = phi i1 [ true, %248 ], [ %258, %255 ]
  %261 = zext i1 %260 to i32
  %262 = sext i32 %261 to i64
  store i64 %262, ptr %83, align 8, !tbaa !9
  %263 = load i64, ptr %78, align 8, !tbaa !9
  %264 = icmp eq i64 %263, -1
  br i1 %264, label %265, label %267

265:                                              ; preds = %259
  %266 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -1, ptr %266, align 8, !tbaa !9
  br label %367

267:                                              ; preds = %259
  %268 = load i64, ptr %85, align 8, !tbaa !9
  %269 = icmp ne i64 %268, 0
  br i1 %269, label %279, label %270

270:                                              ; preds = %267
  %271 = load i64, ptr %83, align 8, !tbaa !9
  %272 = icmp ne i64 %271, 0
  br i1 %272, label %279, label %273

273:                                              ; preds = %270
  %274 = load ptr, ptr %30, align 8, !tbaa !5
  %275 = call i64 @lsame_(ptr noundef %274, ptr noundef @.str.1)
  %276 = icmp ne i64 %275, 0
  br i1 %276, label %279, label %277

277:                                              ; preds = %273
  %278 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -2, ptr %278, align 8, !tbaa !9
  br label %366

279:                                              ; preds = %273, %270, %267
  %280 = load ptr, ptr %31, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = icmp slt i64 %281, 0
  br i1 %282, label %283, label %285

283:                                              ; preds = %279
  %284 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -3, ptr %284, align 8, !tbaa !9
  br label %365

285:                                              ; preds = %279
  %286 = load ptr, ptr %32, align 8, !tbaa !5
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = icmp slt i64 %287, 0
  br i1 %288, label %289, label %291

289:                                              ; preds = %285
  %290 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -4, ptr %290, align 8, !tbaa !9
  br label %364

291:                                              ; preds = %285
  %292 = load ptr, ptr %33, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = icmp slt i64 %293, 0
  br i1 %294, label %295, label %297

295:                                              ; preds = %291
  %296 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -5, ptr %296, align 8, !tbaa !9
  br label %363

297:                                              ; preds = %291
  %298 = load ptr, ptr %34, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = icmp slt i64 %299, 0
  br i1 %300, label %301, label %303

301:                                              ; preds = %297
  %302 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -6, ptr %302, align 8, !tbaa !9
  br label %362

303:                                              ; preds = %297
  %304 = load ptr, ptr %36, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = load ptr, ptr %32, align 8, !tbaa !5
  %307 = load i64, ptr %306, align 8, !tbaa !9
  %308 = load ptr, ptr %33, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  %310 = add nsw i64 %307, %309
  %311 = add nsw i64 %310, 1
  %312 = icmp slt i64 %305, %311
  br i1 %312, label %313, label %315

313:                                              ; preds = %303
  %314 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -8, ptr %314, align 8, !tbaa !9
  br label %361

315:                                              ; preds = %303
  %316 = load ptr, ptr %38, align 8, !tbaa !5
  %317 = load i64, ptr %316, align 8, !tbaa !9
  %318 = load ptr, ptr %32, align 8, !tbaa !5
  %319 = load i64, ptr %318, align 8, !tbaa !9
  %320 = shl i64 %319, 1
  %321 = load ptr, ptr %33, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = add nsw i64 %320, %322
  %324 = add nsw i64 %323, 1
  %325 = icmp slt i64 %317, %324
  br i1 %325, label %326, label %328

326:                                              ; preds = %315
  %327 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -10, ptr %327, align 8, !tbaa !9
  br label %360

328:                                              ; preds = %315
  %329 = load ptr, ptr %43, align 8, !tbaa !5
  %330 = load i64, ptr %329, align 8, !tbaa !9
  %331 = load ptr, ptr %31, align 8, !tbaa !5
  %332 = load i64, ptr %331, align 8, !tbaa !9
  %333 = icmp sge i64 1, %332
  br i1 %333, label %334, label %335

334:                                              ; preds = %328
  br label %338

335:                                              ; preds = %328
  %336 = load ptr, ptr %31, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  br label %338

338:                                              ; preds = %335, %334
  %339 = phi i64 [ 1, %334 ], [ %337, %335 ]
  %340 = icmp slt i64 %330, %339
  br i1 %340, label %341, label %343

341:                                              ; preds = %338
  %342 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -13, ptr %342, align 8, !tbaa !9
  br label %359

343:                                              ; preds = %338
  %344 = load ptr, ptr %45, align 8, !tbaa !5
  %345 = load i64, ptr %344, align 8, !tbaa !9
  %346 = load ptr, ptr %31, align 8, !tbaa !5
  %347 = load i64, ptr %346, align 8, !tbaa !9
  %348 = icmp sge i64 1, %347
  br i1 %348, label %349, label %350

349:                                              ; preds = %343
  br label %353

350:                                              ; preds = %343
  %351 = load ptr, ptr %31, align 8, !tbaa !5
  %352 = load i64, ptr %351, align 8, !tbaa !9
  br label %353

353:                                              ; preds = %350, %349
  %354 = phi i64 [ 1, %349 ], [ %352, %350 ]
  %355 = icmp slt i64 %345, %354
  br i1 %355, label %356, label %358

356:                                              ; preds = %353
  %357 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 -15, ptr %357, align 8, !tbaa !9
  br label %358

358:                                              ; preds = %356, %353
  br label %359

359:                                              ; preds = %358, %341
  br label %360

360:                                              ; preds = %359, %326
  br label %361

361:                                              ; preds = %360, %313
  br label %362

362:                                              ; preds = %361, %301
  br label %363

363:                                              ; preds = %362, %295
  br label %364

364:                                              ; preds = %363, %289
  br label %365

365:                                              ; preds = %364, %283
  br label %366

366:                                              ; preds = %365, %277
  br label %367

367:                                              ; preds = %366, %265
  %368 = load ptr, ptr %55, align 8, !tbaa !5
  %369 = load i64, ptr %368, align 8, !tbaa !9
  %370 = icmp ne i64 %369, 0
  br i1 %370, label %371, label %376

371:                                              ; preds = %367
  %372 = load ptr, ptr %55, align 8, !tbaa !5
  %373 = load i64, ptr %372, align 8, !tbaa !9
  %374 = sub nsw i64 0, %373
  store i64 %374, ptr %68, align 8, !tbaa !9
  %375 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %68)
  store i32 0, ptr %28, align 4
  store i32 1, ptr %89, align 4
  br label %1005

376:                                              ; preds = %367
  %377 = load ptr, ptr %31, align 8, !tbaa !5
  %378 = load i64, ptr %377, align 8, !tbaa !9
  %379 = icmp eq i64 %378, 0
  br i1 %379, label %384, label %380

380:                                              ; preds = %376
  %381 = load ptr, ptr %34, align 8, !tbaa !5
  %382 = load i64, ptr %381, align 8, !tbaa !9
  %383 = icmp eq i64 %382, 0
  br i1 %383, label %384, label %451

384:                                              ; preds = %380, %376
  %385 = load ptr, ptr %46, align 8, !tbaa !5
  store double 1.000000e+00, ptr %385, align 8, !tbaa !11
  %386 = load ptr, ptr %34, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  store i64 %387, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %388

388:                                              ; preds = %447, %384
  %389 = load i64, ptr %75, align 8, !tbaa !9
  %390 = load i64, ptr %68, align 8, !tbaa !9
  %391 = icmp sle i64 %389, %390
  br i1 %391, label %392, label %450

392:                                              ; preds = %388
  %393 = load ptr, ptr %47, align 8, !tbaa !5
  %394 = load i64, ptr %75, align 8, !tbaa !9
  %395 = getelementptr inbounds double, ptr %393, i64 %394
  store double 0.000000e+00, ptr %395, align 8, !tbaa !11
  %396 = load ptr, ptr %48, align 8, !tbaa !5
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = icmp sge i64 %397, 1
  br i1 %398, label %399, label %410

399:                                              ; preds = %392
  %400 = load ptr, ptr %49, align 8, !tbaa !5
  %401 = load i64, ptr %75, align 8, !tbaa !9
  %402 = load i64, ptr %64, align 8, !tbaa !9
  %403 = add nsw i64 %401, %402
  %404 = getelementptr inbounds double, ptr %400, i64 %403
  store double 1.000000e+00, ptr %404, align 8, !tbaa !11
  %405 = load ptr, ptr %50, align 8, !tbaa !5
  %406 = load i64, ptr %75, align 8, !tbaa !9
  %407 = load i64, ptr %66, align 8, !tbaa !9
  %408 = add nsw i64 %406, %407
  %409 = getelementptr inbounds double, ptr %405, i64 %408
  store double 1.000000e+00, ptr %409, align 8, !tbaa !11
  br label %446

410:                                              ; preds = %392
  %411 = load ptr, ptr %48, align 8, !tbaa !5
  %412 = load i64, ptr %411, align 8, !tbaa !9
  %413 = icmp sge i64 %412, 2
  br i1 %413, label %414, label %427

414:                                              ; preds = %410
  %415 = load ptr, ptr %49, align 8, !tbaa !5
  %416 = load i64, ptr %75, align 8, !tbaa !9
  %417 = load i64, ptr %64, align 8, !tbaa !9
  %418 = shl i64 %417, 1
  %419 = add nsw i64 %416, %418
  %420 = getelementptr inbounds double, ptr %415, i64 %419
  store double 0.000000e+00, ptr %420, align 8, !tbaa !11
  %421 = load ptr, ptr %50, align 8, !tbaa !5
  %422 = load i64, ptr %75, align 8, !tbaa !9
  %423 = load i64, ptr %66, align 8, !tbaa !9
  %424 = shl i64 %423, 1
  %425 = add nsw i64 %422, %424
  %426 = getelementptr inbounds double, ptr %421, i64 %425
  store double 0.000000e+00, ptr %426, align 8, !tbaa !11
  br label %445

427:                                              ; preds = %410
  %428 = load ptr, ptr %48, align 8, !tbaa !5
  %429 = load i64, ptr %428, align 8, !tbaa !9
  %430 = icmp sge i64 %429, 3
  br i1 %430, label %431, label %444

431:                                              ; preds = %427
  %432 = load ptr, ptr %49, align 8, !tbaa !5
  %433 = load i64, ptr %75, align 8, !tbaa !9
  %434 = load i64, ptr %64, align 8, !tbaa !9
  %435 = mul nsw i64 %434, 3
  %436 = add nsw i64 %433, %435
  %437 = getelementptr inbounds double, ptr %432, i64 %436
  store double 1.000000e+00, ptr %437, align 8, !tbaa !11
  %438 = load ptr, ptr %50, align 8, !tbaa !5
  %439 = load i64, ptr %75, align 8, !tbaa !9
  %440 = load i64, ptr %66, align 8, !tbaa !9
  %441 = mul nsw i64 %440, 3
  %442 = add nsw i64 %439, %441
  %443 = getelementptr inbounds double, ptr %438, i64 %442
  store double 1.000000e+00, ptr %443, align 8, !tbaa !11
  br label %444

444:                                              ; preds = %431, %427
  br label %445

445:                                              ; preds = %444, %414
  br label %446

446:                                              ; preds = %445, %399
  br label %447

447:                                              ; preds = %446
  %448 = load i64, ptr %75, align 8, !tbaa !9
  %449 = add nsw i64 %448, 1
  store i64 %449, ptr %75, align 8, !tbaa !9
  br label %388, !llvm.loop !13

450:                                              ; preds = %388
  store i32 0, ptr %28, align 4
  store i32 1, ptr %89, align 4
  br label %1005

451:                                              ; preds = %380
  %452 = load ptr, ptr %46, align 8, !tbaa !5
  store double 0.000000e+00, ptr %452, align 8, !tbaa !11
  %453 = load ptr, ptr %34, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  store i64 %454, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %455

455:                                              ; preds = %514, %451
  %456 = load i64, ptr %75, align 8, !tbaa !9
  %457 = load i64, ptr %68, align 8, !tbaa !9
  %458 = icmp sle i64 %456, %457
  br i1 %458, label %459, label %517

459:                                              ; preds = %455
  %460 = load ptr, ptr %47, align 8, !tbaa !5
  %461 = load i64, ptr %75, align 8, !tbaa !9
  %462 = getelementptr inbounds double, ptr %460, i64 %461
  store double 1.000000e+00, ptr %462, align 8, !tbaa !11
  %463 = load ptr, ptr %48, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = icmp sge i64 %464, 1
  br i1 %465, label %466, label %477

466:                                              ; preds = %459
  %467 = load ptr, ptr %49, align 8, !tbaa !5
  %468 = load i64, ptr %75, align 8, !tbaa !9
  %469 = load i64, ptr %64, align 8, !tbaa !9
  %470 = add nsw i64 %468, %469
  %471 = getelementptr inbounds double, ptr %467, i64 %470
  store double 1.000000e+00, ptr %471, align 8, !tbaa !11
  %472 = load ptr, ptr %50, align 8, !tbaa !5
  %473 = load i64, ptr %75, align 8, !tbaa !9
  %474 = load i64, ptr %66, align 8, !tbaa !9
  %475 = add nsw i64 %473, %474
  %476 = getelementptr inbounds double, ptr %472, i64 %475
  store double 1.000000e+00, ptr %476, align 8, !tbaa !11
  br label %513

477:                                              ; preds = %459
  %478 = load ptr, ptr %48, align 8, !tbaa !5
  %479 = load i64, ptr %478, align 8, !tbaa !9
  %480 = icmp sge i64 %479, 2
  br i1 %480, label %481, label %494

481:                                              ; preds = %477
  %482 = load ptr, ptr %49, align 8, !tbaa !5
  %483 = load i64, ptr %75, align 8, !tbaa !9
  %484 = load i64, ptr %64, align 8, !tbaa !9
  %485 = shl i64 %484, 1
  %486 = add nsw i64 %483, %485
  %487 = getelementptr inbounds double, ptr %482, i64 %486
  store double 1.000000e+00, ptr %487, align 8, !tbaa !11
  %488 = load ptr, ptr %50, align 8, !tbaa !5
  %489 = load i64, ptr %75, align 8, !tbaa !9
  %490 = load i64, ptr %66, align 8, !tbaa !9
  %491 = shl i64 %490, 1
  %492 = add nsw i64 %489, %491
  %493 = getelementptr inbounds double, ptr %488, i64 %492
  store double 1.000000e+00, ptr %493, align 8, !tbaa !11
  br label %512

494:                                              ; preds = %477
  %495 = load ptr, ptr %48, align 8, !tbaa !5
  %496 = load i64, ptr %495, align 8, !tbaa !9
  %497 = icmp sge i64 %496, 3
  br i1 %497, label %498, label %511

498:                                              ; preds = %494
  %499 = load ptr, ptr %49, align 8, !tbaa !5
  %500 = load i64, ptr %75, align 8, !tbaa !9
  %501 = load i64, ptr %64, align 8, !tbaa !9
  %502 = mul nsw i64 %501, 3
  %503 = add nsw i64 %500, %502
  %504 = getelementptr inbounds double, ptr %499, i64 %503
  store double 0.000000e+00, ptr %504, align 8, !tbaa !11
  %505 = load ptr, ptr %50, align 8, !tbaa !5
  %506 = load i64, ptr %75, align 8, !tbaa !9
  %507 = load i64, ptr %66, align 8, !tbaa !9
  %508 = mul nsw i64 %507, 3
  %509 = add nsw i64 %506, %508
  %510 = getelementptr inbounds double, ptr %505, i64 %509
  store double 0.000000e+00, ptr %510, align 8, !tbaa !11
  br label %511

511:                                              ; preds = %498, %494
  br label %512

512:                                              ; preds = %511, %481
  br label %513

513:                                              ; preds = %512, %466
  br label %514

514:                                              ; preds = %513
  %515 = load i64, ptr %75, align 8, !tbaa !9
  %516 = add nsw i64 %515, 1
  store i64 %516, ptr %75, align 8, !tbaa !9
  br label %455, !llvm.loop !15

517:                                              ; preds = %455
  %518 = load i64, ptr %84, align 8, !tbaa !9
  %519 = icmp ne i64 %518, 0
  br i1 %519, label %520, label %522

520:                                              ; preds = %517
  %521 = getelementptr inbounds [1 x i8], ptr %80, i64 0, i64 0
  store i8 73, ptr %521, align 1, !tbaa !16
  br label %524

522:                                              ; preds = %517
  %523 = getelementptr inbounds [1 x i8], ptr %80, i64 0, i64 0
  store i8 49, ptr %523, align 1, !tbaa !16
  br label %524

524:                                              ; preds = %522, %520
  %525 = getelementptr inbounds [1 x i8], ptr %80, i64 0, i64 0
  %526 = load ptr, ptr %31, align 8, !tbaa !5
  %527 = load ptr, ptr %32, align 8, !tbaa !5
  %528 = load ptr, ptr %33, align 8, !tbaa !5
  %529 = load ptr, ptr %35, align 8, !tbaa !5
  %530 = load i64, ptr %57, align 8, !tbaa !9
  %531 = getelementptr inbounds %struct.doublecomplex, ptr %529, i64 %530
  %532 = load ptr, ptr %36, align 8, !tbaa !5
  %533 = load ptr, ptr %54, align 8, !tbaa !5
  %534 = getelementptr inbounds double, ptr %533, i64 1
  %535 = call double @zlangb_(ptr noundef %525, ptr noundef %526, ptr noundef %527, ptr noundef %528, ptr noundef %531, ptr noundef %532, ptr noundef %534)
  store double %535, ptr %82, align 8, !tbaa !11
  %536 = getelementptr inbounds [1 x i8], ptr %80, i64 0, i64 0
  %537 = load ptr, ptr %31, align 8, !tbaa !5
  %538 = load ptr, ptr %32, align 8, !tbaa !5
  %539 = load ptr, ptr %33, align 8, !tbaa !5
  %540 = load ptr, ptr %37, align 8, !tbaa !5
  %541 = load i64, ptr %59, align 8, !tbaa !9
  %542 = getelementptr inbounds %struct.doublecomplex, ptr %540, i64 %541
  %543 = load ptr, ptr %38, align 8, !tbaa !5
  %544 = load ptr, ptr %39, align 8, !tbaa !5
  %545 = getelementptr inbounds i64, ptr %544, i64 1
  %546 = load ptr, ptr %46, align 8, !tbaa !5
  %547 = load ptr, ptr %53, align 8, !tbaa !5
  %548 = getelementptr inbounds %struct.doublecomplex, ptr %547, i64 1
  %549 = load ptr, ptr %54, align 8, !tbaa !5
  %550 = getelementptr inbounds double, ptr %549, i64 1
  %551 = load ptr, ptr %55, align 8, !tbaa !5
  %552 = call i32 @zgbcon_(ptr noundef %536, ptr noundef %537, ptr noundef %538, ptr noundef %539, ptr noundef %542, ptr noundef %543, ptr noundef %545, ptr noundef %82, ptr noundef %546, ptr noundef %548, ptr noundef %550, ptr noundef %551)
  %553 = load i64, ptr %74, align 8, !tbaa !9
  %554 = icmp ne i64 %553, 0
  br i1 %554, label %555, label %654

555:                                              ; preds = %524
  %556 = call i64 @ilaprec_(ptr noundef @.str.6)
  store i64 %556, ptr %77, align 8, !tbaa !9
  %557 = load i64, ptr %84, align 8, !tbaa !9
  %558 = icmp ne i64 %557, 0
  br i1 %558, label %559, label %606

559:                                              ; preds = %555
  %560 = load ptr, ptr %31, align 8, !tbaa !5
  %561 = load ptr, ptr %32, align 8, !tbaa !5
  %562 = load ptr, ptr %33, align 8, !tbaa !5
  %563 = load ptr, ptr %34, align 8, !tbaa !5
  %564 = load ptr, ptr %35, align 8, !tbaa !5
  %565 = load i64, ptr %57, align 8, !tbaa !9
  %566 = getelementptr inbounds %struct.doublecomplex, ptr %564, i64 %565
  %567 = load ptr, ptr %36, align 8, !tbaa !5
  %568 = load ptr, ptr %37, align 8, !tbaa !5
  %569 = load i64, ptr %59, align 8, !tbaa !9
  %570 = getelementptr inbounds %struct.doublecomplex, ptr %568, i64 %569
  %571 = load ptr, ptr %38, align 8, !tbaa !5
  %572 = load ptr, ptr %39, align 8, !tbaa !5
  %573 = getelementptr inbounds i64, ptr %572, i64 1
  %574 = load ptr, ptr %41, align 8, !tbaa !5
  %575 = getelementptr inbounds double, ptr %574, i64 1
  %576 = load ptr, ptr %42, align 8, !tbaa !5
  %577 = load i64, ptr %61, align 8, !tbaa !9
  %578 = getelementptr inbounds %struct.doublecomplex, ptr %576, i64 %577
  %579 = load ptr, ptr %43, align 8, !tbaa !5
  %580 = load ptr, ptr %44, align 8, !tbaa !5
  %581 = load i64, ptr %63, align 8, !tbaa !9
  %582 = getelementptr inbounds %struct.doublecomplex, ptr %580, i64 %581
  %583 = load ptr, ptr %45, align 8, !tbaa !5
  %584 = load ptr, ptr %47, align 8, !tbaa !5
  %585 = getelementptr inbounds double, ptr %584, i64 1
  %586 = load ptr, ptr %49, align 8, !tbaa !5
  %587 = load i64, ptr %65, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  %589 = load ptr, ptr %50, align 8, !tbaa !5
  %590 = load i64, ptr %67, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  %592 = load ptr, ptr %53, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.doublecomplex, ptr %592, i64 1
  %594 = load ptr, ptr %54, align 8, !tbaa !5
  %595 = getelementptr inbounds double, ptr %594, i64 1
  %596 = load ptr, ptr %53, align 8, !tbaa !5
  %597 = load ptr, ptr %31, align 8, !tbaa !5
  %598 = load i64, ptr %597, align 8, !tbaa !9
  %599 = add nsw i64 %598, 1
  %600 = getelementptr inbounds %struct.doublecomplex, ptr %596, i64 %599
  %601 = load ptr, ptr %54, align 8, !tbaa !5
  %602 = getelementptr inbounds double, ptr %601, i64 1
  %603 = load ptr, ptr %46, align 8, !tbaa !5
  %604 = load ptr, ptr %55, align 8, !tbaa !5
  %605 = call i32 @zla_gbrfsx_extended__(ptr noundef %77, ptr noundef %78, ptr noundef %560, ptr noundef %561, ptr noundef %562, ptr noundef %563, ptr noundef %566, ptr noundef %567, ptr noundef %570, ptr noundef %571, ptr noundef %573, ptr noundef %83, ptr noundef %575, ptr noundef %578, ptr noundef %579, ptr noundef %582, ptr noundef %583, ptr noundef %585, ptr noundef %87, ptr noundef %588, ptr noundef %591, ptr noundef %593, ptr noundef %595, ptr noundef %600, ptr noundef %602, ptr noundef %603, ptr noundef %86, ptr noundef %88, ptr noundef %72, ptr noundef %81, ptr noundef %604)
  br label %653

606:                                              ; preds = %555
  %607 = load ptr, ptr %31, align 8, !tbaa !5
  %608 = load ptr, ptr %32, align 8, !tbaa !5
  %609 = load ptr, ptr %33, align 8, !tbaa !5
  %610 = load ptr, ptr %34, align 8, !tbaa !5
  %611 = load ptr, ptr %35, align 8, !tbaa !5
  %612 = load i64, ptr %57, align 8, !tbaa !9
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %611, i64 %612
  %614 = load ptr, ptr %36, align 8, !tbaa !5
  %615 = load ptr, ptr %37, align 8, !tbaa !5
  %616 = load i64, ptr %59, align 8, !tbaa !9
  %617 = getelementptr inbounds %struct.doublecomplex, ptr %615, i64 %616
  %618 = load ptr, ptr %38, align 8, !tbaa !5
  %619 = load ptr, ptr %39, align 8, !tbaa !5
  %620 = getelementptr inbounds i64, ptr %619, i64 1
  %621 = load ptr, ptr %40, align 8, !tbaa !5
  %622 = getelementptr inbounds double, ptr %621, i64 1
  %623 = load ptr, ptr %42, align 8, !tbaa !5
  %624 = load i64, ptr %61, align 8, !tbaa !9
  %625 = getelementptr inbounds %struct.doublecomplex, ptr %623, i64 %624
  %626 = load ptr, ptr %43, align 8, !tbaa !5
  %627 = load ptr, ptr %44, align 8, !tbaa !5
  %628 = load i64, ptr %63, align 8, !tbaa !9
  %629 = getelementptr inbounds %struct.doublecomplex, ptr %627, i64 %628
  %630 = load ptr, ptr %45, align 8, !tbaa !5
  %631 = load ptr, ptr %47, align 8, !tbaa !5
  %632 = getelementptr inbounds double, ptr %631, i64 1
  %633 = load ptr, ptr %49, align 8, !tbaa !5
  %634 = load i64, ptr %65, align 8, !tbaa !9
  %635 = getelementptr inbounds double, ptr %633, i64 %634
  %636 = load ptr, ptr %50, align 8, !tbaa !5
  %637 = load i64, ptr %67, align 8, !tbaa !9
  %638 = getelementptr inbounds double, ptr %636, i64 %637
  %639 = load ptr, ptr %53, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.doublecomplex, ptr %639, i64 1
  %641 = load ptr, ptr %54, align 8, !tbaa !5
  %642 = getelementptr inbounds double, ptr %641, i64 1
  %643 = load ptr, ptr %53, align 8, !tbaa !5
  %644 = load ptr, ptr %31, align 8, !tbaa !5
  %645 = load i64, ptr %644, align 8, !tbaa !9
  %646 = add nsw i64 %645, 1
  %647 = getelementptr inbounds %struct.doublecomplex, ptr %643, i64 %646
  %648 = load ptr, ptr %54, align 8, !tbaa !5
  %649 = getelementptr inbounds double, ptr %648, i64 1
  %650 = load ptr, ptr %46, align 8, !tbaa !5
  %651 = load ptr, ptr %55, align 8, !tbaa !5
  %652 = call i32 @zla_gbrfsx_extended__(ptr noundef %77, ptr noundef %78, ptr noundef %607, ptr noundef %608, ptr noundef %609, ptr noundef %610, ptr noundef %613, ptr noundef %614, ptr noundef %617, ptr noundef %618, ptr noundef %620, ptr noundef %85, ptr noundef %622, ptr noundef %625, ptr noundef %626, ptr noundef %629, ptr noundef %630, ptr noundef %632, ptr noundef %87, ptr noundef %635, ptr noundef %638, ptr noundef %640, ptr noundef %642, ptr noundef %647, ptr noundef %649, ptr noundef %650, ptr noundef %86, ptr noundef %88, ptr noundef %72, ptr noundef %81, ptr noundef %651)
  br label %653

653:                                              ; preds = %606, %559
  br label %654

654:                                              ; preds = %653, %524
  store double 1.000000e+01, ptr %69, align 8, !tbaa !11
  %655 = load ptr, ptr %31, align 8, !tbaa !5
  %656 = load i64, ptr %655, align 8, !tbaa !9
  %657 = sitofp i64 %656 to double
  %658 = call double @sqrt(double noundef %657) #4
  store double %658, ptr %70, align 8, !tbaa !11
  %659 = load double, ptr %69, align 8, !tbaa !11
  %660 = load double, ptr %70, align 8, !tbaa !11
  %661 = fcmp oge double %659, %660
  br i1 %661, label %662, label %664

662:                                              ; preds = %654
  %663 = load double, ptr %69, align 8, !tbaa !11
  br label %666

664:                                              ; preds = %654
  %665 = load double, ptr %70, align 8, !tbaa !11
  br label %666

666:                                              ; preds = %664, %662
  %667 = phi double [ %663, %662 ], [ %665, %664 ]
  %668 = call double @dlamch_(ptr noundef @.str)
  %669 = fmul double %667, %668
  store double %669, ptr %73, align 8, !tbaa !11
  %670 = load ptr, ptr %48, align 8, !tbaa !5
  %671 = load i64, ptr %670, align 8, !tbaa !9
  %672 = icmp sge i64 %671, 1
  br i1 %672, label %673, label %854

673:                                              ; preds = %666
  %674 = load i64, ptr %87, align 8, !tbaa !9
  %675 = icmp sge i64 %674, 1
  br i1 %675, label %676, label %854

676:                                              ; preds = %673
  %677 = load i64, ptr %83, align 8, !tbaa !9
  %678 = icmp ne i64 %677, 0
  br i1 %678, label %679, label %705

679:                                              ; preds = %676
  %680 = load i64, ptr %84, align 8, !tbaa !9
  %681 = icmp ne i64 %680, 0
  br i1 %681, label %682, label %705

682:                                              ; preds = %679
  %683 = load ptr, ptr %29, align 8, !tbaa !5
  %684 = load ptr, ptr %31, align 8, !tbaa !5
  %685 = load ptr, ptr %32, align 8, !tbaa !5
  %686 = load ptr, ptr %33, align 8, !tbaa !5
  %687 = load ptr, ptr %35, align 8, !tbaa !5
  %688 = load i64, ptr %57, align 8, !tbaa !9
  %689 = getelementptr inbounds %struct.doublecomplex, ptr %687, i64 %688
  %690 = load ptr, ptr %36, align 8, !tbaa !5
  %691 = load ptr, ptr %37, align 8, !tbaa !5
  %692 = load i64, ptr %59, align 8, !tbaa !9
  %693 = getelementptr inbounds %struct.doublecomplex, ptr %691, i64 %692
  %694 = load ptr, ptr %38, align 8, !tbaa !5
  %695 = load ptr, ptr %39, align 8, !tbaa !5
  %696 = getelementptr inbounds i64, ptr %695, i64 1
  %697 = load ptr, ptr %41, align 8, !tbaa !5
  %698 = getelementptr inbounds double, ptr %697, i64 1
  %699 = load ptr, ptr %55, align 8, !tbaa !5
  %700 = load ptr, ptr %53, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.doublecomplex, ptr %700, i64 1
  %702 = load ptr, ptr %54, align 8, !tbaa !5
  %703 = getelementptr inbounds double, ptr %702, i64 1
  %704 = call double @zla_gbrcond_c__(ptr noundef %683, ptr noundef %684, ptr noundef %685, ptr noundef %686, ptr noundef %689, ptr noundef %690, ptr noundef %693, ptr noundef %694, ptr noundef %696, ptr noundef %698, ptr noundef @c_true, ptr noundef %699, ptr noundef %701, ptr noundef %703, i64 noundef 1)
  store double %704, ptr %76, align 8, !tbaa !11
  br label %758

705:                                              ; preds = %679, %676
  %706 = load i64, ptr %85, align 8, !tbaa !9
  %707 = icmp ne i64 %706, 0
  br i1 %707, label %708, label %734

708:                                              ; preds = %705
  %709 = load i64, ptr %84, align 8, !tbaa !9
  %710 = icmp ne i64 %709, 0
  br i1 %710, label %734, label %711

711:                                              ; preds = %708
  %712 = load ptr, ptr %29, align 8, !tbaa !5
  %713 = load ptr, ptr %31, align 8, !tbaa !5
  %714 = load ptr, ptr %32, align 8, !tbaa !5
  %715 = load ptr, ptr %33, align 8, !tbaa !5
  %716 = load ptr, ptr %35, align 8, !tbaa !5
  %717 = load i64, ptr %57, align 8, !tbaa !9
  %718 = getelementptr inbounds %struct.doublecomplex, ptr %716, i64 %717
  %719 = load ptr, ptr %36, align 8, !tbaa !5
  %720 = load ptr, ptr %37, align 8, !tbaa !5
  %721 = load i64, ptr %59, align 8, !tbaa !9
  %722 = getelementptr inbounds %struct.doublecomplex, ptr %720, i64 %721
  %723 = load ptr, ptr %38, align 8, !tbaa !5
  %724 = load ptr, ptr %39, align 8, !tbaa !5
  %725 = getelementptr inbounds i64, ptr %724, i64 1
  %726 = load ptr, ptr %40, align 8, !tbaa !5
  %727 = getelementptr inbounds double, ptr %726, i64 1
  %728 = load ptr, ptr %55, align 8, !tbaa !5
  %729 = load ptr, ptr %53, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.doublecomplex, ptr %729, i64 1
  %731 = load ptr, ptr %54, align 8, !tbaa !5
  %732 = getelementptr inbounds double, ptr %731, i64 1
  %733 = call double @zla_gbrcond_c__(ptr noundef %712, ptr noundef %713, ptr noundef %714, ptr noundef %715, ptr noundef %718, ptr noundef %719, ptr noundef %722, ptr noundef %723, ptr noundef %725, ptr noundef %727, ptr noundef @c_true, ptr noundef %728, ptr noundef %730, ptr noundef %732, i64 noundef 1)
  store double %733, ptr %76, align 8, !tbaa !11
  br label %757

734:                                              ; preds = %708, %705
  %735 = load ptr, ptr %29, align 8, !tbaa !5
  %736 = load ptr, ptr %31, align 8, !tbaa !5
  %737 = load ptr, ptr %32, align 8, !tbaa !5
  %738 = load ptr, ptr %33, align 8, !tbaa !5
  %739 = load ptr, ptr %35, align 8, !tbaa !5
  %740 = load i64, ptr %57, align 8, !tbaa !9
  %741 = getelementptr inbounds %struct.doublecomplex, ptr %739, i64 %740
  %742 = load ptr, ptr %36, align 8, !tbaa !5
  %743 = load ptr, ptr %37, align 8, !tbaa !5
  %744 = load i64, ptr %59, align 8, !tbaa !9
  %745 = getelementptr inbounds %struct.doublecomplex, ptr %743, i64 %744
  %746 = load ptr, ptr %38, align 8, !tbaa !5
  %747 = load ptr, ptr %39, align 8, !tbaa !5
  %748 = getelementptr inbounds i64, ptr %747, i64 1
  %749 = load ptr, ptr %41, align 8, !tbaa !5
  %750 = getelementptr inbounds double, ptr %749, i64 1
  %751 = load ptr, ptr %55, align 8, !tbaa !5
  %752 = load ptr, ptr %53, align 8, !tbaa !5
  %753 = getelementptr inbounds %struct.doublecomplex, ptr %752, i64 1
  %754 = load ptr, ptr %54, align 8, !tbaa !5
  %755 = getelementptr inbounds double, ptr %754, i64 1
  %756 = call double @zla_gbrcond_c__(ptr noundef %735, ptr noundef %736, ptr noundef %737, ptr noundef %738, ptr noundef %741, ptr noundef %742, ptr noundef %745, ptr noundef %746, ptr noundef %748, ptr noundef %750, ptr noundef @c_false, ptr noundef %751, ptr noundef %753, ptr noundef %755, i64 noundef 1)
  store double %756, ptr %76, align 8, !tbaa !11
  br label %757

757:                                              ; preds = %734, %711
  br label %758

758:                                              ; preds = %757, %682
  %759 = load ptr, ptr %34, align 8, !tbaa !5
  %760 = load i64, ptr %759, align 8, !tbaa !9
  store i64 %760, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %761

761:                                              ; preds = %850, %758
  %762 = load i64, ptr %75, align 8, !tbaa !9
  %763 = load i64, ptr %68, align 8, !tbaa !9
  %764 = icmp sle i64 %762, %763
  br i1 %764, label %765, label %853

765:                                              ; preds = %761
  %766 = load ptr, ptr %48, align 8, !tbaa !5
  %767 = load i64, ptr %766, align 8, !tbaa !9
  %768 = icmp sge i64 %767, 2
  br i1 %768, label %769, label %785

769:                                              ; preds = %765
  %770 = load ptr, ptr %49, align 8, !tbaa !5
  %771 = load i64, ptr %75, align 8, !tbaa !9
  %772 = load i64, ptr %64, align 8, !tbaa !9
  %773 = shl i64 %772, 1
  %774 = add nsw i64 %771, %773
  %775 = getelementptr inbounds double, ptr %770, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !11
  %777 = fcmp ogt double %776, 1.000000e+00
  br i1 %777, label %778, label %785

778:                                              ; preds = %769
  %779 = load ptr, ptr %49, align 8, !tbaa !5
  %780 = load i64, ptr %75, align 8, !tbaa !9
  %781 = load i64, ptr %64, align 8, !tbaa !9
  %782 = shl i64 %781, 1
  %783 = add nsw i64 %780, %782
  %784 = getelementptr inbounds double, ptr %779, i64 %783
  store double 1.000000e+00, ptr %784, align 8, !tbaa !11
  br label %785

785:                                              ; preds = %778, %769, %765
  %786 = load double, ptr %76, align 8, !tbaa !11
  %787 = load double, ptr %71, align 8, !tbaa !11
  %788 = fcmp olt double %786, %787
  br i1 %788, label %789, label %813

789:                                              ; preds = %785
  %790 = load ptr, ptr %49, align 8, !tbaa !5
  %791 = load i64, ptr %75, align 8, !tbaa !9
  %792 = load i64, ptr %64, align 8, !tbaa !9
  %793 = shl i64 %792, 1
  %794 = add nsw i64 %791, %793
  %795 = getelementptr inbounds double, ptr %790, i64 %794
  store double 1.000000e+00, ptr %795, align 8, !tbaa !11
  %796 = load ptr, ptr %49, align 8, !tbaa !5
  %797 = load i64, ptr %75, align 8, !tbaa !9
  %798 = load i64, ptr %64, align 8, !tbaa !9
  %799 = add nsw i64 %797, %798
  %800 = getelementptr inbounds double, ptr %796, i64 %799
  store double 0.000000e+00, ptr %800, align 8, !tbaa !11
  %801 = load ptr, ptr %55, align 8, !tbaa !5
  %802 = load i64, ptr %801, align 8, !tbaa !9
  %803 = load ptr, ptr %31, align 8, !tbaa !5
  %804 = load i64, ptr %803, align 8, !tbaa !9
  %805 = icmp sle i64 %802, %804
  br i1 %805, label %806, label %812

806:                                              ; preds = %789
  %807 = load ptr, ptr %31, align 8, !tbaa !5
  %808 = load i64, ptr %807, align 8, !tbaa !9
  %809 = load i64, ptr %75, align 8, !tbaa !9
  %810 = add nsw i64 %808, %809
  %811 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 %810, ptr %811, align 8, !tbaa !9
  br label %812

812:                                              ; preds = %806, %789
  br label %837

813:                                              ; preds = %785
  %814 = load ptr, ptr %49, align 8, !tbaa !5
  %815 = load i64, ptr %75, align 8, !tbaa !9
  %816 = load i64, ptr %64, align 8, !tbaa !9
  %817 = shl i64 %816, 1
  %818 = add nsw i64 %815, %817
  %819 = getelementptr inbounds double, ptr %814, i64 %818
  %820 = load double, ptr %819, align 8, !tbaa !11
  %821 = load double, ptr %73, align 8, !tbaa !11
  %822 = fcmp olt double %820, %821
  br i1 %822, label %823, label %836

823:                                              ; preds = %813
  %824 = load double, ptr %73, align 8, !tbaa !11
  %825 = load ptr, ptr %49, align 8, !tbaa !5
  %826 = load i64, ptr %75, align 8, !tbaa !9
  %827 = load i64, ptr %64, align 8, !tbaa !9
  %828 = shl i64 %827, 1
  %829 = add nsw i64 %826, %828
  %830 = getelementptr inbounds double, ptr %825, i64 %829
  store double %824, ptr %830, align 8, !tbaa !11
  %831 = load ptr, ptr %49, align 8, !tbaa !5
  %832 = load i64, ptr %75, align 8, !tbaa !9
  %833 = load i64, ptr %64, align 8, !tbaa !9
  %834 = add nsw i64 %832, %833
  %835 = getelementptr inbounds double, ptr %831, i64 %834
  store double 1.000000e+00, ptr %835, align 8, !tbaa !11
  br label %836

836:                                              ; preds = %823, %813
  br label %837

837:                                              ; preds = %836, %812
  %838 = load ptr, ptr %48, align 8, !tbaa !5
  %839 = load i64, ptr %838, align 8, !tbaa !9
  %840 = icmp sge i64 %839, 3
  br i1 %840, label %841, label %849

841:                                              ; preds = %837
  %842 = load double, ptr %76, align 8, !tbaa !11
  %843 = load ptr, ptr %49, align 8, !tbaa !5
  %844 = load i64, ptr %75, align 8, !tbaa !9
  %845 = load i64, ptr %64, align 8, !tbaa !9
  %846 = mul nsw i64 %845, 3
  %847 = add nsw i64 %844, %846
  %848 = getelementptr inbounds double, ptr %843, i64 %847
  store double %842, ptr %848, align 8, !tbaa !11
  br label %849

849:                                              ; preds = %841, %837
  br label %850

850:                                              ; preds = %849
  %851 = load i64, ptr %75, align 8, !tbaa !9
  %852 = add nsw i64 %851, 1
  store i64 %852, ptr %75, align 8, !tbaa !9
  br label %761, !llvm.loop !17

853:                                              ; preds = %761
  br label %854

854:                                              ; preds = %853, %673, %666
  %855 = load ptr, ptr %48, align 8, !tbaa !5
  %856 = load i64, ptr %855, align 8, !tbaa !9
  %857 = icmp sge i64 %856, 1
  br i1 %857, label %858, label %1004

858:                                              ; preds = %854
  %859 = load i64, ptr %87, align 8, !tbaa !9
  %860 = icmp sge i64 %859, 2
  br i1 %860, label %861, label %1004

861:                                              ; preds = %858
  %862 = call double @dlamch_(ptr noundef @.str)
  %863 = call double @sqrt(double noundef %862) #4
  store double %863, ptr %79, align 8, !tbaa !11
  %864 = load ptr, ptr %34, align 8, !tbaa !5
  %865 = load i64, ptr %864, align 8, !tbaa !9
  store i64 %865, ptr %68, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %866

866:                                              ; preds = %1000, %861
  %867 = load i64, ptr %75, align 8, !tbaa !9
  %868 = load i64, ptr %68, align 8, !tbaa !9
  %869 = icmp sle i64 %867, %868
  br i1 %869, label %870, label %1003

870:                                              ; preds = %866
  %871 = load ptr, ptr %50, align 8, !tbaa !5
  %872 = load i64, ptr %75, align 8, !tbaa !9
  %873 = load i64, ptr %66, align 8, !tbaa !9
  %874 = shl i64 %873, 1
  %875 = add nsw i64 %872, %874
  %876 = getelementptr inbounds double, ptr %871, i64 %875
  %877 = load double, ptr %876, align 8, !tbaa !11
  %878 = load double, ptr %79, align 8, !tbaa !11
  %879 = fcmp olt double %877, %878
  br i1 %879, label %880, label %907

880:                                              ; preds = %870
  %881 = load ptr, ptr %29, align 8, !tbaa !5
  %882 = load ptr, ptr %31, align 8, !tbaa !5
  %883 = load ptr, ptr %32, align 8, !tbaa !5
  %884 = load ptr, ptr %33, align 8, !tbaa !5
  %885 = load ptr, ptr %35, align 8, !tbaa !5
  %886 = load i64, ptr %57, align 8, !tbaa !9
  %887 = getelementptr inbounds %struct.doublecomplex, ptr %885, i64 %886
  %888 = load ptr, ptr %36, align 8, !tbaa !5
  %889 = load ptr, ptr %37, align 8, !tbaa !5
  %890 = load i64, ptr %59, align 8, !tbaa !9
  %891 = getelementptr inbounds %struct.doublecomplex, ptr %889, i64 %890
  %892 = load ptr, ptr %38, align 8, !tbaa !5
  %893 = load ptr, ptr %39, align 8, !tbaa !5
  %894 = getelementptr inbounds i64, ptr %893, i64 1
  %895 = load ptr, ptr %44, align 8, !tbaa !5
  %896 = load i64, ptr %75, align 8, !tbaa !9
  %897 = load i64, ptr %62, align 8, !tbaa !9
  %898 = mul nsw i64 %896, %897
  %899 = add nsw i64 %898, 1
  %900 = getelementptr inbounds %struct.doublecomplex, ptr %895, i64 %899
  %901 = load ptr, ptr %55, align 8, !tbaa !5
  %902 = load ptr, ptr %53, align 8, !tbaa !5
  %903 = getelementptr inbounds %struct.doublecomplex, ptr %902, i64 1
  %904 = load ptr, ptr %54, align 8, !tbaa !5
  %905 = getelementptr inbounds double, ptr %904, i64 1
  %906 = call double @zla_gbrcond_x__(ptr noundef %881, ptr noundef %882, ptr noundef %883, ptr noundef %884, ptr noundef %887, ptr noundef %888, ptr noundef %891, ptr noundef %892, ptr noundef %894, ptr noundef %900, ptr noundef %901, ptr noundef %903, ptr noundef %905, i64 noundef 1)
  store double %906, ptr %76, align 8, !tbaa !11
  br label %908

907:                                              ; preds = %870
  store double 0.000000e+00, ptr %76, align 8, !tbaa !11
  br label %908

908:                                              ; preds = %907, %880
  %909 = load ptr, ptr %48, align 8, !tbaa !5
  %910 = load i64, ptr %909, align 8, !tbaa !9
  %911 = icmp sge i64 %910, 2
  br i1 %911, label %912, label %928

912:                                              ; preds = %908
  %913 = load ptr, ptr %50, align 8, !tbaa !5
  %914 = load i64, ptr %75, align 8, !tbaa !9
  %915 = load i64, ptr %66, align 8, !tbaa !9
  %916 = shl i64 %915, 1
  %917 = add nsw i64 %914, %916
  %918 = getelementptr inbounds double, ptr %913, i64 %917
  %919 = load double, ptr %918, align 8, !tbaa !11
  %920 = fcmp ogt double %919, 1.000000e+00
  br i1 %920, label %921, label %928

921:                                              ; preds = %912
  %922 = load ptr, ptr %50, align 8, !tbaa !5
  %923 = load i64, ptr %75, align 8, !tbaa !9
  %924 = load i64, ptr %66, align 8, !tbaa !9
  %925 = shl i64 %924, 1
  %926 = add nsw i64 %923, %925
  %927 = getelementptr inbounds double, ptr %922, i64 %926
  store double 1.000000e+00, ptr %927, align 8, !tbaa !11
  br label %928

928:                                              ; preds = %921, %912, %908
  %929 = load double, ptr %76, align 8, !tbaa !11
  %930 = load double, ptr %71, align 8, !tbaa !11
  %931 = fcmp olt double %929, %930
  br i1 %931, label %932, label %963

932:                                              ; preds = %928
  %933 = load ptr, ptr %50, align 8, !tbaa !5
  %934 = load i64, ptr %75, align 8, !tbaa !9
  %935 = load i64, ptr %66, align 8, !tbaa !9
  %936 = shl i64 %935, 1
  %937 = add nsw i64 %934, %936
  %938 = getelementptr inbounds double, ptr %933, i64 %937
  store double 1.000000e+00, ptr %938, align 8, !tbaa !11
  %939 = load ptr, ptr %50, align 8, !tbaa !5
  %940 = load i64, ptr %75, align 8, !tbaa !9
  %941 = load i64, ptr %66, align 8, !tbaa !9
  %942 = add nsw i64 %940, %941
  %943 = getelementptr inbounds double, ptr %939, i64 %942
  store double 0.000000e+00, ptr %943, align 8, !tbaa !11
  %944 = load ptr, ptr %52, align 8, !tbaa !5
  %945 = getelementptr inbounds double, ptr %944, i64 3
  %946 = load double, ptr %945, align 8, !tbaa !11
  %947 = fcmp oeq double %946, 1.000000e+00
  br i1 %947, label %948, label %962

948:                                              ; preds = %932
  %949 = load ptr, ptr %55, align 8, !tbaa !5
  %950 = load i64, ptr %949, align 8, !tbaa !9
  %951 = load ptr, ptr %31, align 8, !tbaa !5
  %952 = load i64, ptr %951, align 8, !tbaa !9
  %953 = load i64, ptr %75, align 8, !tbaa !9
  %954 = add nsw i64 %952, %953
  %955 = icmp slt i64 %950, %954
  br i1 %955, label %956, label %962

956:                                              ; preds = %948
  %957 = load ptr, ptr %31, align 8, !tbaa !5
  %958 = load i64, ptr %957, align 8, !tbaa !9
  %959 = load i64, ptr %75, align 8, !tbaa !9
  %960 = add nsw i64 %958, %959
  %961 = load ptr, ptr %55, align 8, !tbaa !5
  store i64 %960, ptr %961, align 8, !tbaa !9
  br label %962

962:                                              ; preds = %956, %948, %932
  br label %987

963:                                              ; preds = %928
  %964 = load ptr, ptr %50, align 8, !tbaa !5
  %965 = load i64, ptr %75, align 8, !tbaa !9
  %966 = load i64, ptr %66, align 8, !tbaa !9
  %967 = shl i64 %966, 1
  %968 = add nsw i64 %965, %967
  %969 = getelementptr inbounds double, ptr %964, i64 %968
  %970 = load double, ptr %969, align 8, !tbaa !11
  %971 = load double, ptr %73, align 8, !tbaa !11
  %972 = fcmp olt double %970, %971
  br i1 %972, label %973, label %986

973:                                              ; preds = %963
  %974 = load double, ptr %73, align 8, !tbaa !11
  %975 = load ptr, ptr %50, align 8, !tbaa !5
  %976 = load i64, ptr %75, align 8, !tbaa !9
  %977 = load i64, ptr %66, align 8, !tbaa !9
  %978 = shl i64 %977, 1
  %979 = add nsw i64 %976, %978
  %980 = getelementptr inbounds double, ptr %975, i64 %979
  store double %974, ptr %980, align 8, !tbaa !11
  %981 = load ptr, ptr %50, align 8, !tbaa !5
  %982 = load i64, ptr %75, align 8, !tbaa !9
  %983 = load i64, ptr %66, align 8, !tbaa !9
  %984 = add nsw i64 %982, %983
  %985 = getelementptr inbounds double, ptr %981, i64 %984
  store double 1.000000e+00, ptr %985, align 8, !tbaa !11
  br label %986

986:                                              ; preds = %973, %963
  br label %987

987:                                              ; preds = %986, %962
  %988 = load ptr, ptr %48, align 8, !tbaa !5
  %989 = load i64, ptr %988, align 8, !tbaa !9
  %990 = icmp sge i64 %989, 3
  br i1 %990, label %991, label %999

991:                                              ; preds = %987
  %992 = load double, ptr %76, align 8, !tbaa !11
  %993 = load ptr, ptr %50, align 8, !tbaa !5
  %994 = load i64, ptr %75, align 8, !tbaa !9
  %995 = load i64, ptr %66, align 8, !tbaa !9
  %996 = mul nsw i64 %995, 3
  %997 = add nsw i64 %994, %996
  %998 = getelementptr inbounds double, ptr %993, i64 %997
  store double %992, ptr %998, align 8, !tbaa !11
  br label %999

999:                                              ; preds = %991, %987
  br label %1000

1000:                                             ; preds = %999
  %1001 = load i64, ptr %75, align 8, !tbaa !9
  %1002 = add nsw i64 %1001, 1
  store i64 %1002, ptr %75, align 8, !tbaa !9
  br label %866, !llvm.loop !18

1003:                                             ; preds = %866
  br label %1004

1004:                                             ; preds = %1003, %858, %854
  store i32 0, ptr %28, align 4
  store i32 1, ptr %89, align 4
  br label %1005

1005:                                             ; preds = %1004, %450, %371
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  %1006 = load i32, ptr %28, align 4
  ret i32 %1006
}

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

declare i64 @ilatrans_(ptr noundef) #2

declare double @dlamch_(ptr noundef) #2

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

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

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

declare i32 @zgbcon_(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 i64 @ilaprec_(ptr noundef) #2

declare i32 @zla_gbrfsx_extended__(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, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare double @zla_gbrcond_c__(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, i64 noundef) #2

declare double @zla_gbrcond_x__(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, i64 noundef) #2

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

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

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

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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [8 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 [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8
@c_false = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zgbrfsx_(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 nocapture noundef readonly %19, ptr noundef %20, ptr noundef %21, ptr nocapture noundef readonly %22, ptr nocapture noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26) local_unnamed_addr #0 {
  %28 = ptrtoint ptr %21 to i64
  %29 = ptrtoint ptr %18 to i64
  %30 = ptrtoint ptr %20 to i64
  %31 = ptrtoint ptr %21 to i64
  %32 = ptrtoint ptr %18 to i64
  %33 = ptrtoint ptr %20 to i64
  %34 = alloca i64, align 8
  %35 = alloca double, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca [1 x i8], align 1
  %39 = alloca i64, align 8
  %40 = alloca double, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca i64, align 8
  %45 = alloca double, align 8
  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 1, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #6
  %46 = load i64, ptr %5, align 8, !tbaa !5
  %47 = xor i64 %46, -1
  %48 = getelementptr inbounds double, ptr %21, i64 %47
  %49 = getelementptr inbounds double, ptr %20, i64 %47
  %50 = load i64, ptr %16, align 8, !tbaa !5
  %51 = xor i64 %50, -1
  %52 = getelementptr inbounds %struct.doublecomplex, ptr %15, i64 %51
  %53 = getelementptr inbounds i8, ptr %18, i64 -8
  store i64 0, ptr %26, align 8, !tbaa !5
  %54 = tail call i64 @ilatrans_(ptr noundef %0) #6
  store i64 %54, ptr %37, align 8, !tbaa !5
  %55 = load i64, ptr %22, align 8, !tbaa !5
  %56 = icmp sgt i64 %55, 0
  br i1 %56, label %57, label %63

57:                                               ; preds = %27
  %58 = load double, ptr %23, align 8, !tbaa !9
  %59 = fcmp olt double %58, 0.000000e+00
  br i1 %59, label %60, label %61

60:                                               ; preds = %57
  store double 1.000000e+00, ptr %23, align 8, !tbaa !9
  br label %63

61:                                               ; preds = %57
  %62 = fptosi double %58 to i64
  br label %63

63:                                               ; preds = %60, %61, %27
  %.0387 = phi i64 [ 1, %60 ], [ %62, %61 ], [ 1, %27 ]
  %64 = load i64, ptr %2, align 8, !tbaa !5
  %65 = sitofp i64 %64 to double
  %66 = tail call double @dlamch_(ptr noundef nonnull @.str) #6
  %67 = fmul double %66, %65
  store i64 10, ptr %43, align 8, !tbaa !5
  store double 5.000000e-01, ptr %45, align 8, !tbaa !9
  store double 2.500000e-01, ptr %35, align 8, !tbaa !9
  store i64 0, ptr %39, align 8, !tbaa !5
  %68 = load i64, ptr %22, align 8, !tbaa !5
  %69 = icmp sgt i64 %68, 1
  br i1 %69, label %70, label %.thread

70:                                               ; preds = %63
  %71 = getelementptr inbounds i8, ptr %23, i64 8
  %72 = load double, ptr %71, align 8, !tbaa !9
  %73 = fcmp olt double %72, 0.000000e+00
  br i1 %73, label %74, label %75

74:                                               ; preds = %70
  store double 1.000000e+01, ptr %71, align 8, !tbaa !9
  br label %77

75:                                               ; preds = %70
  %76 = fptosi double %72 to i64
  store i64 %76, ptr %43, align 8, !tbaa !5
  br label %77

77:                                               ; preds = %74, %75
  %.not = icmp eq i64 %68, 2
  br i1 %.not, label %.thread, label %78

78:                                               ; preds = %77
  %79 = getelementptr inbounds i8, ptr %23, i64 16
  %80 = load double, ptr %79, align 8, !tbaa !9
  %81 = fcmp olt double %80, 0.000000e+00
  br i1 %81, label %82, label %83

82:                                               ; preds = %78
  store double 1.000000e+00, ptr %79, align 8, !tbaa !9
  br label %.thread

83:                                               ; preds = %78
  %84 = fcmp oeq double %80, 0.000000e+00
  %85 = zext i1 %84 to i64
  store i64 %85, ptr %39, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %63, %83, %82, %77
  %86 = phi i64 [ 0, %63 ], [ %85, %83 ], [ 0, %82 ], [ 0, %77 ]
  %87 = icmp eq i64 %.0387, 0
  br i1 %87, label %91, label %88

88:                                               ; preds = %.thread
  %89 = load i64, ptr %19, align 8, !tbaa !5
  %90 = icmp eq i64 %89, 0
  br i1 %90, label %91, label %92

91:                                               ; preds = %88, %.thread
  store i64 0, ptr %44, align 8, !tbaa !5
  br label %95

92:                                               ; preds = %88
  %.not401 = icmp eq i64 %86, 0
  br i1 %.not401, label %94, label %93

93:                                               ; preds = %92
  store i64 1, ptr %44, align 8, !tbaa !5
  br label %95

94:                                               ; preds = %92
  store i64 2, ptr %44, align 8, !tbaa !5
  br label %95

95:                                               ; preds = %93, %94, %91
  %96 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %97 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %.not402 = icmp eq i64 %97, 0
  br i1 %.not402, label %98, label %101

98:                                               ; preds = %95
  %99 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %100 = icmp ne i64 %99, 0
  br label %101

101:                                              ; preds = %98, %95
  %102 = phi i1 [ true, %95 ], [ %100, %98 ]
  %103 = zext i1 %102 to i64
  store i64 %103, ptr %42, align 8, !tbaa !5
  %104 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not403 = icmp eq i64 %104, 0
  br i1 %.not403, label %105, label %108

105:                                              ; preds = %101
  %106 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %107 = icmp ne i64 %106, 0
  br label %108

108:                                              ; preds = %105, %101
  %109 = phi i1 [ true, %101 ], [ %107, %105 ]
  %110 = zext i1 %109 to i64
  store i64 %110, ptr %41, align 8, !tbaa !5
  %111 = icmp eq i64 %54, -1
  br i1 %111, label %.thread420.sink.split, label %112

112:                                              ; preds = %108
  %or.cond = select i1 %102, i1 true, i1 %109
  br i1 %or.cond, label %115, label %113

113:                                              ; preds = %112
  %114 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not404 = icmp eq i64 %114, 0
  br i1 %.not404, label %.thread420.sink.split, label %115

115:                                              ; preds = %113, %112
  %116 = load i64, ptr %2, align 8, !tbaa !5
  %117 = icmp slt i64 %116, 0
  br i1 %117, label %.thread420.sink.split, label %118

118:                                              ; preds = %115
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %120 = icmp slt i64 %119, 0
  br i1 %120, label %.thread420.sink.split, label %121

121:                                              ; preds = %118
  %122 = load i64, ptr %4, align 8, !tbaa !5
  %123 = icmp slt i64 %122, 0
  br i1 %123, label %.thread420.sink.split, label %124

124:                                              ; preds = %121
  %125 = load i64, ptr %5, align 8, !tbaa !5
  %126 = icmp slt i64 %125, 0
  br i1 %126, label %.thread420.sink.split, label %127

127:                                              ; preds = %124
  %128 = load i64, ptr %7, align 8, !tbaa !5
  %129 = add nuw nsw i64 %122, %119
  %.not405 = icmp sgt i64 %128, %129
  br i1 %.not405, label %130, label %.thread420.sink.split

130:                                              ; preds = %127
  %131 = load i64, ptr %9, align 8, !tbaa !5
  %132 = shl nuw i64 %119, 1
  %133 = add nsw i64 %122, %132
  %.not406 = icmp sgt i64 %131, %133
  br i1 %.not406, label %134, label %.thread420.sink.split

134:                                              ; preds = %130
  %135 = load i64, ptr %14, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %116, i64 1)
  %136 = icmp slt i64 %135, %spec.select
  br i1 %136, label %.thread420.sink.split, label %137

137:                                              ; preds = %134
  %138 = load i64, ptr %16, align 8, !tbaa !5
  %139 = icmp slt i64 %138, %spec.select
  br i1 %139, label %.thread420.sink.split, label %140

140:                                              ; preds = %137
  %.pr = load i64, ptr %26, align 8, !tbaa !5
  %.not407 = icmp eq i64 %.pr, 0
  br i1 %.not407, label %144, label %.thread420

.thread420.sink.split:                            ; preds = %137, %134, %130, %127, %124, %121, %118, %115, %113, %108
  %.sink = phi i64 [ -1, %108 ], [ -2, %113 ], [ -3, %115 ], [ -4, %118 ], [ -5, %121 ], [ -6, %124 ], [ -8, %127 ], [ -10, %130 ], [ -13, %134 ], [ -15, %137 ]
  store i64 %.sink, ptr %26, align 8, !tbaa !5
  br label %.thread420

.thread420:                                       ; preds = %.thread420.sink.split, %140
  %141 = phi i64 [ %.pr, %140 ], [ %.sink, %.thread420.sink.split ]
  %142 = sub nsw i64 0, %141
  store i64 %142, ptr %34, align 8, !tbaa !5
  %143 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %34) #6
  br label %.loopexit

144:                                              ; preds = %140
  %145 = icmp eq i64 %116, 0
  br i1 %145, label %148, label %146

146:                                              ; preds = %144
  %147 = icmp eq i64 %125, 0
  br i1 %147, label %.thread456, label %.lr.ph

.thread456:                                       ; preds = %146
  store double 1.000000e+00, ptr %17, align 8, !tbaa !9
  br label %.loopexit

148:                                              ; preds = %144
  store double 1.000000e+00, ptr %17, align 8, !tbaa !9
  %.not418438 = icmp eq i64 %125, 0
  br i1 %.not418438, label %.loopexit, label %.lr.ph441

.lr.ph441:                                        ; preds = %148
  %149 = load i64, ptr %19, align 8, !tbaa !5
  %150 = icmp sgt i64 %149, 0
  br i1 %150, label %.lr.ph441.split.us.preheader, label %.lr.ph441.split.preheader

.lr.ph441.split.us.preheader:                     ; preds = %.lr.ph441
  %min.iters.check490 = icmp ult i64 %125, 10
  br i1 %min.iters.check490, label %.lr.ph441.split.us.preheader501, label %vector.memcheck482

.lr.ph441.split.us.preheader501:                  ; preds = %middle.block488, %vector.memcheck482, %.lr.ph441.split.us.preheader
  %.0385439.us.ph = phi i64 [ 1, %vector.memcheck482 ], [ 1, %.lr.ph441.split.us.preheader ], [ %ind.end494, %middle.block488 ]
  %xtraiter507 = and i64 %125, 1
  %lcmp.mod508.not = icmp eq i64 %xtraiter507, 0
  br i1 %lcmp.mod508.not, label %.lr.ph441.split.us.prol.loopexit, label %.lr.ph441.split.us.prol

.lr.ph441.split.us.prol:                          ; preds = %.lr.ph441.split.us.preheader501
  %151 = getelementptr inbounds double, ptr %53, i64 %.0385439.us.ph
  store double 0.000000e+00, ptr %151, align 8, !tbaa !9
  %152 = add nsw i64 %.0385439.us.ph, %46
  %153 = getelementptr inbounds double, ptr %49, i64 %152
  store double 1.000000e+00, ptr %153, align 8, !tbaa !9
  %154 = getelementptr inbounds double, ptr %48, i64 %152
  store double 1.000000e+00, ptr %154, align 8, !tbaa !9
  %155 = add nuw i64 %.0385439.us.ph, 1
  br label %.lr.ph441.split.us.prol.loopexit

.lr.ph441.split.us.prol.loopexit:                 ; preds = %.lr.ph441.split.us.prol, %.lr.ph441.split.us.preheader501
  %.0385439.us.unr = phi i64 [ %.0385439.us.ph, %.lr.ph441.split.us.preheader501 ], [ %155, %.lr.ph441.split.us.prol ]
  %156 = icmp eq i64 %125, %.0385439.us.ph
  br i1 %156, label %.loopexit, label %.lr.ph441.split.us

vector.memcheck482:                               ; preds = %.lr.ph441.split.us.preheader
  %157 = sub i64 %30, %29
  %diff.check483 = icmp ult i64 %157, 32
  %158 = sub i64 %28, %29
  %diff.check484 = icmp ult i64 %158, 32
  %conflict.rdx485 = or i1 %diff.check483, %diff.check484
  %159 = sub i64 %28, %30
  %diff.check486 = icmp ult i64 %159, 32
  %conflict.rdx487 = or i1 %conflict.rdx485, %diff.check486
  br i1 %conflict.rdx487, label %.lr.ph441.split.us.preheader501, label %vector.ph491

vector.ph491:                                     ; preds = %vector.memcheck482
  %n.vec493 = and i64 %125, 9223372036854775804
  %ind.end494 = or disjoint i64 %n.vec493, 1
  br label %vector.body496

vector.body496:                                   ; preds = %vector.body496, %vector.ph491
  %index497 = phi i64 [ 0, %vector.ph491 ], [ %index.next499, %vector.body496 ]
  %offset.idx498 = or disjoint i64 %index497, 1
  %160 = getelementptr double, ptr %18, i64 %index497
  %161 = getelementptr inbounds i8, ptr %160, i64 16
  store <2 x double> zeroinitializer, ptr %160, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %161, align 8, !tbaa !9
  %162 = add nsw i64 %offset.idx498, %46
  %163 = getelementptr inbounds double, ptr %49, i64 %162
  %164 = getelementptr inbounds i8, ptr %163, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %163, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %164, align 8, !tbaa !9
  %165 = getelementptr inbounds double, ptr %48, i64 %162
  %166 = getelementptr inbounds i8, ptr %165, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %165, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %166, align 8, !tbaa !9
  %index.next499 = add nuw i64 %index497, 4
  %167 = icmp eq i64 %index.next499, %n.vec493
  br i1 %167, label %middle.block488, label %vector.body496, !llvm.loop !11

middle.block488:                                  ; preds = %vector.body496
  %cmp.n500 = icmp eq i64 %125, %n.vec493
  br i1 %cmp.n500, label %.loopexit, label %.lr.ph441.split.us.preheader501

.lr.ph441.split.preheader:                        ; preds = %.lr.ph441
  %168 = shl nuw i64 %125, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %18, i8 0, i64 %168, i1 false), !tbaa !9
  br label %.loopexit

.lr.ph441.split.us:                               ; preds = %.lr.ph441.split.us.prol.loopexit, %.lr.ph441.split.us
  %.0385439.us = phi i64 [ %177, %.lr.ph441.split.us ], [ %.0385439.us.unr, %.lr.ph441.split.us.prol.loopexit ]
  %169 = getelementptr inbounds double, ptr %53, i64 %.0385439.us
  store double 0.000000e+00, ptr %169, align 8, !tbaa !9
  %170 = add nsw i64 %.0385439.us, %46
  %171 = getelementptr inbounds double, ptr %49, i64 %170
  store double 1.000000e+00, ptr %171, align 8, !tbaa !9
  %172 = getelementptr inbounds double, ptr %48, i64 %170
  store double 1.000000e+00, ptr %172, align 8, !tbaa !9
  %173 = add nuw i64 %.0385439.us, 1
  %174 = getelementptr double, ptr %18, i64 %.0385439.us
  store double 0.000000e+00, ptr %174, align 8, !tbaa !9
  %175 = getelementptr inbounds double, ptr %20, i64 %.0385439.us
  store double 1.000000e+00, ptr %175, align 8, !tbaa !9
  %176 = getelementptr inbounds double, ptr %21, i64 %.0385439.us
  store double 1.000000e+00, ptr %176, align 8, !tbaa !9
  %177 = add nuw i64 %.0385439.us, 2
  %exitcond449.not.1 = icmp eq i64 %173, %125
  br i1 %exitcond449.not.1, label %.loopexit, label %.lr.ph441.split.us, !llvm.loop !15

.lr.ph:                                           ; preds = %146
  store double 0.000000e+00, ptr %17, align 8, !tbaa !9
  %178 = load i64, ptr %19, align 8, !tbaa !5
  %179 = icmp sgt i64 %178, 0
  br i1 %179, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader

.lr.ph.split.preheader:                           ; preds = %.lr.ph
  %min.iters.check = icmp ult i64 %125, 4
  br i1 %min.iters.check, label %.lr.ph.split.preheader505, label %vector.ph

.lr.ph.split.preheader505:                        ; preds = %middle.block, %.lr.ph.split.preheader
  %.1386425.ph = phi i64 [ 1, %.lr.ph.split.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph.split

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

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

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

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %min.iters.check471 = icmp ult i64 %125, 10
  br i1 %min.iters.check471, label %.lr.ph.split.us.preheader504, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.split.us.preheader
  %183 = sub i64 %33, %32
  %diff.check = icmp ult i64 %183, 32
  %184 = sub i64 %31, %32
  %diff.check466 = icmp ult i64 %184, 32
  %conflict.rdx = or i1 %diff.check, %diff.check466
  %185 = sub i64 %31, %33
  %diff.check467 = icmp ult i64 %185, 32
  %conflict.rdx468 = or i1 %conflict.rdx, %diff.check467
  br i1 %conflict.rdx468, label %.lr.ph.split.us.preheader504, label %vector.ph472

vector.ph472:                                     ; preds = %vector.memcheck
  %n.vec474 = and i64 %125, 9223372036854775804
  %ind.end475 = or disjoint i64 %n.vec474, 1
  br label %vector.body477

vector.body477:                                   ; preds = %vector.body477, %vector.ph472
  %index478 = phi i64 [ 0, %vector.ph472 ], [ %index.next480, %vector.body477 ]
  %offset.idx479 = or disjoint i64 %index478, 1
  %186 = getelementptr double, ptr %18, i64 %index478
  %187 = getelementptr inbounds i8, ptr %186, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %186, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %187, align 8, !tbaa !9
  %188 = add nsw i64 %offset.idx479, %46
  %189 = getelementptr inbounds double, ptr %49, i64 %188
  %190 = getelementptr inbounds i8, ptr %189, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %189, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %190, align 8, !tbaa !9
  %191 = getelementptr inbounds double, ptr %48, i64 %188
  %192 = getelementptr inbounds i8, ptr %191, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %191, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %192, align 8, !tbaa !9
  %index.next480 = add nuw i64 %index478, 4
  %193 = icmp eq i64 %index.next480, %n.vec474
  br i1 %193, label %middle.block469, label %vector.body477, !llvm.loop !17

middle.block469:                                  ; preds = %vector.body477
  %cmp.n481 = icmp eq i64 %125, %n.vec474
  br i1 %cmp.n481, label %._crit_edge, label %.lr.ph.split.us.preheader504

.lr.ph.split.us.preheader504:                     ; preds = %middle.block469, %vector.memcheck, %.lr.ph.split.us.preheader
  %.1386425.us.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.split.us.preheader ], [ %ind.end475, %middle.block469 ]
  %xtraiter = and i64 %125, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.split.us.prol.loopexit, label %.lr.ph.split.us.prol

.lr.ph.split.us.prol:                             ; preds = %.lr.ph.split.us.preheader504
  %194 = getelementptr inbounds double, ptr %53, i64 %.1386425.us.ph
  store double 1.000000e+00, ptr %194, align 8, !tbaa !9
  %195 = add nsw i64 %.1386425.us.ph, %46
  %196 = getelementptr inbounds double, ptr %49, i64 %195
  store double 1.000000e+00, ptr %196, align 8, !tbaa !9
  %197 = getelementptr inbounds double, ptr %48, i64 %195
  store double 1.000000e+00, ptr %197, align 8, !tbaa !9
  %198 = add nuw i64 %.1386425.us.ph, 1
  br label %.lr.ph.split.us.prol.loopexit

.lr.ph.split.us.prol.loopexit:                    ; preds = %.lr.ph.split.us.prol, %.lr.ph.split.us.preheader504
  %.1386425.us.unr = phi i64 [ %.1386425.us.ph, %.lr.ph.split.us.preheader504 ], [ %198, %.lr.ph.split.us.prol ]
  %199 = icmp eq i64 %125, %.1386425.us.ph
  br i1 %199, label %._crit_edge, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us
  %.1386425.us = phi i64 [ %208, %.lr.ph.split.us ], [ %.1386425.us.unr, %.lr.ph.split.us.prol.loopexit ]
  %200 = getelementptr inbounds double, ptr %53, i64 %.1386425.us
  store double 1.000000e+00, ptr %200, align 8, !tbaa !9
  %201 = add nsw i64 %.1386425.us, %46
  %202 = getelementptr inbounds double, ptr %49, i64 %201
  store double 1.000000e+00, ptr %202, align 8, !tbaa !9
  %203 = getelementptr inbounds double, ptr %48, i64 %201
  store double 1.000000e+00, ptr %203, align 8, !tbaa !9
  %204 = add nuw i64 %.1386425.us, 1
  %205 = getelementptr double, ptr %18, i64 %.1386425.us
  store double 1.000000e+00, ptr %205, align 8, !tbaa !9
  %206 = getelementptr inbounds double, ptr %20, i64 %.1386425.us
  store double 1.000000e+00, ptr %206, align 8, !tbaa !9
  %207 = getelementptr inbounds double, ptr %21, i64 %.1386425.us
  store double 1.000000e+00, ptr %207, align 8, !tbaa !9
  %208 = add nuw i64 %.1386425.us, 2
  %exitcond446.not.1 = icmp eq i64 %204, %125
  br i1 %exitcond446.not.1, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !18

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader505, %.lr.ph.split
  %.1386425 = phi i64 [ %210, %.lr.ph.split ], [ %.1386425.ph, %.lr.ph.split.preheader505 ]
  %209 = getelementptr inbounds double, ptr %53, i64 %.1386425
  store double 1.000000e+00, ptr %209, align 8, !tbaa !9
  %210 = add nuw i64 %.1386425, 1
  %exitcond.not = icmp eq i64 %.1386425, %125
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph.split, %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us, %middle.block, %middle.block469
  %211 = icmp ne i64 %96, 0
  %. = select i1 %211, i8 73, i8 49
  store i8 %., ptr %38, align 1, !tbaa !20
  %212 = call double @zlangb_(ptr noundef nonnull %38, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %25) #6
  store double %212, ptr %40, align 8, !tbaa !9
  %213 = call i32 @zgbcon_(ptr noundef nonnull %38, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %40, ptr noundef nonnull %17, ptr noundef %24, ptr noundef %25, ptr noundef nonnull %26) #6
  br i1 %87, label %222, label %214

214:                                              ; preds = %._crit_edge
  %215 = call i64 @ilaprec_(ptr noundef nonnull @.str.6) #6
  store i64 %215, ptr %36, align 8, !tbaa !5
  %216 = load i64, ptr %2, align 8, !tbaa !5
  %217 = getelementptr %struct.doublecomplex, ptr %24, i64 %216
  br i1 %211, label %218, label %220

218:                                              ; preds = %214
  %219 = call i32 @zla_gbrfsx_extended__(ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %41, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef nonnull %44, ptr noundef %20, ptr noundef %21, ptr noundef %24, ptr noundef %25, ptr noundef %217, ptr noundef %25, ptr noundef nonnull %17, ptr noundef nonnull %43, ptr noundef nonnull %45, ptr noundef nonnull %35, ptr noundef nonnull %39, ptr noundef nonnull %26) #6
  br label %222

220:                                              ; preds = %214
  %221 = call i32 @zla_gbrfsx_extended__(ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %42, ptr noundef %11, ptr noundef %13, ptr noundef nonnull %14, ptr noundef %15, ptr noundef nonnull %16, ptr noundef nonnull %18, ptr noundef nonnull %44, ptr noundef %20, ptr noundef %21, ptr noundef %24, ptr noundef %25, ptr noundef %217, ptr noundef %25, ptr noundef nonnull %17, ptr noundef nonnull %43, ptr noundef nonnull %45, ptr noundef nonnull %35, ptr noundef nonnull %39, ptr noundef nonnull %26) #6
  br label %222

222:                                              ; preds = %218, %220, %._crit_edge
  %223 = load i64, ptr %2, align 8, !tbaa !5
  %224 = sitofp i64 %223 to double
  %225 = call double @sqrt(double noundef %224) #6
  %226 = fcmp ole double %225, 1.000000e+01
  %227 = select i1 %226, double 1.000000e+01, double %225
  %228 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %229 = fmul double %228, %227
  %230 = load i64, ptr %19, align 8, !tbaa !5
  %231 = icmp sgt i64 %230, 0
  %232 = load i64, ptr %44, align 8
  %233 = icmp sgt i64 %232, 0
  %or.cond3 = select i1 %231, i1 %233, i1 false
  br i1 %or.cond3, label %234, label %.loopexit423

234:                                              ; preds = %222
  %235 = load i64, ptr %41, align 8, !tbaa !5
  %236 = icmp ne i64 %235, 0
  %or.cond5 = and i1 %211, %236
  br i1 %or.cond5, label %237, label %239

237:                                              ; preds = %234
  %238 = call double @zla_gbrcond_c__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %12, ptr noundef nonnull @c_true, ptr noundef nonnull %26, ptr noundef %24, ptr noundef %25, i64 noundef 1) #6
  br label %246

239:                                              ; preds = %234
  %240 = load i64, ptr %42, align 8, !tbaa !5
  %241 = icmp eq i64 %240, 0
  %or.cond7 = or i1 %211, %241
  br i1 %or.cond7, label %244, label %242

242:                                              ; preds = %239
  %243 = call double @zla_gbrcond_c__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %11, ptr noundef nonnull @c_true, ptr noundef nonnull %26, ptr noundef %24, ptr noundef %25, i64 noundef 1) #6
  br label %246

244:                                              ; preds = %239
  %245 = call double @zla_gbrcond_c__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %12, ptr noundef nonnull @c_false, ptr noundef nonnull %26, ptr noundef %24, ptr noundef %25, i64 noundef 1) #6
  br label %246

246:                                              ; preds = %242, %244, %237
  %.0384 = phi double [ %238, %237 ], [ %245, %244 ], [ %243, %242 ]
  %247 = load i64, ptr %5, align 8, !tbaa !5
  %.not410426 = icmp slt i64 %247, 1
  br i1 %.not410426, label %..loopexit423_crit_edge, label %.lr.ph429

..loopexit423_crit_edge:                          ; preds = %246
  %.pre454 = load i64, ptr %19, align 8, !tbaa !5
  br label %.loopexit423

.lr.ph429:                                        ; preds = %246
  %.idx413 = shl i64 %46, 4
  %invariant.gep = getelementptr i8, ptr %49, i64 %.idx413
  %248 = fcmp olt double %.0384, %67
  %.idx417 = mul i64 %46, 24
  %invariant.gep430 = getelementptr i8, ptr %49, i64 %.idx417
  %.pre452 = load i64, ptr %19, align 8, !tbaa !5
  br i1 %248, label %.lr.ph429.split.us, label %.lr.ph429.split.preheader

.lr.ph429.split.preheader:                        ; preds = %.lr.ph429
  %249 = icmp sgt i64 %.pre452, 1
  %invariant.gep461 = getelementptr i8, ptr %49, i64 %.idx413
  %250 = icmp sgt i64 %.pre452, 2
  br label %.lr.ph429.split

.lr.ph429.split.us:                               ; preds = %.lr.ph429, %263
  %251 = phi i64 [ %260, %263 ], [ %.pre452, %.lr.ph429 ]
  %.2427.us = phi i64 [ %264, %263 ], [ 1, %.lr.ph429 ]
  %252 = getelementptr double, ptr %49, i64 %.2427.us
  %253 = getelementptr i8, ptr %252, i64 %.idx413
  store double 1.000000e+00, ptr %253, align 8, !tbaa !9
  %254 = getelementptr double, ptr %252, i64 %46
  store double 0.000000e+00, ptr %254, align 8, !tbaa !9
  %255 = load i64, ptr %26, align 8, !tbaa !5
  %256 = load i64, ptr %2, align 8, !tbaa !5
  %.not416.us = icmp sgt i64 %255, %256
  br i1 %.not416.us, label %259, label %257

257:                                              ; preds = %.lr.ph429.split.us
  %258 = add nsw i64 %256, %.2427.us
  store i64 %258, ptr %26, align 8, !tbaa !5
  %.pre453 = load i64, ptr %19, align 8, !tbaa !5
  br label %259

259:                                              ; preds = %257, %.lr.ph429.split.us
  %260 = phi i64 [ %.pre453, %257 ], [ %251, %.lr.ph429.split.us ]
  %261 = icmp sgt i64 %260, 2
  br i1 %261, label %262, label %263

262:                                              ; preds = %259
  %gep431.us = getelementptr double, ptr %invariant.gep430, i64 %.2427.us
  store double %.0384, ptr %gep431.us, align 8, !tbaa !9
  br label %263

263:                                              ; preds = %262, %259
  %264 = add nuw i64 %.2427.us, 1
  %exitcond448.not = icmp eq i64 %.2427.us, %247
  br i1 %exitcond448.not, label %.loopexit423, label %.lr.ph429.split.us, !llvm.loop !21

.lr.ph429.split:                                  ; preds = %.lr.ph429.split.preheader, %278
  %.2427 = phi i64 [ %279, %278 ], [ 1, %.lr.ph429.split.preheader ]
  br i1 %249, label %265, label %.lr.ph429.split._crit_edge

.lr.ph429.split._crit_edge:                       ; preds = %.lr.ph429.split
  %gep462 = getelementptr double, ptr %invariant.gep461, i64 %.2427
  %.pre451 = load double, ptr %gep462, align 8, !tbaa !9
  br label %269

265:                                              ; preds = %.lr.ph429.split
  %gep = getelementptr double, ptr %invariant.gep, i64 %.2427
  %266 = load double, ptr %gep, align 8, !tbaa !9
  %267 = fcmp ogt double %266, 1.000000e+00
  br i1 %267, label %268, label %269

268:                                              ; preds = %265
  store double 1.000000e+00, ptr %gep, align 8, !tbaa !9
  br label %269

269:                                              ; preds = %.lr.ph429.split._crit_edge, %268, %265
  %270 = phi double [ %.pre451, %.lr.ph429.split._crit_edge ], [ 1.000000e+00, %268 ], [ %266, %265 ]
  %271 = fcmp olt double %270, %229
  br i1 %271, label %272, label %276

272:                                              ; preds = %269
  %273 = getelementptr double, ptr %49, i64 %.2427
  %274 = getelementptr i8, ptr %273, i64 %.idx413
  store double %229, ptr %274, align 8, !tbaa !9
  %275 = getelementptr double, ptr %273, i64 %46
  store double 1.000000e+00, ptr %275, align 8, !tbaa !9
  br label %276

276:                                              ; preds = %269, %272
  br i1 %250, label %277, label %278

277:                                              ; preds = %276
  %gep431 = getelementptr double, ptr %invariant.gep430, i64 %.2427
  store double %.0384, ptr %gep431, align 8, !tbaa !9
  br label %278

278:                                              ; preds = %276, %277
  %279 = add nuw i64 %.2427, 1
  %exitcond447.not = icmp eq i64 %.2427, %247
  br i1 %exitcond447.not, label %.loopexit423, label %.lr.ph429.split, !llvm.loop !21

.loopexit423:                                     ; preds = %278, %263, %..loopexit423_crit_edge, %222
  %280 = phi i64 [ %.pre454, %..loopexit423_crit_edge ], [ %230, %222 ], [ %260, %263 ], [ %.pre452, %278 ]
  %281 = icmp sgt i64 %280, 0
  %282 = load i64, ptr %44, align 8
  %283 = icmp sgt i64 %282, 1
  %or.cond9 = select i1 %281, i1 %283, i1 false
  br i1 %or.cond9, label %284, label %.loopexit

284:                                              ; preds = %.loopexit423
  %285 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %286 = call double @sqrt(double noundef %285) #6
  %287 = load i64, ptr %5, align 8, !tbaa !5
  %invariant.gep432 = getelementptr i8, ptr %52, i64 16
  %.not411434 = icmp slt i64 %287, 1
  br i1 %.not411434, label %.loopexit, label %.lr.ph437

.lr.ph437:                                        ; preds = %284
  %.idx = shl i64 %46, 4
  %288 = getelementptr inbounds i8, ptr %23, i64 16
  %.idx412 = mul i64 %46, 24
  br label %289

289:                                              ; preds = %.lr.ph437, %326
  %.3435 = phi i64 [ 1, %.lr.ph437 ], [ %327, %326 ]
  %290 = getelementptr double, ptr %48, i64 %.3435
  %291 = getelementptr i8, ptr %290, i64 %.idx
  %292 = load double, ptr %291, align 8, !tbaa !9
  %293 = fcmp olt double %292, %286
  br i1 %293, label %294, label %297

294:                                              ; preds = %289
  %295 = mul nsw i64 %.3435, %50
  %gep433 = getelementptr %struct.doublecomplex, ptr %invariant.gep432, i64 %295
  %296 = call double @zla_gbrcond_x__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %gep433, ptr noundef nonnull %26, ptr noundef %24, ptr noundef %25, i64 noundef 1) #6
  br label %297

297:                                              ; preds = %289, %294
  %.1 = phi double [ %296, %294 ], [ 0.000000e+00, %289 ]
  %298 = load i64, ptr %19, align 8, !tbaa !5
  %299 = icmp sgt i64 %298, 1
  br i1 %299, label %300, label %304

300:                                              ; preds = %297
  %301 = load double, ptr %291, align 8, !tbaa !9
  %302 = fcmp ogt double %301, 1.000000e+00
  br i1 %302, label %303, label %304

303:                                              ; preds = %300
  store double 1.000000e+00, ptr %291, align 8, !tbaa !9
  br label %304

304:                                              ; preds = %303, %300, %297
  %305 = fcmp olt double %.1, %67
  br i1 %305, label %306, label %316

306:                                              ; preds = %304
  store double 1.000000e+00, ptr %291, align 8, !tbaa !9
  %307 = getelementptr double, ptr %290, i64 %46
  store double 0.000000e+00, ptr %307, align 8, !tbaa !9
  %308 = load double, ptr %288, align 8, !tbaa !9
  %309 = fcmp oeq double %308, 1.000000e+00
  br i1 %309, label %310, label %321

310:                                              ; preds = %306
  %311 = load i64, ptr %26, align 8, !tbaa !5
  %312 = load i64, ptr %2, align 8, !tbaa !5
  %313 = add nsw i64 %312, %.3435
  %314 = icmp slt i64 %311, %313
  br i1 %314, label %315, label %321

315:                                              ; preds = %310
  store i64 %313, ptr %26, align 8, !tbaa !5
  %.pre455 = load i64, ptr %19, align 8, !tbaa !5
  br label %321

316:                                              ; preds = %304
  %317 = load double, ptr %291, align 8, !tbaa !9
  %318 = fcmp olt double %317, %229
  br i1 %318, label %319, label %321

319:                                              ; preds = %316
  store double %229, ptr %291, align 8, !tbaa !9
  %320 = getelementptr double, ptr %290, i64 %46
  store double 1.000000e+00, ptr %320, align 8, !tbaa !9
  br label %321

321:                                              ; preds = %316, %319, %306, %310, %315
  %322 = phi i64 [ %298, %316 ], [ %298, %319 ], [ %298, %306 ], [ %298, %310 ], [ %.pre455, %315 ]
  %323 = icmp sgt i64 %322, 2
  br i1 %323, label %324, label %326

324:                                              ; preds = %321
  %325 = getelementptr i8, ptr %290, i64 %.idx412
  store double %.1, ptr %325, align 8, !tbaa !9
  br label %326

326:                                              ; preds = %321, %324
  %327 = add nuw nsw i64 %.3435, 1
  %.not411.not = icmp slt i64 %.3435, %287
  br i1 %.not411.not, label %289, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %326, %.lr.ph441.split.us.prol.loopexit, %.lr.ph441.split.us, %middle.block488, %.thread456, %.lr.ph441.split.preheader, %284, %148, %.loopexit423, %.thread420
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 1, 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
  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 @ilatrans_(ptr noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

declare i32 @zgbcon_(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 i64 @ilaprec_(ptr noundef) local_unnamed_addr #2

declare i32 @zla_gbrfsx_extended__(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, 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 nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

declare double @zla_gbrcond_c__(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, i64 noundef) local_unnamed_addr #2

declare double @zla_gbrcond_x__(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, i64 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) #4

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

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

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

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


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