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

; 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 [8 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 [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8
@c_false = external hidden global i64, align 8

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

154:                                              ; preds = %25
  %155 = load ptr, ptr %48, align 8, !tbaa !5
  %156 = getelementptr inbounds float, ptr %155, i64 1
  %157 = load float, ptr %156, align 4, !tbaa !11
  %158 = fcmp olt float %157, 0.000000e+00
  br i1 %158, label %159, label %162

159:                                              ; preds = %154
  %160 = load ptr, ptr %48, align 8, !tbaa !5
  %161 = getelementptr inbounds float, ptr %160, i64 1
  store float 1.000000e+00, ptr %161, align 4, !tbaa !11
  br label %167

162:                                              ; preds = %154
  %163 = load ptr, ptr %48, align 8, !tbaa !5
  %164 = getelementptr inbounds float, ptr %163, i64 1
  %165 = load float, ptr %164, align 4, !tbaa !11
  %166 = fptosi float %165 to i64
  store i64 %166, ptr %70, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %162, %159
  br label %168

168:                                              ; preds = %167, %25
  %169 = load ptr, ptr %29, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = sitofp i64 %170 to float
  %172 = fpext float %171 to double
  %173 = call double @slamch_(ptr noundef @.str)
  %174 = fmul double %172, %173
  %175 = fptrunc double %174 to float
  store float %175, ptr %67, align 4, !tbaa !11
  store i64 10, ptr %82, align 8, !tbaa !9
  store float 5.000000e-01, ptr %84, align 4, !tbaa !11
  store float 2.500000e-01, ptr %68, align 4, !tbaa !11
  store i64 0, ptr %77, align 8, !tbaa !9
  %176 = load ptr, ptr %47, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = icmp sge i64 %177, 2
  br i1 %178, label %179, label %195

179:                                              ; preds = %168
  %180 = load ptr, ptr %48, align 8, !tbaa !5
  %181 = getelementptr inbounds float, ptr %180, i64 2
  %182 = load float, ptr %181, align 4, !tbaa !11
  %183 = fcmp olt float %182, 0.000000e+00
  br i1 %183, label %184, label %189

184:                                              ; preds = %179
  %185 = load i64, ptr %82, align 8, !tbaa !9
  %186 = sitofp i64 %185 to float
  %187 = load ptr, ptr %48, align 8, !tbaa !5
  %188 = getelementptr inbounds float, ptr %187, i64 2
  store float %186, ptr %188, align 4, !tbaa !11
  br label %194

189:                                              ; preds = %179
  %190 = load ptr, ptr %48, align 8, !tbaa !5
  %191 = getelementptr inbounds float, ptr %190, i64 2
  %192 = load float, ptr %191, align 4, !tbaa !11
  %193 = fptosi float %192 to i64
  store i64 %193, ptr %82, align 8, !tbaa !9
  br label %194

194:                                              ; preds = %189, %184
  br label %195

195:                                              ; preds = %194, %168
  %196 = load ptr, ptr %47, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = icmp sge i64 %197, 3
  br i1 %198, label %199, label %222

199:                                              ; preds = %195
  %200 = load ptr, ptr %48, align 8, !tbaa !5
  %201 = getelementptr inbounds float, ptr %200, i64 3
  %202 = load float, ptr %201, align 4, !tbaa !11
  %203 = fcmp olt float %202, 0.000000e+00
  br i1 %203, label %204, label %214

204:                                              ; preds = %199
  %205 = load i64, ptr %77, align 8, !tbaa !9
  %206 = icmp ne i64 %205, 0
  br i1 %206, label %207, label %210

207:                                              ; preds = %204
  %208 = load ptr, ptr %48, align 8, !tbaa !5
  %209 = getelementptr inbounds float, ptr %208, i64 3
  store float 0.000000e+00, ptr %209, align 4, !tbaa !11
  br label %213

210:                                              ; preds = %204
  %211 = load ptr, ptr %48, align 8, !tbaa !5
  %212 = getelementptr inbounds float, ptr %211, i64 3
  store float 1.000000e+00, ptr %212, align 4, !tbaa !11
  br label %213

213:                                              ; preds = %210, %207
  br label %221

214:                                              ; preds = %199
  %215 = load ptr, ptr %48, align 8, !tbaa !5
  %216 = getelementptr inbounds float, ptr %215, i64 3
  %217 = load float, ptr %216, align 4, !tbaa !11
  %218 = fcmp oeq float %217, 0.000000e+00
  %219 = zext i1 %218 to i32
  %220 = sext i32 %219 to i64
  store i64 %220, ptr %77, align 8, !tbaa !9
  br label %221

221:                                              ; preds = %214, %213
  br label %222

222:                                              ; preds = %221, %195
  %223 = load i64, ptr %70, align 8, !tbaa !9
  %224 = icmp eq i64 %223, 0
  br i1 %224, label %229, label %225

225:                                              ; preds = %222
  %226 = load ptr, ptr %44, align 8, !tbaa !5
  %227 = load i64, ptr %226, align 8, !tbaa !9
  %228 = icmp eq i64 %227, 0
  br i1 %228, label %229, label %230

229:                                              ; preds = %225, %222
  store i64 0, ptr %83, align 8, !tbaa !9
  br label %236

230:                                              ; preds = %225
  %231 = load i64, ptr %77, align 8, !tbaa !9
  %232 = icmp ne i64 %231, 0
  br i1 %232, label %233, label %234

233:                                              ; preds = %230
  store i64 1, ptr %83, align 8, !tbaa !9
  br label %235

234:                                              ; preds = %230
  store i64 2, ptr %83, align 8, !tbaa !9
  br label %235

235:                                              ; preds = %234, %233
  br label %236

236:                                              ; preds = %235, %229
  %237 = load ptr, ptr %27, align 8, !tbaa !5
  %238 = call i64 @lsame_(ptr noundef %237, ptr noundef @.str.1)
  store i64 %238, ptr %80, align 8, !tbaa !9
  %239 = load ptr, ptr %28, align 8, !tbaa !5
  %240 = call i64 @lsame_(ptr noundef %239, ptr noundef @.str.2)
  %241 = icmp ne i64 %240, 0
  br i1 %241, label %246, label %242

242:                                              ; preds = %236
  %243 = load ptr, ptr %28, align 8, !tbaa !5
  %244 = call i64 @lsame_(ptr noundef %243, ptr noundef @.str.3)
  %245 = icmp ne i64 %244, 0
  br label %246

246:                                              ; preds = %242, %236
  %247 = phi i1 [ true, %236 ], [ %245, %242 ]
  %248 = zext i1 %247 to i32
  %249 = sext i32 %248 to i64
  store i64 %249, ptr %81, align 8, !tbaa !9
  %250 = load ptr, ptr %28, align 8, !tbaa !5
  %251 = call i64 @lsame_(ptr noundef %250, ptr noundef @.str.4)
  %252 = icmp ne i64 %251, 0
  br i1 %252, label %257, label %253

253:                                              ; preds = %246
  %254 = load ptr, ptr %28, align 8, !tbaa !5
  %255 = call i64 @lsame_(ptr noundef %254, ptr noundef @.str.3)
  %256 = icmp ne i64 %255, 0
  br label %257

257:                                              ; preds = %253, %246
  %258 = phi i1 [ true, %246 ], [ %256, %253 ]
  %259 = zext i1 %258 to i32
  %260 = sext i32 %259 to i64
  store i64 %260, ptr %79, align 8, !tbaa !9
  %261 = load i64, ptr %74, align 8, !tbaa !9
  %262 = icmp eq i64 %261, -1
  br i1 %262, label %263, label %265

263:                                              ; preds = %257
  %264 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -1, ptr %264, align 8, !tbaa !9
  br label %356

265:                                              ; preds = %257
  %266 = load i64, ptr %81, align 8, !tbaa !9
  %267 = icmp ne i64 %266, 0
  br i1 %267, label %277, label %268

268:                                              ; preds = %265
  %269 = load i64, ptr %79, align 8, !tbaa !9
  %270 = icmp ne i64 %269, 0
  br i1 %270, label %277, label %271

271:                                              ; preds = %268
  %272 = load ptr, ptr %28, align 8, !tbaa !5
  %273 = call i64 @lsame_(ptr noundef %272, ptr noundef @.str.1)
  %274 = icmp ne i64 %273, 0
  br i1 %274, label %277, label %275

275:                                              ; preds = %271
  %276 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -2, ptr %276, align 8, !tbaa !9
  br label %355

277:                                              ; preds = %271, %268, %265
  %278 = load ptr, ptr %29, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = icmp slt i64 %279, 0
  br i1 %280, label %281, label %283

281:                                              ; preds = %277
  %282 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -3, ptr %282, align 8, !tbaa !9
  br label %354

283:                                              ; preds = %277
  %284 = load ptr, ptr %30, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = icmp slt i64 %285, 0
  br i1 %286, label %287, label %289

287:                                              ; preds = %283
  %288 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -4, ptr %288, align 8, !tbaa !9
  br label %353

289:                                              ; preds = %283
  %290 = load ptr, ptr %32, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = load ptr, ptr %29, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = icmp sge i64 1, %293
  br i1 %294, label %295, label %296

295:                                              ; preds = %289
  br label %299

296:                                              ; preds = %289
  %297 = load ptr, ptr %29, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %296, %295
  %300 = phi i64 [ 1, %295 ], [ %298, %296 ]
  %301 = icmp slt i64 %291, %300
  br i1 %301, label %302, label %304

302:                                              ; preds = %299
  %303 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -6, ptr %303, align 8, !tbaa !9
  br label %352

304:                                              ; preds = %299
  %305 = load ptr, ptr %34, align 8, !tbaa !5
  %306 = load i64, ptr %305, align 8, !tbaa !9
  %307 = load ptr, ptr %29, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  %309 = icmp sge i64 1, %308
  br i1 %309, label %310, label %311

310:                                              ; preds = %304
  br label %314

311:                                              ; preds = %304
  %312 = load ptr, ptr %29, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  br label %314

314:                                              ; preds = %311, %310
  %315 = phi i64 [ 1, %310 ], [ %313, %311 ]
  %316 = icmp slt i64 %306, %315
  br i1 %316, label %317, label %319

317:                                              ; preds = %314
  %318 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -8, ptr %318, align 8, !tbaa !9
  br label %351

319:                                              ; preds = %314
  %320 = load ptr, ptr %39, align 8, !tbaa !5
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = load ptr, ptr %29, align 8, !tbaa !5
  %323 = load i64, ptr %322, align 8, !tbaa !9
  %324 = icmp sge i64 1, %323
  br i1 %324, label %325, label %326

325:                                              ; preds = %319
  br label %329

326:                                              ; preds = %319
  %327 = load ptr, ptr %29, align 8, !tbaa !5
  %328 = load i64, ptr %327, align 8, !tbaa !9
  br label %329

329:                                              ; preds = %326, %325
  %330 = phi i64 [ 1, %325 ], [ %328, %326 ]
  %331 = icmp slt i64 %321, %330
  br i1 %331, label %332, label %334

332:                                              ; preds = %329
  %333 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -13, ptr %333, align 8, !tbaa !9
  br label %350

334:                                              ; preds = %329
  %335 = load ptr, ptr %41, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = load ptr, ptr %29, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  %339 = icmp sge i64 1, %338
  br i1 %339, label %340, label %341

340:                                              ; preds = %334
  br label %344

341:                                              ; preds = %334
  %342 = load ptr, ptr %29, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  br label %344

344:                                              ; preds = %341, %340
  %345 = phi i64 [ 1, %340 ], [ %343, %341 ]
  %346 = icmp slt i64 %336, %345
  br i1 %346, label %347, label %349

347:                                              ; preds = %344
  %348 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -15, ptr %348, align 8, !tbaa !9
  br label %349

349:                                              ; preds = %347, %344
  br label %350

350:                                              ; preds = %349, %332
  br label %351

351:                                              ; preds = %350, %317
  br label %352

352:                                              ; preds = %351, %302
  br label %353

353:                                              ; preds = %352, %287
  br label %354

354:                                              ; preds = %353, %281
  br label %355

355:                                              ; preds = %354, %275
  br label %356

356:                                              ; preds = %355, %263
  %357 = load ptr, ptr %51, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = icmp ne i64 %358, 0
  br i1 %359, label %360, label %365

360:                                              ; preds = %356
  %361 = load ptr, ptr %51, align 8, !tbaa !5
  %362 = load i64, ptr %361, align 8, !tbaa !9
  %363 = sub nsw i64 0, %362
  store i64 %363, ptr %64, align 8, !tbaa !9
  %364 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %64)
  store i32 0, ptr %26, align 4
  store i32 1, ptr %85, align 4
  br label %987

365:                                              ; preds = %356
  %366 = load ptr, ptr %29, align 8, !tbaa !5
  %367 = load i64, ptr %366, align 8, !tbaa !9
  %368 = icmp eq i64 %367, 0
  br i1 %368, label %373, label %369

369:                                              ; preds = %365
  %370 = load ptr, ptr %30, align 8, !tbaa !5
  %371 = load i64, ptr %370, align 8, !tbaa !9
  %372 = icmp eq i64 %371, 0
  br i1 %372, label %373, label %440

373:                                              ; preds = %369, %365
  %374 = load ptr, ptr %42, align 8, !tbaa !5
  store float 1.000000e+00, ptr %374, align 4, !tbaa !11
  %375 = load ptr, ptr %30, align 8, !tbaa !5
  %376 = load i64, ptr %375, align 8, !tbaa !9
  store i64 %376, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %377

377:                                              ; preds = %436, %373
  %378 = load i64, ptr %71, align 8, !tbaa !9
  %379 = load i64, ptr %64, align 8, !tbaa !9
  %380 = icmp sle i64 %378, %379
  br i1 %380, label %381, label %439

381:                                              ; preds = %377
  %382 = load ptr, ptr %43, align 8, !tbaa !5
  %383 = load i64, ptr %71, align 8, !tbaa !9
  %384 = getelementptr inbounds float, ptr %382, i64 %383
  store float 0.000000e+00, ptr %384, align 4, !tbaa !11
  %385 = load ptr, ptr %44, align 8, !tbaa !5
  %386 = load i64, ptr %385, align 8, !tbaa !9
  %387 = icmp sge i64 %386, 1
  br i1 %387, label %388, label %399

388:                                              ; preds = %381
  %389 = load ptr, ptr %45, align 8, !tbaa !5
  %390 = load i64, ptr %71, align 8, !tbaa !9
  %391 = load i64, ptr %60, align 8, !tbaa !9
  %392 = add nsw i64 %390, %391
  %393 = getelementptr inbounds float, ptr %389, i64 %392
  store float 1.000000e+00, ptr %393, align 4, !tbaa !11
  %394 = load ptr, ptr %46, align 8, !tbaa !5
  %395 = load i64, ptr %71, align 8, !tbaa !9
  %396 = load i64, ptr %62, align 8, !tbaa !9
  %397 = add nsw i64 %395, %396
  %398 = getelementptr inbounds float, ptr %394, i64 %397
  store float 1.000000e+00, ptr %398, align 4, !tbaa !11
  br label %435

399:                                              ; preds = %381
  %400 = load ptr, ptr %44, align 8, !tbaa !5
  %401 = load i64, ptr %400, align 8, !tbaa !9
  %402 = icmp sge i64 %401, 2
  br i1 %402, label %403, label %416

403:                                              ; preds = %399
  %404 = load ptr, ptr %45, align 8, !tbaa !5
  %405 = load i64, ptr %71, align 8, !tbaa !9
  %406 = load i64, ptr %60, align 8, !tbaa !9
  %407 = shl i64 %406, 1
  %408 = add nsw i64 %405, %407
  %409 = getelementptr inbounds float, ptr %404, i64 %408
  store float 0.000000e+00, ptr %409, align 4, !tbaa !11
  %410 = load ptr, ptr %46, align 8, !tbaa !5
  %411 = load i64, ptr %71, align 8, !tbaa !9
  %412 = load i64, ptr %62, align 8, !tbaa !9
  %413 = shl i64 %412, 1
  %414 = add nsw i64 %411, %413
  %415 = getelementptr inbounds float, ptr %410, i64 %414
  store float 0.000000e+00, ptr %415, align 4, !tbaa !11
  br label %434

416:                                              ; preds = %399
  %417 = load ptr, ptr %44, align 8, !tbaa !5
  %418 = load i64, ptr %417, align 8, !tbaa !9
  %419 = icmp sge i64 %418, 3
  br i1 %419, label %420, label %433

420:                                              ; preds = %416
  %421 = load ptr, ptr %45, align 8, !tbaa !5
  %422 = load i64, ptr %71, align 8, !tbaa !9
  %423 = load i64, ptr %60, align 8, !tbaa !9
  %424 = mul nsw i64 %423, 3
  %425 = add nsw i64 %422, %424
  %426 = getelementptr inbounds float, ptr %421, i64 %425
  store float 1.000000e+00, ptr %426, align 4, !tbaa !11
  %427 = load ptr, ptr %46, align 8, !tbaa !5
  %428 = load i64, ptr %71, align 8, !tbaa !9
  %429 = load i64, ptr %62, align 8, !tbaa !9
  %430 = mul nsw i64 %429, 3
  %431 = add nsw i64 %428, %430
  %432 = getelementptr inbounds float, ptr %427, i64 %431
  store float 1.000000e+00, ptr %432, align 4, !tbaa !11
  br label %433

433:                                              ; preds = %420, %416
  br label %434

434:                                              ; preds = %433, %403
  br label %435

435:                                              ; preds = %434, %388
  br label %436

436:                                              ; preds = %435
  %437 = load i64, ptr %71, align 8, !tbaa !9
  %438 = add nsw i64 %437, 1
  store i64 %438, ptr %71, align 8, !tbaa !9
  br label %377, !llvm.loop !13

439:                                              ; preds = %377
  store i32 0, ptr %26, align 4
  store i32 1, ptr %85, align 4
  br label %987

440:                                              ; preds = %369
  %441 = load ptr, ptr %42, align 8, !tbaa !5
  store float 0.000000e+00, ptr %441, align 4, !tbaa !11
  %442 = load ptr, ptr %30, align 8, !tbaa !5
  %443 = load i64, ptr %442, align 8, !tbaa !9
  store i64 %443, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %444

444:                                              ; preds = %503, %440
  %445 = load i64, ptr %71, align 8, !tbaa !9
  %446 = load i64, ptr %64, align 8, !tbaa !9
  %447 = icmp sle i64 %445, %446
  br i1 %447, label %448, label %506

448:                                              ; preds = %444
  %449 = load ptr, ptr %43, align 8, !tbaa !5
  %450 = load i64, ptr %71, align 8, !tbaa !9
  %451 = getelementptr inbounds float, ptr %449, i64 %450
  store float 1.000000e+00, ptr %451, align 4, !tbaa !11
  %452 = load ptr, ptr %44, align 8, !tbaa !5
  %453 = load i64, ptr %452, align 8, !tbaa !9
  %454 = icmp sge i64 %453, 1
  br i1 %454, label %455, label %466

455:                                              ; preds = %448
  %456 = load ptr, ptr %45, align 8, !tbaa !5
  %457 = load i64, ptr %71, align 8, !tbaa !9
  %458 = load i64, ptr %60, align 8, !tbaa !9
  %459 = add nsw i64 %457, %458
  %460 = getelementptr inbounds float, ptr %456, i64 %459
  store float 1.000000e+00, ptr %460, align 4, !tbaa !11
  %461 = load ptr, ptr %46, align 8, !tbaa !5
  %462 = load i64, ptr %71, align 8, !tbaa !9
  %463 = load i64, ptr %62, align 8, !tbaa !9
  %464 = add nsw i64 %462, %463
  %465 = getelementptr inbounds float, ptr %461, i64 %464
  store float 1.000000e+00, ptr %465, align 4, !tbaa !11
  br label %502

466:                                              ; preds = %448
  %467 = load ptr, ptr %44, align 8, !tbaa !5
  %468 = load i64, ptr %467, align 8, !tbaa !9
  %469 = icmp sge i64 %468, 2
  br i1 %469, label %470, label %483

470:                                              ; preds = %466
  %471 = load ptr, ptr %45, align 8, !tbaa !5
  %472 = load i64, ptr %71, align 8, !tbaa !9
  %473 = load i64, ptr %60, align 8, !tbaa !9
  %474 = shl i64 %473, 1
  %475 = add nsw i64 %472, %474
  %476 = getelementptr inbounds float, ptr %471, i64 %475
  store float 1.000000e+00, ptr %476, align 4, !tbaa !11
  %477 = load ptr, ptr %46, align 8, !tbaa !5
  %478 = load i64, ptr %71, align 8, !tbaa !9
  %479 = load i64, ptr %62, align 8, !tbaa !9
  %480 = shl i64 %479, 1
  %481 = add nsw i64 %478, %480
  %482 = getelementptr inbounds float, ptr %477, i64 %481
  store float 1.000000e+00, ptr %482, align 4, !tbaa !11
  br label %501

483:                                              ; preds = %466
  %484 = load ptr, ptr %44, align 8, !tbaa !5
  %485 = load i64, ptr %484, align 8, !tbaa !9
  %486 = icmp sge i64 %485, 3
  br i1 %486, label %487, label %500

487:                                              ; preds = %483
  %488 = load ptr, ptr %45, align 8, !tbaa !5
  %489 = load i64, ptr %71, align 8, !tbaa !9
  %490 = load i64, ptr %60, align 8, !tbaa !9
  %491 = mul nsw i64 %490, 3
  %492 = add nsw i64 %489, %491
  %493 = getelementptr inbounds float, ptr %488, i64 %492
  store float 0.000000e+00, ptr %493, align 4, !tbaa !11
  %494 = load ptr, ptr %46, align 8, !tbaa !5
  %495 = load i64, ptr %71, align 8, !tbaa !9
  %496 = load i64, ptr %62, align 8, !tbaa !9
  %497 = mul nsw i64 %496, 3
  %498 = add nsw i64 %495, %497
  %499 = getelementptr inbounds float, ptr %494, i64 %498
  store float 0.000000e+00, ptr %499, align 4, !tbaa !11
  br label %500

500:                                              ; preds = %487, %483
  br label %501

501:                                              ; preds = %500, %470
  br label %502

502:                                              ; preds = %501, %455
  br label %503

503:                                              ; preds = %502
  %504 = load i64, ptr %71, align 8, !tbaa !9
  %505 = add nsw i64 %504, 1
  store i64 %505, ptr %71, align 8, !tbaa !9
  br label %444, !llvm.loop !15

506:                                              ; preds = %444
  %507 = load i64, ptr %80, align 8, !tbaa !9
  %508 = icmp ne i64 %507, 0
  br i1 %508, label %509, label %511

509:                                              ; preds = %506
  %510 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  store i8 73, ptr %510, align 1, !tbaa !16
  br label %513

511:                                              ; preds = %506
  %512 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  store i8 49, ptr %512, align 1, !tbaa !16
  br label %513

513:                                              ; preds = %511, %509
  %514 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  %515 = load ptr, ptr %29, align 8, !tbaa !5
  %516 = load ptr, ptr %29, align 8, !tbaa !5
  %517 = load ptr, ptr %31, align 8, !tbaa !5
  %518 = load i64, ptr %53, align 8, !tbaa !9
  %519 = getelementptr inbounds %struct.complex, ptr %517, i64 %518
  %520 = load ptr, ptr %32, align 8, !tbaa !5
  %521 = load ptr, ptr %50, align 8, !tbaa !5
  %522 = getelementptr inbounds float, ptr %521, i64 1
  %523 = call double @clange_(ptr noundef %514, ptr noundef %515, ptr noundef %516, ptr noundef %519, ptr noundef %520, ptr noundef %522)
  %524 = fptrunc double %523 to float
  store float %524, ptr %78, align 4, !tbaa !11
  %525 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  %526 = load ptr, ptr %29, align 8, !tbaa !5
  %527 = load ptr, ptr %33, align 8, !tbaa !5
  %528 = load i64, ptr %55, align 8, !tbaa !9
  %529 = getelementptr inbounds %struct.complex, ptr %527, i64 %528
  %530 = load ptr, ptr %34, align 8, !tbaa !5
  %531 = load ptr, ptr %42, align 8, !tbaa !5
  %532 = load ptr, ptr %49, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.complex, ptr %532, i64 1
  %534 = load ptr, ptr %50, align 8, !tbaa !5
  %535 = getelementptr inbounds float, ptr %534, i64 1
  %536 = load ptr, ptr %51, align 8, !tbaa !5
  %537 = call i32 @cgecon_(ptr noundef %525, ptr noundef %526, ptr noundef %529, ptr noundef %530, ptr noundef %78, ptr noundef %531, ptr noundef %533, ptr noundef %535, ptr noundef %536)
  %538 = load i64, ptr %70, align 8, !tbaa !9
  %539 = icmp ne i64 %538, 0
  br i1 %539, label %540, label %635

540:                                              ; preds = %513
  %541 = call i64 @ilaprec_(ptr noundef @.str.6)
  store i64 %541, ptr %73, align 8, !tbaa !9
  %542 = load i64, ptr %80, align 8, !tbaa !9
  %543 = icmp ne i64 %542, 0
  br i1 %543, label %544, label %589

544:                                              ; preds = %540
  %545 = load ptr, ptr %29, align 8, !tbaa !5
  %546 = load ptr, ptr %30, align 8, !tbaa !5
  %547 = load ptr, ptr %31, align 8, !tbaa !5
  %548 = load i64, ptr %53, align 8, !tbaa !9
  %549 = getelementptr inbounds %struct.complex, ptr %547, i64 %548
  %550 = load ptr, ptr %32, align 8, !tbaa !5
  %551 = load ptr, ptr %33, align 8, !tbaa !5
  %552 = load i64, ptr %55, align 8, !tbaa !9
  %553 = getelementptr inbounds %struct.complex, ptr %551, i64 %552
  %554 = load ptr, ptr %34, align 8, !tbaa !5
  %555 = load ptr, ptr %35, align 8, !tbaa !5
  %556 = getelementptr inbounds i64, ptr %555, i64 1
  %557 = load ptr, ptr %37, align 8, !tbaa !5
  %558 = getelementptr inbounds float, ptr %557, i64 1
  %559 = load ptr, ptr %38, align 8, !tbaa !5
  %560 = load i64, ptr %57, align 8, !tbaa !9
  %561 = getelementptr inbounds %struct.complex, ptr %559, i64 %560
  %562 = load ptr, ptr %39, align 8, !tbaa !5
  %563 = load ptr, ptr %40, align 8, !tbaa !5
  %564 = load i64, ptr %59, align 8, !tbaa !9
  %565 = getelementptr inbounds %struct.complex, ptr %563, i64 %564
  %566 = load ptr, ptr %41, align 8, !tbaa !5
  %567 = load ptr, ptr %43, align 8, !tbaa !5
  %568 = getelementptr inbounds float, ptr %567, i64 1
  %569 = load ptr, ptr %45, align 8, !tbaa !5
  %570 = load i64, ptr %61, align 8, !tbaa !9
  %571 = getelementptr inbounds float, ptr %569, i64 %570
  %572 = load ptr, ptr %46, align 8, !tbaa !5
  %573 = load i64, ptr %63, align 8, !tbaa !9
  %574 = getelementptr inbounds float, ptr %572, i64 %573
  %575 = load ptr, ptr %49, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.complex, ptr %575, i64 1
  %577 = load ptr, ptr %50, align 8, !tbaa !5
  %578 = getelementptr inbounds float, ptr %577, i64 1
  %579 = load ptr, ptr %49, align 8, !tbaa !5
  %580 = load ptr, ptr %29, align 8, !tbaa !5
  %581 = load i64, ptr %580, align 8, !tbaa !9
  %582 = add nsw i64 %581, 1
  %583 = getelementptr inbounds %struct.complex, ptr %579, i64 %582
  %584 = load ptr, ptr %50, align 8, !tbaa !5
  %585 = getelementptr inbounds float, ptr %584, i64 1
  %586 = load ptr, ptr %42, align 8, !tbaa !5
  %587 = load ptr, ptr %51, align 8, !tbaa !5
  %588 = call i32 @cla_gerfsx_extended__(ptr noundef %73, ptr noundef %74, ptr noundef %545, ptr noundef %546, ptr noundef %549, ptr noundef %550, ptr noundef %553, ptr noundef %554, ptr noundef %556, ptr noundef %79, ptr noundef %558, ptr noundef %561, ptr noundef %562, ptr noundef %565, ptr noundef %566, ptr noundef %568, ptr noundef %83, ptr noundef %571, ptr noundef %574, ptr noundef %576, ptr noundef %578, ptr noundef %583, ptr noundef %585, ptr noundef %586, ptr noundef %82, ptr noundef %84, ptr noundef %68, ptr noundef %77, ptr noundef %587)
  br label %634

589:                                              ; preds = %540
  %590 = load ptr, ptr %29, align 8, !tbaa !5
  %591 = load ptr, ptr %30, align 8, !tbaa !5
  %592 = load ptr, ptr %31, align 8, !tbaa !5
  %593 = load i64, ptr %53, align 8, !tbaa !9
  %594 = getelementptr inbounds %struct.complex, ptr %592, i64 %593
  %595 = load ptr, ptr %32, align 8, !tbaa !5
  %596 = load ptr, ptr %33, align 8, !tbaa !5
  %597 = load i64, ptr %55, align 8, !tbaa !9
  %598 = getelementptr inbounds %struct.complex, ptr %596, i64 %597
  %599 = load ptr, ptr %34, align 8, !tbaa !5
  %600 = load ptr, ptr %35, align 8, !tbaa !5
  %601 = getelementptr inbounds i64, ptr %600, i64 1
  %602 = load ptr, ptr %36, align 8, !tbaa !5
  %603 = getelementptr inbounds float, ptr %602, i64 1
  %604 = load ptr, ptr %38, align 8, !tbaa !5
  %605 = load i64, ptr %57, align 8, !tbaa !9
  %606 = getelementptr inbounds %struct.complex, ptr %604, i64 %605
  %607 = load ptr, ptr %39, align 8, !tbaa !5
  %608 = load ptr, ptr %40, align 8, !tbaa !5
  %609 = load i64, ptr %59, align 8, !tbaa !9
  %610 = getelementptr inbounds %struct.complex, ptr %608, i64 %609
  %611 = load ptr, ptr %41, align 8, !tbaa !5
  %612 = load ptr, ptr %43, align 8, !tbaa !5
  %613 = getelementptr inbounds float, ptr %612, i64 1
  %614 = load ptr, ptr %45, align 8, !tbaa !5
  %615 = load i64, ptr %61, align 8, !tbaa !9
  %616 = getelementptr inbounds float, ptr %614, i64 %615
  %617 = load ptr, ptr %46, align 8, !tbaa !5
  %618 = load i64, ptr %63, align 8, !tbaa !9
  %619 = getelementptr inbounds float, ptr %617, i64 %618
  %620 = load ptr, ptr %49, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.complex, ptr %620, i64 1
  %622 = load ptr, ptr %50, align 8, !tbaa !5
  %623 = getelementptr inbounds float, ptr %622, i64 1
  %624 = load ptr, ptr %49, align 8, !tbaa !5
  %625 = load ptr, ptr %29, align 8, !tbaa !5
  %626 = load i64, ptr %625, align 8, !tbaa !9
  %627 = add nsw i64 %626, 1
  %628 = getelementptr inbounds %struct.complex, ptr %624, i64 %627
  %629 = load ptr, ptr %50, align 8, !tbaa !5
  %630 = getelementptr inbounds float, ptr %629, i64 1
  %631 = load ptr, ptr %42, align 8, !tbaa !5
  %632 = load ptr, ptr %51, align 8, !tbaa !5
  %633 = call i32 @cla_gerfsx_extended__(ptr noundef %73, ptr noundef %74, ptr noundef %590, ptr noundef %591, ptr noundef %594, ptr noundef %595, ptr noundef %598, ptr noundef %599, ptr noundef %601, ptr noundef %81, ptr noundef %603, ptr noundef %606, ptr noundef %607, ptr noundef %610, ptr noundef %611, ptr noundef %613, ptr noundef %83, ptr noundef %616, ptr noundef %619, ptr noundef %621, ptr noundef %623, ptr noundef %628, ptr noundef %630, ptr noundef %631, ptr noundef %82, ptr noundef %84, ptr noundef %68, ptr noundef %77, ptr noundef %632)
  br label %634

634:                                              ; preds = %589, %544
  br label %635

635:                                              ; preds = %634, %513
  store float 1.000000e+01, ptr %65, align 4, !tbaa !11
  %636 = load ptr, ptr %29, align 8, !tbaa !5
  %637 = load i64, ptr %636, align 8, !tbaa !9
  %638 = sitofp i64 %637 to float
  %639 = fpext float %638 to double
  %640 = call double @sqrt(double noundef %639) #4
  %641 = fptrunc double %640 to float
  store float %641, ptr %66, align 4, !tbaa !11
  %642 = load float, ptr %65, align 4, !tbaa !11
  %643 = load float, ptr %66, align 4, !tbaa !11
  %644 = fcmp oge float %642, %643
  br i1 %644, label %645, label %647

645:                                              ; preds = %635
  %646 = load float, ptr %65, align 4, !tbaa !11
  br label %649

647:                                              ; preds = %635
  %648 = load float, ptr %66, align 4, !tbaa !11
  br label %649

649:                                              ; preds = %647, %645
  %650 = phi float [ %646, %645 ], [ %648, %647 ]
  %651 = fpext float %650 to double
  %652 = call double @slamch_(ptr noundef @.str)
  %653 = fmul double %651, %652
  %654 = fptrunc double %653 to float
  store float %654, ptr %69, align 4, !tbaa !11
  %655 = load ptr, ptr %44, align 8, !tbaa !5
  %656 = load i64, ptr %655, align 8, !tbaa !9
  %657 = icmp sge i64 %656, 1
  br i1 %657, label %658, label %836

658:                                              ; preds = %649
  %659 = load i64, ptr %83, align 8, !tbaa !9
  %660 = icmp sge i64 %659, 1
  br i1 %660, label %661, label %836

661:                                              ; preds = %658
  %662 = load i64, ptr %79, align 8, !tbaa !9
  %663 = icmp ne i64 %662, 0
  br i1 %663, label %664, label %689

664:                                              ; preds = %661
  %665 = load i64, ptr %80, align 8, !tbaa !9
  %666 = icmp ne i64 %665, 0
  br i1 %666, label %667, label %689

667:                                              ; preds = %664
  %668 = load ptr, ptr %27, align 8, !tbaa !5
  %669 = load ptr, ptr %29, align 8, !tbaa !5
  %670 = load ptr, ptr %31, align 8, !tbaa !5
  %671 = load i64, ptr %53, align 8, !tbaa !9
  %672 = getelementptr inbounds %struct.complex, ptr %670, i64 %671
  %673 = load ptr, ptr %32, align 8, !tbaa !5
  %674 = load ptr, ptr %33, align 8, !tbaa !5
  %675 = load i64, ptr %55, align 8, !tbaa !9
  %676 = getelementptr inbounds %struct.complex, ptr %674, i64 %675
  %677 = load ptr, ptr %34, align 8, !tbaa !5
  %678 = load ptr, ptr %35, align 8, !tbaa !5
  %679 = getelementptr inbounds i64, ptr %678, i64 1
  %680 = load ptr, ptr %37, align 8, !tbaa !5
  %681 = getelementptr inbounds float, ptr %680, i64 1
  %682 = load ptr, ptr %51, align 8, !tbaa !5
  %683 = load ptr, ptr %49, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct.complex, ptr %683, i64 1
  %685 = load ptr, ptr %50, align 8, !tbaa !5
  %686 = getelementptr inbounds float, ptr %685, i64 1
  %687 = call double @cla_gercond_c__(ptr noundef %668, ptr noundef %669, ptr noundef %672, ptr noundef %673, ptr noundef %676, ptr noundef %677, ptr noundef %679, ptr noundef %681, ptr noundef @c_true, ptr noundef %682, ptr noundef %684, ptr noundef %686, i64 noundef 1)
  %688 = fptrunc double %687 to float
  store float %688, ptr %72, align 4, !tbaa !11
  br label %740

689:                                              ; preds = %664, %661
  %690 = load i64, ptr %81, align 8, !tbaa !9
  %691 = icmp ne i64 %690, 0
  br i1 %691, label %692, label %717

692:                                              ; preds = %689
  %693 = load i64, ptr %80, align 8, !tbaa !9
  %694 = icmp ne i64 %693, 0
  br i1 %694, label %717, label %695

695:                                              ; preds = %692
  %696 = load ptr, ptr %27, align 8, !tbaa !5
  %697 = load ptr, ptr %29, align 8, !tbaa !5
  %698 = load ptr, ptr %31, align 8, !tbaa !5
  %699 = load i64, ptr %53, align 8, !tbaa !9
  %700 = getelementptr inbounds %struct.complex, ptr %698, i64 %699
  %701 = load ptr, ptr %32, align 8, !tbaa !5
  %702 = load ptr, ptr %33, align 8, !tbaa !5
  %703 = load i64, ptr %55, align 8, !tbaa !9
  %704 = getelementptr inbounds %struct.complex, ptr %702, i64 %703
  %705 = load ptr, ptr %34, align 8, !tbaa !5
  %706 = load ptr, ptr %35, align 8, !tbaa !5
  %707 = getelementptr inbounds i64, ptr %706, i64 1
  %708 = load ptr, ptr %36, align 8, !tbaa !5
  %709 = getelementptr inbounds float, ptr %708, i64 1
  %710 = load ptr, ptr %51, align 8, !tbaa !5
  %711 = load ptr, ptr %49, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.complex, ptr %711, i64 1
  %713 = load ptr, ptr %50, align 8, !tbaa !5
  %714 = getelementptr inbounds float, ptr %713, i64 1
  %715 = call double @cla_gercond_c__(ptr noundef %696, ptr noundef %697, ptr noundef %700, ptr noundef %701, ptr noundef %704, ptr noundef %705, ptr noundef %707, ptr noundef %709, ptr noundef @c_true, ptr noundef %710, ptr noundef %712, ptr noundef %714, i64 noundef 1)
  %716 = fptrunc double %715 to float
  store float %716, ptr %72, align 4, !tbaa !11
  br label %739

717:                                              ; preds = %692, %689
  %718 = load ptr, ptr %27, align 8, !tbaa !5
  %719 = load ptr, ptr %29, align 8, !tbaa !5
  %720 = load ptr, ptr %31, align 8, !tbaa !5
  %721 = load i64, ptr %53, align 8, !tbaa !9
  %722 = getelementptr inbounds %struct.complex, ptr %720, i64 %721
  %723 = load ptr, ptr %32, align 8, !tbaa !5
  %724 = load ptr, ptr %33, align 8, !tbaa !5
  %725 = load i64, ptr %55, align 8, !tbaa !9
  %726 = getelementptr inbounds %struct.complex, ptr %724, i64 %725
  %727 = load ptr, ptr %34, align 8, !tbaa !5
  %728 = load ptr, ptr %35, align 8, !tbaa !5
  %729 = getelementptr inbounds i64, ptr %728, i64 1
  %730 = load ptr, ptr %37, align 8, !tbaa !5
  %731 = getelementptr inbounds float, ptr %730, i64 1
  %732 = load ptr, ptr %51, align 8, !tbaa !5
  %733 = load ptr, ptr %49, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct.complex, ptr %733, i64 1
  %735 = load ptr, ptr %50, align 8, !tbaa !5
  %736 = getelementptr inbounds float, ptr %735, i64 1
  %737 = call double @cla_gercond_c__(ptr noundef %718, ptr noundef %719, ptr noundef %722, ptr noundef %723, ptr noundef %726, ptr noundef %727, ptr noundef %729, ptr noundef %731, ptr noundef @c_false, ptr noundef %732, ptr noundef %734, ptr noundef %736, i64 noundef 1)
  %738 = fptrunc double %737 to float
  store float %738, ptr %72, align 4, !tbaa !11
  br label %739

739:                                              ; preds = %717, %695
  br label %740

740:                                              ; preds = %739, %667
  %741 = load ptr, ptr %30, align 8, !tbaa !5
  %742 = load i64, ptr %741, align 8, !tbaa !9
  store i64 %742, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %743

743:                                              ; preds = %832, %740
  %744 = load i64, ptr %71, align 8, !tbaa !9
  %745 = load i64, ptr %64, align 8, !tbaa !9
  %746 = icmp sle i64 %744, %745
  br i1 %746, label %747, label %835

747:                                              ; preds = %743
  %748 = load ptr, ptr %44, align 8, !tbaa !5
  %749 = load i64, ptr %748, align 8, !tbaa !9
  %750 = icmp sge i64 %749, 2
  br i1 %750, label %751, label %767

751:                                              ; preds = %747
  %752 = load ptr, ptr %45, align 8, !tbaa !5
  %753 = load i64, ptr %71, align 8, !tbaa !9
  %754 = load i64, ptr %60, align 8, !tbaa !9
  %755 = shl i64 %754, 1
  %756 = add nsw i64 %753, %755
  %757 = getelementptr inbounds float, ptr %752, i64 %756
  %758 = load float, ptr %757, align 4, !tbaa !11
  %759 = fcmp ogt float %758, 1.000000e+00
  br i1 %759, label %760, label %767

760:                                              ; preds = %751
  %761 = load ptr, ptr %45, align 8, !tbaa !5
  %762 = load i64, ptr %71, align 8, !tbaa !9
  %763 = load i64, ptr %60, align 8, !tbaa !9
  %764 = shl i64 %763, 1
  %765 = add nsw i64 %762, %764
  %766 = getelementptr inbounds float, ptr %761, i64 %765
  store float 1.000000e+00, ptr %766, align 4, !tbaa !11
  br label %767

767:                                              ; preds = %760, %751, %747
  %768 = load float, ptr %72, align 4, !tbaa !11
  %769 = load float, ptr %67, align 4, !tbaa !11
  %770 = fcmp olt float %768, %769
  br i1 %770, label %771, label %795

771:                                              ; preds = %767
  %772 = load ptr, ptr %45, align 8, !tbaa !5
  %773 = load i64, ptr %71, align 8, !tbaa !9
  %774 = load i64, ptr %60, align 8, !tbaa !9
  %775 = shl i64 %774, 1
  %776 = add nsw i64 %773, %775
  %777 = getelementptr inbounds float, ptr %772, i64 %776
  store float 1.000000e+00, ptr %777, align 4, !tbaa !11
  %778 = load ptr, ptr %45, align 8, !tbaa !5
  %779 = load i64, ptr %71, align 8, !tbaa !9
  %780 = load i64, ptr %60, align 8, !tbaa !9
  %781 = add nsw i64 %779, %780
  %782 = getelementptr inbounds float, ptr %778, i64 %781
  store float 0.000000e+00, ptr %782, align 4, !tbaa !11
  %783 = load ptr, ptr %51, align 8, !tbaa !5
  %784 = load i64, ptr %783, align 8, !tbaa !9
  %785 = load ptr, ptr %29, align 8, !tbaa !5
  %786 = load i64, ptr %785, align 8, !tbaa !9
  %787 = icmp sle i64 %784, %786
  br i1 %787, label %788, label %794

788:                                              ; preds = %771
  %789 = load ptr, ptr %29, align 8, !tbaa !5
  %790 = load i64, ptr %789, align 8, !tbaa !9
  %791 = load i64, ptr %71, align 8, !tbaa !9
  %792 = add nsw i64 %790, %791
  %793 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 %792, ptr %793, align 8, !tbaa !9
  br label %794

794:                                              ; preds = %788, %771
  br label %819

795:                                              ; preds = %767
  %796 = load ptr, ptr %45, align 8, !tbaa !5
  %797 = load i64, ptr %71, align 8, !tbaa !9
  %798 = load i64, ptr %60, align 8, !tbaa !9
  %799 = shl i64 %798, 1
  %800 = add nsw i64 %797, %799
  %801 = getelementptr inbounds float, ptr %796, i64 %800
  %802 = load float, ptr %801, align 4, !tbaa !11
  %803 = load float, ptr %69, align 4, !tbaa !11
  %804 = fcmp olt float %802, %803
  br i1 %804, label %805, label %818

805:                                              ; preds = %795
  %806 = load float, ptr %69, align 4, !tbaa !11
  %807 = load ptr, ptr %45, align 8, !tbaa !5
  %808 = load i64, ptr %71, align 8, !tbaa !9
  %809 = load i64, ptr %60, align 8, !tbaa !9
  %810 = shl i64 %809, 1
  %811 = add nsw i64 %808, %810
  %812 = getelementptr inbounds float, ptr %807, i64 %811
  store float %806, ptr %812, align 4, !tbaa !11
  %813 = load ptr, ptr %45, align 8, !tbaa !5
  %814 = load i64, ptr %71, align 8, !tbaa !9
  %815 = load i64, ptr %60, align 8, !tbaa !9
  %816 = add nsw i64 %814, %815
  %817 = getelementptr inbounds float, ptr %813, i64 %816
  store float 1.000000e+00, ptr %817, align 4, !tbaa !11
  br label %818

818:                                              ; preds = %805, %795
  br label %819

819:                                              ; preds = %818, %794
  %820 = load ptr, ptr %44, align 8, !tbaa !5
  %821 = load i64, ptr %820, align 8, !tbaa !9
  %822 = icmp sge i64 %821, 3
  br i1 %822, label %823, label %831

823:                                              ; preds = %819
  %824 = load float, ptr %72, align 4, !tbaa !11
  %825 = load ptr, ptr %45, align 8, !tbaa !5
  %826 = load i64, ptr %71, align 8, !tbaa !9
  %827 = load i64, ptr %60, align 8, !tbaa !9
  %828 = mul nsw i64 %827, 3
  %829 = add nsw i64 %826, %828
  %830 = getelementptr inbounds float, ptr %825, i64 %829
  store float %824, ptr %830, align 4, !tbaa !11
  br label %831

831:                                              ; preds = %823, %819
  br label %832

832:                                              ; preds = %831
  %833 = load i64, ptr %71, align 8, !tbaa !9
  %834 = add nsw i64 %833, 1
  store i64 %834, ptr %71, align 8, !tbaa !9
  br label %743, !llvm.loop !17

835:                                              ; preds = %743
  br label %836

836:                                              ; preds = %835, %658, %649
  %837 = load ptr, ptr %44, align 8, !tbaa !5
  %838 = load i64, ptr %837, align 8, !tbaa !9
  %839 = icmp sge i64 %838, 1
  br i1 %839, label %840, label %986

840:                                              ; preds = %836
  %841 = load i64, ptr %83, align 8, !tbaa !9
  %842 = icmp sge i64 %841, 2
  br i1 %842, label %843, label %986

843:                                              ; preds = %840
  %844 = call double @slamch_(ptr noundef @.str)
  %845 = call double @sqrt(double noundef %844) #4
  %846 = fptrunc double %845 to float
  store float %846, ptr %75, align 4, !tbaa !11
  %847 = load ptr, ptr %30, align 8, !tbaa !5
  %848 = load i64, ptr %847, align 8, !tbaa !9
  store i64 %848, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %849

849:                                              ; preds = %982, %843
  %850 = load i64, ptr %71, align 8, !tbaa !9
  %851 = load i64, ptr %64, align 8, !tbaa !9
  %852 = icmp sle i64 %850, %851
  br i1 %852, label %853, label %985

853:                                              ; preds = %849
  %854 = load ptr, ptr %46, align 8, !tbaa !5
  %855 = load i64, ptr %71, align 8, !tbaa !9
  %856 = load i64, ptr %62, align 8, !tbaa !9
  %857 = shl i64 %856, 1
  %858 = add nsw i64 %855, %857
  %859 = getelementptr inbounds float, ptr %854, i64 %858
  %860 = load float, ptr %859, align 4, !tbaa !11
  %861 = load float, ptr %75, align 4, !tbaa !11
  %862 = fcmp olt float %860, %861
  br i1 %862, label %863, label %889

863:                                              ; preds = %853
  %864 = load ptr, ptr %27, align 8, !tbaa !5
  %865 = load ptr, ptr %29, align 8, !tbaa !5
  %866 = load ptr, ptr %31, align 8, !tbaa !5
  %867 = load i64, ptr %53, align 8, !tbaa !9
  %868 = getelementptr inbounds %struct.complex, ptr %866, i64 %867
  %869 = load ptr, ptr %32, align 8, !tbaa !5
  %870 = load ptr, ptr %33, align 8, !tbaa !5
  %871 = load i64, ptr %55, align 8, !tbaa !9
  %872 = getelementptr inbounds %struct.complex, ptr %870, i64 %871
  %873 = load ptr, ptr %34, align 8, !tbaa !5
  %874 = load ptr, ptr %35, align 8, !tbaa !5
  %875 = getelementptr inbounds i64, ptr %874, i64 1
  %876 = load ptr, ptr %40, align 8, !tbaa !5
  %877 = load i64, ptr %71, align 8, !tbaa !9
  %878 = load i64, ptr %58, align 8, !tbaa !9
  %879 = mul nsw i64 %877, %878
  %880 = add nsw i64 %879, 1
  %881 = getelementptr inbounds %struct.complex, ptr %876, i64 %880
  %882 = load ptr, ptr %51, align 8, !tbaa !5
  %883 = load ptr, ptr %49, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.complex, ptr %883, i64 1
  %885 = load ptr, ptr %50, align 8, !tbaa !5
  %886 = getelementptr inbounds float, ptr %885, i64 1
  %887 = call double @cla_gercond_x__(ptr noundef %864, ptr noundef %865, ptr noundef %868, ptr noundef %869, ptr noundef %872, ptr noundef %873, ptr noundef %875, ptr noundef %881, ptr noundef %882, ptr noundef %884, ptr noundef %886, i64 noundef 1)
  %888 = fptrunc double %887 to float
  store float %888, ptr %72, align 4, !tbaa !11
  br label %890

889:                                              ; preds = %853
  store float 0.000000e+00, ptr %72, align 4, !tbaa !11
  br label %890

890:                                              ; preds = %889, %863
  %891 = load ptr, ptr %44, align 8, !tbaa !5
  %892 = load i64, ptr %891, align 8, !tbaa !9
  %893 = icmp sge i64 %892, 2
  br i1 %893, label %894, label %910

894:                                              ; preds = %890
  %895 = load ptr, ptr %46, align 8, !tbaa !5
  %896 = load i64, ptr %71, align 8, !tbaa !9
  %897 = load i64, ptr %62, align 8, !tbaa !9
  %898 = shl i64 %897, 1
  %899 = add nsw i64 %896, %898
  %900 = getelementptr inbounds float, ptr %895, i64 %899
  %901 = load float, ptr %900, align 4, !tbaa !11
  %902 = fcmp ogt float %901, 1.000000e+00
  br i1 %902, label %903, label %910

903:                                              ; preds = %894
  %904 = load ptr, ptr %46, align 8, !tbaa !5
  %905 = load i64, ptr %71, align 8, !tbaa !9
  %906 = load i64, ptr %62, align 8, !tbaa !9
  %907 = shl i64 %906, 1
  %908 = add nsw i64 %905, %907
  %909 = getelementptr inbounds float, ptr %904, i64 %908
  store float 1.000000e+00, ptr %909, align 4, !tbaa !11
  br label %910

910:                                              ; preds = %903, %894, %890
  %911 = load float, ptr %72, align 4, !tbaa !11
  %912 = load float, ptr %67, align 4, !tbaa !11
  %913 = fcmp olt float %911, %912
  br i1 %913, label %914, label %945

914:                                              ; preds = %910
  %915 = load ptr, ptr %46, align 8, !tbaa !5
  %916 = load i64, ptr %71, align 8, !tbaa !9
  %917 = load i64, ptr %62, align 8, !tbaa !9
  %918 = shl i64 %917, 1
  %919 = add nsw i64 %916, %918
  %920 = getelementptr inbounds float, ptr %915, i64 %919
  store float 1.000000e+00, ptr %920, align 4, !tbaa !11
  %921 = load ptr, ptr %46, align 8, !tbaa !5
  %922 = load i64, ptr %71, align 8, !tbaa !9
  %923 = load i64, ptr %62, align 8, !tbaa !9
  %924 = add nsw i64 %922, %923
  %925 = getelementptr inbounds float, ptr %921, i64 %924
  store float 0.000000e+00, ptr %925, align 4, !tbaa !11
  %926 = load ptr, ptr %48, align 8, !tbaa !5
  %927 = getelementptr inbounds float, ptr %926, i64 3
  %928 = load float, ptr %927, align 4, !tbaa !11
  %929 = fcmp oeq float %928, 1.000000e+00
  br i1 %929, label %930, label %944

930:                                              ; preds = %914
  %931 = load ptr, ptr %51, align 8, !tbaa !5
  %932 = load i64, ptr %931, align 8, !tbaa !9
  %933 = load ptr, ptr %29, align 8, !tbaa !5
  %934 = load i64, ptr %933, align 8, !tbaa !9
  %935 = load i64, ptr %71, align 8, !tbaa !9
  %936 = add nsw i64 %934, %935
  %937 = icmp slt i64 %932, %936
  br i1 %937, label %938, label %944

938:                                              ; preds = %930
  %939 = load ptr, ptr %29, align 8, !tbaa !5
  %940 = load i64, ptr %939, align 8, !tbaa !9
  %941 = load i64, ptr %71, align 8, !tbaa !9
  %942 = add nsw i64 %940, %941
  %943 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 %942, ptr %943, align 8, !tbaa !9
  br label %944

944:                                              ; preds = %938, %930, %914
  br label %969

945:                                              ; preds = %910
  %946 = load ptr, ptr %46, align 8, !tbaa !5
  %947 = load i64, ptr %71, align 8, !tbaa !9
  %948 = load i64, ptr %62, align 8, !tbaa !9
  %949 = shl i64 %948, 1
  %950 = add nsw i64 %947, %949
  %951 = getelementptr inbounds float, ptr %946, i64 %950
  %952 = load float, ptr %951, align 4, !tbaa !11
  %953 = load float, ptr %69, align 4, !tbaa !11
  %954 = fcmp olt float %952, %953
  br i1 %954, label %955, label %968

955:                                              ; preds = %945
  %956 = load float, ptr %69, align 4, !tbaa !11
  %957 = load ptr, ptr %46, align 8, !tbaa !5
  %958 = load i64, ptr %71, align 8, !tbaa !9
  %959 = load i64, ptr %62, align 8, !tbaa !9
  %960 = shl i64 %959, 1
  %961 = add nsw i64 %958, %960
  %962 = getelementptr inbounds float, ptr %957, i64 %961
  store float %956, ptr %962, align 4, !tbaa !11
  %963 = load ptr, ptr %46, align 8, !tbaa !5
  %964 = load i64, ptr %71, align 8, !tbaa !9
  %965 = load i64, ptr %62, align 8, !tbaa !9
  %966 = add nsw i64 %964, %965
  %967 = getelementptr inbounds float, ptr %963, i64 %966
  store float 1.000000e+00, ptr %967, align 4, !tbaa !11
  br label %968

968:                                              ; preds = %955, %945
  br label %969

969:                                              ; preds = %968, %944
  %970 = load ptr, ptr %44, align 8, !tbaa !5
  %971 = load i64, ptr %970, align 8, !tbaa !9
  %972 = icmp sge i64 %971, 3
  br i1 %972, label %973, label %981

973:                                              ; preds = %969
  %974 = load float, ptr %72, align 4, !tbaa !11
  %975 = load ptr, ptr %46, align 8, !tbaa !5
  %976 = load i64, ptr %71, align 8, !tbaa !9
  %977 = load i64, ptr %62, align 8, !tbaa !9
  %978 = mul nsw i64 %977, 3
  %979 = add nsw i64 %976, %978
  %980 = getelementptr inbounds float, ptr %975, i64 %979
  store float %974, ptr %980, align 4, !tbaa !11
  br label %981

981:                                              ; preds = %973, %969
  br label %982

982:                                              ; preds = %981
  %983 = load i64, ptr %71, align 8, !tbaa !9
  %984 = add nsw i64 %983, 1
  store i64 %984, ptr %71, align 8, !tbaa !9
  br label %849, !llvm.loop !18

985:                                              ; preds = %849
  br label %986

986:                                              ; preds = %985, %840, %836
  store i32 0, ptr %26, align 4
  store i32 1, ptr %85, align 4
  br label %987

987:                                              ; preds = %986, %439, %360
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  %988 = load i32, ptr %26, align 4
  ret i32 %988
}

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

declare i64 @ilatrans_(ptr noundef) #2

declare double @slamch_(ptr noundef) #2

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

declare i32 @xerbla_(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 i64 @ilaprec_(ptr noundef) #2

declare i32 @cla_gerfsx_extended__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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: nounwind
declare double @sqrt(double noundef) #3

declare double @cla_gercond_c__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

declare double @cla_gercond_x__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

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

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

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


; 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 [8 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 [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8
@c_false = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cgerfsx_(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 nocapture noundef readonly %17, ptr noundef %18, ptr noundef %19, ptr nocapture noundef readonly %20, ptr nocapture noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) local_unnamed_addr #0 {
  %26 = ptrtoint ptr %19 to i64
  %27 = ptrtoint ptr %16 to i64
  %28 = ptrtoint ptr %18 to i64
  %29 = ptrtoint ptr %19 to i64
  %30 = ptrtoint ptr %16 to i64
  %31 = ptrtoint ptr %18 to i64
  %32 = alloca i64, align 8
  %33 = alloca float, align 4
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca [1 x i8], align 1
  %37 = alloca i64, align 8
  %38 = alloca float, align 4
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %43) #6
  %44 = load i64, ptr %3, align 8, !tbaa !5
  %45 = xor i64 %44, -1
  %46 = getelementptr inbounds float, ptr %19, i64 %45
  %47 = getelementptr inbounds float, ptr %18, i64 %45
  %48 = load i64, ptr %14, align 8, !tbaa !5
  %49 = xor i64 %48, -1
  %50 = getelementptr inbounds %struct.complex, ptr %13, i64 %49
  %51 = getelementptr inbounds i8, ptr %16, i64 -4
  store i64 0, ptr %24, align 8, !tbaa !5
  %52 = tail call i64 @ilatrans_(ptr noundef %0) #6
  store i64 %52, ptr %35, align 8, !tbaa !5
  %53 = load i64, ptr %20, align 8, !tbaa !5
  %54 = icmp sgt i64 %53, 0
  br i1 %54, label %55, label %61

55:                                               ; preds = %25
  %56 = load float, ptr %21, align 4, !tbaa !9
  %57 = fcmp olt float %56, 0.000000e+00
  br i1 %57, label %58, label %59

58:                                               ; preds = %55
  store float 1.000000e+00, ptr %21, align 4, !tbaa !9
  br label %61

59:                                               ; preds = %55
  %60 = fptosi float %56 to i64
  br label %61

61:                                               ; preds = %58, %59, %25
  %.0367 = phi i64 [ 1, %58 ], [ %60, %59 ], [ 1, %25 ]
  %62 = load i64, ptr %2, align 8, !tbaa !5
  %63 = sitofp i64 %62 to float
  %64 = fpext float %63 to double
  %65 = tail call double @slamch_(ptr noundef nonnull @.str) #6
  %66 = fmul double %65, %64
  %67 = fptrunc double %66 to float
  store i64 10, ptr %41, align 8, !tbaa !5
  store float 5.000000e-01, ptr %43, align 4, !tbaa !9
  store float 2.500000e-01, ptr %33, align 4, !tbaa !9
  store i64 0, ptr %37, align 8, !tbaa !5
  %68 = load i64, ptr %20, align 8, !tbaa !5
  %69 = icmp sgt i64 %68, 1
  br i1 %69, label %70, label %.thread

70:                                               ; preds = %61
  %71 = getelementptr inbounds i8, ptr %21, i64 4
  %72 = load float, ptr %71, align 4, !tbaa !9
  %73 = fcmp olt float %72, 0.000000e+00
  br i1 %73, label %74, label %75

74:                                               ; preds = %70
  store float 1.000000e+01, ptr %71, align 4, !tbaa !9
  br label %77

75:                                               ; preds = %70
  %76 = fptosi float %72 to i64
  store i64 %76, ptr %41, align 8, !tbaa !5
  br label %77

77:                                               ; preds = %74, %75
  %.not = icmp eq i64 %68, 2
  br i1 %.not, label %.thread, label %78

78:                                               ; preds = %77
  %79 = getelementptr inbounds i8, ptr %21, i64 8
  %80 = load float, ptr %79, align 4, !tbaa !9
  %81 = fcmp olt float %80, 0.000000e+00
  br i1 %81, label %82, label %83

82:                                               ; preds = %78
  store float 1.000000e+00, ptr %79, align 4, !tbaa !9
  br label %.thread

83:                                               ; preds = %78
  %84 = fcmp oeq float %80, 0.000000e+00
  %85 = zext i1 %84 to i64
  store i64 %85, ptr %37, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %61, %83, %82, %77
  %86 = phi i64 [ 0, %61 ], [ %85, %83 ], [ 0, %82 ], [ 0, %77 ]
  %87 = icmp eq i64 %.0367, 0
  br i1 %87, label %91, label %88

88:                                               ; preds = %.thread
  %89 = load i64, ptr %17, align 8, !tbaa !5
  %90 = icmp eq i64 %89, 0
  br i1 %90, label %91, label %92

91:                                               ; preds = %88, %.thread
  store i64 0, ptr %42, align 8, !tbaa !5
  br label %95

92:                                               ; preds = %88
  %.not381 = icmp eq i64 %86, 0
  br i1 %.not381, label %94, label %93

93:                                               ; preds = %92
  store i64 1, ptr %42, align 8, !tbaa !5
  br label %95

94:                                               ; preds = %92
  store i64 2, ptr %42, align 8, !tbaa !5
  br label %95

95:                                               ; preds = %93, %94, %91
  %96 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %97 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %.not382 = icmp eq i64 %97, 0
  br i1 %.not382, label %98, label %101

98:                                               ; preds = %95
  %99 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %100 = icmp ne i64 %99, 0
  br label %101

101:                                              ; preds = %98, %95
  %102 = phi i1 [ true, %95 ], [ %100, %98 ]
  %103 = zext i1 %102 to i64
  store i64 %103, ptr %40, align 8, !tbaa !5
  %104 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not383 = icmp eq i64 %104, 0
  br i1 %.not383, label %105, label %108

105:                                              ; preds = %101
  %106 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %107 = icmp ne i64 %106, 0
  br label %108

108:                                              ; preds = %105, %101
  %109 = phi i1 [ true, %101 ], [ %107, %105 ]
  %110 = zext i1 %109 to i64
  store i64 %110, ptr %39, align 8, !tbaa !5
  %111 = icmp eq i64 %52, -1
  br i1 %111, label %.thread400.sink.split, label %112

112:                                              ; preds = %108
  %or.cond = select i1 %102, i1 true, i1 %109
  br i1 %or.cond, label %115, label %113

113:                                              ; preds = %112
  %114 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not384 = icmp eq i64 %114, 0
  br i1 %.not384, label %.thread400.sink.split, label %115

115:                                              ; preds = %113, %112
  %116 = load i64, ptr %2, align 8, !tbaa !5
  %117 = icmp slt i64 %116, 0
  br i1 %117, label %.thread400.sink.split, label %118

118:                                              ; preds = %115
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %120 = icmp slt i64 %119, 0
  br i1 %120, label %.thread400.sink.split, label %121

121:                                              ; preds = %118
  %122 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %116, i64 1)
  %123 = icmp slt i64 %122, %spec.select
  br i1 %123, label %.thread400.sink.split, label %124

124:                                              ; preds = %121
  %125 = load i64, ptr %7, align 8, !tbaa !5
  %126 = icmp slt i64 %125, %spec.select
  br i1 %126, label %.thread400.sink.split, label %127

127:                                              ; preds = %124
  %128 = load i64, ptr %12, align 8, !tbaa !5
  %129 = icmp slt i64 %128, %spec.select
  br i1 %129, label %.thread400.sink.split, label %130

130:                                              ; preds = %127
  %131 = load i64, ptr %14, align 8, !tbaa !5
  %132 = icmp slt i64 %131, %spec.select
  br i1 %132, label %.thread400.sink.split, label %133

133:                                              ; preds = %130
  %.pr = load i64, ptr %24, align 8, !tbaa !5
  %.not385 = icmp eq i64 %.pr, 0
  br i1 %.not385, label %137, label %.thread400

.thread400.sink.split:                            ; preds = %130, %127, %124, %121, %118, %115, %113, %108
  %.sink = phi i64 [ -1, %108 ], [ -2, %113 ], [ -3, %115 ], [ -4, %118 ], [ -6, %121 ], [ -8, %124 ], [ -13, %127 ], [ -15, %130 ]
  store i64 %.sink, ptr %24, align 8, !tbaa !5
  br label %.thread400

.thread400:                                       ; preds = %.thread400.sink.split, %133
  %134 = phi i64 [ %.pr, %133 ], [ %.sink, %.thread400.sink.split ]
  %135 = sub nsw i64 0, %134
  store i64 %135, ptr %32, align 8, !tbaa !5
  %136 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %32) #6
  br label %.loopexit

137:                                              ; preds = %133
  %138 = icmp eq i64 %116, 0
  br i1 %138, label %141, label %139

139:                                              ; preds = %137
  %140 = icmp eq i64 %119, 0
  br i1 %140, label %.thread436, label %.lr.ph

.thread436:                                       ; preds = %139
  store float 1.000000e+00, ptr %15, align 4, !tbaa !9
  br label %.loopexit

141:                                              ; preds = %137
  store float 1.000000e+00, ptr %15, align 4, !tbaa !9
  %.not396418 = icmp eq i64 %119, 0
  br i1 %.not396418, label %.loopexit, label %.lr.ph421

.lr.ph421:                                        ; preds = %141
  %142 = load i64, ptr %17, align 8, !tbaa !5
  %143 = icmp sgt i64 %142, 0
  br i1 %143, label %.lr.ph421.split.us.preheader, label %.lr.ph421.split.preheader

.lr.ph421.split.us.preheader:                     ; preds = %.lr.ph421
  %min.iters.check470 = icmp ult i64 %119, 12
  br i1 %min.iters.check470, label %.lr.ph421.split.us.preheader481, label %vector.memcheck462

.lr.ph421.split.us.preheader481:                  ; preds = %middle.block468, %vector.memcheck462, %.lr.ph421.split.us.preheader
  %.0365419.us.ph = phi i64 [ 1, %vector.memcheck462 ], [ 1, %.lr.ph421.split.us.preheader ], [ %ind.end474, %middle.block468 ]
  %xtraiter487 = and i64 %119, 1
  %lcmp.mod488.not = icmp eq i64 %xtraiter487, 0
  br i1 %lcmp.mod488.not, label %.lr.ph421.split.us.prol.loopexit, label %.lr.ph421.split.us.prol

.lr.ph421.split.us.prol:                          ; preds = %.lr.ph421.split.us.preheader481
  %144 = getelementptr inbounds float, ptr %51, i64 %.0365419.us.ph
  store float 0.000000e+00, ptr %144, align 4, !tbaa !9
  %145 = add nsw i64 %.0365419.us.ph, %44
  %146 = getelementptr inbounds float, ptr %47, i64 %145
  store float 1.000000e+00, ptr %146, align 4, !tbaa !9
  %147 = getelementptr inbounds float, ptr %46, i64 %145
  store float 1.000000e+00, ptr %147, align 4, !tbaa !9
  %148 = add nuw i64 %.0365419.us.ph, 1
  br label %.lr.ph421.split.us.prol.loopexit

.lr.ph421.split.us.prol.loopexit:                 ; preds = %.lr.ph421.split.us.prol, %.lr.ph421.split.us.preheader481
  %.0365419.us.unr = phi i64 [ %.0365419.us.ph, %.lr.ph421.split.us.preheader481 ], [ %148, %.lr.ph421.split.us.prol ]
  %149 = icmp eq i64 %119, %.0365419.us.ph
  br i1 %149, label %.loopexit, label %.lr.ph421.split.us

vector.memcheck462:                               ; preds = %.lr.ph421.split.us.preheader
  %150 = sub i64 %28, %27
  %diff.check463 = icmp ult i64 %150, 32
  %151 = sub i64 %26, %27
  %diff.check464 = icmp ult i64 %151, 32
  %conflict.rdx465 = or i1 %diff.check463, %diff.check464
  %152 = sub i64 %26, %28
  %diff.check466 = icmp ult i64 %152, 32
  %conflict.rdx467 = or i1 %conflict.rdx465, %diff.check466
  br i1 %conflict.rdx467, label %.lr.ph421.split.us.preheader481, label %vector.ph471

vector.ph471:                                     ; preds = %vector.memcheck462
  %n.vec473 = and i64 %119, 9223372036854775800
  %ind.end474 = or disjoint i64 %n.vec473, 1
  br label %vector.body476

vector.body476:                                   ; preds = %vector.body476, %vector.ph471
  %index477 = phi i64 [ 0, %vector.ph471 ], [ %index.next479, %vector.body476 ]
  %offset.idx478 = or disjoint i64 %index477, 1
  %153 = getelementptr float, ptr %16, i64 %index477
  %154 = getelementptr inbounds i8, ptr %153, i64 16
  store <4 x float> zeroinitializer, ptr %153, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %154, align 4, !tbaa !9
  %155 = add nsw i64 %offset.idx478, %44
  %156 = getelementptr inbounds float, ptr %47, i64 %155
  %157 = getelementptr inbounds i8, ptr %156, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %156, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %157, align 4, !tbaa !9
  %158 = getelementptr inbounds float, ptr %46, i64 %155
  %159 = getelementptr inbounds i8, ptr %158, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %158, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %159, align 4, !tbaa !9
  %index.next479 = add nuw i64 %index477, 8
  %160 = icmp eq i64 %index.next479, %n.vec473
  br i1 %160, label %middle.block468, label %vector.body476, !llvm.loop !11

middle.block468:                                  ; preds = %vector.body476
  %cmp.n480 = icmp eq i64 %119, %n.vec473
  br i1 %cmp.n480, label %.loopexit, label %.lr.ph421.split.us.preheader481

.lr.ph421.split.preheader:                        ; preds = %.lr.ph421
  %161 = shl nuw i64 %119, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %16, i8 0, i64 %161, i1 false), !tbaa !9
  br label %.loopexit

.lr.ph421.split.us:                               ; preds = %.lr.ph421.split.us.prol.loopexit, %.lr.ph421.split.us
  %.0365419.us = phi i64 [ %170, %.lr.ph421.split.us ], [ %.0365419.us.unr, %.lr.ph421.split.us.prol.loopexit ]
  %162 = getelementptr inbounds float, ptr %51, i64 %.0365419.us
  store float 0.000000e+00, ptr %162, align 4, !tbaa !9
  %163 = add nsw i64 %.0365419.us, %44
  %164 = getelementptr inbounds float, ptr %47, i64 %163
  store float 1.000000e+00, ptr %164, align 4, !tbaa !9
  %165 = getelementptr inbounds float, ptr %46, i64 %163
  store float 1.000000e+00, ptr %165, align 4, !tbaa !9
  %166 = add nuw i64 %.0365419.us, 1
  %167 = getelementptr float, ptr %16, i64 %.0365419.us
  store float 0.000000e+00, ptr %167, align 4, !tbaa !9
  %168 = getelementptr inbounds float, ptr %18, i64 %.0365419.us
  store float 1.000000e+00, ptr %168, align 4, !tbaa !9
  %169 = getelementptr inbounds float, ptr %19, i64 %.0365419.us
  store float 1.000000e+00, ptr %169, align 4, !tbaa !9
  %170 = add nuw i64 %.0365419.us, 2
  %exitcond429.not.1 = icmp eq i64 %166, %119
  br i1 %exitcond429.not.1, label %.loopexit, label %.lr.ph421.split.us, !llvm.loop !15

.lr.ph:                                           ; preds = %139
  store float 0.000000e+00, ptr %15, align 4, !tbaa !9
  %171 = load i64, ptr %17, align 8, !tbaa !5
  %172 = icmp sgt i64 %171, 0
  br i1 %172, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader

.lr.ph.split.preheader:                           ; preds = %.lr.ph
  %min.iters.check = icmp ult i64 %119, 8
  br i1 %min.iters.check, label %.lr.ph.split.preheader485, label %vector.ph

.lr.ph.split.preheader485:                        ; preds = %middle.block, %.lr.ph.split.preheader
  %.1366405.ph = phi i64 [ 1, %.lr.ph.split.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph.split

vector.ph:                                        ; preds = %.lr.ph.split.preheader
  %n.vec = and i64 %119, 9223372036854775800
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %173 = getelementptr float, ptr %16, i64 %index
  %174 = getelementptr inbounds i8, ptr %173, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %173, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %174, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 8
  %175 = icmp eq i64 %index.next, %n.vec
  br i1 %175, label %middle.block, label %vector.body, !llvm.loop !16

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %119, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.split.preheader485

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %min.iters.check451 = icmp ult i64 %119, 12
  br i1 %min.iters.check451, label %.lr.ph.split.us.preheader484, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.split.us.preheader
  %176 = sub i64 %31, %30
  %diff.check = icmp ult i64 %176, 32
  %177 = sub i64 %29, %30
  %diff.check446 = icmp ult i64 %177, 32
  %conflict.rdx = or i1 %diff.check, %diff.check446
  %178 = sub i64 %29, %31
  %diff.check447 = icmp ult i64 %178, 32
  %conflict.rdx448 = or i1 %conflict.rdx, %diff.check447
  br i1 %conflict.rdx448, label %.lr.ph.split.us.preheader484, label %vector.ph452

vector.ph452:                                     ; preds = %vector.memcheck
  %n.vec454 = and i64 %119, 9223372036854775800
  %ind.end455 = or disjoint i64 %n.vec454, 1
  br label %vector.body457

vector.body457:                                   ; preds = %vector.body457, %vector.ph452
  %index458 = phi i64 [ 0, %vector.ph452 ], [ %index.next460, %vector.body457 ]
  %offset.idx459 = or disjoint i64 %index458, 1
  %179 = getelementptr float, ptr %16, i64 %index458
  %180 = getelementptr inbounds i8, ptr %179, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %179, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %180, align 4, !tbaa !9
  %181 = add nsw i64 %offset.idx459, %44
  %182 = getelementptr inbounds float, ptr %47, i64 %181
  %183 = getelementptr inbounds i8, ptr %182, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %182, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %183, align 4, !tbaa !9
  %184 = getelementptr inbounds float, ptr %46, i64 %181
  %185 = getelementptr inbounds i8, ptr %184, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %184, align 4, !tbaa !9
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %185, align 4, !tbaa !9
  %index.next460 = add nuw i64 %index458, 8
  %186 = icmp eq i64 %index.next460, %n.vec454
  br i1 %186, label %middle.block449, label %vector.body457, !llvm.loop !17

middle.block449:                                  ; preds = %vector.body457
  %cmp.n461 = icmp eq i64 %119, %n.vec454
  br i1 %cmp.n461, label %._crit_edge, label %.lr.ph.split.us.preheader484

.lr.ph.split.us.preheader484:                     ; preds = %middle.block449, %vector.memcheck, %.lr.ph.split.us.preheader
  %.1366405.us.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.split.us.preheader ], [ %ind.end455, %middle.block449 ]
  %xtraiter = and i64 %119, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.split.us.prol.loopexit, label %.lr.ph.split.us.prol

.lr.ph.split.us.prol:                             ; preds = %.lr.ph.split.us.preheader484
  %187 = getelementptr inbounds float, ptr %51, i64 %.1366405.us.ph
  store float 1.000000e+00, ptr %187, align 4, !tbaa !9
  %188 = add nsw i64 %.1366405.us.ph, %44
  %189 = getelementptr inbounds float, ptr %47, i64 %188
  store float 1.000000e+00, ptr %189, align 4, !tbaa !9
  %190 = getelementptr inbounds float, ptr %46, i64 %188
  store float 1.000000e+00, ptr %190, align 4, !tbaa !9
  %191 = add nuw i64 %.1366405.us.ph, 1
  br label %.lr.ph.split.us.prol.loopexit

.lr.ph.split.us.prol.loopexit:                    ; preds = %.lr.ph.split.us.prol, %.lr.ph.split.us.preheader484
  %.1366405.us.unr = phi i64 [ %.1366405.us.ph, %.lr.ph.split.us.preheader484 ], [ %191, %.lr.ph.split.us.prol ]
  %192 = icmp eq i64 %119, %.1366405.us.ph
  br i1 %192, label %._crit_edge, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us
  %.1366405.us = phi i64 [ %201, %.lr.ph.split.us ], [ %.1366405.us.unr, %.lr.ph.split.us.prol.loopexit ]
  %193 = getelementptr inbounds float, ptr %51, i64 %.1366405.us
  store float 1.000000e+00, ptr %193, align 4, !tbaa !9
  %194 = add nsw i64 %.1366405.us, %44
  %195 = getelementptr inbounds float, ptr %47, i64 %194
  store float 1.000000e+00, ptr %195, align 4, !tbaa !9
  %196 = getelementptr inbounds float, ptr %46, i64 %194
  store float 1.000000e+00, ptr %196, align 4, !tbaa !9
  %197 = add nuw i64 %.1366405.us, 1
  %198 = getelementptr float, ptr %16, i64 %.1366405.us
  store float 1.000000e+00, ptr %198, align 4, !tbaa !9
  %199 = getelementptr inbounds float, ptr %18, i64 %.1366405.us
  store float 1.000000e+00, ptr %199, align 4, !tbaa !9
  %200 = getelementptr inbounds float, ptr %19, i64 %.1366405.us
  store float 1.000000e+00, ptr %200, align 4, !tbaa !9
  %201 = add nuw i64 %.1366405.us, 2
  %exitcond426.not.1 = icmp eq i64 %197, %119
  br i1 %exitcond426.not.1, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !18

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader485, %.lr.ph.split
  %.1366405 = phi i64 [ %203, %.lr.ph.split ], [ %.1366405.ph, %.lr.ph.split.preheader485 ]
  %202 = getelementptr inbounds float, ptr %51, i64 %.1366405
  store float 1.000000e+00, ptr %202, align 4, !tbaa !9
  %203 = add nuw i64 %.1366405, 1
  %exitcond.not = icmp eq i64 %.1366405, %119
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph.split, %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us, %middle.block, %middle.block449
  %204 = icmp ne i64 %96, 0
  %. = select i1 %204, i8 73, i8 49
  store i8 %., ptr %36, align 1, !tbaa !20
  %205 = call double @clange_(ptr noundef nonnull %36, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %23) #6
  %206 = fptrunc double %205 to float
  store float %206, ptr %38, align 4, !tbaa !9
  %207 = call i32 @cgecon_(ptr noundef nonnull %36, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %38, ptr noundef nonnull %15, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %24) #6
  br i1 %87, label %216, label %208

208:                                              ; preds = %._crit_edge
  %209 = call i64 @ilaprec_(ptr noundef nonnull @.str.6) #6
  store i64 %209, ptr %34, align 8, !tbaa !5
  %210 = load i64, ptr %2, align 8, !tbaa !5
  %211 = getelementptr %struct.complex, ptr %22, i64 %210
  br i1 %204, label %212, label %214

212:                                              ; preds = %208
  %213 = call i32 @cla_gerfsx_extended__(ptr noundef nonnull %34, ptr noundef nonnull %35, 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 nonnull %39, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull %42, ptr noundef %18, ptr noundef %19, ptr noundef %22, ptr noundef %23, ptr noundef %211, ptr noundef %23, ptr noundef nonnull %15, ptr noundef nonnull %41, ptr noundef nonnull %43, ptr noundef nonnull %33, ptr noundef nonnull %37, ptr noundef nonnull %24) #6
  br label %216

214:                                              ; preds = %208
  %215 = call i32 @cla_gerfsx_extended__(ptr noundef nonnull %34, ptr noundef nonnull %35, 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 nonnull %40, ptr noundef %9, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull %42, ptr noundef %18, ptr noundef %19, ptr noundef %22, ptr noundef %23, ptr noundef %211, ptr noundef %23, ptr noundef nonnull %15, ptr noundef nonnull %41, ptr noundef nonnull %43, ptr noundef nonnull %33, ptr noundef nonnull %37, ptr noundef nonnull %24) #6
  br label %216

216:                                              ; preds = %212, %214, %._crit_edge
  %217 = load i64, ptr %2, align 8, !tbaa !5
  %218 = sitofp i64 %217 to float
  %sqrtf = call float @sqrtf(float noundef %218) #3
  %219 = fcmp ole float %sqrtf, 1.000000e+01
  %220 = select i1 %219, float 1.000000e+01, float %sqrtf
  %221 = fpext float %220 to double
  %222 = call double @slamch_(ptr noundef nonnull @.str) #6
  %223 = fmul double %222, %221
  %224 = fptrunc double %223 to float
  %225 = load i64, ptr %17, align 8, !tbaa !5
  %226 = icmp sgt i64 %225, 0
  %227 = load i64, ptr %42, align 8
  %228 = icmp sgt i64 %227, 0
  %or.cond3 = select i1 %226, i1 %228, i1 false
  br i1 %or.cond3, label %229, label %.loopexit403

229:                                              ; preds = %216
  %230 = load i64, ptr %39, align 8, !tbaa !5
  %231 = icmp ne i64 %230, 0
  %or.cond5 = and i1 %204, %231
  br i1 %or.cond5, label %232, label %234

232:                                              ; preds = %229
  %233 = call double @cla_gercond_c__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %10, ptr noundef nonnull @c_true, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %241

234:                                              ; preds = %229
  %235 = load i64, ptr %40, align 8, !tbaa !5
  %236 = icmp eq i64 %235, 0
  %or.cond7 = or i1 %204, %236
  br i1 %or.cond7, label %239, label %237

237:                                              ; preds = %234
  %238 = call double @cla_gercond_c__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull @c_true, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %241

239:                                              ; preds = %234
  %240 = call double @cla_gercond_c__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %10, ptr noundef nonnull @c_false, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %241

241:                                              ; preds = %237, %239, %232
  %.0364.in = phi double [ %233, %232 ], [ %240, %239 ], [ %238, %237 ]
  %.0364 = fptrunc double %.0364.in to float
  %242 = load i64, ptr %3, align 8, !tbaa !5
  %.not388406 = icmp slt i64 %242, 1
  br i1 %.not388406, label %..loopexit403_crit_edge, label %.lr.ph409

..loopexit403_crit_edge:                          ; preds = %241
  %.pre434 = load i64, ptr %17, align 8, !tbaa !5
  br label %.loopexit403

.lr.ph409:                                        ; preds = %241
  %.idx391 = shl i64 %44, 3
  %invariant.gep = getelementptr i8, ptr %47, i64 %.idx391
  %243 = fcmp olt float %.0364, %67
  %.idx395 = mul i64 %44, 12
  %invariant.gep410 = getelementptr i8, ptr %47, i64 %.idx395
  %.pre432 = load i64, ptr %17, align 8, !tbaa !5
  br i1 %243, label %.lr.ph409.split.us, label %.lr.ph409.split.preheader

.lr.ph409.split.preheader:                        ; preds = %.lr.ph409
  %244 = icmp sgt i64 %.pre432, 1
  %invariant.gep441 = getelementptr i8, ptr %47, i64 %.idx391
  %245 = icmp sgt i64 %.pre432, 2
  br label %.lr.ph409.split

.lr.ph409.split.us:                               ; preds = %.lr.ph409, %258
  %246 = phi i64 [ %255, %258 ], [ %.pre432, %.lr.ph409 ]
  %.2407.us = phi i64 [ %259, %258 ], [ 1, %.lr.ph409 ]
  %247 = getelementptr float, ptr %47, i64 %.2407.us
  %248 = getelementptr i8, ptr %247, i64 %.idx391
  store float 1.000000e+00, ptr %248, align 4, !tbaa !9
  %249 = getelementptr float, ptr %247, i64 %44
  store float 0.000000e+00, ptr %249, align 4, !tbaa !9
  %250 = load i64, ptr %24, align 8, !tbaa !5
  %251 = load i64, ptr %2, align 8, !tbaa !5
  %.not394.us = icmp sgt i64 %250, %251
  br i1 %.not394.us, label %254, label %252

252:                                              ; preds = %.lr.ph409.split.us
  %253 = add nsw i64 %251, %.2407.us
  store i64 %253, ptr %24, align 8, !tbaa !5
  %.pre433 = load i64, ptr %17, align 8, !tbaa !5
  br label %254

254:                                              ; preds = %252, %.lr.ph409.split.us
  %255 = phi i64 [ %.pre433, %252 ], [ %246, %.lr.ph409.split.us ]
  %256 = icmp sgt i64 %255, 2
  br i1 %256, label %257, label %258

257:                                              ; preds = %254
  %gep411.us = getelementptr float, ptr %invariant.gep410, i64 %.2407.us
  store float %.0364, ptr %gep411.us, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %257, %254
  %259 = add nuw i64 %.2407.us, 1
  %exitcond428.not = icmp eq i64 %.2407.us, %242
  br i1 %exitcond428.not, label %.loopexit403, label %.lr.ph409.split.us, !llvm.loop !21

.lr.ph409.split:                                  ; preds = %.lr.ph409.split.preheader, %273
  %.2407 = phi i64 [ %274, %273 ], [ 1, %.lr.ph409.split.preheader ]
  br i1 %244, label %260, label %.lr.ph409.split._crit_edge

.lr.ph409.split._crit_edge:                       ; preds = %.lr.ph409.split
  %gep442 = getelementptr float, ptr %invariant.gep441, i64 %.2407
  %.pre431 = load float, ptr %gep442, align 4, !tbaa !9
  br label %264

260:                                              ; preds = %.lr.ph409.split
  %gep = getelementptr float, ptr %invariant.gep, i64 %.2407
  %261 = load float, ptr %gep, align 4, !tbaa !9
  %262 = fcmp ogt float %261, 1.000000e+00
  br i1 %262, label %263, label %264

263:                                              ; preds = %260
  store float 1.000000e+00, ptr %gep, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %.lr.ph409.split._crit_edge, %263, %260
  %265 = phi float [ %.pre431, %.lr.ph409.split._crit_edge ], [ 1.000000e+00, %263 ], [ %261, %260 ]
  %266 = fcmp olt float %265, %224
  br i1 %266, label %267, label %271

267:                                              ; preds = %264
  %268 = getelementptr float, ptr %47, i64 %.2407
  %269 = getelementptr i8, ptr %268, i64 %.idx391
  store float %224, ptr %269, align 4, !tbaa !9
  %270 = getelementptr float, ptr %268, i64 %44
  store float 1.000000e+00, ptr %270, align 4, !tbaa !9
  br label %271

271:                                              ; preds = %264, %267
  br i1 %245, label %272, label %273

272:                                              ; preds = %271
  %gep411 = getelementptr float, ptr %invariant.gep410, i64 %.2407
  store float %.0364, ptr %gep411, align 4, !tbaa !9
  br label %273

273:                                              ; preds = %271, %272
  %274 = add nuw i64 %.2407, 1
  %exitcond427.not = icmp eq i64 %.2407, %242
  br i1 %exitcond427.not, label %.loopexit403, label %.lr.ph409.split, !llvm.loop !21

.loopexit403:                                     ; preds = %273, %258, %..loopexit403_crit_edge, %216
  %275 = phi i64 [ %.pre434, %..loopexit403_crit_edge ], [ %225, %216 ], [ %255, %258 ], [ %.pre432, %273 ]
  %276 = icmp sgt i64 %275, 0
  %277 = load i64, ptr %42, align 8
  %278 = icmp sgt i64 %277, 1
  %or.cond9 = select i1 %276, i1 %278, i1 false
  br i1 %or.cond9, label %279, label %.loopexit

279:                                              ; preds = %.loopexit403
  %280 = call double @slamch_(ptr noundef nonnull @.str) #6
  %281 = call double @sqrt(double noundef %280) #6
  %282 = fptrunc double %281 to float
  %283 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep412 = getelementptr i8, ptr %50, i64 8
  %.not389414 = icmp slt i64 %283, 1
  br i1 %.not389414, label %.loopexit, label %.lr.ph417

.lr.ph417:                                        ; preds = %279
  %.idx = shl i64 %44, 3
  %284 = getelementptr inbounds i8, ptr %21, i64 8
  %.idx390 = mul i64 %44, 12
  br label %285

285:                                              ; preds = %.lr.ph417, %323
  %.3415 = phi i64 [ 1, %.lr.ph417 ], [ %324, %323 ]
  %286 = getelementptr float, ptr %46, i64 %.3415
  %287 = getelementptr i8, ptr %286, i64 %.idx
  %288 = load float, ptr %287, align 4, !tbaa !9
  %289 = fcmp olt float %288, %282
  br i1 %289, label %290, label %294

290:                                              ; preds = %285
  %291 = mul nsw i64 %.3415, %48
  %gep413 = getelementptr %struct.complex, ptr %invariant.gep412, i64 %291
  %292 = call double @cla_gercond_x__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef %gep413, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  %293 = fptrunc double %292 to float
  br label %294

294:                                              ; preds = %285, %290
  %.1 = phi float [ %293, %290 ], [ 0.000000e+00, %285 ]
  %295 = load i64, ptr %17, align 8, !tbaa !5
  %296 = icmp sgt i64 %295, 1
  br i1 %296, label %297, label %301

297:                                              ; preds = %294
  %298 = load float, ptr %287, align 4, !tbaa !9
  %299 = fcmp ogt float %298, 1.000000e+00
  br i1 %299, label %300, label %301

300:                                              ; preds = %297
  store float 1.000000e+00, ptr %287, align 4, !tbaa !9
  br label %301

301:                                              ; preds = %300, %297, %294
  %302 = fcmp olt float %.1, %67
  br i1 %302, label %303, label %313

303:                                              ; preds = %301
  store float 1.000000e+00, ptr %287, align 4, !tbaa !9
  %304 = getelementptr float, ptr %286, i64 %44
  store float 0.000000e+00, ptr %304, align 4, !tbaa !9
  %305 = load float, ptr %284, align 4, !tbaa !9
  %306 = fcmp oeq float %305, 1.000000e+00
  br i1 %306, label %307, label %318

307:                                              ; preds = %303
  %308 = load i64, ptr %24, align 8, !tbaa !5
  %309 = load i64, ptr %2, align 8, !tbaa !5
  %310 = add nsw i64 %309, %.3415
  %311 = icmp slt i64 %308, %310
  br i1 %311, label %312, label %318

312:                                              ; preds = %307
  store i64 %310, ptr %24, align 8, !tbaa !5
  %.pre435 = load i64, ptr %17, align 8, !tbaa !5
  br label %318

313:                                              ; preds = %301
  %314 = load float, ptr %287, align 4, !tbaa !9
  %315 = fcmp olt float %314, %224
  br i1 %315, label %316, label %318

316:                                              ; preds = %313
  store float %224, ptr %287, align 4, !tbaa !9
  %317 = getelementptr float, ptr %286, i64 %44
  store float 1.000000e+00, ptr %317, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %313, %316, %303, %307, %312
  %319 = phi i64 [ %295, %313 ], [ %295, %316 ], [ %295, %303 ], [ %295, %307 ], [ %.pre435, %312 ]
  %320 = icmp sgt i64 %319, 2
  br i1 %320, label %321, label %323

321:                                              ; preds = %318
  %322 = getelementptr i8, ptr %286, i64 %.idx390
  store float %.1, ptr %322, align 4, !tbaa !9
  br label %323

323:                                              ; preds = %318, %321
  %324 = add nuw nsw i64 %.3415, 1
  %.not389.not = icmp slt i64 %.3415, %283
  br i1 %.not389.not, label %285, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %323, %.lr.ph421.split.us.prol.loopexit, %.lr.ph421.split.us, %middle.block468, %.thread436, %.lr.ph421.split.preheader, %279, %141, %.loopexit403, %.thread400
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  ret i32 0
}

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

declare i64 @ilatrans_(ptr noundef) local_unnamed_addr #2

declare double @slamch_(ptr noundef) local_unnamed_addr #2

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

declare i32 @xerbla_(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 i64 @ilaprec_(ptr noundef) local_unnamed_addr #2

declare i32 @cla_gerfsx_extended__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

declare double @cla_gercond_c__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

declare double @cla_gercond_x__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

declare float @sqrtf(float) local_unnamed_addr

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

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


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