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

; 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.complex = type { float, float }

@.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 @chpevx_(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 float, align 4
  %45 = alloca float, align 4
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca i64, align 8
  %49 = alloca float, align 4
  %50 = alloca float, align 4
  %51 = alloca float, align 4
  %52 = alloca float, align 4
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca float, align 4
  %56 = alloca i64, align 8
  %57 = alloca float, align 4
  %58 = alloca float, align 4
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca float, align 4
  %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 float, align 4
  %72 = alloca float, align 4
  %73 = alloca float, align 4
  %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 float, align 4
  %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 4, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, 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 4, 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 4, 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 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 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 4, ptr %80) #4
  %82 = load ptr, ptr %25, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct.complex, 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 float, 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.complex, 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.complex, 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 float, 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 float, ptr %154, align 4, !tbaa !11
  %156 = load ptr, ptr %26, align 8, !tbaa !5
  %157 = load float, ptr %156, align 4, !tbaa !11
  %158 = fcmp ole float %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 %814

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 %814

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.complex, ptr %263, i64 1
  %265 = getelementptr inbounds %struct.complex, ptr %264, i32 0, i32 0
  %266 = load float, ptr %265, align 4, !tbaa !13
  %267 = load ptr, ptr %32, align 8, !tbaa !5
  %268 = getelementptr inbounds float, ptr %267, i64 1
  store float %266, ptr %268, align 4, !tbaa !11
  br label %294

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

277:                                              ; preds = %269
  %278 = load ptr, ptr %27, align 8, !tbaa !5
  %279 = load float, ptr %278, align 4, !tbaa !11
  %280 = load ptr, ptr %25, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.complex, ptr %280, i64 1
  %282 = getelementptr inbounds %struct.complex, ptr %281, i32 0, i32 0
  %283 = load float, ptr %282, align 4, !tbaa !13
  %284 = fcmp oge float %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.complex, ptr %287, i64 1
  %289 = getelementptr inbounds %struct.complex, ptr %288, i32 0, i32 0
  %290 = load float, ptr %289, align 4, !tbaa !13
  %291 = load ptr, ptr %32, align 8, !tbaa !5
  %292 = getelementptr inbounds float, ptr %291, i64 1
  store float %290, ptr %292, align 4, !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.complex, ptr %300, i64 %301
  %303 = getelementptr inbounds %struct.complex, ptr %302, i32 0, i32 0
  store float 1.000000e+00, ptr %303, align 4, !tbaa !13
  %304 = load ptr, ptr %33, align 8, !tbaa !5
  %305 = load i64, ptr %42, align 8, !tbaa !9
  %306 = getelementptr inbounds %struct.complex, ptr %304, i64 %305
  %307 = getelementptr inbounds %struct.complex, ptr %306, i32 0, i32 1
  store float 0.000000e+00, ptr %307, align 4, !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 %814

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

336:                                              ; preds = %309
  %337 = load float, ptr %44, align 4, !tbaa !11
  br label %340

338:                                              ; preds = %309
  %339 = load float, ptr %45, align 4, !tbaa !11
  br label %340

340:                                              ; preds = %338, %336
  %341 = phi float [ %337, %336 ], [ %339, %338 ]
  %342 = fpext float %341 to double
  %343 = fptrunc double %342 to float
  store float %343, ptr %58, align 4, !tbaa !11
  store i64 0, ptr %68, align 8, !tbaa !9
  %344 = load ptr, ptr %30, align 8, !tbaa !5
  %345 = load float, ptr %344, align 4, !tbaa !11
  store float %345, ptr %72, align 4, !tbaa !11
  %346 = load i64, ptr %70, align 8, !tbaa !9
  %347 = icmp ne i64 %346, 0
  br i1 %347, label %348, label %353

348:                                              ; preds = %340
  %349 = load ptr, ptr %26, align 8, !tbaa !5
  %350 = load float, ptr %349, align 4, !tbaa !11
  store float %350, ptr %50, align 4, !tbaa !11
  %351 = load ptr, ptr %27, align 8, !tbaa !5
  %352 = load float, ptr %351, align 4, !tbaa !11
  store float %352, ptr %51, align 4, !tbaa !11
  br label %354

353:                                              ; preds = %340
  store float 0.000000e+00, ptr %50, align 4, !tbaa !11
  store float 0.000000e+00, ptr %51, align 4, !tbaa !11
  br label %354

354:                                              ; preds = %353, %348
  %355 = load ptr, ptr %23, align 8, !tbaa !5
  %356 = load ptr, ptr %24, align 8, !tbaa !5
  %357 = load ptr, ptr %25, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.complex, ptr %357, i64 1
  %359 = load ptr, ptr %36, align 8, !tbaa !5
  %360 = getelementptr inbounds float, ptr %359, i64 1
  %361 = call double @clanhp_(ptr noundef @.str.9, ptr noundef %355, ptr noundef %356, ptr noundef %358, ptr noundef %360)
  %362 = fptrunc double %361 to float
  store float %362, ptr %55, align 4, !tbaa !11
  %363 = load float, ptr %55, align 4, !tbaa !11
  %364 = fcmp ogt float %363, 0.000000e+00
  br i1 %364, label %365, label %373

365:                                              ; preds = %354
  %366 = load float, ptr %55, align 4, !tbaa !11
  %367 = load float, ptr %57, align 4, !tbaa !11
  %368 = fcmp olt float %366, %367
  br i1 %368, label %369, label %373

369:                                              ; preds = %365
  store i64 1, ptr %68, align 8, !tbaa !9
  %370 = load float, ptr %57, align 4, !tbaa !11
  %371 = load float, ptr %55, align 4, !tbaa !11
  %372 = fdiv float %370, %371
  store float %372, ptr %62, align 4, !tbaa !11
  br label %382

373:                                              ; preds = %365, %354
  %374 = load float, ptr %55, align 4, !tbaa !11
  %375 = load float, ptr %58, align 4, !tbaa !11
  %376 = fcmp ogt float %374, %375
  br i1 %376, label %377, label %381

377:                                              ; preds = %373
  store i64 1, ptr %68, align 8, !tbaa !9
  %378 = load float, ptr %58, align 4, !tbaa !11
  %379 = load float, ptr %55, align 4, !tbaa !11
  %380 = fdiv float %378, %379
  store float %380, ptr %62, align 4, !tbaa !11
  br label %381

381:                                              ; preds = %377, %373
  br label %382

382:                                              ; preds = %381, %369
  %383 = load i64, ptr %68, align 8, !tbaa !9
  %384 = icmp eq i64 %383, 1
  br i1 %384, label %385, label %417

385:                                              ; preds = %382
  %386 = load ptr, ptr %24, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  %388 = load ptr, ptr %24, align 8, !tbaa !5
  %389 = load i64, ptr %388, align 8, !tbaa !9
  %390 = add nsw i64 %389, 1
  %391 = mul nsw i64 %387, %390
  %392 = sdiv i64 %391, 2
  store i64 %392, ptr %42, align 8, !tbaa !9
  %393 = load ptr, ptr %25, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct.complex, ptr %393, i64 1
  %395 = call i32 @f2c_csscal(ptr noundef %42, ptr noundef %62, ptr noundef %394, ptr noundef @c__1)
  %396 = load ptr, ptr %30, align 8, !tbaa !5
  %397 = load float, ptr %396, align 4, !tbaa !11
  %398 = fcmp ogt float %397, 0.000000e+00
  br i1 %398, label %399, label %404

399:                                              ; preds = %385
  %400 = load ptr, ptr %30, align 8, !tbaa !5
  %401 = load float, ptr %400, align 4, !tbaa !11
  %402 = load float, ptr %62, align 4, !tbaa !11
  %403 = fmul float %401, %402
  store float %403, ptr %72, align 4, !tbaa !11
  br label %404

404:                                              ; preds = %399, %385
  %405 = load i64, ptr %70, align 8, !tbaa !9
  %406 = icmp ne i64 %405, 0
  br i1 %406, label %407, label %416

407:                                              ; preds = %404
  %408 = load ptr, ptr %26, align 8, !tbaa !5
  %409 = load float, ptr %408, align 4, !tbaa !11
  %410 = load float, ptr %62, align 4, !tbaa !11
  %411 = fmul float %409, %410
  store float %411, ptr %50, align 4, !tbaa !11
  %412 = load ptr, ptr %27, align 8, !tbaa !5
  %413 = load float, ptr %412, align 4, !tbaa !11
  %414 = load float, ptr %62, align 4, !tbaa !11
  %415 = fmul float %413, %414
  store float %415, ptr %51, align 4, !tbaa !11
  br label %416

416:                                              ; preds = %407, %404
  br label %417

417:                                              ; preds = %416, %382
  store i64 1, ptr %53, align 8, !tbaa !9
  %418 = load i64, ptr %53, align 8, !tbaa !9
  %419 = load ptr, ptr %24, align 8, !tbaa !5
  %420 = load i64, ptr %419, align 8, !tbaa !9
  %421 = add nsw i64 %418, %420
  store i64 %421, ptr %54, align 8, !tbaa !9
  %422 = load i64, ptr %54, align 8, !tbaa !9
  %423 = load ptr, ptr %24, align 8, !tbaa !5
  %424 = load i64, ptr %423, align 8, !tbaa !9
  %425 = add nsw i64 %422, %424
  store i64 %425, ptr %77, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  %426 = load i64, ptr %76, align 8, !tbaa !9
  %427 = load ptr, ptr %24, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = add nsw i64 %426, %428
  store i64 %429, ptr %78, align 8, !tbaa !9
  %430 = load ptr, ptr %23, align 8, !tbaa !5
  %431 = load ptr, ptr %24, align 8, !tbaa !5
  %432 = load ptr, ptr %25, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.complex, ptr %432, i64 1
  %434 = load ptr, ptr %36, align 8, !tbaa !5
  %435 = load i64, ptr %53, align 8, !tbaa !9
  %436 = getelementptr inbounds float, ptr %434, i64 %435
  %437 = load ptr, ptr %36, align 8, !tbaa !5
  %438 = load i64, ptr %54, align 8, !tbaa !9
  %439 = getelementptr inbounds float, ptr %437, i64 %438
  %440 = load ptr, ptr %35, align 8, !tbaa !5
  %441 = load i64, ptr %76, align 8, !tbaa !9
  %442 = getelementptr inbounds %struct.complex, ptr %440, i64 %441
  %443 = call i32 @chptrd_(ptr noundef %430, ptr noundef %431, ptr noundef %433, ptr noundef %436, ptr noundef %439, ptr noundef %442, ptr noundef %63)
  store i64 0, ptr %59, align 8, !tbaa !9
  %444 = load i64, ptr %67, align 8, !tbaa !9
  %445 = icmp ne i64 %444, 0
  br i1 %445, label %446, label %458

446:                                              ; preds = %417
  %447 = load ptr, ptr %28, align 8, !tbaa !5
  %448 = load i64, ptr %447, align 8, !tbaa !9
  %449 = icmp eq i64 %448, 1
  br i1 %449, label %450, label %457

450:                                              ; preds = %446
  %451 = load ptr, ptr %29, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  %453 = load ptr, ptr %24, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = icmp eq i64 %452, %454
  br i1 %455, label %456, label %457

456:                                              ; preds = %450
  store i64 1, ptr %59, align 8, !tbaa !9
  br label %457

457:                                              ; preds = %456, %450, %446
  br label %458

458:                                              ; preds = %457, %417
  %459 = load i64, ptr %66, align 8, !tbaa !9
  %460 = icmp ne i64 %459, 0
  br i1 %460, label %464, label %461

461:                                              ; preds = %458
  %462 = load i64, ptr %59, align 8, !tbaa !9
  %463 = icmp ne i64 %462, 0
  br i1 %463, label %464, label %573

464:                                              ; preds = %461, %458
  %465 = load ptr, ptr %30, align 8, !tbaa !5
  %466 = load float, ptr %465, align 4, !tbaa !11
  %467 = fcmp ole float %466, 0.000000e+00
  br i1 %467, label %468, label %573

468:                                              ; preds = %464
  %469 = load ptr, ptr %24, align 8, !tbaa !5
  %470 = load ptr, ptr %36, align 8, !tbaa !5
  %471 = load i64, ptr %53, align 8, !tbaa !9
  %472 = getelementptr inbounds float, ptr %470, i64 %471
  %473 = load ptr, ptr %32, align 8, !tbaa !5
  %474 = getelementptr inbounds float, ptr %473, i64 1
  %475 = call i32 @f2c_scopy(ptr noundef %469, ptr noundef %472, ptr noundef @c__1, ptr noundef %474, ptr noundef @c__1)
  %476 = load i64, ptr %77, align 8, !tbaa !9
  %477 = load ptr, ptr %24, align 8, !tbaa !5
  %478 = load i64, ptr %477, align 8, !tbaa !9
  %479 = shl i64 %478, 1
  %480 = add nsw i64 %476, %479
  store i64 %480, ptr %61, align 8, !tbaa !9
  %481 = load i64, ptr %65, align 8, !tbaa !9
  %482 = icmp ne i64 %481, 0
  br i1 %482, label %502, label %483

483:                                              ; preds = %468
  %484 = load ptr, ptr %24, align 8, !tbaa !5
  %485 = load i64, ptr %484, align 8, !tbaa !9
  %486 = sub nsw i64 %485, 1
  store i64 %486, ptr %42, align 8, !tbaa !9
  %487 = load ptr, ptr %36, align 8, !tbaa !5
  %488 = load i64, ptr %54, align 8, !tbaa !9
  %489 = getelementptr inbounds float, ptr %487, i64 %488
  %490 = load ptr, ptr %36, align 8, !tbaa !5
  %491 = load i64, ptr %61, align 8, !tbaa !9
  %492 = getelementptr inbounds float, ptr %490, i64 %491
  %493 = call i32 @f2c_scopy(ptr noundef %42, ptr noundef %489, ptr noundef @c__1, ptr noundef %492, ptr noundef @c__1)
  %494 = load ptr, ptr %24, align 8, !tbaa !5
  %495 = load ptr, ptr %32, align 8, !tbaa !5
  %496 = getelementptr inbounds float, ptr %495, i64 1
  %497 = load ptr, ptr %36, align 8, !tbaa !5
  %498 = load i64, ptr %61, align 8, !tbaa !9
  %499 = getelementptr inbounds float, ptr %497, i64 %498
  %500 = load ptr, ptr %39, align 8, !tbaa !5
  %501 = call i32 @ssterf_(ptr noundef %494, ptr noundef %496, ptr noundef %499, ptr noundef %500)
  br label %563

502:                                              ; preds = %468
  %503 = load ptr, ptr %23, align 8, !tbaa !5
  %504 = load ptr, ptr %24, align 8, !tbaa !5
  %505 = load ptr, ptr %25, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.complex, ptr %505, i64 1
  %507 = load ptr, ptr %35, align 8, !tbaa !5
  %508 = load i64, ptr %76, align 8, !tbaa !9
  %509 = getelementptr inbounds %struct.complex, ptr %507, i64 %508
  %510 = load ptr, ptr %33, align 8, !tbaa !5
  %511 = load i64, ptr %41, align 8, !tbaa !9
  %512 = getelementptr inbounds %struct.complex, ptr %510, i64 %511
  %513 = load ptr, ptr %34, align 8, !tbaa !5
  %514 = load ptr, ptr %35, align 8, !tbaa !5
  %515 = load i64, ptr %78, align 8, !tbaa !9
  %516 = getelementptr inbounds %struct.complex, ptr %514, i64 %515
  %517 = call i32 @cupgtr_(ptr noundef %503, ptr noundef %504, ptr noundef %506, ptr noundef %509, ptr noundef %512, ptr noundef %513, ptr noundef %516, ptr noundef %63)
  %518 = load ptr, ptr %24, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  %520 = sub nsw i64 %519, 1
  store i64 %520, ptr %42, align 8, !tbaa !9
  %521 = load ptr, ptr %36, align 8, !tbaa !5
  %522 = load i64, ptr %54, align 8, !tbaa !9
  %523 = getelementptr inbounds float, ptr %521, i64 %522
  %524 = load ptr, ptr %36, align 8, !tbaa !5
  %525 = load i64, ptr %61, align 8, !tbaa !9
  %526 = getelementptr inbounds float, ptr %524, i64 %525
  %527 = call i32 @f2c_scopy(ptr noundef %42, ptr noundef %523, ptr noundef @c__1, ptr noundef %526, ptr noundef @c__1)
  %528 = load ptr, ptr %21, align 8, !tbaa !5
  %529 = load ptr, ptr %24, align 8, !tbaa !5
  %530 = load ptr, ptr %32, align 8, !tbaa !5
  %531 = getelementptr inbounds float, ptr %530, i64 1
  %532 = load ptr, ptr %36, align 8, !tbaa !5
  %533 = load i64, ptr %61, align 8, !tbaa !9
  %534 = getelementptr inbounds float, ptr %532, i64 %533
  %535 = load ptr, ptr %33, align 8, !tbaa !5
  %536 = load i64, ptr %41, align 8, !tbaa !9
  %537 = getelementptr inbounds %struct.complex, ptr %535, i64 %536
  %538 = load ptr, ptr %34, align 8, !tbaa !5
  %539 = load ptr, ptr %36, align 8, !tbaa !5
  %540 = load i64, ptr %77, align 8, !tbaa !9
  %541 = getelementptr inbounds float, ptr %539, i64 %540
  %542 = load ptr, ptr %39, align 8, !tbaa !5
  %543 = call i32 @csteqr_(ptr noundef %528, ptr noundef %529, ptr noundef %531, ptr noundef %534, ptr noundef %537, ptr noundef %538, ptr noundef %541, ptr noundef %542)
  %544 = load ptr, ptr %39, align 8, !tbaa !5
  %545 = load i64, ptr %544, align 8, !tbaa !9
  %546 = icmp eq i64 %545, 0
  br i1 %546, label %547, label %562

547:                                              ; preds = %502
  %548 = load ptr, ptr %24, align 8, !tbaa !5
  %549 = load i64, ptr %548, align 8, !tbaa !9
  store i64 %549, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %550

550:                                              ; preds = %558, %547
  %551 = load i64, ptr %46, align 8, !tbaa !9
  %552 = load i64, ptr %42, align 8, !tbaa !9
  %553 = icmp sle i64 %551, %552
  br i1 %553, label %554, label %561

554:                                              ; preds = %550
  %555 = load ptr, ptr %38, align 8, !tbaa !5
  %556 = load i64, ptr %46, align 8, !tbaa !9
  %557 = getelementptr inbounds i64, ptr %555, i64 %556
  store i64 0, ptr %557, align 8, !tbaa !9
  br label %558

558:                                              ; preds = %554
  %559 = load i64, ptr %46, align 8, !tbaa !9
  %560 = add nsw i64 %559, 1
  store i64 %560, ptr %46, align 8, !tbaa !9
  br label %550, !llvm.loop !16

561:                                              ; preds = %550
  br label %562

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

563:                                              ; preds = %562, %483
  %564 = load ptr, ptr %39, align 8, !tbaa !5
  %565 = load i64, ptr %564, align 8, !tbaa !9
  %566 = icmp eq i64 %565, 0
  br i1 %566, label %567, label %571

567:                                              ; preds = %563
  %568 = load ptr, ptr %24, align 8, !tbaa !5
  %569 = load i64, ptr %568, align 8, !tbaa !9
  %570 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %569, ptr %570, align 8, !tbaa !9
  br label %671

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

573:                                              ; preds = %571, %464, %461
  %574 = load i64, ptr %65, align 8, !tbaa !9
  %575 = icmp ne i64 %574, 0
  br i1 %575, label %576, label %578

576:                                              ; preds = %573
  %577 = getelementptr inbounds [1 x i8], ptr %64, 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 %64, i64 0, i64 0
  store i8 69, ptr %579, align 1, !tbaa !18
  br label %580

580:                                              ; preds = %578, %576
  store i64 1, ptr %69, align 8, !tbaa !9
  %581 = load i64, ptr %69, align 8, !tbaa !9
  %582 = load ptr, ptr %24, align 8, !tbaa !5
  %583 = load i64, ptr %582, align 8, !tbaa !9
  %584 = add nsw i64 %581, %583
  store i64 %584, ptr %75, align 8, !tbaa !9
  %585 = load i64, ptr %75, align 8, !tbaa !9
  %586 = load ptr, ptr %24, align 8, !tbaa !5
  %587 = load i64, ptr %586, align 8, !tbaa !9
  %588 = add nsw i64 %585, %587
  store i64 %588, ptr %74, align 8, !tbaa !9
  %589 = load ptr, ptr %22, align 8, !tbaa !5
  %590 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  %591 = load ptr, ptr %24, align 8, !tbaa !5
  %592 = load ptr, ptr %28, align 8, !tbaa !5
  %593 = load ptr, ptr %29, align 8, !tbaa !5
  %594 = load ptr, ptr %36, align 8, !tbaa !5
  %595 = load i64, ptr %53, align 8, !tbaa !9
  %596 = getelementptr inbounds float, ptr %594, i64 %595
  %597 = load ptr, ptr %36, align 8, !tbaa !5
  %598 = load i64, ptr %54, align 8, !tbaa !9
  %599 = getelementptr inbounds float, ptr %597, i64 %598
  %600 = load ptr, ptr %31, align 8, !tbaa !5
  %601 = load ptr, ptr %32, align 8, !tbaa !5
  %602 = getelementptr inbounds float, ptr %601, i64 1
  %603 = load ptr, ptr %37, align 8, !tbaa !5
  %604 = load i64, ptr %69, align 8, !tbaa !9
  %605 = getelementptr inbounds i64, ptr %603, i64 %604
  %606 = load ptr, ptr %37, align 8, !tbaa !5
  %607 = load i64, ptr %75, align 8, !tbaa !9
  %608 = getelementptr inbounds i64, ptr %606, i64 %607
  %609 = load ptr, ptr %36, align 8, !tbaa !5
  %610 = load i64, ptr %77, align 8, !tbaa !9
  %611 = getelementptr inbounds float, ptr %609, i64 %610
  %612 = load ptr, ptr %37, align 8, !tbaa !5
  %613 = load i64, ptr %74, align 8, !tbaa !9
  %614 = getelementptr inbounds i64, ptr %612, i64 %613
  %615 = load ptr, ptr %39, align 8, !tbaa !5
  %616 = call i32 @sstebz_(ptr noundef %589, ptr noundef %590, ptr noundef %591, ptr noundef %50, ptr noundef %51, ptr noundef %592, ptr noundef %593, ptr noundef %72, ptr noundef %596, ptr noundef %599, ptr noundef %600, ptr noundef %79, ptr noundef %602, ptr noundef %605, ptr noundef %608, ptr noundef %611, ptr noundef %614, ptr noundef %615)
  %617 = load i64, ptr %65, align 8, !tbaa !9
  %618 = icmp ne i64 %617, 0
  br i1 %618, label %619, label %670

619:                                              ; preds = %580
  %620 = load ptr, ptr %24, align 8, !tbaa !5
  %621 = load ptr, ptr %36, align 8, !tbaa !5
  %622 = load i64, ptr %53, align 8, !tbaa !9
  %623 = getelementptr inbounds float, ptr %621, i64 %622
  %624 = load ptr, ptr %36, align 8, !tbaa !5
  %625 = load i64, ptr %54, align 8, !tbaa !9
  %626 = getelementptr inbounds float, ptr %624, i64 %625
  %627 = load ptr, ptr %31, align 8, !tbaa !5
  %628 = load ptr, ptr %32, align 8, !tbaa !5
  %629 = getelementptr inbounds float, ptr %628, i64 1
  %630 = load ptr, ptr %37, align 8, !tbaa !5
  %631 = load i64, ptr %69, align 8, !tbaa !9
  %632 = getelementptr inbounds i64, ptr %630, i64 %631
  %633 = load ptr, ptr %37, align 8, !tbaa !5
  %634 = load i64, ptr %75, align 8, !tbaa !9
  %635 = getelementptr inbounds i64, ptr %633, i64 %634
  %636 = load ptr, ptr %33, align 8, !tbaa !5
  %637 = load i64, ptr %41, align 8, !tbaa !9
  %638 = getelementptr inbounds %struct.complex, ptr %636, i64 %637
  %639 = load ptr, ptr %34, align 8, !tbaa !5
  %640 = load ptr, ptr %36, align 8, !tbaa !5
  %641 = load i64, ptr %77, align 8, !tbaa !9
  %642 = getelementptr inbounds float, ptr %640, i64 %641
  %643 = load ptr, ptr %37, align 8, !tbaa !5
  %644 = load i64, ptr %74, align 8, !tbaa !9
  %645 = getelementptr inbounds i64, ptr %643, i64 %644
  %646 = load ptr, ptr %38, align 8, !tbaa !5
  %647 = getelementptr inbounds i64, ptr %646, i64 1
  %648 = load ptr, ptr %39, align 8, !tbaa !5
  %649 = call i32 @cstein_(ptr noundef %620, ptr noundef %623, ptr noundef %626, ptr noundef %627, ptr noundef %629, ptr noundef %632, ptr noundef %635, ptr noundef %638, ptr noundef %639, ptr noundef %642, ptr noundef %645, ptr noundef %647, ptr noundef %648)
  %650 = load i64, ptr %76, align 8, !tbaa !9
  %651 = load ptr, ptr %24, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = add nsw i64 %650, %652
  store i64 %653, ptr %78, align 8, !tbaa !9
  %654 = load ptr, ptr %23, align 8, !tbaa !5
  %655 = load ptr, ptr %24, align 8, !tbaa !5
  %656 = load ptr, ptr %31, align 8, !tbaa !5
  %657 = load ptr, ptr %25, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.complex, ptr %657, i64 1
  %659 = load ptr, ptr %35, align 8, !tbaa !5
  %660 = load i64, ptr %76, align 8, !tbaa !9
  %661 = getelementptr inbounds %struct.complex, ptr %659, i64 %660
  %662 = load ptr, ptr %33, align 8, !tbaa !5
  %663 = load i64, ptr %41, align 8, !tbaa !9
  %664 = getelementptr inbounds %struct.complex, ptr %662, i64 %663
  %665 = load ptr, ptr %34, align 8, !tbaa !5
  %666 = load ptr, ptr %35, align 8, !tbaa !5
  %667 = load i64, ptr %78, align 8, !tbaa !9
  %668 = getelementptr inbounds %struct.complex, ptr %666, i64 %667
  %669 = call i32 @cupmtr_(ptr noundef @.str.4, ptr noundef %654, ptr noundef @.str.3, ptr noundef %655, ptr noundef %656, ptr noundef %658, ptr noundef %661, ptr noundef %664, ptr noundef %665, ptr noundef %668, ptr noundef %63)
  br label %670

670:                                              ; preds = %619, %580
  br label %671

671:                                              ; preds = %670, %567
  %672 = load i64, ptr %68, align 8, !tbaa !9
  %673 = icmp eq i64 %672, 1
  br i1 %673, label %674, label %691

674:                                              ; preds = %671
  %675 = load ptr, ptr %39, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !9
  %677 = icmp eq i64 %676, 0
  br i1 %677, label %678, label %681

678:                                              ; preds = %674
  %679 = load ptr, ptr %31, align 8, !tbaa !5
  %680 = load i64, ptr %679, align 8, !tbaa !9
  store i64 %680, ptr %56, align 8, !tbaa !9
  br label %685

681:                                              ; preds = %674
  %682 = load ptr, ptr %39, align 8, !tbaa !5
  %683 = load i64, ptr %682, align 8, !tbaa !9
  %684 = sub nsw i64 %683, 1
  store i64 %684, ptr %56, align 8, !tbaa !9
  br label %685

685:                                              ; preds = %681, %678
  %686 = load float, ptr %62, align 4, !tbaa !11
  %687 = fdiv float 1.000000e+00, %686
  store float %687, ptr %44, align 4, !tbaa !11
  %688 = load ptr, ptr %32, align 8, !tbaa !5
  %689 = getelementptr inbounds float, ptr %688, i64 1
  %690 = call i32 @f2c_sscal(ptr noundef %56, ptr noundef %44, ptr noundef %689, ptr noundef @c__1)
  br label %691

691:                                              ; preds = %685, %671
  %692 = load i64, ptr %65, align 8, !tbaa !9
  %693 = icmp ne i64 %692, 0
  br i1 %693, label %694, label %813

694:                                              ; preds = %691
  %695 = load ptr, ptr %31, align 8, !tbaa !5
  %696 = load i64, ptr %695, align 8, !tbaa !9
  %697 = sub nsw i64 %696, 1
  store i64 %697, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %47, align 8, !tbaa !9
  br label %698

698:                                              ; preds = %809, %694
  %699 = load i64, ptr %47, align 8, !tbaa !9
  %700 = load i64, ptr %42, align 8, !tbaa !9
  %701 = icmp sle i64 %699, %700
  br i1 %701, label %702, label %812

702:                                              ; preds = %698
  store i64 0, ptr %46, align 8, !tbaa !9
  %703 = load ptr, ptr %32, align 8, !tbaa !5
  %704 = load i64, ptr %47, align 8, !tbaa !9
  %705 = getelementptr inbounds float, ptr %703, i64 %704
  %706 = load float, ptr %705, align 4, !tbaa !11
  store float %706, ptr %52, align 4, !tbaa !11
  %707 = load ptr, ptr %31, align 8, !tbaa !5
  %708 = load i64, ptr %707, align 8, !tbaa !9
  store i64 %708, ptr %43, align 8, !tbaa !9
  %709 = load i64, ptr %47, align 8, !tbaa !9
  %710 = add nsw i64 %709, 1
  store i64 %710, ptr %48, align 8, !tbaa !9
  br label %711

711:                                              ; preds = %729, %702
  %712 = load i64, ptr %48, align 8, !tbaa !9
  %713 = load i64, ptr %43, align 8, !tbaa !9
  %714 = icmp sle i64 %712, %713
  br i1 %714, label %715, label %732

715:                                              ; preds = %711
  %716 = load ptr, ptr %32, align 8, !tbaa !5
  %717 = load i64, ptr %48, align 8, !tbaa !9
  %718 = getelementptr inbounds float, ptr %716, i64 %717
  %719 = load float, ptr %718, align 4, !tbaa !11
  %720 = load float, ptr %52, align 4, !tbaa !11
  %721 = fcmp olt float %719, %720
  br i1 %721, label %722, label %728

722:                                              ; preds = %715
  %723 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %723, ptr %46, align 8, !tbaa !9
  %724 = load ptr, ptr %32, align 8, !tbaa !5
  %725 = load i64, ptr %48, align 8, !tbaa !9
  %726 = getelementptr inbounds float, ptr %724, i64 %725
  %727 = load float, ptr %726, align 4, !tbaa !11
  store float %727, ptr %52, align 4, !tbaa !11
  br label %728

728:                                              ; preds = %722, %715
  br label %729

729:                                              ; preds = %728
  %730 = load i64, ptr %48, align 8, !tbaa !9
  %731 = add nsw i64 %730, 1
  store i64 %731, ptr %48, align 8, !tbaa !9
  br label %711, !llvm.loop !19

732:                                              ; preds = %711
  %733 = load i64, ptr %46, align 8, !tbaa !9
  %734 = icmp ne i64 %733, 0
  br i1 %734, label %735, label %808

735:                                              ; preds = %732
  %736 = load ptr, ptr %37, align 8, !tbaa !5
  %737 = load i64, ptr %69, align 8, !tbaa !9
  %738 = load i64, ptr %46, align 8, !tbaa !9
  %739 = add nsw i64 %737, %738
  %740 = sub nsw i64 %739, 1
  %741 = getelementptr inbounds i64, ptr %736, i64 %740
  %742 = load i64, ptr %741, align 8, !tbaa !9
  store i64 %742, ptr %60, align 8, !tbaa !9
  %743 = load ptr, ptr %32, align 8, !tbaa !5
  %744 = load i64, ptr %47, align 8, !tbaa !9
  %745 = getelementptr inbounds float, ptr %743, i64 %744
  %746 = load float, ptr %745, align 4, !tbaa !11
  %747 = load ptr, ptr %32, align 8, !tbaa !5
  %748 = load i64, ptr %46, align 8, !tbaa !9
  %749 = getelementptr inbounds float, ptr %747, i64 %748
  store float %746, ptr %749, align 4, !tbaa !11
  %750 = load ptr, ptr %37, align 8, !tbaa !5
  %751 = load i64, ptr %69, align 8, !tbaa !9
  %752 = load i64, ptr %47, align 8, !tbaa !9
  %753 = add nsw i64 %751, %752
  %754 = sub nsw i64 %753, 1
  %755 = getelementptr inbounds i64, ptr %750, i64 %754
  %756 = load i64, ptr %755, 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 %46, 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 float, ptr %52, align 4, !tbaa !11
  %764 = load ptr, ptr %32, align 8, !tbaa !5
  %765 = load i64, ptr %47, align 8, !tbaa !9
  %766 = getelementptr inbounds float, ptr %764, i64 %765
  store float %763, ptr %766, align 4, !tbaa !11
  %767 = load i64, ptr %60, align 8, !tbaa !9
  %768 = load ptr, ptr %37, align 8, !tbaa !5
  %769 = load i64, ptr %69, align 8, !tbaa !9
  %770 = load i64, ptr %47, align 8, !tbaa !9
  %771 = add nsw i64 %769, %770
  %772 = sub nsw i64 %771, 1
  %773 = getelementptr inbounds i64, ptr %768, i64 %772
  store i64 %767, ptr %773, align 8, !tbaa !9
  %774 = load ptr, ptr %24, align 8, !tbaa !5
  %775 = load ptr, ptr %33, align 8, !tbaa !5
  %776 = load i64, ptr %46, align 8, !tbaa !9
  %777 = load i64, ptr %40, align 8, !tbaa !9
  %778 = mul nsw i64 %776, %777
  %779 = add nsw i64 %778, 1
  %780 = getelementptr inbounds %struct.complex, ptr %775, i64 %779
  %781 = load ptr, ptr %33, align 8, !tbaa !5
  %782 = load i64, ptr %47, align 8, !tbaa !9
  %783 = load i64, ptr %40, align 8, !tbaa !9
  %784 = mul nsw i64 %782, %783
  %785 = add nsw i64 %784, 1
  %786 = getelementptr inbounds %struct.complex, ptr %781, i64 %785
  %787 = call i32 @f2c_cswap(ptr noundef %774, ptr noundef %780, ptr noundef @c__1, ptr noundef %786, ptr noundef @c__1)
  %788 = load ptr, ptr %39, align 8, !tbaa !5
  %789 = load i64, ptr %788, align 8, !tbaa !9
  %790 = icmp ne i64 %789, 0
  br i1 %790, label %791, label %807

791:                                              ; preds = %735
  %792 = load ptr, ptr %38, align 8, !tbaa !5
  %793 = load i64, ptr %46, align 8, !tbaa !9
  %794 = getelementptr inbounds i64, ptr %792, i64 %793
  %795 = load i64, ptr %794, align 8, !tbaa !9
  store i64 %795, ptr %60, align 8, !tbaa !9
  %796 = load ptr, ptr %38, align 8, !tbaa !5
  %797 = load i64, ptr %47, align 8, !tbaa !9
  %798 = getelementptr inbounds i64, ptr %796, i64 %797
  %799 = load i64, ptr %798, align 8, !tbaa !9
  %800 = load ptr, ptr %38, align 8, !tbaa !5
  %801 = load i64, ptr %46, align 8, !tbaa !9
  %802 = getelementptr inbounds i64, ptr %800, i64 %801
  store i64 %799, ptr %802, align 8, !tbaa !9
  %803 = load i64, ptr %60, align 8, !tbaa !9
  %804 = load ptr, ptr %38, align 8, !tbaa !5
  %805 = load i64, ptr %47, align 8, !tbaa !9
  %806 = getelementptr inbounds i64, ptr %804, i64 %805
  store i64 %803, ptr %806, align 8, !tbaa !9
  br label %807

807:                                              ; preds = %791, %735
  br label %808

808:                                              ; preds = %807, %732
  br label %809

809:                                              ; preds = %808
  %810 = load i64, ptr %47, align 8, !tbaa !9
  %811 = add nsw i64 %810, 1
  store i64 %811, ptr %47, align 8, !tbaa !9
  br label %698, !llvm.loop !20

812:                                              ; preds = %698
  br label %813

813:                                              ; preds = %812, %691
  store i32 0, ptr %20, align 4
  store i32 1, ptr %81, align 4
  br label %814

814:                                              ; preds = %813, %308, %250, %240
  call void @llvm.lifetime.end.p0(i64 4, 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 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 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 4, 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 4, 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 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, 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
  %815 = load i32, ptr %20, align 4
  ret i32 %815
}

; 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 @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

declare i32 @sstebz_(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 @cstein_(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 @cupmtr_(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_sscal(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare i32 @f2c_cswap(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 = !{!"float", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"", !12, i64 0, !12, i64 4}
!15 = !{!14, !12, i64 4}
!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.complex = type { float, float }

@.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 @chpevx_(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 float, align 4
  %22 = alloca float, align 4
  %23 = alloca float, align 4
  %24 = alloca i64, align 8
  %25 = alloca float, align 4
  %26 = alloca i64, align 8
  %27 = alloca [1 x i8], align 1
  %28 = alloca float, align 4
  %29 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  %30 = getelementptr inbounds i8, ptr %11, i64 -4
  %31 = load i64, ptr %13, align 8, !tbaa !5
  %32 = xor i64 %31, -1
  %33 = getelementptr inbounds %struct.complex, ptr %12, i64 %32
  %34 = getelementptr inbounds i8, ptr %15, i64 -4
  %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 %.thread351.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 %.thread351.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 %.thread351.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 %.thread351.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 float, ptr %6, align 4, !tbaa !9
  %58 = load float, ptr %5, align 4, !tbaa !9
  %59 = fcmp ugt float %57, %58
  br i1 %59, label %69, label %.thread351.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.cond362 = or i1 %63, %64
  br i1 %or.cond362, label %.thread351.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.cond360 = or i1 %67, %68
  br i1 %or.cond360, label %.thread351.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 %.thread351

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.cond381 = and i1 %.not, %74
  %or.cond384 = or i1 %73, %or.cond381
  br i1 %or.cond384, label %.thread351.sink.split, label %.thread

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

.thread351:                                       ; preds = %.thread351.sink.split, %69
  %75 = phi i64 [ %.pr, %69 ], [ %.sink382, %.thread351.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 float, ptr %4, align 4, !tbaa !11
  br label %.sink.split

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

86:                                               ; preds = %82
  %87 = load float, ptr %6, align 4, !tbaa !9
  %88 = fcmp ult float %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
  %.sink383 = phi float [ %84, %89 ], [ %81, %80 ]
  store float %.sink383, ptr %11, align 4, !tbaa !9
  br label %90

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

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

92:                                               ; preds = %.thread
  %93 = tail call double @slamch_(ptr noundef nonnull @.str.7) #6
  %94 = fptrunc double %93 to float
  %95 = tail call double @slamch_(ptr noundef nonnull @.str.8) #6
  %96 = fptrunc double %95 to float
  %97 = fdiv float %94, %96
  %98 = fdiv float 1.000000e+00, %97
  %sqrtf = tail call float @sqrtf(float noundef %97) #3
  %sqrtf334 = tail call float @sqrtf(float noundef %98) #3
  store float %sqrtf334, ptr %21, align 4, !tbaa !9
  %99 = fpext float %94 to double
  %100 = tail call double @sqrt(double noundef %99) #6
  %101 = tail call double @sqrt(double noundef %100) #6
  %102 = fdiv double 1.000000e+00, %101
  %103 = fptrunc double %102 to float
  %104 = fcmp ole float %sqrtf334, %103
  %105 = select i1 %104, float %sqrtf334, float %103
  %106 = load float, ptr %9, align 4, !tbaa !9
  store float %106, ptr %28, align 4, !tbaa !9
  %.not335 = icmp eq i64 %39, 0
  br i1 %.not335, label %110, label %107

107:                                              ; preds = %92
  %108 = load float, ptr %5, align 4, !tbaa !9
  %109 = load float, ptr %6, align 4, !tbaa !9
  br label %110

110:                                              ; preds = %92, %107
  %.sink = phi float [ %108, %107 ], [ 0.000000e+00, %92 ]
  %storemerge = phi float [ %109, %107 ], [ 0.000000e+00, %92 ]
  store float %.sink, ptr %22, align 4
  store float %storemerge, ptr %23, align 4, !tbaa !9
  %111 = tail call double @clanhp_(ptr noundef nonnull @.str.9, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %15) #6
  %112 = fptrunc double %111 to float
  %113 = fcmp ogt float %112, 0.000000e+00
  %114 = fcmp ogt float %sqrtf, %112
  %or.cond345 = select i1 %113, i1 %114, i1 false
  br i1 %or.cond345, label %117, label %115

115:                                              ; preds = %110
  %116 = fcmp olt float %105, %112
  br i1 %116, label %117, label %135

117:                                              ; preds = %115, %110
  %.pn = phi float [ %sqrtf, %110 ], [ %105, %115 ]
  %storemerge361 = fdiv float %.pn, %112
  store float %storemerge361, ptr %25, align 4, !tbaa !9
  %118 = load i64, ptr %3, align 8, !tbaa !5
  %119 = add nsw i64 %118, 1
  %120 = mul nsw i64 %119, %118
  %121 = sdiv i64 %120, 2
  store i64 %121, ptr %20, align 8, !tbaa !5
  %122 = call i32 @f2c_csscal(ptr noundef nonnull %20, ptr noundef nonnull %25, ptr noundef %4, ptr noundef nonnull @c__1) #6
  %123 = load float, ptr %9, align 4, !tbaa !9
  %124 = fcmp ogt float %123, 0.000000e+00
  br i1 %124, label %125, label %128

125:                                              ; preds = %117
  %126 = load float, ptr %25, align 4, !tbaa !9
  %127 = fmul float %123, %126
  store float %127, ptr %28, align 4, !tbaa !9
  br label %128

128:                                              ; preds = %125, %117
  br i1 %.not335, label %135, label %129

129:                                              ; preds = %128
  %130 = load float, ptr %5, align 4, !tbaa !9
  %131 = load float, ptr %25, align 4, !tbaa !9
  %132 = fmul float %130, %131
  store float %132, ptr %22, align 4, !tbaa !9
  %133 = load float, ptr %6, align 4, !tbaa !9
  %134 = fmul float %131, %133
  store float %134, ptr %23, align 4, !tbaa !9
  br label %135

135:                                              ; preds = %115, %128, %129
  %136 = phi i1 [ true, %128 ], [ true, %129 ], [ false, %115 ]
  %137 = load i64, ptr %3, align 8, !tbaa !5
  %reass.add = shl i64 %137, 1
  %138 = or disjoint i64 %reass.add, 1
  %139 = getelementptr float, ptr %15, i64 %137
  %140 = call i32 @chptrd_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %15, ptr noundef %139, ptr noundef %14, ptr noundef nonnull %26) #6
  %.not336 = icmp eq i64 %40, 0
  br i1 %.not336, label %148, label %141

141:                                              ; preds = %135
  %142 = load i64, ptr %7, align 8, !tbaa !5
  %143 = icmp eq i64 %142, 1
  br i1 %143, label %144, label %148

144:                                              ; preds = %141
  %145 = load i64, ptr %8, align 8, !tbaa !5
  %146 = load i64, ptr %3, align 8, !tbaa !5
  %147 = icmp eq i64 %145, %146
  br label %148

148:                                              ; preds = %144, %141, %135
  %149 = phi i1 [ false, %141 ], [ false, %135 ], [ %147, %144 ]
  %or.cond7 = or i1 %44, %149
  br i1 %or.cond7, label %150, label %180

150:                                              ; preds = %148
  %151 = load float, ptr %9, align 4, !tbaa !9
  %152 = fcmp ugt float %151, 0.000000e+00
  br i1 %152, label %180, label %153

153:                                              ; preds = %150
  %154 = call i32 @f2c_scopy(ptr noundef nonnull %3, ptr noundef %15, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #6
  %155 = load i64, ptr %3, align 8, !tbaa !5
  %156 = shl i64 %155, 1
  %157 = add nsw i64 %156, %138
  br i1 %.not, label %163, label %158

158:                                              ; preds = %153
  %159 = add nsw i64 %155, -1
  store i64 %159, ptr %20, align 8, !tbaa !5
  %160 = getelementptr inbounds float, ptr %34, i64 %157
  %161 = call i32 @f2c_scopy(ptr noundef nonnull %20, ptr noundef %139, ptr noundef nonnull @c__1, ptr noundef nonnull %160, ptr noundef nonnull @c__1) #6
  %162 = call i32 @ssterf_(ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %160, ptr noundef nonnull %18) #6
  br label %.loopexit363

163:                                              ; preds = %153
  %164 = getelementptr %struct.complex, ptr %14, i64 %137
  %165 = call i32 @cupgtr_(ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %14, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %164, ptr noundef nonnull %26) #6
  %166 = load i64, ptr %3, align 8, !tbaa !5
  %167 = add nsw i64 %166, -1
  store i64 %167, ptr %20, align 8, !tbaa !5
  %168 = getelementptr inbounds float, ptr %34, i64 %157
  %169 = call i32 @f2c_scopy(ptr noundef nonnull %20, ptr noundef %139, ptr noundef nonnull @c__1, ptr noundef nonnull %168, ptr noundef nonnull @c__1) #6
  %170 = getelementptr float, ptr %15, i64 %reass.add
  %171 = call i32 @csteqr_(ptr noundef %0, ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %168, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %170, ptr noundef nonnull %18) #6
  %172 = load i64, ptr %18, align 8, !tbaa !5
  %173 = icmp eq i64 %172, 0
  br i1 %173, label %174, label %.thread357

174:                                              ; preds = %163
  %175 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %175, ptr %20, align 8, !tbaa !5
  %.not337364 = icmp slt i64 %175, 1
  br i1 %.not337364, label %.loopexit363, label %.lr.ph.preheader

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

.loopexit363:                                     ; preds = %.lr.ph.preheader, %174, %158
  %.pr356 = load i64, ptr %18, align 8, !tbaa !5
  %177 = icmp eq i64 %.pr356, 0
  br i1 %177, label %178, label %.thread357

178:                                              ; preds = %.loopexit363
  %179 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %179, ptr %10, align 8, !tbaa !5
  br label %191

.thread357:                                       ; preds = %163, %.loopexit363
  store i64 0, ptr %18, align 8, !tbaa !5
  br label %180

180:                                              ; preds = %148, %.thread357, %150
  %.347 = select i1 %.not, i8 66, i8 69
  store i8 %.347, ptr %27, align 1, !tbaa !13
  %181 = load i64, ptr %3, align 8, !tbaa !5
  %182 = getelementptr i64, ptr %16, i64 %181
  %183 = getelementptr float, ptr %15, i64 %reass.add
  %.idx = shl i64 %181, 4
  %184 = getelementptr i8, ptr %16, i64 %.idx
  %185 = call i32 @sstebz_(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 %139, ptr noundef nonnull %10, ptr noundef nonnull %29, ptr noundef %11, ptr noundef %16, ptr noundef %182, ptr noundef %183, ptr noundef %184, ptr noundef nonnull %18) #6
  br i1 %.not, label %186, label %191

186:                                              ; preds = %180
  %187 = call i32 @cstein_(ptr noundef nonnull %3, ptr noundef %15, ptr noundef %139, ptr noundef nonnull %10, ptr noundef %11, ptr noundef %16, ptr noundef %182, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %183, ptr noundef %184, ptr noundef %17, ptr noundef nonnull %18) #6
  %188 = load i64, ptr %3, align 8, !tbaa !5
  %189 = getelementptr %struct.complex, ptr %14, i64 %188
  %190 = call i32 @cupmtr_(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 %189, ptr noundef nonnull %26) #6
  br label %191

191:                                              ; preds = %180, %186, %178
  br i1 %136, label %192, label %203

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

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

197:                                              ; preds = %192
  %198 = add nsw i64 %193, -1
  br label %199

199:                                              ; preds = %197, %195
  %storemerge340 = phi i64 [ %198, %197 ], [ %196, %195 ]
  store i64 %storemerge340, ptr %24, align 8, !tbaa !5
  %200 = load float, ptr %25, align 4, !tbaa !9
  %201 = fdiv float 1.000000e+00, %200
  store float %201, ptr %21, align 4, !tbaa !9
  %202 = call i32 @f2c_sscal(ptr noundef nonnull %24, ptr noundef nonnull %21, ptr noundef %11, ptr noundef nonnull @c__1) #6
  br label %203

203:                                              ; preds = %199, %191
  br i1 %.not, label %204, label %.loopexit

204:                                              ; preds = %203
  %205 = load i64, ptr %10, align 8, !tbaa !5
  %206 = add nsw i64 %205, -1
  store i64 %206, ptr %20, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %33, i64 8
  %.not341374 = icmp slt i64 %205, 2
  br i1 %.not341374, label %.loopexit, label %.lr.ph377

.lr.ph377:                                        ; preds = %204, %._crit_edge.thread
  %.0309375 = phi i64 [ %210, %._crit_edge.thread ], [ 1, %204 ]
  %207 = getelementptr inbounds float, ptr %30, i64 %.0309375
  %208 = load float, ptr %207, align 4, !tbaa !9
  %209 = load i64, ptr %10, align 8, !tbaa !5
  %210 = add nuw nsw i64 %.0309375, 1
  %.not342366.not = icmp slt i64 %.0309375, %209
  br i1 %.not342366.not, label %.lr.ph370, label %._crit_edge.thread

.lr.ph370:                                        ; preds = %.lr.ph377, %.lr.ph370
  %.1369 = phi i64 [ %.2, %.lr.ph370 ], [ 0, %.lr.ph377 ]
  %.0310368 = phi i64 [ %214, %.lr.ph370 ], [ %210, %.lr.ph377 ]
  %.0311367 = phi float [ %.1312, %.lr.ph370 ], [ %208, %.lr.ph377 ]
  %211 = getelementptr inbounds float, ptr %30, i64 %.0310368
  %212 = load float, ptr %211, align 4, !tbaa !9
  %213 = fcmp olt float %212, %.0311367
  %.1312 = select i1 %213, float %212, float %.0311367
  %.2 = select i1 %213, i64 %.0310368, i64 %.1369
  %214 = add nuw nsw i64 %.0310368, 1
  %.not342.not = icmp slt i64 %.0310368, %209
  br i1 %.not342.not, label %.lr.ph370, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph370
  %.not343 = icmp eq i64 %.2, 0
  br i1 %.not343, label %._crit_edge.thread, label %215

215:                                              ; preds = %._crit_edge
  %216 = getelementptr inbounds i64, ptr %35, i64 %.2
  %217 = load i64, ptr %216, align 8, !tbaa !5
  %218 = getelementptr inbounds float, ptr %30, i64 %.2
  store float %208, ptr %218, align 4, !tbaa !9
  %219 = getelementptr inbounds i64, ptr %35, i64 %.0309375
  %220 = load i64, ptr %219, align 8, !tbaa !5
  store i64 %220, ptr %216, align 8, !tbaa !5
  store float %.1312, ptr %207, align 4, !tbaa !9
  store i64 %217, ptr %219, align 8, !tbaa !5
  %221 = mul nsw i64 %.2, %31
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %221
  %222 = mul nsw i64 %.0309375, %31
  %gep373 = getelementptr %struct.complex, ptr %invariant.gep, i64 %222
  %223 = call i32 @f2c_cswap(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep373, ptr noundef nonnull @c__1) #6
  %224 = load i64, ptr %18, align 8, !tbaa !5
  %.not344 = icmp eq i64 %224, 0
  br i1 %.not344, label %._crit_edge.thread, label %225

225:                                              ; preds = %215
  %226 = getelementptr inbounds i64, ptr %36, i64 %.2
  %227 = load i64, ptr %226, align 8, !tbaa !5
  %228 = getelementptr inbounds i64, ptr %36, i64 %.0309375
  %229 = load i64, ptr %228, align 8, !tbaa !5
  store i64 %229, ptr %226, align 8, !tbaa !5
  store i64 %227, ptr %228, align 8, !tbaa !5
  br label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %.lr.ph377, %._crit_edge, %225, %215
  %230 = load i64, ptr %20, align 8, !tbaa !5
  %.not341.not = icmp slt i64 %.0309375, %230
  br i1 %.not341.not, label %.lr.ph377, label %.loopexit, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge.thread, %204, %203, %90, %91, %.thread, %.thread351
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 4, 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 @slamch_(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 @clanhp_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare i32 @sstebz_(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 @cstein_(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 @cupmtr_(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_sscal(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare float @sqrtf(float) local_unnamed_addr

; 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 = !{!"float", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 4}
!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