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

; Function Attrs: nounwind uwtable
define dso_local void @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 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 float, align 4
  %44 = alloca float, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca float, align 4
  %48 = alloca i32, align 4
  %49 = alloca float, align 4
  %50 = alloca float, align 4
  %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 float, align 4
  %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 float, align 4
  %67 = alloca float, align 4
  %68 = alloca float, align 4
  %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 float, align 4
  %76 = alloca float, align 4
  %77 = alloca float, align 4
  %78 = alloca float, align 4
  %79 = alloca float, align 4
  %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 4, 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 4, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 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 4, 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 4, ptr %66) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #4
  %81 = load ptr, ptr %24, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.complex, 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 float, 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.complex, 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.complex, 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 float, 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 float, ptr %155, align 4, !tbaa !11
  %157 = load ptr, ptr %25, align 8, !tbaa !5
  %158 = load float, ptr %157, align 4, !tbaa !11
  %159 = fcmp ole float %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 %847

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

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

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

278:                                              ; preds = %270
  %279 = load ptr, ptr %26, align 8, !tbaa !5
  %280 = load float, ptr %279, align 4, !tbaa !11
  %281 = load ptr, ptr %24, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.complex, ptr %281, i64 1
  %283 = getelementptr inbounds %struct.complex, ptr %282, i32 0, i32 0
  %284 = load float, ptr %283, align 4, !tbaa !13
  %285 = fcmp oge float %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.complex, ptr %288, i64 1
  %290 = getelementptr inbounds %struct.complex, ptr %289, i32 0, i32 0
  %291 = load float, ptr %290, align 4, !tbaa !13
  %292 = load ptr, ptr %31, align 8, !tbaa !5
  %293 = getelementptr inbounds float, ptr %292, i64 1
  store float %291, ptr %293, align 4, !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.complex, ptr %301, i64 %303
  %305 = getelementptr inbounds %struct.complex, ptr %304, i32 0, i32 0
  store float 1.000000e+00, ptr %305, align 4, !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.complex, ptr %306, i64 %308
  %310 = getelementptr inbounds %struct.complex, ptr %309, i32 0, i32 1
  store float 0.000000e+00, ptr %310, align 4, !tbaa !15
  br label %311

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

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

337:                                              ; preds = %312
  %338 = load float, ptr %43, align 4, !tbaa !11
  br label %341

339:                                              ; preds = %312
  %340 = load float, ptr %44, align 4, !tbaa !11
  br label %341

341:                                              ; preds = %339, %337
  %342 = phi float [ %338, %337 ], [ %340, %339 ]
  store float %342, ptr %50, align 4, !tbaa !11
  store i32 0, ptr %63, align 4, !tbaa !9
  %343 = load ptr, ptr %29, align 8, !tbaa !5
  %344 = load float, ptr %343, align 4, !tbaa !11
  store float %344, ptr %67, align 4, !tbaa !11
  %345 = load i32, ptr %65, align 4, !tbaa !9
  %346 = icmp ne i32 %345, 0
  br i1 %346, label %347, label %352

347:                                              ; preds = %341
  %348 = load ptr, ptr %25, align 8, !tbaa !5
  %349 = load float, ptr %348, align 4, !tbaa !11
  store float %349, ptr %77, align 4, !tbaa !11
  %350 = load ptr, ptr %26, align 8, !tbaa !5
  %351 = load float, ptr %350, align 4, !tbaa !11
  store float %351, ptr %78, align 4, !tbaa !11
  br label %353

352:                                              ; preds = %341
  store float 0.000000e+00, ptr %77, align 4, !tbaa !11
  store float 0.000000e+00, ptr %78, align 4, !tbaa !11
  br label %353

353:                                              ; preds = %352, %347
  %354 = load ptr, ptr %22, align 8, !tbaa !5
  %355 = load ptr, ptr %23, align 8, !tbaa !5
  %356 = load ptr, ptr %24, align 8, !tbaa !5
  %357 = getelementptr inbounds %struct.complex, ptr %356, i64 1
  %358 = load ptr, ptr %35, align 8, !tbaa !5
  %359 = getelementptr inbounds float, ptr %358, i64 1
  %360 = call float @clanhp_(ptr noundef @.str.9, ptr noundef %354, ptr noundef %355, ptr noundef %357, ptr noundef %359)
  store float %360, ptr %47, align 4, !tbaa !11
  %361 = load float, ptr %47, align 4, !tbaa !11
  %362 = fcmp ogt float %361, 0.000000e+00
  br i1 %362, label %363, label %371

363:                                              ; preds = %353
  %364 = load float, ptr %47, align 4, !tbaa !11
  %365 = load float, ptr %49, align 4, !tbaa !11
  %366 = fcmp olt float %364, %365
  br i1 %366, label %367, label %371

367:                                              ; preds = %363
  store i32 1, ptr %63, align 4, !tbaa !9
  %368 = load float, ptr %49, align 4, !tbaa !11
  %369 = load float, ptr %47, align 4, !tbaa !11
  %370 = fdiv float %368, %369
  store float %370, ptr %56, align 4, !tbaa !11
  br label %380

371:                                              ; preds = %363, %353
  %372 = load float, ptr %47, align 4, !tbaa !11
  %373 = load float, ptr %50, align 4, !tbaa !11
  %374 = fcmp ogt float %372, %373
  br i1 %374, label %375, label %379

375:                                              ; preds = %371
  store i32 1, ptr %63, align 4, !tbaa !9
  %376 = load float, ptr %50, align 4, !tbaa !11
  %377 = load float, ptr %47, align 4, !tbaa !11
  %378 = fdiv float %376, %377
  store float %378, ptr %56, align 4, !tbaa !11
  br label %379

379:                                              ; preds = %375, %371
  br label %380

380:                                              ; preds = %379, %367
  %381 = load i32, ptr %63, align 4, !tbaa !9
  %382 = icmp eq i32 %381, 1
  br i1 %382, label %383, label %414

383:                                              ; preds = %380
  %384 = load ptr, ptr %23, align 8, !tbaa !5
  %385 = load i32, ptr %384, align 4, !tbaa !9
  %386 = load ptr, ptr %23, align 8, !tbaa !5
  %387 = load i32, ptr %386, align 4, !tbaa !9
  %388 = add nsw i32 %387, 1
  %389 = mul nsw i32 %385, %388
  %390 = sdiv i32 %389, 2
  store i32 %390, ptr %41, align 4, !tbaa !9
  %391 = load ptr, ptr %24, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct.complex, ptr %391, i64 1
  call void @csscal_(ptr noundef %41, ptr noundef %56, ptr noundef %392, ptr noundef @c__1)
  %393 = load ptr, ptr %29, align 8, !tbaa !5
  %394 = load float, ptr %393, align 4, !tbaa !11
  %395 = fcmp ogt float %394, 0.000000e+00
  br i1 %395, label %396, label %401

396:                                              ; preds = %383
  %397 = load ptr, ptr %29, align 8, !tbaa !5
  %398 = load float, ptr %397, align 4, !tbaa !11
  %399 = load float, ptr %56, align 4, !tbaa !11
  %400 = fmul float %398, %399
  store float %400, ptr %67, align 4, !tbaa !11
  br label %401

401:                                              ; preds = %396, %383
  %402 = load i32, ptr %65, align 4, !tbaa !9
  %403 = icmp ne i32 %402, 0
  br i1 %403, label %404, label %413

404:                                              ; preds = %401
  %405 = load ptr, ptr %25, align 8, !tbaa !5
  %406 = load float, ptr %405, align 4, !tbaa !11
  %407 = load float, ptr %56, align 4, !tbaa !11
  %408 = fmul float %406, %407
  store float %408, ptr %77, align 4, !tbaa !11
  %409 = load ptr, ptr %26, align 8, !tbaa !5
  %410 = load float, ptr %409, align 4, !tbaa !11
  %411 = load float, ptr %56, align 4, !tbaa !11
  %412 = fmul float %410, %411
  store float %412, ptr %78, align 4, !tbaa !11
  br label %413

413:                                              ; preds = %404, %401
  br label %414

414:                                              ; preds = %413, %380
  store i32 1, ptr %45, align 4, !tbaa !9
  %415 = load i32, ptr %45, align 4, !tbaa !9
  %416 = load ptr, ptr %23, align 8, !tbaa !5
  %417 = load i32, ptr %416, align 4, !tbaa !9
  %418 = add nsw i32 %415, %417
  store i32 %418, ptr %46, align 4, !tbaa !9
  %419 = load i32, ptr %46, align 4, !tbaa !9
  %420 = load ptr, ptr %23, align 8, !tbaa !5
  %421 = load i32, ptr %420, align 4, !tbaa !9
  %422 = add nsw i32 %419, %421
  store i32 %422, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %71, align 4, !tbaa !9
  %423 = load i32, ptr %71, align 4, !tbaa !9
  %424 = load ptr, ptr %23, align 8, !tbaa !5
  %425 = load i32, ptr %424, align 4, !tbaa !9
  %426 = add nsw i32 %423, %425
  store i32 %426, ptr %73, align 4, !tbaa !9
  %427 = load ptr, ptr %22, align 8, !tbaa !5
  %428 = load ptr, ptr %23, align 8, !tbaa !5
  %429 = load ptr, ptr %24, align 8, !tbaa !5
  %430 = getelementptr inbounds %struct.complex, ptr %429, i64 1
  %431 = load ptr, ptr %35, align 8, !tbaa !5
  %432 = load i32, ptr %45, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds float, ptr %431, i64 %433
  %435 = load ptr, ptr %35, align 8, !tbaa !5
  %436 = load i32, ptr %46, align 4, !tbaa !9
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds float, ptr %435, i64 %437
  %439 = load ptr, ptr %34, align 8, !tbaa !5
  %440 = load i32, ptr %71, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds %struct.complex, ptr %439, i64 %441
  call void @chptrd_(ptr noundef %427, ptr noundef %428, ptr noundef %430, ptr noundef %434, ptr noundef %438, ptr noundef %442, ptr noundef %57)
  store i32 0, ptr %51, align 4, !tbaa !9
  %443 = load i32, ptr %62, align 4, !tbaa !9
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %445, label %457

445:                                              ; preds = %414
  %446 = load ptr, ptr %27, align 8, !tbaa !5
  %447 = load i32, ptr %446, align 4, !tbaa !9
  %448 = icmp eq i32 %447, 1
  br i1 %448, label %449, label %456

449:                                              ; preds = %445
  %450 = load ptr, ptr %28, align 8, !tbaa !5
  %451 = load i32, ptr %450, align 4, !tbaa !9
  %452 = load ptr, ptr %23, align 8, !tbaa !5
  %453 = load i32, ptr %452, align 4, !tbaa !9
  %454 = icmp eq i32 %451, %453
  br i1 %454, label %455, label %456

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

456:                                              ; preds = %455, %449, %445
  br label %457

457:                                              ; preds = %456, %414
  %458 = load i32, ptr %61, align 4, !tbaa !9
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %463, label %460

460:                                              ; preds = %457
  %461 = load i32, ptr %51, align 4, !tbaa !9
  %462 = icmp ne i32 %461, 0
  br i1 %462, label %463, label %579

463:                                              ; preds = %460, %457
  %464 = load ptr, ptr %29, align 8, !tbaa !5
  %465 = load float, ptr %464, align 4, !tbaa !11
  %466 = fcmp ole float %465, 0.000000e+00
  br i1 %466, label %467, label %579

467:                                              ; preds = %463
  %468 = load ptr, ptr %23, align 8, !tbaa !5
  %469 = load ptr, ptr %35, align 8, !tbaa !5
  %470 = load i32, ptr %45, align 4, !tbaa !9
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds float, ptr %469, i64 %471
  %473 = load ptr, ptr %31, align 8, !tbaa !5
  %474 = getelementptr inbounds float, ptr %473, i64 1
  call void @scopy_(ptr noundef %468, ptr noundef %472, ptr noundef @c__1, ptr noundef %474, ptr noundef @c__1)
  %475 = load i32, ptr %72, align 4, !tbaa !9
  %476 = load ptr, ptr %23, align 8, !tbaa !5
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = shl i32 %477, 1
  %479 = add nsw i32 %475, %478
  store i32 %479, ptr %55, align 4, !tbaa !9
  %480 = load i32, ptr %59, align 4, !tbaa !9
  %481 = icmp ne i32 %480, 0
  br i1 %481, label %502, label %482

482:                                              ; preds = %467
  %483 = load ptr, ptr %23, align 8, !tbaa !5
  %484 = load i32, ptr %483, align 4, !tbaa !9
  %485 = sub nsw i32 %484, 1
  store i32 %485, ptr %41, align 4, !tbaa !9
  %486 = load ptr, ptr %35, align 8, !tbaa !5
  %487 = load i32, ptr %46, align 4, !tbaa !9
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds float, ptr %486, i64 %488
  %490 = load ptr, ptr %35, align 8, !tbaa !5
  %491 = load i32, ptr %55, align 4, !tbaa !9
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds float, ptr %490, i64 %492
  call void @scopy_(ptr noundef %41, ptr noundef %489, ptr noundef @c__1, ptr noundef %493, ptr noundef @c__1)
  %494 = load ptr, ptr %23, align 8, !tbaa !5
  %495 = load ptr, ptr %31, align 8, !tbaa !5
  %496 = getelementptr inbounds float, ptr %495, i64 1
  %497 = load ptr, ptr %35, align 8, !tbaa !5
  %498 = load i32, ptr %55, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds float, ptr %497, i64 %499
  %501 = load ptr, ptr %38, align 8, !tbaa !5
  call void @ssterf_(ptr noundef %494, ptr noundef %496, ptr noundef %500, ptr noundef %501)
  br label %569

502:                                              ; preds = %467
  %503 = load ptr, ptr %22, align 8, !tbaa !5
  %504 = load ptr, ptr %23, align 8, !tbaa !5
  %505 = load ptr, ptr %24, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.complex, ptr %505, i64 1
  %507 = load ptr, ptr %34, align 8, !tbaa !5
  %508 = load i32, ptr %71, align 4, !tbaa !9
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds %struct.complex, ptr %507, i64 %509
  %511 = load ptr, ptr %32, align 8, !tbaa !5
  %512 = load i32, ptr %40, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds %struct.complex, ptr %511, i64 %513
  %515 = load ptr, ptr %33, align 8, !tbaa !5
  %516 = load ptr, ptr %34, align 8, !tbaa !5
  %517 = load i32, ptr %73, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds %struct.complex, ptr %516, i64 %518
  call void @cupgtr_(ptr noundef %503, ptr noundef %504, ptr noundef %506, ptr noundef %510, ptr noundef %514, ptr noundef %515, ptr noundef %519, ptr noundef %57)
  %520 = load ptr, ptr %23, align 8, !tbaa !5
  %521 = load i32, ptr %520, align 4, !tbaa !9
  %522 = sub nsw i32 %521, 1
  store i32 %522, ptr %41, align 4, !tbaa !9
  %523 = load ptr, ptr %35, align 8, !tbaa !5
  %524 = load i32, ptr %46, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds float, ptr %523, i64 %525
  %527 = load ptr, ptr %35, align 8, !tbaa !5
  %528 = load i32, ptr %55, align 4, !tbaa !9
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds float, ptr %527, i64 %529
  call void @scopy_(ptr noundef %41, ptr noundef %526, ptr noundef @c__1, ptr noundef %530, ptr noundef @c__1)
  %531 = load ptr, ptr %20, align 8, !tbaa !5
  %532 = load ptr, ptr %23, align 8, !tbaa !5
  %533 = load ptr, ptr %31, align 8, !tbaa !5
  %534 = getelementptr inbounds float, ptr %533, i64 1
  %535 = load ptr, ptr %35, align 8, !tbaa !5
  %536 = load i32, ptr %55, align 4, !tbaa !9
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds float, ptr %535, i64 %537
  %539 = load ptr, ptr %32, align 8, !tbaa !5
  %540 = load i32, ptr %40, align 4, !tbaa !9
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds %struct.complex, ptr %539, i64 %541
  %543 = load ptr, ptr %33, align 8, !tbaa !5
  %544 = load ptr, ptr %35, align 8, !tbaa !5
  %545 = load i32, ptr %72, align 4, !tbaa !9
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds float, ptr %544, i64 %546
  %548 = load ptr, ptr %38, align 8, !tbaa !5
  call void @csteqr_(ptr noundef %531, ptr noundef %532, ptr noundef %534, ptr noundef %538, ptr noundef %542, ptr noundef %543, ptr noundef %547, ptr noundef %548)
  %549 = load ptr, ptr %38, align 8, !tbaa !5
  %550 = load i32, ptr %549, align 4, !tbaa !9
  %551 = icmp eq i32 %550, 0
  br i1 %551, label %552, label %568

552:                                              ; preds = %502
  %553 = load ptr, ptr %23, align 8, !tbaa !5
  %554 = load i32, ptr %553, align 4, !tbaa !9
  store i32 %554, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %53, align 4, !tbaa !9
  br label %555

555:                                              ; preds = %564, %552
  %556 = load i32, ptr %53, align 4, !tbaa !9
  %557 = load i32, ptr %41, align 4, !tbaa !9
  %558 = icmp sle i32 %556, %557
  br i1 %558, label %559, label %567

559:                                              ; preds = %555
  %560 = load ptr, ptr %37, align 8, !tbaa !5
  %561 = load i32, ptr %53, align 4, !tbaa !9
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds i32, ptr %560, i64 %562
  store i32 0, ptr %563, align 4, !tbaa !9
  br label %564

564:                                              ; preds = %559
  %565 = load i32, ptr %53, align 4, !tbaa !9
  %566 = add nsw i32 %565, 1
  store i32 %566, ptr %53, align 4, !tbaa !9
  br label %555, !llvm.loop !16

567:                                              ; preds = %555
  br label %568

568:                                              ; preds = %567, %502
  br label %569

569:                                              ; preds = %568, %482
  %570 = load ptr, ptr %38, align 8, !tbaa !5
  %571 = load i32, ptr %570, align 4, !tbaa !9
  %572 = icmp eq i32 %571, 0
  br i1 %572, label %573, label %577

573:                                              ; preds = %569
  %574 = load ptr, ptr %23, align 8, !tbaa !5
  %575 = load i32, ptr %574, align 4, !tbaa !9
  %576 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 %575, ptr %576, align 4, !tbaa !9
  br label %690

577:                                              ; preds = %569
  %578 = load ptr, ptr %38, align 8, !tbaa !5
  store i32 0, ptr %578, align 4, !tbaa !9
  br label %579

579:                                              ; preds = %577, %463, %460
  %580 = load i32, ptr %59, align 4, !tbaa !9
  %581 = icmp ne i32 %580, 0
  br i1 %581, label %582, label %584

582:                                              ; preds = %579
  %583 = getelementptr inbounds [1 x i8], ptr %58, i64 0, i64 0
  store i8 66, ptr %583, align 1, !tbaa !18
  br label %586

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

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

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

689:                                              ; preds = %630, %586
  br label %690

690:                                              ; preds = %689, %573
  %691 = load i32, ptr %63, align 4, !tbaa !9
  %692 = icmp eq i32 %691, 1
  br i1 %692, label %693, label %709

693:                                              ; preds = %690
  %694 = load ptr, ptr %38, align 8, !tbaa !5
  %695 = load i32, ptr %694, align 4, !tbaa !9
  %696 = icmp eq i32 %695, 0
  br i1 %696, label %697, label %700

697:                                              ; preds = %693
  %698 = load ptr, ptr %30, align 8, !tbaa !5
  %699 = load i32, ptr %698, align 4, !tbaa !9
  store i32 %699, ptr %48, align 4, !tbaa !9
  br label %704

700:                                              ; preds = %693
  %701 = load ptr, ptr %38, align 8, !tbaa !5
  %702 = load i32, ptr %701, align 4, !tbaa !9
  %703 = sub nsw i32 %702, 1
  store i32 %703, ptr %48, align 4, !tbaa !9
  br label %704

704:                                              ; preds = %700, %697
  %705 = load float, ptr %56, align 4, !tbaa !11
  %706 = fdiv float 1.000000e+00, %705
  store float %706, ptr %43, align 4, !tbaa !11
  %707 = load ptr, ptr %31, align 8, !tbaa !5
  %708 = getelementptr inbounds float, ptr %707, i64 1
  call void @sscal_(ptr noundef %48, ptr noundef %43, ptr noundef %708, ptr noundef @c__1)
  br label %709

709:                                              ; preds = %704, %690
  %710 = load i32, ptr %59, align 4, !tbaa !9
  %711 = icmp ne i32 %710, 0
  br i1 %711, label %712, label %846

712:                                              ; preds = %709
  %713 = load ptr, ptr %30, align 8, !tbaa !5
  %714 = load i32, ptr %713, align 4, !tbaa !9
  %715 = sub nsw i32 %714, 1
  store i32 %715, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %54, align 4, !tbaa !9
  br label %716

716:                                              ; preds = %842, %712
  %717 = load i32, ptr %54, align 4, !tbaa !9
  %718 = load i32, ptr %41, align 4, !tbaa !9
  %719 = icmp sle i32 %717, %718
  br i1 %719, label %720, label %845

720:                                              ; preds = %716
  store i32 0, ptr %53, align 4, !tbaa !9
  %721 = load ptr, ptr %31, align 8, !tbaa !5
  %722 = load i32, ptr %54, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds float, ptr %721, i64 %723
  %725 = load float, ptr %724, align 4, !tbaa !11
  store float %725, ptr %79, align 4, !tbaa !11
  %726 = load ptr, ptr %30, align 8, !tbaa !5
  %727 = load i32, ptr %726, align 4, !tbaa !9
  store i32 %727, ptr %42, align 4, !tbaa !9
  %728 = load i32, ptr %54, align 4, !tbaa !9
  %729 = add nsw i32 %728, 1
  store i32 %729, ptr %60, align 4, !tbaa !9
  br label %730

730:                                              ; preds = %750, %720
  %731 = load i32, ptr %60, align 4, !tbaa !9
  %732 = load i32, ptr %42, align 4, !tbaa !9
  %733 = icmp sle i32 %731, %732
  br i1 %733, label %734, label %753

734:                                              ; preds = %730
  %735 = load ptr, ptr %31, align 8, !tbaa !5
  %736 = load i32, ptr %60, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds float, ptr %735, i64 %737
  %739 = load float, ptr %738, align 4, !tbaa !11
  %740 = load float, ptr %79, align 4, !tbaa !11
  %741 = fcmp olt float %739, %740
  br i1 %741, label %742, label %749

742:                                              ; preds = %734
  %743 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %743, ptr %53, align 4, !tbaa !9
  %744 = load ptr, ptr %31, align 8, !tbaa !5
  %745 = load i32, ptr %60, align 4, !tbaa !9
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds float, ptr %744, i64 %746
  %748 = load float, ptr %747, align 4, !tbaa !11
  store float %748, ptr %79, align 4, !tbaa !11
  br label %749

749:                                              ; preds = %742, %734
  br label %750

750:                                              ; preds = %749
  %751 = load i32, ptr %60, align 4, !tbaa !9
  %752 = add nsw i32 %751, 1
  store i32 %752, ptr %60, align 4, !tbaa !9
  br label %730, !llvm.loop !19

753:                                              ; preds = %730
  %754 = load i32, ptr %53, align 4, !tbaa !9
  %755 = icmp ne i32 %754, 0
  br i1 %755, label %756, label %841

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

820:                                              ; preds = %756
  %821 = load ptr, ptr %37, align 8, !tbaa !5
  %822 = load i32, ptr %53, align 4, !tbaa !9
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds i32, ptr %821, i64 %823
  %825 = load i32, ptr %824, align 4, !tbaa !9
  store i32 %825, ptr %52, align 4, !tbaa !9
  %826 = load ptr, ptr %37, align 8, !tbaa !5
  %827 = load i32, ptr %54, align 4, !tbaa !9
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds i32, ptr %826, i64 %828
  %830 = load i32, ptr %829, align 4, !tbaa !9
  %831 = load ptr, ptr %37, align 8, !tbaa !5
  %832 = load i32, ptr %53, align 4, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds i32, ptr %831, i64 %833
  store i32 %830, ptr %834, align 4, !tbaa !9
  %835 = load i32, ptr %52, align 4, !tbaa !9
  %836 = load ptr, ptr %37, align 8, !tbaa !5
  %837 = load i32, ptr %54, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds i32, ptr %836, i64 %838
  store i32 %835, ptr %839, align 4, !tbaa !9
  br label %840

840:                                              ; preds = %820, %756
  br label %841

841:                                              ; preds = %840, %753
  br label %842

842:                                              ; preds = %841
  %843 = load i32, ptr %54, align 4, !tbaa !9
  %844 = add nsw i32 %843, 1
  store i32 %844, ptr %54, align 4, !tbaa !9
  br label %716, !llvm.loop !20

845:                                              ; preds = %716
  br label %846

846:                                              ; preds = %845, %709
  store i32 1, ptr %80, align 4
  br label %847

847:                                              ; preds = %846, %311, %251, %241
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, 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 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 float @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @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 i32, align 4
  %21 = alloca float, align 4
  %22 = alloca i32, align 4
  %23 = alloca float, align 4
  %24 = alloca i32, align 4
  %25 = alloca [1 x i8], align 1
  %26 = alloca float, align 4
  %27 = alloca i32, align 4
  %28 = alloca float, align 4
  %29 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 4, 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 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #6
  %30 = getelementptr inbounds i8, ptr %11, i64 -4
  %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.complex, ptr %12, i64 %33
  %35 = getelementptr inbounds i8, ptr %14, i64 -8
  %36 = getelementptr inbounds i8, ptr %15, i64 -4
  %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 %.thread349.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 %.thread349.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 %.thread349.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 %.thread349.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 float, ptr %6, align 4, !tbaa !9
  %60 = load float, ptr %5, align 4, !tbaa !9
  %61 = fcmp ugt float %59, %60
  br i1 %61, label %71, label %.thread349.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.cond360 = or i1 %65, %66
  br i1 %or.cond360, label %.thread349.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.cond358 = or i1 %69, %70
  br i1 %or.cond358, label %.thread349.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 %.thread349

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.cond386 = and i1 %.not, %76
  %or.cond389 = or i1 %75, %or.cond386
  br i1 %or.cond389, label %.thread349.sink.split, label %.thread

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

.thread349:                                       ; preds = %.thread349.sink.split, %71
  %77 = phi i32 [ %.pr, %71 ], [ %.sink387, %.thread349.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 float, ptr %4, align 4, !tbaa !11
  br label %.sink.split

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

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

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

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

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

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

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

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

118:                                              ; preds = %116, %112
  %.pn = phi float [ %sqrtf, %112 ], [ %107, %116 ]
  %storemerge359 = fdiv float %.pn, %113
  store float %storemerge359, ptr %23, align 4, !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 @csscal_(ptr noundef nonnull %20, ptr noundef nonnull %23, 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 = %118
  %126 = load float, ptr %23, align 4, !tbaa !9
  %127 = fmul float %123, %126
  store float %127, ptr %26, align 4, !tbaa !9
  br label %128

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

129:                                              ; preds = %128
  %130 = load float, ptr %5, align 4, !tbaa !9
  %131 = load float, ptr %23, align 4, !tbaa !9
  %132 = fmul float %130, %131
  store float %132, ptr %28, align 4, !tbaa !9
  %133 = load float, ptr %6, align 4, !tbaa !9
  %134 = fmul float %131, %133
  store float %134, ptr %29, align 4, !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 float, ptr %36, i64 %140
  call void @chptrd_(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
  %.not335 = icmp eq i32 %42, 0
  br i1 %.not335, 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 float, ptr %9, align 4, !tbaa !9
  %153 = fcmp ugt float %152, 0.000000e+00
  br i1 %153, label %179, label %154

154:                                              ; preds = %151
  call void @scopy_(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 float, ptr %36, i64 %160
  call void @scopy_(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 @ssterf_(ptr noundef nonnull %3, ptr noundef %11, ptr noundef nonnull %161, ptr noundef nonnull %18) #6
  br label %.loopexit361

162:                                              ; preds = %154
  %163 = getelementptr inbounds %struct.complex, ptr %35, i64 %140
  call void @cupgtr_(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 float, ptr %36, i64 %166
  call void @scopy_(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 float, ptr %36, i64 %168
  call void @csteqr_(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 %.thread355

172:                                              ; preds = %162
  %173 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %173, ptr %20, align 4, !tbaa !5
  %.not336362 = icmp slt i32 %173, 1
  br i1 %.not336362, label %.loopexit361, 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 %.loopexit361

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

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

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

179:                                              ; preds = %149, %.thread355, %151
  %.345 = select i1 %.not, i8 66, i8 69
  store i8 %.345, 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 float, ptr %36, i64 %185
  %187 = sext i32 %182 to i64
  %188 = getelementptr inbounds i32, ptr %37, i64 %187
  call void @sstebz_(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 @cstein_(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.complex, ptr %35, i64 %191
  %193 = getelementptr i8, ptr %192, i64 8
  call void @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 %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
  %storemerge338 = phi i32 [ %201, %200 ], [ %199, %198 ]
  store i32 %storemerge338, ptr %22, align 4, !tbaa !5
  %203 = load float, ptr %23, align 4, !tbaa !9
  %204 = fdiv float 1.000000e+00, %203
  store float %204, ptr %21, align 4, !tbaa !9
  call void @sscal_(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 8
  %.not339372 = icmp slt i32 %207, 2
  br i1 %.not339372, label %.loopexit, label %.lr.ph375.preheader

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

.lr.ph375:                                        ; preds = %.lr.ph375.preheader, %._crit_edge.thread
  %indvar = phi i32 [ 0, %.lr.ph375.preheader ], [ %indvar.next, %._crit_edge.thread ]
  %indvars.iv380 = phi i64 [ 1, %.lr.ph375.preheader ], [ %indvars.iv.next381, %._crit_edge.thread ]
  %indvars.iv = phi i64 [ 2, %.lr.ph375.preheader ], [ %indvars.iv.next, %._crit_edge.thread ]
  %210 = getelementptr inbounds float, ptr %30, i64 %indvars.iv380
  %211 = load float, ptr %210, align 4, !tbaa !9
  %212 = load i32, ptr %10, align 4, !tbaa !5
  %indvars.iv.next381 = add nuw nsw i64 %indvars.iv380, 1
  %213 = sext i32 %212 to i64
  %.not340364.not = icmp slt i64 %indvars.iv380, %213
  br i1 %.not340364.not, label %.lr.ph368.preheader, label %._crit_edge.thread

.lr.ph368.preheader:                              ; preds = %.lr.ph375
  %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.ph368.preheader.new

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

.lr.ph368:                                        ; preds = %.lr.ph368, %.lr.ph368.preheader.new
  %indvars.iv377 = phi i64 [ %indvars.iv, %.lr.ph368.preheader.new ], [ %indvars.iv.next378.1, %.lr.ph368 ]
  %.0367 = phi float [ %211, %.lr.ph368.preheader.new ], [ %.1.1, %.lr.ph368 ]
  %.1308366 = phi i32 [ 0, %.lr.ph368.preheader.new ], [ %.2.1, %.lr.ph368 ]
  %niter = phi i32 [ 0, %.lr.ph368.preheader.new ], [ %niter.next.1, %.lr.ph368 ]
  %217 = getelementptr inbounds float, ptr %30, i64 %indvars.iv377
  %218 = load float, ptr %217, align 4, !tbaa !9
  %219 = fcmp olt float %218, %.0367
  %220 = trunc nuw i64 %indvars.iv377 to i32
  %.2 = select i1 %219, i32 %220, i32 %.1308366
  %.1 = select i1 %219, float %218, float %.0367
  %221 = getelementptr float, ptr %11, i64 %indvars.iv377
  %222 = load float, ptr %221, align 4, !tbaa !9
  %223 = fcmp olt float %222, %.1
  %224 = trunc i64 %indvars.iv377 to i32
  %225 = add i32 %224, 1
  %.2.1 = select i1 %223, i32 %225, i32 %.2
  %.1.1 = select i1 %223, float %222, float %.1
  %indvars.iv.next378.1 = add nuw nsw i64 %indvars.iv377, 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.ph368, !llvm.loop !15

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph368, %.lr.ph368.preheader
  %.2.lcssa.ph = phi i32 [ poison, %.lr.ph368.preheader ], [ %.2.1, %.lr.ph368 ]
  %.1.lcssa.ph = phi float [ poison, %.lr.ph368.preheader ], [ %.1.1, %.lr.ph368 ]
  %indvars.iv377.unr = phi i64 [ %indvars.iv, %.lr.ph368.preheader ], [ %indvars.iv.next378.1, %.lr.ph368 ]
  %.0367.unr = phi float [ %211, %.lr.ph368.preheader ], [ %.1.1, %.lr.ph368 ]
  %.1308366.unr = phi i32 [ 0, %.lr.ph368.preheader ], [ %.2.1, %.lr.ph368 ]
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph368.epil

.lr.ph368.epil:                                   ; preds = %._crit_edge.unr-lcssa
  %226 = getelementptr inbounds float, ptr %30, i64 %indvars.iv377.unr
  %227 = load float, ptr %226, align 4, !tbaa !9
  %228 = fcmp olt float %227, %.0367.unr
  %229 = trunc nuw i64 %indvars.iv377.unr to i32
  %.2.epil = select i1 %228, i32 %229, i32 %.1308366.unr
  %.1.epil = select i1 %228, float %227, float %.0367.unr
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %.lr.ph368.epil
  %.2.lcssa = phi i32 [ %.2.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2.epil, %.lr.ph368.epil ]
  %.1.lcssa = phi float [ %.1.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.1.epil, %.lr.ph368.epil ]
  %.not341 = icmp eq i32 %.2.lcssa, 0
  br i1 %.not341, 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 float, ptr %30, i64 %231
  store float %211, ptr %234, align 4, !tbaa !9
  %235 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv380
  %236 = load i32, ptr %235, align 4, !tbaa !5
  store i32 %236, ptr %232, align 4, !tbaa !5
  store float %.1.lcssa, ptr %210, align 4, !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.complex, ptr %invariant.gep, i64 %238
  %239 = mul nsw i64 %indvars.iv380, %209
  %gep371 = getelementptr %struct.complex, ptr %invariant.gep, i64 %239
  call void @cswap_(ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep371, ptr noundef nonnull @c__1) #6
  %240 = load i32, ptr %18, align 4, !tbaa !5
  %.not342 = icmp eq i32 %240, 0
  br i1 %.not342, 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.iv380
  %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.ph375, %._crit_edge, %241, %230
  %246 = load i32, ptr %20, align 4, !tbaa !5
  %247 = sext i32 %246 to i64
  %.not339.not = icmp slt i64 %indvars.iv380, %247
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %indvar.next = add i32 %indvar, 1
  br i1 %.not339.not, label %.lr.ph375, label %.loopexit, !llvm.loop !17

.loopexit:                                        ; preds = %._crit_edge.thread, %206, %205, %92, %93, %.thread, %.thread349
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, 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 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 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 float @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 float @clanhp_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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