; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4

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

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

118:                                              ; preds = %114
  %119 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 -1, ptr %119, align 4, !tbaa !9
  br label %217

120:                                              ; preds = %114, %19
  %121 = load i32, ptr %61, align 4, !tbaa !9
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %131, label %123

123:                                              ; preds = %120
  %124 = load i32, ptr %65, align 4, !tbaa !9
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %131, label %126

126:                                              ; preds = %123
  %127 = load i32, ptr %62, align 4, !tbaa !9
  %128 = icmp ne i32 %127, 0
  br i1 %128, label %131, label %129

129:                                              ; preds = %126
  %130 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 -2, ptr %130, align 4, !tbaa !9
  br label %216

131:                                              ; preds = %126, %123, %120
  %132 = load ptr, ptr %22, align 8, !tbaa !5
  %133 = call i32 @lsame_(ptr noundef %132, ptr noundef @.str.4)
  %134 = icmp ne i32 %133, 0
  br i1 %134, label %141, label %135

135:                                              ; preds = %131
  %136 = load ptr, ptr %22, align 8, !tbaa !5
  %137 = call i32 @lsame_(ptr noundef %136, ptr noundef @.str.5)
  %138 = icmp ne i32 %137, 0
  br i1 %138, label %141, label %139

139:                                              ; preds = %135
  %140 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 -3, ptr %140, align 4, !tbaa !9
  br label %215

141:                                              ; preds = %135, %131
  %142 = load ptr, ptr %23, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 4, !tbaa !9
  %144 = icmp slt i32 %143, 0
  br i1 %144, label %145, label %147

145:                                              ; preds = %141
  %146 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 -4, ptr %146, align 4, !tbaa !9
  br label %214

147:                                              ; preds = %141
  %148 = load i32, ptr %65, align 4, !tbaa !9
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %150, label %163

150:                                              ; preds = %147
  %151 = load ptr, ptr %23, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = icmp sgt i32 %152, 0
  br i1 %153, label %154, label %162

154:                                              ; preds = %150
  %155 = load ptr, ptr %26, align 8, !tbaa !5
  %156 = load double, ptr %155, align 8, !tbaa !11
  %157 = load ptr, ptr %25, align 8, !tbaa !5
  %158 = load double, ptr %157, align 8, !tbaa !11
  %159 = fcmp ole double %156, %158
  br i1 %159, label %160, label %162

160:                                              ; preds = %154
  %161 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 -7, ptr %161, align 4, !tbaa !9
  br label %162

162:                                              ; preds = %160, %154, %150
  br label %213

163:                                              ; preds = %147
  %164 = load i32, ptr %62, align 4, !tbaa !9
  %165 = icmp ne i32 %164, 0
  br i1 %165, label %166, label %212

166:                                              ; preds = %163
  %167 = load ptr, ptr %27, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = icmp slt i32 %168, 1
  br i1 %169, label %183, label %170

170:                                              ; preds = %166
  %171 = load ptr, ptr %27, align 8, !tbaa !5
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = load ptr, ptr %23, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = icmp sge i32 1, %174
  br i1 %175, label %176, label %177

176:                                              ; preds = %170
  br label %180

177:                                              ; preds = %170
  %178 = load ptr, ptr %23, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  br label %180

180:                                              ; preds = %177, %176
  %181 = phi i32 [ 1, %176 ], [ %179, %177 ]
  %182 = icmp sgt i32 %172, %181
  br i1 %182, label %183, label %185

183:                                              ; preds = %180, %166
  %184 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 -8, ptr %184, align 4, !tbaa !9
  br label %211

185:                                              ; preds = %180
  %186 = load ptr, ptr %28, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = load ptr, ptr %23, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = load ptr, ptr %27, align 8, !tbaa !5
  %191 = load i32, ptr %190, align 4, !tbaa !9
  %192 = icmp sle i32 %189, %191
  br i1 %192, label %193, label %196

193:                                              ; preds = %185
  %194 = load ptr, ptr %23, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  br label %199

196:                                              ; preds = %185
  %197 = load ptr, ptr %27, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %196, %193
  %200 = phi i32 [ %195, %193 ], [ %198, %196 ]
  %201 = icmp slt i32 %187, %200
  br i1 %201, label %208, label %202

202:                                              ; preds = %199
  %203 = load ptr, ptr %28, align 8, !tbaa !5
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = load ptr, ptr %23, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = icmp sgt i32 %204, %206
  br i1 %207, label %208, label %210

208:                                              ; preds = %202, %199
  %209 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 -9, ptr %209, align 4, !tbaa !9
  br label %210

210:                                              ; preds = %208, %202
  br label %211

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

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

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

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

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

216:                                              ; preds = %215, %129
  br label %217

217:                                              ; preds = %216, %118
  %218 = load ptr, ptr %38, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  %220 = icmp eq i32 %219, 0
  br i1 %220, label %221, label %237

221:                                              ; preds = %217
  %222 = load ptr, ptr %33, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = icmp slt i32 %223, 1
  br i1 %224, label %234, label %225

225:                                              ; preds = %221
  %226 = load i32, ptr %59, align 4, !tbaa !9
  %227 = icmp ne i32 %226, 0
  br i1 %227, label %228, label %236

228:                                              ; preds = %225
  %229 = load ptr, ptr %33, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = load ptr, ptr %23, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = icmp slt i32 %230, %232
  br i1 %233, label %234, label %236

234:                                              ; preds = %228, %221
  %235 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 -14, ptr %235, align 4, !tbaa !9
  br label %236

236:                                              ; preds = %234, %228, %225
  br label %237

237:                                              ; preds = %236, %217
  %238 = load ptr, ptr %38, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %241, label %246

241:                                              ; preds = %237
  %242 = load ptr, ptr %38, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = sub nsw i32 0, %243
  store i32 %244, ptr %41, align 4, !tbaa !9
  %245 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %41, i32 noundef 6)
  store i32 1, ptr %80, align 4
  br label %841

246:                                              ; preds = %237
  %247 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 0, ptr %247, align 4, !tbaa !9
  %248 = load ptr, ptr %23, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp eq i32 %249, 0
  br i1 %250, label %251, label %252

251:                                              ; preds = %246
  store i32 1, ptr %80, align 4
  br label %841

252:                                              ; preds = %246
  %253 = load ptr, ptr %23, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = icmp eq i32 %254, 1
  br i1 %255, label %256, label %312

256:                                              ; preds = %252
  %257 = load i32, ptr %61, align 4, !tbaa !9
  %258 = icmp ne i32 %257, 0
  br i1 %258, label %262, label %259

259:                                              ; preds = %256
  %260 = load i32, ptr %62, align 4, !tbaa !9
  %261 = icmp ne i32 %260, 0
  br i1 %261, label %262, label %270

262:                                              ; preds = %259, %256
  %263 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 1, ptr %263, align 4, !tbaa !9
  %264 = load ptr, ptr %24, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.doublecomplex, ptr %264, i64 1
  %266 = getelementptr inbounds %struct.doublecomplex, ptr %265, i32 0, i32 0
  %267 = load double, ptr %266, align 8, !tbaa !13
  %268 = load ptr, ptr %31, align 8, !tbaa !5
  %269 = getelementptr inbounds double, ptr %268, i64 1
  store double %267, ptr %269, align 8, !tbaa !11
  br label %295

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

278:                                              ; preds = %270
  %279 = load ptr, ptr %26, align 8, !tbaa !5
  %280 = load double, ptr %279, align 8, !tbaa !11
  %281 = load ptr, ptr %24, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.doublecomplex, ptr %281, i64 1
  %283 = getelementptr inbounds %struct.doublecomplex, ptr %282, i32 0, i32 0
  %284 = load double, ptr %283, align 8, !tbaa !13
  %285 = fcmp oge double %280, %284
  br i1 %285, label %286, label %294

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

294:                                              ; preds = %286, %278, %270
  br label %295

295:                                              ; preds = %294, %262
  %296 = load i32, ptr %59, align 4, !tbaa !9
  %297 = icmp ne i32 %296, 0
  br i1 %297, label %298, label %311

298:                                              ; preds = %295
  %299 = load i32, ptr %39, align 4, !tbaa !9
  %300 = add nsw i32 %299, 1
  store i32 %300, ptr %41, align 4, !tbaa !9
  %301 = load ptr, ptr %32, align 8, !tbaa !5
  %302 = load i32, ptr %41, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds %struct.doublecomplex, ptr %301, i64 %303
  %305 = getelementptr inbounds %struct.doublecomplex, ptr %304, i32 0, i32 0
  store double 1.000000e+00, ptr %305, align 8, !tbaa !13
  %306 = load ptr, ptr %32, align 8, !tbaa !5
  %307 = load i32, ptr %41, align 4, !tbaa !9
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds %struct.doublecomplex, ptr %306, i64 %308
  %310 = getelementptr inbounds %struct.doublecomplex, ptr %309, i32 0, i32 1
  store double 0.000000e+00, ptr %310, align 8, !tbaa !15
  br label %311

311:                                              ; preds = %298, %295
  store i32 1, ptr %80, align 4
  br label %841

312:                                              ; preds = %252
  %313 = call double @dlamch_(ptr noundef @.str.7)
  store double %313, ptr %66, align 8, !tbaa !11
  %314 = call double @dlamch_(ptr noundef @.str.8)
  store double %314, ptr %76, align 8, !tbaa !11
  %315 = load double, ptr %66, align 8, !tbaa !11
  %316 = load double, ptr %76, align 8, !tbaa !11
  %317 = fdiv double %315, %316
  store double %317, ptr %75, align 8, !tbaa !11
  %318 = load double, ptr %75, align 8, !tbaa !11
  %319 = fdiv double 1.000000e+00, %318
  store double %319, ptr %68, align 8, !tbaa !11
  %320 = load double, ptr %75, align 8, !tbaa !11
  %321 = call double @sqrt(double noundef %320) #4
  store double %321, ptr %49, align 8, !tbaa !11
  %322 = load double, ptr %68, align 8, !tbaa !11
  %323 = call double @sqrt(double noundef %322) #4
  store double %323, ptr %43, align 8, !tbaa !11
  %324 = load double, ptr %66, align 8, !tbaa !11
  %325 = call double @sqrt(double noundef %324) #4
  %326 = call double @sqrt(double noundef %325) #4
  %327 = fdiv double 1.000000e+00, %326
  store double %327, ptr %44, align 8, !tbaa !11
  %328 = load double, ptr %43, align 8, !tbaa !11
  %329 = load double, ptr %44, align 8, !tbaa !11
  %330 = fcmp ole double %328, %329
  br i1 %330, label %331, label %333

331:                                              ; preds = %312
  %332 = load double, ptr %43, align 8, !tbaa !11
  br label %335

333:                                              ; preds = %312
  %334 = load double, ptr %44, align 8, !tbaa !11
  br label %335

335:                                              ; preds = %333, %331
  %336 = phi double [ %332, %331 ], [ %334, %333 ]
  store double %336, ptr %50, align 8, !tbaa !11
  store i32 0, ptr %63, align 4, !tbaa !9
  %337 = load ptr, ptr %29, align 8, !tbaa !5
  %338 = load double, ptr %337, align 8, !tbaa !11
  store double %338, ptr %67, align 8, !tbaa !11
  %339 = load i32, ptr %65, align 4, !tbaa !9
  %340 = icmp ne i32 %339, 0
  br i1 %340, label %341, label %346

341:                                              ; preds = %335
  %342 = load ptr, ptr %25, align 8, !tbaa !5
  %343 = load double, ptr %342, align 8, !tbaa !11
  store double %343, ptr %77, align 8, !tbaa !11
  %344 = load ptr, ptr %26, align 8, !tbaa !5
  %345 = load double, ptr %344, align 8, !tbaa !11
  store double %345, ptr %78, align 8, !tbaa !11
  br label %347

346:                                              ; preds = %335
  store double 0.000000e+00, ptr %77, align 8, !tbaa !11
  store double 0.000000e+00, ptr %78, align 8, !tbaa !11
  br label %347

347:                                              ; preds = %346, %341
  %348 = load ptr, ptr %22, align 8, !tbaa !5
  %349 = load ptr, ptr %23, align 8, !tbaa !5
  %350 = load ptr, ptr %24, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %350, i64 1
  %352 = load ptr, ptr %35, align 8, !tbaa !5
  %353 = getelementptr inbounds double, ptr %352, i64 1
  %354 = call double @zlanhp_(ptr noundef @.str.9, ptr noundef %348, ptr noundef %349, ptr noundef %351, ptr noundef %353)
  store double %354, ptr %47, align 8, !tbaa !11
  %355 = load double, ptr %47, align 8, !tbaa !11
  %356 = fcmp ogt double %355, 0.000000e+00
  br i1 %356, label %357, label %365

357:                                              ; preds = %347
  %358 = load double, ptr %47, align 8, !tbaa !11
  %359 = load double, ptr %49, align 8, !tbaa !11
  %360 = fcmp olt double %358, %359
  br i1 %360, label %361, label %365

361:                                              ; preds = %357
  store i32 1, ptr %63, align 4, !tbaa !9
  %362 = load double, ptr %49, align 8, !tbaa !11
  %363 = load double, ptr %47, align 8, !tbaa !11
  %364 = fdiv double %362, %363
  store double %364, ptr %56, align 8, !tbaa !11
  br label %374

365:                                              ; preds = %357, %347
  %366 = load double, ptr %47, align 8, !tbaa !11
  %367 = load double, ptr %50, align 8, !tbaa !11
  %368 = fcmp ogt double %366, %367
  br i1 %368, label %369, label %373

369:                                              ; preds = %365
  store i32 1, ptr %63, align 4, !tbaa !9
  %370 = load double, ptr %50, align 8, !tbaa !11
  %371 = load double, ptr %47, align 8, !tbaa !11
  %372 = fdiv double %370, %371
  store double %372, ptr %56, align 8, !tbaa !11
  br label %373

373:                                              ; preds = %369, %365
  br label %374

374:                                              ; preds = %373, %361
  %375 = load i32, ptr %63, align 4, !tbaa !9
  %376 = icmp eq i32 %375, 1
  br i1 %376, label %377, label %408

377:                                              ; preds = %374
  %378 = load ptr, ptr %23, align 8, !tbaa !5
  %379 = load i32, ptr %378, align 4, !tbaa !9
  %380 = load ptr, ptr %23, align 8, !tbaa !5
  %381 = load i32, ptr %380, align 4, !tbaa !9
  %382 = add nsw i32 %381, 1
  %383 = mul nsw i32 %379, %382
  %384 = sdiv i32 %383, 2
  store i32 %384, ptr %41, align 4, !tbaa !9
  %385 = load ptr, ptr %24, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %385, i64 1
  call void @zdscal_(ptr noundef %41, ptr noundef %56, ptr noundef %386, ptr noundef @c__1)
  %387 = load ptr, ptr %29, align 8, !tbaa !5
  %388 = load double, ptr %387, align 8, !tbaa !11
  %389 = fcmp ogt double %388, 0.000000e+00
  br i1 %389, label %390, label %395

390:                                              ; preds = %377
  %391 = load ptr, ptr %29, align 8, !tbaa !5
  %392 = load double, ptr %391, align 8, !tbaa !11
  %393 = load double, ptr %56, align 8, !tbaa !11
  %394 = fmul double %392, %393
  store double %394, ptr %67, align 8, !tbaa !11
  br label %395

395:                                              ; preds = %390, %377
  %396 = load i32, ptr %65, align 4, !tbaa !9
  %397 = icmp ne i32 %396, 0
  br i1 %397, label %398, label %407

398:                                              ; preds = %395
  %399 = load ptr, ptr %25, align 8, !tbaa !5
  %400 = load double, ptr %399, align 8, !tbaa !11
  %401 = load double, ptr %56, align 8, !tbaa !11
  %402 = fmul double %400, %401
  store double %402, ptr %77, align 8, !tbaa !11
  %403 = load ptr, ptr %26, align 8, !tbaa !5
  %404 = load double, ptr %403, align 8, !tbaa !11
  %405 = load double, ptr %56, align 8, !tbaa !11
  %406 = fmul double %404, %405
  store double %406, ptr %78, align 8, !tbaa !11
  br label %407

407:                                              ; preds = %398, %395
  br label %408

408:                                              ; preds = %407, %374
  store i32 1, ptr %45, align 4, !tbaa !9
  %409 = load i32, ptr %45, align 4, !tbaa !9
  %410 = load ptr, ptr %23, align 8, !tbaa !5
  %411 = load i32, ptr %410, align 4, !tbaa !9
  %412 = add nsw i32 %409, %411
  store i32 %412, ptr %46, align 4, !tbaa !9
  %413 = load i32, ptr %46, align 4, !tbaa !9
  %414 = load ptr, ptr %23, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = add nsw i32 %413, %415
  store i32 %416, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %71, align 4, !tbaa !9
  %417 = load i32, ptr %71, align 4, !tbaa !9
  %418 = load ptr, ptr %23, align 8, !tbaa !5
  %419 = load i32, ptr %418, align 4, !tbaa !9
  %420 = add nsw i32 %417, %419
  store i32 %420, ptr %73, align 4, !tbaa !9
  %421 = load ptr, ptr %22, align 8, !tbaa !5
  %422 = load ptr, ptr %23, align 8, !tbaa !5
  %423 = load ptr, ptr %24, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.doublecomplex, ptr %423, i64 1
  %425 = load ptr, ptr %35, align 8, !tbaa !5
  %426 = load i32, ptr %45, align 4, !tbaa !9
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %425, i64 %427
  %429 = load ptr, ptr %35, align 8, !tbaa !5
  %430 = load i32, ptr %46, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds double, ptr %429, i64 %431
  %433 = load ptr, ptr %34, align 8, !tbaa !5
  %434 = load i32, ptr %71, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds %struct.doublecomplex, ptr %433, i64 %435
  call void @zhptrd_(ptr noundef %421, ptr noundef %422, ptr noundef %424, ptr noundef %428, ptr noundef %432, ptr noundef %436, ptr noundef %57)
  store i32 0, ptr %51, align 4, !tbaa !9
  %437 = load i32, ptr %62, align 4, !tbaa !9
  %438 = icmp ne i32 %437, 0
  br i1 %438, label %439, label %451

439:                                              ; preds = %408
  %440 = load ptr, ptr %27, align 8, !tbaa !5
  %441 = load i32, ptr %440, align 4, !tbaa !9
  %442 = icmp eq i32 %441, 1
  br i1 %442, label %443, label %450

443:                                              ; preds = %439
  %444 = load ptr, ptr %28, align 8, !tbaa !5
  %445 = load i32, ptr %444, align 4, !tbaa !9
  %446 = load ptr, ptr %23, align 8, !tbaa !5
  %447 = load i32, ptr %446, align 4, !tbaa !9
  %448 = icmp eq i32 %445, %447
  br i1 %448, label %449, label %450

449:                                              ; preds = %443
  store i32 1, ptr %51, align 4, !tbaa !9
  br label %450

450:                                              ; preds = %449, %443, %439
  br label %451

451:                                              ; preds = %450, %408
  %452 = load i32, ptr %61, align 4, !tbaa !9
  %453 = icmp ne i32 %452, 0
  br i1 %453, label %457, label %454

454:                                              ; preds = %451
  %455 = load i32, ptr %51, align 4, !tbaa !9
  %456 = icmp ne i32 %455, 0
  br i1 %456, label %457, label %573

457:                                              ; preds = %454, %451
  %458 = load ptr, ptr %29, align 8, !tbaa !5
  %459 = load double, ptr %458, align 8, !tbaa !11
  %460 = fcmp ole double %459, 0.000000e+00
  br i1 %460, label %461, label %573

461:                                              ; preds = %457
  %462 = load ptr, ptr %23, align 8, !tbaa !5
  %463 = load ptr, ptr %35, align 8, !tbaa !5
  %464 = load i32, ptr %45, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %463, i64 %465
  %467 = load ptr, ptr %31, align 8, !tbaa !5
  %468 = getelementptr inbounds double, ptr %467, i64 1
  call void @dcopy_(ptr noundef %462, ptr noundef %466, ptr noundef @c__1, ptr noundef %468, ptr noundef @c__1)
  %469 = load i32, ptr %72, align 4, !tbaa !9
  %470 = load ptr, ptr %23, align 8, !tbaa !5
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = shl i32 %471, 1
  %473 = add nsw i32 %469, %472
  store i32 %473, ptr %55, align 4, !tbaa !9
  %474 = load i32, ptr %59, align 4, !tbaa !9
  %475 = icmp ne i32 %474, 0
  br i1 %475, label %496, label %476

476:                                              ; preds = %461
  %477 = load ptr, ptr %23, align 8, !tbaa !5
  %478 = load i32, ptr %477, align 4, !tbaa !9
  %479 = sub nsw i32 %478, 1
  store i32 %479, ptr %41, align 4, !tbaa !9
  %480 = load ptr, ptr %35, align 8, !tbaa !5
  %481 = load i32, ptr %46, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds double, ptr %480, i64 %482
  %484 = load ptr, ptr %35, align 8, !tbaa !5
  %485 = load i32, ptr %55, align 4, !tbaa !9
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %484, i64 %486
  call void @dcopy_(ptr noundef %41, ptr noundef %483, ptr noundef @c__1, ptr noundef %487, ptr noundef @c__1)
  %488 = load ptr, ptr %23, align 8, !tbaa !5
  %489 = load ptr, ptr %31, align 8, !tbaa !5
  %490 = getelementptr inbounds double, ptr %489, i64 1
  %491 = load ptr, ptr %35, align 8, !tbaa !5
  %492 = load i32, ptr %55, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %491, i64 %493
  %495 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dsterf_(ptr noundef %488, ptr noundef %490, ptr noundef %494, ptr noundef %495)
  br label %563

496:                                              ; preds = %461
  %497 = load ptr, ptr %22, align 8, !tbaa !5
  %498 = load ptr, ptr %23, align 8, !tbaa !5
  %499 = load ptr, ptr %24, align 8, !tbaa !5
  %500 = getelementptr inbounds %struct.doublecomplex, ptr %499, i64 1
  %501 = load ptr, ptr %34, align 8, !tbaa !5
  %502 = load i32, ptr %71, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds %struct.doublecomplex, ptr %501, i64 %503
  %505 = load ptr, ptr %32, align 8, !tbaa !5
  %506 = load i32, ptr %40, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds %struct.doublecomplex, ptr %505, i64 %507
  %509 = load ptr, ptr %33, align 8, !tbaa !5
  %510 = load ptr, ptr %34, align 8, !tbaa !5
  %511 = load i32, ptr %73, align 4, !tbaa !9
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct.doublecomplex, ptr %510, i64 %512
  call void @zupgtr_(ptr noundef %497, ptr noundef %498, ptr noundef %500, ptr noundef %504, ptr noundef %508, ptr noundef %509, ptr noundef %513, ptr noundef %57)
  %514 = load ptr, ptr %23, align 8, !tbaa !5
  %515 = load i32, ptr %514, align 4, !tbaa !9
  %516 = sub nsw i32 %515, 1
  store i32 %516, ptr %41, align 4, !tbaa !9
  %517 = load ptr, ptr %35, align 8, !tbaa !5
  %518 = load i32, ptr %46, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds double, ptr %517, i64 %519
  %521 = load ptr, ptr %35, align 8, !tbaa !5
  %522 = load i32, ptr %55, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds double, ptr %521, i64 %523
  call void @dcopy_(ptr noundef %41, ptr noundef %520, ptr noundef @c__1, ptr noundef %524, ptr noundef @c__1)
  %525 = load ptr, ptr %20, align 8, !tbaa !5
  %526 = load ptr, ptr %23, align 8, !tbaa !5
  %527 = load ptr, ptr %31, align 8, !tbaa !5
  %528 = getelementptr inbounds double, ptr %527, i64 1
  %529 = load ptr, ptr %35, align 8, !tbaa !5
  %530 = load i32, ptr %55, align 4, !tbaa !9
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds double, ptr %529, i64 %531
  %533 = load ptr, ptr %32, align 8, !tbaa !5
  %534 = load i32, ptr %40, align 4, !tbaa !9
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds %struct.doublecomplex, ptr %533, i64 %535
  %537 = load ptr, ptr %33, align 8, !tbaa !5
  %538 = load ptr, ptr %35, align 8, !tbaa !5
  %539 = load i32, ptr %72, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds double, ptr %538, i64 %540
  %542 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zsteqr_(ptr noundef %525, ptr noundef %526, ptr noundef %528, ptr noundef %532, ptr noundef %536, ptr noundef %537, ptr noundef %541, ptr noundef %542)
  %543 = load ptr, ptr %38, align 8, !tbaa !5
  %544 = load i32, ptr %543, align 4, !tbaa !9
  %545 = icmp eq i32 %544, 0
  br i1 %545, label %546, label %562

546:                                              ; preds = %496
  %547 = load ptr, ptr %23, align 8, !tbaa !5
  %548 = load i32, ptr %547, align 4, !tbaa !9
  store i32 %548, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %549

549:                                              ; preds = %558, %546
  %550 = load i32, ptr %53, align 4, !tbaa !9
  %551 = load i32, ptr %41, align 4, !tbaa !9
  %552 = icmp sle i32 %550, %551
  br i1 %552, label %553, label %561

553:                                              ; preds = %549
  %554 = load ptr, ptr %37, align 8, !tbaa !5
  %555 = load i32, ptr %53, align 4, !tbaa !9
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds i32, ptr %554, i64 %556
  store i32 0, ptr %557, align 4, !tbaa !9
  br label %558

558:                                              ; preds = %553
  %559 = load i32, ptr %53, align 4, !tbaa !9
  %560 = add nsw i32 %559, 1
  store i32 %560, ptr %53, align 4, !tbaa !9
  br label %549, !llvm.loop !16

561:                                              ; preds = %549
  br label %562

562:                                              ; preds = %561, %496
  br label %563

563:                                              ; preds = %562, %476
  %564 = load ptr, ptr %38, align 8, !tbaa !5
  %565 = load i32, ptr %564, align 4, !tbaa !9
  %566 = icmp eq i32 %565, 0
  br i1 %566, label %567, label %571

567:                                              ; preds = %563
  %568 = load ptr, ptr %23, align 8, !tbaa !5
  %569 = load i32, ptr %568, align 4, !tbaa !9
  %570 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 %569, ptr %570, align 4, !tbaa !9
  br label %684

571:                                              ; preds = %563
  %572 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 0, ptr %572, align 4, !tbaa !9
  br label %573

573:                                              ; preds = %571, %457, %454
  %574 = load i32, ptr %59, align 4, !tbaa !9
  %575 = icmp ne i32 %574, 0
  br i1 %575, label %576, label %578

576:                                              ; preds = %573
  %577 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 66, ptr %577, align 1, !tbaa !18
  br label %580

578:                                              ; preds = %573
  %579 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 69, ptr %579, align 1, !tbaa !18
  br label %580

580:                                              ; preds = %578, %576
  store i32 1, ptr %64, align 4, !tbaa !9
  %581 = load i32, ptr %64, align 4, !tbaa !9
  %582 = load ptr, ptr %23, align 8, !tbaa !5
  %583 = load i32, ptr %582, align 4, !tbaa !9
  %584 = add nsw i32 %581, %583
  store i32 %584, ptr %70, align 4, !tbaa !9
  %585 = load i32, ptr %70, align 4, !tbaa !9
  %586 = load ptr, ptr %23, align 8, !tbaa !5
  %587 = load i32, ptr %586, align 4, !tbaa !9
  %588 = add nsw i32 %585, %587
  store i32 %588, ptr %69, align 4, !tbaa !9
  %589 = load ptr, ptr %21, align 8, !tbaa !5
  %590 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  %591 = load ptr, ptr %23, align 8, !tbaa !5
  %592 = load ptr, ptr %27, align 8, !tbaa !5
  %593 = load ptr, ptr %28, align 8, !tbaa !5
  %594 = load ptr, ptr %35, align 8, !tbaa !5
  %595 = load i32, ptr %45, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds double, ptr %594, i64 %596
  %598 = load ptr, ptr %35, align 8, !tbaa !5
  %599 = load i32, ptr %46, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %598, i64 %600
  %602 = load ptr, ptr %30, align 8, !tbaa !5
  %603 = load ptr, ptr %31, align 8, !tbaa !5
  %604 = getelementptr inbounds double, ptr %603, i64 1
  %605 = load ptr, ptr %36, align 8, !tbaa !5
  %606 = load i32, ptr %64, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i32, ptr %605, i64 %607
  %609 = load ptr, ptr %36, align 8, !tbaa !5
  %610 = load i32, ptr %70, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds i32, ptr %609, i64 %611
  %613 = load ptr, ptr %35, align 8, !tbaa !5
  %614 = load i32, ptr %72, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds double, ptr %613, i64 %615
  %617 = load ptr, ptr %36, align 8, !tbaa !5
  %618 = load i32, ptr %69, align 4, !tbaa !9
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds i32, ptr %617, i64 %619
  %621 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dstebz_(ptr noundef %589, ptr noundef %590, ptr noundef %591, ptr noundef %77, ptr noundef %78, ptr noundef %592, ptr noundef %593, ptr noundef %67, ptr noundef %597, ptr noundef %601, ptr noundef %602, ptr noundef %74, ptr noundef %604, ptr noundef %608, ptr noundef %612, ptr noundef %616, ptr noundef %620, ptr noundef %621)
  %622 = load i32, ptr %59, align 4, !tbaa !9
  %623 = icmp ne i32 %622, 0
  br i1 %623, label %624, label %683

624:                                              ; preds = %580
  %625 = load ptr, ptr %23, align 8, !tbaa !5
  %626 = load ptr, ptr %35, align 8, !tbaa !5
  %627 = load i32, ptr %45, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds double, ptr %626, i64 %628
  %630 = load ptr, ptr %35, align 8, !tbaa !5
  %631 = load i32, ptr %46, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds double, ptr %630, i64 %632
  %634 = load ptr, ptr %30, align 8, !tbaa !5
  %635 = load ptr, ptr %31, align 8, !tbaa !5
  %636 = getelementptr inbounds double, ptr %635, i64 1
  %637 = load ptr, ptr %36, align 8, !tbaa !5
  %638 = load i32, ptr %64, align 4, !tbaa !9
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds i32, ptr %637, i64 %639
  %641 = load ptr, ptr %36, align 8, !tbaa !5
  %642 = load i32, ptr %70, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds i32, ptr %641, i64 %643
  %645 = load ptr, ptr %32, align 8, !tbaa !5
  %646 = load i32, ptr %40, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds %struct.doublecomplex, ptr %645, i64 %647
  %649 = load ptr, ptr %33, align 8, !tbaa !5
  %650 = load ptr, ptr %35, align 8, !tbaa !5
  %651 = load i32, ptr %72, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %650, i64 %652
  %654 = load ptr, ptr %36, align 8, !tbaa !5
  %655 = load i32, ptr %69, align 4, !tbaa !9
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds i32, ptr %654, i64 %656
  %658 = load ptr, ptr %37, align 8, !tbaa !5
  %659 = getelementptr inbounds i32, ptr %658, i64 1
  %660 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zstein_(ptr noundef %625, ptr noundef %629, ptr noundef %633, ptr noundef %634, ptr noundef %636, ptr noundef %640, ptr noundef %644, ptr noundef %648, ptr noundef %649, ptr noundef %653, ptr noundef %657, ptr noundef %659, ptr noundef %660)
  %661 = load i32, ptr %71, align 4, !tbaa !9
  %662 = load ptr, ptr %23, align 8, !tbaa !5
  %663 = load i32, ptr %662, align 4, !tbaa !9
  %664 = add nsw i32 %661, %663
  store i32 %664, ptr %73, align 4, !tbaa !9
  %665 = load ptr, ptr %22, align 8, !tbaa !5
  %666 = load ptr, ptr %23, align 8, !tbaa !5
  %667 = load ptr, ptr %30, align 8, !tbaa !5
  %668 = load ptr, ptr %24, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.doublecomplex, ptr %668, i64 1
  %670 = load ptr, ptr %34, align 8, !tbaa !5
  %671 = load i32, ptr %71, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %670, i64 %672
  %674 = load ptr, ptr %32, align 8, !tbaa !5
  %675 = load i32, ptr %40, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %674, i64 %676
  %678 = load ptr, ptr %33, align 8, !tbaa !5
  %679 = load ptr, ptr %34, align 8, !tbaa !5
  %680 = load i32, ptr %73, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds %struct.doublecomplex, ptr %679, i64 %681
  call void @zupmtr_(ptr noundef @.str.4, ptr noundef %665, ptr noundef @.str.3, ptr noundef %666, ptr noundef %667, ptr noundef %669, ptr noundef %673, ptr noundef %677, ptr noundef %678, ptr noundef %682, ptr noundef %57)
  br label %683

683:                                              ; preds = %624, %580
  br label %684

684:                                              ; preds = %683, %567
  %685 = load i32, ptr %63, align 4, !tbaa !9
  %686 = icmp eq i32 %685, 1
  br i1 %686, label %687, label %703

687:                                              ; preds = %684
  %688 = load ptr, ptr %38, align 8, !tbaa !5
  %689 = load i32, ptr %688, align 4, !tbaa !9
  %690 = icmp eq i32 %689, 0
  br i1 %690, label %691, label %694

691:                                              ; preds = %687
  %692 = load ptr, ptr %30, align 8, !tbaa !5
  %693 = load i32, ptr %692, align 4, !tbaa !9
  store i32 %693, ptr %48, align 4, !tbaa !9
  br label %698

694:                                              ; preds = %687
  %695 = load ptr, ptr %38, align 8, !tbaa !5
  %696 = load i32, ptr %695, align 4, !tbaa !9
  %697 = sub nsw i32 %696, 1
  store i32 %697, ptr %48, align 4, !tbaa !9
  br label %698

698:                                              ; preds = %694, %691
  %699 = load double, ptr %56, align 8, !tbaa !11
  %700 = fdiv double 1.000000e+00, %699
  store double %700, ptr %43, align 8, !tbaa !11
  %701 = load ptr, ptr %31, align 8, !tbaa !5
  %702 = getelementptr inbounds double, ptr %701, i64 1
  call void @dscal_(ptr noundef %48, ptr noundef %43, ptr noundef %702, ptr noundef @c__1)
  br label %703

703:                                              ; preds = %698, %684
  %704 = load i32, ptr %59, align 4, !tbaa !9
  %705 = icmp ne i32 %704, 0
  br i1 %705, label %706, label %840

706:                                              ; preds = %703
  %707 = load ptr, ptr %30, align 8, !tbaa !5
  %708 = load i32, ptr %707, align 4, !tbaa !9
  %709 = sub nsw i32 %708, 1
  store i32 %709, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %710

710:                                              ; preds = %836, %706
  %711 = load i32, ptr %54, align 4, !tbaa !9
  %712 = load i32, ptr %41, align 4, !tbaa !9
  %713 = icmp sle i32 %711, %712
  br i1 %713, label %714, label %839

714:                                              ; preds = %710
  store i32 0, ptr %53, align 4, !tbaa !9
  %715 = load ptr, ptr %31, align 8, !tbaa !5
  %716 = load i32, ptr %54, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds double, ptr %715, i64 %717
  %719 = load double, ptr %718, align 8, !tbaa !11
  store double %719, ptr %79, align 8, !tbaa !11
  %720 = load ptr, ptr %30, align 8, !tbaa !5
  %721 = load i32, ptr %720, align 4, !tbaa !9
  store i32 %721, ptr %42, align 4, !tbaa !9
  %722 = load i32, ptr %54, align 4, !tbaa !9
  %723 = add nsw i32 %722, 1
  store i32 %723, ptr %60, align 4, !tbaa !9
  br label %724

724:                                              ; preds = %744, %714
  %725 = load i32, ptr %60, align 4, !tbaa !9
  %726 = load i32, ptr %42, align 4, !tbaa !9
  %727 = icmp sle i32 %725, %726
  br i1 %727, label %728, label %747

728:                                              ; preds = %724
  %729 = load ptr, ptr %31, align 8, !tbaa !5
  %730 = load i32, ptr %60, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds double, ptr %729, i64 %731
  %733 = load double, ptr %732, align 8, !tbaa !11
  %734 = load double, ptr %79, align 8, !tbaa !11
  %735 = fcmp olt double %733, %734
  br i1 %735, label %736, label %743

736:                                              ; preds = %728
  %737 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %737, ptr %53, align 4, !tbaa !9
  %738 = load ptr, ptr %31, align 8, !tbaa !5
  %739 = load i32, ptr %60, align 4, !tbaa !9
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds double, ptr %738, i64 %740
  %742 = load double, ptr %741, align 8, !tbaa !11
  store double %742, ptr %79, align 8, !tbaa !11
  br label %743

743:                                              ; preds = %736, %728
  br label %744

744:                                              ; preds = %743
  %745 = load i32, ptr %60, align 4, !tbaa !9
  %746 = add nsw i32 %745, 1
  store i32 %746, ptr %60, align 4, !tbaa !9
  br label %724, !llvm.loop !19

747:                                              ; preds = %724
  %748 = load i32, ptr %53, align 4, !tbaa !9
  %749 = icmp ne i32 %748, 0
  br i1 %749, label %750, label %835

750:                                              ; preds = %747
  %751 = load ptr, ptr %36, align 8, !tbaa !5
  %752 = load i32, ptr %64, align 4, !tbaa !9
  %753 = load i32, ptr %53, align 4, !tbaa !9
  %754 = add nsw i32 %752, %753
  %755 = sub nsw i32 %754, 1
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds i32, ptr %751, i64 %756
  %758 = load i32, ptr %757, align 4, !tbaa !9
  store i32 %758, ptr %52, align 4, !tbaa !9
  %759 = load ptr, ptr %31, align 8, !tbaa !5
  %760 = load i32, ptr %54, align 4, !tbaa !9
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds double, ptr %759, i64 %761
  %763 = load double, ptr %762, align 8, !tbaa !11
  %764 = load ptr, ptr %31, align 8, !tbaa !5
  %765 = load i32, ptr %53, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds double, ptr %764, i64 %766
  store double %763, ptr %767, align 8, !tbaa !11
  %768 = load ptr, ptr %36, align 8, !tbaa !5
  %769 = load i32, ptr %64, align 4, !tbaa !9
  %770 = load i32, ptr %54, align 4, !tbaa !9
  %771 = add nsw i32 %769, %770
  %772 = sub nsw i32 %771, 1
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds i32, ptr %768, i64 %773
  %775 = load i32, ptr %774, align 4, !tbaa !9
  %776 = load ptr, ptr %36, align 8, !tbaa !5
  %777 = load i32, ptr %64, align 4, !tbaa !9
  %778 = load i32, ptr %53, align 4, !tbaa !9
  %779 = add nsw i32 %777, %778
  %780 = sub nsw i32 %779, 1
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds i32, ptr %776, i64 %781
  store i32 %775, ptr %782, align 4, !tbaa !9
  %783 = load double, ptr %79, align 8, !tbaa !11
  %784 = load ptr, ptr %31, align 8, !tbaa !5
  %785 = load i32, ptr %54, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %784, i64 %786
  store double %783, ptr %787, align 8, !tbaa !11
  %788 = load i32, ptr %52, align 4, !tbaa !9
  %789 = load ptr, ptr %36, align 8, !tbaa !5
  %790 = load i32, ptr %64, align 4, !tbaa !9
  %791 = load i32, ptr %54, align 4, !tbaa !9
  %792 = add nsw i32 %790, %791
  %793 = sub nsw i32 %792, 1
  %794 = sext i32 %793 to i64
  %795 = getelementptr inbounds i32, ptr %789, i64 %794
  store i32 %788, ptr %795, align 4, !tbaa !9
  %796 = load ptr, ptr %23, align 8, !tbaa !5
  %797 = load ptr, ptr %32, align 8, !tbaa !5
  %798 = load i32, ptr %53, align 4, !tbaa !9
  %799 = load i32, ptr %39, align 4, !tbaa !9
  %800 = mul nsw i32 %798, %799
  %801 = add nsw i32 %800, 1
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds %struct.doublecomplex, ptr %797, i64 %802
  %804 = load ptr, ptr %32, align 8, !tbaa !5
  %805 = load i32, ptr %54, align 4, !tbaa !9
  %806 = load i32, ptr %39, align 4, !tbaa !9
  %807 = mul nsw i32 %805, %806
  %808 = add nsw i32 %807, 1
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds %struct.doublecomplex, ptr %804, i64 %809
  call void @zswap_(ptr noundef %796, ptr noundef %803, ptr noundef @c__1, ptr noundef %810, ptr noundef @c__1)
  %811 = load ptr, ptr %38, align 8, !tbaa !5
  %812 = load i32, ptr %811, align 4, !tbaa !9
  %813 = icmp ne i32 %812, 0
  br i1 %813, label %814, label %834

814:                                              ; preds = %750
  %815 = load ptr, ptr %37, align 8, !tbaa !5
  %816 = load i32, ptr %53, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds i32, ptr %815, i64 %817
  %819 = load i32, ptr %818, align 4, !tbaa !9
  store i32 %819, ptr %52, align 4, !tbaa !9
  %820 = load ptr, ptr %37, align 8, !tbaa !5
  %821 = load i32, ptr %54, align 4, !tbaa !9
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds i32, ptr %820, i64 %822
  %824 = load i32, ptr %823, align 4, !tbaa !9
  %825 = load ptr, ptr %37, align 8, !tbaa !5
  %826 = load i32, ptr %53, align 4, !tbaa !9
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds i32, ptr %825, i64 %827
  store i32 %824, ptr %828, align 4, !tbaa !9
  %829 = load i32, ptr %52, align 4, !tbaa !9
  %830 = load ptr, ptr %37, align 8, !tbaa !5
  %831 = load i32, ptr %54, align 4, !tbaa !9
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds i32, ptr %830, i64 %832
  store i32 %829, ptr %833, align 4, !tbaa !9
  br label %834

834:                                              ; preds = %814, %750
  br label %835

835:                                              ; preds = %834, %747
  br label %836

836:                                              ; preds = %835
  %837 = load i32, ptr %54, align 4, !tbaa !9
  %838 = add nsw i32 %837, 1
  store i32 %838, ptr %54, align 4, !tbaa !9
  br label %710, !llvm.loop !20

839:                                              ; preds = %710
  br label %840

840:                                              ; preds = %839, %703
  store i32 1, ptr %80, align 4
  br label %841

841:                                              ; preds = %840, %311, %251, %241
  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 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  ret void
}

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

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

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

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

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

declare void @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 = !{!"int", !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 i32, align 4

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

43:                                               ; preds = %19
  %44 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not327 = icmp eq i32 %44, 0
  br i1 %.not327, label %.thread348.sink.split, label %45

45:                                               ; preds = %43, %19
  %46 = icmp ne i32 %40, 0
  %47 = icmp ne i32 %41, 0
  %or.cond = select i1 %46, i1 true, i1 %47
  %48 = icmp ne i32 %42, 0
  %or.cond3 = select i1 %or.cond, i1 true, i1 %48
  br i1 %or.cond3, label %49, label %.thread348.sink.split

49:                                               ; preds = %45
  %50 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.4) #6
  %.not328 = icmp eq i32 %50, 0
  br i1 %.not328, label %51, label %53

51:                                               ; preds = %49
  %52 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.5) #6
  %.not329 = icmp eq i32 %52, 0
  br i1 %.not329, label %.thread348.sink.split, label %53

53:                                               ; preds = %51, %49
  %54 = load i32, ptr %3, align 4, !tbaa !5
  %55 = icmp slt i32 %54, 0
  br i1 %55, label %.thread348.sink.split, label %56

56:                                               ; preds = %53
  br i1 %47, label %57, label %62

57:                                               ; preds = %56
  %.not331 = icmp eq i32 %54, 0
  br i1 %.not331, label %71, label %58

58:                                               ; preds = %57
  %59 = load double, ptr %6, align 8, !tbaa !9
  %60 = load double, ptr %5, align 8, !tbaa !9
  %61 = fcmp ugt double %59, %60
  br i1 %61, label %71, label %.thread348.sink.split

62:                                               ; preds = %56
  br i1 %48, label %63, label %71

63:                                               ; preds = %62
  %64 = load i32, ptr %7, align 4, !tbaa !5
  %65 = icmp slt i32 %64, 1
  %spec.select = tail call i32 @llvm.umax.i32(i32 %54, i32 1)
  %66 = icmp ugt i32 %64, %spec.select
  %or.cond359 = or i1 %65, %66
  br i1 %or.cond359, label %.thread348.sink.split, label %67

67:                                               ; preds = %63
  %68 = load i32, ptr %8, align 4, !tbaa !5
  %. = tail call i32 @llvm.umin.i32(i32 %54, i32 %64)
  %69 = icmp slt i32 %68, %.
  %70 = icmp ugt i32 %68, %54
  %or.cond357 = or i1 %69, %70
  br i1 %or.cond357, label %.thread348.sink.split, label %71

71:                                               ; preds = %67, %62, %57, %58
  %.pr = load i32, ptr %18, align 4, !tbaa !5
  %72 = icmp eq i32 %.pr, 0
  br i1 %72, label %73, label %.thread348

73:                                               ; preds = %71
  %74 = load i32, ptr %13, align 4, !tbaa !5
  %75 = icmp slt i32 %74, 1
  %76 = icmp ult i32 %74, %54
  %or.cond385 = and i1 %.not, %76
  %or.cond388 = or i1 %75, %or.cond385
  br i1 %or.cond388, label %.thread348.sink.split, label %.thread

.thread348.sink.split:                            ; preds = %73, %67, %63, %58, %53, %51, %45, %43
  %.sink386 = phi i32 [ -1, %43 ], [ -2, %45 ], [ -3, %51 ], [ -4, %53 ], [ -7, %58 ], [ -8, %63 ], [ -9, %67 ], [ -14, %73 ]
  store i32 %.sink386, ptr %18, align 4, !tbaa !5
  br label %.thread348

.thread348:                                       ; preds = %.thread348.sink.split, %71
  %77 = phi i32 [ %.pr, %71 ], [ %.sink386, %.thread348.sink.split ]
  %78 = sub nsw i32 0, %77
  store i32 %78, ptr %20, align 4, !tbaa !5
  %79 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %20, i32 noundef 6) #6
  br label %.loopexit

.thread:                                          ; preds = %73
  store i32 0, ptr %10, align 4, !tbaa !5
  %80 = load i32, ptr %3, align 4, !tbaa !5
  switch i32 %80, label %96 [
    i32 0, label %.loopexit
    i32 1, label %81
  ]

81:                                               ; preds = %.thread
  %or.cond5 = select i1 %46, i1 true, i1 %48
  br i1 %or.cond5, label %82, label %84

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

84:                                               ; preds = %81
  %85 = load double, ptr %5, align 8, !tbaa !9
  %86 = load double, ptr %4, align 8, !tbaa !11
  %87 = fcmp olt double %85, %86
  br i1 %87, label %88, label %92

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

91:                                               ; preds = %88
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %82, %91
  %.sink387 = phi double [ %86, %91 ], [ %83, %82 ]
  store double %.sink387, ptr %11, align 8, !tbaa !9
  br label %92

92:                                               ; preds = %.sink.split, %84, %88
  br i1 %.not, label %93, label %.loopexit

93:                                               ; preds = %92
  store double 1.000000e+00, ptr %12, align 8, !tbaa !11
  %94 = sext i32 %32 to i64
  %95 = getelementptr inbounds %struct.doublecomplex, ptr %34, i64 %94, i32 1
  store double 0.000000e+00, ptr %95, align 8, !tbaa !13
  br label %.loopexit

96:                                               ; preds = %.thread
  %97 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #6
  %98 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %99 = fdiv double %97, %98
  %100 = fdiv double 1.000000e+00, %99
  %101 = tail call double @sqrt(double noundef %99) #6
  %102 = tail call double @sqrt(double noundef %100) #6
  store double %102, ptr %21, align 8, !tbaa !9
  %103 = tail call double @sqrt(double noundef %97) #6
  %104 = tail call double @sqrt(double noundef %103) #6
  %105 = fdiv double 1.000000e+00, %104
  %106 = fcmp ole double %102, %105
  %107 = select i1 %106, double %102, double %105
  %108 = load double, ptr %9, align 8, !tbaa !9
  store double %108, ptr %26, align 8, !tbaa !9
  %.not333 = icmp eq i32 %41, 0
  br i1 %.not333, label %112, label %109

109:                                              ; preds = %96
  %110 = load double, ptr %5, align 8, !tbaa !9
  %111 = load double, ptr %6, align 8, !tbaa !9
  br label %112

112:                                              ; preds = %96, %109
  %.sink = phi double [ %110, %109 ], [ 0.000000e+00, %96 ]
  %storemerge = phi double [ %111, %109 ], [ 0.000000e+00, %96 ]
  store double %.sink, ptr %28, align 8
  store double %storemerge, ptr %29, align 8, !tbaa !9
  %113 = tail call double @zlanhp_(ptr noundef nonnull @.str.9, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %15) #6
  %114 = fcmp ogt double %113, 0.000000e+00
  %115 = fcmp olt double %113, %101
  %or.cond342 = select i1 %114, i1 %115, i1 false
  br i1 %or.cond342, label %118, label %116

116:                                              ; preds = %112
  %117 = fcmp ogt double %113, %107
  br i1 %117, label %118, label %135

118:                                              ; preds = %116, %112
  %.pn = phi double [ %101, %112 ], [ %107, %116 ]
  %storemerge358 = fdiv double %.pn, %113
  store double %storemerge358, ptr %23, align 8, !tbaa !9
  %119 = load i32, ptr %3, align 4, !tbaa !5
  %120 = add nsw i32 %119, 1
  %121 = mul nsw i32 %120, %119
  %122 = sdiv i32 %121, 2
  store i32 %122, ptr %20, align 4, !tbaa !5
  call void @zdscal_(ptr noundef nonnull %20, ptr noundef nonnull %23, ptr noundef %4, ptr noundef nonnull @c__1) #6
  %123 = load double, ptr %9, align 8, !tbaa !9
  %124 = fcmp ogt double %123, 0.000000e+00
  br i1 %124, label %125, label %128

125:                                              ; preds = %118
  %126 = load double, ptr %23, align 8, !tbaa !9
  %127 = fmul double %123, %126
  store double %127, ptr %26, align 8, !tbaa !9
  br label %128

128:                                              ; preds = %125, %118
  br i1 %.not333, label %135, label %129

129:                                              ; preds = %128
  %130 = load double, ptr %5, align 8, !tbaa !9
  %131 = load double, ptr %23, align 8, !tbaa !9
  %132 = fmul double %130, %131
  store double %132, ptr %28, align 8, !tbaa !9
  %133 = load double, ptr %6, align 8, !tbaa !9
  %134 = fmul double %131, %133
  store double %134, ptr %29, align 8, !tbaa !9
  br label %135

135:                                              ; preds = %116, %128, %129
  %136 = phi i1 [ true, %128 ], [ true, %129 ], [ false, %116 ]
  %137 = load i32, ptr %3, align 4, !tbaa !5
  %138 = add nsw i32 %137, 1
  %139 = add nsw i32 %138, %137
  %140 = sext i32 %138 to i64
  %141 = getelementptr inbounds double, ptr %36, i64 %140
  call void @zhptrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %15, ptr noundef nonnull %141, ptr noundef %14, ptr noundef nonnull %24) #6
  %.not334 = icmp eq i32 %42, 0
  br i1 %.not334, label %149, label %142

142:                                              ; preds = %135
  %143 = load i32, ptr %7, align 4, !tbaa !5
  %144 = icmp eq i32 %143, 1
  br i1 %144, label %145, label %149

145:                                              ; preds = %142
  %146 = load i32, ptr %8, align 4, !tbaa !5
  %147 = load i32, ptr %3, align 4, !tbaa !5
  %148 = icmp eq i32 %146, %147
  br label %149

149:                                              ; preds = %145, %142, %135
  %150 = phi i1 [ false, %142 ], [ false, %135 ], [ %148, %145 ]
  %or.cond7 = or i1 %46, %150
  br i1 %or.cond7, label %151, label %179

151:                                              ; preds = %149
  %152 = load double, ptr %9, align 8, !tbaa !9
  %153 = fcmp ugt double %152, 0.000000e+00
  br i1 %153, label %179, label %154

154:                                              ; preds = %151
  call void @dcopy_(ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #6
  %155 = load i32, ptr %3, align 4, !tbaa !5
  %156 = shl i32 %155, 1
  %157 = add nsw i32 %156, %139
  br i1 %.not, label %162, label %158

158:                                              ; preds = %154
  %159 = add nsw i32 %155, -1
  store i32 %159, ptr %20, align 4, !tbaa !5
  %160 = sext i32 %157 to i64
  %161 = getelementptr inbounds double, ptr %36, i64 %160
  call void @dcopy_(ptr noundef nonnull %20, ptr noundef nonnull %141, ptr noundef nonnull @c__1, ptr noundef nonnull %161, ptr noundef nonnull @c__1) #6
  call void @dsterf_(ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %161, ptr noundef nonnull %18) #6
  br label %.loopexit360

162:                                              ; preds = %154
  %163 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %140
  call void @zupgtr_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %14, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %163, ptr noundef nonnull %24) #6
  %164 = load i32, ptr %3, align 4, !tbaa !5
  %165 = add nsw i32 %164, -1
  store i32 %165, ptr %20, align 4, !tbaa !5
  %166 = sext i32 %157 to i64
  %167 = getelementptr inbounds double, ptr %36, i64 %166
  call void @dcopy_(ptr noundef nonnull %20, ptr noundef nonnull %141, ptr noundef nonnull @c__1, ptr noundef nonnull %167, ptr noundef nonnull @c__1) #6
  %168 = sext i32 %139 to i64
  %169 = getelementptr inbounds double, ptr %36, i64 %168
  call void @zsteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %167, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %169, ptr noundef nonnull %18) #6
  %170 = load i32, ptr %18, align 4, !tbaa !5
  %171 = icmp eq i32 %170, 0
  br i1 %171, label %172, label %.thread354

172:                                              ; preds = %162
  %173 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %173, ptr %20, align 4, !tbaa !5
  %.not335361 = icmp slt i32 %173, 1
  br i1 %.not335361, label %.loopexit360, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %172
  %174 = zext nneg i32 %173 to i64
  %175 = shl nuw nsw i64 %174, 2
  call void @llvm.memset.p0.i64(ptr align 4 %17, i8 0, i64 %175, i1 false), !tbaa !5
  br label %.loopexit360

.loopexit360:                                     ; preds = %.lr.ph.preheader, %172, %158
  %.pr353 = load i32, ptr %18, align 4, !tbaa !5
  %176 = icmp eq i32 %.pr353, 0
  br i1 %176, label %177, label %.thread354

177:                                              ; preds = %.loopexit360
  %178 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %178, ptr %10, align 4, !tbaa !5
  br label %194

.thread354:                                       ; preds = %162, %.loopexit360
  store i32 0, ptr %18, align 4, !tbaa !5
  br label %179

179:                                              ; preds = %149, %.thread354, %151
  %.344 = select i1 %.not, i8 66, i8 69
  store i8 %.344, ptr %25, align 1, !tbaa !14
  %180 = load i32, ptr %3, align 4, !tbaa !5
  %181 = add nsw i32 %180, 1
  %182 = add nsw i32 %181, %180
  %183 = sext i32 %181 to i64
  %184 = getelementptr inbounds i32, ptr %37, i64 %183
  %185 = sext i32 %139 to i64
  %186 = getelementptr inbounds double, ptr %36, i64 %185
  %187 = sext i32 %182 to i64
  %188 = getelementptr inbounds i32, ptr %37, i64 %187
  call void @dstebz_(ptr noundef %1, ptr noundef nonnull %25, ptr noundef nonnull %3, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef %7, ptr noundef %8, ptr noundef nonnull %26, ptr noundef %15, ptr noundef nonnull %141, ptr noundef nonnull %10, ptr noundef nonnull %27, ptr noundef %11, ptr noundef %16, ptr noundef nonnull %184, ptr noundef nonnull %186, ptr noundef nonnull %188, ptr noundef nonnull %18) #6
  br i1 %.not, label %189, label %194

189:                                              ; preds = %179
  call void @zstein_(ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull %141, ptr noundef nonnull %10, ptr noundef %11, ptr noundef %16, ptr noundef nonnull %184, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %186, ptr noundef nonnull %188, ptr noundef %17, ptr noundef nonnull %18) #6
  %190 = load i32, ptr %3, align 4, !tbaa !5
  %191 = sext i32 %190 to i64
  %192 = getelementptr %struct.doublecomplex, ptr %35, i64 %191
  %193 = getelementptr i8, ptr %192, i64 16
  call void @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 %193, ptr noundef nonnull %24) #6
  br label %194

194:                                              ; preds = %179, %189, %177
  br i1 %136, label %195, label %205

195:                                              ; preds = %194
  %196 = load i32, ptr %18, align 4, !tbaa !5
  %197 = icmp eq i32 %196, 0
  br i1 %197, label %198, label %200

198:                                              ; preds = %195
  %199 = load i32, ptr %10, align 4, !tbaa !5
  br label %202

200:                                              ; preds = %195
  %201 = add nsw i32 %196, -1
  br label %202

202:                                              ; preds = %200, %198
  %storemerge337 = phi i32 [ %201, %200 ], [ %199, %198 ]
  store i32 %storemerge337, ptr %22, align 4, !tbaa !5
  %203 = load double, ptr %23, align 8, !tbaa !9
  %204 = fdiv double 1.000000e+00, %203
  store double %204, ptr %21, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %22, ptr noundef nonnull %21, ptr noundef %11, ptr noundef nonnull @c__1) #6
  br label %205

205:                                              ; preds = %202, %194
  br i1 %.not, label %206, label %.loopexit

206:                                              ; preds = %205
  %207 = load i32, ptr %10, align 4, !tbaa !5
  %208 = add nsw i32 %207, -1
  store i32 %208, ptr %20, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %34, i64 16
  %.not338371 = icmp slt i32 %207, 2
  br i1 %.not338371, label %.loopexit, label %.lr.ph374.preheader

.lr.ph374.preheader:                              ; preds = %206
  %209 = sext i32 %31 to i64
  br label %.lr.ph374

.lr.ph374:                                        ; preds = %.lr.ph374.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph374.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv379 = phi i64 [ 1, %.lr.ph374.preheader ], [ %indvars.iv.next380, %._crit_edge.thread ]
  %indvars.iv = phi i64 [ 2, %.lr.ph374.preheader ], [ %indvars.iv.next, %._crit_edge.thread ]
  %210 = getelementptr inbounds double, ptr %30, i64 %indvars.iv379
  %211 = load double, ptr %210, align 8, !tbaa !9
  %212 = load i32, ptr %10, align 4, !tbaa !5
  %indvars.iv.next380 = add nuw nsw i64 %indvars.iv379, 1
  %213 = sext i32 %212 to i64
  %.not339363.not = icmp slt i64 %indvars.iv379, %213
  br i1 %.not339363.not, label %.lr.ph367.preheader, label %._crit_edge.thread

.lr.ph367.preheader:                              ; preds = %.lr.ph374
  %214 = xor i32 %indvar, -1
  %215 = add i32 %212, %214
  %reass.sub = sub i32 %212, %indvar
  %xtraiter = and i32 %215, 1
  %216 = icmp eq i32 %reass.sub, 2
  br i1 %216, label %._crit_edge.unr-lcssa, label %.lr.ph367.preheader.new

.lr.ph367.preheader.new:                          ; preds = %.lr.ph367.preheader
  %unroll_iter = and i32 %215, -2
  br label %.lr.ph367

.lr.ph367:                                        ; preds = %.lr.ph367, %.lr.ph367.preheader.new
  %indvars.iv376 = phi i64 [ %indvars.iv, %.lr.ph367.preheader.new ], [ %indvars.iv.next377.1, %.lr.ph367 ]
  %.0366 = phi double [ %211, %.lr.ph367.preheader.new ], [ %.1.1, %.lr.ph367 ]
  %.1308365 = phi i32 [ 0, %.lr.ph367.preheader.new ], [ %.2.1, %.lr.ph367 ]
  %niter = phi i32 [ 0, %.lr.ph367.preheader.new ], [ %niter.next.1, %.lr.ph367 ]
  %217 = getelementptr inbounds double, ptr %30, i64 %indvars.iv376
  %218 = load double, ptr %217, align 8, !tbaa !9
  %219 = fcmp olt double %218, %.0366
  %220 = trunc nuw i64 %indvars.iv376 to i32
  %.2 = select i1 %219, i32 %220, i32 %.1308365
  %.1 = select i1 %219, double %218, double %.0366
  %221 = getelementptr double, ptr %11, i64 %indvars.iv376
  %222 = load double, ptr %221, align 8, !tbaa !9
  %223 = fcmp olt double %222, %.1
  %224 = trunc i64 %indvars.iv376 to i32
  %225 = add i32 %224, 1
  %.2.1 = select i1 %223, i32 %225, i32 %.2
  %.1.1 = select i1 %223, double %222, double %.1
  %indvars.iv.next377.1 = add nuw nsw i64 %indvars.iv376, 2
  %niter.next.1 = add i32 %niter, 2
  %niter.ncmp.1 = icmp eq i32 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.unr-lcssa, label %.lr.ph367, !llvm.loop !15

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph367, %.lr.ph367.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph367.preheader ], [ %.2.1, %.lr.ph367 ]
  %.1.lcssa.ph = phi double [ poison, %.lr.ph367.preheader ], [ %.1.1, %.lr.ph367 ]
  %indvars.iv376.unr = phi i64 [ %indvars.iv, %.lr.ph367.preheader ], [ %indvars.iv.next377.1, %.lr.ph367 ]
  %.0366.unr = phi double [ %211, %.lr.ph367.preheader ], [ %.1.1, %.lr.ph367 ]
  %.1308365.unr = phi i32 [ 0, %.lr.ph367.preheader ], [ %.2.1, %.lr.ph367 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph367.epil

.lr.ph367.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %226 = getelementptr inbounds double, ptr %30, i64 %indvars.iv376.unr
  %227 = load double, ptr %226, align 8, !tbaa !9
  %228 = fcmp olt double %227, %.0366.unr
  %229 = trunc nuw i64 %indvars.iv376.unr to i32
  %.2.epil = select i1 %228, i32 %229, i32 %.1308365.unr
  %.1.epil = select i1 %228, double %227, double %.0366.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph367.epil
  %.2.lcssa = phi i32 [ %.2.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2.epil, %.lr.ph367.epil ]
  %.1.lcssa = phi double [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph367.epil ]
  %.not340 = icmp eq i32 %.2.lcssa, 0
  br i1 %.not340, label %._crit_edge.thread, label %230

230:                                              ; preds = %._crit_edge
  %231 = sext i32 %.2.lcssa to i64
  %232 = getelementptr inbounds i32, ptr %37, i64 %231
  %233 = load i32, ptr %232, align 4, !tbaa !5
  %234 = getelementptr inbounds double, ptr %30, i64 %231
  store double %211, ptr %234, align 8, !tbaa !9
  %235 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv379
  %236 = load i32, ptr %235, align 4, !tbaa !5
  store i32 %236, ptr %232, align 4, !tbaa !5
  store double %.1.lcssa, ptr %210, align 8, !tbaa !9
  store i32 %233, ptr %235, align 4, !tbaa !5
  %237 = mul nsw i32 %.2.lcssa, %31
  %238 = sext i32 %237 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %238
  %239 = mul nsw i64 %indvars.iv379, %209
  %gep370 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %239
  call void @zswap_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep370, ptr noundef nonnull @c__1) #6
  %240 = load i32, ptr %18, align 4, !tbaa !5
  %.not341 = icmp eq i32 %240, 0
  br i1 %.not341, label %._crit_edge.thread, label %241

241:                                              ; preds = %230
  %242 = getelementptr inbounds i32, ptr %38, i64 %231
  %243 = load i32, ptr %242, align 4, !tbaa !5
  %244 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv379
  %245 = load i32, ptr %244, align 4, !tbaa !5
  store i32 %245, ptr %242, align 4, !tbaa !5
  store i32 %243, ptr %244, align 4, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph374, %._crit_edge, %241, %230
  %246 = load i32, ptr %20, align 4, !tbaa !5
  %247 = sext i32 %246 to i64
  %.not338.not = icmp slt i64 %indvars.iv379, %247
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not338.not, label %.lr.ph374, label %.loopexit, !llvm.loop !17

.loopexit:                                        ; preds = %._crit_edge.thread, %206, %205, %92, %93, %.thread, %.thread348
  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 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  ret void
}

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

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

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 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 void @zdscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

declare void @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 void @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 void @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 void @dscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 i32 @llvm.umax.i32(i32, i32) #4

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


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