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

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

@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 [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @sgerqf_(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 float, 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 float, 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 float, 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 %105

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 %104

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 %103

84:                                               ; preds = %79
  %85 = load ptr, ptr %16, align 8, !tbaa !5
  %86 = load i64, ptr %85, align 8, !tbaa !9
  %87 = load ptr, ptr %10, align 8, !tbaa !5
  %88 = load i64, ptr %87, align 8, !tbaa !9
  %89 = icmp sge i64 1, %88
  br i1 %89, label %90, label %91

90:                                               ; preds = %84
  br label %94

91:                                               ; preds = %84
  %92 = load ptr, ptr %10, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  br label %94

94:                                               ; preds = %91, %90
  %95 = phi i64 [ 1, %90 ], [ %93, %91 ]
  %96 = icmp slt i64 %86, %95
  br i1 %96, label %97, label %102

97:                                               ; preds = %94
  %98 = load i64, ptr %38, align 8, !tbaa !9
  %99 = icmp ne i64 %98, 0
  br i1 %99, label %102, label %100

100:                                              ; preds = %97
  %101 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -7, ptr %101, align 8, !tbaa !9
  br label %102

102:                                              ; preds = %100, %97, %94
  br label %103

103:                                              ; preds = %102, %82
  br label %104

104:                                              ; preds = %103, %67
  br label %105

105:                                              ; preds = %104, %61
  %106 = load ptr, ptr %17, align 8, !tbaa !5
  %107 = load i64, ptr %106, align 8, !tbaa !9
  %108 = icmp eq i64 %107, 0
  br i1 %108, label %109, label %161

109:                                              ; preds = %105
  %110 = load ptr, ptr %10, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  %112 = load ptr, ptr %11, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  %114 = icmp sle i64 %111, %113
  br i1 %114, label %115, label %118

115:                                              ; preds = %109
  %116 = load ptr, ptr %10, align 8, !tbaa !5
  %117 = load i64, ptr %116, align 8, !tbaa !9
  br label %121

118:                                              ; preds = %109
  %119 = load ptr, ptr %11, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  br label %121

121:                                              ; preds = %118, %115
  %122 = phi i64 [ %117, %115 ], [ %120, %118 ]
  store i64 %122, ptr %25, align 8, !tbaa !9
  %123 = load i64, ptr %25, align 8, !tbaa !9
  %124 = icmp eq i64 %123, 0
  br i1 %124, label %125, label %126

125:                                              ; preds = %121
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %138

126:                                              ; preds = %121
  %127 = load ptr, ptr %10, align 8, !tbaa !5
  %128 = load ptr, ptr %11, align 8, !tbaa !5
  %129 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %127, ptr noundef %128, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %129, ptr %27, align 8, !tbaa !9
  %130 = load ptr, ptr %10, align 8, !tbaa !5
  %131 = load i64, ptr %130, align 8, !tbaa !9
  %132 = load i64, ptr %27, align 8, !tbaa !9
  %133 = mul nsw i64 %131, %132
  store i64 %133, ptr %37, align 8, !tbaa !9
  %134 = load i64, ptr %37, align 8, !tbaa !9
  %135 = sitofp i64 %134 to float
  %136 = load ptr, ptr %15, align 8, !tbaa !5
  %137 = getelementptr inbounds float, ptr %136, i64 1
  store float %135, ptr %137, align 4, !tbaa !11
  br label %138

138:                                              ; preds = %126, %125
  %139 = load i64, ptr %37, align 8, !tbaa !9
  %140 = sitofp i64 %139 to float
  %141 = load ptr, ptr %15, align 8, !tbaa !5
  %142 = getelementptr inbounds float, ptr %141, i64 1
  store float %140, ptr %142, align 4, !tbaa !11
  %143 = load ptr, ptr %16, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = load ptr, ptr %10, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = icmp sge i64 1, %146
  br i1 %147, label %148, label %149

148:                                              ; preds = %138
  br label %152

149:                                              ; preds = %138
  %150 = load ptr, ptr %10, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  br label %152

152:                                              ; preds = %149, %148
  %153 = phi i64 [ 1, %148 ], [ %151, %149 ]
  %154 = icmp slt i64 %144, %153
  br i1 %154, label %155, label %160

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

158:                                              ; preds = %155
  %159 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -7, ptr %159, align 8, !tbaa !9
  br label %160

160:                                              ; preds = %158, %155, %152
  br label %161

161:                                              ; preds = %160, %105
  %162 = load ptr, ptr %17, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp ne i64 %163, 0
  br i1 %164, label %165, label %170

165:                                              ; preds = %161
  %166 = load ptr, ptr %17, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = sub nsw i64 0, %167
  store i64 %168, ptr %20, align 8, !tbaa !9
  %169 = 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 %457

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

173:                                              ; preds = %170
  store i32 0, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %457

174:                                              ; preds = %170
  br label %175

175:                                              ; preds = %174
  %176 = load i64, ptr %25, align 8, !tbaa !9
  %177 = icmp eq i64 %176, 0
  br i1 %177, label %178, label %179

178:                                              ; preds = %175
  store i32 0, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %457

179:                                              ; preds = %175
  store i64 2, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  %180 = load ptr, ptr %10, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  store i64 %181, ptr %33, align 8, !tbaa !9
  %182 = load i64, ptr %27, align 8, !tbaa !9
  %183 = icmp sgt i64 %182, 1
  br i1 %183, label %184, label %233

184:                                              ; preds = %179
  %185 = load i64, ptr %27, align 8, !tbaa !9
  %186 = load i64, ptr %25, align 8, !tbaa !9
  %187 = icmp slt i64 %185, %186
  br i1 %187, label %188, label %233

188:                                              ; preds = %184
  store i64 0, ptr %20, align 8, !tbaa !9
  %189 = load ptr, ptr %10, align 8, !tbaa !5
  %190 = load ptr, ptr %11, align 8, !tbaa !5
  %191 = call i64 @ilaenv_(ptr noundef @c__3, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %189, ptr noundef %190, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %191, ptr %21, align 8, !tbaa !9
  %192 = load i64, ptr %20, align 8, !tbaa !9
  %193 = load i64, ptr %21, align 8, !tbaa !9
  %194 = icmp sge i64 %192, %193
  br i1 %194, label %195, label %197

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

197:                                              ; preds = %188
  %198 = load i64, ptr %21, align 8, !tbaa !9
  br label %199

199:                                              ; preds = %197, %195
  %200 = phi i64 [ %196, %195 ], [ %198, %197 ]
  store i64 %200, ptr %32, align 8, !tbaa !9
  %201 = load i64, ptr %32, align 8, !tbaa !9
  %202 = load i64, ptr %25, align 8, !tbaa !9
  %203 = icmp slt i64 %201, %202
  br i1 %203, label %204, label %232

204:                                              ; preds = %199
  %205 = load ptr, ptr %10, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  store i64 %206, ptr %36, align 8, !tbaa !9
  %207 = load i64, ptr %36, align 8, !tbaa !9
  %208 = load i64, ptr %27, align 8, !tbaa !9
  %209 = mul nsw i64 %207, %208
  store i64 %209, ptr %33, align 8, !tbaa !9
  %210 = load ptr, ptr %16, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = load i64, ptr %33, align 8, !tbaa !9
  %213 = icmp slt i64 %211, %212
  br i1 %213, label %214, label %231

214:                                              ; preds = %204
  %215 = load ptr, ptr %16, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = load i64, ptr %36, align 8, !tbaa !9
  %218 = sdiv i64 %216, %217
  store i64 %218, ptr %27, align 8, !tbaa !9
  store i64 2, ptr %20, align 8, !tbaa !9
  %219 = load ptr, ptr %10, align 8, !tbaa !5
  %220 = load ptr, ptr %11, align 8, !tbaa !5
  %221 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %219, ptr noundef %220, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %221, ptr %21, align 8, !tbaa !9
  %222 = load i64, ptr %20, align 8, !tbaa !9
  %223 = load i64, ptr %21, align 8, !tbaa !9
  %224 = icmp sge i64 %222, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %214
  %226 = load i64, ptr %20, align 8, !tbaa !9
  br label %229

227:                                              ; preds = %214
  %228 = load i64, ptr %21, align 8, !tbaa !9
  br label %229

229:                                              ; preds = %227, %225
  %230 = phi i64 [ %226, %225 ], [ %228, %227 ]
  store i64 %230, ptr %34, align 8, !tbaa !9
  br label %231

231:                                              ; preds = %229, %204
  br label %232

232:                                              ; preds = %231, %199
  br label %233

233:                                              ; preds = %232, %184, %179
  %234 = load i64, ptr %27, align 8, !tbaa !9
  %235 = load i64, ptr %34, align 8, !tbaa !9
  %236 = icmp sge i64 %234, %235
  br i1 %236, label %237, label %431

237:                                              ; preds = %233
  %238 = load i64, ptr %27, align 8, !tbaa !9
  %239 = load i64, ptr %25, align 8, !tbaa !9
  %240 = icmp slt i64 %238, %239
  br i1 %240, label %241, label %431

241:                                              ; preds = %237
  %242 = load i64, ptr %32, align 8, !tbaa !9
  %243 = load i64, ptr %25, align 8, !tbaa !9
  %244 = icmp slt i64 %242, %243
  br i1 %244, label %245, label %431

245:                                              ; preds = %241
  %246 = load i64, ptr %25, align 8, !tbaa !9
  %247 = load i64, ptr %32, align 8, !tbaa !9
  %248 = sub nsw i64 %246, %247
  %249 = sub nsw i64 %248, 1
  %250 = load i64, ptr %27, align 8, !tbaa !9
  %251 = sdiv i64 %249, %250
  %252 = load i64, ptr %27, align 8, !tbaa !9
  %253 = mul nsw i64 %251, %252
  store i64 %253, ptr %28, align 8, !tbaa !9
  %254 = load i64, ptr %25, align 8, !tbaa !9
  store i64 %254, ptr %20, align 8, !tbaa !9
  %255 = load i64, ptr %28, align 8, !tbaa !9
  %256 = load i64, ptr %27, align 8, !tbaa !9
  %257 = add nsw i64 %255, %256
  store i64 %257, ptr %21, align 8, !tbaa !9
  %258 = load i64, ptr %20, align 8, !tbaa !9
  %259 = load i64, ptr %21, align 8, !tbaa !9
  %260 = icmp sle i64 %258, %259
  br i1 %260, label %261, label %263

261:                                              ; preds = %245
  %262 = load i64, ptr %20, align 8, !tbaa !9
  br label %265

263:                                              ; preds = %245
  %264 = load i64, ptr %21, align 8, !tbaa !9
  br label %265

265:                                              ; preds = %263, %261
  %266 = phi i64 [ %262, %261 ], [ %264, %263 ]
  store i64 %266, ptr %29, align 8, !tbaa !9
  %267 = load i64, ptr %25, align 8, !tbaa !9
  %268 = load i64, ptr %29, align 8, !tbaa !9
  %269 = sub nsw i64 %267, %268
  %270 = add nsw i64 %269, 1
  store i64 %270, ptr %20, align 8, !tbaa !9
  %271 = load i64, ptr %27, align 8, !tbaa !9
  %272 = sub nsw i64 0, %271
  store i64 %272, ptr %21, align 8, !tbaa !9
  %273 = load i64, ptr %25, align 8, !tbaa !9
  %274 = load i64, ptr %29, align 8, !tbaa !9
  %275 = sub nsw i64 %273, %274
  %276 = load i64, ptr %28, align 8, !tbaa !9
  %277 = add nsw i64 %275, %276
  %278 = add nsw i64 %277, 1
  store i64 %278, ptr %24, align 8, !tbaa !9
  br label %279

279:                                              ; preds = %408, %265
  %280 = load i64, ptr %21, align 8, !tbaa !9
  %281 = icmp slt i64 %280, 0
  br i1 %281, label %282, label %287

282:                                              ; preds = %279
  %283 = load i64, ptr %24, align 8, !tbaa !9
  %284 = load i64, ptr %20, align 8, !tbaa !9
  %285 = icmp sge i64 %283, %284
  %286 = zext i1 %285 to i32
  br label %292

287:                                              ; preds = %279
  %288 = load i64, ptr %24, align 8, !tbaa !9
  %289 = load i64, ptr %20, align 8, !tbaa !9
  %290 = icmp sle i64 %288, %289
  %291 = zext i1 %290 to i32
  br label %292

292:                                              ; preds = %287, %282
  %293 = phi i32 [ %286, %282 ], [ %291, %287 ]
  %294 = icmp ne i32 %293, 0
  br i1 %294, label %295, label %412

295:                                              ; preds = %292
  %296 = load i64, ptr %25, align 8, !tbaa !9
  %297 = load i64, ptr %24, align 8, !tbaa !9
  %298 = sub nsw i64 %296, %297
  %299 = add nsw i64 %298, 1
  store i64 %299, ptr %22, align 8, !tbaa !9
  %300 = load i64, ptr %22, align 8, !tbaa !9
  %301 = load i64, ptr %27, align 8, !tbaa !9
  %302 = icmp sle i64 %300, %301
  br i1 %302, label %303, label %305

303:                                              ; preds = %295
  %304 = load i64, ptr %22, align 8, !tbaa !9
  br label %307

305:                                              ; preds = %295
  %306 = load i64, ptr %27, align 8, !tbaa !9
  br label %307

307:                                              ; preds = %305, %303
  %308 = phi i64 [ %304, %303 ], [ %306, %305 ]
  store i64 %308, ptr %26, align 8, !tbaa !9
  %309 = load ptr, ptr %11, align 8, !tbaa !5
  %310 = load i64, ptr %309, align 8, !tbaa !9
  %311 = load i64, ptr %25, align 8, !tbaa !9
  %312 = sub nsw i64 %310, %311
  %313 = load i64, ptr %24, align 8, !tbaa !9
  %314 = add nsw i64 %312, %313
  %315 = load i64, ptr %26, align 8, !tbaa !9
  %316 = add nsw i64 %314, %315
  %317 = sub nsw i64 %316, 1
  store i64 %317, ptr %22, align 8, !tbaa !9
  %318 = load ptr, ptr %12, align 8, !tbaa !5
  %319 = load ptr, ptr %10, align 8, !tbaa !5
  %320 = load i64, ptr %319, align 8, !tbaa !9
  %321 = load i64, ptr %25, align 8, !tbaa !9
  %322 = sub nsw i64 %320, %321
  %323 = load i64, ptr %24, align 8, !tbaa !9
  %324 = add nsw i64 %322, %323
  %325 = load i64, ptr %18, align 8, !tbaa !9
  %326 = add nsw i64 %324, %325
  %327 = getelementptr inbounds float, ptr %318, i64 %326
  %328 = load ptr, ptr %13, align 8, !tbaa !5
  %329 = load ptr, ptr %14, align 8, !tbaa !5
  %330 = load i64, ptr %24, align 8, !tbaa !9
  %331 = getelementptr inbounds float, ptr %329, i64 %330
  %332 = load ptr, ptr %15, align 8, !tbaa !5
  %333 = getelementptr inbounds float, ptr %332, i64 1
  %334 = call i32 @sgerq2_(ptr noundef %26, ptr noundef %22, ptr noundef %327, ptr noundef %328, ptr noundef %331, ptr noundef %333, ptr noundef %35)
  %335 = load ptr, ptr %10, 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 = icmp sgt i64 %340, 1
  br i1 %341, label %342, label %407

342:                                              ; preds = %307
  %343 = load ptr, ptr %11, align 8, !tbaa !5
  %344 = load i64, ptr %343, align 8, !tbaa !9
  %345 = load i64, ptr %25, align 8, !tbaa !9
  %346 = sub nsw i64 %344, %345
  %347 = load i64, ptr %24, align 8, !tbaa !9
  %348 = add nsw i64 %346, %347
  %349 = load i64, ptr %26, align 8, !tbaa !9
  %350 = add nsw i64 %348, %349
  %351 = sub nsw i64 %350, 1
  store i64 %351, ptr %22, align 8, !tbaa !9
  %352 = load ptr, ptr %12, align 8, !tbaa !5
  %353 = load ptr, ptr %10, align 8, !tbaa !5
  %354 = load i64, ptr %353, align 8, !tbaa !9
  %355 = load i64, ptr %25, align 8, !tbaa !9
  %356 = sub nsw i64 %354, %355
  %357 = load i64, ptr %24, align 8, !tbaa !9
  %358 = add nsw i64 %356, %357
  %359 = load i64, ptr %18, align 8, !tbaa !9
  %360 = add nsw i64 %358, %359
  %361 = getelementptr inbounds float, ptr %352, i64 %360
  %362 = load ptr, ptr %13, align 8, !tbaa !5
  %363 = load ptr, ptr %14, align 8, !tbaa !5
  %364 = load i64, ptr %24, align 8, !tbaa !9
  %365 = getelementptr inbounds float, ptr %363, i64 %364
  %366 = load ptr, ptr %15, align 8, !tbaa !5
  %367 = getelementptr inbounds float, ptr %366, i64 1
  %368 = call i32 @slarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %26, ptr noundef %361, ptr noundef %362, ptr noundef %365, ptr noundef %367, ptr noundef %36)
  %369 = load ptr, ptr %10, 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 = sub nsw i64 %374, 1
  store i64 %375, ptr %22, align 8, !tbaa !9
  %376 = load ptr, ptr %11, align 8, !tbaa !5
  %377 = load i64, ptr %376, align 8, !tbaa !9
  %378 = load i64, ptr %25, align 8, !tbaa !9
  %379 = sub nsw i64 %377, %378
  %380 = load i64, ptr %24, align 8, !tbaa !9
  %381 = add nsw i64 %379, %380
  %382 = load i64, ptr %26, align 8, !tbaa !9
  %383 = add nsw i64 %381, %382
  %384 = sub nsw i64 %383, 1
  store i64 %384, ptr %23, align 8, !tbaa !9
  %385 = load ptr, ptr %12, align 8, !tbaa !5
  %386 = load ptr, ptr %10, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  %388 = load i64, ptr %25, align 8, !tbaa !9
  %389 = sub nsw i64 %387, %388
  %390 = load i64, ptr %24, align 8, !tbaa !9
  %391 = add nsw i64 %389, %390
  %392 = load i64, ptr %18, align 8, !tbaa !9
  %393 = add nsw i64 %391, %392
  %394 = getelementptr inbounds float, ptr %385, i64 %393
  %395 = load ptr, ptr %13, align 8, !tbaa !5
  %396 = load ptr, ptr %15, align 8, !tbaa !5
  %397 = getelementptr inbounds float, ptr %396, i64 1
  %398 = load ptr, ptr %12, align 8, !tbaa !5
  %399 = load i64, ptr %19, align 8, !tbaa !9
  %400 = getelementptr inbounds float, ptr %398, i64 %399
  %401 = load ptr, ptr %13, align 8, !tbaa !5
  %402 = load ptr, ptr %15, align 8, !tbaa !5
  %403 = load i64, ptr %26, align 8, !tbaa !9
  %404 = add nsw i64 %403, 1
  %405 = getelementptr inbounds float, ptr %402, i64 %404
  %406 = call i32 @slarfb_(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 %394, ptr noundef %395, ptr noundef %397, ptr noundef %36, ptr noundef %400, ptr noundef %401, ptr noundef %405, ptr noundef %36)
  br label %407

407:                                              ; preds = %342, %307
  br label %408

408:                                              ; preds = %407
  %409 = load i64, ptr %21, align 8, !tbaa !9
  %410 = load i64, ptr %24, align 8, !tbaa !9
  %411 = add nsw i64 %410, %409
  store i64 %411, ptr %24, align 8, !tbaa !9
  br label %279, !llvm.loop !13

412:                                              ; preds = %292
  %413 = load ptr, ptr %10, align 8, !tbaa !5
  %414 = load i64, ptr %413, align 8, !tbaa !9
  %415 = load i64, ptr %25, align 8, !tbaa !9
  %416 = sub nsw i64 %414, %415
  %417 = load i64, ptr %24, align 8, !tbaa !9
  %418 = add nsw i64 %416, %417
  %419 = load i64, ptr %27, align 8, !tbaa !9
  %420 = add nsw i64 %418, %419
  %421 = sub nsw i64 %420, 1
  store i64 %421, ptr %30, align 8, !tbaa !9
  %422 = load ptr, ptr %11, align 8, !tbaa !5
  %423 = load i64, ptr %422, align 8, !tbaa !9
  %424 = load i64, ptr %25, align 8, !tbaa !9
  %425 = sub nsw i64 %423, %424
  %426 = load i64, ptr %24, align 8, !tbaa !9
  %427 = add nsw i64 %425, %426
  %428 = load i64, ptr %27, align 8, !tbaa !9
  %429 = add nsw i64 %427, %428
  %430 = sub nsw i64 %429, 1
  store i64 %430, ptr %31, align 8, !tbaa !9
  br label %436

431:                                              ; preds = %241, %237, %233
  %432 = load ptr, ptr %10, align 8, !tbaa !5
  %433 = load i64, ptr %432, align 8, !tbaa !9
  store i64 %433, ptr %30, align 8, !tbaa !9
  %434 = load ptr, ptr %11, align 8, !tbaa !5
  %435 = load i64, ptr %434, align 8, !tbaa !9
  store i64 %435, ptr %31, align 8, !tbaa !9
  br label %436

436:                                              ; preds = %431, %412
  %437 = load i64, ptr %30, align 8, !tbaa !9
  %438 = icmp sgt i64 %437, 0
  br i1 %438, label %439, label %452

439:                                              ; preds = %436
  %440 = load i64, ptr %31, align 8, !tbaa !9
  %441 = icmp sgt i64 %440, 0
  br i1 %441, label %442, label %452

442:                                              ; preds = %439
  %443 = load ptr, ptr %12, align 8, !tbaa !5
  %444 = load i64, ptr %19, align 8, !tbaa !9
  %445 = getelementptr inbounds float, ptr %443, i64 %444
  %446 = load ptr, ptr %13, align 8, !tbaa !5
  %447 = load ptr, ptr %14, align 8, !tbaa !5
  %448 = getelementptr inbounds float, ptr %447, i64 1
  %449 = load ptr, ptr %15, align 8, !tbaa !5
  %450 = getelementptr inbounds float, ptr %449, i64 1
  %451 = call i32 @sgerq2_(ptr noundef %30, ptr noundef %31, ptr noundef %445, ptr noundef %446, ptr noundef %448, ptr noundef %450, ptr noundef %35)
  br label %452

452:                                              ; preds = %442, %439, %436
  %453 = load i64, ptr %33, align 8, !tbaa !9
  %454 = sitofp i64 %453 to float
  %455 = load ptr, ptr %15, align 8, !tbaa !5
  %456 = getelementptr inbounds float, ptr %455, i64 1
  store float %454, ptr %456, align 4, !tbaa !11
  store i32 0, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %457

457:                                              ; preds = %452, %178, %173, %165
  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
  %458 = load i32, ptr %9, align 4
  ret i32 %458
}

; 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 @sgerq2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @slarfb_(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, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"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"

@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 [8 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @sgerqf_(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 float, ptr %2, i64 %18
  %20 = getelementptr inbounds i8, ptr %4, i64 -4
  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 %.thread193.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 %.thread193.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 %.thread193.sink.split, label %31

31:                                               ; preds = %28
  %32 = icmp sge i64 %21, %spec.select
  %or.cond = or i1 %22, %32
  br i1 %or.cond, label %33, label %.thread193.sink.split

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

36:                                               ; preds = %33
  %37 = 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
  %38 = load i64, ptr %0, align 8, !tbaa !5
  %39 = mul nsw i64 %38, %37
  %40 = sitofp i64 %39 to float
  %.pre = load i64, ptr %6, align 8, !tbaa !5
  br label %41

41:                                               ; preds = %33, %36
  %42 = phi i64 [ %38, %36 ], [ %23, %33 ]
  %43 = phi i64 [ %.pre, %36 ], [ %21, %33 ]
  %.0163 = phi i64 [ %37, %36 ], [ undef, %33 ]
  %.0159 = phi float [ %40, %36 ], [ 1.000000e+00, %33 ]
  store float %.0159, ptr %5, align 4, !tbaa !9
  %spec.select183 = tail call i64 @llvm.smax.i64(i64 %42, i64 1)
  %44 = icmp sge i64 %43, %spec.select183
  %or.cond3 = select i1 %44, i1 true, i1 %22
  br i1 %or.cond3, label %.thread, label %.thread193.sink.split

.thread:                                          ; preds = %41
  %.pr189.pr = load i64, ptr %7, align 8, !tbaa !5
  %.not176 = icmp eq i64 %.pr189.pr, 0
  br i1 %.not176, label %48, label %.thread193

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

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

48:                                               ; preds = %.thread
  %or.cond187 = or i1 %22, %35
  br i1 %or.cond187, label %139, label %49

49:                                               ; preds = %48
  %50 = icmp sgt i64 %.0163, 1
  %51 = icmp slt i64 %.0163, %34
  %or.cond184 = and i1 %50, %51
  br i1 %or.cond184, label %52, label %65

52:                                               ; preds = %49
  %53 = 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
  %54 = tail call i64 @llvm.smax.i64(i64 %53, i64 0)
  %55 = icmp ult i64 %54, %34
  br i1 %55, label %56, label %65

56:                                               ; preds = %52
  %57 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %57, ptr %16, align 8, !tbaa !5
  %58 = mul nsw i64 %57, %.0163
  %59 = load i64, ptr %6, align 8, !tbaa !5
  %60 = icmp slt i64 %59, %58
  br i1 %60, label %61, label %65

61:                                               ; preds = %56
  %62 = sdiv i64 %59, %57
  %63 = 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
  %64 = tail call i64 @llvm.smax.i64(i64 %63, i64 2)
  br label %65

65:                                               ; preds = %52, %61, %56, %49
  %.2 = phi i64 [ %62, %61 ], [ %.0163, %56 ], [ %.0163, %52 ], [ %.0163, %49 ]
  %.0162 = phi i64 [ %54, %61 ], [ %54, %56 ], [ %54, %52 ], [ 1, %49 ]
  %.0161 = phi i64 [ %58, %61 ], [ %58, %56 ], [ %42, %52 ], [ %42, %49 ]
  %.0160 = phi i64 [ %64, %61 ], [ 2, %56 ], [ 2, %52 ], [ 2, %49 ]
  %.not179 = icmp sge i64 %.2, %.0160
  %66 = icmp slt i64 %.2, %34
  %or.cond185 = and i1 %66, %.not179
  %67 = icmp ult i64 %.0162, %34
  %or.cond186 = and i1 %67, %or.cond185
  br i1 %or.cond186, label %68, label %128

68:                                               ; preds = %65
  %69 = xor i64 %.0162, -1
  %70 = add nsw i64 %34, %69
  %.fr = freeze i64 %70
  %71 = srem i64 %.fr, %.2
  %72 = sub nsw i64 %.fr, %71
  %73 = add nsw i64 %72, %.2
  %74 = tail call i64 @llvm.smin.i64(i64 %34, i64 %73)
  %75 = sub nsw i64 %34, %74
  %76 = add i64 %75, 1
  %77 = add i64 %76, %72
  %78 = icmp sgt i64 %77, %75
  %79 = xor i64 %34, -1
  br i1 %78, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %68, %120
  %.0165202 = phi i64 [ %121, %120 ], [ %77, %68 ]
  %80 = sub nsw i64 %34, %.0165202
  %81 = add nsw i64 %80, 1
  %82 = call i64 @llvm.smin.i64(i64 %81, i64 %.2)
  store i64 %82, ptr %12, align 8, !tbaa !5
  %83 = load i64, ptr %1, align 8, !tbaa !5
  %84 = add i64 %.0165202, %79
  %85 = add i64 %84, %82
  %86 = add i64 %85, %83
  store i64 %86, ptr %10, align 8, !tbaa !5
  %87 = load i64, ptr %0, align 8, !tbaa !5
  %88 = sub nsw i64 %87, %34
  %89 = getelementptr float, ptr %19, i64 %88
  %90 = getelementptr float, ptr %89, i64 %.0165202
  %91 = getelementptr float, ptr %90, i64 %17
  %92 = getelementptr inbounds float, ptr %20, i64 %.0165202
  %93 = call i32 @sgerq2_(ptr noundef nonnull %12, ptr noundef nonnull %10, ptr noundef %91, ptr noundef nonnull %3, ptr noundef nonnull %92, ptr noundef nonnull %5, ptr noundef nonnull %15) #4
  %94 = load i64, ptr %0, align 8, !tbaa !5
  %95 = sub nsw i64 %94, %34
  %96 = add nsw i64 %95, %.0165202
  %97 = icmp sgt i64 %96, 1
  br i1 %97, label %98, label %120

98:                                               ; preds = %.lr.ph
  %99 = load i64, ptr %1, align 8, !tbaa !5
  %100 = load i64, ptr %12, align 8, !tbaa !5
  %101 = add i64 %84, %99
  %102 = add i64 %101, %100
  store i64 %102, ptr %10, align 8, !tbaa !5
  %103 = getelementptr float, ptr %19, i64 %95
  %104 = getelementptr float, ptr %103, i64 %.0165202
  %105 = getelementptr float, ptr %104, i64 %17
  %106 = call i32 @slarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef %105, ptr noundef nonnull %3, ptr noundef nonnull %92, ptr noundef nonnull %5, ptr noundef nonnull %16) #4
  %107 = load i64, ptr %0, align 8, !tbaa !5
  %108 = sub nsw i64 %107, %34
  %109 = add i64 %.0165202, -1
  %110 = add i64 %109, %108
  store i64 %110, ptr %10, align 8, !tbaa !5
  %111 = load i64, ptr %1, align 8, !tbaa !5
  %112 = load i64, ptr %12, align 8, !tbaa !5
  %113 = add i64 %84, %111
  %114 = add i64 %113, %112
  store i64 %114, ptr %11, align 8, !tbaa !5
  %115 = getelementptr float, ptr %19, i64 %108
  %116 = getelementptr float, ptr %115, i64 %.0165202
  %117 = getelementptr float, ptr %116, i64 %17
  %118 = getelementptr float, ptr %5, i64 %112
  %119 = call i32 @slarfb_(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 %117, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %118, ptr noundef nonnull %16) #4
  br label %120

120:                                              ; preds = %.lr.ph, %98
  %121 = sub i64 %.0165202, %.2
  %.not = icmp slt i64 %121, %76
  br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %120, %68
  %.0165.lcssa = phi i64 [ %77, %68 ], [ %121, %120 ]
  %122 = load i64, ptr %0, align 8, !tbaa !5
  %123 = add i64 %.2, %79
  %124 = add i64 %123, %.0165.lcssa
  %125 = add i64 %124, %122
  store i64 %125, ptr %13, align 8, !tbaa !5
  %126 = load i64, ptr %1, align 8, !tbaa !5
  %127 = add i64 %124, %126
  br label %131

128:                                              ; preds = %65
  %129 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %129, ptr %13, align 8, !tbaa !5
  %130 = load i64, ptr %1, align 8, !tbaa !5
  br label %131

131:                                              ; preds = %128, %._crit_edge
  %132 = phi i64 [ %129, %128 ], [ %125, %._crit_edge ]
  %storemerge = phi i64 [ %130, %128 ], [ %127, %._crit_edge ]
  store i64 %storemerge, ptr %14, align 8, !tbaa !5
  %133 = icmp sgt i64 %132, 0
  %134 = icmp sgt i64 %storemerge, 0
  %or.cond5 = select i1 %133, i1 %134, i1 false
  br i1 %or.cond5, label %135, label %137

135:                                              ; preds = %131
  %136 = call i32 @sgerq2_(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 %137

137:                                              ; preds = %135, %131
  %138 = sitofp i64 %.0161 to float
  store float %138, ptr %5, align 4, !tbaa !9
  br label %139

139:                                              ; preds = %48, %137, %.thread193
  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 @sgerq2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @slarfb_(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, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"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