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

; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1

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

121:                                              ; preds = %20
  %122 = load i64, ptr %65, align 8, !tbaa !9
  %123 = icmp ne i64 %122, 0
  br i1 %123, label %124, label %126

124:                                              ; preds = %121, %20
  %125 = load ptr, ptr %30, align 8, !tbaa !5
  store i8 78, ptr %125, align 1, !tbaa !11
  store i64 0, ptr %66, align 8, !tbaa !9
  br label %132

126:                                              ; preds = %121
  %127 = load ptr, ptr %30, align 8, !tbaa !5
  %128 = call i64 @lsame_(ptr noundef %127, ptr noundef @.str.2)
  store i64 %128, ptr %66, align 8, !tbaa !9
  %129 = call double @dlamch_(ptr noundef @.str.3)
  store double %129, ptr %70, align 8, !tbaa !12
  %130 = load double, ptr %70, align 8, !tbaa !12
  %131 = fdiv double 1.000000e+00, %130
  store double %131, ptr %68, align 8, !tbaa !12
  br label %132

132:                                              ; preds = %126, %124
  %133 = load i64, ptr %67, align 8, !tbaa !9
  %134 = icmp ne i64 %133, 0
  br i1 %134, label %144, label %135

135:                                              ; preds = %132
  %136 = load i64, ptr %65, align 8, !tbaa !9
  %137 = icmp ne i64 %136, 0
  br i1 %137, label %144, label %138

138:                                              ; preds = %135
  %139 = load ptr, ptr %22, align 8, !tbaa !5
  %140 = call i64 @lsame_(ptr noundef %139, ptr noundef @.str.4)
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %144, label %142

142:                                              ; preds = %138
  %143 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %143, align 8, !tbaa !9
  br label %327

144:                                              ; preds = %138, %135, %132
  %145 = load ptr, ptr %23, align 8, !tbaa !5
  %146 = call i64 @lsame_(ptr noundef %145, ptr noundef @.str.5)
  %147 = icmp ne i64 %146, 0
  br i1 %147, label %154, label %148

148:                                              ; preds = %144
  %149 = load ptr, ptr %23, align 8, !tbaa !5
  %150 = call i64 @lsame_(ptr noundef %149, ptr noundef @.str.6)
  %151 = icmp ne i64 %150, 0
  br i1 %151, label %154, label %152

152:                                              ; preds = %148
  %153 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -2, ptr %153, align 8, !tbaa !9
  br label %326

154:                                              ; preds = %148, %144
  %155 = load ptr, ptr %24, align 8, !tbaa !5
  %156 = load i64, ptr %155, align 8, !tbaa !9
  %157 = icmp slt i64 %156, 0
  br i1 %157, label %158, label %160

158:                                              ; preds = %154
  %159 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -3, ptr %159, align 8, !tbaa !9
  br label %325

160:                                              ; preds = %154
  %161 = load ptr, ptr %25, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = icmp slt i64 %162, 0
  br i1 %163, label %164, label %166

164:                                              ; preds = %160
  %165 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %165, align 8, !tbaa !9
  br label %324

166:                                              ; preds = %160
  %167 = load ptr, ptr %27, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  %169 = load ptr, ptr %24, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = icmp sge i64 1, %170
  br i1 %171, label %172, label %173

172:                                              ; preds = %166
  br label %176

173:                                              ; preds = %166
  %174 = load ptr, ptr %24, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  br label %176

176:                                              ; preds = %173, %172
  %177 = phi i64 [ 1, %172 ], [ %175, %173 ]
  %178 = icmp slt i64 %168, %177
  br i1 %178, label %179, label %181

179:                                              ; preds = %176
  %180 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -6, ptr %180, align 8, !tbaa !9
  br label %323

181:                                              ; preds = %176
  %182 = load ptr, ptr %29, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = load ptr, ptr %24, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp sge i64 1, %185
  br i1 %186, label %187, label %188

187:                                              ; preds = %181
  br label %191

188:                                              ; preds = %181
  %189 = load ptr, ptr %24, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %188, %187
  %192 = phi i64 [ 1, %187 ], [ %190, %188 ]
  %193 = icmp slt i64 %183, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %191
  %195 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -8, ptr %195, align 8, !tbaa !9
  br label %322

196:                                              ; preds = %191
  %197 = load ptr, ptr %22, align 8, !tbaa !5
  %198 = call i64 @lsame_(ptr noundef %197, ptr noundef @.str.4)
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %200, label %209

200:                                              ; preds = %196
  %201 = load i64, ptr %66, align 8, !tbaa !9
  %202 = icmp ne i64 %201, 0
  br i1 %202, label %209, label %203

203:                                              ; preds = %200
  %204 = load ptr, ptr %30, align 8, !tbaa !5
  %205 = call i64 @lsame_(ptr noundef %204, ptr noundef @.str)
  %206 = icmp ne i64 %205, 0
  br i1 %206, label %209, label %207

207:                                              ; preds = %203
  %208 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -9, ptr %208, align 8, !tbaa !9
  br label %321

209:                                              ; preds = %203, %200, %196
  %210 = load i64, ptr %66, align 8, !tbaa !9
  %211 = icmp ne i64 %210, 0
  br i1 %211, label %212, label %284

212:                                              ; preds = %209
  %213 = load double, ptr %68, align 8, !tbaa !12
  store double %213, ptr %61, align 8, !tbaa !12
  store double 0.000000e+00, ptr %62, align 8, !tbaa !12
  %214 = load ptr, ptr %24, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  store i64 %215, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %249, %212
  %217 = load i64, ptr %59, align 8, !tbaa !9
  %218 = load i64, ptr %50, align 8, !tbaa !9
  %219 = icmp sle i64 %217, %218
  br i1 %219, label %220, label %252

220:                                              ; preds = %216
  %221 = load double, ptr %61, align 8, !tbaa !12
  store double %221, ptr %55, align 8, !tbaa !12
  %222 = load ptr, ptr %31, align 8, !tbaa !5
  %223 = load i64, ptr %59, align 8, !tbaa !9
  %224 = getelementptr inbounds double, ptr %222, i64 %223
  %225 = load double, ptr %224, align 8, !tbaa !12
  store double %225, ptr %56, align 8, !tbaa !12
  %226 = load double, ptr %55, align 8, !tbaa !12
  %227 = load double, ptr %56, align 8, !tbaa !12
  %228 = fcmp ole double %226, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %220
  %230 = load double, ptr %55, align 8, !tbaa !12
  br label %233

231:                                              ; preds = %220
  %232 = load double, ptr %56, align 8, !tbaa !12
  br label %233

233:                                              ; preds = %231, %229
  %234 = phi double [ %230, %229 ], [ %232, %231 ]
  store double %234, ptr %61, align 8, !tbaa !12
  %235 = load double, ptr %62, align 8, !tbaa !12
  store double %235, ptr %55, align 8, !tbaa !12
  %236 = load ptr, ptr %31, align 8, !tbaa !5
  %237 = load i64, ptr %59, align 8, !tbaa !9
  %238 = getelementptr inbounds double, ptr %236, i64 %237
  %239 = load double, ptr %238, align 8, !tbaa !12
  store double %239, ptr %56, align 8, !tbaa !12
  %240 = load double, ptr %55, align 8, !tbaa !12
  %241 = load double, ptr %56, align 8, !tbaa !12
  %242 = fcmp oge double %240, %241
  br i1 %242, label %243, label %245

243:                                              ; preds = %233
  %244 = load double, ptr %55, align 8, !tbaa !12
  br label %247

245:                                              ; preds = %233
  %246 = load double, ptr %56, align 8, !tbaa !12
  br label %247

247:                                              ; preds = %245, %243
  %248 = phi double [ %244, %243 ], [ %246, %245 ]
  store double %248, ptr %62, align 8, !tbaa !12
  br label %249

249:                                              ; preds = %247
  %250 = load i64, ptr %59, align 8, !tbaa !9
  %251 = add nsw i64 %250, 1
  store i64 %251, ptr %59, align 8, !tbaa !9
  br label %216, !llvm.loop !14

252:                                              ; preds = %216
  %253 = load double, ptr %61, align 8, !tbaa !12
  %254 = fcmp ole double %253, 0.000000e+00
  br i1 %254, label %255, label %257

255:                                              ; preds = %252
  %256 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -10, ptr %256, align 8, !tbaa !9
  br label %283

257:                                              ; preds = %252
  %258 = load ptr, ptr %24, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = icmp sgt i64 %259, 0
  br i1 %260, label %261, label %281

261:                                              ; preds = %257
  %262 = load double, ptr %61, align 8, !tbaa !12
  %263 = load double, ptr %70, align 8, !tbaa !12
  %264 = fcmp oge double %262, %263
  br i1 %264, label %265, label %267

265:                                              ; preds = %261
  %266 = load double, ptr %61, align 8, !tbaa !12
  br label %269

267:                                              ; preds = %261
  %268 = load double, ptr %70, align 8, !tbaa !12
  br label %269

269:                                              ; preds = %267, %265
  %270 = phi double [ %266, %265 ], [ %268, %267 ]
  %271 = load double, ptr %62, align 8, !tbaa !12
  %272 = load double, ptr %68, align 8, !tbaa !12
  %273 = fcmp ole double %271, %272
  br i1 %273, label %274, label %276

274:                                              ; preds = %269
  %275 = load double, ptr %62, align 8, !tbaa !12
  br label %278

276:                                              ; preds = %269
  %277 = load double, ptr %68, align 8, !tbaa !12
  br label %278

278:                                              ; preds = %276, %274
  %279 = phi double [ %275, %274 ], [ %277, %276 ]
  %280 = fdiv double %270, %279
  store double %280, ptr %63, align 8, !tbaa !12
  br label %282

281:                                              ; preds = %257
  store double 1.000000e+00, ptr %63, align 8, !tbaa !12
  br label %282

282:                                              ; preds = %281, %278
  br label %283

283:                                              ; preds = %282, %255
  br label %284

284:                                              ; preds = %283, %209
  %285 = load ptr, ptr %41, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  %287 = icmp eq i64 %286, 0
  br i1 %287, label %288, label %320

288:                                              ; preds = %284
  %289 = load ptr, ptr %33, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = load ptr, ptr %24, align 8, !tbaa !5
  %292 = load i64, ptr %291, align 8, !tbaa !9
  %293 = icmp sge i64 1, %292
  br i1 %293, label %294, label %295

294:                                              ; preds = %288
  br label %298

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

298:                                              ; preds = %295, %294
  %299 = phi i64 [ 1, %294 ], [ %297, %295 ]
  %300 = icmp slt i64 %290, %299
  br i1 %300, label %301, label %303

301:                                              ; preds = %298
  %302 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -12, ptr %302, align 8, !tbaa !9
  br label %319

303:                                              ; preds = %298
  %304 = load ptr, ptr %35, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = load ptr, ptr %24, align 8, !tbaa !5
  %307 = load i64, ptr %306, align 8, !tbaa !9
  %308 = icmp sge i64 1, %307
  br i1 %308, label %309, label %310

309:                                              ; preds = %303
  br label %313

310:                                              ; preds = %303
  %311 = load ptr, ptr %24, align 8, !tbaa !5
  %312 = load i64, ptr %311, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %310, %309
  %314 = phi i64 [ 1, %309 ], [ %312, %310 ]
  %315 = icmp slt i64 %305, %314
  br i1 %315, label %316, label %318

316:                                              ; preds = %313
  %317 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -14, ptr %317, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %316, %313
  br label %319

319:                                              ; preds = %318, %301
  br label %320

320:                                              ; preds = %319, %284
  br label %321

321:                                              ; preds = %320, %207
  br label %322

322:                                              ; preds = %321, %194
  br label %323

323:                                              ; preds = %322, %179
  br label %324

324:                                              ; preds = %323, %164
  br label %325

325:                                              ; preds = %324, %158
  br label %326

326:                                              ; preds = %325, %152
  br label %327

327:                                              ; preds = %326, %142
  %328 = load ptr, ptr %41, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = icmp ne i64 %329, 0
  br i1 %330, label %331, label %336

331:                                              ; preds = %327
  %332 = load ptr, ptr %41, align 8, !tbaa !5
  %333 = load i64, ptr %332, align 8, !tbaa !9
  %334 = sub nsw i64 0, %333
  store i64 %334, ptr %50, align 8, !tbaa !9
  %335 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %50)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %71, align 4
  br label %642

336:                                              ; preds = %327
  %337 = load i64, ptr %65, align 8, !tbaa !9
  %338 = icmp ne i64 %337, 0
  br i1 %338, label %339, label %364

339:                                              ; preds = %336
  %340 = load ptr, ptr %24, align 8, !tbaa !5
  %341 = load ptr, ptr %26, align 8, !tbaa !5
  %342 = load i64, ptr %43, align 8, !tbaa !9
  %343 = getelementptr inbounds %struct.doublecomplex, ptr %341, i64 %342
  %344 = load ptr, ptr %27, align 8, !tbaa !5
  %345 = load ptr, ptr %31, align 8, !tbaa !5
  %346 = getelementptr inbounds double, ptr %345, i64 1
  %347 = call i32 @zpoequ_(ptr noundef %340, ptr noundef %343, ptr noundef %344, ptr noundef %346, ptr noundef %63, ptr noundef %60, ptr noundef %69)
  %348 = load i64, ptr %69, align 8, !tbaa !9
  %349 = icmp eq i64 %348, 0
  br i1 %349, label %350, label %363

350:                                              ; preds = %339
  %351 = load ptr, ptr %23, align 8, !tbaa !5
  %352 = load ptr, ptr %24, align 8, !tbaa !5
  %353 = load ptr, ptr %26, align 8, !tbaa !5
  %354 = load i64, ptr %43, align 8, !tbaa !9
  %355 = getelementptr inbounds %struct.doublecomplex, ptr %353, i64 %354
  %356 = load ptr, ptr %27, align 8, !tbaa !5
  %357 = load ptr, ptr %31, align 8, !tbaa !5
  %358 = getelementptr inbounds double, ptr %357, i64 1
  %359 = load ptr, ptr %30, align 8, !tbaa !5
  %360 = call i32 @zlaqhe_(ptr noundef %351, ptr noundef %352, ptr noundef %355, ptr noundef %356, ptr noundef %358, ptr noundef %63, ptr noundef %60, ptr noundef %359)
  %361 = load ptr, ptr %30, align 8, !tbaa !5
  %362 = call i64 @lsame_(ptr noundef %361, ptr noundef @.str.2)
  store i64 %362, ptr %66, align 8, !tbaa !9
  br label %363

363:                                              ; preds = %350, %339
  br label %364

364:                                              ; preds = %363, %336
  %365 = load i64, ptr %66, align 8, !tbaa !9
  %366 = icmp ne i64 %365, 0
  br i1 %366, label %367, label %435

367:                                              ; preds = %364
  %368 = load ptr, ptr %25, align 8, !tbaa !5
  %369 = load i64, ptr %368, align 8, !tbaa !9
  store i64 %369, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %370

370:                                              ; preds = %431, %367
  %371 = load i64, ptr %59, align 8, !tbaa !9
  %372 = load i64, ptr %50, align 8, !tbaa !9
  %373 = icmp sle i64 %371, %372
  br i1 %373, label %374, label %434

374:                                              ; preds = %370
  %375 = load ptr, ptr %24, align 8, !tbaa !5
  %376 = load i64, ptr %375, align 8, !tbaa !9
  store i64 %376, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %377

377:                                              ; preds = %427, %374
  %378 = load i64, ptr %58, align 8, !tbaa !9
  %379 = load i64, ptr %51, align 8, !tbaa !9
  %380 = icmp sle i64 %378, %379
  br i1 %380, label %381, label %430

381:                                              ; preds = %377
  %382 = load i64, ptr %58, align 8, !tbaa !9
  %383 = load i64, ptr %59, align 8, !tbaa !9
  %384 = load i64, ptr %46, align 8, !tbaa !9
  %385 = mul nsw i64 %383, %384
  %386 = add nsw i64 %382, %385
  store i64 %386, ptr %52, align 8, !tbaa !9
  %387 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %387, ptr %53, align 8, !tbaa !9
  %388 = load i64, ptr %58, align 8, !tbaa !9
  %389 = load i64, ptr %59, align 8, !tbaa !9
  %390 = load i64, ptr %46, align 8, !tbaa !9
  %391 = mul nsw i64 %389, %390
  %392 = add nsw i64 %388, %391
  store i64 %392, ptr %54, align 8, !tbaa !9
  %393 = load ptr, ptr %31, align 8, !tbaa !5
  %394 = load i64, ptr %53, align 8, !tbaa !9
  %395 = getelementptr inbounds double, ptr %393, i64 %394
  %396 = load double, ptr %395, align 8, !tbaa !12
  %397 = load ptr, ptr %32, align 8, !tbaa !5
  %398 = load i64, ptr %54, align 8, !tbaa !9
  %399 = getelementptr inbounds %struct.doublecomplex, ptr %397, i64 %398
  %400 = getelementptr inbounds %struct.doublecomplex, ptr %399, i32 0, i32 0
  %401 = load double, ptr %400, align 8, !tbaa !16
  %402 = fmul double %396, %401
  %403 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %402, ptr %403, align 8, !tbaa !16
  %404 = load ptr, ptr %31, align 8, !tbaa !5
  %405 = load i64, ptr %53, align 8, !tbaa !9
  %406 = getelementptr inbounds double, ptr %404, i64 %405
  %407 = load double, ptr %406, align 8, !tbaa !12
  %408 = load ptr, ptr %32, align 8, !tbaa !5
  %409 = load i64, ptr %54, align 8, !tbaa !9
  %410 = getelementptr inbounds %struct.doublecomplex, ptr %408, i64 %409
  %411 = getelementptr inbounds %struct.doublecomplex, ptr %410, i32 0, i32 1
  %412 = load double, ptr %411, align 8, !tbaa !18
  %413 = fmul double %407, %412
  %414 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %413, ptr %414, align 8, !tbaa !18
  %415 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %416 = load double, ptr %415, align 8, !tbaa !16
  %417 = load ptr, ptr %32, align 8, !tbaa !5
  %418 = load i64, ptr %52, align 8, !tbaa !9
  %419 = getelementptr inbounds %struct.doublecomplex, ptr %417, i64 %418
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %419, i32 0, i32 0
  store double %416, ptr %420, align 8, !tbaa !16
  %421 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %422 = load double, ptr %421, align 8, !tbaa !18
  %423 = load ptr, ptr %32, align 8, !tbaa !5
  %424 = load i64, ptr %52, align 8, !tbaa !9
  %425 = getelementptr inbounds %struct.doublecomplex, ptr %423, i64 %424
  %426 = getelementptr inbounds %struct.doublecomplex, ptr %425, i32 0, i32 1
  store double %422, ptr %426, align 8, !tbaa !18
  br label %427

427:                                              ; preds = %381
  %428 = load i64, ptr %58, align 8, !tbaa !9
  %429 = add nsw i64 %428, 1
  store i64 %429, ptr %58, align 8, !tbaa !9
  br label %377, !llvm.loop !19

430:                                              ; preds = %377
  br label %431

431:                                              ; preds = %430
  %432 = load i64, ptr %59, align 8, !tbaa !9
  %433 = add nsw i64 %432, 1
  store i64 %433, ptr %59, align 8, !tbaa !9
  br label %370, !llvm.loop !20

434:                                              ; preds = %370
  br label %435

435:                                              ; preds = %434, %364
  %436 = load i64, ptr %67, align 8, !tbaa !9
  %437 = icmp ne i64 %436, 0
  br i1 %437, label %441, label %438

438:                                              ; preds = %435
  %439 = load i64, ptr %65, align 8, !tbaa !9
  %440 = icmp ne i64 %439, 0
  br i1 %440, label %441, label %468

441:                                              ; preds = %438, %435
  %442 = load ptr, ptr %23, align 8, !tbaa !5
  %443 = load ptr, ptr %24, align 8, !tbaa !5
  %444 = load ptr, ptr %24, align 8, !tbaa !5
  %445 = load ptr, ptr %26, align 8, !tbaa !5
  %446 = load i64, ptr %43, align 8, !tbaa !9
  %447 = getelementptr inbounds %struct.doublecomplex, ptr %445, i64 %446
  %448 = load ptr, ptr %27, align 8, !tbaa !5
  %449 = load ptr, ptr %28, align 8, !tbaa !5
  %450 = load i64, ptr %45, align 8, !tbaa !9
  %451 = getelementptr inbounds %struct.doublecomplex, ptr %449, i64 %450
  %452 = load ptr, ptr %29, align 8, !tbaa !5
  %453 = call i32 @zlacpy_(ptr noundef %442, ptr noundef %443, ptr noundef %444, ptr noundef %447, ptr noundef %448, ptr noundef %451, ptr noundef %452)
  %454 = load ptr, ptr %23, align 8, !tbaa !5
  %455 = load ptr, ptr %24, align 8, !tbaa !5
  %456 = load ptr, ptr %28, align 8, !tbaa !5
  %457 = load i64, ptr %45, align 8, !tbaa !9
  %458 = getelementptr inbounds %struct.doublecomplex, ptr %456, i64 %457
  %459 = load ptr, ptr %29, align 8, !tbaa !5
  %460 = load ptr, ptr %41, align 8, !tbaa !5
  %461 = call i32 @zpotrf_(ptr noundef %454, ptr noundef %455, ptr noundef %458, ptr noundef %459, ptr noundef %460)
  %462 = load ptr, ptr %41, align 8, !tbaa !5
  %463 = load i64, ptr %462, align 8, !tbaa !9
  %464 = icmp sgt i64 %463, 0
  br i1 %464, label %465, label %467

465:                                              ; preds = %441
  %466 = load ptr, ptr %36, align 8, !tbaa !5
  store double 0.000000e+00, ptr %466, align 8, !tbaa !12
  store i32 0, ptr %21, align 4
  store i32 1, ptr %71, align 4
  br label %642

467:                                              ; preds = %441
  br label %468

468:                                              ; preds = %467, %438
  %469 = load ptr, ptr %23, align 8, !tbaa !5
  %470 = load ptr, ptr %24, align 8, !tbaa !5
  %471 = load ptr, ptr %26, align 8, !tbaa !5
  %472 = load i64, ptr %43, align 8, !tbaa !9
  %473 = getelementptr inbounds %struct.doublecomplex, ptr %471, i64 %472
  %474 = load ptr, ptr %27, align 8, !tbaa !5
  %475 = load ptr, ptr %40, align 8, !tbaa !5
  %476 = getelementptr inbounds double, ptr %475, i64 1
  %477 = call double @zlanhe_(ptr noundef @.str.8, ptr noundef %469, ptr noundef %470, ptr noundef %473, ptr noundef %474, ptr noundef %476)
  store double %477, ptr %64, align 8, !tbaa !12
  %478 = load ptr, ptr %23, align 8, !tbaa !5
  %479 = load ptr, ptr %24, align 8, !tbaa !5
  %480 = load ptr, ptr %28, align 8, !tbaa !5
  %481 = load i64, ptr %45, align 8, !tbaa !9
  %482 = getelementptr inbounds %struct.doublecomplex, ptr %480, i64 %481
  %483 = load ptr, ptr %29, align 8, !tbaa !5
  %484 = load ptr, ptr %36, align 8, !tbaa !5
  %485 = load ptr, ptr %39, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.doublecomplex, ptr %485, i64 1
  %487 = load ptr, ptr %40, align 8, !tbaa !5
  %488 = getelementptr inbounds double, ptr %487, i64 1
  %489 = load ptr, ptr %41, align 8, !tbaa !5
  %490 = call i32 @zpocon_(ptr noundef %478, ptr noundef %479, ptr noundef %482, ptr noundef %483, ptr noundef %64, ptr noundef %484, ptr noundef %486, ptr noundef %488, ptr noundef %489)
  %491 = load ptr, ptr %24, align 8, !tbaa !5
  %492 = load ptr, ptr %25, align 8, !tbaa !5
  %493 = load ptr, ptr %32, align 8, !tbaa !5
  %494 = load i64, ptr %47, align 8, !tbaa !9
  %495 = getelementptr inbounds %struct.doublecomplex, ptr %493, i64 %494
  %496 = load ptr, ptr %33, align 8, !tbaa !5
  %497 = load ptr, ptr %34, align 8, !tbaa !5
  %498 = load i64, ptr %49, align 8, !tbaa !9
  %499 = getelementptr inbounds %struct.doublecomplex, ptr %497, i64 %498
  %500 = load ptr, ptr %35, align 8, !tbaa !5
  %501 = call i32 @zlacpy_(ptr noundef @.str.9, ptr noundef %491, ptr noundef %492, ptr noundef %495, ptr noundef %496, ptr noundef %499, ptr noundef %500)
  %502 = load ptr, ptr %23, align 8, !tbaa !5
  %503 = load ptr, ptr %24, align 8, !tbaa !5
  %504 = load ptr, ptr %25, align 8, !tbaa !5
  %505 = load ptr, ptr %28, align 8, !tbaa !5
  %506 = load i64, ptr %45, align 8, !tbaa !9
  %507 = getelementptr inbounds %struct.doublecomplex, ptr %505, i64 %506
  %508 = load ptr, ptr %29, align 8, !tbaa !5
  %509 = load ptr, ptr %34, align 8, !tbaa !5
  %510 = load i64, ptr %49, align 8, !tbaa !9
  %511 = getelementptr inbounds %struct.doublecomplex, ptr %509, i64 %510
  %512 = load ptr, ptr %35, align 8, !tbaa !5
  %513 = load ptr, ptr %41, align 8, !tbaa !5
  %514 = call i32 @zpotrs_(ptr noundef %502, ptr noundef %503, ptr noundef %504, ptr noundef %507, ptr noundef %508, ptr noundef %511, ptr noundef %512, ptr noundef %513)
  %515 = load ptr, ptr %23, align 8, !tbaa !5
  %516 = load ptr, ptr %24, align 8, !tbaa !5
  %517 = load ptr, ptr %25, align 8, !tbaa !5
  %518 = load ptr, ptr %26, align 8, !tbaa !5
  %519 = load i64, ptr %43, align 8, !tbaa !9
  %520 = getelementptr inbounds %struct.doublecomplex, ptr %518, i64 %519
  %521 = load ptr, ptr %27, align 8, !tbaa !5
  %522 = load ptr, ptr %28, align 8, !tbaa !5
  %523 = load i64, ptr %45, align 8, !tbaa !9
  %524 = getelementptr inbounds %struct.doublecomplex, ptr %522, i64 %523
  %525 = load ptr, ptr %29, align 8, !tbaa !5
  %526 = load ptr, ptr %32, align 8, !tbaa !5
  %527 = load i64, ptr %47, align 8, !tbaa !9
  %528 = getelementptr inbounds %struct.doublecomplex, ptr %526, i64 %527
  %529 = load ptr, ptr %33, align 8, !tbaa !5
  %530 = load ptr, ptr %34, align 8, !tbaa !5
  %531 = load i64, ptr %49, align 8, !tbaa !9
  %532 = getelementptr inbounds %struct.doublecomplex, ptr %530, i64 %531
  %533 = load ptr, ptr %35, align 8, !tbaa !5
  %534 = load ptr, ptr %37, align 8, !tbaa !5
  %535 = getelementptr inbounds double, ptr %534, i64 1
  %536 = load ptr, ptr %38, align 8, !tbaa !5
  %537 = getelementptr inbounds double, ptr %536, i64 1
  %538 = load ptr, ptr %39, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.doublecomplex, ptr %538, i64 1
  %540 = load ptr, ptr %40, align 8, !tbaa !5
  %541 = getelementptr inbounds double, ptr %540, i64 1
  %542 = load ptr, ptr %41, align 8, !tbaa !5
  %543 = call i32 @zporfs_(ptr noundef %515, ptr noundef %516, ptr noundef %517, ptr noundef %520, ptr noundef %521, ptr noundef %524, ptr noundef %525, ptr noundef %528, ptr noundef %529, ptr noundef %532, ptr noundef %533, ptr noundef %535, ptr noundef %537, ptr noundef %539, ptr noundef %541, ptr noundef %542)
  %544 = load i64, ptr %66, align 8, !tbaa !9
  %545 = icmp ne i64 %544, 0
  br i1 %545, label %546, label %631

546:                                              ; preds = %468
  %547 = load ptr, ptr %25, align 8, !tbaa !5
  %548 = load i64, ptr %547, align 8, !tbaa !9
  store i64 %548, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %549

549:                                              ; preds = %610, %546
  %550 = load i64, ptr %59, align 8, !tbaa !9
  %551 = load i64, ptr %50, align 8, !tbaa !9
  %552 = icmp sle i64 %550, %551
  br i1 %552, label %553, label %613

553:                                              ; preds = %549
  %554 = load ptr, ptr %24, align 8, !tbaa !5
  %555 = load i64, ptr %554, align 8, !tbaa !9
  store i64 %555, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %556

556:                                              ; preds = %606, %553
  %557 = load i64, ptr %58, align 8, !tbaa !9
  %558 = load i64, ptr %51, align 8, !tbaa !9
  %559 = icmp sle i64 %557, %558
  br i1 %559, label %560, label %609

560:                                              ; preds = %556
  %561 = load i64, ptr %58, align 8, !tbaa !9
  %562 = load i64, ptr %59, align 8, !tbaa !9
  %563 = load i64, ptr %48, align 8, !tbaa !9
  %564 = mul nsw i64 %562, %563
  %565 = add nsw i64 %561, %564
  store i64 %565, ptr %52, align 8, !tbaa !9
  %566 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %566, ptr %53, align 8, !tbaa !9
  %567 = load i64, ptr %58, align 8, !tbaa !9
  %568 = load i64, ptr %59, align 8, !tbaa !9
  %569 = load i64, ptr %48, align 8, !tbaa !9
  %570 = mul nsw i64 %568, %569
  %571 = add nsw i64 %567, %570
  store i64 %571, ptr %54, align 8, !tbaa !9
  %572 = load ptr, ptr %31, align 8, !tbaa !5
  %573 = load i64, ptr %53, align 8, !tbaa !9
  %574 = getelementptr inbounds double, ptr %572, i64 %573
  %575 = load double, ptr %574, align 8, !tbaa !12
  %576 = load ptr, ptr %34, align 8, !tbaa !5
  %577 = load i64, ptr %54, align 8, !tbaa !9
  %578 = getelementptr inbounds %struct.doublecomplex, ptr %576, i64 %577
  %579 = getelementptr inbounds %struct.doublecomplex, ptr %578, i32 0, i32 0
  %580 = load double, ptr %579, align 8, !tbaa !16
  %581 = fmul double %575, %580
  %582 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  store double %581, ptr %582, align 8, !tbaa !16
  %583 = load ptr, ptr %31, align 8, !tbaa !5
  %584 = load i64, ptr %53, align 8, !tbaa !9
  %585 = getelementptr inbounds double, ptr %583, i64 %584
  %586 = load double, ptr %585, align 8, !tbaa !12
  %587 = load ptr, ptr %34, align 8, !tbaa !5
  %588 = load i64, ptr %54, align 8, !tbaa !9
  %589 = getelementptr inbounds %struct.doublecomplex, ptr %587, i64 %588
  %590 = getelementptr inbounds %struct.doublecomplex, ptr %589, i32 0, i32 1
  %591 = load double, ptr %590, align 8, !tbaa !18
  %592 = fmul double %586, %591
  %593 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  store double %592, ptr %593, align 8, !tbaa !18
  %594 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 0
  %595 = load double, ptr %594, align 8, !tbaa !16
  %596 = load ptr, ptr %34, align 8, !tbaa !5
  %597 = load i64, ptr %52, align 8, !tbaa !9
  %598 = getelementptr inbounds %struct.doublecomplex, ptr %596, i64 %597
  %599 = getelementptr inbounds %struct.doublecomplex, ptr %598, i32 0, i32 0
  store double %595, ptr %599, align 8, !tbaa !16
  %600 = getelementptr inbounds %struct.doublecomplex, ptr %57, i32 0, i32 1
  %601 = load double, ptr %600, align 8, !tbaa !18
  %602 = load ptr, ptr %34, align 8, !tbaa !5
  %603 = load i64, ptr %52, align 8, !tbaa !9
  %604 = getelementptr inbounds %struct.doublecomplex, ptr %602, i64 %603
  %605 = getelementptr inbounds %struct.doublecomplex, ptr %604, i32 0, i32 1
  store double %601, ptr %605, align 8, !tbaa !18
  br label %606

606:                                              ; preds = %560
  %607 = load i64, ptr %58, align 8, !tbaa !9
  %608 = add nsw i64 %607, 1
  store i64 %608, ptr %58, align 8, !tbaa !9
  br label %556, !llvm.loop !21

609:                                              ; preds = %556
  br label %610

610:                                              ; preds = %609
  %611 = load i64, ptr %59, align 8, !tbaa !9
  %612 = add nsw i64 %611, 1
  store i64 %612, ptr %59, align 8, !tbaa !9
  br label %549, !llvm.loop !22

613:                                              ; preds = %549
  %614 = load ptr, ptr %25, align 8, !tbaa !5
  %615 = load i64, ptr %614, align 8, !tbaa !9
  store i64 %615, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %616

616:                                              ; preds = %627, %613
  %617 = load i64, ptr %59, align 8, !tbaa !9
  %618 = load i64, ptr %50, align 8, !tbaa !9
  %619 = icmp sle i64 %617, %618
  br i1 %619, label %620, label %630

620:                                              ; preds = %616
  %621 = load double, ptr %63, align 8, !tbaa !12
  %622 = load ptr, ptr %37, align 8, !tbaa !5
  %623 = load i64, ptr %59, align 8, !tbaa !9
  %624 = getelementptr inbounds double, ptr %622, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !12
  %626 = fdiv double %625, %621
  store double %626, ptr %624, align 8, !tbaa !12
  br label %627

627:                                              ; preds = %620
  %628 = load i64, ptr %59, align 8, !tbaa !9
  %629 = add nsw i64 %628, 1
  store i64 %629, ptr %59, align 8, !tbaa !9
  br label %616, !llvm.loop !23

630:                                              ; preds = %616
  br label %631

631:                                              ; preds = %630, %468
  %632 = load ptr, ptr %36, align 8, !tbaa !5
  %633 = load double, ptr %632, align 8, !tbaa !12
  %634 = call double @dlamch_(ptr noundef @.str.10)
  %635 = fcmp olt double %633, %634
  br i1 %635, label %636, label %641

636:                                              ; preds = %631
  %637 = load ptr, ptr %24, align 8, !tbaa !5
  %638 = load i64, ptr %637, align 8, !tbaa !9
  %639 = add nsw i64 %638, 1
  %640 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %639, ptr %640, align 8, !tbaa !9
  br label %641

641:                                              ; preds = %636, %631
  store i32 0, ptr %21, align 4
  store i32 1, ptr %71, align 4
  br label %642

642:                                              ; preds = %641, %465, %331
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  %643 = load i32, ptr %21, align 4
  ret i32 %643
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !13, i64 0}
!17 = !{!"", !13, i64 0, !13, i64 8}
!18 = !{!17, !13, i64 8}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}


; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zposvx_(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) local_unnamed_addr #0 {
  %21 = alloca i64, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  %26 = getelementptr inbounds i8, ptr %9, i64 -8
  %27 = load i64, ptr %11, align 8, !tbaa !5
  %28 = xor i64 %27, -1
  %29 = getelementptr inbounds %struct.doublecomplex, ptr %10, i64 %28
  %30 = load i64, ptr %13, align 8, !tbaa !5
  %31 = xor i64 %30, -1
  %32 = getelementptr inbounds %struct.doublecomplex, ptr %12, i64 %31
  %33 = getelementptr inbounds i8, ptr %15, i64 -8
  store i64 0, ptr %19, align 8, !tbaa !5
  %34 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %35 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %36 = icmp ne i64 %34, 0
  %37 = icmp ne i64 %35, 0
  %or.cond = select i1 %36, i1 true, i1 %37
  br i1 %or.cond, label %.thread, label %38

.thread:                                          ; preds = %20
  store i8 78, ptr %8, align 1, !tbaa !9
  br label %43

38:                                               ; preds = %20
  %39 = tail call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.2) #4
  %40 = tail call double @dlamch_(ptr noundef nonnull @.str.3) #4
  %41 = fdiv double 1.000000e+00, %40
  %42 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %.not = icmp eq i64 %42, 0
  br i1 %.not, label %.thread289.sink.split, label %43

43:                                               ; preds = %.thread, %38
  %.0284 = phi double [ undef, %.thread ], [ %40, %38 ]
  %.0250283 = phi double [ undef, %.thread ], [ %41, %38 ]
  %.0252282 = phi i64 [ 0, %.thread ], [ %39, %38 ]
  %44 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not264 = icmp eq i64 %44, 0
  br i1 %.not264, label %45, label %47

45:                                               ; preds = %43
  %46 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #4
  %.not265 = icmp eq i64 %46, 0
  br i1 %.not265, label %.thread289.sink.split, label %47

47:                                               ; preds = %45, %43
  %48 = load i64, ptr %2, align 8, !tbaa !5
  %49 = icmp slt i64 %48, 0
  br i1 %49, label %.thread289.sink.split, label %50

50:                                               ; preds = %47
  %51 = load i64, ptr %3, align 8, !tbaa !5
  %52 = icmp slt i64 %51, 0
  br i1 %52, label %.thread289.sink.split, label %53

53:                                               ; preds = %50
  %54 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %48, i64 1)
  %55 = icmp slt i64 %54, %spec.select
  br i1 %55, label %.thread289.sink.split, label %56

56:                                               ; preds = %53
  %57 = load i64, ptr %7, align 8, !tbaa !5
  %58 = icmp slt i64 %57, %spec.select
  br i1 %58, label %.thread289.sink.split, label %59

59:                                               ; preds = %56
  %60 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %61 = icmp eq i64 %60, 0
  %62 = icmp ne i64 %.0252282, 0
  %or.cond5 = select i1 %61, i1 true, i1 %62
  br i1 %or.cond5, label %65, label %63

63:                                               ; preds = %59
  %64 = tail call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str) #4
  %.not266 = icmp eq i64 %64, 0
  br i1 %.not266, label %.thread289.sink.split, label %.thread285

65:                                               ; preds = %59
  br i1 %62, label %66, label %.thread285

66:                                               ; preds = %65
  %67 = load i64, ptr %2, align 8, !tbaa !5
  %.not267293 = icmp slt i64 %67, 1
  br i1 %.not267293, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %66
  %xtraiter = and i64 %67, 1
  %68 = icmp eq i64 %67, 1
  br i1 %68, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %67, 9223372036854775806
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0253296 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %80, %.lr.ph ]
  %.0254295 = phi double [ %.0250283, %.lr.ph.preheader.new ], [ %78, %.lr.ph ]
  %.0255294 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %81, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %69 = getelementptr inbounds double, ptr %26, i64 %.0255294
  %70 = load double, ptr %69, align 8, !tbaa !10
  %71 = fcmp ole double %.0254295, %70
  %72 = select i1 %71, double %.0254295, double %70
  %73 = fcmp oge double %.0253296, %70
  %74 = select i1 %73, double %.0253296, double %70
  %75 = getelementptr double, ptr %9, i64 %.0255294
  %76 = load double, ptr %75, align 8, !tbaa !10
  %77 = fcmp ole double %72, %76
  %78 = select i1 %77, double %72, double %76
  %79 = fcmp oge double %74, %76
  %80 = select i1 %79, double %74, double %76
  %81 = add nuw i64 %.0255294, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa392.ph = phi double [ poison, %.lr.ph.preheader ], [ %78, %.lr.ph ]
  %.lcssa.ph = phi double [ poison, %.lr.ph.preheader ], [ %80, %.lr.ph ]
  %.0253296.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %80, %.lr.ph ]
  %.0254295.unr = phi double [ %.0250283, %.lr.ph.preheader ], [ %78, %.lr.ph ]
  %.0255294.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %81, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %82 = getelementptr inbounds double, ptr %26, i64 %.0255294.unr
  %83 = load double, ptr %82, align 8, !tbaa !10
  %84 = fcmp ole double %.0254295.unr, %83
  %85 = select i1 %84, double %.0254295.unr, double %83
  %86 = fcmp oge double %.0253296.unr, %83
  %87 = select i1 %86, double %.0253296.unr, double %83
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %66
  %.0254.lcssa = phi double [ %.0250283, %66 ], [ %.lcssa392.ph, %._crit_edge.loopexit.unr-lcssa ], [ %85, %.lr.ph.epil ]
  %.0253.lcssa = phi double [ 0.000000e+00, %66 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %87, %.lr.ph.epil ]
  %88 = fcmp ugt double %.0254.lcssa, 0.000000e+00
  br i1 %88, label %89, label %.thread289.sink.split

89:                                               ; preds = %._crit_edge
  %90 = icmp sgt i64 %67, 0
  br i1 %90, label %91, label %97

91:                                               ; preds = %89
  %92 = fcmp oge double %.0254.lcssa, %.0284
  %93 = select i1 %92, double %.0254.lcssa, double %.0284
  %94 = fcmp ole double %.0253.lcssa, %.0250283
  %95 = select i1 %94, double %.0253.lcssa, double %.0250283
  %96 = fdiv double %93, %95
  store double %96, ptr %23, align 8, !tbaa !10
  br label %.thread285

97:                                               ; preds = %89
  store double 1.000000e+00, ptr %23, align 8, !tbaa !10
  br label %.thread285

.thread285:                                       ; preds = %63, %97, %91, %65
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %98 = icmp eq i64 %.pr, 0
  br i1 %98, label %99, label %.thread289

99:                                               ; preds = %.thread285
  %100 = load i64, ptr %11, align 8, !tbaa !5
  %101 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select276 = tail call i64 @llvm.smax.i64(i64 %101, i64 1)
  %102 = icmp slt i64 %100, %spec.select276
  br i1 %102, label %.thread289.sink.split, label %103

103:                                              ; preds = %99
  %104 = load i64, ptr %13, align 8, !tbaa !5
  %105 = icmp slt i64 %104, %spec.select276
  br i1 %105, label %.thread289.sink.split, label %109

.thread289.sink.split:                            ; preds = %103, %99, %._crit_edge, %63, %56, %53, %50, %47, %45, %38
  %.sink = phi i64 [ -1, %38 ], [ -2, %45 ], [ -3, %47 ], [ -4, %50 ], [ -6, %53 ], [ -8, %56 ], [ -9, %63 ], [ -10, %._crit_edge ], [ -12, %99 ], [ -14, %103 ]
  store i64 %.sink, ptr %19, align 8, !tbaa !5
  br label %.thread289

.thread289:                                       ; preds = %.thread289.sink.split, %.thread285
  %106 = phi i64 [ %.pr, %.thread285 ], [ %.sink, %.thread289.sink.split ]
  %107 = sub nsw i64 0, %106
  store i64 %107, ptr %21, align 8, !tbaa !5
  %108 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %21) #4
  br label %240

109:                                              ; preds = %103
  br i1 %37, label %110, label %117

110:                                              ; preds = %109
  %111 = call i32 @zpoequ_(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef nonnull %25) #4
  %112 = load i64, ptr %25, align 8, !tbaa !5
  %113 = icmp eq i64 %112, 0
  br i1 %113, label %114, label %117

114:                                              ; preds = %110
  %115 = call i32 @zlaqhe_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef %8) #4
  %116 = call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.2) #4
  br label %117

117:                                              ; preds = %110, %114, %109
  %.1 = phi i64 [ %116, %114 ], [ %.0252282, %110 ], [ %.0252282, %109 ]
  %.not269 = icmp eq i64 %.1, 0
  br i1 %.not269, label %.loopexit292, label %118

118:                                              ; preds = %117
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %.not270303 = icmp slt i64 %119, 1
  br i1 %.not270303, label %.loopexit292, label %.lr.ph306

.lr.ph306:                                        ; preds = %118
  %120 = load i64, ptr %2, align 8, !tbaa !5
  %.not274298 = icmp slt i64 %120, 1
  br i1 %.not274298, label %.loopexit292, label %.lr.ph301.preheader

.lr.ph301.preheader:                              ; preds = %.lr.ph306
  %121 = add nsw i64 %120, -1
  %122 = shl i64 %27, 4
  %123 = add nuw i64 %119, 1152921504606846975
  %124 = mul i64 %27, %123
  %125 = add i64 %124, %120
  %126 = shl i64 %125, 4
  %scevgep338 = getelementptr i8, ptr %10, i64 %126
  %127 = shl i64 %120, 3
  %scevgep339 = getelementptr i8, ptr %9, i64 %127
  %min.iters.check = icmp ult i64 %120, 12
  %mul.result = shl i64 %121, 4
  %mul.result336 = shl i64 %121, 4
  %mul.overflow337 = icmp ugt i64 %121, 1152921504606846975
  %bound0 = icmp ugt ptr %scevgep339, %10
  %bound1 = icmp ugt ptr %scevgep338, %9
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %27, 576460752303423488
  %stride.check = icmp ne i64 %.mask, 0
  %128 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %120, 2305843009213693950
  %ind.end = or i64 %120, 1
  %cmp.n = icmp eq i64 %120, %n.vec
  %xtraiter395 = and i64 %120, 1
  %lcmp.mod396.not = icmp eq i64 %xtraiter395, 0
  br label %.lr.ph301

.lr.ph301:                                        ; preds = %.lr.ph301.preheader, %._crit_edge302
  %indvar = phi i64 [ 0, %.lr.ph301.preheader ], [ %indvar.next, %._crit_edge302 ]
  %.1256304 = phi i64 [ 1, %.lr.ph301.preheader ], [ %165, %._crit_edge302 ]
  %129 = mul nsw i64 %.1256304, %27
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %29, i64 %129
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph301
  %130 = mul i64 %122, %indvar
  %scevgep334 = getelementptr i8, ptr %10, i64 %130
  %131 = or disjoint i64 %130, 8
  %scevgep = getelementptr i8, ptr %10, i64 %131
  %132 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %133 = icmp ult ptr %132, %scevgep
  %134 = getelementptr i8, ptr %scevgep334, i64 %mul.result336
  %135 = icmp ult ptr %134, %scevgep334
  %136 = or i1 %135, %mul.overflow337
  %137 = or i1 %133, %136
  %brmerge = select i1 %137, i1 true, i1 %128
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.scevcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.scevcheck ]
  %offset.idx = or disjoint i64 %index, 1
  %138 = getelementptr double, ptr %9, i64 %index
  %wide.load = load <2 x double>, ptr %138, align 8, !tbaa !10, !alias.scope !14
  %139 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %offset.idx
  %wide.vec = load <4 x double>, ptr %139, align 8, !tbaa !10
  %strided.vec = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec340 = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %140 = fmul <2 x double> %wide.load, %strided.vec
  %141 = fmul <2 x double> %wide.load, %strided.vec340
  %interleaved.vec = shufflevector <2 x double> %140, <2 x double> %141, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %139, align 8, !tbaa !10
  %index.next = add nuw i64 %index, 2
  %142 = icmp eq i64 %index.next, %n.vec
  br i1 %142, label %middle.block, label %vector.body, !llvm.loop !17

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

scalar.ph.preheader:                              ; preds = %vector.scevcheck, %middle.block, %.lr.ph301
  %.0257299.ph = phi i64 [ 1, %vector.scevcheck ], [ 1, %.lr.ph301 ], [ %ind.end, %middle.block ]
  br i1 %lcmp.mod396.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %143 = getelementptr inbounds double, ptr %26, i64 %.0257299.ph
  %144 = load double, ptr %143, align 8, !tbaa !10
  %gep.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.0257299.ph
  %145 = load <2 x double>, ptr %gep.prol, align 8, !tbaa !10
  %146 = insertelement <2 x double> poison, double %144, i64 0
  %147 = shufflevector <2 x double> %146, <2 x double> poison, <2 x i32> zeroinitializer
  %148 = fmul <2 x double> %147, %145
  store <2 x double> %148, ptr %gep.prol, align 8, !tbaa !10
  %149 = add nuw nsw i64 %.0257299.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0257299.unr = phi i64 [ %.0257299.ph, %scalar.ph.preheader ], [ %149, %scalar.ph.prol ]
  %150 = icmp eq i64 %120, %.0257299.ph
  br i1 %150, label %._crit_edge302, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.0257299 = phi i64 [ %164, %scalar.ph ], [ %.0257299.unr, %scalar.ph.prol.loopexit ]
  %151 = getelementptr inbounds double, ptr %26, i64 %.0257299
  %152 = load double, ptr %151, align 8, !tbaa !10
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.0257299
  %153 = load <2 x double>, ptr %gep, align 8, !tbaa !10
  %154 = insertelement <2 x double> poison, double %152, i64 0
  %155 = shufflevector <2 x double> %154, <2 x double> poison, <2 x i32> zeroinitializer
  %156 = fmul <2 x double> %155, %153
  store <2 x double> %156, ptr %gep, align 8, !tbaa !10
  %157 = add nuw i64 %.0257299, 1
  %158 = getelementptr double, ptr %9, i64 %.0257299
  %159 = load double, ptr %158, align 8, !tbaa !10
  %gep.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %157
  %160 = load <2 x double>, ptr %gep.1, align 8, !tbaa !10
  %161 = insertelement <2 x double> poison, double %159, i64 0
  %162 = shufflevector <2 x double> %161, <2 x double> poison, <2 x i32> zeroinitializer
  %163 = fmul <2 x double> %162, %160
  store <2 x double> %163, ptr %gep.1, align 8, !tbaa !10
  %164 = add nuw i64 %.0257299, 2
  %exitcond326.not.1 = icmp eq i64 %157, %120
  br i1 %exitcond326.not.1, label %._crit_edge302, label %scalar.ph, !llvm.loop !20

._crit_edge302:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %165 = add nuw i64 %.1256304, 1
  %exitcond327.not = icmp eq i64 %.1256304, %119
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond327.not, label %.loopexit292, label %.lr.ph301, !llvm.loop !21

.loopexit292:                                     ; preds = %._crit_edge302, %.lr.ph306, %118, %117
  br i1 %or.cond, label %166, label %172

166:                                              ; preds = %.loopexit292
  %167 = call i32 @zlacpy_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7) #4
  %168 = call i32 @zpotrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %19) #4
  %169 = load i64, ptr %19, align 8, !tbaa !5
  %170 = icmp sgt i64 %169, 0
  br i1 %170, label %171, label %172

171:                                              ; preds = %166
  store double 0.000000e+00, ptr %14, align 8, !tbaa !10
  br label %240

172:                                              ; preds = %166, %.loopexit292
  %173 = call double @zlanhe_(ptr noundef nonnull @.str.8, ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %18) #4
  store double %173, ptr %24, align 8, !tbaa !10
  %174 = call i32 @zpocon_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %24, ptr noundef %14, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %19) #4
  %175 = call i32 @zlacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13) #4
  %176 = call i32 @zpotrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %19) #4
  %177 = call i32 @zporfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %19) #4
  br i1 %.not269, label %.loopexit, label %178

178:                                              ; preds = %172
  %179 = load i64, ptr %3, align 8, !tbaa !5
  %.not271314 = icmp slt i64 %179, 1
  br i1 %.not271314, label %.loopexit, label %.lr.ph317

.lr.ph317:                                        ; preds = %178
  %180 = load i64, ptr %2, align 8, !tbaa !5
  %.not273307 = icmp slt i64 %180, 1
  br i1 %.not273307, label %.lr.ph322, label %.lr.ph310.preheader

.lr.ph310.preheader:                              ; preds = %.lr.ph317
  %181 = add nsw i64 %180, -1
  %182 = shl i64 %30, 4
  %183 = add nuw i64 %179, 1152921504606846975
  %184 = mul i64 %30, %183
  %185 = add i64 %184, %180
  %186 = shl i64 %185, 4
  %scevgep353 = getelementptr i8, ptr %12, i64 %186
  %187 = shl i64 %180, 3
  %scevgep354 = getelementptr i8, ptr %9, i64 %187
  %min.iters.check361 = icmp ult i64 %180, 12
  %mul.result346 = shl i64 %181, 4
  %mul.result350 = shl i64 %181, 4
  %mul.overflow351 = icmp ugt i64 %181, 1152921504606846975
  %bound0355 = icmp ugt ptr %scevgep354, %12
  %bound1356 = icmp ugt ptr %scevgep353, %9
  %found.conflict357 = and i1 %bound0355, %bound1356
  %.mask391 = and i64 %30, 576460752303423488
  %stride.check358 = icmp ne i64 %.mask391, 0
  %188 = or i1 %found.conflict357, %stride.check358
  %n.vec364 = and i64 %180, 2305843009213693950
  %ind.end365 = or i64 %180, 1
  %cmp.n376 = icmp eq i64 %180, %n.vec364
  %xtraiter397 = and i64 %180, 1
  %lcmp.mod398.not = icmp eq i64 %xtraiter397, 0
  br label %.lr.ph310

.lr.ph310:                                        ; preds = %.lr.ph310.preheader, %._crit_edge311
  %indvar342 = phi i64 [ 0, %.lr.ph310.preheader ], [ %indvar.next343, %._crit_edge311 ]
  %.2315 = phi i64 [ 1, %.lr.ph310.preheader ], [ %225, %._crit_edge311 ]
  %189 = mul nsw i64 %.2315, %30
  %invariant.gep312 = getelementptr %struct.doublecomplex, ptr %32, i64 %189
  br i1 %min.iters.check361, label %scalar.ph360.preheader, label %vector.scevcheck341

vector.scevcheck341:                              ; preds = %.lr.ph310
  %190 = mul i64 %182, %indvar342
  %scevgep348 = getelementptr i8, ptr %12, i64 %190
  %191 = or disjoint i64 %190, 8
  %scevgep344 = getelementptr i8, ptr %12, i64 %191
  %192 = getelementptr i8, ptr %scevgep344, i64 %mul.result346
  %193 = icmp ult ptr %192, %scevgep344
  %194 = getelementptr i8, ptr %scevgep348, i64 %mul.result350
  %195 = icmp ult ptr %194, %scevgep348
  %196 = or i1 %195, %mul.overflow351
  %197 = or i1 %193, %196
  %brmerge402 = select i1 %197, i1 true, i1 %188
  br i1 %brmerge402, label %scalar.ph360.preheader, label %vector.body367

vector.body367:                                   ; preds = %vector.scevcheck341, %vector.body367
  %index368 = phi i64 [ %index.next375, %vector.body367 ], [ 0, %vector.scevcheck341 ]
  %offset.idx369 = or disjoint i64 %index368, 1
  %198 = getelementptr double, ptr %9, i64 %index368
  %wide.load370 = load <2 x double>, ptr %198, align 8, !tbaa !10, !alias.scope !22
  %199 = getelementptr %struct.doublecomplex, ptr %invariant.gep312, i64 %offset.idx369
  %wide.vec371 = load <4 x double>, ptr %199, align 8, !tbaa !10
  %strided.vec372 = shufflevector <4 x double> %wide.vec371, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec373 = shufflevector <4 x double> %wide.vec371, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %200 = fmul <2 x double> %wide.load370, %strided.vec372
  %201 = fmul <2 x double> %wide.load370, %strided.vec373
  %interleaved.vec374 = shufflevector <2 x double> %200, <2 x double> %201, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec374, ptr %199, align 8, !tbaa !10
  %index.next375 = add nuw i64 %index368, 2
  %202 = icmp eq i64 %index.next375, %n.vec364
  br i1 %202, label %middle.block359, label %vector.body367, !llvm.loop !25

middle.block359:                                  ; preds = %vector.body367
  br i1 %cmp.n376, label %._crit_edge311, label %scalar.ph360.preheader

scalar.ph360.preheader:                           ; preds = %vector.scevcheck341, %middle.block359, %.lr.ph310
  %.1258308.ph = phi i64 [ 1, %vector.scevcheck341 ], [ 1, %.lr.ph310 ], [ %ind.end365, %middle.block359 ]
  br i1 %lcmp.mod398.not, label %scalar.ph360.prol.loopexit, label %scalar.ph360.prol

scalar.ph360.prol:                                ; preds = %scalar.ph360.preheader
  %203 = getelementptr inbounds double, ptr %26, i64 %.1258308.ph
  %204 = load double, ptr %203, align 8, !tbaa !10
  %gep313.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep312, i64 %.1258308.ph
  %205 = load <2 x double>, ptr %gep313.prol, align 8, !tbaa !10
  %206 = insertelement <2 x double> poison, double %204, i64 0
  %207 = shufflevector <2 x double> %206, <2 x double> poison, <2 x i32> zeroinitializer
  %208 = fmul <2 x double> %207, %205
  store <2 x double> %208, ptr %gep313.prol, align 8, !tbaa !10
  %209 = add nuw nsw i64 %.1258308.ph, 1
  br label %scalar.ph360.prol.loopexit

scalar.ph360.prol.loopexit:                       ; preds = %scalar.ph360.prol, %scalar.ph360.preheader
  %.1258308.unr = phi i64 [ %.1258308.ph, %scalar.ph360.preheader ], [ %209, %scalar.ph360.prol ]
  %210 = icmp eq i64 %180, %.1258308.ph
  br i1 %210, label %._crit_edge311, label %scalar.ph360

scalar.ph360:                                     ; preds = %scalar.ph360.prol.loopexit, %scalar.ph360
  %.1258308 = phi i64 [ %224, %scalar.ph360 ], [ %.1258308.unr, %scalar.ph360.prol.loopexit ]
  %211 = getelementptr inbounds double, ptr %26, i64 %.1258308
  %212 = load double, ptr %211, align 8, !tbaa !10
  %gep313 = getelementptr %struct.doublecomplex, ptr %invariant.gep312, i64 %.1258308
  %213 = load <2 x double>, ptr %gep313, align 8, !tbaa !10
  %214 = insertelement <2 x double> poison, double %212, i64 0
  %215 = shufflevector <2 x double> %214, <2 x double> poison, <2 x i32> zeroinitializer
  %216 = fmul <2 x double> %215, %213
  store <2 x double> %216, ptr %gep313, align 8, !tbaa !10
  %217 = add nuw i64 %.1258308, 1
  %218 = getelementptr double, ptr %9, i64 %.1258308
  %219 = load double, ptr %218, align 8, !tbaa !10
  %gep313.1 = getelementptr %struct.doublecomplex, ptr %invariant.gep312, i64 %217
  %220 = load <2 x double>, ptr %gep313.1, align 8, !tbaa !10
  %221 = insertelement <2 x double> poison, double %219, i64 0
  %222 = shufflevector <2 x double> %221, <2 x double> poison, <2 x i32> zeroinitializer
  %223 = fmul <2 x double> %222, %220
  store <2 x double> %223, ptr %gep313.1, align 8, !tbaa !10
  %224 = add nuw i64 %.1258308, 2
  %exitcond328.not.1 = icmp eq i64 %217, %180
  br i1 %exitcond328.not.1, label %._crit_edge311, label %scalar.ph360, !llvm.loop !26

._crit_edge311:                                   ; preds = %scalar.ph360.prol.loopexit, %scalar.ph360, %middle.block359
  %225 = add nuw i64 %.2315, 1
  %exitcond329.not = icmp eq i64 %.2315, %179
  %indvar.next343 = add i64 %indvar342, 1
  br i1 %exitcond329.not, label %._crit_edge318, label %.lr.ph310, !llvm.loop !27

._crit_edge318:                                   ; preds = %._crit_edge311
  br i1 %.not271314, label %.loopexit, label %.lr.ph322

.lr.ph322:                                        ; preds = %.lr.ph317, %._crit_edge318
  %226 = load double, ptr %23, align 8, !tbaa !10
  %min.iters.check379 = icmp eq i64 %179, 1
  br i1 %min.iters.check379, label %scalar.ph378.preheader, label %vector.ph380

vector.ph380:                                     ; preds = %.lr.ph322
  %n.vec382 = and i64 %179, 9223372036854775806
  %ind.end383 = or i64 %179, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %226, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body385

vector.body385:                                   ; preds = %vector.body385, %vector.ph380
  %index386 = phi i64 [ 0, %vector.ph380 ], [ %index.next389, %vector.body385 ]
  %227 = getelementptr double, ptr %15, i64 %index386
  %wide.load388 = load <2 x double>, ptr %227, align 8, !tbaa !10
  %228 = fdiv <2 x double> %wide.load388, %broadcast.splat
  store <2 x double> %228, ptr %227, align 8, !tbaa !10
  %index.next389 = add nuw i64 %index386, 2
  %229 = icmp eq i64 %index.next389, %n.vec382
  br i1 %229, label %middle.block377, label %vector.body385, !llvm.loop !28

middle.block377:                                  ; preds = %vector.body385
  %cmp.n390 = icmp eq i64 %179, %n.vec382
  br i1 %cmp.n390, label %.loopexit, label %scalar.ph378.preheader

scalar.ph378.preheader:                           ; preds = %middle.block377, %.lr.ph322
  %.3320.ph = phi i64 [ 1, %.lr.ph322 ], [ %ind.end383, %middle.block377 ]
  br label %scalar.ph378

scalar.ph378:                                     ; preds = %scalar.ph378.preheader, %scalar.ph378
  %.3320 = phi i64 [ %233, %scalar.ph378 ], [ %.3320.ph, %scalar.ph378.preheader ]
  %230 = getelementptr inbounds double, ptr %33, i64 %.3320
  %231 = load double, ptr %230, align 8, !tbaa !10
  %232 = fdiv double %231, %226
  store double %232, ptr %230, align 8, !tbaa !10
  %233 = add nuw i64 %.3320, 1
  %exitcond330.not = icmp eq i64 %.3320, %179
  br i1 %exitcond330.not, label %.loopexit, label %scalar.ph378, !llvm.loop !29

.loopexit:                                        ; preds = %scalar.ph378, %middle.block377, %178, %._crit_edge318, %172
  %234 = load double, ptr %14, align 8, !tbaa !10
  %235 = call double @dlamch_(ptr noundef nonnull @.str.10) #4
  %236 = fcmp olt double %234, %235
  br i1 %236, label %237, label %240

237:                                              ; preds = %.loopexit
  %238 = load i64, ptr %2, align 8, !tbaa !5
  %239 = add nsw i64 %238, 1
  store i64 %239, ptr %19, align 8, !tbaa !5
  br label %240

240:                                              ; preds = %.loopexit, %237, %171, %.thread289
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #4
  ret i32 0
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15}
!15 = distinct !{!15, !16}
!16 = distinct !{!16, !"LVerDomain"}
!17 = distinct !{!17, !13, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !13, !18}
!21 = distinct !{!21, !13}
!22 = !{!23}
!23 = distinct !{!23, !24}
!24 = distinct !{!24, !"LVerDomain"}
!25 = distinct !{!25, !13, !18, !19}
!26 = distinct !{!26, !13, !18}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13, !18, !19}
!29 = distinct !{!29, !13, !19, !18}


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