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

136:                                              ; preds = %22
  %137 = load i64, ptr %69, align 8, !tbaa !9
  %138 = icmp ne i64 %137, 0
  br i1 %138, label %139, label %141

139:                                              ; preds = %136, %22
  %140 = load ptr, ptr %33, align 8, !tbaa !5
  store i8 78, ptr %140, align 1, !tbaa !11
  store i64 0, ptr %78, align 8, !tbaa !9
  store i64 0, ptr %74, align 8, !tbaa !9
  br label %168

141:                                              ; preds = %136
  %142 = load ptr, ptr %33, align 8, !tbaa !5
  %143 = call i64 @lsame_(ptr noundef %142, ptr noundef @.str.2)
  %144 = icmp ne i64 %143, 0
  br i1 %144, label %149, label %145

145:                                              ; preds = %141
  %146 = load ptr, ptr %33, align 8, !tbaa !5
  %147 = call i64 @lsame_(ptr noundef %146, ptr noundef @.str.3)
  %148 = icmp ne i64 %147, 0
  br label %149

149:                                              ; preds = %145, %141
  %150 = phi i1 [ true, %141 ], [ %148, %145 ]
  %151 = zext i1 %150 to i32
  %152 = sext i32 %151 to i64
  store i64 %152, ptr %78, align 8, !tbaa !9
  %153 = load ptr, ptr %33, align 8, !tbaa !5
  %154 = call i64 @lsame_(ptr noundef %153, ptr noundef @.str.4)
  %155 = icmp ne i64 %154, 0
  br i1 %155, label %160, label %156

156:                                              ; preds = %149
  %157 = load ptr, ptr %33, align 8, !tbaa !5
  %158 = call i64 @lsame_(ptr noundef %157, ptr noundef @.str.3)
  %159 = icmp ne i64 %158, 0
  br label %160

160:                                              ; preds = %156, %149
  %161 = phi i1 [ true, %149 ], [ %159, %156 ]
  %162 = zext i1 %161 to i32
  %163 = sext i32 %162 to i64
  store i64 %163, ptr %74, align 8, !tbaa !9
  %164 = call double @slamch_(ptr noundef @.str.5)
  %165 = fptrunc double %164 to float
  store float %165, ptr %77, align 4, !tbaa !12
  %166 = load float, ptr %77, align 4, !tbaa !12
  %167 = fdiv float 1.000000e+00, %166
  store float %167, ptr %72, align 4, !tbaa !12
  br label %168

168:                                              ; preds = %160, %139
  %169 = load i64, ptr %71, align 8, !tbaa !9
  %170 = icmp ne i64 %169, 0
  br i1 %170, label %180, label %171

171:                                              ; preds = %168
  %172 = load i64, ptr %69, align 8, !tbaa !9
  %173 = icmp ne i64 %172, 0
  br i1 %173, label %180, label %174

174:                                              ; preds = %171
  %175 = load ptr, ptr %24, align 8, !tbaa !5
  %176 = call i64 @lsame_(ptr noundef %175, ptr noundef @.str.6)
  %177 = icmp ne i64 %176, 0
  br i1 %177, label %180, label %178

178:                                              ; preds = %174
  %179 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -1, ptr %179, align 8, !tbaa !9
  br label %462

180:                                              ; preds = %174, %171, %168
  %181 = load i64, ptr %76, align 8, !tbaa !9
  %182 = icmp ne i64 %181, 0
  br i1 %182, label %193, label %183

183:                                              ; preds = %180
  %184 = load ptr, ptr %25, align 8, !tbaa !5
  %185 = call i64 @lsame_(ptr noundef %184, ptr noundef @.str.7)
  %186 = icmp ne i64 %185, 0
  br i1 %186, label %193, label %187

187:                                              ; preds = %183
  %188 = load ptr, ptr %25, align 8, !tbaa !5
  %189 = call i64 @lsame_(ptr noundef %188, ptr noundef @.str.4)
  %190 = icmp ne i64 %189, 0
  br i1 %190, label %193, label %191

191:                                              ; preds = %187
  %192 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -2, ptr %192, align 8, !tbaa !9
  br label %461

193:                                              ; preds = %187, %183, %180
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = icmp slt i64 %195, 0
  br i1 %196, label %197, label %199

197:                                              ; preds = %193
  %198 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -3, ptr %198, align 8, !tbaa !9
  br label %460

199:                                              ; preds = %193
  %200 = load ptr, ptr %27, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = icmp slt i64 %201, 0
  br i1 %202, label %203, label %205

203:                                              ; preds = %199
  %204 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -4, ptr %204, align 8, !tbaa !9
  br label %459

205:                                              ; preds = %199
  %206 = load ptr, ptr %29, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = load ptr, ptr %26, align 8, !tbaa !5
  %209 = load i64, ptr %208, align 8, !tbaa !9
  %210 = icmp sge i64 1, %209
  br i1 %210, label %211, label %212

211:                                              ; preds = %205
  br label %215

212:                                              ; preds = %205
  %213 = load ptr, ptr %26, align 8, !tbaa !5
  %214 = load i64, ptr %213, align 8, !tbaa !9
  br label %215

215:                                              ; preds = %212, %211
  %216 = phi i64 [ 1, %211 ], [ %214, %212 ]
  %217 = icmp slt i64 %207, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %215
  %219 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -6, ptr %219, align 8, !tbaa !9
  br label %458

220:                                              ; preds = %215
  %221 = load ptr, ptr %31, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = load ptr, ptr %26, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = icmp sge i64 1, %224
  br i1 %225, label %226, label %227

226:                                              ; preds = %220
  br label %230

227:                                              ; preds = %220
  %228 = load ptr, ptr %26, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  br label %230

230:                                              ; preds = %227, %226
  %231 = phi i64 [ 1, %226 ], [ %229, %227 ]
  %232 = icmp slt i64 %222, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %230
  %234 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -8, ptr %234, align 8, !tbaa !9
  br label %457

235:                                              ; preds = %230
  %236 = load ptr, ptr %24, align 8, !tbaa !5
  %237 = call i64 @lsame_(ptr noundef %236, ptr noundef @.str.6)
  %238 = icmp ne i64 %237, 0
  br i1 %238, label %239, label %251

239:                                              ; preds = %235
  %240 = load i64, ptr %78, align 8, !tbaa !9
  %241 = icmp ne i64 %240, 0
  br i1 %241, label %251, label %242

242:                                              ; preds = %239
  %243 = load i64, ptr %74, align 8, !tbaa !9
  %244 = icmp ne i64 %243, 0
  br i1 %244, label %251, label %245

245:                                              ; preds = %242
  %246 = load ptr, ptr %33, align 8, !tbaa !5
  %247 = call i64 @lsame_(ptr noundef %246, ptr noundef @.str)
  %248 = icmp ne i64 %247, 0
  br i1 %248, label %251, label %249

249:                                              ; preds = %245
  %250 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -10, ptr %250, align 8, !tbaa !9
  br label %456

251:                                              ; preds = %245, %242, %239, %235
  %252 = load i64, ptr %78, align 8, !tbaa !9
  %253 = icmp ne i64 %252, 0
  br i1 %253, label %254, label %333

254:                                              ; preds = %251
  %255 = load float, ptr %72, align 4, !tbaa !12
  store float %255, ptr %66, align 4, !tbaa !12
  store float 0.000000e+00, ptr %67, align 4, !tbaa !12
  %256 = load ptr, ptr %26, align 8, !tbaa !5
  %257 = load i64, ptr %256, align 8, !tbaa !9
  store i64 %257, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %258

258:                                              ; preds = %295, %254
  %259 = load i64, ptr %63, align 8, !tbaa !9
  %260 = load i64, ptr %54, align 8, !tbaa !9
  %261 = icmp sle i64 %259, %260
  br i1 %261, label %262, label %298

262:                                              ; preds = %258
  %263 = load float, ptr %66, align 4, !tbaa !12
  store float %263, ptr %59, align 4, !tbaa !12
  %264 = load ptr, ptr %34, align 8, !tbaa !5
  %265 = load i64, ptr %63, align 8, !tbaa !9
  %266 = getelementptr inbounds float, ptr %264, i64 %265
  %267 = load float, ptr %266, align 4, !tbaa !12
  store float %267, ptr %60, align 4, !tbaa !12
  %268 = load float, ptr %59, align 4, !tbaa !12
  %269 = load float, ptr %60, align 4, !tbaa !12
  %270 = fcmp ole float %268, %269
  br i1 %270, label %271, label %273

271:                                              ; preds = %262
  %272 = load float, ptr %59, align 4, !tbaa !12
  br label %275

273:                                              ; preds = %262
  %274 = load float, ptr %60, align 4, !tbaa !12
  br label %275

275:                                              ; preds = %273, %271
  %276 = phi float [ %272, %271 ], [ %274, %273 ]
  %277 = fpext float %276 to double
  %278 = fptrunc double %277 to float
  store float %278, ptr %66, align 4, !tbaa !12
  %279 = load float, ptr %67, align 4, !tbaa !12
  store float %279, ptr %59, align 4, !tbaa !12
  %280 = load ptr, ptr %34, align 8, !tbaa !5
  %281 = load i64, ptr %63, align 8, !tbaa !9
  %282 = getelementptr inbounds float, ptr %280, i64 %281
  %283 = load float, ptr %282, align 4, !tbaa !12
  store float %283, ptr %60, align 4, !tbaa !12
  %284 = load float, ptr %59, align 4, !tbaa !12
  %285 = load float, ptr %60, align 4, !tbaa !12
  %286 = fcmp oge float %284, %285
  br i1 %286, label %287, label %289

287:                                              ; preds = %275
  %288 = load float, ptr %59, align 4, !tbaa !12
  br label %291

289:                                              ; preds = %275
  %290 = load float, ptr %60, align 4, !tbaa !12
  br label %291

291:                                              ; preds = %289, %287
  %292 = phi float [ %288, %287 ], [ %290, %289 ]
  %293 = fpext float %292 to double
  %294 = fptrunc double %293 to float
  store float %294, ptr %67, align 4, !tbaa !12
  br label %295

295:                                              ; preds = %291
  %296 = load i64, ptr %63, align 8, !tbaa !9
  %297 = add nsw i64 %296, 1
  store i64 %297, ptr %63, align 8, !tbaa !9
  br label %258, !llvm.loop !14

298:                                              ; preds = %258
  %299 = load float, ptr %66, align 4, !tbaa !12
  %300 = fcmp ole float %299, 0.000000e+00
  br i1 %300, label %301, label %303

301:                                              ; preds = %298
  %302 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -11, ptr %302, align 8, !tbaa !9
  br label %332

303:                                              ; preds = %298
  %304 = load ptr, ptr %26, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = icmp sgt i64 %305, 0
  br i1 %306, label %307, label %330

307:                                              ; preds = %303
  %308 = load float, ptr %66, align 4, !tbaa !12
  %309 = load float, ptr %77, align 4, !tbaa !12
  %310 = fcmp oge float %308, %309
  br i1 %310, label %311, label %313

311:                                              ; preds = %307
  %312 = load float, ptr %66, align 4, !tbaa !12
  br label %315

313:                                              ; preds = %307
  %314 = load float, ptr %77, align 4, !tbaa !12
  br label %315

315:                                              ; preds = %313, %311
  %316 = phi float [ %312, %311 ], [ %314, %313 ]
  %317 = fpext float %316 to double
  %318 = load float, ptr %67, align 4, !tbaa !12
  %319 = load float, ptr %72, align 4, !tbaa !12
  %320 = fcmp ole float %318, %319
  br i1 %320, label %321, label %323

321:                                              ; preds = %315
  %322 = load float, ptr %67, align 4, !tbaa !12
  br label %325

323:                                              ; preds = %315
  %324 = load float, ptr %72, align 4, !tbaa !12
  br label %325

325:                                              ; preds = %323, %321
  %326 = phi float [ %322, %321 ], [ %324, %323 ]
  %327 = fpext float %326 to double
  %328 = fdiv double %317, %327
  %329 = fptrunc double %328 to float
  store float %329, ptr %75, align 4, !tbaa !12
  br label %331

330:                                              ; preds = %303
  store float 1.000000e+00, ptr %75, align 4, !tbaa !12
  br label %331

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

332:                                              ; preds = %331, %301
  br label %333

333:                                              ; preds = %332, %251
  %334 = load i64, ptr %74, align 8, !tbaa !9
  %335 = icmp ne i64 %334, 0
  br i1 %335, label %336, label %419

336:                                              ; preds = %333
  %337 = load ptr, ptr %45, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  %339 = icmp eq i64 %338, 0
  br i1 %339, label %340, label %419

340:                                              ; preds = %336
  %341 = load float, ptr %72, align 4, !tbaa !12
  store float %341, ptr %66, align 4, !tbaa !12
  store float 0.000000e+00, ptr %67, align 4, !tbaa !12
  %342 = load ptr, ptr %26, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  store i64 %343, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %381, %340
  %345 = load i64, ptr %63, align 8, !tbaa !9
  %346 = load i64, ptr %54, align 8, !tbaa !9
  %347 = icmp sle i64 %345, %346
  br i1 %347, label %348, label %384

348:                                              ; preds = %344
  %349 = load float, ptr %66, align 4, !tbaa !12
  store float %349, ptr %59, align 4, !tbaa !12
  %350 = load ptr, ptr %35, align 8, !tbaa !5
  %351 = load i64, ptr %63, align 8, !tbaa !9
  %352 = getelementptr inbounds float, ptr %350, i64 %351
  %353 = load float, ptr %352, align 4, !tbaa !12
  store float %353, ptr %60, align 4, !tbaa !12
  %354 = load float, ptr %59, align 4, !tbaa !12
  %355 = load float, ptr %60, align 4, !tbaa !12
  %356 = fcmp ole float %354, %355
  br i1 %356, label %357, label %359

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

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

361:                                              ; preds = %359, %357
  %362 = phi float [ %358, %357 ], [ %360, %359 ]
  %363 = fpext float %362 to double
  %364 = fptrunc double %363 to float
  store float %364, ptr %66, align 4, !tbaa !12
  %365 = load float, ptr %67, align 4, !tbaa !12
  store float %365, ptr %59, align 4, !tbaa !12
  %366 = load ptr, ptr %35, align 8, !tbaa !5
  %367 = load i64, ptr %63, align 8, !tbaa !9
  %368 = getelementptr inbounds float, ptr %366, i64 %367
  %369 = load float, ptr %368, align 4, !tbaa !12
  store float %369, ptr %60, align 4, !tbaa !12
  %370 = load float, ptr %59, align 4, !tbaa !12
  %371 = load float, ptr %60, align 4, !tbaa !12
  %372 = fcmp oge float %370, %371
  br i1 %372, label %373, label %375

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

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

377:                                              ; preds = %375, %373
  %378 = phi float [ %374, %373 ], [ %376, %375 ]
  %379 = fpext float %378 to double
  %380 = fptrunc double %379 to float
  store float %380, ptr %67, align 4, !tbaa !12
  br label %381

381:                                              ; preds = %377
  %382 = load i64, ptr %63, align 8, !tbaa !9
  %383 = add nsw i64 %382, 1
  store i64 %383, ptr %63, align 8, !tbaa !9
  br label %344, !llvm.loop !16

384:                                              ; preds = %344
  %385 = load float, ptr %66, align 4, !tbaa !12
  %386 = fcmp ole float %385, 0.000000e+00
  br i1 %386, label %387, label %389

387:                                              ; preds = %384
  %388 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -12, ptr %388, align 8, !tbaa !9
  br label %418

389:                                              ; preds = %384
  %390 = load ptr, ptr %26, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = icmp sgt i64 %391, 0
  br i1 %392, label %393, label %416

393:                                              ; preds = %389
  %394 = load float, ptr %66, align 4, !tbaa !12
  %395 = load float, ptr %77, align 4, !tbaa !12
  %396 = fcmp oge float %394, %395
  br i1 %396, label %397, label %399

397:                                              ; preds = %393
  %398 = load float, ptr %66, align 4, !tbaa !12
  br label %401

399:                                              ; preds = %393
  %400 = load float, ptr %77, align 4, !tbaa !12
  br label %401

401:                                              ; preds = %399, %397
  %402 = phi float [ %398, %397 ], [ %400, %399 ]
  %403 = fpext float %402 to double
  %404 = load float, ptr %67, align 4, !tbaa !12
  %405 = load float, ptr %72, align 4, !tbaa !12
  %406 = fcmp ole float %404, %405
  br i1 %406, label %407, label %409

407:                                              ; preds = %401
  %408 = load float, ptr %67, align 4, !tbaa !12
  br label %411

409:                                              ; preds = %401
  %410 = load float, ptr %72, align 4, !tbaa !12
  br label %411

411:                                              ; preds = %409, %407
  %412 = phi float [ %408, %407 ], [ %410, %409 ]
  %413 = fpext float %412 to double
  %414 = fdiv double %403, %413
  %415 = fptrunc double %414 to float
  store float %415, ptr %70, align 4, !tbaa !12
  br label %417

416:                                              ; preds = %389
  store float 1.000000e+00, ptr %70, align 4, !tbaa !12
  br label %417

417:                                              ; preds = %416, %411
  br label %418

418:                                              ; preds = %417, %387
  br label %419

419:                                              ; preds = %418, %336, %333
  %420 = load ptr, ptr %45, align 8, !tbaa !5
  %421 = load i64, ptr %420, align 8, !tbaa !9
  %422 = icmp eq i64 %421, 0
  br i1 %422, label %423, label %455

423:                                              ; preds = %419
  %424 = load ptr, ptr %37, align 8, !tbaa !5
  %425 = load i64, ptr %424, align 8, !tbaa !9
  %426 = load ptr, ptr %26, align 8, !tbaa !5
  %427 = load i64, ptr %426, align 8, !tbaa !9
  %428 = icmp sge i64 1, %427
  br i1 %428, label %429, label %430

429:                                              ; preds = %423
  br label %433

430:                                              ; preds = %423
  %431 = load ptr, ptr %26, align 8, !tbaa !5
  %432 = load i64, ptr %431, align 8, !tbaa !9
  br label %433

433:                                              ; preds = %430, %429
  %434 = phi i64 [ 1, %429 ], [ %432, %430 ]
  %435 = icmp slt i64 %425, %434
  br i1 %435, label %436, label %438

436:                                              ; preds = %433
  %437 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -14, ptr %437, align 8, !tbaa !9
  br label %454

438:                                              ; preds = %433
  %439 = load ptr, ptr %39, align 8, !tbaa !5
  %440 = load i64, ptr %439, align 8, !tbaa !9
  %441 = load ptr, ptr %26, align 8, !tbaa !5
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = icmp sge i64 1, %442
  br i1 %443, label %444, label %445

444:                                              ; preds = %438
  br label %448

445:                                              ; preds = %438
  %446 = load ptr, ptr %26, align 8, !tbaa !5
  %447 = load i64, ptr %446, align 8, !tbaa !9
  br label %448

448:                                              ; preds = %445, %444
  %449 = phi i64 [ 1, %444 ], [ %447, %445 ]
  %450 = icmp slt i64 %440, %449
  br i1 %450, label %451, label %453

451:                                              ; preds = %448
  %452 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -16, ptr %452, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %451, %448
  br label %454

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

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

456:                                              ; preds = %455, %249
  br label %457

457:                                              ; preds = %456, %233
  br label %458

458:                                              ; preds = %457, %218
  br label %459

459:                                              ; preds = %458, %203
  br label %460

460:                                              ; preds = %459, %197
  br label %461

461:                                              ; preds = %460, %191
  br label %462

462:                                              ; preds = %461, %178
  %463 = load ptr, ptr %45, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = icmp ne i64 %464, 0
  br i1 %465, label %466, label %471

466:                                              ; preds = %462
  %467 = load ptr, ptr %45, align 8, !tbaa !5
  %468 = load i64, ptr %467, align 8, !tbaa !9
  %469 = sub nsw i64 0, %468
  store i64 %469, ptr %54, align 8, !tbaa !9
  %470 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %54)
  store i32 0, ptr %23, align 4
  store i32 1, ptr %80, align 4
  br label %1048

471:                                              ; preds = %462
  %472 = load i64, ptr %69, align 8, !tbaa !9
  %473 = icmp ne i64 %472, 0
  br i1 %473, label %474, label %524

474:                                              ; preds = %471
  %475 = load ptr, ptr %26, align 8, !tbaa !5
  %476 = load ptr, ptr %26, align 8, !tbaa !5
  %477 = load ptr, ptr %28, align 8, !tbaa !5
  %478 = load i64, ptr %47, align 8, !tbaa !9
  %479 = getelementptr inbounds %struct.complex, ptr %477, i64 %478
  %480 = load ptr, ptr %29, align 8, !tbaa !5
  %481 = load ptr, ptr %34, align 8, !tbaa !5
  %482 = getelementptr inbounds float, ptr %481, i64 1
  %483 = load ptr, ptr %35, align 8, !tbaa !5
  %484 = getelementptr inbounds float, ptr %483, i64 1
  %485 = call i32 @cgeequ_(ptr noundef %475, ptr noundef %476, ptr noundef %479, ptr noundef %480, ptr noundef %482, ptr noundef %484, ptr noundef %75, ptr noundef %70, ptr noundef %64, ptr noundef %73)
  %486 = load i64, ptr %73, align 8, !tbaa !9
  %487 = icmp eq i64 %486, 0
  br i1 %487, label %488, label %523

488:                                              ; preds = %474
  %489 = load ptr, ptr %26, align 8, !tbaa !5
  %490 = load ptr, ptr %26, align 8, !tbaa !5
  %491 = load ptr, ptr %28, align 8, !tbaa !5
  %492 = load i64, ptr %47, align 8, !tbaa !9
  %493 = getelementptr inbounds %struct.complex, ptr %491, i64 %492
  %494 = load ptr, ptr %29, align 8, !tbaa !5
  %495 = load ptr, ptr %34, align 8, !tbaa !5
  %496 = getelementptr inbounds float, ptr %495, i64 1
  %497 = load ptr, ptr %35, align 8, !tbaa !5
  %498 = getelementptr inbounds float, ptr %497, i64 1
  %499 = load ptr, ptr %33, align 8, !tbaa !5
  %500 = call i32 @claqge_(ptr noundef %489, ptr noundef %490, ptr noundef %493, ptr noundef %494, ptr noundef %496, ptr noundef %498, ptr noundef %75, ptr noundef %70, ptr noundef %64, ptr noundef %499)
  %501 = load ptr, ptr %33, align 8, !tbaa !5
  %502 = call i64 @lsame_(ptr noundef %501, ptr noundef @.str.2)
  %503 = icmp ne i64 %502, 0
  br i1 %503, label %508, label %504

504:                                              ; preds = %488
  %505 = load ptr, ptr %33, align 8, !tbaa !5
  %506 = call i64 @lsame_(ptr noundef %505, ptr noundef @.str.3)
  %507 = icmp ne i64 %506, 0
  br label %508

508:                                              ; preds = %504, %488
  %509 = phi i1 [ true, %488 ], [ %507, %504 ]
  %510 = zext i1 %509 to i32
  %511 = sext i32 %510 to i64
  store i64 %511, ptr %78, align 8, !tbaa !9
  %512 = load ptr, ptr %33, align 8, !tbaa !5
  %513 = call i64 @lsame_(ptr noundef %512, ptr noundef @.str.4)
  %514 = icmp ne i64 %513, 0
  br i1 %514, label %519, label %515

515:                                              ; preds = %508
  %516 = load ptr, ptr %33, align 8, !tbaa !5
  %517 = call i64 @lsame_(ptr noundef %516, ptr noundef @.str.3)
  %518 = icmp ne i64 %517, 0
  br label %519

519:                                              ; preds = %515, %508
  %520 = phi i1 [ true, %508 ], [ %518, %515 ]
  %521 = zext i1 %520 to i32
  %522 = sext i32 %521 to i64
  store i64 %522, ptr %74, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %519, %474
  br label %524

524:                                              ; preds = %523, %471
  %525 = load i64, ptr %76, align 8, !tbaa !9
  %526 = icmp ne i64 %525, 0
  br i1 %526, label %527, label %599

527:                                              ; preds = %524
  %528 = load i64, ptr %78, align 8, !tbaa !9
  %529 = icmp ne i64 %528, 0
  br i1 %529, label %530, label %598

530:                                              ; preds = %527
  %531 = load ptr, ptr %27, align 8, !tbaa !5
  %532 = load i64, ptr %531, align 8, !tbaa !9
  store i64 %532, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %533

533:                                              ; preds = %594, %530
  %534 = load i64, ptr %63, align 8, !tbaa !9
  %535 = load i64, ptr %54, align 8, !tbaa !9
  %536 = icmp sle i64 %534, %535
  br i1 %536, label %537, label %597

537:                                              ; preds = %533
  %538 = load ptr, ptr %26, align 8, !tbaa !5
  %539 = load i64, ptr %538, align 8, !tbaa !9
  store i64 %539, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %540

540:                                              ; preds = %590, %537
  %541 = load i64, ptr %62, align 8, !tbaa !9
  %542 = load i64, ptr %55, align 8, !tbaa !9
  %543 = icmp sle i64 %541, %542
  br i1 %543, label %544, label %593

544:                                              ; preds = %540
  %545 = load i64, ptr %62, align 8, !tbaa !9
  %546 = load i64, ptr %63, align 8, !tbaa !9
  %547 = load i64, ptr %50, align 8, !tbaa !9
  %548 = mul nsw i64 %546, %547
  %549 = add nsw i64 %545, %548
  store i64 %549, ptr %56, align 8, !tbaa !9
  %550 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %550, ptr %57, align 8, !tbaa !9
  %551 = load i64, ptr %62, align 8, !tbaa !9
  %552 = load i64, ptr %63, align 8, !tbaa !9
  %553 = load i64, ptr %50, align 8, !tbaa !9
  %554 = mul nsw i64 %552, %553
  %555 = add nsw i64 %551, %554
  store i64 %555, ptr %58, align 8, !tbaa !9
  %556 = load ptr, ptr %34, align 8, !tbaa !5
  %557 = load i64, ptr %57, align 8, !tbaa !9
  %558 = getelementptr inbounds float, ptr %556, i64 %557
  %559 = load float, ptr %558, align 4, !tbaa !12
  %560 = load ptr, ptr %36, align 8, !tbaa !5
  %561 = load i64, ptr %58, align 8, !tbaa !9
  %562 = getelementptr inbounds %struct.complex, ptr %560, i64 %561
  %563 = getelementptr inbounds %struct.complex, ptr %562, i32 0, i32 0
  %564 = load float, ptr %563, align 4, !tbaa !17
  %565 = fmul float %559, %564
  %566 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  store float %565, ptr %566, align 4, !tbaa !17
  %567 = load ptr, ptr %34, align 8, !tbaa !5
  %568 = load i64, ptr %57, align 8, !tbaa !9
  %569 = getelementptr inbounds float, ptr %567, i64 %568
  %570 = load float, ptr %569, align 4, !tbaa !12
  %571 = load ptr, ptr %36, align 8, !tbaa !5
  %572 = load i64, ptr %58, align 8, !tbaa !9
  %573 = getelementptr inbounds %struct.complex, ptr %571, i64 %572
  %574 = getelementptr inbounds %struct.complex, ptr %573, i32 0, i32 1
  %575 = load float, ptr %574, align 4, !tbaa !19
  %576 = fmul float %570, %575
  %577 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  store float %576, ptr %577, align 4, !tbaa !19
  %578 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  %579 = load float, ptr %578, align 4, !tbaa !17
  %580 = load ptr, ptr %36, align 8, !tbaa !5
  %581 = load i64, ptr %56, align 8, !tbaa !9
  %582 = getelementptr inbounds %struct.complex, ptr %580, i64 %581
  %583 = getelementptr inbounds %struct.complex, ptr %582, i32 0, i32 0
  store float %579, ptr %583, align 4, !tbaa !17
  %584 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  %585 = load float, ptr %584, align 4, !tbaa !19
  %586 = load ptr, ptr %36, align 8, !tbaa !5
  %587 = load i64, ptr %56, align 8, !tbaa !9
  %588 = getelementptr inbounds %struct.complex, ptr %586, i64 %587
  %589 = getelementptr inbounds %struct.complex, ptr %588, i32 0, i32 1
  store float %585, ptr %589, align 4, !tbaa !19
  br label %590

590:                                              ; preds = %544
  %591 = load i64, ptr %62, align 8, !tbaa !9
  %592 = add nsw i64 %591, 1
  store i64 %592, ptr %62, align 8, !tbaa !9
  br label %540, !llvm.loop !20

593:                                              ; preds = %540
  br label %594

594:                                              ; preds = %593
  %595 = load i64, ptr %63, align 8, !tbaa !9
  %596 = add nsw i64 %595, 1
  store i64 %596, ptr %63, align 8, !tbaa !9
  br label %533, !llvm.loop !21

597:                                              ; preds = %533
  br label %598

598:                                              ; preds = %597, %527
  br label %671

599:                                              ; preds = %524
  %600 = load i64, ptr %74, align 8, !tbaa !9
  %601 = icmp ne i64 %600, 0
  br i1 %601, label %602, label %670

602:                                              ; preds = %599
  %603 = load ptr, ptr %27, align 8, !tbaa !5
  %604 = load i64, ptr %603, align 8, !tbaa !9
  store i64 %604, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %605

605:                                              ; preds = %666, %602
  %606 = load i64, ptr %63, align 8, !tbaa !9
  %607 = load i64, ptr %54, align 8, !tbaa !9
  %608 = icmp sle i64 %606, %607
  br i1 %608, label %609, label %669

609:                                              ; preds = %605
  %610 = load ptr, ptr %26, align 8, !tbaa !5
  %611 = load i64, ptr %610, align 8, !tbaa !9
  store i64 %611, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %612

612:                                              ; preds = %662, %609
  %613 = load i64, ptr %62, align 8, !tbaa !9
  %614 = load i64, ptr %55, align 8, !tbaa !9
  %615 = icmp sle i64 %613, %614
  br i1 %615, label %616, label %665

616:                                              ; preds = %612
  %617 = load i64, ptr %62, align 8, !tbaa !9
  %618 = load i64, ptr %63, align 8, !tbaa !9
  %619 = load i64, ptr %50, align 8, !tbaa !9
  %620 = mul nsw i64 %618, %619
  %621 = add nsw i64 %617, %620
  store i64 %621, ptr %56, align 8, !tbaa !9
  %622 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %622, ptr %57, align 8, !tbaa !9
  %623 = load i64, ptr %62, align 8, !tbaa !9
  %624 = load i64, ptr %63, align 8, !tbaa !9
  %625 = load i64, ptr %50, align 8, !tbaa !9
  %626 = mul nsw i64 %624, %625
  %627 = add nsw i64 %623, %626
  store i64 %627, ptr %58, align 8, !tbaa !9
  %628 = load ptr, ptr %35, align 8, !tbaa !5
  %629 = load i64, ptr %57, align 8, !tbaa !9
  %630 = getelementptr inbounds float, ptr %628, i64 %629
  %631 = load float, ptr %630, align 4, !tbaa !12
  %632 = load ptr, ptr %36, align 8, !tbaa !5
  %633 = load i64, ptr %58, align 8, !tbaa !9
  %634 = getelementptr inbounds %struct.complex, ptr %632, 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 %631, %636
  %638 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  store float %637, ptr %638, align 4, !tbaa !17
  %639 = load ptr, ptr %35, align 8, !tbaa !5
  %640 = load i64, ptr %57, align 8, !tbaa !9
  %641 = getelementptr inbounds float, ptr %639, i64 %640
  %642 = load float, ptr %641, align 4, !tbaa !12
  %643 = load ptr, ptr %36, align 8, !tbaa !5
  %644 = load i64, ptr %58, align 8, !tbaa !9
  %645 = getelementptr inbounds %struct.complex, ptr %643, i64 %644
  %646 = getelementptr inbounds %struct.complex, ptr %645, i32 0, i32 1
  %647 = load float, ptr %646, align 4, !tbaa !19
  %648 = fmul float %642, %647
  %649 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  store float %648, ptr %649, align 4, !tbaa !19
  %650 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  %651 = load float, ptr %650, align 4, !tbaa !17
  %652 = load ptr, ptr %36, align 8, !tbaa !5
  %653 = load i64, ptr %56, align 8, !tbaa !9
  %654 = getelementptr inbounds %struct.complex, ptr %652, i64 %653
  %655 = getelementptr inbounds %struct.complex, ptr %654, i32 0, i32 0
  store float %651, ptr %655, align 4, !tbaa !17
  %656 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  %657 = load float, ptr %656, align 4, !tbaa !19
  %658 = load ptr, ptr %36, align 8, !tbaa !5
  %659 = load i64, ptr %56, align 8, !tbaa !9
  %660 = getelementptr inbounds %struct.complex, ptr %658, i64 %659
  %661 = getelementptr inbounds %struct.complex, ptr %660, i32 0, i32 1
  store float %657, ptr %661, align 4, !tbaa !19
  br label %662

662:                                              ; preds = %616
  %663 = load i64, ptr %62, align 8, !tbaa !9
  %664 = add nsw i64 %663, 1
  store i64 %664, ptr %62, align 8, !tbaa !9
  br label %612, !llvm.loop !22

665:                                              ; preds = %612
  br label %666

666:                                              ; preds = %665
  %667 = load i64, ptr %63, align 8, !tbaa !9
  %668 = add nsw i64 %667, 1
  store i64 %668, ptr %63, align 8, !tbaa !9
  br label %605, !llvm.loop !23

669:                                              ; preds = %605
  br label %670

670:                                              ; preds = %669, %599
  br label %671

671:                                              ; preds = %670, %598
  %672 = load i64, ptr %71, align 8, !tbaa !9
  %673 = icmp ne i64 %672, 0
  br i1 %673, label %677, label %674

674:                                              ; preds = %671
  %675 = load i64, ptr %69, align 8, !tbaa !9
  %676 = icmp ne i64 %675, 0
  br i1 %676, label %677, label %736

677:                                              ; preds = %674, %671
  %678 = load ptr, ptr %26, align 8, !tbaa !5
  %679 = load ptr, ptr %26, align 8, !tbaa !5
  %680 = load ptr, ptr %28, align 8, !tbaa !5
  %681 = load i64, ptr %47, align 8, !tbaa !9
  %682 = getelementptr inbounds %struct.complex, ptr %680, i64 %681
  %683 = load ptr, ptr %29, align 8, !tbaa !5
  %684 = load ptr, ptr %30, align 8, !tbaa !5
  %685 = load i64, ptr %49, align 8, !tbaa !9
  %686 = getelementptr inbounds %struct.complex, ptr %684, i64 %685
  %687 = load ptr, ptr %31, align 8, !tbaa !5
  %688 = call i32 @clacpy_(ptr noundef @.str.9, ptr noundef %678, ptr noundef %679, ptr noundef %682, ptr noundef %683, ptr noundef %686, ptr noundef %687)
  %689 = load ptr, ptr %26, align 8, !tbaa !5
  %690 = load ptr, ptr %26, align 8, !tbaa !5
  %691 = load ptr, ptr %30, align 8, !tbaa !5
  %692 = load i64, ptr %49, align 8, !tbaa !9
  %693 = getelementptr inbounds %struct.complex, ptr %691, i64 %692
  %694 = load ptr, ptr %31, align 8, !tbaa !5
  %695 = load ptr, ptr %32, align 8, !tbaa !5
  %696 = getelementptr inbounds i64, ptr %695, i64 1
  %697 = load ptr, ptr %45, align 8, !tbaa !5
  %698 = call i32 @cgetrf_(ptr noundef %689, ptr noundef %690, ptr noundef %693, ptr noundef %694, ptr noundef %696, ptr noundef %697)
  %699 = load ptr, ptr %45, align 8, !tbaa !5
  %700 = load i64, ptr %699, align 8, !tbaa !9
  %701 = icmp sgt i64 %700, 0
  br i1 %701, label %702, label %735

702:                                              ; preds = %677
  %703 = load ptr, ptr %45, align 8, !tbaa !5
  %704 = load ptr, ptr %45, align 8, !tbaa !5
  %705 = load ptr, ptr %30, align 8, !tbaa !5
  %706 = load i64, ptr %49, align 8, !tbaa !9
  %707 = getelementptr inbounds %struct.complex, ptr %705, i64 %706
  %708 = load ptr, ptr %31, align 8, !tbaa !5
  %709 = load ptr, ptr %44, align 8, !tbaa !5
  %710 = getelementptr inbounds float, ptr %709, i64 1
  %711 = call double @clantr_(ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef @.str, ptr noundef %703, ptr noundef %704, ptr noundef %707, ptr noundef %708, ptr noundef %710)
  %712 = fptrunc double %711 to float
  store float %712, ptr %79, align 4, !tbaa !12
  %713 = load float, ptr %79, align 4, !tbaa !12
  %714 = fcmp oeq float %713, 0.000000e+00
  br i1 %714, label %715, label %716

715:                                              ; preds = %702
  store float 1.000000e+00, ptr %79, align 4, !tbaa !12
  br label %730

716:                                              ; preds = %702
  %717 = load ptr, ptr %26, align 8, !tbaa !5
  %718 = load ptr, ptr %45, align 8, !tbaa !5
  %719 = load ptr, ptr %28, align 8, !tbaa !5
  %720 = load i64, ptr %47, align 8, !tbaa !9
  %721 = getelementptr inbounds %struct.complex, ptr %719, i64 %720
  %722 = load ptr, ptr %29, align 8, !tbaa !5
  %723 = load ptr, ptr %44, align 8, !tbaa !5
  %724 = getelementptr inbounds float, ptr %723, i64 1
  %725 = call double @clange_(ptr noundef @.str.10, ptr noundef %717, ptr noundef %718, ptr noundef %721, ptr noundef %722, ptr noundef %724)
  %726 = load float, ptr %79, align 4, !tbaa !12
  %727 = fpext float %726 to double
  %728 = fdiv double %725, %727
  %729 = fptrunc double %728 to float
  store float %729, ptr %79, align 4, !tbaa !12
  br label %730

730:                                              ; preds = %716, %715
  %731 = load float, ptr %79, align 4, !tbaa !12
  %732 = load ptr, ptr %44, align 8, !tbaa !5
  %733 = getelementptr inbounds float, ptr %732, i64 1
  store float %731, ptr %733, align 4, !tbaa !12
  %734 = load ptr, ptr %40, align 8, !tbaa !5
  store float 0.000000e+00, ptr %734, align 4, !tbaa !12
  store i32 0, ptr %23, align 4
  store i32 1, ptr %80, align 4
  br label %1048

735:                                              ; preds = %677
  br label %736

736:                                              ; preds = %735, %674
  %737 = load i64, ptr %76, align 8, !tbaa !9
  %738 = icmp ne i64 %737, 0
  br i1 %738, label %739, label %741

739:                                              ; preds = %736
  %740 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  store i8 49, ptr %740, align 1, !tbaa !11
  br label %743

741:                                              ; preds = %736
  %742 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  store i8 73, ptr %742, align 1, !tbaa !11
  br label %743

743:                                              ; preds = %741, %739
  %744 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  %745 = load ptr, ptr %26, align 8, !tbaa !5
  %746 = load ptr, ptr %26, align 8, !tbaa !5
  %747 = load ptr, ptr %28, align 8, !tbaa !5
  %748 = load i64, ptr %47, align 8, !tbaa !9
  %749 = getelementptr inbounds %struct.complex, ptr %747, i64 %748
  %750 = load ptr, ptr %29, align 8, !tbaa !5
  %751 = load ptr, ptr %44, align 8, !tbaa !5
  %752 = getelementptr inbounds float, ptr %751, i64 1
  %753 = call double @clange_(ptr noundef %744, ptr noundef %745, ptr noundef %746, ptr noundef %749, ptr noundef %750, ptr noundef %752)
  %754 = fptrunc double %753 to float
  store float %754, ptr %68, align 4, !tbaa !12
  %755 = load ptr, ptr %26, align 8, !tbaa !5
  %756 = load ptr, ptr %26, align 8, !tbaa !5
  %757 = load ptr, ptr %30, align 8, !tbaa !5
  %758 = load i64, ptr %49, align 8, !tbaa !9
  %759 = getelementptr inbounds %struct.complex, ptr %757, i64 %758
  %760 = load ptr, ptr %31, align 8, !tbaa !5
  %761 = load ptr, ptr %44, align 8, !tbaa !5
  %762 = getelementptr inbounds float, ptr %761, i64 1
  %763 = call double @clantr_(ptr noundef @.str.10, ptr noundef @.str.11, ptr noundef @.str, ptr noundef %755, ptr noundef %756, ptr noundef %759, ptr noundef %760, ptr noundef %762)
  %764 = fptrunc double %763 to float
  store float %764, ptr %79, align 4, !tbaa !12
  %765 = load float, ptr %79, align 4, !tbaa !12
  %766 = fcmp oeq float %765, 0.000000e+00
  br i1 %766, label %767, label %768

767:                                              ; preds = %743
  store float 1.000000e+00, ptr %79, align 4, !tbaa !12
  br label %782

768:                                              ; preds = %743
  %769 = load ptr, ptr %26, align 8, !tbaa !5
  %770 = load ptr, ptr %26, align 8, !tbaa !5
  %771 = load ptr, ptr %28, align 8, !tbaa !5
  %772 = load i64, ptr %47, align 8, !tbaa !9
  %773 = getelementptr inbounds %struct.complex, ptr %771, i64 %772
  %774 = load ptr, ptr %29, align 8, !tbaa !5
  %775 = load ptr, ptr %44, align 8, !tbaa !5
  %776 = getelementptr inbounds float, ptr %775, i64 1
  %777 = call double @clange_(ptr noundef @.str.10, ptr noundef %769, ptr noundef %770, ptr noundef %773, ptr noundef %774, ptr noundef %776)
  %778 = load float, ptr %79, align 4, !tbaa !12
  %779 = fpext float %778 to double
  %780 = fdiv double %777, %779
  %781 = fptrunc double %780 to float
  store float %781, ptr %79, align 4, !tbaa !12
  br label %782

782:                                              ; preds = %768, %767
  %783 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  %784 = load ptr, ptr %26, align 8, !tbaa !5
  %785 = load ptr, ptr %30, align 8, !tbaa !5
  %786 = load i64, ptr %49, align 8, !tbaa !9
  %787 = getelementptr inbounds %struct.complex, ptr %785, i64 %786
  %788 = load ptr, ptr %31, align 8, !tbaa !5
  %789 = load ptr, ptr %40, align 8, !tbaa !5
  %790 = load ptr, ptr %43, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct.complex, ptr %790, i64 1
  %792 = load ptr, ptr %44, align 8, !tbaa !5
  %793 = getelementptr inbounds float, ptr %792, i64 1
  %794 = load ptr, ptr %45, align 8, !tbaa !5
  %795 = call i32 @cgecon_(ptr noundef %783, ptr noundef %784, ptr noundef %787, ptr noundef %788, ptr noundef %68, ptr noundef %789, ptr noundef %791, ptr noundef %793, ptr noundef %794)
  %796 = load ptr, ptr %26, align 8, !tbaa !5
  %797 = load ptr, ptr %27, align 8, !tbaa !5
  %798 = load ptr, ptr %36, align 8, !tbaa !5
  %799 = load i64, ptr %51, align 8, !tbaa !9
  %800 = getelementptr inbounds %struct.complex, ptr %798, i64 %799
  %801 = load ptr, ptr %37, align 8, !tbaa !5
  %802 = load ptr, ptr %38, align 8, !tbaa !5
  %803 = load i64, ptr %53, align 8, !tbaa !9
  %804 = getelementptr inbounds %struct.complex, ptr %802, i64 %803
  %805 = load ptr, ptr %39, align 8, !tbaa !5
  %806 = call i32 @clacpy_(ptr noundef @.str.9, ptr noundef %796, ptr noundef %797, ptr noundef %800, ptr noundef %801, ptr noundef %804, ptr noundef %805)
  %807 = load ptr, ptr %25, align 8, !tbaa !5
  %808 = load ptr, ptr %26, align 8, !tbaa !5
  %809 = load ptr, ptr %27, align 8, !tbaa !5
  %810 = load ptr, ptr %30, align 8, !tbaa !5
  %811 = load i64, ptr %49, align 8, !tbaa !9
  %812 = getelementptr inbounds %struct.complex, ptr %810, i64 %811
  %813 = load ptr, ptr %31, align 8, !tbaa !5
  %814 = load ptr, ptr %32, align 8, !tbaa !5
  %815 = getelementptr inbounds i64, ptr %814, i64 1
  %816 = load ptr, ptr %38, align 8, !tbaa !5
  %817 = load i64, ptr %53, align 8, !tbaa !9
  %818 = getelementptr inbounds %struct.complex, ptr %816, i64 %817
  %819 = load ptr, ptr %39, align 8, !tbaa !5
  %820 = load ptr, ptr %45, align 8, !tbaa !5
  %821 = call i32 @cgetrs_(ptr noundef %807, ptr noundef %808, ptr noundef %809, ptr noundef %812, ptr noundef %813, ptr noundef %815, ptr noundef %818, ptr noundef %819, ptr noundef %820)
  %822 = load ptr, ptr %25, align 8, !tbaa !5
  %823 = load ptr, ptr %26, align 8, !tbaa !5
  %824 = load ptr, ptr %27, align 8, !tbaa !5
  %825 = load ptr, ptr %28, align 8, !tbaa !5
  %826 = load i64, ptr %47, align 8, !tbaa !9
  %827 = getelementptr inbounds %struct.complex, ptr %825, i64 %826
  %828 = load ptr, ptr %29, align 8, !tbaa !5
  %829 = load ptr, ptr %30, align 8, !tbaa !5
  %830 = load i64, ptr %49, align 8, !tbaa !9
  %831 = getelementptr inbounds %struct.complex, ptr %829, i64 %830
  %832 = load ptr, ptr %31, align 8, !tbaa !5
  %833 = load ptr, ptr %32, align 8, !tbaa !5
  %834 = getelementptr inbounds i64, ptr %833, i64 1
  %835 = load ptr, ptr %36, align 8, !tbaa !5
  %836 = load i64, ptr %51, align 8, !tbaa !9
  %837 = getelementptr inbounds %struct.complex, ptr %835, i64 %836
  %838 = load ptr, ptr %37, align 8, !tbaa !5
  %839 = load ptr, ptr %38, align 8, !tbaa !5
  %840 = load i64, ptr %53, align 8, !tbaa !9
  %841 = getelementptr inbounds %struct.complex, ptr %839, i64 %840
  %842 = load ptr, ptr %39, align 8, !tbaa !5
  %843 = load ptr, ptr %41, align 8, !tbaa !5
  %844 = getelementptr inbounds float, ptr %843, i64 1
  %845 = load ptr, ptr %42, align 8, !tbaa !5
  %846 = getelementptr inbounds float, ptr %845, i64 1
  %847 = load ptr, ptr %43, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.complex, ptr %847, i64 1
  %849 = load ptr, ptr %44, align 8, !tbaa !5
  %850 = getelementptr inbounds float, ptr %849, i64 1
  %851 = load ptr, ptr %45, align 8, !tbaa !5
  %852 = call i32 @cgerfs_(ptr noundef %822, ptr noundef %823, ptr noundef %824, ptr noundef %827, ptr noundef %828, ptr noundef %831, ptr noundef %832, ptr noundef %834, ptr noundef %837, ptr noundef %838, ptr noundef %841, ptr noundef %842, ptr noundef %844, ptr noundef %846, ptr noundef %848, ptr noundef %850, ptr noundef %851)
  %853 = load i64, ptr %76, align 8, !tbaa !9
  %854 = icmp ne i64 %853, 0
  br i1 %854, label %855, label %944

855:                                              ; preds = %782
  %856 = load i64, ptr %74, align 8, !tbaa !9
  %857 = icmp ne i64 %856, 0
  br i1 %857, label %858, label %943

858:                                              ; preds = %855
  %859 = load ptr, ptr %27, align 8, !tbaa !5
  %860 = load i64, ptr %859, align 8, !tbaa !9
  store i64 %860, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %861

861:                                              ; preds = %922, %858
  %862 = load i64, ptr %63, align 8, !tbaa !9
  %863 = load i64, ptr %54, align 8, !tbaa !9
  %864 = icmp sle i64 %862, %863
  br i1 %864, label %865, label %925

865:                                              ; preds = %861
  %866 = load ptr, ptr %26, align 8, !tbaa !5
  %867 = load i64, ptr %866, align 8, !tbaa !9
  store i64 %867, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %868

868:                                              ; preds = %918, %865
  %869 = load i64, ptr %62, align 8, !tbaa !9
  %870 = load i64, ptr %55, align 8, !tbaa !9
  %871 = icmp sle i64 %869, %870
  br i1 %871, label %872, label %921

872:                                              ; preds = %868
  %873 = load i64, ptr %62, align 8, !tbaa !9
  %874 = load i64, ptr %63, align 8, !tbaa !9
  %875 = load i64, ptr %52, align 8, !tbaa !9
  %876 = mul nsw i64 %874, %875
  %877 = add nsw i64 %873, %876
  store i64 %877, ptr %56, align 8, !tbaa !9
  %878 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %878, ptr %57, align 8, !tbaa !9
  %879 = load i64, ptr %62, align 8, !tbaa !9
  %880 = load i64, ptr %63, align 8, !tbaa !9
  %881 = load i64, ptr %52, align 8, !tbaa !9
  %882 = mul nsw i64 %880, %881
  %883 = add nsw i64 %879, %882
  store i64 %883, ptr %58, align 8, !tbaa !9
  %884 = load ptr, ptr %35, align 8, !tbaa !5
  %885 = load i64, ptr %57, align 8, !tbaa !9
  %886 = getelementptr inbounds float, ptr %884, i64 %885
  %887 = load float, ptr %886, align 4, !tbaa !12
  %888 = load ptr, ptr %38, align 8, !tbaa !5
  %889 = load i64, ptr %58, align 8, !tbaa !9
  %890 = getelementptr inbounds %struct.complex, ptr %888, i64 %889
  %891 = getelementptr inbounds %struct.complex, ptr %890, i32 0, i32 0
  %892 = load float, ptr %891, align 4, !tbaa !17
  %893 = fmul float %887, %892
  %894 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  store float %893, ptr %894, align 4, !tbaa !17
  %895 = load ptr, ptr %35, align 8, !tbaa !5
  %896 = load i64, ptr %57, align 8, !tbaa !9
  %897 = getelementptr inbounds float, ptr %895, i64 %896
  %898 = load float, ptr %897, align 4, !tbaa !12
  %899 = load ptr, ptr %38, align 8, !tbaa !5
  %900 = load i64, ptr %58, align 8, !tbaa !9
  %901 = getelementptr inbounds %struct.complex, ptr %899, i64 %900
  %902 = getelementptr inbounds %struct.complex, ptr %901, i32 0, i32 1
  %903 = load float, ptr %902, align 4, !tbaa !19
  %904 = fmul float %898, %903
  %905 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  store float %904, ptr %905, align 4, !tbaa !19
  %906 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  %907 = load float, ptr %906, align 4, !tbaa !17
  %908 = load ptr, ptr %38, align 8, !tbaa !5
  %909 = load i64, ptr %56, align 8, !tbaa !9
  %910 = getelementptr inbounds %struct.complex, ptr %908, i64 %909
  %911 = getelementptr inbounds %struct.complex, ptr %910, i32 0, i32 0
  store float %907, ptr %911, align 4, !tbaa !17
  %912 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  %913 = load float, ptr %912, align 4, !tbaa !19
  %914 = load ptr, ptr %38, align 8, !tbaa !5
  %915 = load i64, ptr %56, align 8, !tbaa !9
  %916 = getelementptr inbounds %struct.complex, ptr %914, i64 %915
  %917 = getelementptr inbounds %struct.complex, ptr %916, i32 0, i32 1
  store float %913, ptr %917, align 4, !tbaa !19
  br label %918

918:                                              ; preds = %872
  %919 = load i64, ptr %62, align 8, !tbaa !9
  %920 = add nsw i64 %919, 1
  store i64 %920, ptr %62, align 8, !tbaa !9
  br label %868, !llvm.loop !24

921:                                              ; preds = %868
  br label %922

922:                                              ; preds = %921
  %923 = load i64, ptr %63, align 8, !tbaa !9
  %924 = add nsw i64 %923, 1
  store i64 %924, ptr %63, align 8, !tbaa !9
  br label %861, !llvm.loop !25

925:                                              ; preds = %861
  %926 = load ptr, ptr %27, align 8, !tbaa !5
  %927 = load i64, ptr %926, align 8, !tbaa !9
  store i64 %927, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %928

928:                                              ; preds = %939, %925
  %929 = load i64, ptr %63, align 8, !tbaa !9
  %930 = load i64, ptr %54, align 8, !tbaa !9
  %931 = icmp sle i64 %929, %930
  br i1 %931, label %932, label %942

932:                                              ; preds = %928
  %933 = load float, ptr %70, align 4, !tbaa !12
  %934 = load ptr, ptr %41, align 8, !tbaa !5
  %935 = load i64, ptr %63, align 8, !tbaa !9
  %936 = getelementptr inbounds float, ptr %934, i64 %935
  %937 = load float, ptr %936, align 4, !tbaa !12
  %938 = fdiv float %937, %933
  store float %938, ptr %936, align 4, !tbaa !12
  br label %939

939:                                              ; preds = %932
  %940 = load i64, ptr %63, align 8, !tbaa !9
  %941 = add nsw i64 %940, 1
  store i64 %941, ptr %63, align 8, !tbaa !9
  br label %928, !llvm.loop !26

942:                                              ; preds = %928
  br label %943

943:                                              ; preds = %942, %855
  br label %1033

944:                                              ; preds = %782
  %945 = load i64, ptr %78, align 8, !tbaa !9
  %946 = icmp ne i64 %945, 0
  br i1 %946, label %947, label %1032

947:                                              ; preds = %944
  %948 = load ptr, ptr %27, align 8, !tbaa !5
  %949 = load i64, ptr %948, align 8, !tbaa !9
  store i64 %949, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %950

950:                                              ; preds = %1011, %947
  %951 = load i64, ptr %63, align 8, !tbaa !9
  %952 = load i64, ptr %54, align 8, !tbaa !9
  %953 = icmp sle i64 %951, %952
  br i1 %953, label %954, label %1014

954:                                              ; preds = %950
  %955 = load ptr, ptr %26, align 8, !tbaa !5
  %956 = load i64, ptr %955, align 8, !tbaa !9
  store i64 %956, ptr %55, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  br label %957

957:                                              ; preds = %1007, %954
  %958 = load i64, ptr %62, align 8, !tbaa !9
  %959 = load i64, ptr %55, align 8, !tbaa !9
  %960 = icmp sle i64 %958, %959
  br i1 %960, label %961, label %1010

961:                                              ; preds = %957
  %962 = load i64, ptr %62, align 8, !tbaa !9
  %963 = load i64, ptr %63, align 8, !tbaa !9
  %964 = load i64, ptr %52, align 8, !tbaa !9
  %965 = mul nsw i64 %963, %964
  %966 = add nsw i64 %962, %965
  store i64 %966, ptr %56, align 8, !tbaa !9
  %967 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %967, ptr %57, align 8, !tbaa !9
  %968 = load i64, ptr %62, align 8, !tbaa !9
  %969 = load i64, ptr %63, align 8, !tbaa !9
  %970 = load i64, ptr %52, align 8, !tbaa !9
  %971 = mul nsw i64 %969, %970
  %972 = add nsw i64 %968, %971
  store i64 %972, ptr %58, align 8, !tbaa !9
  %973 = load ptr, ptr %34, align 8, !tbaa !5
  %974 = load i64, ptr %57, align 8, !tbaa !9
  %975 = getelementptr inbounds float, ptr %973, i64 %974
  %976 = load float, ptr %975, align 4, !tbaa !12
  %977 = load ptr, ptr %38, align 8, !tbaa !5
  %978 = load i64, ptr %58, align 8, !tbaa !9
  %979 = getelementptr inbounds %struct.complex, ptr %977, i64 %978
  %980 = getelementptr inbounds %struct.complex, ptr %979, i32 0, i32 0
  %981 = load float, ptr %980, align 4, !tbaa !17
  %982 = fmul float %976, %981
  %983 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  store float %982, ptr %983, align 4, !tbaa !17
  %984 = load ptr, ptr %34, align 8, !tbaa !5
  %985 = load i64, ptr %57, align 8, !tbaa !9
  %986 = getelementptr inbounds float, ptr %984, i64 %985
  %987 = load float, ptr %986, align 4, !tbaa !12
  %988 = load ptr, ptr %38, align 8, !tbaa !5
  %989 = load i64, ptr %58, align 8, !tbaa !9
  %990 = getelementptr inbounds %struct.complex, ptr %988, i64 %989
  %991 = getelementptr inbounds %struct.complex, ptr %990, i32 0, i32 1
  %992 = load float, ptr %991, align 4, !tbaa !19
  %993 = fmul float %987, %992
  %994 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  store float %993, ptr %994, align 4, !tbaa !19
  %995 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  %996 = load float, ptr %995, align 4, !tbaa !17
  %997 = load ptr, ptr %38, align 8, !tbaa !5
  %998 = load i64, ptr %56, align 8, !tbaa !9
  %999 = getelementptr inbounds %struct.complex, ptr %997, i64 %998
  %1000 = getelementptr inbounds %struct.complex, ptr %999, i32 0, i32 0
  store float %996, ptr %1000, align 4, !tbaa !17
  %1001 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  %1002 = load float, ptr %1001, align 4, !tbaa !19
  %1003 = load ptr, ptr %38, align 8, !tbaa !5
  %1004 = load i64, ptr %56, align 8, !tbaa !9
  %1005 = getelementptr inbounds %struct.complex, ptr %1003, i64 %1004
  %1006 = getelementptr inbounds %struct.complex, ptr %1005, i32 0, i32 1
  store float %1002, ptr %1006, align 4, !tbaa !19
  br label %1007

1007:                                             ; preds = %961
  %1008 = load i64, ptr %62, align 8, !tbaa !9
  %1009 = add nsw i64 %1008, 1
  store i64 %1009, ptr %62, align 8, !tbaa !9
  br label %957, !llvm.loop !27

1010:                                             ; preds = %957
  br label %1011

1011:                                             ; preds = %1010
  %1012 = load i64, ptr %63, align 8, !tbaa !9
  %1013 = add nsw i64 %1012, 1
  store i64 %1013, ptr %63, align 8, !tbaa !9
  br label %950, !llvm.loop !28

1014:                                             ; preds = %950
  %1015 = load ptr, ptr %27, align 8, !tbaa !5
  %1016 = load i64, ptr %1015, align 8, !tbaa !9
  store i64 %1016, ptr %54, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %1017

1017:                                             ; preds = %1028, %1014
  %1018 = load i64, ptr %63, align 8, !tbaa !9
  %1019 = load i64, ptr %54, align 8, !tbaa !9
  %1020 = icmp sle i64 %1018, %1019
  br i1 %1020, label %1021, label %1031

1021:                                             ; preds = %1017
  %1022 = load float, ptr %75, align 4, !tbaa !12
  %1023 = load ptr, ptr %41, align 8, !tbaa !5
  %1024 = load i64, ptr %63, align 8, !tbaa !9
  %1025 = getelementptr inbounds float, ptr %1023, i64 %1024
  %1026 = load float, ptr %1025, align 4, !tbaa !12
  %1027 = fdiv float %1026, %1022
  store float %1027, ptr %1025, align 4, !tbaa !12
  br label %1028

1028:                                             ; preds = %1021
  %1029 = load i64, ptr %63, align 8, !tbaa !9
  %1030 = add nsw i64 %1029, 1
  store i64 %1030, ptr %63, align 8, !tbaa !9
  br label %1017, !llvm.loop !29

1031:                                             ; preds = %1017
  br label %1032

1032:                                             ; preds = %1031, %944
  br label %1033

1033:                                             ; preds = %1032, %943
  %1034 = load ptr, ptr %40, align 8, !tbaa !5
  %1035 = load float, ptr %1034, align 4, !tbaa !12
  %1036 = fpext float %1035 to double
  %1037 = call double @slamch_(ptr noundef @.str.12)
  %1038 = fcmp olt double %1036, %1037
  br i1 %1038, label %1039, label %1044

1039:                                             ; preds = %1033
  %1040 = load ptr, ptr %26, align 8, !tbaa !5
  %1041 = load i64, ptr %1040, align 8, !tbaa !9
  %1042 = add nsw i64 %1041, 1
  %1043 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 %1042, ptr %1043, align 8, !tbaa !9
  br label %1044

1044:                                             ; preds = %1039, %1033
  %1045 = load float, ptr %79, align 4, !tbaa !12
  %1046 = load ptr, ptr %44, align 8, !tbaa !5
  %1047 = getelementptr inbounds float, ptr %1046, i64 1
  store float %1045, ptr %1047, align 4, !tbaa !12
  store i32 0, ptr %23, align 4
  store i32 1, ptr %80, align 4
  br label %1048

1048:                                             ; preds = %1044, %730, %466
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 1, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  %1049 = load i32, ptr %23, align 4
  ret i32 %1049
}

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

declare i32 @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 double @clantr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @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 i32 @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 = !{!"long", !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 noundef i32 @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 i64, align 8
  %24 = alloca float, align 4
  %25 = alloca [1 x i8], align 1
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca i64, align 8
  %29 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, 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 8, 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 i64, ptr %13, align 8, !tbaa !5
  %33 = xor i64 %32, -1
  %34 = getelementptr inbounds %struct.complex, ptr %12, i64 %33
  %35 = load i64, ptr %15, align 8, !tbaa !5
  %36 = xor i64 %35, -1
  %37 = getelementptr inbounds %struct.complex, ptr %14, i64 %36
  %38 = getelementptr inbounds i8, ptr %17, i64 -4
  store i64 0, ptr %21, align 8, !tbaa !5
  %39 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %40 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %41 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %42 = icmp ne i64 %39, 0
  %43 = icmp ne i64 %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 %63

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

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

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

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

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

63:                                               ; preds = %.thread, %56
  %.0396458 = phi i64 [ 0, %.thread ], [ %51, %56 ]
  %.0398456 = phi float [ undef, %.thread ], [ %60, %56 ]
  %.0400455 = phi i64 [ 0, %.thread ], [ %58, %56 ]
  %.0402453 = phi float [ undef, %.thread ], [ %61, %56 ]
  %.not422 = icmp eq i64 %41, 0
  br i1 %.not422, label %64, label %68

64:                                               ; preds = %63
  %65 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not423 = icmp eq i64 %65, 0
  br i1 %.not423, label %66, label %68

66:                                               ; preds = %64
  %67 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #4
  %.not424 = icmp eq i64 %67, 0
  br i1 %.not424, label %.thread465.sink.split, label %68

68:                                               ; preds = %66, %64, %63
  %69 = load i64, ptr %2, align 8, !tbaa !5
  %70 = icmp slt i64 %69, 0
  br i1 %70, label %.thread465.sink.split, label %71

71:                                               ; preds = %68
  %72 = load i64, ptr %3, align 8, !tbaa !5
  %73 = icmp slt i64 %72, 0
  br i1 %73, label %.thread465.sink.split, label %74

74:                                               ; preds = %71
  %75 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %69, i64 1)
  %76 = icmp slt i64 %75, %spec.select
  br i1 %76, label %.thread465.sink.split, label %77

77:                                               ; preds = %74
  %78 = load i64, ptr %7, align 8, !tbaa !5
  %79 = icmp slt i64 %78, %spec.select
  br i1 %79, label %.thread465.sink.split, label %80

80:                                               ; preds = %77
  %81 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %82 = icmp eq i64 %81, 0
  %83 = icmp ne i64 %.0396458, 0
  %or.cond5 = select i1 %82, i1 true, i1 %83
  %84 = icmp ne i64 %.0400455, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %84
  br i1 %or.cond7, label %87, label %85

85:                                               ; preds = %80
  %86 = tail call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str) #4
  %.not425 = icmp eq i64 %86, 0
  br i1 %.not425, label %.thread465.sink.split, label %..thread460_crit_edge

..thread460_crit_edge:                            ; preds = %85
  %.pr.pre = load i64, ptr %21, align 8, !tbaa !5
  br label %.thread460

87:                                               ; preds = %80
  br i1 %83, label %88, label %120

88:                                               ; preds = %87
  %89 = load i64, ptr %2, align 8, !tbaa !5
  %.not426474 = icmp slt i64 %89, 1
  br i1 %.not426474, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %88
  %xtraiter = and i64 %89, 1
  %90 = icmp eq i64 %89, 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, 9223372036854775806
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0403477 = phi float [ 0.000000e+00, %.lr.ph.preheader.new ], [ %102, %.lr.ph ]
  %.0405476 = phi float [ %.0402453, %.lr.ph.preheader.new ], [ %100, %.lr.ph ]
  %.0407475 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %103, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %91 = getelementptr inbounds float, ptr %30, i64 %.0407475
  %92 = load float, ptr %91, align 4, !tbaa !10
  %93 = fcmp ole float %.0405476, %92
  %94 = select i1 %93, float %.0405476, float %92
  %95 = fcmp oge float %.0403477, %92
  %96 = select i1 %95, float %.0403477, float %92
  %97 = getelementptr float, ptr %10, i64 %.0407475
  %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
  %103 = add nuw i64 %.0407475, 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
  %.lcssa734.ph = phi float [ poison, %.lr.ph.preheader ], [ %100, %.lr.ph ]
  %.lcssa733.ph = phi float [ poison, %.lr.ph.preheader ], [ %102, %.lr.ph ]
  %.0403477.unr = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %102, %.lr.ph ]
  %.0405476.unr = phi float [ %.0402453, %.lr.ph.preheader ], [ %100, %.lr.ph ]
  %.0407475.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %103, %.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
  %104 = getelementptr inbounds float, ptr %30, i64 %.0407475.unr
  %105 = load float, ptr %104, align 4, !tbaa !10
  %106 = fcmp ole float %.0405476.unr, %105
  %107 = select i1 %106, float %.0405476.unr, float %105
  %108 = fcmp oge float %.0403477.unr, %105
  %109 = select i1 %108, float %.0403477.unr, float %105
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %88
  %.0405.lcssa = phi float [ %.0402453, %88 ], [ %.lcssa734.ph, %._crit_edge.loopexit.unr-lcssa ], [ %107, %.lr.ph.epil ]
  %.0403.lcssa = phi float [ 0.000000e+00, %88 ], [ %.lcssa733.ph, %._crit_edge.loopexit.unr-lcssa ], [ %109, %.lr.ph.epil ]
  %110 = fcmp ugt float %.0405.lcssa, 0.000000e+00
  br i1 %110, label %111, label %.thread465.sink.split

111:                                              ; preds = %._crit_edge
  %112 = icmp sgt i64 %89, 0
  br i1 %112, label %113, label %119

113:                                              ; preds = %111
  %114 = fcmp oge float %.0405.lcssa, %.0398456
  %115 = select i1 %114, float %.0405.lcssa, float %.0398456
  %116 = fcmp ole float %.0403.lcssa, %.0402453
  %117 = select i1 %116, float %.0403.lcssa, float %.0402453
  %118 = fdiv float %115, %117
  store float %118, ptr %29, align 4, !tbaa !10
  br label %120

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

120:                                              ; preds = %119, %113, %87
  %.pr.pre560.pr = load i64, ptr %21, align 8, !tbaa !5
  br i1 %84, label %121, label %.thread460

121:                                              ; preds = %120
  %122 = icmp eq i64 %.pr.pre560.pr, 0
  br i1 %122, label %123, label %.thread465

123:                                              ; preds = %121
  %124 = load i64, ptr %2, align 8, !tbaa !5
  %.not427479 = icmp slt i64 %124, 1
  br i1 %.not427479, label %._crit_edge485, label %.lr.ph484.preheader

.lr.ph484.preheader:                              ; preds = %123
  %xtraiter737 = and i64 %124, 1
  %125 = icmp eq i64 %124, 1
  br i1 %125, label %._crit_edge485.loopexit.unr-lcssa, label %.lr.ph484.preheader.new

.lr.ph484.preheader.new:                          ; preds = %.lr.ph484.preheader
  %unroll_iter741 = and i64 %124, 9223372036854775806
  br label %.lr.ph484

.lr.ph484:                                        ; preds = %.lr.ph484, %.lr.ph484.preheader.new
  %.1404482 = phi float [ 0.000000e+00, %.lr.ph484.preheader.new ], [ %137, %.lr.ph484 ]
  %.1406481 = phi float [ %.0402453, %.lr.ph484.preheader.new ], [ %135, %.lr.ph484 ]
  %.1408480 = phi i64 [ 1, %.lr.ph484.preheader.new ], [ %138, %.lr.ph484 ]
  %niter742 = phi i64 [ 0, %.lr.ph484.preheader.new ], [ %niter742.next.1, %.lr.ph484 ]
  %126 = getelementptr inbounds float, ptr %31, i64 %.1408480
  %127 = load float, ptr %126, align 4, !tbaa !10
  %128 = fcmp ole float %.1406481, %127
  %129 = select i1 %128, float %.1406481, float %127
  %130 = fcmp oge float %.1404482, %127
  %131 = select i1 %130, float %.1404482, float %127
  %132 = getelementptr float, ptr %11, i64 %.1408480
  %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
  %138 = add nuw i64 %.1408480, 2
  %niter742.next.1 = add i64 %niter742, 2
  %niter742.ncmp.1 = icmp eq i64 %niter742.next.1, %unroll_iter741
  br i1 %niter742.ncmp.1, label %._crit_edge485.loopexit.unr-lcssa, label %.lr.ph484, !llvm.loop !14

._crit_edge485.loopexit.unr-lcssa:                ; preds = %.lr.ph484, %.lr.ph484.preheader
  %.lcssa732.ph = phi float [ poison, %.lr.ph484.preheader ], [ %135, %.lr.ph484 ]
  %.lcssa.ph = phi float [ poison, %.lr.ph484.preheader ], [ %137, %.lr.ph484 ]
  %.1404482.unr = phi float [ 0.000000e+00, %.lr.ph484.preheader ], [ %137, %.lr.ph484 ]
  %.1406481.unr = phi float [ %.0402453, %.lr.ph484.preheader ], [ %135, %.lr.ph484 ]
  %.1408480.unr = phi i64 [ 1, %.lr.ph484.preheader ], [ %138, %.lr.ph484 ]
  %lcmp.mod738.not = icmp eq i64 %xtraiter737, 0
  br i1 %lcmp.mod738.not, label %._crit_edge485, label %.lr.ph484.epil

.lr.ph484.epil:                                   ; preds = %._crit_edge485.loopexit.unr-lcssa
  %139 = getelementptr inbounds float, ptr %31, i64 %.1408480.unr
  %140 = load float, ptr %139, align 4, !tbaa !10
  %141 = fcmp ole float %.1406481.unr, %140
  %142 = select i1 %141, float %.1406481.unr, float %140
  %143 = fcmp oge float %.1404482.unr, %140
  %144 = select i1 %143, float %.1404482.unr, float %140
  br label %._crit_edge485

._crit_edge485:                                   ; preds = %.lr.ph484.epil, %._crit_edge485.loopexit.unr-lcssa, %123
  %.1406.lcssa = phi float [ %.0402453, %123 ], [ %.lcssa732.ph, %._crit_edge485.loopexit.unr-lcssa ], [ %142, %.lr.ph484.epil ]
  %.1404.lcssa = phi float [ 0.000000e+00, %123 ], [ %.lcssa.ph, %._crit_edge485.loopexit.unr-lcssa ], [ %144, %.lr.ph484.epil ]
  %145 = fcmp ugt float %.1406.lcssa, 0.000000e+00
  br i1 %145, label %146, label %.thread465.sink.split

146:                                              ; preds = %._crit_edge485
  %147 = icmp sgt i64 %124, 0
  br i1 %147, label %148, label %154

148:                                              ; preds = %146
  %149 = fcmp oge float %.1406.lcssa, %.0398456
  %150 = select i1 %149, float %.1406.lcssa, float %.0398456
  %151 = fcmp ole float %.1404.lcssa, %.0402453
  %152 = select i1 %151, float %.1404.lcssa, float %.0402453
  %153 = fdiv float %150, %152
  store float %153, ptr %27, align 4, !tbaa !10
  br label %.thread460.thread

154:                                              ; preds = %146
  store float 1.000000e+00, ptr %27, align 4, !tbaa !10
  br label %.thread460.thread

.thread460:                                       ; preds = %..thread460_crit_edge, %120
  %.pr463.pr = phi i64 [ %.pr.pre, %..thread460_crit_edge ], [ %.pr.pre560.pr, %120 ]
  %155 = icmp eq i64 %.pr463.pr, 0
  br i1 %155, label %.thread460.thread, label %.thread465

.thread460.thread:                                ; preds = %148, %154, %.thread460
  %156 = load i64, ptr %13, align 8, !tbaa !5
  %157 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select447 = tail call i64 @llvm.smax.i64(i64 %157, i64 1)
  %158 = icmp slt i64 %156, %spec.select447
  br i1 %158, label %.thread465.sink.split, label %159

159:                                              ; preds = %.thread460.thread
  %160 = load i64, ptr %15, align 8, !tbaa !5
  %161 = icmp slt i64 %160, %spec.select447
  br i1 %161, label %.thread465.sink.split, label %.thread461

.thread465.sink.split:                            ; preds = %159, %.thread460.thread, %._crit_edge485, %._crit_edge, %85, %77, %74, %71, %68, %66, %56
  %.sink = phi i64 [ -1, %56 ], [ -2, %66 ], [ -3, %68 ], [ -4, %71 ], [ -6, %74 ], [ -8, %77 ], [ -10, %85 ], [ -11, %._crit_edge ], [ -12, %._crit_edge485 ], [ -14, %.thread460.thread ], [ -16, %159 ]
  store i64 %.sink, ptr %21, align 8, !tbaa !5
  br label %.thread465

.thread465:                                       ; preds = %.thread465.sink.split, %121, %.thread460
  %162 = phi i64 [ %.pr463.pr, %.thread460 ], [ %.pr.pre560.pr, %121 ], [ %.sink, %.thread465.sink.split ]
  %163 = sub nsw i64 0, %162
  store i64 %163, ptr %23, align 8, !tbaa !5
  %164 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %23) #4
  br label %437

.thread461:                                       ; preds = %159
  br i1 %43, label %165, label %185

165:                                              ; preds = %.thread461
  %166 = call i32 @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
  %167 = load i64, ptr %28, align 8, !tbaa !5
  %168 = icmp eq i64 %167, 0
  br i1 %168, label %169, label %185

169:                                              ; preds = %165
  %170 = call i32 @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
  %171 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.2) #4
  %.not429 = icmp eq i64 %171, 0
  br i1 %.not429, label %172, label %175

172:                                              ; preds = %169
  %173 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %174 = icmp ne i64 %173, 0
  br label %175

175:                                              ; preds = %172, %169
  %176 = phi i1 [ true, %169 ], [ %174, %172 ]
  %177 = zext i1 %176 to i64
  %178 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.4) #4
  %.not430 = icmp eq i64 %178, 0
  br i1 %.not430, label %179, label %182

179:                                              ; preds = %175
  %180 = call i64 @lsame_(ptr noundef %9, ptr noundef nonnull @.str.3) #4
  %181 = icmp ne i64 %180, 0
  br label %182

182:                                              ; preds = %179, %175
  %183 = phi i1 [ true, %175 ], [ %181, %179 ]
  %184 = zext i1 %183 to i64
  br label %185

185:                                              ; preds = %165, %182, %.thread461
  %.1401 = phi i64 [ %184, %182 ], [ %.0400455, %165 ], [ %.0400455, %.thread461 ]
  %.1397 = phi i64 [ %177, %182 ], [ %.0396458, %165 ], [ %.0396458, %.thread461 ]
  br i1 %.not422, label %235, label %186

186:                                              ; preds = %185
  %.not435 = icmp eq i64 %.1397, 0
  br i1 %.not435, label %.loopexit472, label %187

187:                                              ; preds = %186
  %188 = load i64, ptr %3, align 8, !tbaa !5
  %.not436493 = icmp slt i64 %188, 1
  br i1 %.not436493, label %.loopexit472, label %.lr.ph496

.lr.ph496:                                        ; preds = %187
  %189 = load i64, ptr %2, align 8, !tbaa !5
  %.not445488 = icmp slt i64 %189, 1
  br i1 %.not445488, label %.loopexit472, label %.lr.ph491.preheader

.lr.ph491.preheader:                              ; preds = %.lr.ph496
  %190 = add nsw i64 %189, -1
  %191 = shl i64 %32, 3
  %192 = add nuw i64 %188, 2305843009213693951
  %193 = mul i64 %32, %192
  %194 = add i64 %193, %189
  %195 = shl i64 %194, 3
  %scevgep586 = getelementptr i8, ptr %12, i64 %195
  %196 = shl i64 %189, 2
  %scevgep587 = getelementptr i8, ptr %10, i64 %196
  %min.iters.check = icmp ult i64 %189, 12
  %mul.result = shl i64 %190, 3
  %mul.result584 = shl i64 %190, 3
  %mul.overflow585 = icmp ugt i64 %190, 2305843009213693951
  %bound0 = icmp ugt ptr %scevgep587, %12
  %bound1 = icmp ugt ptr %scevgep586, %10
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %32, 1152921504606846976
  %stride.check = icmp ne i64 %.mask, 0
  %197 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %189, 4611686018427387902
  %ind.end = or i64 %189, 1
  %cmp.n = icmp eq i64 %189, %n.vec
  %xtraiter743 = and i64 %189, 1
  %lcmp.mod744.not = icmp eq i64 %xtraiter743, 0
  br label %.lr.ph491

.lr.ph491:                                        ; preds = %.lr.ph491.preheader, %._crit_edge492
  %indvar = phi i64 [ 0, %.lr.ph491.preheader ], [ %indvar.next, %._crit_edge492 ]
  %.2494 = phi i64 [ 1, %.lr.ph491.preheader ], [ %234, %._crit_edge492 ]
  %198 = mul nsw i64 %.2494, %32
  %invariant.gep = getelementptr %struct.complex, ptr %34, i64 %198
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph491
  %199 = mul i64 %191, %indvar
  %scevgep582 = getelementptr i8, ptr %12, i64 %199
  %200 = or disjoint i64 %199, 4
  %scevgep = getelementptr i8, ptr %12, i64 %200
  %201 = getelementptr i8, ptr %scevgep, i64 %mul.result
  %202 = icmp ult ptr %201, %scevgep
  %203 = getelementptr i8, ptr %scevgep582, i64 %mul.result584
  %204 = icmp ult ptr %203, %scevgep582
  %205 = or i1 %204, %mul.overflow585
  %206 = or i1 %202, %205
  %brmerge = select i1 %206, i1 true, i1 %197
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %vector.scevcheck, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %vector.scevcheck ]
  %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_edge492, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %vector.scevcheck, %middle.block, %.lr.ph491
  %.0409489.ph = phi i64 [ 1, %vector.scevcheck ], [ 1, %.lr.ph491 ], [ %ind.end, %middle.block ]
  br i1 %lcmp.mod744.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %212 = getelementptr inbounds float, ptr %30, i64 %.0409489.ph
  %213 = load float, ptr %212, align 4, !tbaa !10
  %gep.prol = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0409489.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
  %218 = add nuw nsw i64 %.0409489.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %.0409489.unr = phi i64 [ %.0409489.ph, %scalar.ph.preheader ], [ %218, %scalar.ph.prol ]
  %219 = icmp eq i64 %189, %.0409489.ph
  br i1 %219, label %._crit_edge492, label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %.0409489 = phi i64 [ %233, %scalar.ph ], [ %.0409489.unr, %scalar.ph.prol.loopexit ]
  %220 = getelementptr inbounds float, ptr %30, i64 %.0409489
  %221 = load float, ptr %220, align 4, !tbaa !10
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %.0409489
  %222 = load <2 x float>, ptr %gep, align 4, !tbaa !10
  %223 = insertelement <2 x float> poison, float %221, i64 0
  %224 = shufflevector <2 x float> %223, <2 x float> poison, <2 x i32> zeroinitializer
  %225 = fmul <2 x float> %224, %222
  store <2 x float> %225, ptr %gep, align 4, !tbaa !10
  %226 = add nuw i64 %.0409489, 1
  %227 = getelementptr float, ptr %10, i64 %.0409489
  %228 = load float, ptr %227, align 4, !tbaa !10
  %gep.1 = getelementptr %struct.complex, ptr %invariant.gep, i64 %226
  %229 = load <2 x float>, ptr %gep.1, align 4, !tbaa !10
  %230 = insertelement <2 x float> poison, float %228, i64 0
  %231 = shufflevector <2 x float> %230, <2 x float> poison, <2 x i32> zeroinitializer
  %232 = fmul <2 x float> %231, %229
  store <2 x float> %232, ptr %gep.1, align 4, !tbaa !10
  %233 = add nuw i64 %.0409489, 2
  %exitcond550.not.1 = icmp eq i64 %226, %189
  br i1 %exitcond550.not.1, label %._crit_edge492, label %scalar.ph, !llvm.loop !21

._crit_edge492:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %234 = add nuw i64 %.2494, 1
  %exitcond551.not = icmp eq i64 %.2494, %188
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond551.not, label %.loopexit472, label %.lr.ph491, !llvm.loop !22

235:                                              ; preds = %185
  %.not432 = icmp eq i64 %.1401, 0
  br i1 %.not432, label %.loopexit472, label %236

236:                                              ; preds = %235
  %237 = load i64, ptr %3, align 8, !tbaa !5
  %.not433504 = icmp slt i64 %237, 1
  br i1 %.not433504, label %.loopexit472, label %.lr.ph507

.lr.ph507:                                        ; preds = %236
  %238 = load i64, ptr %2, align 8, !tbaa !5
  %.not434497 = icmp slt i64 %238, 1
  br i1 %.not434497, label %.loopexit472, label %.lr.ph500.preheader

.lr.ph500.preheader:                              ; preds = %.lr.ph507
  %239 = add nsw i64 %238, -1
  %240 = shl i64 %32, 3
  %241 = add nuw i64 %237, 2305843009213693951
  %242 = mul i64 %32, %241
  %243 = add i64 %242, %238
  %244 = shl i64 %243, 3
  %scevgep601 = getelementptr i8, ptr %12, i64 %244
  %245 = shl i64 %238, 2
  %scevgep602 = getelementptr i8, ptr %11, i64 %245
  %min.iters.check609 = icmp ult i64 %238, 12
  %mul.result594 = shl i64 %239, 3
  %mul.result598 = shl i64 %239, 3
  %mul.overflow599 = icmp ugt i64 %239, 2305843009213693951
  %bound0603 = icmp ugt ptr %scevgep602, %12
  %bound1604 = icmp ugt ptr %scevgep601, %11
  %found.conflict605 = and i1 %bound0603, %bound1604
  %.mask727 = and i64 %32, 1152921504606846976
  %stride.check606 = icmp ne i64 %.mask727, 0
  %246 = or i1 %found.conflict605, %stride.check606
  %n.vec612 = and i64 %238, 4611686018427387902
  %ind.end613 = or i64 %238, 1
  %cmp.n624 = icmp eq i64 %238, %n.vec612
  %xtraiter745 = and i64 %238, 1
  %lcmp.mod746.not = icmp eq i64 %xtraiter745, 0
  br label %.lr.ph500

.lr.ph500:                                        ; preds = %.lr.ph500.preheader, %._crit_edge501
  %indvar590 = phi i64 [ 0, %.lr.ph500.preheader ], [ %indvar.next591, %._crit_edge501 ]
  %.3505 = phi i64 [ 1, %.lr.ph500.preheader ], [ %283, %._crit_edge501 ]
  %247 = mul nsw i64 %.3505, %32
  %invariant.gep502 = getelementptr %struct.complex, ptr %34, i64 %247
  br i1 %min.iters.check609, label %scalar.ph608.preheader, label %vector.scevcheck589

vector.scevcheck589:                              ; preds = %.lr.ph500
  %248 = mul i64 %240, %indvar590
  %scevgep596 = getelementptr i8, ptr %12, i64 %248
  %249 = or disjoint i64 %248, 4
  %scevgep592 = getelementptr i8, ptr %12, i64 %249
  %250 = getelementptr i8, ptr %scevgep592, i64 %mul.result594
  %251 = icmp ult ptr %250, %scevgep592
  %252 = getelementptr i8, ptr %scevgep596, i64 %mul.result598
  %253 = icmp ult ptr %252, %scevgep596
  %254 = or i1 %253, %mul.overflow599
  %255 = or i1 %251, %254
  %brmerge757 = select i1 %255, i1 true, i1 %246
  br i1 %brmerge757, label %scalar.ph608.preheader, label %vector.body615

vector.body615:                                   ; preds = %vector.scevcheck589, %vector.body615
  %index616 = phi i64 [ %index.next623, %vector.body615 ], [ 0, %vector.scevcheck589 ]
  %offset.idx617 = or disjoint i64 %index616, 1
  %256 = getelementptr float, ptr %11, i64 %index616
  %wide.load618 = load <2 x float>, ptr %256, align 4, !tbaa !10, !alias.scope !23
  %257 = getelementptr %struct.complex, ptr %invariant.gep502, i64 %offset.idx617
  %258 = load <4 x float>, ptr %257, align 4, !tbaa !10
  %259 = shufflevector <2 x float> %wide.load618, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec622 = fmul <4 x float> %259, %258
  store <4 x float> %interleaved.vec622, ptr %257, align 4, !tbaa !10
  %index.next623 = add nuw i64 %index616, 2
  %260 = icmp eq i64 %index.next623, %n.vec612
  br i1 %260, label %middle.block607, label %vector.body615, !llvm.loop !26

middle.block607:                                  ; preds = %vector.body615
  br i1 %cmp.n624, label %._crit_edge501, label %scalar.ph608.preheader

scalar.ph608.preheader:                           ; preds = %vector.scevcheck589, %middle.block607, %.lr.ph500
  %.1410498.ph = phi i64 [ 1, %vector.scevcheck589 ], [ 1, %.lr.ph500 ], [ %ind.end613, %middle.block607 ]
  br i1 %lcmp.mod746.not, label %scalar.ph608.prol.loopexit, label %scalar.ph608.prol

scalar.ph608.prol:                                ; preds = %scalar.ph608.preheader
  %261 = getelementptr inbounds float, ptr %31, i64 %.1410498.ph
  %262 = load float, ptr %261, align 4, !tbaa !10
  %gep503.prol = getelementptr %struct.complex, ptr %invariant.gep502, i64 %.1410498.ph
  %263 = load <2 x float>, ptr %gep503.prol, align 4, !tbaa !10
  %264 = insertelement <2 x float> poison, float %262, i64 0
  %265 = shufflevector <2 x float> %264, <2 x float> poison, <2 x i32> zeroinitializer
  %266 = fmul <2 x float> %265, %263
  store <2 x float> %266, ptr %gep503.prol, align 4, !tbaa !10
  %267 = add nuw nsw i64 %.1410498.ph, 1
  br label %scalar.ph608.prol.loopexit

scalar.ph608.prol.loopexit:                       ; preds = %scalar.ph608.prol, %scalar.ph608.preheader
  %.1410498.unr = phi i64 [ %.1410498.ph, %scalar.ph608.preheader ], [ %267, %scalar.ph608.prol ]
  %268 = icmp eq i64 %238, %.1410498.ph
  br i1 %268, label %._crit_edge501, label %scalar.ph608

scalar.ph608:                                     ; preds = %scalar.ph608.prol.loopexit, %scalar.ph608
  %.1410498 = phi i64 [ %282, %scalar.ph608 ], [ %.1410498.unr, %scalar.ph608.prol.loopexit ]
  %269 = getelementptr inbounds float, ptr %31, i64 %.1410498
  %270 = load float, ptr %269, align 4, !tbaa !10
  %gep503 = getelementptr %struct.complex, ptr %invariant.gep502, i64 %.1410498
  %271 = load <2 x float>, ptr %gep503, align 4, !tbaa !10
  %272 = insertelement <2 x float> poison, float %270, i64 0
  %273 = shufflevector <2 x float> %272, <2 x float> poison, <2 x i32> zeroinitializer
  %274 = fmul <2 x float> %273, %271
  store <2 x float> %274, ptr %gep503, align 4, !tbaa !10
  %275 = add nuw i64 %.1410498, 1
  %276 = getelementptr float, ptr %11, i64 %.1410498
  %277 = load float, ptr %276, align 4, !tbaa !10
  %gep503.1 = getelementptr %struct.complex, ptr %invariant.gep502, i64 %275
  %278 = load <2 x float>, ptr %gep503.1, align 4, !tbaa !10
  %279 = insertelement <2 x float> poison, float %277, i64 0
  %280 = shufflevector <2 x float> %279, <2 x float> poison, <2 x i32> zeroinitializer
  %281 = fmul <2 x float> %280, %278
  store <2 x float> %281, ptr %gep503.1, align 4, !tbaa !10
  %282 = add nuw i64 %.1410498, 2
  %exitcond552.not.1 = icmp eq i64 %275, %238
  br i1 %exitcond552.not.1, label %._crit_edge501, label %scalar.ph608, !llvm.loop !27

._crit_edge501:                                   ; preds = %scalar.ph608.prol.loopexit, %scalar.ph608, %middle.block607
  %283 = add nuw i64 %.3505, 1
  %exitcond553.not = icmp eq i64 %.3505, %237
  %indvar.next591 = add i64 %indvar590, 1
  br i1 %exitcond553.not, label %.loopexit472, label %.lr.ph500, !llvm.loop !28

.loopexit472:                                     ; preds = %._crit_edge492, %._crit_edge501, %.lr.ph507, %.lr.ph496, %187, %236, %235, %186
  br i1 %or.cond, label %284, label %299

284:                                              ; preds = %.loopexit472
  %285 = call i32 @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
  %286 = 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
  %287 = load i64, ptr %21, align 8, !tbaa !5
  %288 = icmp sgt i64 %287, 0
  br i1 %288, label %289, label %299

289:                                              ; preds = %284
  %290 = call double @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
  %291 = fptrunc double %290 to float
  %292 = fcmp oeq float %291, 0.000000e+00
  br i1 %292, label %298, label %293

293:                                              ; preds = %289
  %294 = call double @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
  %295 = fpext float %291 to double
  %296 = fdiv double %294, %295
  %297 = fptrunc double %296 to float
  br label %298

298:                                              ; preds = %289, %293
  %.0 = phi float [ %297, %293 ], [ 1.000000e+00, %289 ]
  store float %.0, ptr %20, align 4, !tbaa !10
  store float 0.000000e+00, ptr %16, align 4, !tbaa !10
  br label %437

299:                                              ; preds = %284, %.loopexit472
  %. = select i1 %.not422, i8 73, i8 49
  store i8 %., ptr %25, align 1, !tbaa !9
  %300 = call double @clange_(ptr noundef nonnull %25, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %20) #4
  %301 = fptrunc double %300 to float
  store float %301, ptr %26, align 4, !tbaa !10
  %302 = call double @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
  %303 = fptrunc double %302 to float
  %304 = fcmp oeq float %303, 0.000000e+00
  br i1 %304, label %310, label %305

305:                                              ; preds = %299
  %306 = call double @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
  %307 = fpext float %303 to double
  %308 = fdiv double %306, %307
  %309 = fptrunc double %308 to float
  br label %310

310:                                              ; preds = %299, %305
  %.1 = phi float [ %309, %305 ], [ 1.000000e+00, %299 ]
  %311 = call i32 @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
  %312 = call i32 @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
  %313 = 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
  %314 = call i32 @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 %.not422, label %372, label %315

315:                                              ; preds = %310
  %.not441 = icmp eq i64 %.1401, 0
  br i1 %.not441, label %.loopexit, label %316

316:                                              ; preds = %315
  %317 = load i64, ptr %3, align 8, !tbaa !5
  %.not442515 = icmp slt i64 %317, 1
  br i1 %.not442515, label %.loopexit, label %.lr.ph518

.lr.ph518:                                        ; preds = %316
  %318 = load i64, ptr %2, align 8, !tbaa !5
  %.not444508 = icmp slt i64 %318, 1
  br i1 %.not444508, label %.lr.ph523, label %.lr.ph511.preheader

.lr.ph511.preheader:                              ; preds = %.lr.ph518
  %319 = add nsw i64 %318, -1
  %320 = shl i64 %35, 3
  %321 = add nuw i64 %317, 2305843009213693951
  %322 = mul i64 %35, %321
  %323 = add i64 %322, %318
  %324 = shl i64 %323, 3
  %scevgep637 = getelementptr i8, ptr %14, i64 %324
  %325 = shl i64 %318, 2
  %scevgep638 = getelementptr i8, ptr %11, i64 %325
  %min.iters.check645 = icmp ult i64 %318, 12
  %mul.result630 = shl i64 %319, 3
  %mul.result634 = shl i64 %319, 3
  %mul.overflow635 = icmp ugt i64 %319, 2305843009213693951
  %bound0639 = icmp ugt ptr %scevgep638, %14
  %bound1640 = icmp ugt ptr %scevgep637, %11
  %found.conflict641 = and i1 %bound0639, %bound1640
  %.mask728 = and i64 %35, 1152921504606846976
  %stride.check642 = icmp ne i64 %.mask728, 0
  %326 = or i1 %found.conflict641, %stride.check642
  %n.vec648 = and i64 %318, 4611686018427387902
  %ind.end649 = or i64 %318, 1
  %cmp.n660 = icmp eq i64 %318, %n.vec648
  %xtraiter747 = and i64 %318, 1
  %lcmp.mod748.not = icmp eq i64 %xtraiter747, 0
  br label %.lr.ph511

.lr.ph511:                                        ; preds = %.lr.ph511.preheader, %._crit_edge512
  %indvar626 = phi i64 [ 0, %.lr.ph511.preheader ], [ %indvar.next627, %._crit_edge512 ]
  %.4516 = phi i64 [ 1, %.lr.ph511.preheader ], [ %363, %._crit_edge512 ]
  %327 = mul nsw i64 %.4516, %35
  %invariant.gep513 = getelementptr %struct.complex, ptr %37, i64 %327
  br i1 %min.iters.check645, label %scalar.ph644.preheader, label %vector.scevcheck625

vector.scevcheck625:                              ; preds = %.lr.ph511
  %328 = mul i64 %320, %indvar626
  %scevgep632 = getelementptr i8, ptr %14, i64 %328
  %329 = or disjoint i64 %328, 4
  %scevgep628 = getelementptr i8, ptr %14, i64 %329
  %330 = getelementptr i8, ptr %scevgep628, i64 %mul.result630
  %331 = icmp ult ptr %330, %scevgep628
  %332 = getelementptr i8, ptr %scevgep632, i64 %mul.result634
  %333 = icmp ult ptr %332, %scevgep632
  %334 = or i1 %333, %mul.overflow635
  %335 = or i1 %331, %334
  %brmerge758 = select i1 %335, i1 true, i1 %326
  br i1 %brmerge758, label %scalar.ph644.preheader, label %vector.body651

vector.body651:                                   ; preds = %vector.scevcheck625, %vector.body651
  %index652 = phi i64 [ %index.next659, %vector.body651 ], [ 0, %vector.scevcheck625 ]
  %offset.idx653 = or disjoint i64 %index652, 1
  %336 = getelementptr float, ptr %11, i64 %index652
  %wide.load654 = load <2 x float>, ptr %336, align 4, !tbaa !10, !alias.scope !29
  %337 = getelementptr %struct.complex, ptr %invariant.gep513, i64 %offset.idx653
  %338 = load <4 x float>, ptr %337, align 4, !tbaa !10
  %339 = shufflevector <2 x float> %wide.load654, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec658 = fmul <4 x float> %339, %338
  store <4 x float> %interleaved.vec658, ptr %337, align 4, !tbaa !10
  %index.next659 = add nuw i64 %index652, 2
  %340 = icmp eq i64 %index.next659, %n.vec648
  br i1 %340, label %middle.block643, label %vector.body651, !llvm.loop !32

middle.block643:                                  ; preds = %vector.body651
  br i1 %cmp.n660, label %._crit_edge512, label %scalar.ph644.preheader

scalar.ph644.preheader:                           ; preds = %vector.scevcheck625, %middle.block643, %.lr.ph511
  %.2411509.ph = phi i64 [ 1, %vector.scevcheck625 ], [ 1, %.lr.ph511 ], [ %ind.end649, %middle.block643 ]
  br i1 %lcmp.mod748.not, label %scalar.ph644.prol.loopexit, label %scalar.ph644.prol

scalar.ph644.prol:                                ; preds = %scalar.ph644.preheader
  %341 = getelementptr inbounds float, ptr %31, i64 %.2411509.ph
  %342 = load float, ptr %341, align 4, !tbaa !10
  %gep514.prol = getelementptr %struct.complex, ptr %invariant.gep513, i64 %.2411509.ph
  %343 = load <2 x float>, ptr %gep514.prol, 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 %gep514.prol, align 4, !tbaa !10
  %347 = add nuw nsw i64 %.2411509.ph, 1
  br label %scalar.ph644.prol.loopexit

scalar.ph644.prol.loopexit:                       ; preds = %scalar.ph644.prol, %scalar.ph644.preheader
  %.2411509.unr = phi i64 [ %.2411509.ph, %scalar.ph644.preheader ], [ %347, %scalar.ph644.prol ]
  %348 = icmp eq i64 %318, %.2411509.ph
  br i1 %348, label %._crit_edge512, label %scalar.ph644

scalar.ph644:                                     ; preds = %scalar.ph644.prol.loopexit, %scalar.ph644
  %.2411509 = phi i64 [ %362, %scalar.ph644 ], [ %.2411509.unr, %scalar.ph644.prol.loopexit ]
  %349 = getelementptr inbounds float, ptr %31, i64 %.2411509
  %350 = load float, ptr %349, align 4, !tbaa !10
  %gep514 = getelementptr %struct.complex, ptr %invariant.gep513, i64 %.2411509
  %351 = load <2 x float>, ptr %gep514, align 4, !tbaa !10
  %352 = insertelement <2 x float> poison, float %350, i64 0
  %353 = shufflevector <2 x float> %352, <2 x float> poison, <2 x i32> zeroinitializer
  %354 = fmul <2 x float> %353, %351
  store <2 x float> %354, ptr %gep514, align 4, !tbaa !10
  %355 = add nuw i64 %.2411509, 1
  %356 = getelementptr float, ptr %11, i64 %.2411509
  %357 = load float, ptr %356, align 4, !tbaa !10
  %gep514.1 = getelementptr %struct.complex, ptr %invariant.gep513, i64 %355
  %358 = load <2 x float>, ptr %gep514.1, align 4, !tbaa !10
  %359 = insertelement <2 x float> poison, float %357, i64 0
  %360 = shufflevector <2 x float> %359, <2 x float> poison, <2 x i32> zeroinitializer
  %361 = fmul <2 x float> %360, %358
  store <2 x float> %361, ptr %gep514.1, align 4, !tbaa !10
  %362 = add nuw i64 %.2411509, 2
  %exitcond554.not.1 = icmp eq i64 %355, %318
  br i1 %exitcond554.not.1, label %._crit_edge512, label %scalar.ph644, !llvm.loop !33

._crit_edge512:                                   ; preds = %scalar.ph644.prol.loopexit, %scalar.ph644, %middle.block643
  %363 = add nuw i64 %.4516, 1
  %exitcond555.not = icmp eq i64 %.4516, %317
  %indvar.next627 = add i64 %indvar626, 1
  br i1 %exitcond555.not, label %._crit_edge519, label %.lr.ph511, !llvm.loop !34

._crit_edge519:                                   ; preds = %._crit_edge512
  br i1 %.not442515, label %.loopexit, label %.lr.ph523

.lr.ph523:                                        ; preds = %.lr.ph518, %._crit_edge519
  %364 = load float, ptr %27, align 4, !tbaa !10
  %min.iters.check663 = icmp ult i64 %317, 4
  br i1 %min.iters.check663, label %scalar.ph662.preheader, label %vector.ph664

vector.ph664:                                     ; preds = %.lr.ph523
  %n.vec666 = and i64 %317, 9223372036854775804
  %ind.end667 = or disjoint i64 %n.vec666, 1
  %broadcast.splatinsert = insertelement <4 x float> poison, float %364, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body669

vector.body669:                                   ; preds = %vector.body669, %vector.ph664
  %index670 = phi i64 [ 0, %vector.ph664 ], [ %index.next673, %vector.body669 ]
  %365 = getelementptr float, ptr %17, i64 %index670
  %wide.load672 = load <4 x float>, ptr %365, align 4, !tbaa !10
  %366 = fdiv <4 x float> %wide.load672, %broadcast.splat
  store <4 x float> %366, ptr %365, align 4, !tbaa !10
  %index.next673 = add nuw i64 %index670, 4
  %367 = icmp eq i64 %index.next673, %n.vec666
  br i1 %367, label %middle.block661, label %vector.body669, !llvm.loop !35

middle.block661:                                  ; preds = %vector.body669
  %cmp.n674 = icmp eq i64 %317, %n.vec666
  br i1 %cmp.n674, label %.loopexit, label %scalar.ph662.preheader

scalar.ph662.preheader:                           ; preds = %middle.block661, %.lr.ph523
  %.5521.ph = phi i64 [ 1, %.lr.ph523 ], [ %ind.end667, %middle.block661 ]
  br label %scalar.ph662

scalar.ph662:                                     ; preds = %scalar.ph662.preheader, %scalar.ph662
  %.5521 = phi i64 [ %371, %scalar.ph662 ], [ %.5521.ph, %scalar.ph662.preheader ]
  %368 = getelementptr inbounds float, ptr %38, i64 %.5521
  %369 = load float, ptr %368, align 4, !tbaa !10
  %370 = fdiv float %369, %364
  store float %370, ptr %368, align 4, !tbaa !10
  %371 = add nuw i64 %.5521, 1
  %exitcond556.not = icmp eq i64 %.5521, %317
  br i1 %exitcond556.not, label %.loopexit, label %scalar.ph662, !llvm.loop !36

372:                                              ; preds = %310
  %.not437 = icmp eq i64 %.1397, 0
  br i1 %.not437, label %.loopexit, label %373

373:                                              ; preds = %372
  %374 = load i64, ptr %3, align 8, !tbaa !5
  %.not438531 = icmp slt i64 %374, 1
  br i1 %.not438531, label %.loopexit, label %.lr.ph534

.lr.ph534:                                        ; preds = %373
  %375 = load i64, ptr %2, align 8, !tbaa !5
  %.not440524 = icmp slt i64 %375, 1
  br i1 %.not440524, label %.lr.ph539, label %.lr.ph527.preheader

.lr.ph527.preheader:                              ; preds = %.lr.ph534
  %376 = add nsw i64 %375, -1
  %377 = shl i64 %35, 3
  %378 = add nuw i64 %374, 2305843009213693951
  %379 = mul i64 %35, %378
  %380 = add i64 %379, %375
  %381 = shl i64 %380, 3
  %scevgep687 = getelementptr i8, ptr %14, i64 %381
  %382 = shl i64 %375, 2
  %scevgep688 = getelementptr i8, ptr %10, i64 %382
  %min.iters.check695 = icmp ult i64 %375, 12
  %mul.result680 = shl i64 %376, 3
  %mul.result684 = shl i64 %376, 3
  %mul.overflow685 = icmp ugt i64 %376, 2305843009213693951
  %bound0689 = icmp ugt ptr %scevgep688, %14
  %bound1690 = icmp ugt ptr %scevgep687, %10
  %found.conflict691 = and i1 %bound0689, %bound1690
  %.mask729 = and i64 %35, 1152921504606846976
  %stride.check692 = icmp ne i64 %.mask729, 0
  %383 = or i1 %found.conflict691, %stride.check692
  %n.vec698 = and i64 %375, 4611686018427387902
  %ind.end699 = or i64 %375, 1
  %cmp.n710 = icmp eq i64 %375, %n.vec698
  %xtraiter749 = and i64 %375, 1
  %lcmp.mod750.not = icmp eq i64 %xtraiter749, 0
  br label %.lr.ph527

.lr.ph527:                                        ; preds = %.lr.ph527.preheader, %._crit_edge528
  %indvar676 = phi i64 [ 0, %.lr.ph527.preheader ], [ %indvar.next677, %._crit_edge528 ]
  %.6532 = phi i64 [ 1, %.lr.ph527.preheader ], [ %420, %._crit_edge528 ]
  %384 = mul nsw i64 %.6532, %35
  %invariant.gep529 = getelementptr %struct.complex, ptr %37, i64 %384
  br i1 %min.iters.check695, label %scalar.ph694.preheader, label %vector.scevcheck675

vector.scevcheck675:                              ; preds = %.lr.ph527
  %385 = mul i64 %377, %indvar676
  %scevgep682 = getelementptr i8, ptr %14, i64 %385
  %386 = or disjoint i64 %385, 4
  %scevgep678 = getelementptr i8, ptr %14, i64 %386
  %387 = getelementptr i8, ptr %scevgep678, i64 %mul.result680
  %388 = icmp ult ptr %387, %scevgep678
  %389 = getelementptr i8, ptr %scevgep682, i64 %mul.result684
  %390 = icmp ult ptr %389, %scevgep682
  %391 = or i1 %390, %mul.overflow685
  %392 = or i1 %388, %391
  %brmerge759 = select i1 %392, i1 true, i1 %383
  br i1 %brmerge759, label %scalar.ph694.preheader, label %vector.body701

vector.body701:                                   ; preds = %vector.scevcheck675, %vector.body701
  %index702 = phi i64 [ %index.next709, %vector.body701 ], [ 0, %vector.scevcheck675 ]
  %offset.idx703 = or disjoint i64 %index702, 1
  %393 = getelementptr float, ptr %10, i64 %index702
  %wide.load704 = load <2 x float>, ptr %393, align 4, !tbaa !10, !alias.scope !37
  %394 = getelementptr %struct.complex, ptr %invariant.gep529, i64 %offset.idx703
  %395 = load <4 x float>, ptr %394, align 4, !tbaa !10
  %396 = shufflevector <2 x float> %wide.load704, <2 x float> poison, <4 x i32> <i32 0, i32 0, i32 1, i32 1>
  %interleaved.vec708 = fmul <4 x float> %396, %395
  store <4 x float> %interleaved.vec708, ptr %394, align 4, !tbaa !10
  %index.next709 = add nuw i64 %index702, 2
  %397 = icmp eq i64 %index.next709, %n.vec698
  br i1 %397, label %middle.block693, label %vector.body701, !llvm.loop !40

middle.block693:                                  ; preds = %vector.body701
  br i1 %cmp.n710, label %._crit_edge528, label %scalar.ph694.preheader

scalar.ph694.preheader:                           ; preds = %vector.scevcheck675, %middle.block693, %.lr.ph527
  %.3412525.ph = phi i64 [ 1, %vector.scevcheck675 ], [ 1, %.lr.ph527 ], [ %ind.end699, %middle.block693 ]
  br i1 %lcmp.mod750.not, label %scalar.ph694.prol.loopexit, label %scalar.ph694.prol

scalar.ph694.prol:                                ; preds = %scalar.ph694.preheader
  %398 = getelementptr inbounds float, ptr %30, i64 %.3412525.ph
  %399 = load float, ptr %398, align 4, !tbaa !10
  %gep530.prol = getelementptr %struct.complex, ptr %invariant.gep529, i64 %.3412525.ph
  %400 = load <2 x float>, ptr %gep530.prol, 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 %gep530.prol, align 4, !tbaa !10
  %404 = add nuw nsw i64 %.3412525.ph, 1
  br label %scalar.ph694.prol.loopexit

scalar.ph694.prol.loopexit:                       ; preds = %scalar.ph694.prol, %scalar.ph694.preheader
  %.3412525.unr = phi i64 [ %.3412525.ph, %scalar.ph694.preheader ], [ %404, %scalar.ph694.prol ]
  %405 = icmp eq i64 %375, %.3412525.ph
  br i1 %405, label %._crit_edge528, label %scalar.ph694

scalar.ph694:                                     ; preds = %scalar.ph694.prol.loopexit, %scalar.ph694
  %.3412525 = phi i64 [ %419, %scalar.ph694 ], [ %.3412525.unr, %scalar.ph694.prol.loopexit ]
  %406 = getelementptr inbounds float, ptr %30, i64 %.3412525
  %407 = load float, ptr %406, align 4, !tbaa !10
  %gep530 = getelementptr %struct.complex, ptr %invariant.gep529, i64 %.3412525
  %408 = load <2 x float>, ptr %gep530, align 4, !tbaa !10
  %409 = insertelement <2 x float> poison, float %407, i64 0
  %410 = shufflevector <2 x float> %409, <2 x float> poison, <2 x i32> zeroinitializer
  %411 = fmul <2 x float> %410, %408
  store <2 x float> %411, ptr %gep530, align 4, !tbaa !10
  %412 = add nuw i64 %.3412525, 1
  %413 = getelementptr float, ptr %10, i64 %.3412525
  %414 = load float, ptr %413, align 4, !tbaa !10
  %gep530.1 = getelementptr %struct.complex, ptr %invariant.gep529, i64 %412
  %415 = load <2 x float>, ptr %gep530.1, align 4, !tbaa !10
  %416 = insertelement <2 x float> poison, float %414, i64 0
  %417 = shufflevector <2 x float> %416, <2 x float> poison, <2 x i32> zeroinitializer
  %418 = fmul <2 x float> %417, %415
  store <2 x float> %418, ptr %gep530.1, align 4, !tbaa !10
  %419 = add nuw i64 %.3412525, 2
  %exitcond557.not.1 = icmp eq i64 %412, %375
  br i1 %exitcond557.not.1, label %._crit_edge528, label %scalar.ph694, !llvm.loop !41

._crit_edge528:                                   ; preds = %scalar.ph694.prol.loopexit, %scalar.ph694, %middle.block693
  %420 = add nuw i64 %.6532, 1
  %exitcond558.not = icmp eq i64 %.6532, %374
  %indvar.next677 = add i64 %indvar676, 1
  br i1 %exitcond558.not, label %._crit_edge535, label %.lr.ph527, !llvm.loop !42

._crit_edge535:                                   ; preds = %._crit_edge528
  br i1 %.not438531, label %.loopexit, label %.lr.ph539

.lr.ph539:                                        ; preds = %.lr.ph534, %._crit_edge535
  %421 = load float, ptr %29, align 4, !tbaa !10
  %min.iters.check713 = icmp ult i64 %374, 4
  br i1 %min.iters.check713, label %scalar.ph712.preheader, label %vector.ph714

vector.ph714:                                     ; preds = %.lr.ph539
  %n.vec716 = and i64 %374, 9223372036854775804
  %ind.end717 = or disjoint i64 %n.vec716, 1
  %broadcast.splatinsert723 = insertelement <4 x float> poison, float %421, i64 0
  %broadcast.splat724 = shufflevector <4 x float> %broadcast.splatinsert723, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body719

vector.body719:                                   ; preds = %vector.body719, %vector.ph714
  %index720 = phi i64 [ 0, %vector.ph714 ], [ %index.next725, %vector.body719 ]
  %422 = getelementptr float, ptr %17, i64 %index720
  %wide.load722 = load <4 x float>, ptr %422, align 4, !tbaa !10
  %423 = fdiv <4 x float> %wide.load722, %broadcast.splat724
  store <4 x float> %423, ptr %422, align 4, !tbaa !10
  %index.next725 = add nuw i64 %index720, 4
  %424 = icmp eq i64 %index.next725, %n.vec716
  br i1 %424, label %middle.block711, label %vector.body719, !llvm.loop !43

middle.block711:                                  ; preds = %vector.body719
  %cmp.n726 = icmp eq i64 %374, %n.vec716
  br i1 %cmp.n726, label %.loopexit, label %scalar.ph712.preheader

scalar.ph712.preheader:                           ; preds = %middle.block711, %.lr.ph539
  %.7537.ph = phi i64 [ 1, %.lr.ph539 ], [ %ind.end717, %middle.block711 ]
  br label %scalar.ph712

scalar.ph712:                                     ; preds = %scalar.ph712.preheader, %scalar.ph712
  %.7537 = phi i64 [ %428, %scalar.ph712 ], [ %.7537.ph, %scalar.ph712.preheader ]
  %425 = getelementptr inbounds float, ptr %38, i64 %.7537
  %426 = load float, ptr %425, align 4, !tbaa !10
  %427 = fdiv float %426, %421
  store float %427, ptr %425, align 4, !tbaa !10
  %428 = add nuw i64 %.7537, 1
  %exitcond559.not = icmp eq i64 %.7537, %374
  br i1 %exitcond559.not, label %.loopexit, label %scalar.ph712, !llvm.loop !44

.loopexit:                                        ; preds = %scalar.ph662, %scalar.ph712, %middle.block661, %middle.block711, %373, %316, %._crit_edge519, %._crit_edge535, %372, %315
  %429 = load float, ptr %16, align 4, !tbaa !10
  %430 = fpext float %429 to double
  %431 = call double @slamch_(ptr noundef nonnull @.str.12) #4
  %432 = fcmp ogt double %431, %430
  br i1 %432, label %433, label %436

433:                                              ; preds = %.loopexit
  %434 = load i64, ptr %2, align 8, !tbaa !5
  %435 = add nsw i64 %434, 1
  store i64 %435, ptr %21, align 8, !tbaa !5
  br label %436

436:                                              ; preds = %433, %.loopexit
  store float %.1, ptr %20, align 4, !tbaa !10
  br label %437

437:                                              ; preds = %436, %298, %.thread465
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr nonnull %23) #4
  ret i32 0
}

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

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

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

declare i32 @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 i32 @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 i32 @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 double @clantr_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #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 = !{!"long", !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,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass