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

; 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 @dgerqf_(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 double, 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 double, 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 double, 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 %138

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 %10, 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 double
  %118 = load ptr, ptr %15, align 8, !tbaa !5
  %119 = getelementptr inbounds double, ptr %118, i64 1
  store double %117, ptr %119, align 8, !tbaa !11
  %120 = load ptr, ptr %16, align 8, !tbaa !5
  %121 = load i64, ptr %120, align 8, !tbaa !9
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = load i64, ptr %122, align 8, !tbaa !9
  %124 = icmp sge i64 1, %123
  br i1 %124, label %125, label %126

125:                                              ; preds = %115
  br label %129

126:                                              ; preds = %115
  %127 = load ptr, ptr %10, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  br label %129

129:                                              ; preds = %126, %125
  %130 = phi i64 [ 1, %125 ], [ %128, %126 ]
  %131 = icmp slt i64 %121, %130
  br i1 %131, label %132, label %137

132:                                              ; preds = %129
  %133 = load i64, ptr %38, align 8, !tbaa !9
  %134 = icmp ne i64 %133, 0
  br i1 %134, label %137, label %135

135:                                              ; preds = %132
  %136 = load ptr, ptr %17, align 8, !tbaa !5
  store i64 -7, ptr %136, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %135, %132, %129
  br label %138

138:                                              ; preds = %137, %86
  %139 = load ptr, ptr %17, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = icmp ne i64 %140, 0
  br i1 %141, label %142, label %147

142:                                              ; preds = %138
  %143 = load ptr, ptr %17, align 8, !tbaa !5
  %144 = load i64, ptr %143, align 8, !tbaa !9
  %145 = sub nsw i64 0, %144
  store i64 %145, ptr %20, align 8, !tbaa !9
  %146 = 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 %434

147:                                              ; preds = %138
  %148 = load i64, ptr %38, align 8, !tbaa !9
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %150, label %151

150:                                              ; preds = %147
  store i32 0, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %434

151:                                              ; preds = %147
  br label %152

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

155:                                              ; preds = %152
  store i32 0, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %434

156:                                              ; preds = %152
  store i64 2, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  %157 = load ptr, ptr %10, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  store i64 %158, ptr %33, align 8, !tbaa !9
  %159 = load i64, ptr %27, align 8, !tbaa !9
  %160 = icmp sgt i64 %159, 1
  br i1 %160, label %161, label %210

161:                                              ; preds = %156
  %162 = load i64, ptr %27, align 8, !tbaa !9
  %163 = load i64, ptr %25, align 8, !tbaa !9
  %164 = icmp slt i64 %162, %163
  br i1 %164, label %165, label %210

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

172:                                              ; preds = %165
  %173 = load i64, ptr %20, align 8, !tbaa !9
  br label %176

174:                                              ; preds = %165
  %175 = load i64, ptr %21, align 8, !tbaa !9
  br label %176

176:                                              ; preds = %174, %172
  %177 = phi i64 [ %173, %172 ], [ %175, %174 ]
  store i64 %177, ptr %32, align 8, !tbaa !9
  %178 = load i64, ptr %32, align 8, !tbaa !9
  %179 = load i64, ptr %25, align 8, !tbaa !9
  %180 = icmp slt i64 %178, %179
  br i1 %180, label %181, label %209

181:                                              ; preds = %176
  %182 = load ptr, ptr %10, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  store i64 %183, ptr %36, align 8, !tbaa !9
  %184 = load i64, ptr %36, align 8, !tbaa !9
  %185 = load i64, ptr %27, align 8, !tbaa !9
  %186 = mul nsw i64 %184, %185
  store i64 %186, ptr %33, align 8, !tbaa !9
  %187 = load ptr, ptr %16, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = load i64, ptr %33, align 8, !tbaa !9
  %190 = icmp slt i64 %188, %189
  br i1 %190, label %191, label %208

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

202:                                              ; preds = %191
  %203 = load i64, ptr %20, align 8, !tbaa !9
  br label %206

204:                                              ; preds = %191
  %205 = load i64, ptr %21, align 8, !tbaa !9
  br label %206

206:                                              ; preds = %204, %202
  %207 = phi i64 [ %203, %202 ], [ %205, %204 ]
  store i64 %207, ptr %34, align 8, !tbaa !9
  br label %208

208:                                              ; preds = %206, %181
  br label %209

209:                                              ; preds = %208, %176
  br label %210

210:                                              ; preds = %209, %161, %156
  %211 = load i64, ptr %27, align 8, !tbaa !9
  %212 = load i64, ptr %34, align 8, !tbaa !9
  %213 = icmp sge i64 %211, %212
  br i1 %213, label %214, label %408

214:                                              ; preds = %210
  %215 = load i64, ptr %27, align 8, !tbaa !9
  %216 = load i64, ptr %25, align 8, !tbaa !9
  %217 = icmp slt i64 %215, %216
  br i1 %217, label %218, label %408

218:                                              ; preds = %214
  %219 = load i64, ptr %32, 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 %408

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

238:                                              ; preds = %222
  %239 = load i64, ptr %20, align 8, !tbaa !9
  br label %242

240:                                              ; preds = %222
  %241 = load i64, ptr %21, align 8, !tbaa !9
  br label %242

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

256:                                              ; preds = %385, %242
  %257 = load i64, ptr %21, align 8, !tbaa !9
  %258 = icmp slt i64 %257, 0
  br i1 %258, label %259, label %264

259:                                              ; preds = %256
  %260 = load i64, ptr %24, align 8, !tbaa !9
  %261 = load i64, ptr %20, align 8, !tbaa !9
  %262 = icmp sge i64 %260, %261
  %263 = zext i1 %262 to i32
  br label %269

264:                                              ; preds = %256
  %265 = load i64, ptr %24, align 8, !tbaa !9
  %266 = load i64, ptr %20, align 8, !tbaa !9
  %267 = icmp sle i64 %265, %266
  %268 = zext i1 %267 to i32
  br label %269

269:                                              ; preds = %264, %259
  %270 = phi i32 [ %263, %259 ], [ %268, %264 ]
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %272, label %389

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

280:                                              ; preds = %272
  %281 = load i64, ptr %22, align 8, !tbaa !9
  br label %284

282:                                              ; preds = %272
  %283 = load i64, ptr %27, align 8, !tbaa !9
  br label %284

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

319:                                              ; preds = %284
  %320 = load ptr, ptr %11, align 8, !tbaa !5
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = load i64, ptr %25, align 8, !tbaa !9
  %323 = sub nsw i64 %321, %322
  %324 = load i64, ptr %24, align 8, !tbaa !9
  %325 = add nsw i64 %323, %324
  %326 = load i64, ptr %26, align 8, !tbaa !9
  %327 = add nsw i64 %325, %326
  %328 = sub nsw i64 %327, 1
  store i64 %328, ptr %22, align 8, !tbaa !9
  %329 = load ptr, ptr %12, align 8, !tbaa !5
  %330 = load ptr, ptr %10, align 8, !tbaa !5
  %331 = load i64, ptr %330, align 8, !tbaa !9
  %332 = load i64, ptr %25, align 8, !tbaa !9
  %333 = sub nsw i64 %331, %332
  %334 = load i64, ptr %24, align 8, !tbaa !9
  %335 = add nsw i64 %333, %334
  %336 = load i64, ptr %18, align 8, !tbaa !9
  %337 = add nsw i64 %335, %336
  %338 = getelementptr inbounds double, ptr %329, i64 %337
  %339 = load ptr, ptr %13, align 8, !tbaa !5
  %340 = load ptr, ptr %14, align 8, !tbaa !5
  %341 = load i64, ptr %24, align 8, !tbaa !9
  %342 = getelementptr inbounds double, ptr %340, i64 %341
  %343 = load ptr, ptr %15, align 8, !tbaa !5
  %344 = getelementptr inbounds double, ptr %343, i64 1
  %345 = call i32 @dlarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %22, ptr noundef %26, ptr noundef %338, ptr noundef %339, ptr noundef %342, ptr noundef %344, ptr noundef %36)
  %346 = load ptr, ptr %10, align 8, !tbaa !5
  %347 = load i64, ptr %346, align 8, !tbaa !9
  %348 = load i64, ptr %25, align 8, !tbaa !9
  %349 = sub nsw i64 %347, %348
  %350 = load i64, ptr %24, align 8, !tbaa !9
  %351 = add nsw i64 %349, %350
  %352 = sub nsw i64 %351, 1
  store i64 %352, ptr %22, 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 %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 %26, align 8, !tbaa !9
  %360 = add nsw i64 %358, %359
  %361 = sub nsw i64 %360, 1
  store i64 %361, ptr %23, align 8, !tbaa !9
  %362 = load ptr, ptr %12, align 8, !tbaa !5
  %363 = load ptr, ptr %10, align 8, !tbaa !5
  %364 = load i64, ptr %363, align 8, !tbaa !9
  %365 = load i64, ptr %25, align 8, !tbaa !9
  %366 = sub nsw i64 %364, %365
  %367 = load i64, ptr %24, align 8, !tbaa !9
  %368 = add nsw i64 %366, %367
  %369 = load i64, ptr %18, align 8, !tbaa !9
  %370 = add nsw i64 %368, %369
  %371 = getelementptr inbounds double, ptr %362, i64 %370
  %372 = load ptr, ptr %13, align 8, !tbaa !5
  %373 = load ptr, ptr %15, align 8, !tbaa !5
  %374 = getelementptr inbounds double, ptr %373, i64 1
  %375 = load ptr, ptr %12, align 8, !tbaa !5
  %376 = load i64, ptr %19, align 8, !tbaa !9
  %377 = getelementptr inbounds double, ptr %375, i64 %376
  %378 = load ptr, ptr %13, align 8, !tbaa !5
  %379 = load ptr, ptr %15, align 8, !tbaa !5
  %380 = load i64, ptr %26, align 8, !tbaa !9
  %381 = add nsw i64 %380, 1
  %382 = getelementptr inbounds double, ptr %379, i64 %381
  %383 = call i32 @dlarfb_(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 %371, ptr noundef %372, ptr noundef %374, ptr noundef %36, ptr noundef %377, ptr noundef %378, ptr noundef %382, ptr noundef %36)
  br label %384

384:                                              ; preds = %319, %284
  br label %385

385:                                              ; preds = %384
  %386 = load i64, ptr %21, align 8, !tbaa !9
  %387 = load i64, ptr %24, align 8, !tbaa !9
  %388 = add nsw i64 %387, %386
  store i64 %388, ptr %24, align 8, !tbaa !9
  br label %256, !llvm.loop !13

389:                                              ; preds = %269
  %390 = load ptr, ptr %10, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = load i64, ptr %25, align 8, !tbaa !9
  %393 = sub nsw i64 %391, %392
  %394 = load i64, ptr %24, align 8, !tbaa !9
  %395 = add nsw i64 %393, %394
  %396 = load i64, ptr %27, align 8, !tbaa !9
  %397 = add nsw i64 %395, %396
  %398 = sub nsw i64 %397, 1
  store i64 %398, ptr %30, align 8, !tbaa !9
  %399 = load ptr, ptr %11, align 8, !tbaa !5
  %400 = load i64, ptr %399, align 8, !tbaa !9
  %401 = load i64, ptr %25, align 8, !tbaa !9
  %402 = sub nsw i64 %400, %401
  %403 = load i64, ptr %24, align 8, !tbaa !9
  %404 = add nsw i64 %402, %403
  %405 = load i64, ptr %27, align 8, !tbaa !9
  %406 = add nsw i64 %404, %405
  %407 = sub nsw i64 %406, 1
  store i64 %407, ptr %31, align 8, !tbaa !9
  br label %413

408:                                              ; preds = %218, %214, %210
  %409 = load ptr, ptr %10, align 8, !tbaa !5
  %410 = load i64, ptr %409, align 8, !tbaa !9
  store i64 %410, ptr %30, align 8, !tbaa !9
  %411 = load ptr, ptr %11, align 8, !tbaa !5
  %412 = load i64, ptr %411, align 8, !tbaa !9
  store i64 %412, ptr %31, align 8, !tbaa !9
  br label %413

413:                                              ; preds = %408, %389
  %414 = load i64, ptr %30, align 8, !tbaa !9
  %415 = icmp sgt i64 %414, 0
  br i1 %415, label %416, label %429

416:                                              ; preds = %413
  %417 = load i64, ptr %31, align 8, !tbaa !9
  %418 = icmp sgt i64 %417, 0
  br i1 %418, label %419, label %429

419:                                              ; preds = %416
  %420 = load ptr, ptr %12, align 8, !tbaa !5
  %421 = load i64, ptr %19, align 8, !tbaa !9
  %422 = getelementptr inbounds double, ptr %420, i64 %421
  %423 = load ptr, ptr %13, align 8, !tbaa !5
  %424 = load ptr, ptr %14, align 8, !tbaa !5
  %425 = getelementptr inbounds double, ptr %424, i64 1
  %426 = load ptr, ptr %15, align 8, !tbaa !5
  %427 = getelementptr inbounds double, ptr %426, i64 1
  %428 = call i32 @dgerq2_(ptr noundef %30, ptr noundef %31, ptr noundef %422, ptr noundef %423, ptr noundef %425, ptr noundef %427, ptr noundef %35)
  br label %429

429:                                              ; preds = %419, %416, %413
  %430 = load i64, ptr %33, align 8, !tbaa !9
  %431 = sitofp i64 %430 to double
  %432 = load ptr, ptr %15, align 8, !tbaa !5
  %433 = getelementptr inbounds double, ptr %432, i64 1
  store double %431, ptr %433, align 8, !tbaa !11
  store i32 0, ptr %9, align 4
  store i32 1, ptr %39, align 4
  br label %434

434:                                              ; preds = %429, %155, %150, %142
  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
  %435 = load i32, ptr %9, align 4
  ret i32 %435
}

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

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

declare i32 @dlarfb_(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 = !{!"double", !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 @dgerqf_(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 double, 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 %.thread182.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 %.thread182.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 %.thread182.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 %0, align 8, !tbaa !5
  %37 = mul nsw i64 %36, %35
  %38 = sitofp i64 %37 to double
  %.pre = load i64, ptr %6, align 8, !tbaa !5
  br label %39

39:                                               ; preds = %31, %34
  %40 = phi i64 [ %36, %34 ], [ %23, %31 ]
  %41 = phi i64 [ %.pre, %34 ], [ %21, %31 ]
  %.0154 = phi i64 [ %35, %34 ], [ undef, %31 ]
  %.0150 = phi double [ %38, %34 ], [ 1.000000e+00, %31 ]
  store double %.0150, ptr %5, align 8, !tbaa !9
  %spec.select172 = tail call i64 @llvm.smax.i64(i64 %40, i64 1)
  %42 = icmp sge i64 %41, %spec.select172
  %or.cond = select i1 %42, i1 true, i1 %22
  br i1 %or.cond, label %.thread, label %.thread182.sink.split

.thread:                                          ; preds = %39
  %.pr178.pr = load i64, ptr %7, align 8, !tbaa !5
  %.not166 = icmp eq i64 %.pr178.pr, 0
  br i1 %.not166, label %46, label %.thread182

.thread182.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 %.thread182

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

46:                                               ; preds = %.thread
  %or.cond176 = or i1 %22, %33
  br i1 %or.cond176, label %137, label %47

47:                                               ; preds = %46
  %48 = icmp sgt i64 %.0154, 1
  %49 = icmp slt i64 %.0154, %32
  %or.cond173 = and i1 %48, %49
  br i1 %or.cond173, label %50, label %63

50:                                               ; preds = %47
  %51 = 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
  %52 = tail call i64 @llvm.smax.i64(i64 %51, i64 0)
  %53 = icmp ult i64 %52, %32
  br i1 %53, label %54, label %63

54:                                               ; preds = %50
  %55 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %55, ptr %16, align 8, !tbaa !5
  %56 = mul nsw i64 %55, %.0154
  %57 = load i64, ptr %6, align 8, !tbaa !5
  %58 = icmp slt i64 %57, %56
  br i1 %58, label %59, label %63

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

63:                                               ; preds = %50, %59, %54, %47
  %.2 = phi i64 [ %60, %59 ], [ %.0154, %54 ], [ %.0154, %50 ], [ %.0154, %47 ]
  %.0153 = phi i64 [ %52, %59 ], [ %52, %54 ], [ %52, %50 ], [ 1, %47 ]
  %.0152 = phi i64 [ %56, %59 ], [ %56, %54 ], [ %40, %50 ], [ %40, %47 ]
  %.0151 = phi i64 [ %62, %59 ], [ 2, %54 ], [ 2, %50 ], [ 2, %47 ]
  %.not169 = icmp sge i64 %.2, %.0151
  %64 = icmp slt i64 %.2, %32
  %or.cond174 = and i1 %64, %.not169
  %65 = icmp ult i64 %.0153, %32
  %or.cond175 = and i1 %65, %or.cond174
  br i1 %or.cond175, label %66, label %126

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

.lr.ph:                                           ; preds = %66, %118
  %.0156191 = phi i64 [ %119, %118 ], [ %75, %66 ]
  %78 = sub nsw i64 %32, %.0156191
  %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 %1, align 8, !tbaa !5
  %82 = add i64 %.0156191, %77
  %83 = add i64 %82, %80
  %84 = add i64 %83, %81
  store i64 %84, ptr %10, align 8, !tbaa !5
  %85 = load i64, ptr %0, align 8, !tbaa !5
  %86 = sub nsw i64 %85, %32
  %87 = getelementptr double, ptr %19, i64 %86
  %88 = getelementptr double, ptr %87, i64 %.0156191
  %89 = getelementptr double, ptr %88, i64 %17
  %90 = getelementptr inbounds double, ptr %20, i64 %.0156191
  %91 = call i32 @dgerq2_(ptr noundef nonnull %12, ptr noundef nonnull %10, ptr noundef %89, ptr noundef nonnull %3, ptr noundef nonnull %90, ptr noundef nonnull %5, ptr noundef nonnull %15) #4
  %92 = load i64, ptr %0, align 8, !tbaa !5
  %93 = sub nsw i64 %92, %32
  %94 = add nsw i64 %93, %.0156191
  %95 = icmp sgt i64 %94, 1
  br i1 %95, label %96, label %118

96:                                               ; preds = %.lr.ph
  %97 = load i64, ptr %1, align 8, !tbaa !5
  %98 = load i64, ptr %12, align 8, !tbaa !5
  %99 = add i64 %82, %97
  %100 = add i64 %99, %98
  store i64 %100, ptr %10, align 8, !tbaa !5
  %101 = getelementptr double, ptr %19, i64 %93
  %102 = getelementptr double, ptr %101, i64 %.0156191
  %103 = getelementptr double, ptr %102, i64 %17
  %104 = call i32 @dlarft_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %10, ptr noundef nonnull %12, ptr noundef %103, ptr noundef nonnull %3, ptr noundef nonnull %90, ptr noundef nonnull %5, ptr noundef nonnull %16) #4
  %105 = load i64, ptr %0, align 8, !tbaa !5
  %106 = sub nsw i64 %105, %32
  %107 = add i64 %.0156191, -1
  %108 = add i64 %107, %106
  store i64 %108, ptr %10, align 8, !tbaa !5
  %109 = load i64, ptr %1, align 8, !tbaa !5
  %110 = load i64, ptr %12, align 8, !tbaa !5
  %111 = add i64 %82, %109
  %112 = add i64 %111, %110
  store i64 %112, ptr %11, align 8, !tbaa !5
  %113 = getelementptr double, ptr %19, i64 %106
  %114 = getelementptr double, ptr %113, i64 %.0156191
  %115 = getelementptr double, ptr %114, i64 %17
  %116 = getelementptr double, ptr %5, i64 %110
  %117 = call i32 @dlarfb_(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 %115, ptr noundef nonnull %3, ptr noundef nonnull %5, ptr noundef nonnull %16, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %116, ptr noundef nonnull %16) #4
  br label %118

118:                                              ; preds = %.lr.ph, %96
  %119 = sub i64 %.0156191, %.2
  %.not = icmp slt i64 %119, %74
  br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %118, %66
  %.0156.lcssa = phi i64 [ %75, %66 ], [ %119, %118 ]
  %120 = load i64, ptr %0, align 8, !tbaa !5
  %121 = add i64 %.2, %77
  %122 = add i64 %121, %.0156.lcssa
  %123 = add i64 %122, %120
  store i64 %123, ptr %13, align 8, !tbaa !5
  %124 = load i64, ptr %1, align 8, !tbaa !5
  %125 = add i64 %122, %124
  br label %129

126:                                              ; preds = %63
  %127 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %127, ptr %13, align 8, !tbaa !5
  %128 = load i64, ptr %1, align 8, !tbaa !5
  br label %129

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

133:                                              ; preds = %129
  %134 = call i32 @dgerq2_(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 %135

135:                                              ; preds = %133, %129
  %136 = sitofp i64 %.0152 to double
  store double %136, ptr %5, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %46, %135, %.thread182
  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 @dgerq2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @dlarfb_(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 = !{!"double", !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