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

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

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

113:                                              ; preds = %19
  %114 = load ptr, ptr %21, align 8, !tbaa !5
  %115 = call i64 @lsame_(ptr noundef %114, ptr noundef @.str.3)
  %116 = icmp ne i64 %115, 0
  br i1 %116, label %119, label %117

117:                                              ; preds = %113
  %118 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -1, ptr %118, align 8, !tbaa !9
  br label %216

119:                                              ; preds = %113, %19
  %120 = load i64, ptr %66, align 8, !tbaa !9
  %121 = icmp ne i64 %120, 0
  br i1 %121, label %130, label %122

122:                                              ; preds = %119
  %123 = load i64, ptr %70, align 8, !tbaa !9
  %124 = icmp ne i64 %123, 0
  br i1 %124, label %130, label %125

125:                                              ; preds = %122
  %126 = load i64, ptr %67, align 8, !tbaa !9
  %127 = icmp ne i64 %126, 0
  br i1 %127, label %130, label %128

128:                                              ; preds = %125
  %129 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -2, ptr %129, align 8, !tbaa !9
  br label %215

130:                                              ; preds = %125, %122, %119
  %131 = load ptr, ptr %23, align 8, !tbaa !5
  %132 = call i64 @lsame_(ptr noundef %131, ptr noundef @.str.4)
  %133 = icmp ne i64 %132, 0
  br i1 %133, label %140, label %134

134:                                              ; preds = %130
  %135 = load ptr, ptr %23, align 8, !tbaa !5
  %136 = call i64 @lsame_(ptr noundef %135, ptr noundef @.str.5)
  %137 = icmp ne i64 %136, 0
  br i1 %137, label %140, label %138

138:                                              ; preds = %134
  %139 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -3, ptr %139, align 8, !tbaa !9
  br label %214

140:                                              ; preds = %134, %130
  %141 = load ptr, ptr %24, align 8, !tbaa !5
  %142 = load i64, ptr %141, align 8, !tbaa !9
  %143 = icmp slt i64 %142, 0
  br i1 %143, label %144, label %146

144:                                              ; preds = %140
  %145 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -4, ptr %145, align 8, !tbaa !9
  br label %213

146:                                              ; preds = %140
  %147 = load i64, ptr %70, align 8, !tbaa !9
  %148 = icmp ne i64 %147, 0
  br i1 %148, label %149, label %162

149:                                              ; preds = %146
  %150 = load ptr, ptr %24, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  %152 = icmp sgt i64 %151, 0
  br i1 %152, label %153, label %161

153:                                              ; preds = %149
  %154 = load ptr, ptr %27, align 8, !tbaa !5
  %155 = load double, ptr %154, align 8, !tbaa !11
  %156 = load ptr, ptr %26, align 8, !tbaa !5
  %157 = load double, ptr %156, align 8, !tbaa !11
  %158 = fcmp ole double %155, %157
  br i1 %158, label %159, label %161

159:                                              ; preds = %153
  %160 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -7, ptr %160, align 8, !tbaa !9
  br label %161

161:                                              ; preds = %159, %153, %149
  br label %212

162:                                              ; preds = %146
  %163 = load i64, ptr %67, align 8, !tbaa !9
  %164 = icmp ne i64 %163, 0
  br i1 %164, label %165, label %211

165:                                              ; preds = %162
  %166 = load ptr, ptr %28, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = icmp slt i64 %167, 1
  br i1 %168, label %182, label %169

169:                                              ; preds = %165
  %170 = load ptr, ptr %28, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = load ptr, ptr %24, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp sge i64 1, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %169
  br label %179

176:                                              ; preds = %169
  %177 = load ptr, ptr %24, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %176, %175
  %180 = phi i64 [ 1, %175 ], [ %178, %176 ]
  %181 = icmp sgt i64 %171, %180
  br i1 %181, label %182, label %184

182:                                              ; preds = %179, %165
  %183 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -8, ptr %183, align 8, !tbaa !9
  br label %210

184:                                              ; preds = %179
  %185 = load ptr, ptr %29, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  %187 = load ptr, ptr %24, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = load ptr, ptr %28, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp sle i64 %188, %190
  br i1 %191, label %192, label %195

192:                                              ; preds = %184
  %193 = load ptr, ptr %24, align 8, !tbaa !5
  %194 = load i64, ptr %193, align 8, !tbaa !9
  br label %198

195:                                              ; preds = %184
  %196 = load ptr, ptr %28, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  br label %198

198:                                              ; preds = %195, %192
  %199 = phi i64 [ %194, %192 ], [ %197, %195 ]
  %200 = icmp slt i64 %186, %199
  br i1 %200, label %207, label %201

201:                                              ; preds = %198
  %202 = load ptr, ptr %29, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = load ptr, ptr %24, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  %206 = icmp sgt i64 %203, %205
  br i1 %206, label %207, label %209

207:                                              ; preds = %201, %198
  %208 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -9, ptr %208, align 8, !tbaa !9
  br label %209

209:                                              ; preds = %207, %201
  br label %210

210:                                              ; preds = %209, %182
  br label %211

211:                                              ; preds = %210, %162
  br label %212

212:                                              ; preds = %211, %161
  br label %213

213:                                              ; preds = %212, %144
  br label %214

214:                                              ; preds = %213, %138
  br label %215

215:                                              ; preds = %214, %128
  br label %216

216:                                              ; preds = %215, %117
  %217 = load ptr, ptr %39, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = icmp eq i64 %218, 0
  br i1 %219, label %220, label %236

220:                                              ; preds = %216
  %221 = load ptr, ptr %34, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = icmp slt i64 %222, 1
  br i1 %223, label %233, label %224

224:                                              ; preds = %220
  %225 = load i64, ptr %65, align 8, !tbaa !9
  %226 = icmp ne i64 %225, 0
  br i1 %226, label %227, label %235

227:                                              ; preds = %224
  %228 = load ptr, ptr %34, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = load ptr, ptr %24, align 8, !tbaa !5
  %231 = load i64, ptr %230, align 8, !tbaa !9
  %232 = icmp slt i64 %229, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %227, %220
  %234 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 -14, ptr %234, align 8, !tbaa !9
  br label %235

235:                                              ; preds = %233, %227, %224
  br label %236

236:                                              ; preds = %235, %216
  %237 = load ptr, ptr %39, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %240, label %245

240:                                              ; preds = %236
  %241 = load ptr, ptr %39, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = sub nsw i64 0, %242
  store i64 %243, ptr %42, align 8, !tbaa !9
  %244 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %42)
  store i32 0, ptr %20, align 4
  store i32 1, ptr %81, align 4
  br label %803

245:                                              ; preds = %236
  %246 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 0, ptr %246, align 8, !tbaa !9
  %247 = load ptr, ptr %24, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = icmp eq i64 %248, 0
  br i1 %249, label %250, label %251

250:                                              ; preds = %245
  store i32 0, ptr %20, align 4
  store i32 1, ptr %81, align 4
  br label %803

251:                                              ; preds = %245
  %252 = load ptr, ptr %24, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  %254 = icmp eq i64 %253, 1
  br i1 %254, label %255, label %309

255:                                              ; preds = %251
  %256 = load i64, ptr %66, align 8, !tbaa !9
  %257 = icmp ne i64 %256, 0
  br i1 %257, label %261, label %258

258:                                              ; preds = %255
  %259 = load i64, ptr %67, align 8, !tbaa !9
  %260 = icmp ne i64 %259, 0
  br i1 %260, label %261, label %269

261:                                              ; preds = %258, %255
  %262 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 1, ptr %262, align 8, !tbaa !9
  %263 = load ptr, ptr %25, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.doublecomplex, ptr %263, i64 1
  %265 = getelementptr inbounds %struct.doublecomplex, ptr %264, i32 0, i32 0
  %266 = load double, ptr %265, align 8, !tbaa !13
  %267 = load ptr, ptr %32, align 8, !tbaa !5
  %268 = getelementptr inbounds double, ptr %267, i64 1
  store double %266, ptr %268, align 8, !tbaa !11
  br label %294

269:                                              ; preds = %258
  %270 = load ptr, ptr %26, align 8, !tbaa !5
  %271 = load double, ptr %270, align 8, !tbaa !11
  %272 = load ptr, ptr %25, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.doublecomplex, ptr %272, i64 1
  %274 = getelementptr inbounds %struct.doublecomplex, ptr %273, i32 0, i32 0
  %275 = load double, ptr %274, align 8, !tbaa !13
  %276 = fcmp olt double %271, %275
  br i1 %276, label %277, label %293

277:                                              ; preds = %269
  %278 = load ptr, ptr %27, align 8, !tbaa !5
  %279 = load double, ptr %278, align 8, !tbaa !11
  %280 = load ptr, ptr %25, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.doublecomplex, ptr %280, i64 1
  %282 = getelementptr inbounds %struct.doublecomplex, ptr %281, i32 0, i32 0
  %283 = load double, ptr %282, align 8, !tbaa !13
  %284 = fcmp oge double %279, %283
  br i1 %284, label %285, label %293

285:                                              ; preds = %277
  %286 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 1, ptr %286, align 8, !tbaa !9
  %287 = load ptr, ptr %25, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.doublecomplex, ptr %287, i64 1
  %289 = getelementptr inbounds %struct.doublecomplex, ptr %288, i32 0, i32 0
  %290 = load double, ptr %289, align 8, !tbaa !13
  %291 = load ptr, ptr %32, align 8, !tbaa !5
  %292 = getelementptr inbounds double, ptr %291, i64 1
  store double %290, ptr %292, align 8, !tbaa !11
  br label %293

293:                                              ; preds = %285, %277, %269
  br label %294

294:                                              ; preds = %293, %261
  %295 = load i64, ptr %65, align 8, !tbaa !9
  %296 = icmp ne i64 %295, 0
  br i1 %296, label %297, label %308

297:                                              ; preds = %294
  %298 = load i64, ptr %40, align 8, !tbaa !9
  %299 = add nsw i64 %298, 1
  store i64 %299, ptr %42, align 8, !tbaa !9
  %300 = load ptr, ptr %33, align 8, !tbaa !5
  %301 = load i64, ptr %42, align 8, !tbaa !9
  %302 = getelementptr inbounds %struct.doublecomplex, ptr %300, i64 %301
  %303 = getelementptr inbounds %struct.doublecomplex, ptr %302, i32 0, i32 0
  store double 1.000000e+00, ptr %303, align 8, !tbaa !13
  %304 = load ptr, ptr %33, align 8, !tbaa !5
  %305 = load i64, ptr %42, align 8, !tbaa !9
  %306 = getelementptr inbounds %struct.doublecomplex, ptr %304, i64 %305
  %307 = getelementptr inbounds %struct.doublecomplex, ptr %306, i32 0, i32 1
  store double 0.000000e+00, ptr %307, align 8, !tbaa !15
  br label %308

308:                                              ; preds = %297, %294
  store i32 0, ptr %20, align 4
  store i32 1, ptr %81, align 4
  br label %803

309:                                              ; preds = %251
  %310 = call double @dlamch_(ptr noundef @.str.7)
  store double %310, ptr %71, align 8, !tbaa !11
  %311 = call double @dlamch_(ptr noundef @.str.8)
  store double %311, ptr %49, align 8, !tbaa !11
  %312 = load double, ptr %71, align 8, !tbaa !11
  %313 = load double, ptr %49, align 8, !tbaa !11
  %314 = fdiv double %312, %313
  store double %314, ptr %80, align 8, !tbaa !11
  %315 = load double, ptr %80, align 8, !tbaa !11
  %316 = fdiv double 1.000000e+00, %315
  store double %316, ptr %73, align 8, !tbaa !11
  %317 = load double, ptr %80, align 8, !tbaa !11
  %318 = call double @sqrt(double noundef %317) #4
  store double %318, ptr %57, align 8, !tbaa !11
  %319 = load double, ptr %73, align 8, !tbaa !11
  %320 = call double @sqrt(double noundef %319) #4
  store double %320, ptr %44, align 8, !tbaa !11
  %321 = load double, ptr %71, align 8, !tbaa !11
  %322 = call double @sqrt(double noundef %321) #4
  %323 = call double @sqrt(double noundef %322) #4
  %324 = fdiv double 1.000000e+00, %323
  store double %324, ptr %45, align 8, !tbaa !11
  %325 = load double, ptr %44, align 8, !tbaa !11
  %326 = load double, ptr %45, align 8, !tbaa !11
  %327 = fcmp ole double %325, %326
  br i1 %327, label %328, label %330

328:                                              ; preds = %309
  %329 = load double, ptr %44, align 8, !tbaa !11
  br label %332

330:                                              ; preds = %309
  %331 = load double, ptr %45, align 8, !tbaa !11
  br label %332

332:                                              ; preds = %330, %328
  %333 = phi double [ %329, %328 ], [ %331, %330 ]
  store double %333, ptr %58, align 8, !tbaa !11
  store i64 0, ptr %68, align 8, !tbaa !9
  %334 = load ptr, ptr %30, align 8, !tbaa !5
  %335 = load double, ptr %334, align 8, !tbaa !11
  store double %335, ptr %72, align 8, !tbaa !11
  %336 = load i64, ptr %70, align 8, !tbaa !9
  %337 = icmp ne i64 %336, 0
  br i1 %337, label %338, label %343

338:                                              ; preds = %332
  %339 = load ptr, ptr %26, align 8, !tbaa !5
  %340 = load double, ptr %339, align 8, !tbaa !11
  store double %340, ptr %50, align 8, !tbaa !11
  %341 = load ptr, ptr %27, align 8, !tbaa !5
  %342 = load double, ptr %341, align 8, !tbaa !11
  store double %342, ptr %51, align 8, !tbaa !11
  br label %344

343:                                              ; preds = %332
  store double 0.000000e+00, ptr %50, align 8, !tbaa !11
  store double 0.000000e+00, ptr %51, align 8, !tbaa !11
  br label %344

344:                                              ; preds = %343, %338
  %345 = load ptr, ptr %23, align 8, !tbaa !5
  %346 = load ptr, ptr %24, align 8, !tbaa !5
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.doublecomplex, ptr %347, i64 1
  %349 = load ptr, ptr %36, align 8, !tbaa !5
  %350 = getelementptr inbounds double, ptr %349, i64 1
  %351 = call double @zlanhp_(ptr noundef @.str.9, ptr noundef %345, ptr noundef %346, ptr noundef %348, ptr noundef %350)
  store double %351, ptr %55, align 8, !tbaa !11
  %352 = load double, ptr %55, align 8, !tbaa !11
  %353 = fcmp ogt double %352, 0.000000e+00
  br i1 %353, label %354, label %362

354:                                              ; preds = %344
  %355 = load double, ptr %55, align 8, !tbaa !11
  %356 = load double, ptr %57, align 8, !tbaa !11
  %357 = fcmp olt double %355, %356
  br i1 %357, label %358, label %362

358:                                              ; preds = %354
  store i64 1, ptr %68, align 8, !tbaa !9
  %359 = load double, ptr %57, align 8, !tbaa !11
  %360 = load double, ptr %55, align 8, !tbaa !11
  %361 = fdiv double %359, %360
  store double %361, ptr %62, align 8, !tbaa !11
  br label %371

362:                                              ; preds = %354, %344
  %363 = load double, ptr %55, align 8, !tbaa !11
  %364 = load double, ptr %58, align 8, !tbaa !11
  %365 = fcmp ogt double %363, %364
  br i1 %365, label %366, label %370

366:                                              ; preds = %362
  store i64 1, ptr %68, align 8, !tbaa !9
  %367 = load double, ptr %58, align 8, !tbaa !11
  %368 = load double, ptr %55, align 8, !tbaa !11
  %369 = fdiv double %367, %368
  store double %369, ptr %62, align 8, !tbaa !11
  br label %370

370:                                              ; preds = %366, %362
  br label %371

371:                                              ; preds = %370, %358
  %372 = load i64, ptr %68, align 8, !tbaa !9
  %373 = icmp eq i64 %372, 1
  br i1 %373, label %374, label %406

374:                                              ; preds = %371
  %375 = load ptr, ptr %24, align 8, !tbaa !5
  %376 = load i64, ptr %375, align 8, !tbaa !9
  %377 = load ptr, ptr %24, align 8, !tbaa !5
  %378 = load i64, ptr %377, align 8, !tbaa !9
  %379 = add nsw i64 %378, 1
  %380 = mul nsw i64 %376, %379
  %381 = sdiv i64 %380, 2
  store i64 %381, ptr %42, align 8, !tbaa !9
  %382 = load ptr, ptr %25, align 8, !tbaa !5
  %383 = getelementptr inbounds %struct.doublecomplex, ptr %382, i64 1
  %384 = call i32 @f2c_zdscal(ptr noundef %42, ptr noundef %62, ptr noundef %383, ptr noundef @c__1)
  %385 = load ptr, ptr %30, align 8, !tbaa !5
  %386 = load double, ptr %385, align 8, !tbaa !11
  %387 = fcmp ogt double %386, 0.000000e+00
  br i1 %387, label %388, label %393

388:                                              ; preds = %374
  %389 = load ptr, ptr %30, align 8, !tbaa !5
  %390 = load double, ptr %389, align 8, !tbaa !11
  %391 = load double, ptr %62, align 8, !tbaa !11
  %392 = fmul double %390, %391
  store double %392, ptr %72, align 8, !tbaa !11
  br label %393

393:                                              ; preds = %388, %374
  %394 = load i64, ptr %70, align 8, !tbaa !9
  %395 = icmp ne i64 %394, 0
  br i1 %395, label %396, label %405

396:                                              ; preds = %393
  %397 = load ptr, ptr %26, align 8, !tbaa !5
  %398 = load double, ptr %397, align 8, !tbaa !11
  %399 = load double, ptr %62, align 8, !tbaa !11
  %400 = fmul double %398, %399
  store double %400, ptr %50, align 8, !tbaa !11
  %401 = load ptr, ptr %27, align 8, !tbaa !5
  %402 = load double, ptr %401, align 8, !tbaa !11
  %403 = load double, ptr %62, align 8, !tbaa !11
  %404 = fmul double %402, %403
  store double %404, ptr %51, align 8, !tbaa !11
  br label %405

405:                                              ; preds = %396, %393
  br label %406

406:                                              ; preds = %405, %371
  store i64 1, ptr %53, align 8, !tbaa !9
  %407 = load i64, ptr %53, align 8, !tbaa !9
  %408 = load ptr, ptr %24, align 8, !tbaa !5
  %409 = load i64, ptr %408, align 8, !tbaa !9
  %410 = add nsw i64 %407, %409
  store i64 %410, ptr %54, align 8, !tbaa !9
  %411 = load i64, ptr %54, align 8, !tbaa !9
  %412 = load ptr, ptr %24, align 8, !tbaa !5
  %413 = load i64, ptr %412, align 8, !tbaa !9
  %414 = add nsw i64 %411, %413
  store i64 %414, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  %415 = load i64, ptr %76, align 8, !tbaa !9
  %416 = load ptr, ptr %24, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  %418 = add nsw i64 %415, %417
  store i64 %418, ptr %78, align 8, !tbaa !9
  %419 = load ptr, ptr %23, align 8, !tbaa !5
  %420 = load ptr, ptr %24, align 8, !tbaa !5
  %421 = load ptr, ptr %25, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.doublecomplex, ptr %421, i64 1
  %423 = load ptr, ptr %36, align 8, !tbaa !5
  %424 = load i64, ptr %53, align 8, !tbaa !9
  %425 = getelementptr inbounds double, ptr %423, i64 %424
  %426 = load ptr, ptr %36, align 8, !tbaa !5
  %427 = load i64, ptr %54, align 8, !tbaa !9
  %428 = getelementptr inbounds double, ptr %426, i64 %427
  %429 = load ptr, ptr %35, align 8, !tbaa !5
  %430 = load i64, ptr %76, align 8, !tbaa !9
  %431 = getelementptr inbounds %struct.doublecomplex, ptr %429, i64 %430
  %432 = call i32 @zhptrd_(ptr noundef %419, ptr noundef %420, ptr noundef %422, ptr noundef %425, ptr noundef %428, ptr noundef %431, ptr noundef %63)
  store i64 0, ptr %59, align 8, !tbaa !9
  %433 = load i64, ptr %67, align 8, !tbaa !9
  %434 = icmp ne i64 %433, 0
  br i1 %434, label %435, label %447

435:                                              ; preds = %406
  %436 = load ptr, ptr %28, align 8, !tbaa !5
  %437 = load i64, ptr %436, align 8, !tbaa !9
  %438 = icmp eq i64 %437, 1
  br i1 %438, label %439, label %446

439:                                              ; preds = %435
  %440 = load ptr, ptr %29, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  %442 = load ptr, ptr %24, align 8, !tbaa !5
  %443 = load i64, ptr %442, align 8, !tbaa !9
  %444 = icmp eq i64 %441, %443
  br i1 %444, label %445, label %446

445:                                              ; preds = %439
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %446

446:                                              ; preds = %445, %439, %435
  br label %447

447:                                              ; preds = %446, %406
  %448 = load i64, ptr %66, align 8, !tbaa !9
  %449 = icmp ne i64 %448, 0
  br i1 %449, label %453, label %450

450:                                              ; preds = %447
  %451 = load i64, ptr %59, align 8, !tbaa !9
  %452 = icmp ne i64 %451, 0
  br i1 %452, label %453, label %562

453:                                              ; preds = %450, %447
  %454 = load ptr, ptr %30, align 8, !tbaa !5
  %455 = load double, ptr %454, align 8, !tbaa !11
  %456 = fcmp ole double %455, 0.000000e+00
  br i1 %456, label %457, label %562

457:                                              ; preds = %453
  %458 = load ptr, ptr %24, align 8, !tbaa !5
  %459 = load ptr, ptr %36, align 8, !tbaa !5
  %460 = load i64, ptr %53, align 8, !tbaa !9
  %461 = getelementptr inbounds double, ptr %459, i64 %460
  %462 = load ptr, ptr %32, align 8, !tbaa !5
  %463 = getelementptr inbounds double, ptr %462, i64 1
  %464 = call i32 @f2c_dcopy(ptr noundef %458, ptr noundef %461, ptr noundef @c__1, ptr noundef %463, ptr noundef @c__1)
  %465 = load i64, ptr %77, align 8, !tbaa !9
  %466 = load ptr, ptr %24, align 8, !tbaa !5
  %467 = load i64, ptr %466, align 8, !tbaa !9
  %468 = shl i64 %467, 1
  %469 = add nsw i64 %465, %468
  store i64 %469, ptr %61, align 8, !tbaa !9
  %470 = load i64, ptr %65, align 8, !tbaa !9
  %471 = icmp ne i64 %470, 0
  br i1 %471, label %491, label %472

472:                                              ; preds = %457
  %473 = load ptr, ptr %24, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = sub nsw i64 %474, 1
  store i64 %475, ptr %42, align 8, !tbaa !9
  %476 = load ptr, ptr %36, align 8, !tbaa !5
  %477 = load i64, ptr %54, align 8, !tbaa !9
  %478 = getelementptr inbounds double, ptr %476, i64 %477
  %479 = load ptr, ptr %36, align 8, !tbaa !5
  %480 = load i64, ptr %61, align 8, !tbaa !9
  %481 = getelementptr inbounds double, ptr %479, i64 %480
  %482 = call i32 @f2c_dcopy(ptr noundef %42, ptr noundef %478, ptr noundef @c__1, ptr noundef %481, ptr noundef @c__1)
  %483 = load ptr, ptr %24, align 8, !tbaa !5
  %484 = load ptr, ptr %32, align 8, !tbaa !5
  %485 = getelementptr inbounds double, ptr %484, i64 1
  %486 = load ptr, ptr %36, align 8, !tbaa !5
  %487 = load i64, ptr %61, align 8, !tbaa !9
  %488 = getelementptr inbounds double, ptr %486, i64 %487
  %489 = load ptr, ptr %39, align 8, !tbaa !5
  %490 = call i32 @dsterf_(ptr noundef %483, ptr noundef %485, ptr noundef %488, ptr noundef %489)
  br label %552

491:                                              ; preds = %457
  %492 = load ptr, ptr %23, align 8, !tbaa !5
  %493 = load ptr, ptr %24, align 8, !tbaa !5
  %494 = load ptr, ptr %25, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.doublecomplex, ptr %494, i64 1
  %496 = load ptr, ptr %35, align 8, !tbaa !5
  %497 = load i64, ptr %76, align 8, !tbaa !9
  %498 = getelementptr inbounds %struct.doublecomplex, ptr %496, i64 %497
  %499 = load ptr, ptr %33, align 8, !tbaa !5
  %500 = load i64, ptr %41, align 8, !tbaa !9
  %501 = getelementptr inbounds %struct.doublecomplex, ptr %499, i64 %500
  %502 = load ptr, ptr %34, align 8, !tbaa !5
  %503 = load ptr, ptr %35, align 8, !tbaa !5
  %504 = load i64, ptr %78, align 8, !tbaa !9
  %505 = getelementptr inbounds %struct.doublecomplex, ptr %503, i64 %504
  %506 = call i32 @zupgtr_(ptr noundef %492, ptr noundef %493, ptr noundef %495, ptr noundef %498, ptr noundef %501, ptr noundef %502, ptr noundef %505, ptr noundef %63)
  %507 = load ptr, ptr %24, align 8, !tbaa !5
  %508 = load i64, ptr %507, align 8, !tbaa !9
  %509 = sub nsw i64 %508, 1
  store i64 %509, ptr %42, align 8, !tbaa !9
  %510 = load ptr, ptr %36, align 8, !tbaa !5
  %511 = load i64, ptr %54, align 8, !tbaa !9
  %512 = getelementptr inbounds double, ptr %510, i64 %511
  %513 = load ptr, ptr %36, align 8, !tbaa !5
  %514 = load i64, ptr %61, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = call i32 @f2c_dcopy(ptr noundef %42, ptr noundef %512, ptr noundef @c__1, ptr noundef %515, ptr noundef @c__1)
  %517 = load ptr, ptr %21, align 8, !tbaa !5
  %518 = load ptr, ptr %24, align 8, !tbaa !5
  %519 = load ptr, ptr %32, align 8, !tbaa !5
  %520 = getelementptr inbounds double, ptr %519, i64 1
  %521 = load ptr, ptr %36, align 8, !tbaa !5
  %522 = load i64, ptr %61, align 8, !tbaa !9
  %523 = getelementptr inbounds double, ptr %521, i64 %522
  %524 = load ptr, ptr %33, align 8, !tbaa !5
  %525 = load i64, ptr %41, align 8, !tbaa !9
  %526 = getelementptr inbounds %struct.doublecomplex, ptr %524, i64 %525
  %527 = load ptr, ptr %34, align 8, !tbaa !5
  %528 = load ptr, ptr %36, align 8, !tbaa !5
  %529 = load i64, ptr %77, align 8, !tbaa !9
  %530 = getelementptr inbounds double, ptr %528, i64 %529
  %531 = load ptr, ptr %39, align 8, !tbaa !5
  %532 = call i32 @zsteqr_(ptr noundef %517, ptr noundef %518, ptr noundef %520, ptr noundef %523, ptr noundef %526, ptr noundef %527, ptr noundef %530, ptr noundef %531)
  %533 = load ptr, ptr %39, align 8, !tbaa !5
  %534 = load i64, ptr %533, align 8, !tbaa !9
  %535 = icmp eq i64 %534, 0
  br i1 %535, label %536, label %551

536:                                              ; preds = %491
  %537 = load ptr, ptr %24, align 8, !tbaa !5
  %538 = load i64, ptr %537, align 8, !tbaa !9
  store i64 %538, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %539

539:                                              ; preds = %547, %536
  %540 = load i64, ptr %46, align 8, !tbaa !9
  %541 = load i64, ptr %42, align 8, !tbaa !9
  %542 = icmp sle i64 %540, %541
  br i1 %542, label %543, label %550

543:                                              ; preds = %539
  %544 = load ptr, ptr %38, align 8, !tbaa !5
  %545 = load i64, ptr %46, align 8, !tbaa !9
  %546 = getelementptr inbounds i64, ptr %544, i64 %545
  store i64 0, ptr %546, align 8, !tbaa !9
  br label %547

547:                                              ; preds = %543
  %548 = load i64, ptr %46, align 8, !tbaa !9
  %549 = add nsw i64 %548, 1
  store i64 %549, ptr %46, align 8, !tbaa !9
  br label %539, !llvm.loop !16

550:                                              ; preds = %539
  br label %551

551:                                              ; preds = %550, %491
  br label %552

552:                                              ; preds = %551, %472
  %553 = load ptr, ptr %39, align 8, !tbaa !5
  %554 = load i64, ptr %553, align 8, !tbaa !9
  %555 = icmp eq i64 %554, 0
  br i1 %555, label %556, label %560

556:                                              ; preds = %552
  %557 = load ptr, ptr %24, align 8, !tbaa !5
  %558 = load i64, ptr %557, align 8, !tbaa !9
  %559 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %558, ptr %559, align 8, !tbaa !9
  br label %660

560:                                              ; preds = %552
  %561 = load ptr, ptr %39, align 8, !tbaa !5
  store i64 0, ptr %561, align 8, !tbaa !9
  br label %562

562:                                              ; preds = %560, %453, %450
  %563 = load i64, ptr %65, align 8, !tbaa !9
  %564 = icmp ne i64 %563, 0
  br i1 %564, label %565, label %567

565:                                              ; preds = %562
  %566 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 66, ptr %566, align 1, !tbaa !18
  br label %569

567:                                              ; preds = %562
  %568 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 69, ptr %568, align 1, !tbaa !18
  br label %569

569:                                              ; preds = %567, %565
  store i64 1, ptr %69, align 8, !tbaa !9
  %570 = load i64, ptr %69, align 8, !tbaa !9
  %571 = load ptr, ptr %24, align 8, !tbaa !5
  %572 = load i64, ptr %571, align 8, !tbaa !9
  %573 = add nsw i64 %570, %572
  store i64 %573, ptr %75, align 8, !tbaa !9
  %574 = load i64, ptr %75, align 8, !tbaa !9
  %575 = load ptr, ptr %24, align 8, !tbaa !5
  %576 = load i64, ptr %575, align 8, !tbaa !9
  %577 = add nsw i64 %574, %576
  store i64 %577, ptr %74, align 8, !tbaa !9
  %578 = load ptr, ptr %22, align 8, !tbaa !5
  %579 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  %580 = load ptr, ptr %24, align 8, !tbaa !5
  %581 = load ptr, ptr %28, align 8, !tbaa !5
  %582 = load ptr, ptr %29, align 8, !tbaa !5
  %583 = load ptr, ptr %36, align 8, !tbaa !5
  %584 = load i64, ptr %53, align 8, !tbaa !9
  %585 = getelementptr inbounds double, ptr %583, i64 %584
  %586 = load ptr, ptr %36, align 8, !tbaa !5
  %587 = load i64, ptr %54, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %586, i64 %587
  %589 = load ptr, ptr %31, align 8, !tbaa !5
  %590 = load ptr, ptr %32, align 8, !tbaa !5
  %591 = getelementptr inbounds double, ptr %590, i64 1
  %592 = load ptr, ptr %37, align 8, !tbaa !5
  %593 = load i64, ptr %69, align 8, !tbaa !9
  %594 = getelementptr inbounds i64, ptr %592, i64 %593
  %595 = load ptr, ptr %37, align 8, !tbaa !5
  %596 = load i64, ptr %75, align 8, !tbaa !9
  %597 = getelementptr inbounds i64, ptr %595, i64 %596
  %598 = load ptr, ptr %36, align 8, !tbaa !5
  %599 = load i64, ptr %77, align 8, !tbaa !9
  %600 = getelementptr inbounds double, ptr %598, i64 %599
  %601 = load ptr, ptr %37, align 8, !tbaa !5
  %602 = load i64, ptr %74, align 8, !tbaa !9
  %603 = getelementptr inbounds i64, ptr %601, i64 %602
  %604 = load ptr, ptr %39, align 8, !tbaa !5
  %605 = call i32 @dstebz_(ptr noundef %578, ptr noundef %579, ptr noundef %580, ptr noundef %50, ptr noundef %51, ptr noundef %581, ptr noundef %582, ptr noundef %72, ptr noundef %585, ptr noundef %588, ptr noundef %589, ptr noundef %79, ptr noundef %591, ptr noundef %594, ptr noundef %597, ptr noundef %600, ptr noundef %603, ptr noundef %604)
  %606 = load i64, ptr %65, align 8, !tbaa !9
  %607 = icmp ne i64 %606, 0
  br i1 %607, label %608, label %659

608:                                              ; preds = %569
  %609 = load ptr, ptr %24, align 8, !tbaa !5
  %610 = load ptr, ptr %36, align 8, !tbaa !5
  %611 = load i64, ptr %53, align 8, !tbaa !9
  %612 = getelementptr inbounds double, ptr %610, i64 %611
  %613 = load ptr, ptr %36, align 8, !tbaa !5
  %614 = load i64, ptr %54, align 8, !tbaa !9
  %615 = getelementptr inbounds double, ptr %613, i64 %614
  %616 = load ptr, ptr %31, align 8, !tbaa !5
  %617 = load ptr, ptr %32, align 8, !tbaa !5
  %618 = getelementptr inbounds double, ptr %617, i64 1
  %619 = load ptr, ptr %37, align 8, !tbaa !5
  %620 = load i64, ptr %69, align 8, !tbaa !9
  %621 = getelementptr inbounds i64, ptr %619, i64 %620
  %622 = load ptr, ptr %37, align 8, !tbaa !5
  %623 = load i64, ptr %75, align 8, !tbaa !9
  %624 = getelementptr inbounds i64, ptr %622, i64 %623
  %625 = load ptr, ptr %33, align 8, !tbaa !5
  %626 = load i64, ptr %41, align 8, !tbaa !9
  %627 = getelementptr inbounds %struct.doublecomplex, ptr %625, i64 %626
  %628 = load ptr, ptr %34, align 8, !tbaa !5
  %629 = load ptr, ptr %36, align 8, !tbaa !5
  %630 = load i64, ptr %77, align 8, !tbaa !9
  %631 = getelementptr inbounds double, ptr %629, i64 %630
  %632 = load ptr, ptr %37, align 8, !tbaa !5
  %633 = load i64, ptr %74, align 8, !tbaa !9
  %634 = getelementptr inbounds i64, ptr %632, i64 %633
  %635 = load ptr, ptr %38, align 8, !tbaa !5
  %636 = getelementptr inbounds i64, ptr %635, i64 1
  %637 = load ptr, ptr %39, align 8, !tbaa !5
  %638 = call i32 @zstein_(ptr noundef %609, ptr noundef %612, ptr noundef %615, ptr noundef %616, ptr noundef %618, ptr noundef %621, ptr noundef %624, ptr noundef %627, ptr noundef %628, ptr noundef %631, ptr noundef %634, ptr noundef %636, ptr noundef %637)
  %639 = load i64, ptr %76, align 8, !tbaa !9
  %640 = load ptr, ptr %24, align 8, !tbaa !5
  %641 = load i64, ptr %640, align 8, !tbaa !9
  %642 = add nsw i64 %639, %641
  store i64 %642, ptr %78, align 8, !tbaa !9
  %643 = load ptr, ptr %23, align 8, !tbaa !5
  %644 = load ptr, ptr %24, align 8, !tbaa !5
  %645 = load ptr, ptr %31, align 8, !tbaa !5
  %646 = load ptr, ptr %25, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.doublecomplex, ptr %646, i64 1
  %648 = load ptr, ptr %35, align 8, !tbaa !5
  %649 = load i64, ptr %76, align 8, !tbaa !9
  %650 = getelementptr inbounds %struct.doublecomplex, ptr %648, i64 %649
  %651 = load ptr, ptr %33, align 8, !tbaa !5
  %652 = load i64, ptr %41, align 8, !tbaa !9
  %653 = getelementptr inbounds %struct.doublecomplex, ptr %651, i64 %652
  %654 = load ptr, ptr %34, align 8, !tbaa !5
  %655 = load ptr, ptr %35, align 8, !tbaa !5
  %656 = load i64, ptr %78, align 8, !tbaa !9
  %657 = getelementptr inbounds %struct.doublecomplex, ptr %655, i64 %656
  %658 = call i32 @zupmtr_(ptr noundef @.str.4, ptr noundef %643, ptr noundef @.str.3, ptr noundef %644, ptr noundef %645, ptr noundef %647, ptr noundef %650, ptr noundef %653, ptr noundef %654, ptr noundef %657, ptr noundef %63)
  br label %659

659:                                              ; preds = %608, %569
  br label %660

660:                                              ; preds = %659, %556
  %661 = load i64, ptr %68, align 8, !tbaa !9
  %662 = icmp eq i64 %661, 1
  br i1 %662, label %663, label %680

663:                                              ; preds = %660
  %664 = load ptr, ptr %39, align 8, !tbaa !5
  %665 = load i64, ptr %664, align 8, !tbaa !9
  %666 = icmp eq i64 %665, 0
  br i1 %666, label %667, label %670

667:                                              ; preds = %663
  %668 = load ptr, ptr %31, align 8, !tbaa !5
  %669 = load i64, ptr %668, align 8, !tbaa !9
  store i64 %669, ptr %56, align 8, !tbaa !9
  br label %674

670:                                              ; preds = %663
  %671 = load ptr, ptr %39, align 8, !tbaa !5
  %672 = load i64, ptr %671, align 8, !tbaa !9
  %673 = sub nsw i64 %672, 1
  store i64 %673, ptr %56, align 8, !tbaa !9
  br label %674

674:                                              ; preds = %670, %667
  %675 = load double, ptr %62, align 8, !tbaa !11
  %676 = fdiv double 1.000000e+00, %675
  store double %676, ptr %44, align 8, !tbaa !11
  %677 = load ptr, ptr %32, align 8, !tbaa !5
  %678 = getelementptr inbounds double, ptr %677, i64 1
  %679 = call i32 @f2c_dscal(ptr noundef %56, ptr noundef %44, ptr noundef %678, ptr noundef @c__1)
  br label %680

680:                                              ; preds = %674, %660
  %681 = load i64, ptr %65, align 8, !tbaa !9
  %682 = icmp ne i64 %681, 0
  br i1 %682, label %683, label %802

683:                                              ; preds = %680
  %684 = load ptr, ptr %31, align 8, !tbaa !5
  %685 = load i64, ptr %684, align 8, !tbaa !9
  %686 = sub nsw i64 %685, 1
  store i64 %686, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %47, align 8, !tbaa !9
  br label %687

687:                                              ; preds = %798, %683
  %688 = load i64, ptr %47, align 8, !tbaa !9
  %689 = load i64, ptr %42, align 8, !tbaa !9
  %690 = icmp sle i64 %688, %689
  br i1 %690, label %691, label %801

691:                                              ; preds = %687
  store i64 0, ptr %46, align 8, !tbaa !9
  %692 = load ptr, ptr %32, align 8, !tbaa !5
  %693 = load i64, ptr %47, align 8, !tbaa !9
  %694 = getelementptr inbounds double, ptr %692, i64 %693
  %695 = load double, ptr %694, align 8, !tbaa !11
  store double %695, ptr %52, align 8, !tbaa !11
  %696 = load ptr, ptr %31, align 8, !tbaa !5
  %697 = load i64, ptr %696, align 8, !tbaa !9
  store i64 %697, ptr %43, align 8, !tbaa !9
  %698 = load i64, ptr %47, align 8, !tbaa !9
  %699 = add nsw i64 %698, 1
  store i64 %699, ptr %48, align 8, !tbaa !9
  br label %700

700:                                              ; preds = %718, %691
  %701 = load i64, ptr %48, align 8, !tbaa !9
  %702 = load i64, ptr %43, align 8, !tbaa !9
  %703 = icmp sle i64 %701, %702
  br i1 %703, label %704, label %721

704:                                              ; preds = %700
  %705 = load ptr, ptr %32, align 8, !tbaa !5
  %706 = load i64, ptr %48, align 8, !tbaa !9
  %707 = getelementptr inbounds double, ptr %705, i64 %706
  %708 = load double, ptr %707, align 8, !tbaa !11
  %709 = load double, ptr %52, align 8, !tbaa !11
  %710 = fcmp olt double %708, %709
  br i1 %710, label %711, label %717

711:                                              ; preds = %704
  %712 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %712, ptr %46, align 8, !tbaa !9
  %713 = load ptr, ptr %32, align 8, !tbaa !5
  %714 = load i64, ptr %48, align 8, !tbaa !9
  %715 = getelementptr inbounds double, ptr %713, i64 %714
  %716 = load double, ptr %715, align 8, !tbaa !11
  store double %716, ptr %52, align 8, !tbaa !11
  br label %717

717:                                              ; preds = %711, %704
  br label %718

718:                                              ; preds = %717
  %719 = load i64, ptr %48, align 8, !tbaa !9
  %720 = add nsw i64 %719, 1
  store i64 %720, ptr %48, align 8, !tbaa !9
  br label %700, !llvm.loop !19

721:                                              ; preds = %700
  %722 = load i64, ptr %46, align 8, !tbaa !9
  %723 = icmp ne i64 %722, 0
  br i1 %723, label %724, label %797

724:                                              ; preds = %721
  %725 = load ptr, ptr %37, align 8, !tbaa !5
  %726 = load i64, ptr %69, align 8, !tbaa !9
  %727 = load i64, ptr %46, align 8, !tbaa !9
  %728 = add nsw i64 %726, %727
  %729 = sub nsw i64 %728, 1
  %730 = getelementptr inbounds i64, ptr %725, i64 %729
  %731 = load i64, ptr %730, align 8, !tbaa !9
  store i64 %731, ptr %60, align 8, !tbaa !9
  %732 = load ptr, ptr %32, align 8, !tbaa !5
  %733 = load i64, ptr %47, align 8, !tbaa !9
  %734 = getelementptr inbounds double, ptr %732, i64 %733
  %735 = load double, ptr %734, align 8, !tbaa !11
  %736 = load ptr, ptr %32, align 8, !tbaa !5
  %737 = load i64, ptr %46, align 8, !tbaa !9
  %738 = getelementptr inbounds double, ptr %736, i64 %737
  store double %735, ptr %738, align 8, !tbaa !11
  %739 = load ptr, ptr %37, align 8, !tbaa !5
  %740 = load i64, ptr %69, align 8, !tbaa !9
  %741 = load i64, ptr %47, align 8, !tbaa !9
  %742 = add nsw i64 %740, %741
  %743 = sub nsw i64 %742, 1
  %744 = getelementptr inbounds i64, ptr %739, i64 %743
  %745 = load i64, ptr %744, align 8, !tbaa !9
  %746 = load ptr, ptr %37, align 8, !tbaa !5
  %747 = load i64, ptr %69, align 8, !tbaa !9
  %748 = load i64, ptr %46, align 8, !tbaa !9
  %749 = add nsw i64 %747, %748
  %750 = sub nsw i64 %749, 1
  %751 = getelementptr inbounds i64, ptr %746, i64 %750
  store i64 %745, ptr %751, align 8, !tbaa !9
  %752 = load double, ptr %52, align 8, !tbaa !11
  %753 = load ptr, ptr %32, align 8, !tbaa !5
  %754 = load i64, ptr %47, align 8, !tbaa !9
  %755 = getelementptr inbounds double, ptr %753, i64 %754
  store double %752, ptr %755, align 8, !tbaa !11
  %756 = load i64, ptr %60, align 8, !tbaa !9
  %757 = load ptr, ptr %37, align 8, !tbaa !5
  %758 = load i64, ptr %69, align 8, !tbaa !9
  %759 = load i64, ptr %47, align 8, !tbaa !9
  %760 = add nsw i64 %758, %759
  %761 = sub nsw i64 %760, 1
  %762 = getelementptr inbounds i64, ptr %757, i64 %761
  store i64 %756, ptr %762, align 8, !tbaa !9
  %763 = load ptr, ptr %24, align 8, !tbaa !5
  %764 = load ptr, ptr %33, align 8, !tbaa !5
  %765 = load i64, ptr %46, align 8, !tbaa !9
  %766 = load i64, ptr %40, align 8, !tbaa !9
  %767 = mul nsw i64 %765, %766
  %768 = add nsw i64 %767, 1
  %769 = getelementptr inbounds %struct.doublecomplex, ptr %764, i64 %768
  %770 = load ptr, ptr %33, align 8, !tbaa !5
  %771 = load i64, ptr %47, align 8, !tbaa !9
  %772 = load i64, ptr %40, align 8, !tbaa !9
  %773 = mul nsw i64 %771, %772
  %774 = add nsw i64 %773, 1
  %775 = getelementptr inbounds %struct.doublecomplex, ptr %770, i64 %774
  %776 = call i32 @f2c_zswap(ptr noundef %763, ptr noundef %769, ptr noundef @c__1, ptr noundef %775, ptr noundef @c__1)
  %777 = load ptr, ptr %39, align 8, !tbaa !5
  %778 = load i64, ptr %777, align 8, !tbaa !9
  %779 = icmp ne i64 %778, 0
  br i1 %779, label %780, label %796

780:                                              ; preds = %724
  %781 = load ptr, ptr %38, align 8, !tbaa !5
  %782 = load i64, ptr %46, align 8, !tbaa !9
  %783 = getelementptr inbounds i64, ptr %781, i64 %782
  %784 = load i64, ptr %783, align 8, !tbaa !9
  store i64 %784, ptr %60, align 8, !tbaa !9
  %785 = load ptr, ptr %38, align 8, !tbaa !5
  %786 = load i64, ptr %47, align 8, !tbaa !9
  %787 = getelementptr inbounds i64, ptr %785, i64 %786
  %788 = load i64, ptr %787, align 8, !tbaa !9
  %789 = load ptr, ptr %38, align 8, !tbaa !5
  %790 = load i64, ptr %46, align 8, !tbaa !9
  %791 = getelementptr inbounds i64, ptr %789, i64 %790
  store i64 %788, ptr %791, align 8, !tbaa !9
  %792 = load i64, ptr %60, align 8, !tbaa !9
  %793 = load ptr, ptr %38, align 8, !tbaa !5
  %794 = load i64, ptr %47, align 8, !tbaa !9
  %795 = getelementptr inbounds i64, ptr %793, i64 %794
  store i64 %792, ptr %795, align 8, !tbaa !9
  br label %796

796:                                              ; preds = %780, %724
  br label %797

797:                                              ; preds = %796, %721
  br label %798

798:                                              ; preds = %797
  %799 = load i64, ptr %47, align 8, !tbaa !9
  %800 = add nsw i64 %799, 1
  store i64 %800, ptr %47, align 8, !tbaa !9
  br label %687, !llvm.loop !20

801:                                              ; preds = %687
  br label %802

802:                                              ; preds = %801, %680
  store i32 0, ptr %20, align 4
  store i32 1, ptr %81, align 4
  br label %803

803:                                              ; preds = %802, %308, %250, %240
  call void @llvm.lifetime.end.p0(i64 8, 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 1, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  %804 = load i32, ptr %20, align 4
  ret i32 %804
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @dstebz_(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

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

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

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

declare i32 @f2c_zswap(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 "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 = !{!14, !12, i64 0}
!14 = !{!"", !12, i64 0, !12, i64 8}
!15 = !{!14, !12, i64 8}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!7, !7, i64 0}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zhpevx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr noundef %8, ptr nocapture noundef readonly %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) local_unnamed_addr #0 {
  %20 = alloca i64, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca i64, align 8
  %27 = alloca [1 x i8], align 1
  %28 = alloca double, align 8
  %29 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  %30 = getelementptr inbounds i8, ptr %11, i64 -8
  %31 = load i64, ptr %13, align 8, !tbaa !5
  %32 = xor i64 %31, -1
  %33 = getelementptr inbounds %struct.doublecomplex, ptr %12, i64 %32
  %34 = getelementptr inbounds i8, ptr %15, i64 -8
  %35 = getelementptr inbounds i8, ptr %16, i64 -8
  %36 = getelementptr inbounds i8, ptr %17, i64 -8
  %37 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %38 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %39 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %40 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  store i64 0, ptr %18, align 8, !tbaa !5
  %.not = icmp ne i64 %37, 0
  br i1 %.not, label %43, label %41

41:                                               ; preds = %19
  %42 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not328 = icmp eq i64 %42, 0
  br i1 %.not328, label %.thread350.sink.split, label %43

43:                                               ; preds = %41, %19
  %44 = icmp ne i64 %38, 0
  %45 = icmp ne i64 %39, 0
  %or.cond = select i1 %44, i1 true, i1 %45
  %46 = icmp ne i64 %40, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %46
  br i1 %or.cond3, label %47, label %.thread350.sink.split

47:                                               ; preds = %43
  %48 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #6
  %.not329 = icmp eq i64 %48, 0
  br i1 %.not329, label %49, label %51

49:                                               ; preds = %47
  %50 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #6
  %.not330 = icmp eq i64 %50, 0
  br i1 %.not330, label %.thread350.sink.split, label %51

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

54:                                               ; preds = %51
  br i1 %45, label %55, label %60

55:                                               ; preds = %54
  %.not332 = icmp eq i64 %52, 0
  br i1 %.not332, label %69, label %56

56:                                               ; preds = %55
  %57 = load double, ptr %6, align 8, !tbaa !9
  %58 = load double, ptr %5, align 8, !tbaa !9
  %59 = fcmp ugt double %57, %58
  br i1 %59, label %69, label %.thread350.sink.split

60:                                               ; preds = %54
  br i1 %46, label %61, label %69

61:                                               ; preds = %60
  %62 = load i64, ptr %7, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 1
  %spec.select = tail call i64 @llvm.umax.i64(i64 %52, i64 1)
  %64 = icmp ugt i64 %62, %spec.select
  %or.cond361 = or i1 %63, %64
  br i1 %or.cond361, label %.thread350.sink.split, label %65

65:                                               ; preds = %61
  %66 = load i64, ptr %8, align 8, !tbaa !5
  %. = tail call i64 @llvm.umin.i64(i64 %52, i64 %62)
  %67 = icmp slt i64 %66, %.
  %68 = icmp ugt i64 %66, %52
  %or.cond359 = or i1 %67, %68
  br i1 %or.cond359, label %.thread350.sink.split, label %69

69:                                               ; preds = %65, %60, %55, %56
  %.pr = load i64, ptr %18, align 8, !tbaa !5
  %70 = icmp eq i64 %.pr, 0
  br i1 %70, label %71, label %.thread350

71:                                               ; preds = %69
  %72 = load i64, ptr %13, align 8, !tbaa !5
  %73 = icmp slt i64 %72, 1
  %74 = icmp ult i64 %72, %52
  %or.cond380 = and i1 %.not, %74
  %or.cond383 = or i1 %73, %or.cond380
  br i1 %or.cond383, label %.thread350.sink.split, label %.thread

.thread350.sink.split:                            ; preds = %71, %65, %61, %56, %51, %49, %43, %41
  %.sink381 = phi i64 [ -1, %41 ], [ -2, %43 ], [ -3, %49 ], [ -4, %51 ], [ -7, %56 ], [ -8, %61 ], [ -9, %65 ], [ -14, %71 ]
  store i64 %.sink381, ptr %18, align 8, !tbaa !5
  br label %.thread350

.thread350:                                       ; preds = %.thread350.sink.split, %69
  %75 = phi i64 [ %.pr, %69 ], [ %.sink381, %.thread350.sink.split ]
  %76 = sub nsw i64 0, %75
  store i64 %76, ptr %20, align 8, !tbaa !5
  %77 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %20) #6
  br label %.loopexit

.thread:                                          ; preds = %71
  store i64 0, ptr %10, align 8, !tbaa !5
  %78 = load i64, ptr %3, align 8, !tbaa !5
  switch i64 %78, label %92 [
    i64 0, label %.loopexit
    i64 1, label %79
  ]

79:                                               ; preds = %.thread
  %or.cond5 = select i1 %44, i1 true, i1 %46
  br i1 %or.cond5, label %80, label %82

80:                                               ; preds = %79
  store i64 1, ptr %10, align 8, !tbaa !5
  %81 = load double, ptr %4, align 8, !tbaa !11
  br label %.sink.split

82:                                               ; preds = %79
  %83 = load double, ptr %5, align 8, !tbaa !9
  %84 = load double, ptr %4, align 8, !tbaa !11
  %85 = fcmp olt double %83, %84
  br i1 %85, label %86, label %90

86:                                               ; preds = %82
  %87 = load double, ptr %6, align 8, !tbaa !9
  %88 = fcmp ult double %87, %84
  br i1 %88, label %90, label %89

89:                                               ; preds = %86
  store i64 1, ptr %10, align 8, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %80, %89
  %.sink382 = phi double [ %84, %89 ], [ %81, %80 ]
  store double %.sink382, ptr %11, align 8, !tbaa !9
  br label %90

90:                                               ; preds = %.sink.split, %82, %86
  br i1 %.not, label %91, label %.loopexit

91:                                               ; preds = %90
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %12, align 8, !tbaa !9
  br label %.loopexit

92:                                               ; preds = %.thread
  %93 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #6
  %94 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %95 = fdiv double %93, %94
  %96 = fdiv double 1.000000e+00, %95
  %97 = tail call double @sqrt(double noundef %95) #6
  %98 = tail call double @sqrt(double noundef %96) #6
  store double %98, ptr %21, align 8, !tbaa !9
  %99 = tail call double @sqrt(double noundef %93) #6
  %100 = tail call double @sqrt(double noundef %99) #6
  %101 = fdiv double 1.000000e+00, %100
  %102 = fcmp ole double %98, %101
  %103 = select i1 %102, double %98, double %101
  %104 = load double, ptr %9, align 8, !tbaa !9
  store double %104, ptr %28, align 8, !tbaa !9
  %.not334 = icmp eq i64 %39, 0
  br i1 %.not334, label %108, label %105

105:                                              ; preds = %92
  %106 = load double, ptr %5, align 8, !tbaa !9
  %107 = load double, ptr %6, align 8, !tbaa !9
  br label %108

108:                                              ; preds = %92, %105
  %.sink = phi double [ %106, %105 ], [ 0.000000e+00, %92 ]
  %storemerge = phi double [ %107, %105 ], [ 0.000000e+00, %92 ]
  store double %.sink, ptr %22, align 8
  store double %storemerge, ptr %23, align 8, !tbaa !9
  %109 = tail call double @zlanhp_(ptr noundef nonnull @.str.9, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %15) #6
  %110 = fcmp ogt double %109, 0.000000e+00
  %111 = fcmp olt double %109, %97
  %or.cond344 = select i1 %110, i1 %111, i1 false
  br i1 %or.cond344, label %114, label %112

112:                                              ; preds = %108
  %113 = fcmp ogt double %109, %103
  br i1 %113, label %114, label %132

114:                                              ; preds = %112, %108
  %.pn = phi double [ %97, %108 ], [ %103, %112 ]
  %storemerge360 = fdiv double %.pn, %109
  store double %storemerge360, ptr %25, align 8, !tbaa !9
  %115 = load i64, ptr %3, align 8, !tbaa !5
  %116 = add nsw i64 %115, 1
  %117 = mul nsw i64 %116, %115
  %118 = sdiv i64 %117, 2
  store i64 %118, ptr %20, align 8, !tbaa !5
  %119 = call i32 @f2c_zdscal(ptr noundef nonnull %20, ptr noundef nonnull %25, ptr noundef %4, ptr noundef nonnull @c__1) #6
  %120 = load double, ptr %9, align 8, !tbaa !9
  %121 = fcmp ogt double %120, 0.000000e+00
  br i1 %121, label %122, label %125

122:                                              ; preds = %114
  %123 = load double, ptr %25, align 8, !tbaa !9
  %124 = fmul double %120, %123
  store double %124, ptr %28, align 8, !tbaa !9
  br label %125

125:                                              ; preds = %122, %114
  br i1 %.not334, label %132, label %126

126:                                              ; preds = %125
  %127 = load double, ptr %5, align 8, !tbaa !9
  %128 = load double, ptr %25, align 8, !tbaa !9
  %129 = fmul double %127, %128
  store double %129, ptr %22, align 8, !tbaa !9
  %130 = load double, ptr %6, align 8, !tbaa !9
  %131 = fmul double %128, %130
  store double %131, ptr %23, align 8, !tbaa !9
  br label %132

132:                                              ; preds = %112, %125, %126
  %133 = phi i1 [ true, %125 ], [ true, %126 ], [ false, %112 ]
  %134 = load i64, ptr %3, align 8, !tbaa !5
  %reass.add = shl i64 %134, 1
  %135 = or disjoint i64 %reass.add, 1
  %136 = getelementptr double, ptr %15, i64 %134
  %137 = call i32 @zhptrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %15, ptr noundef %136, ptr noundef %14, ptr noundef nonnull %26) #6
  %.not335 = icmp eq i64 %40, 0
  br i1 %.not335, label %145, label %138

138:                                              ; preds = %132
  %139 = load i64, ptr %7, align 8, !tbaa !5
  %140 = icmp eq i64 %139, 1
  br i1 %140, label %141, label %145

141:                                              ; preds = %138
  %142 = load i64, ptr %8, align 8, !tbaa !5
  %143 = load i64, ptr %3, align 8, !tbaa !5
  %144 = icmp eq i64 %142, %143
  br label %145

145:                                              ; preds = %141, %138, %132
  %146 = phi i1 [ false, %138 ], [ false, %132 ], [ %144, %141 ]
  %or.cond7 = or i1 %44, %146
  br i1 %or.cond7, label %147, label %177

147:                                              ; preds = %145
  %148 = load double, ptr %9, align 8, !tbaa !9
  %149 = fcmp ugt double %148, 0.000000e+00
  br i1 %149, label %177, label %150

150:                                              ; preds = %147
  %151 = call i32 @f2c_dcopy(ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #6
  %152 = load i64, ptr %3, align 8, !tbaa !5
  %153 = shl i64 %152, 1
  %154 = add nsw i64 %153, %135
  br i1 %.not, label %160, label %155

155:                                              ; preds = %150
  %156 = add nsw i64 %152, -1
  store i64 %156, ptr %20, align 8, !tbaa !5
  %157 = getelementptr inbounds double, ptr %34, i64 %154
  %158 = call i32 @f2c_dcopy(ptr noundef nonnull %20, ptr noundef %136, ptr noundef nonnull @c__1, ptr noundef nonnull %157, ptr noundef nonnull @c__1) #6
  %159 = call i32 @dsterf_(ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %157, ptr noundef nonnull %18) #6
  br label %.loopexit362

160:                                              ; preds = %150
  %161 = getelementptr %struct.doublecomplex, ptr %14, i64 %134
  %162 = call i32 @zupgtr_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %14, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %161, ptr noundef nonnull %26) #6
  %163 = load i64, ptr %3, align 8, !tbaa !5
  %164 = add nsw i64 %163, -1
  store i64 %164, ptr %20, align 8, !tbaa !5
  %165 = getelementptr inbounds double, ptr %34, i64 %154
  %166 = call i32 @f2c_dcopy(ptr noundef nonnull %20, ptr noundef %136, ptr noundef nonnull @c__1, ptr noundef nonnull %165, ptr noundef nonnull @c__1) #6
  %167 = getelementptr double, ptr %15, i64 %reass.add
  %168 = call i32 @zsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %165, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %167, ptr noundef nonnull %18) #6
  %169 = load i64, ptr %18, align 8, !tbaa !5
  %170 = icmp eq i64 %169, 0
  br i1 %170, label %171, label %.thread356

171:                                              ; preds = %160
  %172 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %172, ptr %20, align 8, !tbaa !5
  %.not336363 = icmp slt i64 %172, 1
  br i1 %.not336363, label %.loopexit362, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %171
  %173 = shl nuw i64 %172, 3
  call void @llvm.memset.p0.i64(ptr align 8 %17, i8 0, i64 %173, i1 false), !tbaa !5
  br label %.loopexit362

.loopexit362:                                     ; preds = %.lr.ph.preheader, %171, %155
  %.pr355 = load i64, ptr %18, align 8, !tbaa !5
  %174 = icmp eq i64 %.pr355, 0
  br i1 %174, label %175, label %.thread356

175:                                              ; preds = %.loopexit362
  %176 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %176, ptr %10, align 8, !tbaa !5
  br label %188

.thread356:                                       ; preds = %160, %.loopexit362
  store i64 0, ptr %18, align 8, !tbaa !5
  br label %177

177:                                              ; preds = %145, %.thread356, %147
  %.346 = select i1 %.not, i8 66, i8 69
  store i8 %.346, ptr %27, align 1, !tbaa !13
  %178 = load i64, ptr %3, align 8, !tbaa !5
  %179 = getelementptr i64, ptr %16, i64 %178
  %180 = getelementptr double, ptr %15, i64 %reass.add
  %.idx = shl i64 %178, 4
  %181 = getelementptr i8, ptr %16, i64 %.idx
  %182 = call i32 @dstebz_(ptr noundef %1, ptr noundef nonnull %27, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %28, ptr noundef %15, ptr noundef %136, ptr noundef nonnull %10, ptr noundef nonnull %29, ptr noundef %11, ptr noundef %16, ptr noundef %179, ptr noundef %180, ptr noundef %181, ptr noundef nonnull %18) #6
  br i1 %.not, label %183, label %188

183:                                              ; preds = %177
  %184 = call i32 @zstein_(ptr noundef nonnull %3, ptr noundef %15, ptr noundef %136, ptr noundef nonnull %10, ptr noundef %11, ptr noundef %16, ptr noundef %179, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %180, ptr noundef %181, ptr noundef %17, ptr noundef nonnull %18) #6
  %185 = load i64, ptr %3, align 8, !tbaa !5
  %186 = getelementptr %struct.doublecomplex, ptr %14, i64 %185
  %187 = call i32 @zupmtr_(ptr noundef nonnull @.str.4, ptr noundef %2, ptr noundef nonnull @.str.3, ptr noundef nonnull %3, ptr noundef nonnull %10, ptr noundef %4, ptr noundef %14, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %186, ptr noundef nonnull %26) #6
  br label %188

188:                                              ; preds = %177, %183, %175
  br i1 %133, label %189, label %200

189:                                              ; preds = %188
  %190 = load i64, ptr %18, align 8, !tbaa !5
  %191 = icmp eq i64 %190, 0
  br i1 %191, label %192, label %194

192:                                              ; preds = %189
  %193 = load i64, ptr %10, align 8, !tbaa !5
  br label %196

194:                                              ; preds = %189
  %195 = add nsw i64 %190, -1
  br label %196

196:                                              ; preds = %194, %192
  %storemerge339 = phi i64 [ %195, %194 ], [ %193, %192 ]
  store i64 %storemerge339, ptr %24, align 8, !tbaa !5
  %197 = load double, ptr %25, align 8, !tbaa !9
  %198 = fdiv double 1.000000e+00, %197
  store double %198, ptr %21, align 8, !tbaa !9
  %199 = call i32 @f2c_dscal(ptr noundef nonnull %24, ptr noundef nonnull %21, ptr noundef %11, ptr noundef nonnull @c__1) #6
  br label %200

200:                                              ; preds = %196, %188
  br i1 %.not, label %201, label %.loopexit

201:                                              ; preds = %200
  %202 = load i64, ptr %10, align 8, !tbaa !5
  %203 = add nsw i64 %202, -1
  store i64 %203, ptr %20, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %33, i64 16
  %.not340373 = icmp slt i64 %202, 2
  br i1 %.not340373, label %.loopexit, label %.lr.ph376

.lr.ph376:                                        ; preds = %201, %._crit_edge.thread
  %.0309374 = phi i64 [ %207, %._crit_edge.thread ], [ 1, %201 ]
  %204 = getelementptr inbounds double, ptr %30, i64 %.0309374
  %205 = load double, ptr %204, align 8, !tbaa !9
  %206 = load i64, ptr %10, align 8, !tbaa !5
  %207 = add nuw nsw i64 %.0309374, 1
  %.not341365.not = icmp slt i64 %.0309374, %206
  br i1 %.not341365.not, label %.lr.ph369, label %._crit_edge.thread

.lr.ph369:                                        ; preds = %.lr.ph376, %.lr.ph369
  %.1368 = phi i64 [ %.2, %.lr.ph369 ], [ 0, %.lr.ph376 ]
  %.0310367 = phi i64 [ %211, %.lr.ph369 ], [ %207, %.lr.ph376 ]
  %.0311366 = phi double [ %.1312, %.lr.ph369 ], [ %205, %.lr.ph376 ]
  %208 = getelementptr inbounds double, ptr %30, i64 %.0310367
  %209 = load double, ptr %208, align 8, !tbaa !9
  %210 = fcmp olt double %209, %.0311366
  %.1312 = select i1 %210, double %209, double %.0311366
  %.2 = select i1 %210, i64 %.0310367, i64 %.1368
  %211 = add nuw nsw i64 %.0310367, 1
  %.not341.not = icmp slt i64 %.0310367, %206
  br i1 %.not341.not, label %.lr.ph369, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph369
  %.not342 = icmp eq i64 %.2, 0
  br i1 %.not342, label %._crit_edge.thread, label %212

212:                                              ; preds = %._crit_edge
  %213 = getelementptr inbounds i64, ptr %35, i64 %.2
  %214 = load i64, ptr %213, align 8, !tbaa !5
  %215 = getelementptr inbounds double, ptr %30, i64 %.2
  store double %205, ptr %215, align 8, !tbaa !9
  %216 = getelementptr inbounds i64, ptr %35, i64 %.0309374
  %217 = load i64, ptr %216, align 8, !tbaa !5
  store i64 %217, ptr %213, align 8, !tbaa !5
  store double %.1312, ptr %204, align 8, !tbaa !9
  store i64 %214, ptr %216, align 8, !tbaa !5
  %218 = mul nsw i64 %.2, %31
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %218
  %219 = mul nsw i64 %.0309374, %31
  %gep372 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %219
  %220 = call i32 @f2c_zswap(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep372, ptr noundef nonnull @c__1) #6
  %221 = load i64, ptr %18, align 8, !tbaa !5
  %.not343 = icmp eq i64 %221, 0
  br i1 %.not343, label %._crit_edge.thread, label %222

222:                                              ; preds = %212
  %223 = getelementptr inbounds i64, ptr %36, i64 %.2
  %224 = load i64, ptr %223, align 8, !tbaa !5
  %225 = getelementptr inbounds i64, ptr %36, i64 %.0309374
  %226 = load i64, ptr %225, align 8, !tbaa !5
  store i64 %226, ptr %223, align 8, !tbaa !5
  store i64 %224, ptr %225, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph376, %._crit_edge, %222, %212
  %227 = load i64, ptr %20, align 8, !tbaa !5
  %.not340.not = icmp slt i64 %.0309374, %227
  br i1 %.not340.not, label %.lr.ph376, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge.thread, %201, %200, %90, %91, %.thread, %.thread350
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #6
  ret i32 0
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare i32 @dstebz_(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

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

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

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

declare i32 @f2c_zswap(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) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umin.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 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 8}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}


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