; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (cgesvx)

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

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

143:                                              ; preds = %22
  %144 = load i32, ptr %68, align 4, !tbaa !9
  %145 = icmp ne i32 %144, 0
  br i1 %145, label %146, label %148

146:                                              ; preds = %143, %22
  %147 = load ptr, ptr %32, align 8, !tbaa !5
  store i8 78, ptr %147, align 1, !tbaa !11
  store i32 0, ptr %77, align 4, !tbaa !9
  store i32 0, ptr %73, align 4, !tbaa !9
  br label %172

148:                                              ; preds = %143
  %149 = load ptr, ptr %32, align 8, !tbaa !5
  %150 = call i32 @lsame_(ptr noundef %149, ptr noundef @.str.2)
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %156, label %152

152:                                              ; preds = %148
  %153 = load ptr, ptr %32, align 8, !tbaa !5
  %154 = call i32 @lsame_(ptr noundef %153, ptr noundef @.str.3)
  %155 = icmp ne i32 %154, 0
  br label %156

156:                                              ; preds = %152, %148
  %157 = phi i1 [ true, %148 ], [ %155, %152 ]
  %158 = zext i1 %157 to i32
  store i32 %158, ptr %77, align 4, !tbaa !9
  %159 = load ptr, ptr %32, align 8, !tbaa !5
  %160 = call i32 @lsame_(ptr noundef %159, ptr noundef @.str.4)
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %166, label %162

162:                                              ; preds = %156
  %163 = load ptr, ptr %32, align 8, !tbaa !5
  %164 = call i32 @lsame_(ptr noundef %163, ptr noundef @.str.3)
  %165 = icmp ne i32 %164, 0
  br label %166

166:                                              ; preds = %162, %156
  %167 = phi i1 [ true, %156 ], [ %165, %162 ]
  %168 = zext i1 %167 to i32
  store i32 %168, ptr %73, align 4, !tbaa !9
  %169 = call float @slamch_(ptr noundef @.str.5)
  store float %169, ptr %76, align 4, !tbaa !12
  %170 = load float, ptr %76, align 4, !tbaa !12
  %171 = fdiv float 1.000000e+00, %170
  store float %171, ptr %71, align 4, !tbaa !12
  br label %172

172:                                              ; preds = %166, %146
  %173 = load i32, ptr %70, align 4, !tbaa !9
  %174 = icmp ne i32 %173, 0
  br i1 %174, label %184, label %175

175:                                              ; preds = %172
  %176 = load i32, ptr %68, align 4, !tbaa !9
  %177 = icmp ne i32 %176, 0
  br i1 %177, label %184, label %178

178:                                              ; preds = %175
  %179 = load ptr, ptr %23, align 8, !tbaa !5
  %180 = call i32 @lsame_(ptr noundef %179, ptr noundef @.str.6)
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %184, label %182

182:                                              ; preds = %178
  %183 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -1, ptr %183, align 4, !tbaa !9
  br label %456

184:                                              ; preds = %178, %175, %172
  %185 = load i32, ptr %75, align 4, !tbaa !9
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %197, label %187

187:                                              ; preds = %184
  %188 = load ptr, ptr %24, align 8, !tbaa !5
  %189 = call i32 @lsame_(ptr noundef %188, ptr noundef @.str.7)
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %197, label %191

191:                                              ; preds = %187
  %192 = load ptr, ptr %24, align 8, !tbaa !5
  %193 = call i32 @lsame_(ptr noundef %192, ptr noundef @.str.4)
  %194 = icmp ne i32 %193, 0
  br i1 %194, label %197, label %195

195:                                              ; preds = %191
  %196 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -2, ptr %196, align 4, !tbaa !9
  br label %455

197:                                              ; preds = %191, %187, %184
  %198 = load ptr, ptr %25, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = icmp slt i32 %199, 0
  br i1 %200, label %201, label %203

201:                                              ; preds = %197
  %202 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -3, ptr %202, align 4, !tbaa !9
  br label %454

203:                                              ; preds = %197
  %204 = load ptr, ptr %26, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = icmp slt i32 %205, 0
  br i1 %206, label %207, label %209

207:                                              ; preds = %203
  %208 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -4, ptr %208, align 4, !tbaa !9
  br label %453

209:                                              ; preds = %203
  %210 = load ptr, ptr %28, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = load ptr, ptr %25, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = icmp sge i32 1, %213
  br i1 %214, label %215, label %216

215:                                              ; preds = %209
  br label %219

216:                                              ; preds = %209
  %217 = load ptr, ptr %25, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %216, %215
  %220 = phi i32 [ 1, %215 ], [ %218, %216 ]
  %221 = icmp slt i32 %211, %220
  br i1 %221, label %222, label %224

222:                                              ; preds = %219
  %223 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -6, ptr %223, align 4, !tbaa !9
  br label %452

224:                                              ; preds = %219
  %225 = load ptr, ptr %30, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = load ptr, ptr %25, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = icmp sge i32 1, %228
  br i1 %229, label %230, label %231

230:                                              ; preds = %224
  br label %234

231:                                              ; preds = %224
  %232 = load ptr, ptr %25, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  br label %234

234:                                              ; preds = %231, %230
  %235 = phi i32 [ 1, %230 ], [ %233, %231 ]
  %236 = icmp slt i32 %226, %235
  br i1 %236, label %237, label %239

237:                                              ; preds = %234
  %238 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -8, ptr %238, align 4, !tbaa !9
  br label %451

239:                                              ; preds = %234
  %240 = load ptr, ptr %23, align 8, !tbaa !5
  %241 = call i32 @lsame_(ptr noundef %240, ptr noundef @.str.6)
  %242 = icmp ne i32 %241, 0
  br i1 %242, label %243, label %255

243:                                              ; preds = %239
  %244 = load i32, ptr %77, align 4, !tbaa !9
  %245 = icmp ne i32 %244, 0
  br i1 %245, label %255, label %246

246:                                              ; preds = %243
  %247 = load i32, ptr %73, align 4, !tbaa !9
  %248 = icmp ne i32 %247, 0
  br i1 %248, label %255, label %249

249:                                              ; preds = %246
  %250 = load ptr, ptr %32, align 8, !tbaa !5
  %251 = call i32 @lsame_(ptr noundef %250, ptr noundef @.str)
  %252 = icmp ne i32 %251, 0
  br i1 %252, label %255, label %253

253:                                              ; preds = %249
  %254 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -10, ptr %254, align 4, !tbaa !9
  br label %450

255:                                              ; preds = %249, %246, %243, %239
  %256 = load i32, ptr %77, align 4, !tbaa !9
  %257 = icmp ne i32 %256, 0
  br i1 %257, label %258, label %332

258:                                              ; preds = %255
  %259 = load float, ptr %71, align 4, !tbaa !12
  store float %259, ptr %65, align 4, !tbaa !12
  store float 0.000000e+00, ptr %66, align 4, !tbaa !12
  %260 = load ptr, ptr %25, align 8, !tbaa !5
  %261 = load i32, ptr %260, align 4, !tbaa !9
  store i32 %261, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %262

262:                                              ; preds = %297, %258
  %263 = load i32, ptr %64, align 4, !tbaa !9
  %264 = load i32, ptr %53, align 4, !tbaa !9
  %265 = icmp sle i32 %263, %264
  br i1 %265, label %266, label %300

266:                                              ; preds = %262
  %267 = load float, ptr %65, align 4, !tbaa !12
  store float %267, ptr %58, align 4, !tbaa !12
  %268 = load ptr, ptr %33, align 8, !tbaa !5
  %269 = load i32, ptr %64, align 4, !tbaa !9
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds float, ptr %268, i64 %270
  %272 = load float, ptr %271, align 4, !tbaa !12
  store float %272, ptr %59, align 4, !tbaa !12
  %273 = load float, ptr %58, align 4, !tbaa !12
  %274 = load float, ptr %59, align 4, !tbaa !12
  %275 = fcmp ole float %273, %274
  br i1 %275, label %276, label %278

276:                                              ; preds = %266
  %277 = load float, ptr %58, align 4, !tbaa !12
  br label %280

278:                                              ; preds = %266
  %279 = load float, ptr %59, align 4, !tbaa !12
  br label %280

280:                                              ; preds = %278, %276
  %281 = phi float [ %277, %276 ], [ %279, %278 ]
  store float %281, ptr %65, align 4, !tbaa !12
  %282 = load float, ptr %66, align 4, !tbaa !12
  store float %282, ptr %58, align 4, !tbaa !12
  %283 = load ptr, ptr %33, align 8, !tbaa !5
  %284 = load i32, ptr %64, align 4, !tbaa !9
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds float, ptr %283, i64 %285
  %287 = load float, ptr %286, align 4, !tbaa !12
  store float %287, ptr %59, align 4, !tbaa !12
  %288 = load float, ptr %58, align 4, !tbaa !12
  %289 = load float, ptr %59, align 4, !tbaa !12
  %290 = fcmp oge float %288, %289
  br i1 %290, label %291, label %293

291:                                              ; preds = %280
  %292 = load float, ptr %58, align 4, !tbaa !12
  br label %295

293:                                              ; preds = %280
  %294 = load float, ptr %59, align 4, !tbaa !12
  br label %295

295:                                              ; preds = %293, %291
  %296 = phi float [ %292, %291 ], [ %294, %293 ]
  store float %296, ptr %66, align 4, !tbaa !12
  br label %297

297:                                              ; preds = %295
  %298 = load i32, ptr %64, align 4, !tbaa !9
  %299 = add nsw i32 %298, 1
  store i32 %299, ptr %64, align 4, !tbaa !9
  br label %262, !llvm.loop !14

300:                                              ; preds = %262
  %301 = load float, ptr %65, align 4, !tbaa !12
  %302 = fcmp ole float %301, 0.000000e+00
  br i1 %302, label %303, label %305

303:                                              ; preds = %300
  %304 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -11, ptr %304, align 4, !tbaa !9
  br label %331

305:                                              ; preds = %300
  %306 = load ptr, ptr %25, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = icmp sgt i32 %307, 0
  br i1 %308, label %309, label %329

309:                                              ; preds = %305
  %310 = load float, ptr %65, align 4, !tbaa !12
  %311 = load float, ptr %76, align 4, !tbaa !12
  %312 = fcmp oge float %310, %311
  br i1 %312, label %313, label %315

313:                                              ; preds = %309
  %314 = load float, ptr %65, align 4, !tbaa !12
  br label %317

315:                                              ; preds = %309
  %316 = load float, ptr %76, align 4, !tbaa !12
  br label %317

317:                                              ; preds = %315, %313
  %318 = phi float [ %314, %313 ], [ %316, %315 ]
  %319 = load float, ptr %66, align 4, !tbaa !12
  %320 = load float, ptr %71, align 4, !tbaa !12
  %321 = fcmp ole float %319, %320
  br i1 %321, label %322, label %324

322:                                              ; preds = %317
  %323 = load float, ptr %66, align 4, !tbaa !12
  br label %326

324:                                              ; preds = %317
  %325 = load float, ptr %71, align 4, !tbaa !12
  br label %326

326:                                              ; preds = %324, %322
  %327 = phi float [ %323, %322 ], [ %325, %324 ]
  %328 = fdiv float %318, %327
  store float %328, ptr %74, align 4, !tbaa !12
  br label %330

329:                                              ; preds = %305
  store float 1.000000e+00, ptr %74, align 4, !tbaa !12
  br label %330

330:                                              ; preds = %329, %326
  br label %331

331:                                              ; preds = %330, %303
  br label %332

332:                                              ; preds = %331, %255
  %333 = load i32, ptr %73, align 4, !tbaa !9
  %334 = icmp ne i32 %333, 0
  br i1 %334, label %335, label %413

335:                                              ; preds = %332
  %336 = load ptr, ptr %44, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = icmp eq i32 %337, 0
  br i1 %338, label %339, label %413

339:                                              ; preds = %335
  %340 = load float, ptr %71, align 4, !tbaa !12
  store float %340, ptr %65, align 4, !tbaa !12
  store float 0.000000e+00, ptr %66, align 4, !tbaa !12
  %341 = load ptr, ptr %25, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  store i32 %342, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %378, %339
  %344 = load i32, ptr %64, align 4, !tbaa !9
  %345 = load i32, ptr %53, align 4, !tbaa !9
  %346 = icmp sle i32 %344, %345
  br i1 %346, label %347, label %381

347:                                              ; preds = %343
  %348 = load float, ptr %65, align 4, !tbaa !12
  store float %348, ptr %58, align 4, !tbaa !12
  %349 = load ptr, ptr %34, align 8, !tbaa !5
  %350 = load i32, ptr %64, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds float, ptr %349, i64 %351
  %353 = load float, ptr %352, align 4, !tbaa !12
  store float %353, ptr %59, align 4, !tbaa !12
  %354 = load float, ptr %58, align 4, !tbaa !12
  %355 = load float, ptr %59, align 4, !tbaa !12
  %356 = fcmp ole float %354, %355
  br i1 %356, label %357, label %359

357:                                              ; preds = %347
  %358 = load float, ptr %58, align 4, !tbaa !12
  br label %361

359:                                              ; preds = %347
  %360 = load float, ptr %59, align 4, !tbaa !12
  br label %361

361:                                              ; preds = %359, %357
  %362 = phi float [ %358, %357 ], [ %360, %359 ]
  store float %362, ptr %65, align 4, !tbaa !12
  %363 = load float, ptr %66, align 4, !tbaa !12
  store float %363, ptr %58, align 4, !tbaa !12
  %364 = load ptr, ptr %34, align 8, !tbaa !5
  %365 = load i32, ptr %64, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds float, ptr %364, i64 %366
  %368 = load float, ptr %367, align 4, !tbaa !12
  store float %368, ptr %59, align 4, !tbaa !12
  %369 = load float, ptr %58, align 4, !tbaa !12
  %370 = load float, ptr %59, align 4, !tbaa !12
  %371 = fcmp oge float %369, %370
  br i1 %371, label %372, label %374

372:                                              ; preds = %361
  %373 = load float, ptr %58, align 4, !tbaa !12
  br label %376

374:                                              ; preds = %361
  %375 = load float, ptr %59, align 4, !tbaa !12
  br label %376

376:                                              ; preds = %374, %372
  %377 = phi float [ %373, %372 ], [ %375, %374 ]
  store float %377, ptr %66, align 4, !tbaa !12
  br label %378

378:                                              ; preds = %376
  %379 = load i32, ptr %64, align 4, !tbaa !9
  %380 = add nsw i32 %379, 1
  store i32 %380, ptr %64, align 4, !tbaa !9
  br label %343, !llvm.loop !16

381:                                              ; preds = %343
  %382 = load float, ptr %65, align 4, !tbaa !12
  %383 = fcmp ole float %382, 0.000000e+00
  br i1 %383, label %384, label %386

384:                                              ; preds = %381
  %385 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -12, ptr %385, align 4, !tbaa !9
  br label %412

386:                                              ; preds = %381
  %387 = load ptr, ptr %25, align 8, !tbaa !5
  %388 = load i32, ptr %387, align 4, !tbaa !9
  %389 = icmp sgt i32 %388, 0
  br i1 %389, label %390, label %410

390:                                              ; preds = %386
  %391 = load float, ptr %65, align 4, !tbaa !12
  %392 = load float, ptr %76, align 4, !tbaa !12
  %393 = fcmp oge float %391, %392
  br i1 %393, label %394, label %396

394:                                              ; preds = %390
  %395 = load float, ptr %65, align 4, !tbaa !12
  br label %398

396:                                              ; preds = %390
  %397 = load float, ptr %76, align 4, !tbaa !12
  br label %398

398:                                              ; preds = %396, %394
  %399 = phi float [ %395, %394 ], [ %397, %396 ]
  %400 = load float, ptr %66, align 4, !tbaa !12
  %401 = load float, ptr %71, align 4, !tbaa !12
  %402 = fcmp ole float %400, %401
  br i1 %402, label %403, label %405

403:                                              ; preds = %398
  %404 = load float, ptr %66, align 4, !tbaa !12
  br label %407

405:                                              ; preds = %398
  %406 = load float, ptr %71, align 4, !tbaa !12
  br label %407

407:                                              ; preds = %405, %403
  %408 = phi float [ %404, %403 ], [ %406, %405 ]
  %409 = fdiv float %399, %408
  store float %409, ptr %69, align 4, !tbaa !12
  br label %411

410:                                              ; preds = %386
  store float 1.000000e+00, ptr %69, align 4, !tbaa !12
  br label %411

411:                                              ; preds = %410, %407
  br label %412

412:                                              ; preds = %411, %384
  br label %413

413:                                              ; preds = %412, %335, %332
  %414 = load ptr, ptr %44, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = icmp eq i32 %415, 0
  br i1 %416, label %417, label %449

417:                                              ; preds = %413
  %418 = load ptr, ptr %36, align 8, !tbaa !5
  %419 = load i32, ptr %418, align 4, !tbaa !9
  %420 = load ptr, ptr %25, align 8, !tbaa !5
  %421 = load i32, ptr %420, align 4, !tbaa !9
  %422 = icmp sge i32 1, %421
  br i1 %422, label %423, label %424

423:                                              ; preds = %417
  br label %427

424:                                              ; preds = %417
  %425 = load ptr, ptr %25, align 8, !tbaa !5
  %426 = load i32, ptr %425, align 4, !tbaa !9
  br label %427

427:                                              ; preds = %424, %423
  %428 = phi i32 [ 1, %423 ], [ %426, %424 ]
  %429 = icmp slt i32 %419, %428
  br i1 %429, label %430, label %432

430:                                              ; preds = %427
  %431 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -14, ptr %431, align 4, !tbaa !9
  br label %448

432:                                              ; preds = %427
  %433 = load ptr, ptr %38, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = load ptr, ptr %25, align 8, !tbaa !5
  %436 = load i32, ptr %435, align 4, !tbaa !9
  %437 = icmp sge i32 1, %436
  br i1 %437, label %438, label %439

438:                                              ; preds = %432
  br label %442

439:                                              ; preds = %432
  %440 = load ptr, ptr %25, align 8, !tbaa !5
  %441 = load i32, ptr %440, align 4, !tbaa !9
  br label %442

442:                                              ; preds = %439, %438
  %443 = phi i32 [ 1, %438 ], [ %441, %439 ]
  %444 = icmp slt i32 %434, %443
  br i1 %444, label %445, label %447

445:                                              ; preds = %442
  %446 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -16, ptr %446, align 4, !tbaa !9
  br label %447

447:                                              ; preds = %445, %442
  br label %448

448:                                              ; preds = %447, %430
  br label %449

449:                                              ; preds = %448, %413
  br label %450

450:                                              ; preds = %449, %253
  br label %451

451:                                              ; preds = %450, %237
  br label %452

452:                                              ; preds = %451, %222
  br label %453

453:                                              ; preds = %452, %207
  br label %454

454:                                              ; preds = %453, %201
  br label %455

455:                                              ; preds = %454, %195
  br label %456

456:                                              ; preds = %455, %182
  %457 = load ptr, ptr %44, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %460, label %465

460:                                              ; preds = %456
  %461 = load ptr, ptr %44, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = sub nsw i32 0, %462
  store i32 %463, ptr %53, align 4, !tbaa !9
  %464 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %53, i32 noundef 6)
  store i32 1, ptr %79, align 4
  br label %1071

465:                                              ; preds = %456
  %466 = load i32, ptr %68, align 4, !tbaa !9
  %467 = icmp ne i32 %466, 0
  br i1 %467, label %468, label %516

468:                                              ; preds = %465
  %469 = load ptr, ptr %25, align 8, !tbaa !5
  %470 = load ptr, ptr %25, align 8, !tbaa !5
  %471 = load ptr, ptr %27, align 8, !tbaa !5
  %472 = load i32, ptr %46, align 4, !tbaa !9
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds %struct.complex, ptr %471, i64 %473
  %475 = load ptr, ptr %28, align 8, !tbaa !5
  %476 = load ptr, ptr %33, align 8, !tbaa !5
  %477 = getelementptr inbounds float, ptr %476, i64 1
  %478 = load ptr, ptr %34, align 8, !tbaa !5
  %479 = getelementptr inbounds float, ptr %478, i64 1
  call void @cgeequ_(ptr noundef %469, ptr noundef %470, ptr noundef %474, ptr noundef %475, ptr noundef %477, ptr noundef %479, ptr noundef %74, ptr noundef %69, ptr noundef %61, ptr noundef %72)
  %480 = load i32, ptr %72, align 4, !tbaa !9
  %481 = icmp eq i32 %480, 0
  br i1 %481, label %482, label %515

482:                                              ; preds = %468
  %483 = load ptr, ptr %25, align 8, !tbaa !5
  %484 = load ptr, ptr %25, align 8, !tbaa !5
  %485 = load ptr, ptr %27, align 8, !tbaa !5
  %486 = load i32, ptr %46, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds %struct.complex, ptr %485, i64 %487
  %489 = load ptr, ptr %28, align 8, !tbaa !5
  %490 = load ptr, ptr %33, align 8, !tbaa !5
  %491 = getelementptr inbounds float, ptr %490, i64 1
  %492 = load ptr, ptr %34, align 8, !tbaa !5
  %493 = getelementptr inbounds float, ptr %492, i64 1
  %494 = load ptr, ptr %32, align 8, !tbaa !5
  call void @claqge_(ptr noundef %483, ptr noundef %484, ptr noundef %488, ptr noundef %489, ptr noundef %491, ptr noundef %493, ptr noundef %74, ptr noundef %69, ptr noundef %61, ptr noundef %494)
  %495 = load ptr, ptr %32, align 8, !tbaa !5
  %496 = call i32 @lsame_(ptr noundef %495, ptr noundef @.str.2)
  %497 = icmp ne i32 %496, 0
  br i1 %497, label %502, label %498

498:                                              ; preds = %482
  %499 = load ptr, ptr %32, align 8, !tbaa !5
  %500 = call i32 @lsame_(ptr noundef %499, ptr noundef @.str.3)
  %501 = icmp ne i32 %500, 0
  br label %502

502:                                              ; preds = %498, %482
  %503 = phi i1 [ true, %482 ], [ %501, %498 ]
  %504 = zext i1 %503 to i32
  store i32 %504, ptr %77, align 4, !tbaa !9
  %505 = load ptr, ptr %32, align 8, !tbaa !5
  %506 = call i32 @lsame_(ptr noundef %505, ptr noundef @.str.4)
  %507 = icmp ne i32 %506, 0
  br i1 %507, label %512, label %508

508:                                              ; preds = %502
  %509 = load ptr, ptr %32, align 8, !tbaa !5
  %510 = call i32 @lsame_(ptr noundef %509, ptr noundef @.str.3)
  %511 = icmp ne i32 %510, 0
  br label %512

512:                                              ; preds = %508, %502
  %513 = phi i1 [ true, %502 ], [ %511, %508 ]
  %514 = zext i1 %513 to i32
  store i32 %514, ptr %73, align 4, !tbaa !9
  br label %515

515:                                              ; preds = %512, %468
  br label %516

516:                                              ; preds = %515, %465
  %517 = load i32, ptr %75, align 4, !tbaa !9
  %518 = icmp ne i32 %517, 0
  br i1 %518, label %519, label %597

519:                                              ; preds = %516
  %520 = load i32, ptr %77, align 4, !tbaa !9
  %521 = icmp ne i32 %520, 0
  br i1 %521, label %522, label %596

522:                                              ; preds = %519
  %523 = load ptr, ptr %26, align 8, !tbaa !5
  %524 = load i32, ptr %523, align 4, !tbaa !9
  store i32 %524, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %525

525:                                              ; preds = %592, %522
  %526 = load i32, ptr %64, align 4, !tbaa !9
  %527 = load i32, ptr %53, align 4, !tbaa !9
  %528 = icmp sle i32 %526, %527
  br i1 %528, label %529, label %595

529:                                              ; preds = %525
  %530 = load ptr, ptr %25, align 8, !tbaa !5
  %531 = load i32, ptr %530, align 4, !tbaa !9
  store i32 %531, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %532

532:                                              ; preds = %588, %529
  %533 = load i32, ptr %63, align 4, !tbaa !9
  %534 = load i32, ptr %54, align 4, !tbaa !9
  %535 = icmp sle i32 %533, %534
  br i1 %535, label %536, label %591

536:                                              ; preds = %532
  %537 = load i32, ptr %63, align 4, !tbaa !9
  %538 = load i32, ptr %64, align 4, !tbaa !9
  %539 = load i32, ptr %49, align 4, !tbaa !9
  %540 = mul nsw i32 %538, %539
  %541 = add nsw i32 %537, %540
  store i32 %541, ptr %55, align 4, !tbaa !9
  %542 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %542, ptr %56, align 4, !tbaa !9
  %543 = load i32, ptr %63, align 4, !tbaa !9
  %544 = load i32, ptr %64, align 4, !tbaa !9
  %545 = load i32, ptr %49, align 4, !tbaa !9
  %546 = mul nsw i32 %544, %545
  %547 = add nsw i32 %543, %546
  store i32 %547, ptr %57, align 4, !tbaa !9
  %548 = load ptr, ptr %33, align 8, !tbaa !5
  %549 = load i32, ptr %56, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds float, ptr %548, i64 %550
  %552 = load float, ptr %551, align 4, !tbaa !12
  %553 = load ptr, ptr %35, align 8, !tbaa !5
  %554 = load i32, ptr %57, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct.complex, ptr %553, i64 %555
  %557 = getelementptr inbounds %struct.complex, ptr %556, i32 0, i32 0
  %558 = load float, ptr %557, align 4, !tbaa !17
  %559 = fmul float %552, %558
  %560 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 0
  store float %559, ptr %560, align 4, !tbaa !17
  %561 = load ptr, ptr %33, align 8, !tbaa !5
  %562 = load i32, ptr %56, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds float, ptr %561, i64 %563
  %565 = load float, ptr %564, align 4, !tbaa !12
  %566 = load ptr, ptr %35, align 8, !tbaa !5
  %567 = load i32, ptr %57, align 4, !tbaa !9
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds %struct.complex, ptr %566, i64 %568
  %570 = getelementptr inbounds %struct.complex, ptr %569, i32 0, i32 1
  %571 = load float, ptr %570, align 4, !tbaa !19
  %572 = fmul float %565, %571
  %573 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 1
  store float %572, ptr %573, align 4, !tbaa !19
  %574 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 0
  %575 = load float, ptr %574, align 4, !tbaa !17
  %576 = load ptr, ptr %35, align 8, !tbaa !5
  %577 = load i32, ptr %55, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds %struct.complex, ptr %576, i64 %578
  %580 = getelementptr inbounds %struct.complex, ptr %579, i32 0, i32 0
  store float %575, ptr %580, align 4, !tbaa !17
  %581 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 1
  %582 = load float, ptr %581, align 4, !tbaa !19
  %583 = load ptr, ptr %35, align 8, !tbaa !5
  %584 = load i32, ptr %55, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds %struct.complex, ptr %583, i64 %585
  %587 = getelementptr inbounds %struct.complex, ptr %586, i32 0, i32 1
  store float %582, ptr %587, align 4, !tbaa !19
  br label %588

588:                                              ; preds = %536
  %589 = load i32, ptr %63, align 4, !tbaa !9
  %590 = add nsw i32 %589, 1
  store i32 %590, ptr %63, align 4, !tbaa !9
  br label %532, !llvm.loop !20

591:                                              ; preds = %532
  br label %592

592:                                              ; preds = %591
  %593 = load i32, ptr %64, align 4, !tbaa !9
  %594 = add nsw i32 %593, 1
  store i32 %594, ptr %64, align 4, !tbaa !9
  br label %525, !llvm.loop !21

595:                                              ; preds = %525
  br label %596

596:                                              ; preds = %595, %519
  br label %675

597:                                              ; preds = %516
  %598 = load i32, ptr %73, align 4, !tbaa !9
  %599 = icmp ne i32 %598, 0
  br i1 %599, label %600, label %674

600:                                              ; preds = %597
  %601 = load ptr, ptr %26, align 8, !tbaa !5
  %602 = load i32, ptr %601, align 4, !tbaa !9
  store i32 %602, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %603

603:                                              ; preds = %670, %600
  %604 = load i32, ptr %64, align 4, !tbaa !9
  %605 = load i32, ptr %53, align 4, !tbaa !9
  %606 = icmp sle i32 %604, %605
  br i1 %606, label %607, label %673

607:                                              ; preds = %603
  %608 = load ptr, ptr %25, align 8, !tbaa !5
  %609 = load i32, ptr %608, align 4, !tbaa !9
  store i32 %609, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %610

610:                                              ; preds = %666, %607
  %611 = load i32, ptr %63, align 4, !tbaa !9
  %612 = load i32, ptr %54, align 4, !tbaa !9
  %613 = icmp sle i32 %611, %612
  br i1 %613, label %614, label %669

614:                                              ; preds = %610
  %615 = load i32, ptr %63, align 4, !tbaa !9
  %616 = load i32, ptr %64, align 4, !tbaa !9
  %617 = load i32, ptr %49, align 4, !tbaa !9
  %618 = mul nsw i32 %616, %617
  %619 = add nsw i32 %615, %618
  store i32 %619, ptr %55, align 4, !tbaa !9
  %620 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %620, ptr %56, align 4, !tbaa !9
  %621 = load i32, ptr %63, align 4, !tbaa !9
  %622 = load i32, ptr %64, align 4, !tbaa !9
  %623 = load i32, ptr %49, align 4, !tbaa !9
  %624 = mul nsw i32 %622, %623
  %625 = add nsw i32 %621, %624
  store i32 %625, ptr %57, align 4, !tbaa !9
  %626 = load ptr, ptr %34, align 8, !tbaa !5
  %627 = load i32, ptr %56, align 4, !tbaa !9
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds float, ptr %626, i64 %628
  %630 = load float, ptr %629, align 4, !tbaa !12
  %631 = load ptr, ptr %35, align 8, !tbaa !5
  %632 = load i32, ptr %57, align 4, !tbaa !9
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds %struct.complex, ptr %631, i64 %633
  %635 = getelementptr inbounds %struct.complex, ptr %634, i32 0, i32 0
  %636 = load float, ptr %635, align 4, !tbaa !17
  %637 = fmul float %630, %636
  %638 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 0
  store float %637, ptr %638, align 4, !tbaa !17
  %639 = load ptr, ptr %34, align 8, !tbaa !5
  %640 = load i32, ptr %56, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds float, ptr %639, i64 %641
  %643 = load float, ptr %642, align 4, !tbaa !12
  %644 = load ptr, ptr %35, align 8, !tbaa !5
  %645 = load i32, ptr %57, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds %struct.complex, ptr %644, i64 %646
  %648 = getelementptr inbounds %struct.complex, ptr %647, i32 0, i32 1
  %649 = load float, ptr %648, align 4, !tbaa !19
  %650 = fmul float %643, %649
  %651 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 1
  store float %650, ptr %651, align 4, !tbaa !19
  %652 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 0
  %653 = load float, ptr %652, align 4, !tbaa !17
  %654 = load ptr, ptr %35, align 8, !tbaa !5
  %655 = load i32, ptr %55, align 4, !tbaa !9
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds %struct.complex, ptr %654, i64 %656
  %658 = getelementptr inbounds %struct.complex, ptr %657, i32 0, i32 0
  store float %653, ptr %658, align 4, !tbaa !17
  %659 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 1
  %660 = load float, ptr %659, align 4, !tbaa !19
  %661 = load ptr, ptr %35, align 8, !tbaa !5
  %662 = load i32, ptr %55, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds %struct.complex, ptr %661, i64 %663
  %665 = getelementptr inbounds %struct.complex, ptr %664, i32 0, i32 1
  store float %660, ptr %665, align 4, !tbaa !19
  br label %666

666:                                              ; preds = %614
  %667 = load i32, ptr %63, align 4, !tbaa !9
  %668 = add nsw i32 %667, 1
  store i32 %668, ptr %63, align 4, !tbaa !9
  br label %610, !llvm.loop !22

669:                                              ; preds = %610
  br label %670

670:                                              ; preds = %669
  %671 = load i32, ptr %64, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %64, align 4, !tbaa !9
  br label %603, !llvm.loop !23

673:                                              ; preds = %603
  br label %674

674:                                              ; preds = %673, %597
  br label %675

675:                                              ; preds = %674, %596
  %676 = load i32, ptr %70, align 4, !tbaa !9
  %677 = icmp ne i32 %676, 0
  br i1 %677, label %681, label %678

678:                                              ; preds = %675
  %679 = load i32, ptr %68, align 4, !tbaa !9
  %680 = icmp ne i32 %679, 0
  br i1 %680, label %681, label %741

681:                                              ; preds = %678, %675
  %682 = load ptr, ptr %25, align 8, !tbaa !5
  %683 = load ptr, ptr %25, align 8, !tbaa !5
  %684 = load ptr, ptr %27, align 8, !tbaa !5
  %685 = load i32, ptr %46, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds %struct.complex, ptr %684, i64 %686
  %688 = load ptr, ptr %28, align 8, !tbaa !5
  %689 = load ptr, ptr %29, align 8, !tbaa !5
  %690 = load i32, ptr %48, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds %struct.complex, ptr %689, i64 %691
  %693 = load ptr, ptr %30, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.9, ptr noundef %682, ptr noundef %683, ptr noundef %687, ptr noundef %688, ptr noundef %692, ptr noundef %693)
  %694 = load ptr, ptr %25, align 8, !tbaa !5
  %695 = load ptr, ptr %25, align 8, !tbaa !5
  %696 = load ptr, ptr %29, align 8, !tbaa !5
  %697 = load i32, ptr %48, align 4, !tbaa !9
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds %struct.complex, ptr %696, i64 %698
  %700 = load ptr, ptr %30, align 8, !tbaa !5
  %701 = load ptr, ptr %31, align 8, !tbaa !5
  %702 = getelementptr inbounds i32, ptr %701, i64 1
  %703 = load ptr, ptr %44, align 8, !tbaa !5
  %704 = call i32 @cgetrf_(ptr noundef %694, ptr noundef %695, ptr noundef %699, ptr noundef %700, ptr noundef %702, ptr noundef %703)
  %705 = load ptr, ptr %44, align 8, !tbaa !5
  %706 = load i32, ptr %705, align 4, !tbaa !9
  %707 = icmp sgt i32 %706, 0
  br i1 %707, label %708, label %740

708:                                              ; preds = %681
  %709 = load ptr, ptr %44, align 8, !tbaa !5
  %710 = load ptr, ptr %44, align 8, !tbaa !5
  %711 = load ptr, ptr %29, align 8, !tbaa !5
  %712 = load i32, ptr %48, align 4, !tbaa !9
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds %struct.complex, ptr %711, i64 %713
  %715 = load ptr, ptr %30, align 8, !tbaa !5
  %716 = load ptr, ptr %43, align 8, !tbaa !5
  %717 = getelementptr inbounds float, ptr %716, i64 1
  %718 = call float @clantr_(ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef @.str, ptr noundef %709, ptr noundef %710, ptr noundef %714, ptr noundef %715, ptr noundef %717)
  store float %718, ptr %78, align 4, !tbaa !12
  %719 = load float, ptr %78, align 4, !tbaa !12
  %720 = fcmp oeq float %719, 0.000000e+00
  br i1 %720, label %721, label %722

721:                                              ; preds = %708
  store float 1.000000e+00, ptr %78, align 4, !tbaa !12
  br label %735

722:                                              ; preds = %708
  %723 = load ptr, ptr %25, align 8, !tbaa !5
  %724 = load ptr, ptr %44, align 8, !tbaa !5
  %725 = load ptr, ptr %27, align 8, !tbaa !5
  %726 = load i32, ptr %46, align 4, !tbaa !9
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds %struct.complex, ptr %725, i64 %727
  %729 = load ptr, ptr %28, align 8, !tbaa !5
  %730 = load ptr, ptr %43, align 8, !tbaa !5
  %731 = getelementptr inbounds float, ptr %730, i64 1
  %732 = call float @clange_(ptr noundef @.str.10, ptr noundef %723, ptr noundef %724, ptr noundef %728, ptr noundef %729, ptr noundef %731)
  %733 = load float, ptr %78, align 4, !tbaa !12
  %734 = fdiv float %732, %733
  store float %734, ptr %78, align 4, !tbaa !12
  br label %735

735:                                              ; preds = %722, %721
  %736 = load float, ptr %78, align 4, !tbaa !12
  %737 = load ptr, ptr %43, align 8, !tbaa !5
  %738 = getelementptr inbounds float, ptr %737, i64 1
  store float %736, ptr %738, align 4, !tbaa !12
  %739 = load ptr, ptr %39, align 8, !tbaa !5
  store float 0.000000e+00, ptr %739, align 4, !tbaa !12
  store i32 1, ptr %79, align 4
  br label %1071

740:                                              ; preds = %681
  br label %741

741:                                              ; preds = %740, %678
  %742 = load i32, ptr %75, align 4, !tbaa !9
  %743 = icmp ne i32 %742, 0
  br i1 %743, label %744, label %746

744:                                              ; preds = %741
  %745 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 49, ptr %745, align 1, !tbaa !11
  br label %748

746:                                              ; preds = %741
  %747 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  store i8 73, ptr %747, align 1, !tbaa !11
  br label %748

748:                                              ; preds = %746, %744
  %749 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  %750 = load ptr, ptr %25, align 8, !tbaa !5
  %751 = load ptr, ptr %25, align 8, !tbaa !5
  %752 = load ptr, ptr %27, align 8, !tbaa !5
  %753 = load i32, ptr %46, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds %struct.complex, ptr %752, i64 %754
  %756 = load ptr, ptr %28, align 8, !tbaa !5
  %757 = load ptr, ptr %43, align 8, !tbaa !5
  %758 = getelementptr inbounds float, ptr %757, i64 1
  %759 = call float @clange_(ptr noundef %749, ptr noundef %750, ptr noundef %751, ptr noundef %755, ptr noundef %756, ptr noundef %758)
  store float %759, ptr %67, align 4, !tbaa !12
  %760 = load ptr, ptr %25, align 8, !tbaa !5
  %761 = load ptr, ptr %25, align 8, !tbaa !5
  %762 = load ptr, ptr %29, align 8, !tbaa !5
  %763 = load i32, ptr %48, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds %struct.complex, ptr %762, i64 %764
  %766 = load ptr, ptr %30, align 8, !tbaa !5
  %767 = load ptr, ptr %43, align 8, !tbaa !5
  %768 = getelementptr inbounds float, ptr %767, i64 1
  %769 = call float @clantr_(ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef @.str, ptr noundef %760, ptr noundef %761, ptr noundef %765, ptr noundef %766, ptr noundef %768)
  store float %769, ptr %78, align 4, !tbaa !12
  %770 = load float, ptr %78, align 4, !tbaa !12
  %771 = fcmp oeq float %770, 0.000000e+00
  br i1 %771, label %772, label %773

772:                                              ; preds = %748
  store float 1.000000e+00, ptr %78, align 4, !tbaa !12
  br label %786

773:                                              ; preds = %748
  %774 = load ptr, ptr %25, align 8, !tbaa !5
  %775 = load ptr, ptr %25, align 8, !tbaa !5
  %776 = load ptr, ptr %27, align 8, !tbaa !5
  %777 = load i32, ptr %46, align 4, !tbaa !9
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds %struct.complex, ptr %776, i64 %778
  %780 = load ptr, ptr %28, align 8, !tbaa !5
  %781 = load ptr, ptr %43, align 8, !tbaa !5
  %782 = getelementptr inbounds float, ptr %781, i64 1
  %783 = call float @clange_(ptr noundef @.str.10, ptr noundef %774, ptr noundef %775, ptr noundef %779, ptr noundef %780, ptr noundef %782)
  %784 = load float, ptr %78, align 4, !tbaa !12
  %785 = fdiv float %783, %784
  store float %785, ptr %78, align 4, !tbaa !12
  br label %786

786:                                              ; preds = %773, %772
  %787 = getelementptr inbounds [1 x i8], ptr %62, i64 0, i64 0
  %788 = load ptr, ptr %25, align 8, !tbaa !5
  %789 = load ptr, ptr %29, align 8, !tbaa !5
  %790 = load i32, ptr %48, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds %struct.complex, ptr %789, i64 %791
  %793 = load ptr, ptr %30, align 8, !tbaa !5
  %794 = load ptr, ptr %39, align 8, !tbaa !5
  %795 = load ptr, ptr %42, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.complex, ptr %795, i64 1
  %797 = load ptr, ptr %43, align 8, !tbaa !5
  %798 = getelementptr inbounds float, ptr %797, i64 1
  %799 = load ptr, ptr %44, align 8, !tbaa !5
  call void @cgecon_(ptr noundef %787, ptr noundef %788, ptr noundef %792, ptr noundef %793, ptr noundef %67, ptr noundef %794, ptr noundef %796, ptr noundef %798, ptr noundef %799)
  %800 = load ptr, ptr %25, align 8, !tbaa !5
  %801 = load ptr, ptr %26, align 8, !tbaa !5
  %802 = load ptr, ptr %35, align 8, !tbaa !5
  %803 = load i32, ptr %50, align 4, !tbaa !9
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds %struct.complex, ptr %802, i64 %804
  %806 = load ptr, ptr %36, align 8, !tbaa !5
  %807 = load ptr, ptr %37, align 8, !tbaa !5
  %808 = load i32, ptr %52, align 4, !tbaa !9
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds %struct.complex, ptr %807, i64 %809
  %811 = load ptr, ptr %38, align 8, !tbaa !5
  call void @clacpy_(ptr noundef @.str.9, ptr noundef %800, ptr noundef %801, ptr noundef %805, ptr noundef %806, ptr noundef %810, ptr noundef %811)
  %812 = load ptr, ptr %24, align 8, !tbaa !5
  %813 = load ptr, ptr %25, align 8, !tbaa !5
  %814 = load ptr, ptr %26, align 8, !tbaa !5
  %815 = load ptr, ptr %29, align 8, !tbaa !5
  %816 = load i32, ptr %48, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds %struct.complex, ptr %815, i64 %817
  %819 = load ptr, ptr %30, align 8, !tbaa !5
  %820 = load ptr, ptr %31, align 8, !tbaa !5
  %821 = getelementptr inbounds i32, ptr %820, i64 1
  %822 = load ptr, ptr %37, align 8, !tbaa !5
  %823 = load i32, ptr %52, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds %struct.complex, ptr %822, i64 %824
  %826 = load ptr, ptr %38, align 8, !tbaa !5
  %827 = load ptr, ptr %44, align 8, !tbaa !5
  %828 = call i32 @cgetrs_(ptr noundef %812, ptr noundef %813, ptr noundef %814, ptr noundef %818, ptr noundef %819, ptr noundef %821, ptr noundef %825, ptr noundef %826, ptr noundef %827)
  %829 = load ptr, ptr %24, align 8, !tbaa !5
  %830 = load ptr, ptr %25, align 8, !tbaa !5
  %831 = load ptr, ptr %26, align 8, !tbaa !5
  %832 = load ptr, ptr %27, align 8, !tbaa !5
  %833 = load i32, ptr %46, align 4, !tbaa !9
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds %struct.complex, ptr %832, i64 %834
  %836 = load ptr, ptr %28, align 8, !tbaa !5
  %837 = load ptr, ptr %29, align 8, !tbaa !5
  %838 = load i32, ptr %48, align 4, !tbaa !9
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds %struct.complex, ptr %837, i64 %839
  %841 = load ptr, ptr %30, align 8, !tbaa !5
  %842 = load ptr, ptr %31, align 8, !tbaa !5
  %843 = getelementptr inbounds i32, ptr %842, i64 1
  %844 = load ptr, ptr %35, align 8, !tbaa !5
  %845 = load i32, ptr %50, align 4, !tbaa !9
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds %struct.complex, ptr %844, i64 %846
  %848 = load ptr, ptr %36, align 8, !tbaa !5
  %849 = load ptr, ptr %37, align 8, !tbaa !5
  %850 = load i32, ptr %52, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds %struct.complex, ptr %849, i64 %851
  %853 = load ptr, ptr %38, align 8, !tbaa !5
  %854 = load ptr, ptr %40, align 8, !tbaa !5
  %855 = getelementptr inbounds float, ptr %854, i64 1
  %856 = load ptr, ptr %41, align 8, !tbaa !5
  %857 = getelementptr inbounds float, ptr %856, i64 1
  %858 = load ptr, ptr %42, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct.complex, ptr %858, i64 1
  %860 = load ptr, ptr %43, align 8, !tbaa !5
  %861 = getelementptr inbounds float, ptr %860, i64 1
  %862 = load ptr, ptr %44, align 8, !tbaa !5
  call void @cgerfs_(ptr noundef %829, ptr noundef %830, ptr noundef %831, ptr noundef %835, ptr noundef %836, ptr noundef %840, ptr noundef %841, ptr noundef %843, ptr noundef %847, ptr noundef %848, ptr noundef %852, ptr noundef %853, ptr noundef %855, ptr noundef %857, ptr noundef %859, ptr noundef %861, ptr noundef %862)
  %863 = load i32, ptr %75, align 4, !tbaa !9
  %864 = icmp ne i32 %863, 0
  br i1 %864, label %865, label %961

865:                                              ; preds = %786
  %866 = load i32, ptr %73, align 4, !tbaa !9
  %867 = icmp ne i32 %866, 0
  br i1 %867, label %868, label %960

868:                                              ; preds = %865
  %869 = load ptr, ptr %26, align 8, !tbaa !5
  %870 = load i32, ptr %869, align 4, !tbaa !9
  store i32 %870, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %871

871:                                              ; preds = %938, %868
  %872 = load i32, ptr %64, align 4, !tbaa !9
  %873 = load i32, ptr %53, align 4, !tbaa !9
  %874 = icmp sle i32 %872, %873
  br i1 %874, label %875, label %941

875:                                              ; preds = %871
  %876 = load ptr, ptr %25, align 8, !tbaa !5
  %877 = load i32, ptr %876, align 4, !tbaa !9
  store i32 %877, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %878

878:                                              ; preds = %934, %875
  %879 = load i32, ptr %63, align 4, !tbaa !9
  %880 = load i32, ptr %54, align 4, !tbaa !9
  %881 = icmp sle i32 %879, %880
  br i1 %881, label %882, label %937

882:                                              ; preds = %878
  %883 = load i32, ptr %63, align 4, !tbaa !9
  %884 = load i32, ptr %64, align 4, !tbaa !9
  %885 = load i32, ptr %51, align 4, !tbaa !9
  %886 = mul nsw i32 %884, %885
  %887 = add nsw i32 %883, %886
  store i32 %887, ptr %55, align 4, !tbaa !9
  %888 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %888, ptr %56, align 4, !tbaa !9
  %889 = load i32, ptr %63, align 4, !tbaa !9
  %890 = load i32, ptr %64, align 4, !tbaa !9
  %891 = load i32, ptr %51, align 4, !tbaa !9
  %892 = mul nsw i32 %890, %891
  %893 = add nsw i32 %889, %892
  store i32 %893, ptr %57, align 4, !tbaa !9
  %894 = load ptr, ptr %34, align 8, !tbaa !5
  %895 = load i32, ptr %56, align 4, !tbaa !9
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds float, ptr %894, i64 %896
  %898 = load float, ptr %897, align 4, !tbaa !12
  %899 = load ptr, ptr %37, align 8, !tbaa !5
  %900 = load i32, ptr %57, align 4, !tbaa !9
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds %struct.complex, ptr %899, i64 %901
  %903 = getelementptr inbounds %struct.complex, ptr %902, i32 0, i32 0
  %904 = load float, ptr %903, align 4, !tbaa !17
  %905 = fmul float %898, %904
  %906 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 0
  store float %905, ptr %906, align 4, !tbaa !17
  %907 = load ptr, ptr %34, align 8, !tbaa !5
  %908 = load i32, ptr %56, align 4, !tbaa !9
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds float, ptr %907, i64 %909
  %911 = load float, ptr %910, align 4, !tbaa !12
  %912 = load ptr, ptr %37, align 8, !tbaa !5
  %913 = load i32, ptr %57, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds %struct.complex, ptr %912, i64 %914
  %916 = getelementptr inbounds %struct.complex, ptr %915, i32 0, i32 1
  %917 = load float, ptr %916, align 4, !tbaa !19
  %918 = fmul float %911, %917
  %919 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 1
  store float %918, ptr %919, align 4, !tbaa !19
  %920 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 0
  %921 = load float, ptr %920, align 4, !tbaa !17
  %922 = load ptr, ptr %37, align 8, !tbaa !5
  %923 = load i32, ptr %55, align 4, !tbaa !9
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds %struct.complex, ptr %922, i64 %924
  %926 = getelementptr inbounds %struct.complex, ptr %925, i32 0, i32 0
  store float %921, ptr %926, align 4, !tbaa !17
  %927 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 1
  %928 = load float, ptr %927, align 4, !tbaa !19
  %929 = load ptr, ptr %37, align 8, !tbaa !5
  %930 = load i32, ptr %55, align 4, !tbaa !9
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds %struct.complex, ptr %929, i64 %931
  %933 = getelementptr inbounds %struct.complex, ptr %932, i32 0, i32 1
  store float %928, ptr %933, align 4, !tbaa !19
  br label %934

934:                                              ; preds = %882
  %935 = load i32, ptr %63, align 4, !tbaa !9
  %936 = add nsw i32 %935, 1
  store i32 %936, ptr %63, align 4, !tbaa !9
  br label %878, !llvm.loop !24

937:                                              ; preds = %878
  br label %938

938:                                              ; preds = %937
  %939 = load i32, ptr %64, align 4, !tbaa !9
  %940 = add nsw i32 %939, 1
  store i32 %940, ptr %64, align 4, !tbaa !9
  br label %871, !llvm.loop !25

941:                                              ; preds = %871
  %942 = load ptr, ptr %26, align 8, !tbaa !5
  %943 = load i32, ptr %942, align 4, !tbaa !9
  store i32 %943, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %944

944:                                              ; preds = %956, %941
  %945 = load i32, ptr %64, align 4, !tbaa !9
  %946 = load i32, ptr %53, align 4, !tbaa !9
  %947 = icmp sle i32 %945, %946
  br i1 %947, label %948, label %959

948:                                              ; preds = %944
  %949 = load float, ptr %69, align 4, !tbaa !12
  %950 = load ptr, ptr %40, align 8, !tbaa !5
  %951 = load i32, ptr %64, align 4, !tbaa !9
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds float, ptr %950, i64 %952
  %954 = load float, ptr %953, align 4, !tbaa !12
  %955 = fdiv float %954, %949
  store float %955, ptr %953, align 4, !tbaa !12
  br label %956

956:                                              ; preds = %948
  %957 = load i32, ptr %64, align 4, !tbaa !9
  %958 = add nsw i32 %957, 1
  store i32 %958, ptr %64, align 4, !tbaa !9
  br label %944, !llvm.loop !26

959:                                              ; preds = %944
  br label %960

960:                                              ; preds = %959, %865
  br label %1057

961:                                              ; preds = %786
  %962 = load i32, ptr %77, align 4, !tbaa !9
  %963 = icmp ne i32 %962, 0
  br i1 %963, label %964, label %1056

964:                                              ; preds = %961
  %965 = load ptr, ptr %26, align 8, !tbaa !5
  %966 = load i32, ptr %965, align 4, !tbaa !9
  store i32 %966, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %967

967:                                              ; preds = %1034, %964
  %968 = load i32, ptr %64, align 4, !tbaa !9
  %969 = load i32, ptr %53, align 4, !tbaa !9
  %970 = icmp sle i32 %968, %969
  br i1 %970, label %971, label %1037

971:                                              ; preds = %967
  %972 = load ptr, ptr %25, align 8, !tbaa !5
  %973 = load i32, ptr %972, align 4, !tbaa !9
  store i32 %973, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %974

974:                                              ; preds = %1030, %971
  %975 = load i32, ptr %63, align 4, !tbaa !9
  %976 = load i32, ptr %54, align 4, !tbaa !9
  %977 = icmp sle i32 %975, %976
  br i1 %977, label %978, label %1033

978:                                              ; preds = %974
  %979 = load i32, ptr %63, align 4, !tbaa !9
  %980 = load i32, ptr %64, align 4, !tbaa !9
  %981 = load i32, ptr %51, align 4, !tbaa !9
  %982 = mul nsw i32 %980, %981
  %983 = add nsw i32 %979, %982
  store i32 %983, ptr %55, align 4, !tbaa !9
  %984 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %984, ptr %56, align 4, !tbaa !9
  %985 = load i32, ptr %63, align 4, !tbaa !9
  %986 = load i32, ptr %64, align 4, !tbaa !9
  %987 = load i32, ptr %51, align 4, !tbaa !9
  %988 = mul nsw i32 %986, %987
  %989 = add nsw i32 %985, %988
  store i32 %989, ptr %57, align 4, !tbaa !9
  %990 = load ptr, ptr %33, align 8, !tbaa !5
  %991 = load i32, ptr %56, align 4, !tbaa !9
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds float, ptr %990, i64 %992
  %994 = load float, ptr %993, align 4, !tbaa !12
  %995 = load ptr, ptr %37, align 8, !tbaa !5
  %996 = load i32, ptr %57, align 4, !tbaa !9
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds %struct.complex, ptr %995, i64 %997
  %999 = getelementptr inbounds %struct.complex, ptr %998, i32 0, i32 0
  %1000 = load float, ptr %999, align 4, !tbaa !17
  %1001 = fmul float %994, %1000
  %1002 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 0
  store float %1001, ptr %1002, align 4, !tbaa !17
  %1003 = load ptr, ptr %33, align 8, !tbaa !5
  %1004 = load i32, ptr %56, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds float, ptr %1003, i64 %1005
  %1007 = load float, ptr %1006, align 4, !tbaa !12
  %1008 = load ptr, ptr %37, align 8, !tbaa !5
  %1009 = load i32, ptr %57, align 4, !tbaa !9
  %1010 = sext i32 %1009 to i64
  %1011 = getelementptr inbounds %struct.complex, ptr %1008, i64 %1010
  %1012 = getelementptr inbounds %struct.complex, ptr %1011, i32 0, i32 1
  %1013 = load float, ptr %1012, align 4, !tbaa !19
  %1014 = fmul float %1007, %1013
  %1015 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 1
  store float %1014, ptr %1015, align 4, !tbaa !19
  %1016 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 0
  %1017 = load float, ptr %1016, align 4, !tbaa !17
  %1018 = load ptr, ptr %37, align 8, !tbaa !5
  %1019 = load i32, ptr %55, align 4, !tbaa !9
  %1020 = sext i32 %1019 to i64
  %1021 = getelementptr inbounds %struct.complex, ptr %1018, i64 %1020
  %1022 = getelementptr inbounds %struct.complex, ptr %1021, i32 0, i32 0
  store float %1017, ptr %1022, align 4, !tbaa !17
  %1023 = getelementptr inbounds %struct.complex, ptr %60, i32 0, i32 1
  %1024 = load float, ptr %1023, align 4, !tbaa !19
  %1025 = load ptr, ptr %37, align 8, !tbaa !5
  %1026 = load i32, ptr %55, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds %struct.complex, ptr %1025, i64 %1027
  %1029 = getelementptr inbounds %struct.complex, ptr %1028, i32 0, i32 1
  store float %1024, ptr %1029, align 4, !tbaa !19
  br label %1030

1030:                                             ; preds = %978
  %1031 = load i32, ptr %63, align 4, !tbaa !9
  %1032 = add nsw i32 %1031, 1
  store i32 %1032, ptr %63, align 4, !tbaa !9
  br label %974, !llvm.loop !27

1033:                                             ; preds = %974
  br label %1034

1034:                                             ; preds = %1033
  %1035 = load i32, ptr %64, align 4, !tbaa !9
  %1036 = add nsw i32 %1035, 1
  store i32 %1036, ptr %64, align 4, !tbaa !9
  br label %967, !llvm.loop !28

1037:                                             ; preds = %967
  %1038 = load ptr, ptr %26, align 8, !tbaa !5
  %1039 = load i32, ptr %1038, align 4, !tbaa !9
  store i32 %1039, ptr %53, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %1040

1040:                                             ; preds = %1052, %1037
  %1041 = load i32, ptr %64, align 4, !tbaa !9
  %1042 = load i32, ptr %53, align 4, !tbaa !9
  %1043 = icmp sle i32 %1041, %1042
  br i1 %1043, label %1044, label %1055

1044:                                             ; preds = %1040
  %1045 = load float, ptr %74, align 4, !tbaa !12
  %1046 = load ptr, ptr %40, align 8, !tbaa !5
  %1047 = load i32, ptr %64, align 4, !tbaa !9
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds float, ptr %1046, i64 %1048
  %1050 = load float, ptr %1049, align 4, !tbaa !12
  %1051 = fdiv float %1050, %1045
  store float %1051, ptr %1049, align 4, !tbaa !12
  br label %1052

1052:                                             ; preds = %1044
  %1053 = load i32, ptr %64, align 4, !tbaa !9
  %1054 = add nsw i32 %1053, 1
  store i32 %1054, ptr %64, align 4, !tbaa !9
  br label %1040, !llvm.loop !29

1055:                                             ; preds = %1040
  br label %1056

1056:                                             ; preds = %1055, %961
  br label %1057

1057:                                             ; preds = %1056, %960
  %1058 = load ptr, ptr %39, align 8, !tbaa !5
  %1059 = load float, ptr %1058, align 4, !tbaa !12
  %1060 = call float @slamch_(ptr noundef @.str.12)
  %1061 = fcmp olt float %1059, %1060
  br i1 %1061, label %1062, label %1067

1062:                                             ; preds = %1057
  %1063 = load ptr, ptr %25, align 8, !tbaa !5
  %1064 = load i32, ptr %1063, align 4, !tbaa !9
  %1065 = add nsw i32 %1064, 1
  %1066 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 %1065, ptr %1066, align 4, !tbaa !9
  br label %1067

1067:                                             ; preds = %1062, %1057
  %1068 = load float, ptr %78, align 4, !tbaa !12
  %1069 = load ptr, ptr %43, align 8, !tbaa !5
  %1070 = getelementptr inbounds float, ptr %1069, i64 1
  store float %1068, ptr %1070, align 4, !tbaa !12
  store i32 1, ptr %79, align 4
  br label %1071

1071:                                             ; preds = %1067, %735, %460
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  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 float @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

declare void @cgerfs_(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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"float", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = !{!18, !13, i64 0}
!18 = !{!"", !13, i64 0, !13, i64 4}
!19 = !{!18, !13, i64 4}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

; Function Attrs: nounwind uwtable
define dso_local void @cgesvx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21) local_unnamed_addr #0 {
  %23 = alloca i32, align 4
  %24 = alloca float, align 4
  %25 = alloca [1 x i8], align 1
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca i32, align 4
  %29 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #4
  %30 = getelementptr inbounds i8, ptr %10, i64 -4
  %31 = getelementptr inbounds i8, ptr %11, i64 -4
  %32 = load i32, ptr %13, align 4, !tbaa !5
  %narrow = xor i32 %32, -1
  %33 = sext i32 %narrow to i64
  %34 = getelementptr inbounds %struct.complex, ptr %12, i64 %33
  %35 = load i32, ptr %15, align 4, !tbaa !5
  %narrow435 = xor i32 %35, -1
  %36 = sext i32 %narrow435 to i64
  %37 = getelementptr inbounds %struct.complex, ptr %14, i64 %36
  %38 = getelementptr inbounds i8, ptr %17, i64 -4
  store i32 0, ptr %21, align 4, !tbaa !5
  %39 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %40 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %41 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %42 = icmp ne i32 %39, 0
  %43 = icmp ne i32 %40, 0
  %or.cond = select i1 %42, i1 true, i1 %43
  br i1 %or.cond, label %.thread, label %44

.thread:                                          ; preds = %22
  store i8 78, ptr %9, align 1, !tbaa !9
  br label %62

44:                                               ; preds = %22
  %45 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.2) #4
  %.not = icmp eq i32 %45, 0
  br i1 %.not, label %46, label %49

46:                                               ; preds = %44
  %47 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %48 = icmp ne i32 %47, 0
  br label %49

49:                                               ; preds = %46, %44
  %50 = phi i1 [ true, %44 ], [ %48, %46 ]
  %51 = zext i1 %50 to i32
  %52 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.4) #4
  %.not418 = icmp eq i32 %52, 0
  br i1 %.not418, label %53, label %56

53:                                               ; preds = %49
  %54 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %55 = icmp ne i32 %54, 0
  br label %56

56:                                               ; preds = %53, %49
  %57 = phi i1 [ true, %49 ], [ %55, %53 ]
  %58 = zext i1 %57 to i32
  %59 = tail call float @slamch_(ptr noundef nonnull @.str.5) #4
  %60 = fdiv float 1.000000e+00, %59
  %61 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %.not419 = icmp eq i32 %61, 0
  br i1 %.not419, label %.thread464.sink.split, label %62

62:                                               ; preds = %.thread, %56
  %.0395457 = phi i32 [ 0, %.thread ], [ %51, %56 ]
  %.0397455 = phi float [ undef, %.thread ], [ %59, %56 ]
  %.0398454 = phi i32 [ 0, %.thread ], [ %58, %56 ]
  %.0400452 = phi float [ undef, %.thread ], [ %60, %56 ]
  %.not420 = icmp eq i32 %41, 0
  br i1 %.not420, label %63, label %67

63:                                               ; preds = %62
  %64 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not421 = icmp eq i32 %64, 0
  br i1 %.not421, label %65, label %67

65:                                               ; preds = %63
  %66 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not422 = icmp eq i32 %66, 0
  br i1 %.not422, label %.thread464.sink.split, label %67

67:                                               ; preds = %65, %63, %62
  %68 = load i32, ptr %2, align 4, !tbaa !5
  %69 = icmp slt i32 %68, 0
  br i1 %69, label %.thread464.sink.split, label %70

70:                                               ; preds = %67
  %71 = load i32, ptr %3, align 4, !tbaa !5
  %72 = icmp slt i32 %71, 0
  br i1 %72, label %.thread464.sink.split, label %73

73:                                               ; preds = %70
  %74 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %68, i32 1)
  %75 = icmp slt i32 %74, %spec.select
  br i1 %75, label %.thread464.sink.split, label %76

76:                                               ; preds = %73
  %77 = load i32, ptr %7, align 4, !tbaa !5
  %78 = icmp slt i32 %77, %spec.select
  br i1 %78, label %.thread464.sink.split, label %79

79:                                               ; preds = %76
  %80 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %81 = icmp eq i32 %80, 0
  %82 = icmp ne i32 %.0395457, 0
  %or.cond5 = select i1 %81, i1 true, i1 %82
  %83 = icmp ne i32 %.0398454, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %83
  br i1 %or.cond7, label %86, label %84

84:                                               ; preds = %79
  %85 = tail call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str) #4
  %.not423 = icmp eq i32 %85, 0
  br i1 %.not423, label %.thread464.sink.split, label %..thread459_crit_edge

..thread459_crit_edge:                            ; preds = %84
  %.pr.pre = load i32, ptr %21, align 4, !tbaa !5
  br label %.thread459

86:                                               ; preds = %79
  br i1 %82, label %87, label %119

87:                                               ; preds = %86
  %88 = load i32, ptr %2, align 4, !tbaa !5
  %.not424473 = icmp slt i32 %88, 1
  br i1 %.not424473, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %87
  %89 = zext nneg i32 %88 to i64
  %xtraiter = and i64 %89, 1
  %90 = icmp eq i32 %88, 1
  br i1 %90, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0401476 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %102, %.lr.ph ]
  %.0403475 = phi float [ %.0400452, %.lr.ph.preheader.new ], [ %100, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %91 = getelementptr inbounds float, ptr %30, i64 %indvars.iv
  %92 = load float, ptr %91, align 4, !tbaa !10
  %93 = fcmp ole float %.0403475, %92
  %94 = select i1 %93, float %.0403475, float %92
  %95 = fcmp oge float %.0401476, %92
  %96 = select i1 %95, float %.0401476, float %92
  %97 = getelementptr float, ptr %10, i64 %indvars.iv
  %98 = load float, ptr %97, align 4, !tbaa !10
  %99 = fcmp ole float %94, %98
  %100 = select i1 %99, float %94, float %98
  %101 = fcmp oge float %96, %98
  %102 = select i1 %101, float %96, float %98
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa741.ph = phi float [ poison, %.lr.ph.preheader ], [ %100, %.lr.ph ]
  %.lcssa740.ph = phi float [ poison, %.lr.ph.preheader ], [ %102, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0401476.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %102, %.lr.ph ]
  %.0403475.unr = phi float [ %.0400452, %.lr.ph.preheader ], [ %100, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %103 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.unr
  %104 = load float, ptr %103, align 4, !tbaa !10
  %105 = fcmp ole float %.0403475.unr, %104
  %106 = select i1 %105, float %.0403475.unr, float %104
  %107 = fcmp oge float %.0401476.unr, %104
  %108 = select i1 %107, float %.0401476.unr, float %104
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %87
  %.0403.lcssa = phi float [ %.0400452, %87 ], [ %.lcssa741.ph, %._crit_edge.loopexit.unr-lcssa ], [ %106, %.lr.ph.epil ]
  %.0401.lcssa = phi float [ 0.000000e+00, %87 ], [ %.lcssa740.ph, %._crit_edge.loopexit.unr-lcssa ], [ %108, %.lr.ph.epil ]
  %109 = fcmp ugt float %.0403.lcssa, 0.000000e+00
  br i1 %109, label %110, label %.thread464.sink.split

110:                                              ; preds = %._crit_edge
  %111 = icmp sgt i32 %88, 0
  br i1 %111, label %112, label %118

112:                                              ; preds = %110
  %113 = fcmp oge float %.0403.lcssa, %.0397455
  %114 = select i1 %113, float %.0403.lcssa, float %.0397455
  %115 = fcmp ole float %.0401.lcssa, %.0400452
  %116 = select i1 %115, float %.0401.lcssa, float %.0400452
  %117 = fdiv float %114, %116
  store float %117, ptr %29, align 4, !tbaa !10
  br label %119

118:                                              ; preds = %110
  store float 1.000000e+00, ptr %29, align 4, !tbaa !10
  br label %119

119:                                              ; preds = %118, %112, %86
  %.pr.pre598.pr = load i32, ptr %21, align 4, !tbaa !5
  br i1 %83, label %120, label %.thread459

120:                                              ; preds = %119
  %121 = icmp eq i32 %.pr.pre598.pr, 0
  br i1 %121, label %122, label %.thread464

122:                                              ; preds = %120
  %123 = load i32, ptr %2, align 4, !tbaa !5
  %.not425478 = icmp slt i32 %123, 1
  br i1 %.not425478, label %._crit_edge484, label %.lr.ph483.preheader

.lr.ph483.preheader:                              ; preds = %122
  %124 = zext nneg i32 %123 to i64
  %xtraiter744 = and i64 %124, 1
  %125 = icmp eq i32 %123, 1
  br i1 %125, label %._crit_edge484.loopexit.unr-lcssa, label %.lr.ph483.preheader.new

.lr.ph483.preheader.new:                          ; preds = %.lr.ph483.preheader
  %unroll_iter748 = and i64 %124, 2147483646
  br label %.lr.ph483

.lr.ph483:                                        ; preds = %.lr.ph483, %.lr.ph483.preheader.new
  %indvars.iv543 = phi i64 [ 1, %.lr.ph483.preheader.new ], [ %indvars.iv.next544.1, %.lr.ph483 ]
  %.1402481 = phi float [ 0.000000e+00, %.lr.ph483.preheader.new ], [ %137, %.lr.ph483 ]
  %.1404480 = phi float [ %.0400452, %.lr.ph483.preheader.new ], [ %135, %.lr.ph483 ]
  %niter749 = phi i64 [ 0, %.lr.ph483.preheader.new ], [ %niter749.next.1, %.lr.ph483 ]
  %126 = getelementptr inbounds float, ptr %31, i64 %indvars.iv543
  %127 = load float, ptr %126, align 4, !tbaa !10
  %128 = fcmp ole float %.1404480, %127
  %129 = select i1 %128, float %.1404480, float %127
  %130 = fcmp oge float %.1402481, %127
  %131 = select i1 %130, float %.1402481, float %127
  %132 = getelementptr float, ptr %11, i64 %indvars.iv543
  %133 = load float, ptr %132, align 4, !tbaa !10
  %134 = fcmp ole float %129, %133
  %135 = select i1 %134, float %129, float %133
  %136 = fcmp oge float %131, %133
  %137 = select i1 %136, float %131, float %133
  %indvars.iv.next544.1 = add nuw nsw i64 %indvars.iv543, 2
  %niter749.next.1 = add i64 %niter749, 2
  %niter749.ncmp.1 = icmp eq i64 %niter749.next.1, %unroll_iter748
  br i1 %niter749.ncmp.1, label %._crit_edge484.loopexit.unr-lcssa, label %.lr.ph483, !llvm.loop !14

._crit_edge484.loopexit.unr-lcssa:                ; preds = %.lr.ph483, %.lr.ph483.preheader
  %.lcssa739.ph = phi float [ poison, %.lr.ph483.preheader ], [ %135, %.lr.ph483 ]
  %.lcssa.ph = phi float [ poison, %.lr.ph483.preheader ], [ %137, %.lr.ph483 ]
  %indvars.iv543.unr = phi i64 [ 1, %.lr.ph483.preheader ], [ %indvars.iv.next544.1, %.lr.ph483 ]
  %.1402481.unr = phi float [ 0.000000e+00, %.lr.ph483.preheader ], [ %137, %.lr.ph483 ]
  %.1404480.unr = phi float [ %.0400452, %.lr.ph483.preheader ], [ %135, %.lr.ph483 ]
  %lcmp.mod745.not = icmp eq i64 %xtraiter744, 0
  br i1 %lcmp.mod745.not, label %._crit_edge484, label %.lr.ph483.epil

.lr.ph483.epil:                                   ; preds = %._crit_edge484.loopexit.unr-lcssa
  %138 = getelementptr inbounds float, ptr %31, i64 %indvars.iv543.unr
  %139 = load float, ptr %138, align 4, !tbaa !10
  %140 = fcmp ole float %.1404480.unr, %139
  %141 = select i1 %140, float %.1404480.unr, float %139
  %142 = fcmp oge float %.1402481.unr, %139
  %143 = select i1 %142, float %.1402481.unr, float %139
  br label %._crit_edge484

._crit_edge484:                                   ; preds = %.lr.ph483.epil, %._crit_edge484.loopexit.unr-lcssa, %122
  %.1404.lcssa = phi float [ %.0400452, %122 ], [ %.lcssa739.ph, %._crit_edge484.loopexit.unr-lcssa ], [ %141, %.lr.ph483.epil ]
  %.1402.lcssa = phi float [ 0.000000e+00, %122 ], [ %.lcssa.ph, %._crit_edge484.loopexit.unr-lcssa ], [ %143, %.lr.ph483.epil ]
  %144 = fcmp ugt float %.1404.lcssa, 0.000000e+00
  br i1 %144, label %145, label %.thread464.sink.split

145:                                              ; preds = %._crit_edge484
  %146 = icmp sgt i32 %123, 0
  br i1 %146, label %147, label %153

147:                                              ; preds = %145
  %148 = fcmp oge float %.1404.lcssa, %.0397455
  %149 = select i1 %148, float %.1404.lcssa, float %.0397455
  %150 = fcmp ole float %.1402.lcssa, %.0400452
  %151 = select i1 %150, float %.1402.lcssa, float %.0400452
  %152 = fdiv float %149, %151
  store float %152, ptr %27, align 4, !tbaa !10
  br label %.thread459.thread

153:                                              ; preds = %145
  store float 1.000000e+00, ptr %27, align 4, !tbaa !10
  br label %.thread459.thread

.thread459:                                       ; preds = %..thread459_crit_edge, %119
  %.pr462.pr = phi i32 [ %.pr.pre, %..thread459_crit_edge ], [ %.pr.pre598.pr, %119 ]
  %154 = icmp eq i32 %.pr462.pr, 0
  br i1 %154, label %.thread459.thread, label %.thread464

.thread459.thread:                                ; preds = %147, %153, %.thread459
  %155 = load i32, ptr %13, align 4, !tbaa !5
  %156 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select446 = tail call i32 @llvm.smax.i32(i32 %156, i32 1)
  %157 = icmp slt i32 %155, %spec.select446
  br i1 %157, label %.thread464.sink.split, label %158

158:                                              ; preds = %.thread459.thread
  %159 = load i32, ptr %15, align 4, !tbaa !5
  %160 = icmp slt i32 %159, %spec.select446
  br i1 %160, label %.thread464.sink.split, label %.thread460

.thread464.sink.split:                            ; preds = %158, %.thread459.thread, %._crit_edge484, %._crit_edge, %84, %76, %73, %70, %67, %65, %56
  %.sink = phi i32 [ -1, %56 ], [ -2, %65 ], [ -3, %67 ], [ -4, %70 ], [ -6, %73 ], [ -8, %76 ], [ -10, %84 ], [ -11, %._crit_edge ], [ -12, %._crit_edge484 ], [ -14, %.thread459.thread ], [ -16, %158 ]
  store i32 %.sink, ptr %21, align 4, !tbaa !5
  br label %.thread464

.thread464:                                       ; preds = %.thread464.sink.split, %120, %.thread459
  %161 = phi i32 [ %.pr462.pr, %.thread459 ], [ %.pr.pre598.pr, %120 ], [ %.sink, %.thread464.sink.split ]
  %162 = sub nsw i32 0, %161
  store i32 %162, ptr %23, align 4, !tbaa !5
  %163 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %23, i32 noundef 6) #4
  br label %420

.thread460:                                       ; preds = %158
  br i1 %43, label %164, label %182

164:                                              ; preds = %.thread460
  call void @cgeequ_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %29, ptr noundef nonnull %27, ptr noundef nonnull %24, ptr noundef nonnull %28) #4
  %165 = load i32, ptr %28, align 4, !tbaa !5
  %166 = icmp eq i32 %165, 0
  br i1 %166, label %167, label %182

167:                                              ; preds = %164
  call void @claqge_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %29, ptr noundef nonnull %27, ptr noundef nonnull %24, ptr noundef %9) #4
  %168 = call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.2) #4
  %.not427 = icmp eq i32 %168, 0
  br i1 %.not427, label %169, label %172

169:                                              ; preds = %167
  %170 = call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %171 = icmp ne i32 %170, 0
  br label %172

172:                                              ; preds = %169, %167
  %173 = phi i1 [ true, %167 ], [ %171, %169 ]
  %174 = zext i1 %173 to i32
  %175 = call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.4) #4
  %.not428 = icmp eq i32 %175, 0
  br i1 %.not428, label %176, label %179

176:                                              ; preds = %172
  %177 = call i32 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %178 = icmp ne i32 %177, 0
  br label %179

179:                                              ; preds = %176, %172
  %180 = phi i1 [ true, %172 ], [ %178, %176 ]
  %181 = zext i1 %180 to i32
  br label %182

182:                                              ; preds = %164, %179, %.thread460
  %.1399 = phi i32 [ %181, %179 ], [ %.0398454, %164 ], [ %.0398454, %.thread460 ]
  %.1396 = phi i32 [ %174, %179 ], [ %.0395457, %164 ], [ %.0395457, %.thread460 ]
  br i1 %.not420, label %231, label %183

183:                                              ; preds = %182
  %.not433 = icmp eq i32 %.1396, 0
  br i1 %.not433, label %.loopexit471, label %184

184:                                              ; preds = %183
  %185 = load i32, ptr %3, align 4, !tbaa !5
  %.not434492 = icmp slt i32 %185, 1
  br i1 %.not434492, label %.loopexit471, label %.lr.ph495

.lr.ph495:                                        ; preds = %184
  %186 = load i32, ptr %2, align 4, !tbaa !5
  %.not444487 = icmp slt i32 %186, 1
  br i1 %.not444487, label %.loopexit471, label %.lr.ph490.preheader

.lr.ph490.preheader:                              ; preds = %.lr.ph495
  %187 = add nuw i32 %186, 1
  %188 = sext i32 %32 to i64
  %189 = add nuw i32 %185, 1
  %wide.trip.count556 = zext i32 %189 to i64
  %wide.trip.count551 = zext i32 %187 to i64
  %190 = shl nsw i64 %188, 3
  %191 = shl nsw i64 %33, 3
  %192 = getelementptr i8, ptr %12, i64 %190
  %193 = getelementptr i8, ptr %192, i64 %191
  %scevgep = getelementptr i8, ptr %193, i64 8
  %194 = shl nuw nsw i64 %wide.trip.count556, 3
  %195 = add nsw i64 %194, -8
  %196 = mul i64 %195, %188
  %197 = shl nuw nsw i64 %wide.trip.count551, 3
  %198 = getelementptr i8, ptr %12, i64 %196
  %199 = getelementptr i8, ptr %198, i64 %191
  %scevgep626 = getelementptr i8, ptr %199, i64 %197
  %200 = shl nuw nsw i64 %wide.trip.count551, 2
  %201 = getelementptr i8, ptr %10, i64 %200
  %scevgep627 = getelementptr i8, ptr %201, i64 -4
  %202 = zext nneg i32 %186 to i64
  %203 = zext nneg i32 %186 to i64
  %min.iters.check = icmp eq i32 %186, 1
  %bound0 = icmp ult ptr %scevgep, %scevgep627
  %bound1 = icmp ugt ptr %scevgep626, %10
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %32, 0
  %204 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %202, 2147483646
  %ind.end = or i64 %202, 1
  %cmp.n = icmp eq i64 %n.vec, %202
  %205 = and i32 %186, 1
  %lcmp.mod751.not = icmp eq i32 %205, 0
  br label %.lr.ph490

.lr.ph490:                                        ; preds = %.lr.ph490.preheader, %._crit_edge491
  %indvars.iv553 = phi i64 [ 1, %.lr.ph490.preheader ], [ %indvars.iv.next554, %._crit_edge491 ]
  %206 = mul nsw i64 %indvars.iv553, %188
  %invariant.gep = getelementptr %struct.complex, ptr %34, i64 %206
  %brmerge = select i1 %min.iters.check, i1 true, i1 %204
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph490, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph490 ]
  %offset.idx = or disjoint i64 %index, 1
  %207 = getelementptr float, ptr %10, i64 %index
  %wide.load = load <2 x float>, ptr %207, align 4, !tbaa !10, !alias.scope !15
  %208 = getelementptr %struct.complex, ptr %invariant.gep, i64 %offset.idx
  %209 = load <4 x float>, ptr %208, align 4, !tbaa !10
  %210 = shufflevector <2 x float> %wide.load, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec = fmul <4 x float> %210, %209
  store <4 x float> %interleaved.vec, ptr %208, align 4, !tbaa !10
  %index.next = add nuw i64 %index, 2
  %211 = icmp eq i64 %index.next, %n.vec
  br i1 %211, label %middle.block, label %vector.body, !llvm.loop !18

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

scalar.ph.preheader:                              ; preds = %.lr.ph490, %middle.block
  %indvars.iv548.ph = phi i64 [ 1, %.lr.ph490 ], [ %ind.end, %middle.block ]
  br i1 %lcmp.mod751.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %212 = getelementptr inbounds float, ptr %30, i64 %indvars.iv548.ph
  %213 = load float, ptr %212, align 4, !tbaa !10
  %gep.prol = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv548.ph
  %214 = load <2 x float>, ptr %gep.prol, align 4, !tbaa !10
  %215 = insertelement <2 x float> poison, float %213, i64 0
  %216 = shufflevector <2 x float> %215, <2 x float> poison, <2 x i32> zeroinitializer
  %217 = fmul <2 x float> %216, %214
  store <2 x float> %217, ptr %gep.prol, align 4, !tbaa !10
  %indvars.iv.next549.prol = add nuw nsw i64 %indvars.iv548.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv548.unr = phi i64 [ %indvars.iv548.ph, %scalar.ph.preheader ], [ %indvars.iv.next549.prol, %scalar.ph.prol ]
  %218 = icmp eq i64 %indvars.iv548.ph, %203
  br i1 %218, label %._crit_edge491, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep762 = getelementptr i8, ptr %invariant.gep, i64 8
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv548 = phi i64 [ %indvars.iv548.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next549.1, %scalar.ph ]
  %219 = getelementptr inbounds float, ptr %30, i64 %indvars.iv548
  %220 = load float, ptr %219, align 4, !tbaa !10
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %indvars.iv548
  %221 = load <2 x float>, ptr %gep, align 4, !tbaa !10
  %222 = insertelement <2 x float> poison, float %220, i64 0
  %223 = shufflevector <2 x float> %222, <2 x float> poison, <2 x i32> zeroinitializer
  %224 = fmul <2 x float> %223, %221
  store <2 x float> %224, ptr %gep, align 4, !tbaa !10
  %225 = getelementptr float, ptr %10, i64 %indvars.iv548
  %226 = load float, ptr %225, align 4, !tbaa !10
  %gep763 = getelementptr %struct.complex, ptr %invariant.gep762, i64 %indvars.iv548
  %227 = load <2 x float>, ptr %gep763, align 4, !tbaa !10
  %228 = insertelement <2 x float> poison, float %226, i64 0
  %229 = shufflevector <2 x float> %228, <2 x float> poison, <2 x i32> zeroinitializer
  %230 = fmul <2 x float> %229, %227
  store <2 x float> %230, ptr %gep763, align 4, !tbaa !10
  %indvars.iv.next549.1 = add nuw nsw i64 %indvars.iv548, 2
  %exitcond552.not.1 = icmp eq i64 %indvars.iv.next549.1, %wide.trip.count551
  br i1 %exitcond552.not.1, label %._crit_edge491, label %scalar.ph, !llvm.loop !21

._crit_edge491:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next554 = add nuw nsw i64 %indvars.iv553, 1
  %exitcond557.not = icmp eq i64 %indvars.iv.next554, %wide.trip.count556
  br i1 %exitcond557.not, label %.loopexit471, label %.lr.ph490, !llvm.loop !22

231:                                              ; preds = %182
  %.not430 = icmp eq i32 %.1399, 0
  br i1 %.not430, label %.loopexit471, label %232

232:                                              ; preds = %231
  %233 = load i32, ptr %3, align 4, !tbaa !5
  %.not431501 = icmp slt i32 %233, 1
  br i1 %.not431501, label %.loopexit471, label %.lr.ph504

.lr.ph504:                                        ; preds = %232
  %234 = load i32, ptr %2, align 4, !tbaa !5
  %.not432496 = icmp slt i32 %234, 1
  br i1 %.not432496, label %.loopexit471, label %.lr.ph499.preheader

.lr.ph499.preheader:                              ; preds = %.lr.ph504
  %235 = add nuw i32 %234, 1
  %236 = sext i32 %32 to i64
  %237 = add nuw i32 %233, 1
  %wide.trip.count566 = zext i32 %237 to i64
  %wide.trip.count561 = zext i32 %235 to i64
  %238 = shl nsw i64 %236, 3
  %239 = shl nsw i64 %33, 3
  %240 = getelementptr i8, ptr %12, i64 %238
  %241 = getelementptr i8, ptr %240, i64 %239
  %scevgep630 = getelementptr i8, ptr %241, i64 8
  %242 = shl nuw nsw i64 %wide.trip.count566, 3
  %243 = add nsw i64 %242, -8
  %244 = mul i64 %243, %236
  %245 = shl nuw nsw i64 %wide.trip.count561, 3
  %246 = getelementptr i8, ptr %12, i64 %244
  %247 = getelementptr i8, ptr %246, i64 %239
  %scevgep631 = getelementptr i8, ptr %247, i64 %245
  %248 = shl nuw nsw i64 %wide.trip.count561, 2
  %249 = getelementptr i8, ptr %11, i64 %248
  %scevgep632 = getelementptr i8, ptr %249, i64 -4
  %250 = zext nneg i32 %234 to i64
  %251 = zext nneg i32 %234 to i64
  %min.iters.check639 = icmp eq i32 %234, 1
  %bound0633 = icmp ult ptr %scevgep630, %scevgep632
  %bound1634 = icmp ugt ptr %scevgep631, %11
  %found.conflict635 = and i1 %bound0633, %bound1634
  %stride.check636 = icmp slt i32 %32, 0
  %252 = or i1 %found.conflict635, %stride.check636
  %n.vec642 = and i64 %250, 2147483646
  %ind.end643 = or i64 %250, 1
  %cmp.n654 = icmp eq i64 %n.vec642, %250
  %253 = and i32 %234, 1
  %lcmp.mod753.not = icmp eq i32 %253, 0
  br label %.lr.ph499

.lr.ph499:                                        ; preds = %.lr.ph499.preheader, %._crit_edge500
  %indvars.iv563 = phi i64 [ 1, %.lr.ph499.preheader ], [ %indvars.iv.next564, %._crit_edge500 ]
  %254 = mul nsw i64 %indvars.iv563, %236
  %invariant.gep615 = getelementptr %struct.complex, ptr %34, i64 %254
  %brmerge770 = select i1 %min.iters.check639, i1 true, i1 %252
  br i1 %brmerge770, label %scalar.ph638.preheader, label %vector.body645

vector.body645:                                   ; preds = %.lr.ph499, %vector.body645
  %index646 = phi i64 [ %index.next653, %vector.body645 ], [ 0, %.lr.ph499 ]
  %offset.idx647 = or disjoint i64 %index646, 1
  %255 = getelementptr float, ptr %11, i64 %index646
  %wide.load648 = load <2 x float>, ptr %255, align 4, !tbaa !10, !alias.scope !23
  %256 = getelementptr %struct.complex, ptr %invariant.gep615, i64 %offset.idx647
  %257 = load <4 x float>, ptr %256, align 4, !tbaa !10
  %258 = shufflevector <2 x float> %wide.load648, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec652 = fmul <4 x float> %258, %257
  store <4 x float> %interleaved.vec652, ptr %256, align 4, !tbaa !10
  %index.next653 = add nuw i64 %index646, 2
  %259 = icmp eq i64 %index.next653, %n.vec642
  br i1 %259, label %middle.block637, label %vector.body645, !llvm.loop !26

middle.block637:                                  ; preds = %vector.body645
  br i1 %cmp.n654, label %._crit_edge500, label %scalar.ph638.preheader

scalar.ph638.preheader:                           ; preds = %.lr.ph499, %middle.block637
  %indvars.iv558.ph = phi i64 [ 1, %.lr.ph499 ], [ %ind.end643, %middle.block637 ]
  br i1 %lcmp.mod753.not, label %scalar.ph638.prol.loopexit, label %scalar.ph638.prol

scalar.ph638.prol:                                ; preds = %scalar.ph638.preheader
  %260 = getelementptr inbounds float, ptr %31, i64 %indvars.iv558.ph
  %261 = load float, ptr %260, align 4, !tbaa !10
  %gep616.prol = getelementptr %struct.complex, ptr %invariant.gep615, i64 %indvars.iv558.ph
  %262 = load <2 x float>, ptr %gep616.prol, align 4, !tbaa !10
  %263 = insertelement <2 x float> poison, float %261, i64 0
  %264 = shufflevector <2 x float> %263, <2 x float> poison, <2 x i32> zeroinitializer
  %265 = fmul <2 x float> %264, %262
  store <2 x float> %265, ptr %gep616.prol, align 4, !tbaa !10
  %indvars.iv.next559.prol = add nuw nsw i64 %indvars.iv558.ph, 1
  br label %scalar.ph638.prol.loopexit

scalar.ph638.prol.loopexit:                       ; preds = %scalar.ph638.prol, %scalar.ph638.preheader
  %indvars.iv558.unr = phi i64 [ %indvars.iv558.ph, %scalar.ph638.preheader ], [ %indvars.iv.next559.prol, %scalar.ph638.prol ]
  %266 = icmp eq i64 %indvars.iv558.ph, %251
  br i1 %266, label %._crit_edge500, label %scalar.ph638.preheader.new

scalar.ph638.preheader.new:                       ; preds = %scalar.ph638.prol.loopexit
  %invariant.gep764 = getelementptr i8, ptr %invariant.gep615, i64 8
  br label %scalar.ph638

scalar.ph638:                                     ; preds = %scalar.ph638, %scalar.ph638.preheader.new
  %indvars.iv558 = phi i64 [ %indvars.iv558.unr, %scalar.ph638.preheader.new ], [ %indvars.iv.next559.1, %scalar.ph638 ]
  %267 = getelementptr inbounds float, ptr %31, i64 %indvars.iv558
  %268 = load float, ptr %267, align 4, !tbaa !10
  %gep616 = getelementptr %struct.complex, ptr %invariant.gep615, i64 %indvars.iv558
  %269 = load <2 x float>, ptr %gep616, align 4, !tbaa !10
  %270 = insertelement <2 x float> poison, float %268, i64 0
  %271 = shufflevector <2 x float> %270, <2 x float> poison, <2 x i32> zeroinitializer
  %272 = fmul <2 x float> %271, %269
  store <2 x float> %272, ptr %gep616, align 4, !tbaa !10
  %273 = getelementptr float, ptr %11, i64 %indvars.iv558
  %274 = load float, ptr %273, align 4, !tbaa !10
  %gep765 = getelementptr %struct.complex, ptr %invariant.gep764, i64 %indvars.iv558
  %275 = load <2 x float>, ptr %gep765, align 4, !tbaa !10
  %276 = insertelement <2 x float> poison, float %274, i64 0
  %277 = shufflevector <2 x float> %276, <2 x float> poison, <2 x i32> zeroinitializer
  %278 = fmul <2 x float> %277, %275
  store <2 x float> %278, ptr %gep765, align 4, !tbaa !10
  %indvars.iv.next559.1 = add nuw nsw i64 %indvars.iv558, 2
  %exitcond562.not.1 = icmp eq i64 %indvars.iv.next559.1, %wide.trip.count561
  br i1 %exitcond562.not.1, label %._crit_edge500, label %scalar.ph638, !llvm.loop !27

._crit_edge500:                                   ; preds = %scalar.ph638.prol.loopexit, %scalar.ph638, %middle.block637
  %indvars.iv.next564 = add nuw nsw i64 %indvars.iv563, 1
  %exitcond567.not = icmp eq i64 %indvars.iv.next564, %wide.trip.count566
  br i1 %exitcond567.not, label %.loopexit471, label %.lr.ph499, !llvm.loop !28

.loopexit471:                                     ; preds = %._crit_edge491, %._crit_edge500, %.lr.ph504, %.lr.ph495, %184, %232, %231, %183
  br i1 %or.cond, label %279, label %290

279:                                              ; preds = %.loopexit471
  call void @clacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7) #4
  %280 = call i32 @cgetrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %21) #4
  %281 = load i32, ptr %21, align 4, !tbaa !5
  %282 = icmp sgt i32 %281, 0
  br i1 %282, label %283, label %290

283:                                              ; preds = %279
  %284 = call float @clantr_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str, ptr noundef nonnull %21, ptr noundef nonnull %21, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %20) #4
  %285 = fcmp oeq float %284, 0.000000e+00
  br i1 %285, label %289, label %286

286:                                              ; preds = %283
  %287 = call float @clange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %21, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %20) #4
  %288 = fdiv float %287, %284
  br label %289

289:                                              ; preds = %283, %286
  %.0 = phi float [ %288, %286 ], [ 1.000000e+00, %283 ]
  store float %.0, ptr %20, align 4, !tbaa !10
  store float 0.000000e+00, ptr %16, align 4, !tbaa !10
  br label %420

290:                                              ; preds = %279, %.loopexit471
  %. = select i1 %.not420, i8 73, i8 49
  store i8 %., ptr %25, align 1, !tbaa !9
  %291 = call float @clange_(ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %20) #4
  store float %291, ptr %26, align 4, !tbaa !10
  %292 = call float @clantr_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %20) #4
  %293 = fcmp oeq float %292, 0.000000e+00
  br i1 %293, label %297, label %294

294:                                              ; preds = %290
  %295 = call float @clange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %20) #4
  %296 = fdiv float %295, %292
  br label %297

297:                                              ; preds = %290, %294
  %.1 = phi float [ %296, %294 ], [ 1.000000e+00, %290 ]
  call void @cgecon_(ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %26, ptr noundef %16, ptr noundef %19, ptr noundef %20, ptr noundef nonnull %21) #4
  call void @clacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15) #4
  %298 = call i32 @cgetrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %21) #4
  call void @cgerfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef nonnull %21) #4
  br i1 %.not420, label %356, label %299

299:                                              ; preds = %297
  %.not440 = icmp eq i32 %.1399, 0
  br i1 %.not440, label %.loopexit, label %300

300:                                              ; preds = %299
  %301 = load i32, ptr %3, align 4, !tbaa !5
  %.not441510 = icmp slt i32 %301, 1
  br i1 %.not441510, label %.loopexit, label %.lr.ph513

.lr.ph513:                                        ; preds = %300
  %302 = load i32, ptr %2, align 4, !tbaa !5
  %.not443505 = icmp slt i32 %302, 1
  br i1 %.not443505, label %.lr.ph518, label %.lr.ph508.preheader

.lr.ph508.preheader:                              ; preds = %.lr.ph513
  %303 = add nuw i32 %302, 1
  %304 = sext i32 %35 to i64
  %305 = add nuw i32 %301, 1
  %wide.trip.count576 = zext i32 %305 to i64
  %wide.trip.count571 = zext i32 %303 to i64
  %306 = shl nsw i64 %304, 3
  %307 = shl nsw i64 %36, 3
  %308 = getelementptr i8, ptr %14, i64 %306
  %309 = getelementptr i8, ptr %308, i64 %307
  %scevgep656 = getelementptr i8, ptr %309, i64 8
  %310 = shl nuw nsw i64 %wide.trip.count576, 3
  %311 = add nsw i64 %310, -8
  %312 = mul i64 %311, %304
  %313 = shl nuw nsw i64 %wide.trip.count571, 3
  %314 = getelementptr i8, ptr %14, i64 %312
  %315 = getelementptr i8, ptr %314, i64 %307
  %scevgep657 = getelementptr i8, ptr %315, i64 %313
  %316 = shl nuw nsw i64 %wide.trip.count571, 2
  %317 = getelementptr i8, ptr %11, i64 %316
  %scevgep658 = getelementptr i8, ptr %317, i64 -4
  %318 = zext nneg i32 %302 to i64
  %319 = zext nneg i32 %302 to i64
  %min.iters.check665 = icmp eq i32 %302, 1
  %bound0659 = icmp ult ptr %scevgep656, %scevgep658
  %bound1660 = icmp ugt ptr %scevgep657, %11
  %found.conflict661 = and i1 %bound0659, %bound1660
  %stride.check662 = icmp slt i32 %35, 0
  %320 = or i1 %found.conflict661, %stride.check662
  %n.vec668 = and i64 %318, 2147483646
  %ind.end669 = or i64 %318, 1
  %cmp.n680 = icmp eq i64 %n.vec668, %318
  %321 = and i32 %302, 1
  %lcmp.mod755.not = icmp eq i32 %321, 0
  br label %.lr.ph508

.lr.ph508:                                        ; preds = %.lr.ph508.preheader, %._crit_edge509
  %indvars.iv573 = phi i64 [ 1, %.lr.ph508.preheader ], [ %indvars.iv.next574, %._crit_edge509 ]
  %322 = mul nsw i64 %indvars.iv573, %304
  %invariant.gep617 = getelementptr %struct.complex, ptr %37, i64 %322
  %brmerge771 = select i1 %min.iters.check665, i1 true, i1 %320
  br i1 %brmerge771, label %scalar.ph664.preheader, label %vector.body671

vector.body671:                                   ; preds = %.lr.ph508, %vector.body671
  %index672 = phi i64 [ %index.next679, %vector.body671 ], [ 0, %.lr.ph508 ]
  %offset.idx673 = or disjoint i64 %index672, 1
  %323 = getelementptr float, ptr %11, i64 %index672
  %wide.load674 = load <2 x float>, ptr %323, align 4, !tbaa !10, !alias.scope !29
  %324 = getelementptr %struct.complex, ptr %invariant.gep617, i64 %offset.idx673
  %325 = load <4 x float>, ptr %324, align 4, !tbaa !10
  %326 = shufflevector <2 x float> %wide.load674, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec678 = fmul <4 x float> %326, %325
  store <4 x float> %interleaved.vec678, ptr %324, align 4, !tbaa !10
  %index.next679 = add nuw i64 %index672, 2
  %327 = icmp eq i64 %index.next679, %n.vec668
  br i1 %327, label %middle.block663, label %vector.body671, !llvm.loop !32

middle.block663:                                  ; preds = %vector.body671
  br i1 %cmp.n680, label %._crit_edge509, label %scalar.ph664.preheader

scalar.ph664.preheader:                           ; preds = %.lr.ph508, %middle.block663
  %indvars.iv568.ph = phi i64 [ 1, %.lr.ph508 ], [ %ind.end669, %middle.block663 ]
  br i1 %lcmp.mod755.not, label %scalar.ph664.prol.loopexit, label %scalar.ph664.prol

scalar.ph664.prol:                                ; preds = %scalar.ph664.preheader
  %328 = getelementptr inbounds float, ptr %31, i64 %indvars.iv568.ph
  %329 = load float, ptr %328, align 4, !tbaa !10
  %gep618.prol = getelementptr %struct.complex, ptr %invariant.gep617, i64 %indvars.iv568.ph
  %330 = load <2 x float>, ptr %gep618.prol, align 4, !tbaa !10
  %331 = insertelement <2 x float> poison, float %329, i64 0
  %332 = shufflevector <2 x float> %331, <2 x float> poison, <2 x i32> zeroinitializer
  %333 = fmul <2 x float> %332, %330
  store <2 x float> %333, ptr %gep618.prol, align 4, !tbaa !10
  %indvars.iv.next569.prol = add nuw nsw i64 %indvars.iv568.ph, 1
  br label %scalar.ph664.prol.loopexit

scalar.ph664.prol.loopexit:                       ; preds = %scalar.ph664.prol, %scalar.ph664.preheader
  %indvars.iv568.unr = phi i64 [ %indvars.iv568.ph, %scalar.ph664.preheader ], [ %indvars.iv.next569.prol, %scalar.ph664.prol ]
  %334 = icmp eq i64 %indvars.iv568.ph, %319
  br i1 %334, label %._crit_edge509, label %scalar.ph664.preheader.new

scalar.ph664.preheader.new:                       ; preds = %scalar.ph664.prol.loopexit
  %invariant.gep766 = getelementptr i8, ptr %invariant.gep617, i64 8
  br label %scalar.ph664

scalar.ph664:                                     ; preds = %scalar.ph664, %scalar.ph664.preheader.new
  %indvars.iv568 = phi i64 [ %indvars.iv568.unr, %scalar.ph664.preheader.new ], [ %indvars.iv.next569.1, %scalar.ph664 ]
  %335 = getelementptr inbounds float, ptr %31, i64 %indvars.iv568
  %336 = load float, ptr %335, align 4, !tbaa !10
  %gep618 = getelementptr %struct.complex, ptr %invariant.gep617, i64 %indvars.iv568
  %337 = load <2 x float>, ptr %gep618, align 4, !tbaa !10
  %338 = insertelement <2 x float> poison, float %336, i64 0
  %339 = shufflevector <2 x float> %338, <2 x float> poison, <2 x i32> zeroinitializer
  %340 = fmul <2 x float> %339, %337
  store <2 x float> %340, ptr %gep618, align 4, !tbaa !10
  %341 = getelementptr float, ptr %11, i64 %indvars.iv568
  %342 = load float, ptr %341, align 4, !tbaa !10
  %gep767 = getelementptr %struct.complex, ptr %invariant.gep766, i64 %indvars.iv568
  %343 = load <2 x float>, ptr %gep767, align 4, !tbaa !10
  %344 = insertelement <2 x float> poison, float %342, i64 0
  %345 = shufflevector <2 x float> %344, <2 x float> poison, <2 x i32> zeroinitializer
  %346 = fmul <2 x float> %345, %343
  store <2 x float> %346, ptr %gep767, align 4, !tbaa !10
  %indvars.iv.next569.1 = add nuw nsw i64 %indvars.iv568, 2
  %exitcond572.not.1 = icmp eq i64 %indvars.iv.next569.1, %wide.trip.count571
  br i1 %exitcond572.not.1, label %._crit_edge509, label %scalar.ph664, !llvm.loop !33

._crit_edge509:                                   ; preds = %scalar.ph664.prol.loopexit, %scalar.ph664, %middle.block663
  %indvars.iv.next574 = add nuw nsw i64 %indvars.iv573, 1
  %exitcond577.not = icmp eq i64 %indvars.iv.next574, %wide.trip.count576
  br i1 %exitcond577.not, label %._crit_edge514, label %.lr.ph508, !llvm.loop !34

._crit_edge514:                                   ; preds = %._crit_edge509
  br i1 %.not441510, label %.loopexit, label %.lr.ph518

.lr.ph518:                                        ; preds = %.lr.ph513, %._crit_edge514
  %347 = load float, ptr %27, align 4, !tbaa !10
  %348 = add nuw i32 %301, 1
  %wide.trip.count581 = zext i32 %348 to i64
  %349 = zext nneg i32 %301 to i64
  %min.iters.check683 = icmp ult i32 %301, 4
  br i1 %min.iters.check683, label %scalar.ph682.preheader, label %vector.ph684

vector.ph684:                                     ; preds = %.lr.ph518
  %n.vec686 = and i64 %349, 2147483644
  %ind.end687 = or disjoint i64 %n.vec686, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %347, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body689

vector.body689:                                   ; preds = %vector.body689, %vector.ph684
  %index690 = phi i64 [ 0, %vector.ph684 ], [ %index.next693, %vector.body689 ]
  %350 = getelementptr float, ptr %17, i64 %index690
  %wide.load692 = load <4 x float>, ptr %350, align 4, !tbaa !10
  %351 = fdiv <4 x float> %wide.load692, %broadcast.splat
  store <4 x float> %351, ptr %350, align 4, !tbaa !10
  %index.next693 = add nuw i64 %index690, 4
  %352 = icmp eq i64 %index.next693, %n.vec686
  br i1 %352, label %middle.block681, label %vector.body689, !llvm.loop !35

middle.block681:                                  ; preds = %vector.body689
  %cmp.n694 = icmp eq i64 %n.vec686, %349
  br i1 %cmp.n694, label %.loopexit, label %scalar.ph682.preheader

scalar.ph682.preheader:                           ; preds = %middle.block681, %.lr.ph518
  %indvars.iv578.ph = phi i64 [ 1, %.lr.ph518 ], [ %ind.end687, %middle.block681 ]
  br label %scalar.ph682

scalar.ph682:                                     ; preds = %scalar.ph682.preheader, %scalar.ph682
  %indvars.iv578 = phi i64 [ %indvars.iv.next579, %scalar.ph682 ], [ %indvars.iv578.ph, %scalar.ph682.preheader ]
  %353 = getelementptr inbounds float, ptr %38, i64 %indvars.iv578
  %354 = load float, ptr %353, align 4, !tbaa !10
  %355 = fdiv float %354, %347
  store float %355, ptr %353, align 4, !tbaa !10
  %indvars.iv.next579 = add nuw nsw i64 %indvars.iv578, 1
  %exitcond582.not = icmp eq i64 %indvars.iv.next579, %wide.trip.count581
  br i1 %exitcond582.not, label %.loopexit, label %scalar.ph682, !llvm.loop !36

356:                                              ; preds = %297
  %.not436 = icmp eq i32 %.1396, 0
  br i1 %.not436, label %.loopexit, label %357

357:                                              ; preds = %356
  %358 = load i32, ptr %3, align 4, !tbaa !5
  %.not437524 = icmp slt i32 %358, 1
  br i1 %.not437524, label %.loopexit, label %.lr.ph527

.lr.ph527:                                        ; preds = %357
  %359 = load i32, ptr %2, align 4, !tbaa !5
  %.not439519 = icmp slt i32 %359, 1
  br i1 %.not439519, label %.lr.ph532, label %.lr.ph522.preheader

.lr.ph522.preheader:                              ; preds = %.lr.ph527
  %360 = add nuw i32 %359, 1
  %361 = sext i32 %35 to i64
  %362 = add nuw i32 %358, 1
  %wide.trip.count591 = zext i32 %362 to i64
  %wide.trip.count586 = zext i32 %360 to i64
  %363 = shl nsw i64 %361, 3
  %364 = shl nsw i64 %36, 3
  %365 = getelementptr i8, ptr %14, i64 %363
  %366 = getelementptr i8, ptr %365, i64 %364
  %scevgep696 = getelementptr i8, ptr %366, i64 8
  %367 = shl nuw nsw i64 %wide.trip.count591, 3
  %368 = add nsw i64 %367, -8
  %369 = mul i64 %368, %361
  %370 = shl nuw nsw i64 %wide.trip.count586, 3
  %371 = getelementptr i8, ptr %14, i64 %369
  %372 = getelementptr i8, ptr %371, i64 %364
  %scevgep697 = getelementptr i8, ptr %372, i64 %370
  %373 = shl nuw nsw i64 %wide.trip.count586, 2
  %374 = getelementptr i8, ptr %10, i64 %373
  %scevgep698 = getelementptr i8, ptr %374, i64 -4
  %375 = zext nneg i32 %359 to i64
  %376 = zext nneg i32 %359 to i64
  %min.iters.check705 = icmp eq i32 %359, 1
  %bound0699 = icmp ult ptr %scevgep696, %scevgep698
  %bound1700 = icmp ugt ptr %scevgep697, %10
  %found.conflict701 = and i1 %bound0699, %bound1700
  %stride.check702 = icmp slt i32 %35, 0
  %377 = or i1 %found.conflict701, %stride.check702
  %n.vec708 = and i64 %375, 2147483646
  %ind.end709 = or i64 %375, 1
  %cmp.n720 = icmp eq i64 %n.vec708, %375
  %378 = and i32 %359, 1
  %lcmp.mod757.not = icmp eq i32 %378, 0
  br label %.lr.ph522

.lr.ph522:                                        ; preds = %.lr.ph522.preheader, %._crit_edge523
  %indvars.iv588 = phi i64 [ 1, %.lr.ph522.preheader ], [ %indvars.iv.next589, %._crit_edge523 ]
  %379 = mul nsw i64 %indvars.iv588, %361
  %invariant.gep619 = getelementptr %struct.complex, ptr %37, i64 %379
  %brmerge772 = select i1 %min.iters.check705, i1 true, i1 %377
  br i1 %brmerge772, label %scalar.ph704.preheader, label %vector.body711

vector.body711:                                   ; preds = %.lr.ph522, %vector.body711
  %index712 = phi i64 [ %index.next719, %vector.body711 ], [ 0, %.lr.ph522 ]
  %offset.idx713 = or disjoint i64 %index712, 1
  %380 = getelementptr float, ptr %10, i64 %index712
  %wide.load714 = load <2 x float>, ptr %380, align 4, !tbaa !10, !alias.scope !37
  %381 = getelementptr %struct.complex, ptr %invariant.gep619, i64 %offset.idx713
  %382 = load <4 x float>, ptr %381, align 4, !tbaa !10
  %383 = shufflevector <2 x float> %wide.load714, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec718 = fmul <4 x float> %383, %382
  store <4 x float> %interleaved.vec718, ptr %381, align 4, !tbaa !10
  %index.next719 = add nuw i64 %index712, 2
  %384 = icmp eq i64 %index.next719, %n.vec708
  br i1 %384, label %middle.block703, label %vector.body711, !llvm.loop !40

middle.block703:                                  ; preds = %vector.body711
  br i1 %cmp.n720, label %._crit_edge523, label %scalar.ph704.preheader

scalar.ph704.preheader:                           ; preds = %.lr.ph522, %middle.block703
  %indvars.iv583.ph = phi i64 [ 1, %.lr.ph522 ], [ %ind.end709, %middle.block703 ]
  br i1 %lcmp.mod757.not, label %scalar.ph704.prol.loopexit, label %scalar.ph704.prol

scalar.ph704.prol:                                ; preds = %scalar.ph704.preheader
  %385 = getelementptr inbounds float, ptr %30, i64 %indvars.iv583.ph
  %386 = load float, ptr %385, align 4, !tbaa !10
  %gep620.prol = getelementptr %struct.complex, ptr %invariant.gep619, i64 %indvars.iv583.ph
  %387 = load <2 x float>, ptr %gep620.prol, align 4, !tbaa !10
  %388 = insertelement <2 x float> poison, float %386, i64 0
  %389 = shufflevector <2 x float> %388, <2 x float> poison, <2 x i32> zeroinitializer
  %390 = fmul <2 x float> %389, %387
  store <2 x float> %390, ptr %gep620.prol, align 4, !tbaa !10
  %indvars.iv.next584.prol = add nuw nsw i64 %indvars.iv583.ph, 1
  br label %scalar.ph704.prol.loopexit

scalar.ph704.prol.loopexit:                       ; preds = %scalar.ph704.prol, %scalar.ph704.preheader
  %indvars.iv583.unr = phi i64 [ %indvars.iv583.ph, %scalar.ph704.preheader ], [ %indvars.iv.next584.prol, %scalar.ph704.prol ]
  %391 = icmp eq i64 %indvars.iv583.ph, %376
  br i1 %391, label %._crit_edge523, label %scalar.ph704.preheader.new

scalar.ph704.preheader.new:                       ; preds = %scalar.ph704.prol.loopexit
  %invariant.gep768 = getelementptr i8, ptr %invariant.gep619, i64 8
  br label %scalar.ph704

scalar.ph704:                                     ; preds = %scalar.ph704, %scalar.ph704.preheader.new
  %indvars.iv583 = phi i64 [ %indvars.iv583.unr, %scalar.ph704.preheader.new ], [ %indvars.iv.next584.1, %scalar.ph704 ]
  %392 = getelementptr inbounds float, ptr %30, i64 %indvars.iv583
  %393 = load float, ptr %392, align 4, !tbaa !10
  %gep620 = getelementptr %struct.complex, ptr %invariant.gep619, i64 %indvars.iv583
  %394 = load <2 x float>, ptr %gep620, align 4, !tbaa !10
  %395 = insertelement <2 x float> poison, float %393, i64 0
  %396 = shufflevector <2 x float> %395, <2 x float> poison, <2 x i32> zeroinitializer
  %397 = fmul <2 x float> %396, %394
  store <2 x float> %397, ptr %gep620, align 4, !tbaa !10
  %398 = getelementptr float, ptr %10, i64 %indvars.iv583
  %399 = load float, ptr %398, align 4, !tbaa !10
  %gep769 = getelementptr %struct.complex, ptr %invariant.gep768, i64 %indvars.iv583
  %400 = load <2 x float>, ptr %gep769, align 4, !tbaa !10
  %401 = insertelement <2 x float> poison, float %399, i64 0
  %402 = shufflevector <2 x float> %401, <2 x float> poison, <2 x i32> zeroinitializer
  %403 = fmul <2 x float> %402, %400
  store <2 x float> %403, ptr %gep769, align 4, !tbaa !10
  %indvars.iv.next584.1 = add nuw nsw i64 %indvars.iv583, 2
  %exitcond587.not.1 = icmp eq i64 %indvars.iv.next584.1, %wide.trip.count586
  br i1 %exitcond587.not.1, label %._crit_edge523, label %scalar.ph704, !llvm.loop !41

._crit_edge523:                                   ; preds = %scalar.ph704.prol.loopexit, %scalar.ph704, %middle.block703
  %indvars.iv.next589 = add nuw nsw i64 %indvars.iv588, 1
  %exitcond592.not = icmp eq i64 %indvars.iv.next589, %wide.trip.count591
  br i1 %exitcond592.not, label %._crit_edge528, label %.lr.ph522, !llvm.loop !42

._crit_edge528:                                   ; preds = %._crit_edge523
  br i1 %.not437524, label %.loopexit, label %.lr.ph532

.lr.ph532:                                        ; preds = %.lr.ph527, %._crit_edge528
  %404 = load float, ptr %29, align 4, !tbaa !10
  %405 = add nuw i32 %358, 1
  %wide.trip.count596 = zext i32 %405 to i64
  %406 = zext nneg i32 %358 to i64
  %min.iters.check723 = icmp ult i32 %358, 4
  br i1 %min.iters.check723, label %scalar.ph722.preheader, label %vector.ph724

vector.ph724:                                     ; preds = %.lr.ph532
  %n.vec726 = and i64 %406, 2147483644
  %ind.end727 = or disjoint i64 %n.vec726, 1
  %broadcast.splatinsert733 = insertelement <4 x float> poison, float %404, i64 0
  %broadcast.splat734 = shufflevector <4 x float> %broadcast.splatinsert733, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body729

vector.body729:                                   ; preds = %vector.body729, %vector.ph724
  %index730 = phi i64 [ 0, %vector.ph724 ], [ %index.next735, %vector.body729 ]
  %407 = getelementptr float, ptr %17, i64 %index730
  %wide.load732 = load <4 x float>, ptr %407, align 4, !tbaa !10
  %408 = fdiv <4 x float> %wide.load732, %broadcast.splat734
  store <4 x float> %408, ptr %407, align 4, !tbaa !10
  %index.next735 = add nuw i64 %index730, 4
  %409 = icmp eq i64 %index.next735, %n.vec726
  br i1 %409, label %middle.block721, label %vector.body729, !llvm.loop !43

middle.block721:                                  ; preds = %vector.body729
  %cmp.n736 = icmp eq i64 %n.vec726, %406
  br i1 %cmp.n736, label %.loopexit, label %scalar.ph722.preheader

scalar.ph722.preheader:                           ; preds = %middle.block721, %.lr.ph532
  %indvars.iv593.ph = phi i64 [ 1, %.lr.ph532 ], [ %ind.end727, %middle.block721 ]
  br label %scalar.ph722

scalar.ph722:                                     ; preds = %scalar.ph722.preheader, %scalar.ph722
  %indvars.iv593 = phi i64 [ %indvars.iv.next594, %scalar.ph722 ], [ %indvars.iv593.ph, %scalar.ph722.preheader ]
  %410 = getelementptr inbounds float, ptr %38, i64 %indvars.iv593
  %411 = load float, ptr %410, align 4, !tbaa !10
  %412 = fdiv float %411, %404
  store float %412, ptr %410, align 4, !tbaa !10
  %indvars.iv.next594 = add nuw nsw i64 %indvars.iv593, 1
  %exitcond597.not = icmp eq i64 %indvars.iv.next594, %wide.trip.count596
  br i1 %exitcond597.not, label %.loopexit, label %scalar.ph722, !llvm.loop !44

.loopexit:                                        ; preds = %scalar.ph682, %scalar.ph722, %middle.block681, %middle.block721, %357, %300, %._crit_edge514, %._crit_edge528, %356, %299
  %413 = load float, ptr %16, align 4, !tbaa !10
  %414 = call float @slamch_(ptr noundef nonnull @.str.12) #4
  %415 = fcmp olt float %413, %414
  br i1 %415, label %416, label %419

416:                                              ; preds = %.loopexit
  %417 = load i32, ptr %2, align 4, !tbaa !5
  %418 = add nsw i32 %417, 1
  store i32 %418, ptr %21, align 4, !tbaa !5
  br label %419

419:                                              ; preds = %416, %.loopexit
  store float %.1, ptr %20, align 4, !tbaa !10
  br label %420

420:                                              ; preds = %419, %289, %.thread464
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #4
  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 float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

declare float @clantr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare float @clange_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare void @cgerfs_(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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"float", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = !{!16}
!16 = distinct !{!16, !17}
!17 = distinct !{!17, !"LVerDomain"}
!18 = distinct !{!18, !13, !19, !20}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !13, !19}
!22 = distinct !{!22, !13}
!23 = !{!24}
!24 = distinct !{!24, !25}
!25 = distinct !{!25, !"LVerDomain"}
!26 = distinct !{!26, !13, !19, !20}
!27 = distinct !{!27, !13, !19}
!28 = distinct !{!28, !13}
!29 = !{!30}
!30 = distinct !{!30, !31}
!31 = distinct !{!31, !"LVerDomain"}
!32 = distinct !{!32, !13, !19, !20}
!33 = distinct !{!33, !13, !19}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13, !19, !20}
!36 = distinct !{!36, !13, !20, !19}
!37 = !{!38}
!38 = distinct !{!38, !39}
!39 = distinct !{!39, !"LVerDomain"}
!40 = distinct !{!40, !13, !19, !20}
!41 = distinct !{!41, !13, !19}
!42 = distinct !{!42, !13}
!43 = distinct !{!43, !13, !19, !20}
!44 = distinct !{!44, !13, !20, !19}


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