; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (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 i32, align 4
@.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 i32, align 4
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.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 void @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 ptr, align 8
  %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 i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  store ptr %7, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  %39 = load ptr, ptr %12, align 8, !tbaa !5
  %40 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %40, ptr %17, align 4, !tbaa !9
  %41 = load i32, ptr %17, align 4, !tbaa !9
  %42 = mul nsw i32 %41, 1
  %43 = add nsw i32 1, %42
  store i32 %43, ptr %18, align 4, !tbaa !9
  %44 = load i32, ptr %18, align 4, !tbaa !9
  %45 = load ptr, ptr %11, align 8, !tbaa !5
  %46 = sext i32 %44 to i64
  %47 = sub i64 0, %46
  %48 = getelementptr inbounds double, ptr %45, i64 %47
  store ptr %48, ptr %11, align 8, !tbaa !5
  %49 = load ptr, ptr %13, align 8, !tbaa !5
  %50 = getelementptr inbounds double, ptr %49, i32 -1
  store ptr %50, ptr %13, align 8, !tbaa !5
  %51 = load ptr, ptr %14, align 8, !tbaa !5
  %52 = getelementptr inbounds double, ptr %51, i32 -1
  store ptr %52, ptr %14, align 8, !tbaa !5
  %53 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 0, ptr %53, align 4, !tbaa !9
  %54 = load ptr, ptr %15, align 8, !tbaa !5
  %55 = load i32, ptr %54, align 4, !tbaa !9
  %56 = icmp eq i32 %55, -1
  %57 = zext i1 %56 to i32
  store i32 %57, ptr %36, align 4, !tbaa !9
  %58 = load ptr, ptr %9, align 8, !tbaa !5
  %59 = load i32, ptr %58, align 4, !tbaa !9
  %60 = icmp slt i32 %59, 0
  br i1 %60, label %61, label %63

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

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

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

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

75:                                               ; preds = %69
  br label %79

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

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

82:                                               ; preds = %79
  %83 = load ptr, ptr %16, align 8, !tbaa !5
  store i32 -4, ptr %83, align 4, !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 %16, align 8, !tbaa !5
  %88 = load i32, ptr %87, align 4, !tbaa !9
  %89 = icmp eq i32 %88, 0
  br i1 %89, label %90, label %138

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

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

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

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

106:                                              ; preds = %102
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %115

107:                                              ; preds = %102
  %108 = load ptr, ptr %9, align 8, !tbaa !5
  %109 = load ptr, ptr %10, align 8, !tbaa !5
  %110 = call i32 @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, i32 noundef 6, i32 noundef 1)
  store i32 %110, ptr %28, align 4, !tbaa !9
  %111 = load ptr, ptr %9, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = load i32, ptr %28, align 4, !tbaa !9
  %114 = mul nsw i32 %112, %113
  store i32 %114, ptr %35, align 4, !tbaa !9
  br label %115

115:                                              ; preds = %107, %106
  %116 = load i32, ptr %35, align 4, !tbaa !9
  %117 = sitofp i32 %116 to double
  %118 = load ptr, ptr %14, 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 %15, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = load ptr, ptr %9, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = icmp sge i32 1, %123
  br i1 %124, label %125, label %126

125:                                              ; preds = %115
  br label %129

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

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

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

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

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

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

142:                                              ; preds = %138
  %143 = load ptr, ptr %16, align 8, !tbaa !5
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = sub nsw i32 0, %144
  store i32 %145, ptr %19, align 4, !tbaa !9
  %146 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %19, i32 noundef 6)
  store i32 1, ptr %38, align 4
  br label %438

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

150:                                              ; preds = %147
  store i32 1, ptr %38, align 4
  br label %438

151:                                              ; preds = %147
  br label %152

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

155:                                              ; preds = %152
  store i32 1, ptr %38, align 4
  br label %438

156:                                              ; preds = %152
  store i32 2, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  store i32 %158, ptr %37, align 4, !tbaa !9
  %159 = load i32, ptr %28, align 4, !tbaa !9
  %160 = icmp sgt i32 %159, 1
  br i1 %160, label %161, label %210

161:                                              ; preds = %156
  %162 = load i32, ptr %28, align 4, !tbaa !9
  %163 = load i32, ptr %24, align 4, !tbaa !9
  %164 = icmp slt i32 %162, %163
  br i1 %164, label %165, label %210

165:                                              ; preds = %161
  store i32 0, ptr %19, align 4, !tbaa !9
  %166 = load ptr, ptr %9, align 8, !tbaa !5
  %167 = load ptr, ptr %10, align 8, !tbaa !5
  %168 = call i32 @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, i32 noundef 6, i32 noundef 1)
  store i32 %168, ptr %20, align 4, !tbaa !9
  %169 = load i32, ptr %19, align 4, !tbaa !9
  %170 = load i32, ptr %20, align 4, !tbaa !9
  %171 = icmp sge i32 %169, %170
  br i1 %171, label %172, label %174

172:                                              ; preds = %165
  %173 = load i32, ptr %19, align 4, !tbaa !9
  br label %176

174:                                              ; preds = %165
  %175 = load i32, ptr %20, align 4, !tbaa !9
  br label %176

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

181:                                              ; preds = %176
  %182 = load ptr, ptr %9, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  store i32 %183, ptr %34, align 4, !tbaa !9
  %184 = load i32, ptr %34, align 4, !tbaa !9
  %185 = load i32, ptr %28, align 4, !tbaa !9
  %186 = mul nsw i32 %184, %185
  store i32 %186, ptr %37, align 4, !tbaa !9
  %187 = load ptr, ptr %15, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = load i32, ptr %37, align 4, !tbaa !9
  %190 = icmp slt i32 %188, %189
  br i1 %190, label %191, label %208

191:                                              ; preds = %181
  %192 = load ptr, ptr %15, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = load i32, ptr %34, align 4, !tbaa !9
  %195 = sdiv i32 %193, %194
  store i32 %195, ptr %28, align 4, !tbaa !9
  store i32 2, ptr %19, align 4, !tbaa !9
  %196 = load ptr, ptr %9, align 8, !tbaa !5
  %197 = load ptr, ptr %10, align 8, !tbaa !5
  %198 = call i32 @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, i32 noundef 6, i32 noundef 1)
  store i32 %198, ptr %20, align 4, !tbaa !9
  %199 = load i32, ptr %19, align 4, !tbaa !9
  %200 = load i32, ptr %20, align 4, !tbaa !9
  %201 = icmp sge i32 %199, %200
  br i1 %201, label %202, label %204

202:                                              ; preds = %191
  %203 = load i32, ptr %19, align 4, !tbaa !9
  br label %206

204:                                              ; preds = %191
  %205 = load i32, ptr %20, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %204, %202
  %207 = phi i32 [ %203, %202 ], [ %205, %204 ]
  store i32 %207, ptr %25, align 4, !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 i32, ptr %28, align 4, !tbaa !9
  %212 = load i32, ptr %25, align 4, !tbaa !9
  %213 = icmp sge i32 %211, %212
  br i1 %213, label %214, label %412

214:                                              ; preds = %210
  %215 = load i32, ptr %28, align 4, !tbaa !9
  %216 = load i32, ptr %24, align 4, !tbaa !9
  %217 = icmp slt i32 %215, %216
  br i1 %217, label %218, label %412

218:                                              ; preds = %214
  %219 = load i32, ptr %33, align 4, !tbaa !9
  %220 = load i32, ptr %24, align 4, !tbaa !9
  %221 = icmp slt i32 %219, %220
  br i1 %221, label %222, label %412

222:                                              ; preds = %218
  %223 = load i32, ptr %24, align 4, !tbaa !9
  %224 = load i32, ptr %33, align 4, !tbaa !9
  %225 = sub nsw i32 %223, %224
  %226 = sub nsw i32 %225, 1
  %227 = load i32, ptr %28, align 4, !tbaa !9
  %228 = sdiv i32 %226, %227
  %229 = load i32, ptr %28, align 4, !tbaa !9
  %230 = mul nsw i32 %228, %229
  store i32 %230, ptr %29, align 4, !tbaa !9
  %231 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %231, ptr %19, align 4, !tbaa !9
  %232 = load i32, ptr %29, align 4, !tbaa !9
  %233 = load i32, ptr %28, align 4, !tbaa !9
  %234 = add nsw i32 %232, %233
  store i32 %234, ptr %20, align 4, !tbaa !9
  %235 = load i32, ptr %19, align 4, !tbaa !9
  %236 = load i32, ptr %20, align 4, !tbaa !9
  %237 = icmp sle i32 %235, %236
  br i1 %237, label %238, label %240

238:                                              ; preds = %222
  %239 = load i32, ptr %19, align 4, !tbaa !9
  br label %242

240:                                              ; preds = %222
  %241 = load i32, ptr %20, align 4, !tbaa !9
  br label %242

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

256:                                              ; preds = %389, %242
  %257 = load i32, ptr %20, align 4, !tbaa !9
  %258 = icmp slt i32 %257, 0
  br i1 %258, label %259, label %264

259:                                              ; preds = %256
  %260 = load i32, ptr %23, align 4, !tbaa !9
  %261 = load i32, ptr %19, align 4, !tbaa !9
  %262 = icmp sge i32 %260, %261
  %263 = zext i1 %262 to i32
  br label %269

264:                                              ; preds = %256
  %265 = load i32, ptr %23, align 4, !tbaa !9
  %266 = load i32, ptr %19, align 4, !tbaa !9
  %267 = icmp sle i32 %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 %393

272:                                              ; preds = %269
  %273 = load i32, ptr %24, align 4, !tbaa !9
  %274 = load i32, ptr %23, align 4, !tbaa !9
  %275 = sub nsw i32 %273, %274
  %276 = add nsw i32 %275, 1
  store i32 %276, ptr %21, align 4, !tbaa !9
  %277 = load i32, ptr %21, align 4, !tbaa !9
  %278 = load i32, ptr %28, align 4, !tbaa !9
  %279 = icmp sle i32 %277, %278
  br i1 %279, label %280, label %282

280:                                              ; preds = %272
  %281 = load i32, ptr %21, align 4, !tbaa !9
  br label %284

282:                                              ; preds = %272
  %283 = load i32, ptr %28, align 4, !tbaa !9
  br label %284

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

320:                                              ; preds = %284
  %321 = load ptr, ptr %10, align 8, !tbaa !5
  %322 = load i32, ptr %321, align 4, !tbaa !9
  %323 = load i32, ptr %24, align 4, !tbaa !9
  %324 = sub nsw i32 %322, %323
  %325 = load i32, ptr %23, align 4, !tbaa !9
  %326 = add nsw i32 %324, %325
  %327 = load i32, ptr %27, align 4, !tbaa !9
  %328 = add nsw i32 %326, %327
  %329 = sub nsw i32 %328, 1
  store i32 %329, ptr %21, align 4, !tbaa !9
  %330 = load ptr, ptr %11, align 8, !tbaa !5
  %331 = load ptr, ptr %9, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = load i32, ptr %24, align 4, !tbaa !9
  %334 = sub nsw i32 %332, %333
  %335 = load i32, ptr %23, align 4, !tbaa !9
  %336 = add nsw i32 %334, %335
  %337 = load i32, ptr %17, align 4, !tbaa !9
  %338 = add nsw i32 %336, %337
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds double, ptr %330, i64 %339
  %341 = load ptr, ptr %12, align 8, !tbaa !5
  %342 = load ptr, ptr %13, align 8, !tbaa !5
  %343 = load i32, ptr %23, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds double, ptr %342, i64 %344
  %346 = load ptr, ptr %14, align 8, !tbaa !5
  %347 = getelementptr inbounds double, ptr %346, i64 1
  call void @dlarft_(ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %21, ptr noundef %27, ptr noundef %340, ptr noundef %341, ptr noundef %345, ptr noundef %347, ptr noundef %34)
  %348 = load ptr, ptr %9, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = load i32, ptr %24, align 4, !tbaa !9
  %351 = sub nsw i32 %349, %350
  %352 = load i32, ptr %23, align 4, !tbaa !9
  %353 = add nsw i32 %351, %352
  %354 = sub nsw i32 %353, 1
  store i32 %354, ptr %21, align 4, !tbaa !9
  %355 = load ptr, ptr %10, align 8, !tbaa !5
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = load i32, ptr %24, align 4, !tbaa !9
  %358 = sub nsw i32 %356, %357
  %359 = load i32, ptr %23, align 4, !tbaa !9
  %360 = add nsw i32 %358, %359
  %361 = load i32, ptr %27, align 4, !tbaa !9
  %362 = add nsw i32 %360, %361
  %363 = sub nsw i32 %362, 1
  store i32 %363, ptr %22, align 4, !tbaa !9
  %364 = load ptr, ptr %11, align 8, !tbaa !5
  %365 = load ptr, ptr %9, align 8, !tbaa !5
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = load i32, ptr %24, align 4, !tbaa !9
  %368 = sub nsw i32 %366, %367
  %369 = load i32, ptr %23, align 4, !tbaa !9
  %370 = add nsw i32 %368, %369
  %371 = load i32, ptr %17, align 4, !tbaa !9
  %372 = add nsw i32 %370, %371
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds double, ptr %364, i64 %373
  %375 = load ptr, ptr %12, align 8, !tbaa !5
  %376 = load ptr, ptr %14, align 8, !tbaa !5
  %377 = getelementptr inbounds double, ptr %376, i64 1
  %378 = load ptr, ptr %11, align 8, !tbaa !5
  %379 = load i32, ptr %18, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds double, ptr %378, i64 %380
  %382 = load ptr, ptr %12, align 8, !tbaa !5
  %383 = load ptr, ptr %14, align 8, !tbaa !5
  %384 = load i32, ptr %27, align 4, !tbaa !9
  %385 = add nsw i32 %384, 1
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds double, ptr %383, i64 %386
  call void @dlarfb_(ptr noundef @.str.4, ptr noundef @.str.5, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %21, ptr noundef %22, ptr noundef %27, ptr noundef %374, ptr noundef %375, ptr noundef %377, ptr noundef %34, ptr noundef %381, ptr noundef %382, ptr noundef %387, ptr noundef %34)
  br label %388

388:                                              ; preds = %320, %284
  br label %389

389:                                              ; preds = %388
  %390 = load i32, ptr %20, align 4, !tbaa !9
  %391 = load i32, ptr %23, align 4, !tbaa !9
  %392 = add nsw i32 %391, %390
  store i32 %392, ptr %23, align 4, !tbaa !9
  br label %256, !llvm.loop !13

393:                                              ; preds = %269
  %394 = load ptr, ptr %9, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = load i32, ptr %24, align 4, !tbaa !9
  %397 = sub nsw i32 %395, %396
  %398 = load i32, ptr %23, align 4, !tbaa !9
  %399 = add nsw i32 %397, %398
  %400 = load i32, ptr %28, align 4, !tbaa !9
  %401 = add nsw i32 %399, %400
  %402 = sub nsw i32 %401, 1
  store i32 %402, ptr %31, align 4, !tbaa !9
  %403 = load ptr, ptr %10, align 8, !tbaa !5
  %404 = load i32, ptr %403, align 4, !tbaa !9
  %405 = load i32, ptr %24, align 4, !tbaa !9
  %406 = sub nsw i32 %404, %405
  %407 = load i32, ptr %23, align 4, !tbaa !9
  %408 = add nsw i32 %406, %407
  %409 = load i32, ptr %28, align 4, !tbaa !9
  %410 = add nsw i32 %408, %409
  %411 = sub nsw i32 %410, 1
  store i32 %411, ptr %32, align 4, !tbaa !9
  br label %417

412:                                              ; preds = %218, %214, %210
  %413 = load ptr, ptr %9, align 8, !tbaa !5
  %414 = load i32, ptr %413, align 4, !tbaa !9
  store i32 %414, ptr %31, align 4, !tbaa !9
  %415 = load ptr, ptr %10, align 8, !tbaa !5
  %416 = load i32, ptr %415, align 4, !tbaa !9
  store i32 %416, ptr %32, align 4, !tbaa !9
  br label %417

417:                                              ; preds = %412, %393
  %418 = load i32, ptr %31, align 4, !tbaa !9
  %419 = icmp sgt i32 %418, 0
  br i1 %419, label %420, label %433

420:                                              ; preds = %417
  %421 = load i32, ptr %32, align 4, !tbaa !9
  %422 = icmp sgt i32 %421, 0
  br i1 %422, label %423, label %433

423:                                              ; preds = %420
  %424 = load ptr, ptr %11, align 8, !tbaa !5
  %425 = load i32, ptr %18, align 4, !tbaa !9
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds double, ptr %424, i64 %426
  %428 = load ptr, ptr %12, align 8, !tbaa !5
  %429 = load ptr, ptr %13, align 8, !tbaa !5
  %430 = getelementptr inbounds double, ptr %429, i64 1
  %431 = load ptr, ptr %14, align 8, !tbaa !5
  %432 = getelementptr inbounds double, ptr %431, i64 1
  call void @dgerq2_(ptr noundef %31, ptr noundef %32, ptr noundef %427, ptr noundef %428, ptr noundef %430, ptr noundef %432, ptr noundef %26)
  br label %433

433:                                              ; preds = %423, %420, %417
  %434 = load i32, ptr %37, align 4, !tbaa !9
  %435 = sitofp i32 %434 to double
  %436 = load ptr, ptr %14, align 8, !tbaa !5
  %437 = getelementptr inbounds double, ptr %436, i64 1
  store double %435, ptr %437, align 8, !tbaa !11
  store i32 1, ptr %38, align 4
  br label %438

438:                                              ; preds = %433, %155, %150, %142
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  ret void
}

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

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

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

declare void @dgerq2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @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 = !{!"int", !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 i32, align 4
@.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 i32, align 4
@c__3 = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.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 void @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 i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #4
  %17 = load i32, ptr %3, align 4, !tbaa !5
  %narrow = xor i32 %17, -1
  %18 = sext i32 %narrow to i64
  %19 = getelementptr inbounds double, ptr %2, i64 %18
  %20 = getelementptr inbounds i8, ptr %4, i64 -8
  store i32 0, ptr %7, align 4, !tbaa !5
  %21 = load i32, ptr %6, align 4, !tbaa !5
  %22 = icmp eq i32 %21, -1
  %23 = load i32, ptr %0, align 4, !tbaa !5
  %24 = icmp slt i32 %23, 0
  br i1 %24, label %.thread181.sink.split, label %25

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

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

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

34:                                               ; preds = %31
  %35 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #4
  %36 = load i32, ptr %0, align 4, !tbaa !5
  %37 = mul nsw i32 %36, %35
  %38 = sitofp i32 %37 to double
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  br label %39

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

.thread:                                          ; preds = %39
  %.pr177.pr = load i32, ptr %7, align 4, !tbaa !5
  %.not165 = icmp eq i32 %.pr177.pr, 0
  br i1 %.not165, label %46, label %.thread181

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

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

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

47:                                               ; preds = %46
  %48 = icmp sgt i32 %.0151, 1
  %49 = icmp slt i32 %.0151, %32
  %or.cond172 = and i1 %48, %49
  br i1 %or.cond172, label %50, label %63

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

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

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

63:                                               ; preds = %50, %59, %54, %47
  %.0152 = phi i32 [ %62, %59 ], [ 2, %54 ], [ 2, %50 ], [ 2, %47 ]
  %.2 = phi i32 [ %60, %59 ], [ %.0151, %54 ], [ %.0151, %50 ], [ %.0151, %47 ]
  %.0150 = phi i32 [ %52, %59 ], [ %52, %54 ], [ %52, %50 ], [ 1, %47 ]
  %.0 = phi i32 [ %56, %59 ], [ %56, %54 ], [ %40, %50 ], [ %40, %47 ]
  %.not168 = icmp sge i32 %.2, %.0152
  %64 = icmp slt i32 %.2, %32
  %or.cond173 = and i1 %.not168, %64
  %65 = icmp ult i32 %.0150, %32
  %or.cond174 = and i1 %or.cond173, %65
  br i1 %or.cond174, label %66, label %126

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

.lr.ph:                                           ; preds = %66
  %78 = sub i32 %17, %32
  br label %79

79:                                               ; preds = %.lr.ph, %118
  %.0154190 = phi i32 [ %75, %.lr.ph ], [ %119, %118 ]
  %80 = sub nsw i32 %32, %.0154190
  %81 = add nsw i32 %80, 1
  %82 = call i32 @llvm.smin.i32(i32 %81, i32 %.2)
  store i32 %82, ptr %13, align 4, !tbaa !5
  %83 = load i32, ptr %1, align 4, !tbaa !5
  %84 = add i32 %.0154190, %77
  %85 = add i32 %84, %82
  %86 = add i32 %85, %83
  store i32 %86, ptr %10, align 4, !tbaa !5
  %87 = load i32, ptr %0, align 4, !tbaa !5
  %88 = add i32 %78, %.0154190
  %89 = add i32 %88, %87
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds double, ptr %19, i64 %90
  %92 = sext i32 %.0154190 to i64
  %93 = getelementptr inbounds double, ptr %20, i64 %92
  call void @dgerq2_(ptr noundef nonnull %13, ptr noundef nonnull %10, ptr noundef %91, ptr noundef nonnull %3, ptr noundef nonnull %93, ptr noundef nonnull %5, ptr noundef nonnull %12) #4
  %94 = load i32, ptr %0, align 4, !tbaa !5
  %95 = sub nsw i32 %94, %32
  %96 = add nsw i32 %95, %.0154190
  %97 = icmp sgt i32 %96, 1
  br i1 %97, label %98, label %118

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

118:                                              ; preds = %79, %98
  %119 = sub i32 %.0154190, %.2
  %.not = icmp slt i32 %119, %74
  br i1 %.not, label %._crit_edge, label %79, !llvm.loop !11

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

126:                                              ; preds = %63
  %127 = load i32, ptr %0, align 4, !tbaa !5
  store i32 %127, ptr %14, align 4, !tbaa !5
  %128 = load i32, ptr %1, align 4, !tbaa !5
  br label %129

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

133:                                              ; preds = %129
  call void @dgerq2_(ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef nonnull %12) #4
  br label %134

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

136:                                              ; preds = %46, %134, %.thread181
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #4
  ret void
}

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

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

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

declare void @dgerq2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @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 i32 @llvm.smax.i32(i32, i32) #3

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umin.i32(i32, i32) #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 = !{!"int", !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