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

; 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 [8 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 @cgeqrf_(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 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
  %36 = load ptr, ptr %13, align 8, !tbaa !5
  %37 = load i64, ptr %36, align 8, !tbaa !9
  store i64 %37, ptr %18, align 8, !tbaa !9
  %38 = load i64, ptr %18, align 8, !tbaa !9
  %39 = add nsw i64 1, %38
  store i64 %39, ptr %19, align 8, !tbaa !9
  %40 = load i64, ptr %19, align 8, !tbaa !9
  %41 = load ptr, ptr %12, align 8, !tbaa !5
  %42 = sub i64 0, %40
  %43 = getelementptr inbounds %struct.complex, ptr %41, i64 %42
  store ptr %43, ptr %12, align 8, !tbaa !5
  %44 = load ptr, ptr %14, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.complex, ptr %44, i32 -1
  store ptr %45, ptr %14, align 8, !tbaa !5
  %46 = load ptr, ptr %15, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.complex, ptr %46, i32 -1
  store ptr %47, ptr %15, align 8, !tbaa !5
  %48 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 0, ptr %48, align 8, !tbaa !9
  %49 = load ptr, ptr %10, align 8, !tbaa !5
  %50 = load ptr, ptr %11, align 8, !tbaa !5
  %51 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %49, ptr noundef %50, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %51, ptr %27, align 8, !tbaa !9
  %52 = load ptr, ptr %11, align 8, !tbaa !5
  %53 = load i64, ptr %52, align 8, !tbaa !9
  %54 = load i64, ptr %27, align 8, !tbaa !9
  %55 = mul nsw i64 %53, %54
  store i64 %55, ptr %33, align 8, !tbaa !9
  %56 = load i64, ptr %33, align 8, !tbaa !9
  %57 = sitofp i64 %56 to float
  %58 = load ptr, ptr %15, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.complex, ptr %58, i64 1
  %60 = getelementptr inbounds %struct.complex, ptr %59, i32 0, i32 0
  store float %57, ptr %60, align 4, !tbaa !11
  %61 = load ptr, ptr %15, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.complex, ptr %61, i64 1
  %63 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  store float 0.000000e+00, ptr %63, align 4, !tbaa !14
  %64 = load ptr, ptr %16, align 8, !tbaa !5
  %65 = load i64, ptr %64, align 8, !tbaa !9
  %66 = icmp eq i64 %65, -1
  %67 = zext i1 %66 to i32
  %68 = sext i32 %67 to i64
  store i64 %68, ptr %34, align 8, !tbaa !9
  %69 = load ptr, ptr %10, align 8, !tbaa !5
  %70 = load i64, ptr %69, align 8, !tbaa !9
  %71 = icmp slt i64 %70, 0
  br i1 %71, label %72, label %74

72:                                               ; preds = %8
  %73 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -1, ptr %73, align 8, !tbaa !9
  br label %116

74:                                               ; preds = %8
  %75 = load ptr, ptr %11, align 8, !tbaa !5
  %76 = load i64, ptr %75, align 8, !tbaa !9
  %77 = icmp slt i64 %76, 0
  br i1 %77, label %78, label %80

78:                                               ; preds = %74
  %79 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -2, ptr %79, align 8, !tbaa !9
  br label %115

80:                                               ; preds = %74
  %81 = load ptr, ptr %13, align 8, !tbaa !5
  %82 = load i64, ptr %81, align 8, !tbaa !9
  %83 = load ptr, ptr %10, align 8, !tbaa !5
  %84 = load i64, ptr %83, align 8, !tbaa !9
  %85 = icmp sge i64 1, %84
  br i1 %85, label %86, label %87

86:                                               ; preds = %80
  br label %90

87:                                               ; preds = %80
  %88 = load ptr, ptr %10, align 8, !tbaa !5
  %89 = load i64, ptr %88, align 8, !tbaa !9
  br label %90

90:                                               ; preds = %87, %86
  %91 = phi i64 [ 1, %86 ], [ %89, %87 ]
  %92 = icmp slt i64 %82, %91
  br i1 %92, label %93, label %95

93:                                               ; preds = %90
  %94 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -4, ptr %94, align 8, !tbaa !9
  br label %114

95:                                               ; preds = %90
  %96 = load ptr, ptr %16, align 8, !tbaa !5
  %97 = load i64, ptr %96, align 8, !tbaa !9
  %98 = load ptr, ptr %11, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %100 = icmp sge i64 1, %99
  br i1 %100, label %101, label %102

101:                                              ; preds = %95
  br label %105

102:                                              ; preds = %95
  %103 = load ptr, ptr %11, align 8, !tbaa !5
  %104 = load i64, ptr %103, align 8, !tbaa !9
  br label %105

105:                                              ; preds = %102, %101
  %106 = phi i64 [ 1, %101 ], [ %104, %102 ]
  %107 = icmp slt i64 %97, %106
  br i1 %107, label %108, label %113

108:                                              ; preds = %105
  %109 = load i64, ptr %34, align 8, !tbaa !9
  %110 = icmp ne i64 %109, 0
  br i1 %110, label %113, label %111

111:                                              ; preds = %108
  %112 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -7, ptr %112, align 8, !tbaa !9
  br label %113

113:                                              ; preds = %111, %108, %105
  br label %114

114:                                              ; preds = %113, %93
  br label %115

115:                                              ; preds = %114, %78
  br label %116

116:                                              ; preds = %115, %72
  %117 = load ptr, ptr %17, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  %119 = icmp ne i64 %118, 0
  br i1 %119, label %120, label %125

120:                                              ; preds = %116
  %121 = load ptr, ptr %17, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  %123 = sub nsw i64 0, %122
  store i64 %123, ptr %20, align 8, !tbaa !9
  %124 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %20)
  store i32 0, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %381

125:                                              ; preds = %116
  %126 = load i64, ptr %34, align 8, !tbaa !9
  %127 = icmp ne i64 %126, 0
  br i1 %127, label %128, label %129

128:                                              ; preds = %125
  store i32 0, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %381

129:                                              ; preds = %125
  br label %130

130:                                              ; preds = %129
  %131 = load ptr, ptr %10, align 8, !tbaa !5
  %132 = load i64, ptr %131, align 8, !tbaa !9
  %133 = load ptr, ptr %11, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  %135 = icmp sle i64 %132, %134
  br i1 %135, label %136, label %139

136:                                              ; preds = %130
  %137 = load ptr, ptr %10, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  br label %142

139:                                              ; preds = %130
  %140 = load ptr, ptr %11, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  br label %142

142:                                              ; preds = %139, %136
  %143 = phi i64 [ %138, %136 ], [ %141, %139 ]
  store i64 %143, ptr %25, align 8, !tbaa !9
  %144 = load i64, ptr %25, align 8, !tbaa !9
  %145 = icmp eq i64 %144, 0
  br i1 %145, label %146, label %153

146:                                              ; preds = %142
  %147 = load ptr, ptr %15, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.complex, ptr %147, i64 1
  %149 = getelementptr inbounds %struct.complex, ptr %148, i32 0, i32 0
  store float 1.000000e+00, ptr %149, align 4, !tbaa !11
  %150 = load ptr, ptr %15, align 8, !tbaa !5
  %151 = getelementptr inbounds %struct.complex, ptr %150, i64 1
  %152 = getelementptr inbounds %struct.complex, ptr %151, i32 0, i32 1
  store float 0.000000e+00, ptr %152, align 4, !tbaa !14
  store i32 0, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %381

153:                                              ; preds = %142
  store i64 2, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !9
  %154 = load ptr, ptr %11, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  store i64 %155, ptr %29, align 8, !tbaa !9
  %156 = load i64, ptr %27, align 8, !tbaa !9
  %157 = icmp sgt i64 %156, 1
  br i1 %157, label %158, label %207

158:                                              ; preds = %153
  %159 = load i64, ptr %27, align 8, !tbaa !9
  %160 = load i64, ptr %25, align 8, !tbaa !9
  %161 = icmp slt i64 %159, %160
  br i1 %161, label %162, label %207

162:                                              ; preds = %158
  store i64 0, ptr %20, align 8, !tbaa !9
  %163 = load ptr, ptr %10, align 8, !tbaa !5
  %164 = load ptr, ptr %11, align 8, !tbaa !5
  %165 = call i64 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %163, ptr noundef %164, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %165, ptr %21, align 8, !tbaa !9
  %166 = load i64, ptr %20, align 8, !tbaa !9
  %167 = load i64, ptr %21, align 8, !tbaa !9
  %168 = icmp sge i64 %166, %167
  br i1 %168, label %169, label %171

169:                                              ; preds = %162
  %170 = load i64, ptr %20, align 8, !tbaa !9
  br label %173

171:                                              ; preds = %162
  %172 = load i64, ptr %21, align 8, !tbaa !9
  br label %173

173:                                              ; preds = %171, %169
  %174 = phi i64 [ %170, %169 ], [ %172, %171 ]
  store i64 %174, ptr %28, align 8, !tbaa !9
  %175 = load i64, ptr %28, align 8, !tbaa !9
  %176 = load i64, ptr %25, align 8, !tbaa !9
  %177 = icmp slt i64 %175, %176
  br i1 %177, label %178, label %206

178:                                              ; preds = %173
  %179 = load ptr, ptr %11, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  store i64 %180, ptr %32, align 8, !tbaa !9
  %181 = load i64, ptr %32, align 8, !tbaa !9
  %182 = load i64, ptr %27, align 8, !tbaa !9
  %183 = mul nsw i64 %181, %182
  store i64 %183, ptr %29, align 8, !tbaa !9
  %184 = load ptr, ptr %16, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = load i64, ptr %29, align 8, !tbaa !9
  %187 = icmp slt i64 %185, %186
  br i1 %187, label %188, label %205

188:                                              ; preds = %178
  %189 = load ptr, ptr %16, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = load i64, ptr %32, align 8, !tbaa !9
  %192 = sdiv i64 %190, %191
  store i64 %192, ptr %27, align 8, !tbaa !9
  store i64 2, ptr %20, align 8, !tbaa !9
  %193 = load ptr, ptr %10, align 8, !tbaa !5
  %194 = load ptr, ptr %11, align 8, !tbaa !5
  %195 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %193, ptr noundef %194, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %195, ptr %21, align 8, !tbaa !9
  %196 = load i64, ptr %20, align 8, !tbaa !9
  %197 = load i64, ptr %21, align 8, !tbaa !9
  %198 = icmp sge i64 %196, %197
  br i1 %198, label %199, label %201

199:                                              ; preds = %188
  %200 = load i64, ptr %20, align 8, !tbaa !9
  br label %203

201:                                              ; preds = %188
  %202 = load i64, ptr %21, align 8, !tbaa !9
  br label %203

203:                                              ; preds = %201, %199
  %204 = phi i64 [ %200, %199 ], [ %202, %201 ]
  store i64 %204, ptr %30, align 8, !tbaa !9
  br label %205

205:                                              ; preds = %203, %178
  br label %206

206:                                              ; preds = %205, %173
  br label %207

207:                                              ; preds = %206, %158, %153
  %208 = load i64, ptr %27, align 8, !tbaa !9
  %209 = load i64, ptr %30, align 8, !tbaa !9
  %210 = icmp sge i64 %208, %209
  br i1 %210, label %211, label %342

211:                                              ; preds = %207
  %212 = load i64, ptr %27, align 8, !tbaa !9
  %213 = load i64, ptr %25, align 8, !tbaa !9
  %214 = icmp slt i64 %212, %213
  br i1 %214, label %215, label %342

215:                                              ; preds = %211
  %216 = load i64, ptr %28, align 8, !tbaa !9
  %217 = load i64, ptr %25, align 8, !tbaa !9
  %218 = icmp slt i64 %216, %217
  br i1 %218, label %219, label %342

219:                                              ; preds = %215
  %220 = load i64, ptr %25, align 8, !tbaa !9
  %221 = load i64, ptr %28, align 8, !tbaa !9
  %222 = sub nsw i64 %220, %221
  store i64 %222, ptr %20, align 8, !tbaa !9
  %223 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %223, ptr %21, align 8, !tbaa !9
  store i64 1, ptr %24, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %337, %219
  %225 = load i64, ptr %21, align 8, !tbaa !9
  %226 = icmp slt i64 %225, 0
  br i1 %226, label %227, label %232

227:                                              ; preds = %224
  %228 = load i64, ptr %24, align 8, !tbaa !9
  %229 = load i64, ptr %20, align 8, !tbaa !9
  %230 = icmp sge i64 %228, %229
  %231 = zext i1 %230 to i32
  br label %237

232:                                              ; preds = %224
  %233 = load i64, ptr %24, align 8, !tbaa !9
  %234 = load i64, ptr %20, align 8, !tbaa !9
  %235 = icmp sle i64 %233, %234
  %236 = zext i1 %235 to i32
  br label %237

237:                                              ; preds = %232, %227
  %238 = phi i32 [ %231, %227 ], [ %236, %232 ]
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %240, label %341

240:                                              ; preds = %237
  %241 = load i64, ptr %25, align 8, !tbaa !9
  %242 = load i64, ptr %24, align 8, !tbaa !9
  %243 = sub nsw i64 %241, %242
  %244 = add nsw i64 %243, 1
  store i64 %244, ptr %22, align 8, !tbaa !9
  %245 = load i64, ptr %22, align 8, !tbaa !9
  %246 = load i64, ptr %27, align 8, !tbaa !9
  %247 = icmp sle i64 %245, %246
  br i1 %247, label %248, label %250

248:                                              ; preds = %240
  %249 = load i64, ptr %22, align 8, !tbaa !9
  br label %252

250:                                              ; preds = %240
  %251 = load i64, ptr %27, align 8, !tbaa !9
  br label %252

252:                                              ; preds = %250, %248
  %253 = phi i64 [ %249, %248 ], [ %251, %250 ]
  store i64 %253, ptr %26, align 8, !tbaa !9
  %254 = load ptr, ptr %10, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = load i64, ptr %24, align 8, !tbaa !9
  %257 = sub nsw i64 %255, %256
  %258 = add nsw i64 %257, 1
  store i64 %258, ptr %22, align 8, !tbaa !9
  %259 = load ptr, ptr %12, align 8, !tbaa !5
  %260 = load i64, ptr %24, align 8, !tbaa !9
  %261 = load i64, ptr %24, align 8, !tbaa !9
  %262 = load i64, ptr %18, align 8, !tbaa !9
  %263 = mul nsw i64 %261, %262
  %264 = add nsw i64 %260, %263
  %265 = getelementptr inbounds %struct.complex, ptr %259, i64 %264
  %266 = load ptr, ptr %13, align 8, !tbaa !5
  %267 = load ptr, ptr %14, align 8, !tbaa !5
  %268 = load i64, ptr %24, align 8, !tbaa !9
  %269 = getelementptr inbounds %struct.complex, ptr %267, i64 %268
  %270 = load ptr, ptr %15, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.complex, ptr %270, i64 1
  %272 = call i32 @cgeqr2_(ptr noundef %22, ptr noundef %26, ptr noundef %265, ptr noundef %266, ptr noundef %269, ptr noundef %271, ptr noundef %31)
  %273 = load i64, ptr %24, align 8, !tbaa !9
  %274 = load i64, ptr %26, align 8, !tbaa !9
  %275 = add nsw i64 %273, %274
  %276 = load ptr, ptr %11, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  %278 = icmp sle i64 %275, %277
  br i1 %278, label %279, label %336

279:                                              ; preds = %252
  %280 = load ptr, ptr %10, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  %282 = load i64, ptr %24, align 8, !tbaa !9
  %283 = sub nsw i64 %281, %282
  %284 = add nsw i64 %283, 1
  store i64 %284, ptr %22, align 8, !tbaa !9
  %285 = load ptr, ptr %12, align 8, !tbaa !5
  %286 = load i64, ptr %24, align 8, !tbaa !9
  %287 = load i64, ptr %24, align 8, !tbaa !9
  %288 = load i64, ptr %18, align 8, !tbaa !9
  %289 = mul nsw i64 %287, %288
  %290 = add nsw i64 %286, %289
  %291 = getelementptr inbounds %struct.complex, ptr %285, i64 %290
  %292 = load ptr, ptr %13, align 8, !tbaa !5
  %293 = load ptr, ptr %14, align 8, !tbaa !5
  %294 = load i64, ptr %24, align 8, !tbaa !9
  %295 = getelementptr inbounds %struct.complex, ptr %293, i64 %294
  %296 = load ptr, ptr %15, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.complex, ptr %296, i64 1
  %298 = call i32 @clarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %26, ptr noundef %291, ptr noundef %292, ptr noundef %295, ptr noundef %297, ptr noundef %32)
  %299 = load ptr, ptr %10, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  %301 = load i64, ptr %24, align 8, !tbaa !9
  %302 = sub nsw i64 %300, %301
  %303 = add nsw i64 %302, 1
  store i64 %303, ptr %22, align 8, !tbaa !9
  %304 = load ptr, ptr %11, align 8, !tbaa !5
  %305 = load i64, ptr %304, align 8, !tbaa !9
  %306 = load i64, ptr %24, align 8, !tbaa !9
  %307 = sub nsw i64 %305, %306
  %308 = load i64, ptr %26, align 8, !tbaa !9
  %309 = sub nsw i64 %307, %308
  %310 = add nsw i64 %309, 1
  store i64 %310, ptr %23, align 8, !tbaa !9
  %311 = load ptr, ptr %12, align 8, !tbaa !5
  %312 = load i64, ptr %24, align 8, !tbaa !9
  %313 = load i64, ptr %24, align 8, !tbaa !9
  %314 = load i64, ptr %18, align 8, !tbaa !9
  %315 = mul nsw i64 %313, %314
  %316 = add nsw i64 %312, %315
  %317 = getelementptr inbounds %struct.complex, ptr %311, i64 %316
  %318 = load ptr, ptr %13, align 8, !tbaa !5
  %319 = load ptr, ptr %15, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.complex, ptr %319, i64 1
  %321 = load ptr, ptr %12, align 8, !tbaa !5
  %322 = load i64, ptr %24, align 8, !tbaa !9
  %323 = load i64, ptr %24, align 8, !tbaa !9
  %324 = load i64, ptr %26, align 8, !tbaa !9
  %325 = add nsw i64 %323, %324
  %326 = load i64, ptr %18, align 8, !tbaa !9
  %327 = mul nsw i64 %325, %326
  %328 = add nsw i64 %322, %327
  %329 = getelementptr inbounds %struct.complex, ptr %321, i64 %328
  %330 = load ptr, ptr %13, align 8, !tbaa !5
  %331 = load ptr, ptr %15, align 8, !tbaa !5
  %332 = load i64, ptr %26, align 8, !tbaa !9
  %333 = add nsw i64 %332, 1
  %334 = getelementptr inbounds %struct.complex, ptr %331, i64 %333
  %335 = 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 %317, ptr noundef %318, ptr noundef %320, ptr noundef %32, ptr noundef %329, ptr noundef %330, ptr noundef %334, ptr noundef %32)
  br label %336

336:                                              ; preds = %279, %252
  br label %337

337:                                              ; preds = %336
  %338 = load i64, ptr %21, align 8, !tbaa !9
  %339 = load i64, ptr %24, align 8, !tbaa !9
  %340 = add nsw i64 %339, %338
  store i64 %340, ptr %24, align 8, !tbaa !9
  br label %224, !llvm.loop !15

341:                                              ; preds = %237
  br label %343

342:                                              ; preds = %215, %211, %207
  store i64 1, ptr %24, align 8, !tbaa !9
  br label %343

343:                                              ; preds = %342, %341
  %344 = load i64, ptr %24, align 8, !tbaa !9
  %345 = load i64, ptr %25, align 8, !tbaa !9
  %346 = icmp sle i64 %344, %345
  br i1 %346, label %347, label %372

347:                                              ; preds = %343
  %348 = load ptr, ptr %10, align 8, !tbaa !5
  %349 = load i64, ptr %348, align 8, !tbaa !9
  %350 = load i64, ptr %24, align 8, !tbaa !9
  %351 = sub nsw i64 %349, %350
  %352 = add nsw i64 %351, 1
  store i64 %352, ptr %21, align 8, !tbaa !9
  %353 = load ptr, ptr %11, align 8, !tbaa !5
  %354 = load i64, ptr %353, align 8, !tbaa !9
  %355 = load i64, ptr %24, align 8, !tbaa !9
  %356 = sub nsw i64 %354, %355
  %357 = add nsw i64 %356, 1
  store i64 %357, ptr %20, align 8, !tbaa !9
  %358 = load ptr, ptr %12, align 8, !tbaa !5
  %359 = load i64, ptr %24, align 8, !tbaa !9
  %360 = load i64, ptr %24, align 8, !tbaa !9
  %361 = load i64, ptr %18, align 8, !tbaa !9
  %362 = mul nsw i64 %360, %361
  %363 = add nsw i64 %359, %362
  %364 = getelementptr inbounds %struct.complex, ptr %358, i64 %363
  %365 = load ptr, ptr %13, align 8, !tbaa !5
  %366 = load ptr, ptr %14, align 8, !tbaa !5
  %367 = load i64, ptr %24, align 8, !tbaa !9
  %368 = getelementptr inbounds %struct.complex, ptr %366, i64 %367
  %369 = load ptr, ptr %15, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.complex, ptr %369, i64 1
  %371 = call i32 @cgeqr2_(ptr noundef %21, ptr noundef %20, ptr noundef %364, ptr noundef %365, ptr noundef %368, ptr noundef %370, ptr noundef %31)
  br label %372

372:                                              ; preds = %347, %343
  %373 = load i64, ptr %29, align 8, !tbaa !9
  %374 = sitofp i64 %373 to float
  %375 = load ptr, ptr %15, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.complex, ptr %375, i64 1
  %377 = getelementptr inbounds %struct.complex, ptr %376, i32 0, i32 0
  store float %374, ptr %377, align 4, !tbaa !11
  %378 = load ptr, ptr %15, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.complex, ptr %378, i64 1
  %380 = getelementptr inbounds %struct.complex, ptr %379, i32 0, i32 1
  store float 0.000000e+00, ptr %380, align 4, !tbaa !14
  store i32 0, ptr %9, align 4
  store i32 1, ptr %35, align 4
  br label %381

381:                                              ; preds = %372, %146, %128, %120
  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
  %382 = load i32, ptr %9, align 4
  ret i32 %382
}

; 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 @cgeqr2_(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 [8 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 @cgeqrf_(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
  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
  %16 = load i64, ptr %3, align 8, !tbaa !5
  %17 = xor i64 %16, -1
  %18 = getelementptr inbounds %struct.complex, ptr %2, i64 %17
  %19 = getelementptr inbounds i8, ptr %4, i64 -8
  store i64 0, ptr %7, align 8, !tbaa !5
  %20 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef %0, ptr noundef %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %21 = load i64, ptr %1, align 8, !tbaa !5
  %22 = mul nsw i64 %21, %20
  %23 = sitofp i64 %22 to float
  store float %23, ptr %5, align 4, !tbaa !9
  %24 = getelementptr inbounds i8, ptr %5, i64 4
  store float 0.000000e+00, ptr %24, align 4, !tbaa !12
  %25 = load i64, ptr %6, align 8, !tbaa !5
  %26 = icmp eq i64 %25, -1
  %27 = load i64, ptr %0, align 8, !tbaa !5
  %28 = icmp slt i64 %27, 0
  br i1 %28, label %.thread.sink.split, label %29

29:                                               ; preds = %8
  %30 = icmp slt i64 %21, 0
  br i1 %30, label %.thread.sink.split, label %31

31:                                               ; preds = %29
  %32 = load i64, ptr %3, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %27, i64 1)
  %33 = icmp slt i64 %32, %spec.select
  br i1 %33, label %.thread.sink.split, label %34

34:                                               ; preds = %31
  %spec.select149 = tail call i64 @llvm.umax.i64(i64 %21, i64 1)
  %35 = icmp sge i64 %25, %spec.select149
  %or.cond = or i1 %35, %26
  br i1 %or.cond, label %36, label %.thread.sink.split

36:                                               ; preds = %34
  %.pr = load i64, ptr %7, align 8, !tbaa !5
  %.not = icmp eq i64 %.pr, 0
  br i1 %.not, label %40, label %.thread

.thread.sink.split:                               ; preds = %34, %31, %29, %8
  %.sink = phi i64 [ -1, %8 ], [ -2, %29 ], [ -4, %31 ], [ -7, %34 ]
  store i64 %.sink, ptr %7, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %36
  %37 = phi i64 [ %.pr, %36 ], [ %.sink, %.thread.sink.split ]
  %38 = sub nsw i64 0, %37
  store i64 %38, ptr %9, align 8, !tbaa !5
  %39 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %9) #4
  br label %114

40:                                               ; preds = %36
  br i1 %26, label %114, label %41

41:                                               ; preds = %40
  %42 = tail call i64 @llvm.umin.i64(i64 %27, i64 %21)
  %43 = icmp eq i64 %42, 0
  br i1 %43, label %44, label %45

44:                                               ; preds = %41
  store float 1.000000e+00, ptr %5, align 4, !tbaa !9
  br label %114

45:                                               ; preds = %41
  %46 = icmp sgt i64 %20, 1
  %47 = icmp slt i64 %20, %42
  %or.cond150 = and i1 %46, %47
  br i1 %or.cond150, label %48, label %61

48:                                               ; preds = %45
  %49 = 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
  %50 = tail call i64 @llvm.smax.i64(i64 %49, i64 0)
  %51 = icmp slt i64 %49, %42
  br i1 %51, label %52, label %61

52:                                               ; preds = %48
  %53 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %53, ptr %15, align 8, !tbaa !5
  %54 = mul nsw i64 %53, %20
  %55 = load i64, ptr %6, align 8, !tbaa !5
  %56 = icmp slt i64 %55, %54
  br i1 %56, label %57, label %61

57:                                               ; preds = %52
  %58 = sdiv i64 %55, %53
  store i64 2, ptr %9, align 8, !tbaa !5
  %59 = 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
  store i64 %59, ptr %10, align 8, !tbaa !5
  %60 = tail call i64 @llvm.smax.i64(i64 %59, i64 2)
  br label %61

61:                                               ; preds = %48, %57, %52, %45
  %62 = phi i64 [ %58, %57 ], [ %20, %52 ], [ %20, %48 ], [ %20, %45 ]
  %.0127 = phi i64 [ %50, %57 ], [ %50, %52 ], [ %50, %48 ], [ 0, %45 ]
  %.0126 = phi i64 [ %54, %57 ], [ %54, %52 ], [ %21, %48 ], [ %21, %45 ]
  %.0125 = phi i64 [ %60, %57 ], [ 2, %52 ], [ 2, %48 ], [ 2, %45 ]
  %.not145 = icmp sge i64 %62, %.0125
  %63 = icmp slt i64 %62, %42
  %or.cond151 = and i1 %63, %.not145
  %64 = icmp ult i64 %.0127, %42
  %or.cond152 = and i1 %64, %or.cond151
  br i1 %or.cond152, label %65, label %.loopexit

65:                                               ; preds = %61
  %66 = sub nsw i64 %42, %.0127
  store i64 %66, ptr %9, align 8, !tbaa !5
  %67 = icmp sgt i64 %66, 0
  br i1 %67, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %65
  %68 = add i64 %16, 1
  br label %69

69:                                               ; preds = %.lr.ph, %99
  %.0129.neg156 = phi i64 [ -1, %.lr.ph ], [ %.0129.neg, %99 ]
  %.0129155 = phi i64 [ 1, %.lr.ph ], [ %100, %99 ]
  %70 = sub nsw i64 %42, %.0129155
  %71 = add nsw i64 %70, 1
  %72 = call i64 @llvm.smin.i64(i64 %71, i64 %62)
  store i64 %72, ptr %13, align 8, !tbaa !5
  %73 = load i64, ptr %0, align 8, !tbaa !5
  %74 = add i64 %.0129.neg156, 1
  %75 = add i64 %74, %73
  store i64 %75, ptr %11, align 8, !tbaa !5
  %76 = mul i64 %.0129155, %68
  %77 = getelementptr inbounds %struct.complex, ptr %18, i64 %76
  %78 = getelementptr inbounds %struct.complex, ptr %19, i64 %.0129155
  %79 = call i32 @cgeqr2_(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef %77, ptr noundef nonnull %3, ptr noundef nonnull %78, ptr noundef nonnull %5, ptr noundef nonnull %14) #4
  %80 = load i64, ptr %13, align 8, !tbaa !5
  %81 = add nsw i64 %80, %.0129155
  %82 = load i64, ptr %1, align 8, !tbaa !5
  %.not148 = icmp sgt i64 %81, %82
  br i1 %.not148, label %99, label %83

83:                                               ; preds = %69
  %84 = load i64, ptr %0, align 8, !tbaa !5
  %85 = add i64 %74, %84
  store i64 %85, ptr %11, align 8, !tbaa !5
  %86 = call i32 @clarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef %77, ptr noundef nonnull %3, ptr noundef nonnull %78, ptr noundef nonnull %5, ptr noundef nonnull %15) #4
  %87 = load i64, ptr %0, align 8, !tbaa !5
  %88 = add i64 %74, %87
  store i64 %88, ptr %11, align 8, !tbaa !5
  %89 = load i64, ptr %1, align 8, !tbaa !5
  %90 = load i64, ptr %13, align 8, !tbaa !5
  %91 = add i64 %90, %.0129155
  %92 = add i64 %89, 1
  %93 = sub i64 %92, %91
  store i64 %93, ptr %12, align 8, !tbaa !5
  %94 = mul nsw i64 %91, %16
  %95 = getelementptr %struct.complex, ptr %18, i64 %.0129155
  %96 = getelementptr %struct.complex, ptr %95, i64 %94
  %97 = getelementptr %struct.complex, ptr %5, i64 %90
  %98 = 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 %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef %77, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %15, ptr noundef %96, ptr noundef nonnull %3, ptr noundef %97, ptr noundef nonnull %15) #4
  br label %99

99:                                               ; preds = %69, %83
  %100 = add nsw i64 %62, %.0129155
  %.0129.neg = sub i64 0, %100
  %101 = load i64, ptr %9, align 8
  %.not158 = icmp sgt i64 %100, %101
  br i1 %.not158, label %.loopexit, label %69, !llvm.loop !13

.loopexit:                                        ; preds = %99, %65, %61
  %.1 = phi i64 [ 1, %61 ], [ 1, %65 ], [ %100, %99 ]
  %.not146 = icmp sgt i64 %.1, %42
  br i1 %.not146, label %112, label %102

102:                                              ; preds = %.loopexit
  %103 = load i64, ptr %0, align 8, !tbaa !5
  %reass.sub = sub i64 %103, %.1
  %104 = add i64 %reass.sub, 1
  store i64 %104, ptr %10, align 8, !tbaa !5
  %105 = load i64, ptr %1, align 8, !tbaa !5
  %reass.sub157 = sub i64 %105, %.1
  %106 = add i64 %reass.sub157, 1
  store i64 %106, ptr %9, align 8, !tbaa !5
  %107 = add i64 %16, 1
  %108 = mul i64 %.1, %107
  %109 = getelementptr inbounds %struct.complex, ptr %18, i64 %108
  %110 = getelementptr inbounds %struct.complex, ptr %19, i64 %.1
  %111 = call i32 @cgeqr2_(ptr noundef nonnull %10, ptr noundef nonnull %9, ptr noundef %109, ptr noundef nonnull %3, ptr noundef nonnull %110, ptr noundef nonnull %5, ptr noundef nonnull %14) #4
  br label %112

112:                                              ; preds = %102, %.loopexit
  %113 = sitofp i64 %.0126 to float
  store float %113, ptr %5, align 4, !tbaa !9
  store float 0.000000e+00, ptr %24, align 4, !tbaa !12
  br label %114

114:                                              ; preds = %40, %112, %44, %.thread
  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 @cgeqr2_(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,SROAPass,SimplifyCFGPass,TailCallElimPass