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

; 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 }

@c__1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @cgeqlf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7) #0 {
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca i32, align 4
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  %40 = load ptr, ptr %13, align 8, !tbaa !5
  %41 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %41, ptr %18, align 8, !tbaa !9
  %42 = load i64, ptr %18, align 8, !tbaa !9
  %43 = add nsw i64 1, %42
  store i64 %43, ptr %19, align 8, !tbaa !9
  %44 = load i64, ptr %19, align 8, !tbaa !9
  %45 = load ptr, ptr %12, align 8, !tbaa !5
  %46 = sub i64 0, %44
  %47 = getelementptr inbounds %struct.complex, ptr %45, i64 %46
  store ptr %47, ptr %12, align 8, !tbaa !5
  %48 = load ptr, ptr %14, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.complex, ptr %48, i32 -1
  store ptr %49, ptr %14, align 8, !tbaa !5
  %50 = load ptr, ptr %15, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.complex, ptr %50, i32 -1
  store ptr %51, ptr %15, align 8, !tbaa !5
  %52 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 0, ptr %52, align 8, !tbaa !9
  %53 = load ptr, ptr %16, align 8, !tbaa !5
  %54 = load i64, ptr %53, align 8, !tbaa !9
  %55 = icmp eq i64 %54, -1
  %56 = zext i1 %55 to i32
  %57 = sext i32 %56 to i64
  store i64 %57, ptr %38, align 8, !tbaa !9
  %58 = load ptr, ptr %10, align 8, !tbaa !5
  %59 = load i64, ptr %58, align 8, !tbaa !9
  %60 = icmp slt i64 %59, 0
  br i1 %60, label %61, label %63

61:                                               ; preds = %8
  %62 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -1, ptr %62, align 8, !tbaa !9
  br label %86

63:                                               ; preds = %8
  %64 = load ptr, ptr %11, align 8, !tbaa !5
  %65 = load i64, ptr %64, align 8, !tbaa !9
  %66 = icmp slt i64 %65, 0
  br i1 %66, label %67, label %69

67:                                               ; preds = %63
  %68 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -2, ptr %68, align 8, !tbaa !9
  br label %85

69:                                               ; preds = %63
  %70 = load ptr, ptr %13, align 8, !tbaa !5
  %71 = load i64, ptr %70, align 8, !tbaa !9
  %72 = load ptr, ptr %10, align 8, !tbaa !5
  %73 = load i64, ptr %72, align 8, !tbaa !9
  %74 = icmp sge i64 1, %73
  br i1 %74, label %75, label %76

75:                                               ; preds = %69
  br label %79

76:                                               ; preds = %69
  %77 = load ptr, ptr %10, align 8, !tbaa !5
  %78 = load i64, ptr %77, align 8, !tbaa !9
  br label %79

79:                                               ; preds = %76, %75
  %80 = phi i64 [ 1, %75 ], [ %78, %76 ]
  %81 = icmp slt i64 %71, %80
  br i1 %81, label %82, label %84

82:                                               ; preds = %79
  %83 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -4, ptr %83, align 8, !tbaa !9
  br label %84

84:                                               ; preds = %82, %79
  br label %85

85:                                               ; preds = %84, %67
  br label %86

86:                                               ; preds = %85, %61
  %87 = load ptr, ptr %17, align 8, !tbaa !5
  %88 = load i64, ptr %87, align 8, !tbaa !9
  %89 = icmp eq i64 %88, 0
  br i1 %89, label %90, label %142

90:                                               ; preds = %86
  %91 = load ptr, ptr %10, align 8, !tbaa !5
  %92 = load i64, ptr %91, align 8, !tbaa !9
  %93 = load ptr, ptr %11, align 8, !tbaa !5
  %94 = load i64, ptr %93, align 8, !tbaa !9
  %95 = icmp sle i64 %92, %94
  br i1 %95, label %96, label %99

96:                                               ; preds = %90
  %97 = load ptr, ptr %10, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  br label %102

99:                                               ; preds = %90
  %100 = load ptr, ptr %11, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  br label %102

102:                                              ; preds = %99, %96
  %103 = phi i64 [ %98, %96 ], [ %101, %99 ]
  store i64 %103, ptr %25, align 8, !tbaa !9
  %104 = load i64, ptr %25, align 8, !tbaa !9
  %105 = icmp eq i64 %104, 0
  br i1 %105, label %106, label %107

106:                                              ; preds = %102
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %115

107:                                              ; preds = %102
  %108 = load ptr, ptr %10, align 8, !tbaa !5
  %109 = load ptr, ptr %11, align 8, !tbaa !5
  %110 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %108, ptr noundef %109, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %110, ptr %27, align 8, !tbaa !9
  %111 = load ptr, ptr %11, align 8, !tbaa !5
  %112 = load i64, ptr %111, align 8, !tbaa !9
  %113 = load i64, ptr %27, align 8, !tbaa !9
  %114 = mul nsw i64 %112, %113
  store i64 %114, ptr %37, align 8, !tbaa !9
  br label %115

115:                                              ; preds = %107, %106
  %116 = load i64, ptr %37, align 8, !tbaa !9
  %117 = sitofp i64 %116 to float
  %118 = load ptr, ptr %15, align 8, !tbaa !5
  %119 = getelementptr inbounds %struct.complex, ptr %118, i64 1
  %120 = getelementptr inbounds %struct.complex, ptr %119, i32 0, i32 0
  store float %117, ptr %120, align 4, !tbaa !11
  %121 = load ptr, ptr %15, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.complex, ptr %121, i64 1
  %123 = getelementptr inbounds %struct.complex, ptr %122, i32 0, i32 1
  store float 0.000000e+00, ptr %123, align 4, !tbaa !14
  %124 = load ptr, ptr %16, align 8, !tbaa !5
  %125 = load i64, ptr %124, align 8, !tbaa !9
  %126 = load ptr, ptr %11, align 8, !tbaa !5
  %127 = load i64, ptr %126, align 8, !tbaa !9
  %128 = icmp sge i64 1, %127
  br i1 %128, label %129, label %130

129:                                              ; preds = %115
  br label %133

130:                                              ; preds = %115
  %131 = load ptr, ptr %11, align 8, !tbaa !5
  %132 = load i64, ptr %131, align 8, !tbaa !9
  br label %133

133:                                              ; preds = %130, %129
  %134 = phi i64 [ 1, %129 ], [ %132, %130 ]
  %135 = icmp slt i64 %125, %134
  br i1 %135, label %136, label %141

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

139:                                              ; preds = %136
  %140 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -7, ptr %140, align 8, !tbaa !9
  br label %141

141:                                              ; preds = %139, %136, %133
  br label %142

142:                                              ; preds = %141, %86
  %143 = load ptr, ptr %17, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = icmp ne i64 %144, 0
  br i1 %145, label %146, label %151

146:                                              ; preds = %142
  %147 = load ptr, ptr %17, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = sub nsw i64 0, %148
  store i64 %149, ptr %20, align 8, !tbaa !9
  %150 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %20)
  store i32 0, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %445

151:                                              ; preds = %142
  %152 = load i64, ptr %38, align 8, !tbaa !9
  %153 = icmp ne i64 %152, 0
  br i1 %153, label %154, label %155

154:                                              ; preds = %151
  store i32 0, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %445

155:                                              ; preds = %151
  br label %156

156:                                              ; preds = %155
  %157 = load i64, ptr %25, align 8, !tbaa !9
  %158 = icmp eq i64 %157, 0
  br i1 %158, label %159, label %160

159:                                              ; preds = %156
  store i32 0, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %445

160:                                              ; preds = %156
  store i64 2, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  %161 = load ptr, ptr %11, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  store i64 %162, ptr %33, align 8, !tbaa !9
  %163 = load i64, ptr %27, align 8, !tbaa !9
  %164 = icmp sgt i64 %163, 1
  br i1 %164, label %165, label %214

165:                                              ; preds = %160
  %166 = load i64, ptr %27, align 8, !tbaa !9
  %167 = load i64, ptr %25, align 8, !tbaa !9
  %168 = icmp slt i64 %166, %167
  br i1 %168, label %169, label %214

169:                                              ; preds = %165
  store i64 0, ptr %20, align 8, !tbaa !9
  %170 = load ptr, ptr %10, align 8, !tbaa !5
  %171 = load ptr, ptr %11, align 8, !tbaa !5
  %172 = call i64 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %170, ptr noundef %171, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %172, ptr %21, align 8, !tbaa !9
  %173 = load i64, ptr %20, align 8, !tbaa !9
  %174 = load i64, ptr %21, align 8, !tbaa !9
  %175 = icmp sge i64 %173, %174
  br i1 %175, label %176, label %178

176:                                              ; preds = %169
  %177 = load i64, ptr %20, align 8, !tbaa !9
  br label %180

178:                                              ; preds = %169
  %179 = load i64, ptr %21, align 8, !tbaa !9
  br label %180

180:                                              ; preds = %178, %176
  %181 = phi i64 [ %177, %176 ], [ %179, %178 ]
  store i64 %181, ptr %32, align 8, !tbaa !9
  %182 = load i64, ptr %32, align 8, !tbaa !9
  %183 = load i64, ptr %25, align 8, !tbaa !9
  %184 = icmp slt i64 %182, %183
  br i1 %184, label %185, label %213

185:                                              ; preds = %180
  %186 = load ptr, ptr %11, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  store i64 %187, ptr %36, align 8, !tbaa !9
  %188 = load i64, ptr %36, align 8, !tbaa !9
  %189 = load i64, ptr %27, align 8, !tbaa !9
  %190 = mul nsw i64 %188, %189
  store i64 %190, ptr %33, align 8, !tbaa !9
  %191 = load ptr, ptr %16, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  %193 = load i64, ptr %33, align 8, !tbaa !9
  %194 = icmp slt i64 %192, %193
  br i1 %194, label %195, label %212

195:                                              ; preds = %185
  %196 = load ptr, ptr %16, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  %198 = load i64, ptr %36, align 8, !tbaa !9
  %199 = sdiv i64 %197, %198
  store i64 %199, ptr %27, align 8, !tbaa !9
  store i64 2, ptr %20, align 8, !tbaa !9
  %200 = load ptr, ptr %10, align 8, !tbaa !5
  %201 = load ptr, ptr %11, align 8, !tbaa !5
  %202 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %200, ptr noundef %201, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %202, ptr %21, align 8, !tbaa !9
  %203 = load i64, ptr %20, align 8, !tbaa !9
  %204 = load i64, ptr %21, align 8, !tbaa !9
  %205 = icmp sge i64 %203, %204
  br i1 %205, label %206, label %208

206:                                              ; preds = %195
  %207 = load i64, ptr %20, align 8, !tbaa !9
  br label %210

208:                                              ; preds = %195
  %209 = load i64, ptr %21, align 8, !tbaa !9
  br label %210

210:                                              ; preds = %208, %206
  %211 = phi i64 [ %207, %206 ], [ %209, %208 ]
  store i64 %211, ptr %34, align 8, !tbaa !9
  br label %212

212:                                              ; preds = %210, %185
  br label %213

213:                                              ; preds = %212, %180
  br label %214

214:                                              ; preds = %213, %165, %160
  %215 = load i64, ptr %27, align 8, !tbaa !9
  %216 = load i64, ptr %34, align 8, !tbaa !9
  %217 = icmp sge i64 %215, %216
  br i1 %217, label %218, label %415

218:                                              ; preds = %214
  %219 = load i64, ptr %27, align 8, !tbaa !9
  %220 = load i64, ptr %25, align 8, !tbaa !9
  %221 = icmp slt i64 %219, %220
  br i1 %221, label %222, label %415

222:                                              ; preds = %218
  %223 = load i64, ptr %32, align 8, !tbaa !9
  %224 = load i64, ptr %25, align 8, !tbaa !9
  %225 = icmp slt i64 %223, %224
  br i1 %225, label %226, label %415

226:                                              ; preds = %222
  %227 = load i64, ptr %25, align 8, !tbaa !9
  %228 = load i64, ptr %32, align 8, !tbaa !9
  %229 = sub nsw i64 %227, %228
  %230 = sub nsw i64 %229, 1
  %231 = load i64, ptr %27, align 8, !tbaa !9
  %232 = sdiv i64 %230, %231
  %233 = load i64, ptr %27, align 8, !tbaa !9
  %234 = mul nsw i64 %232, %233
  store i64 %234, ptr %28, align 8, !tbaa !9
  %235 = load i64, ptr %25, align 8, !tbaa !9
  store i64 %235, ptr %20, align 8, !tbaa !9
  %236 = load i64, ptr %28, align 8, !tbaa !9
  %237 = load i64, ptr %27, align 8, !tbaa !9
  %238 = add nsw i64 %236, %237
  store i64 %238, ptr %21, align 8, !tbaa !9
  %239 = load i64, ptr %20, align 8, !tbaa !9
  %240 = load i64, ptr %21, align 8, !tbaa !9
  %241 = icmp sle i64 %239, %240
  br i1 %241, label %242, label %244

242:                                              ; preds = %226
  %243 = load i64, ptr %20, align 8, !tbaa !9
  br label %246

244:                                              ; preds = %226
  %245 = load i64, ptr %21, align 8, !tbaa !9
  br label %246

246:                                              ; preds = %244, %242
  %247 = phi i64 [ %243, %242 ], [ %245, %244 ]
  store i64 %247, ptr %29, align 8, !tbaa !9
  %248 = load i64, ptr %25, align 8, !tbaa !9
  %249 = load i64, ptr %29, align 8, !tbaa !9
  %250 = sub nsw i64 %248, %249
  %251 = add nsw i64 %250, 1
  store i64 %251, ptr %20, align 8, !tbaa !9
  %252 = load i64, ptr %27, align 8, !tbaa !9
  %253 = sub nsw i64 0, %252
  store i64 %253, ptr %21, align 8, !tbaa !9
  %254 = load i64, ptr %25, align 8, !tbaa !9
  %255 = load i64, ptr %29, align 8, !tbaa !9
  %256 = sub nsw i64 %254, %255
  %257 = load i64, ptr %28, align 8, !tbaa !9
  %258 = add nsw i64 %256, %257
  %259 = add nsw i64 %258, 1
  store i64 %259, ptr %24, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %392, %246
  %261 = load i64, ptr %21, align 8, !tbaa !9
  %262 = icmp slt i64 %261, 0
  br i1 %262, label %263, label %268

263:                                              ; preds = %260
  %264 = load i64, ptr %24, align 8, !tbaa !9
  %265 = load i64, ptr %20, align 8, !tbaa !9
  %266 = icmp sge i64 %264, %265
  %267 = zext i1 %266 to i32
  br label %273

268:                                              ; preds = %260
  %269 = load i64, ptr %24, align 8, !tbaa !9
  %270 = load i64, ptr %20, align 8, !tbaa !9
  %271 = icmp sle i64 %269, %270
  %272 = zext i1 %271 to i32
  br label %273

273:                                              ; preds = %268, %263
  %274 = phi i32 [ %267, %263 ], [ %272, %268 ]
  %275 = icmp ne i32 %274, 0
  br i1 %275, label %276, label %396

276:                                              ; preds = %273
  %277 = load i64, ptr %25, align 8, !tbaa !9
  %278 = load i64, ptr %24, align 8, !tbaa !9
  %279 = sub nsw i64 %277, %278
  %280 = add nsw i64 %279, 1
  store i64 %280, ptr %22, align 8, !tbaa !9
  %281 = load i64, ptr %22, align 8, !tbaa !9
  %282 = load i64, ptr %27, align 8, !tbaa !9
  %283 = icmp sle i64 %281, %282
  br i1 %283, label %284, label %286

284:                                              ; preds = %276
  %285 = load i64, ptr %22, align 8, !tbaa !9
  br label %288

286:                                              ; preds = %276
  %287 = load i64, ptr %27, align 8, !tbaa !9
  br label %288

288:                                              ; preds = %286, %284
  %289 = phi i64 [ %285, %284 ], [ %287, %286 ]
  store i64 %289, ptr %26, align 8, !tbaa !9
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = load i64, ptr %25, align 8, !tbaa !9
  %293 = sub nsw i64 %291, %292
  %294 = load i64, ptr %24, align 8, !tbaa !9
  %295 = add nsw i64 %293, %294
  %296 = load i64, ptr %26, align 8, !tbaa !9
  %297 = add nsw i64 %295, %296
  %298 = sub nsw i64 %297, 1
  store i64 %298, ptr %22, align 8, !tbaa !9
  %299 = load ptr, ptr %12, align 8, !tbaa !5
  %300 = load ptr, ptr %11, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = load i64, ptr %25, align 8, !tbaa !9
  %303 = sub nsw i64 %301, %302
  %304 = load i64, ptr %24, align 8, !tbaa !9
  %305 = add nsw i64 %303, %304
  %306 = load i64, ptr %18, align 8, !tbaa !9
  %307 = mul nsw i64 %305, %306
  %308 = add nsw i64 %307, 1
  %309 = getelementptr inbounds %struct.complex, ptr %299, i64 %308
  %310 = load ptr, ptr %13, align 8, !tbaa !5
  %311 = load ptr, ptr %14, align 8, !tbaa !5
  %312 = load i64, ptr %24, align 8, !tbaa !9
  %313 = getelementptr inbounds %struct.complex, ptr %311, i64 %312
  %314 = load ptr, ptr %15, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.complex, ptr %314, i64 1
  %316 = call i32 @cgeql2_(ptr noundef %22, ptr noundef %26, ptr noundef %309, ptr noundef %310, ptr noundef %313, ptr noundef %315, ptr noundef %35)
  %317 = load ptr, ptr %11, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  %319 = load i64, ptr %25, align 8, !tbaa !9
  %320 = sub nsw i64 %318, %319
  %321 = load i64, ptr %24, align 8, !tbaa !9
  %322 = add nsw i64 %320, %321
  %323 = icmp sgt i64 %322, 1
  br i1 %323, label %324, label %391

324:                                              ; preds = %288
  %325 = load ptr, ptr %10, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = load i64, ptr %25, align 8, !tbaa !9
  %328 = sub nsw i64 %326, %327
  %329 = load i64, ptr %24, align 8, !tbaa !9
  %330 = add nsw i64 %328, %329
  %331 = load i64, ptr %26, align 8, !tbaa !9
  %332 = add nsw i64 %330, %331
  %333 = sub nsw i64 %332, 1
  store i64 %333, ptr %22, align 8, !tbaa !9
  %334 = load ptr, ptr %12, align 8, !tbaa !5
  %335 = load ptr, ptr %11, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = load i64, ptr %25, align 8, !tbaa !9
  %338 = sub nsw i64 %336, %337
  %339 = load i64, ptr %24, align 8, !tbaa !9
  %340 = add nsw i64 %338, %339
  %341 = load i64, ptr %18, align 8, !tbaa !9
  %342 = mul nsw i64 %340, %341
  %343 = add nsw i64 %342, 1
  %344 = getelementptr inbounds %struct.complex, ptr %334, i64 %343
  %345 = load ptr, ptr %13, align 8, !tbaa !5
  %346 = load ptr, ptr %14, align 8, !tbaa !5
  %347 = load i64, ptr %24, align 8, !tbaa !9
  %348 = getelementptr inbounds %struct.complex, ptr %346, i64 %347
  %349 = load ptr, ptr %15, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.complex, ptr %349, i64 1
  %351 = call i32 @clarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %26, ptr noundef %344, ptr noundef %345, ptr noundef %348, ptr noundef %350, ptr noundef %36)
  %352 = load ptr, ptr %10, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  %354 = load i64, ptr %25, align 8, !tbaa !9
  %355 = sub nsw i64 %353, %354
  %356 = load i64, ptr %24, align 8, !tbaa !9
  %357 = add nsw i64 %355, %356
  %358 = load i64, ptr %26, align 8, !tbaa !9
  %359 = add nsw i64 %357, %358
  %360 = sub nsw i64 %359, 1
  store i64 %360, ptr %22, align 8, !tbaa !9
  %361 = load ptr, ptr %11, align 8, !tbaa !5
  %362 = load i64, ptr %361, align 8, !tbaa !9
  %363 = load i64, ptr %25, align 8, !tbaa !9
  %364 = sub nsw i64 %362, %363
  %365 = load i64, ptr %24, align 8, !tbaa !9
  %366 = add nsw i64 %364, %365
  %367 = sub nsw i64 %366, 1
  store i64 %367, ptr %23, align 8, !tbaa !9
  %368 = load ptr, ptr %12, align 8, !tbaa !5
  %369 = load ptr, ptr %11, align 8, !tbaa !5
  %370 = load i64, ptr %369, align 8, !tbaa !9
  %371 = load i64, ptr %25, align 8, !tbaa !9
  %372 = sub nsw i64 %370, %371
  %373 = load i64, ptr %24, align 8, !tbaa !9
  %374 = add nsw i64 %372, %373
  %375 = load i64, ptr %18, align 8, !tbaa !9
  %376 = mul nsw i64 %374, %375
  %377 = add nsw i64 %376, 1
  %378 = getelementptr inbounds %struct.complex, ptr %368, i64 %377
  %379 = load ptr, ptr %13, align 8, !tbaa !5
  %380 = load ptr, ptr %15, align 8, !tbaa !5
  %381 = getelementptr inbounds %struct.complex, ptr %380, i64 1
  %382 = load ptr, ptr %12, align 8, !tbaa !5
  %383 = load i64, ptr %19, align 8, !tbaa !9
  %384 = getelementptr inbounds %struct.complex, ptr %382, i64 %383
  %385 = load ptr, ptr %13, align 8, !tbaa !5
  %386 = load ptr, ptr %15, align 8, !tbaa !5
  %387 = load i64, ptr %26, align 8, !tbaa !9
  %388 = add nsw i64 %387, 1
  %389 = getelementptr inbounds %struct.complex, ptr %386, i64 %388
  %390 = call i32 @clarfb_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %23, ptr noundef %26, ptr noundef %378, ptr noundef %379, ptr noundef %381, ptr noundef %36, ptr noundef %384, ptr noundef %385, ptr noundef %389, ptr noundef %36)
  br label %391

391:                                              ; preds = %324, %288
  br label %392

392:                                              ; preds = %391
  %393 = load i64, ptr %21, align 8, !tbaa !9
  %394 = load i64, ptr %24, align 8, !tbaa !9
  %395 = add nsw i64 %394, %393
  store i64 %395, ptr %24, align 8, !tbaa !9
  br label %260, !llvm.loop !15

396:                                              ; preds = %273
  %397 = load ptr, ptr %10, align 8, !tbaa !5
  %398 = load i64, ptr %397, align 8, !tbaa !9
  %399 = load i64, ptr %25, align 8, !tbaa !9
  %400 = sub nsw i64 %398, %399
  %401 = load i64, ptr %24, align 8, !tbaa !9
  %402 = add nsw i64 %400, %401
  %403 = load i64, ptr %27, align 8, !tbaa !9
  %404 = add nsw i64 %402, %403
  %405 = sub nsw i64 %404, 1
  store i64 %405, ptr %30, align 8, !tbaa !9
  %406 = load ptr, ptr %11, align 8, !tbaa !5
  %407 = load i64, ptr %406, align 8, !tbaa !9
  %408 = load i64, ptr %25, align 8, !tbaa !9
  %409 = sub nsw i64 %407, %408
  %410 = load i64, ptr %24, align 8, !tbaa !9
  %411 = add nsw i64 %409, %410
  %412 = load i64, ptr %27, align 8, !tbaa !9
  %413 = add nsw i64 %411, %412
  %414 = sub nsw i64 %413, 1
  store i64 %414, ptr %31, align 8, !tbaa !9
  br label %420

415:                                              ; preds = %222, %218, %214
  %416 = load ptr, ptr %10, align 8, !tbaa !5
  %417 = load i64, ptr %416, align 8, !tbaa !9
  store i64 %417, ptr %30, align 8, !tbaa !9
  %418 = load ptr, ptr %11, align 8, !tbaa !5
  %419 = load i64, ptr %418, align 8, !tbaa !9
  store i64 %419, ptr %31, align 8, !tbaa !9
  br label %420

420:                                              ; preds = %415, %396
  %421 = load i64, ptr %30, align 8, !tbaa !9
  %422 = icmp sgt i64 %421, 0
  br i1 %422, label %423, label %436

423:                                              ; preds = %420
  %424 = load i64, ptr %31, align 8, !tbaa !9
  %425 = icmp sgt i64 %424, 0
  br i1 %425, label %426, label %436

426:                                              ; preds = %423
  %427 = load ptr, ptr %12, align 8, !tbaa !5
  %428 = load i64, ptr %19, align 8, !tbaa !9
  %429 = getelementptr inbounds %struct.complex, ptr %427, i64 %428
  %430 = load ptr, ptr %13, align 8, !tbaa !5
  %431 = load ptr, ptr %14, align 8, !tbaa !5
  %432 = getelementptr inbounds %struct.complex, ptr %431, i64 1
  %433 = load ptr, ptr %15, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.complex, ptr %433, i64 1
  %435 = call i32 @cgeql2_(ptr noundef %30, ptr noundef %31, ptr noundef %429, ptr noundef %430, ptr noundef %432, ptr noundef %434, ptr noundef %35)
  br label %436

436:                                              ; preds = %426, %423, %420
  %437 = load i64, ptr %33, align 8, !tbaa !9
  %438 = sitofp i64 %437 to float
  %439 = load ptr, ptr %15, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct.complex, ptr %439, i64 1
  %441 = getelementptr inbounds %struct.complex, ptr %440, i32 0, i32 0
  store float %438, ptr %441, align 4, !tbaa !11
  %442 = load ptr, ptr %15, align 8, !tbaa !5
  %443 = getelementptr inbounds %struct.complex, ptr %442, i64 1
  %444 = getelementptr inbounds %struct.complex, ptr %443, i32 0, i32 1
  store float 0.000000e+00, ptr %444, align 4, !tbaa !14
  store i32 0, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %445

445:                                              ; preds = %436, %159, %154, %146
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  %446 = load i32, ptr %9, align 4
  ret i32 %446
}

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

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

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

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

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

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

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

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

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

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


; 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 }

@c__1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @cgeqlf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7) local_unnamed_addr #0 {
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #4
  %17 = load i64, ptr %3, align 8, !tbaa !5
  %18 = xor i64 %17, -1
  %19 = getelementptr inbounds %struct.complex, ptr %2, i64 %18
  %20 = getelementptr inbounds i8, ptr %4, i64 -8
  store i64 0, ptr %7, align 8, !tbaa !5
  %21 = load i64, ptr %6, align 8, !tbaa !5
  %22 = icmp eq i64 %21, -1
  %23 = load i64, ptr %0, align 8, !tbaa !5
  %24 = icmp slt i64 %23, 0
  br i1 %24, label %.thread184.sink.split, label %25

25:                                               ; preds = %8
  %26 = load i64, ptr %1, align 8, !tbaa !5
  %27 = icmp slt i64 %26, 0
  br i1 %27, label %.thread184.sink.split, label %28

28:                                               ; preds = %25
  %29 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %23, i64 1)
  %30 = icmp slt i64 %29, %spec.select
  br i1 %30, label %.thread184.sink.split, label %31

31:                                               ; preds = %28
  %32 = tail call i64 @llvm.umin.i64(i64 %23, i64 %26)
  %33 = icmp eq i64 %32, 0
  br i1 %33, label %39, label %34

34:                                               ; preds = %31
  %35 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %36 = load i64, ptr %1, align 8, !tbaa !5
  %37 = mul nsw i64 %36, %35
  %38 = sitofp i64 %37 to float
  %.pre = load i64, ptr %6, align 8, !tbaa !5
  br label %39

39:                                               ; preds = %31, %34
  %40 = phi i64 [ %36, %34 ], [ %26, %31 ]
  %41 = phi i64 [ %.pre, %34 ], [ %21, %31 ]
  %.0156 = phi i64 [ %35, %34 ], [ undef, %31 ]
  %.0152 = phi float [ %38, %34 ], [ 1.000000e+00, %31 ]
  store float %.0152, ptr %5, align 4, !tbaa !9
  %42 = getelementptr inbounds i8, ptr %5, i64 4
  store float 0.000000e+00, ptr %42, align 4, !tbaa !12
  %spec.select174 = tail call i64 @llvm.smax.i64(i64 %40, i64 1)
  %43 = icmp sge i64 %41, %spec.select174
  %or.cond = select i1 %43, i1 true, i1 %22
  br i1 %or.cond, label %.thread, label %.thread184.sink.split

.thread:                                          ; preds = %39
  %.pr180.pr = load i64, ptr %7, align 8, !tbaa !5
  %.not168 = icmp eq i64 %.pr180.pr, 0
  br i1 %.not168, label %47, label %.thread184

.thread184.sink.split:                            ; preds = %39, %28, %25, %8
  %.sink = phi i64 [ -1, %8 ], [ -2, %25 ], [ -4, %28 ], [ -7, %39 ]
  store i64 %.sink, ptr %7, align 8, !tbaa !5
  br label %.thread184

.thread184:                                       ; preds = %.thread184.sink.split, %.thread
  %44 = phi i64 [ %.pr180.pr, %.thread ], [ %.sink, %.thread184.sink.split ]
  %45 = sub nsw i64 0, %44
  store i64 %45, ptr %9, align 8, !tbaa !5
  %46 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %9) #4
  br label %132

47:                                               ; preds = %.thread
  %or.cond178 = or i1 %22, %33
  br i1 %or.cond178, label %132, label %48

48:                                               ; preds = %47
  %49 = icmp sgt i64 %.0156, 1
  %50 = icmp slt i64 %.0156, %32
  %or.cond175 = and i1 %49, %50
  br i1 %or.cond175, label %51, label %64

51:                                               ; preds = %48
  %52 = tail call i64 @ilaenv_(ptr noundef nonnull @c__3, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %53 = tail call i64 @llvm.smax.i64(i64 %52, i64 0)
  %54 = icmp ult i64 %53, %32
  br i1 %54, label %55, label %64

55:                                               ; preds = %51
  %56 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %56, ptr %16, align 8, !tbaa !5
  %57 = mul nsw i64 %56, %.0156
  %58 = load i64, ptr %6, align 8, !tbaa !5
  %59 = icmp slt i64 %58, %57
  br i1 %59, label %60, label %64

60:                                               ; preds = %55
  %61 = sdiv i64 %58, %56
  %62 = tail call i64 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %63 = tail call i64 @llvm.smax.i64(i64 %62, i64 2)
  br label %64

64:                                               ; preds = %51, %60, %55, %48
  %.2 = phi i64 [ %61, %60 ], [ %.0156, %55 ], [ %.0156, %51 ], [ %.0156, %48 ]
  %.0155 = phi i64 [ %53, %60 ], [ %53, %55 ], [ %53, %51 ], [ 1, %48 ]
  %.0154 = phi i64 [ %57, %60 ], [ %57, %55 ], [ %40, %51 ], [ %40, %48 ]
  %.0153 = phi i64 [ %63, %60 ], [ 2, %55 ], [ 2, %51 ], [ 2, %48 ]
  %.not171 = icmp sge i64 %.2, %.0153
  %65 = icmp slt i64 %.2, %32
  %or.cond176 = and i1 %65, %.not171
  %66 = icmp ult i64 %.0155, %32
  %or.cond177 = and i1 %66, %or.cond176
  br i1 %or.cond177, label %67, label %121

67:                                               ; preds = %64
  %68 = xor i64 %.0155, -1
  %69 = add nsw i64 %32, %68
  %.fr = freeze i64 %69
  %70 = srem i64 %.fr, %.2
  %71 = sub nsw i64 %.fr, %70
  %72 = add nsw i64 %71, %.2
  %73 = tail call i64 @llvm.smin.i64(i64 %32, i64 %72)
  %74 = sub nsw i64 %32, %73
  %75 = add i64 %74, 1
  %76 = add i64 %75, %71
  %invariant.gep = getelementptr i8, ptr %19, i64 8
  %.not = icmp slt i64 %76, %75
  %77 = xor i64 %32, -1
  br i1 %.not, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %67, %113
  %.0158197 = phi i64 [ %114, %113 ], [ %76, %67 ]
  %78 = sub nsw i64 %32, %.0158197
  %79 = add nsw i64 %78, 1
  %80 = call i64 @llvm.smin.i64(i64 %79, i64 %.2)
  store i64 %80, ptr %12, align 8, !tbaa !5
  %81 = load i64, ptr %0, align 8, !tbaa !5
  %82 = add i64 %.0158197, %77
  %83 = add i64 %82, %80
  %84 = add i64 %83, %81
  store i64 %84, ptr %10, align 8, !tbaa !5
  %85 = load i64, ptr %1, align 8, !tbaa !5
  %86 = sub i64 %.0158197, %32
  %87 = add i64 %86, %85
  %88 = mul nsw i64 %87, %17
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %88
  %89 = getelementptr inbounds %struct.complex, ptr %20, i64 %.0158197
  %90 = call i32 @cgeql2_(ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef %gep, ptr noundef nonnull %3, ptr noundef nonnull %89, ptr noundef nonnull %5, ptr noundef nonnull %15) #4
  %91 = load i64, ptr %1, align 8, !tbaa !5
  %92 = sub nsw i64 %91, %32
  %93 = add nsw i64 %92, %.0158197
  %94 = icmp sgt i64 %93, 1
  br i1 %94, label %95, label %113

95:                                               ; preds = %.lr.ph
  %96 = load i64, ptr %0, align 8, !tbaa !5
  %97 = load i64, ptr %12, align 8, !tbaa !5
  %98 = add i64 %82, %96
  %99 = add i64 %98, %97
  store i64 %99, ptr %10, align 8, !tbaa !5
  %100 = mul nsw i64 %93, %17
  %gep193 = getelementptr %struct.complex, ptr %invariant.gep, i64 %100
  %101 = call i32 @clarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef %gep193, ptr noundef nonnull %3, ptr noundef nonnull %89, ptr noundef nonnull %5, ptr noundef nonnull %16) #4
  %102 = load i64, ptr %0, align 8, !tbaa !5
  %103 = load i64, ptr %12, align 8, !tbaa !5
  %104 = add i64 %82, %102
  %105 = add i64 %104, %103
  store i64 %105, ptr %10, align 8, !tbaa !5
  %106 = load i64, ptr %1, align 8, !tbaa !5
  %107 = sub nsw i64 %106, %32
  %108 = add nsw i64 %107, %.0158197
  %109 = add nsw i64 %108, -1
  store i64 %109, ptr %11, align 8, !tbaa !5
  %110 = mul nsw i64 %108, %17
  %gep195 = getelementptr %struct.complex, ptr %invariant.gep, i64 %110
  %111 = getelementptr %struct.complex, ptr %5, i64 %103
  %112 = call i32 @clarfb_(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %10, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %gep195, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %111, ptr noundef nonnull %16) #4
  br label %113

113:                                              ; preds = %.lr.ph, %95
  %114 = sub i64 %.0158197, %.2
  %.not199 = icmp slt i64 %114, %75
  br i1 %.not199, label %._crit_edge, label %.lr.ph, !llvm.loop !13

._crit_edge:                                      ; preds = %113, %67
  %.0158.lcssa = phi i64 [ %76, %67 ], [ %114, %113 ]
  %115 = load i64, ptr %0, align 8, !tbaa !5
  %116 = add i64 %.2, %77
  %117 = add i64 %116, %.0158.lcssa
  %118 = add i64 %117, %115
  store i64 %118, ptr %13, align 8, !tbaa !5
  %119 = load i64, ptr %1, align 8, !tbaa !5
  %120 = add i64 %117, %119
  br label %124

121:                                              ; preds = %64
  %122 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %122, ptr %13, align 8, !tbaa !5
  %123 = load i64, ptr %1, align 8, !tbaa !5
  br label %124

124:                                              ; preds = %121, %._crit_edge
  %125 = phi i64 [ %122, %121 ], [ %118, %._crit_edge ]
  %storemerge = phi i64 [ %123, %121 ], [ %120, %._crit_edge ]
  store i64 %storemerge, ptr %14, align 8, !tbaa !5
  %126 = icmp sgt i64 %125, 0
  %127 = icmp sgt i64 %storemerge, 0
  %or.cond3 = select i1 %126, i1 %127, i1 false
  br i1 %or.cond3, label %128, label %130

128:                                              ; preds = %124
  %129 = call i32 @cgeql2_(ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %15) #4
  br label %130

130:                                              ; preds = %128, %124
  %131 = sitofp i64 %.0154 to float
  store float %131, ptr %5, align 4, !tbaa !9
  store float 0.000000e+00, ptr %42, align 4, !tbaa !12
  br label %132

132:                                              ; preds = %47, %130, %.thread184
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #4
  ret i32 0
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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