; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dlamtsqr)

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [9 x i8], align 1
@c__0 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dlamtsqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15) #0 {
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %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
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  store ptr %0, ptr %17, align 8, !tbaa !5
  store ptr %1, ptr %18, align 8, !tbaa !5
  store ptr %2, ptr %19, align 8, !tbaa !5
  store ptr %3, ptr %20, align 8, !tbaa !5
  store ptr %4, ptr %21, align 8, !tbaa !5
  store ptr %5, ptr %22, align 8, !tbaa !5
  store ptr %6, ptr %23, align 8, !tbaa !5
  store ptr %7, ptr %24, align 8, !tbaa !5
  store ptr %8, ptr %25, align 8, !tbaa !5
  store ptr %9, ptr %26, align 8, !tbaa !5
  store ptr %10, ptr %27, align 8, !tbaa !5
  store ptr %11, ptr %28, align 8, !tbaa !5
  store ptr %12, ptr %29, align 8, !tbaa !5
  store ptr %13, ptr %30, align 8, !tbaa !5
  store ptr %14, ptr %31, align 8, !tbaa !5
  store ptr %15, ptr %32, align 8, !tbaa !5
  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
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  %53 = load ptr, ptr %25, align 8, !tbaa !5
  %54 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %54, ptr %33, align 4, !tbaa !9
  %55 = load i32, ptr %33, align 4, !tbaa !9
  %56 = mul nsw i32 %55, 1
  %57 = add nsw i32 1, %56
  store i32 %57, ptr %34, align 4, !tbaa !9
  %58 = load i32, ptr %34, align 4, !tbaa !9
  %59 = load ptr, ptr %24, align 8, !tbaa !5
  %60 = sext i32 %58 to i64
  %61 = sub i64 0, %60
  %62 = getelementptr inbounds double, ptr %59, i64 %61
  store ptr %62, ptr %24, align 8, !tbaa !5
  %63 = load ptr, ptr %27, align 8, !tbaa !5
  %64 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %64, ptr %37, align 4, !tbaa !9
  %65 = load i32, ptr %37, align 4, !tbaa !9
  %66 = mul nsw i32 %65, 1
  %67 = add nsw i32 1, %66
  store i32 %67, ptr %38, align 4, !tbaa !9
  %68 = load i32, ptr %38, align 4, !tbaa !9
  %69 = load ptr, ptr %26, align 8, !tbaa !5
  %70 = sext i32 %68 to i64
  %71 = sub i64 0, %70
  %72 = getelementptr inbounds double, ptr %69, i64 %71
  store ptr %72, ptr %26, align 8, !tbaa !5
  %73 = load ptr, ptr %29, align 8, !tbaa !5
  %74 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %74, ptr %35, align 4, !tbaa !9
  %75 = load i32, ptr %35, align 4, !tbaa !9
  %76 = mul nsw i32 %75, 1
  %77 = add nsw i32 1, %76
  store i32 %77, ptr %36, align 4, !tbaa !9
  %78 = load i32, ptr %36, align 4, !tbaa !9
  %79 = load ptr, ptr %28, align 8, !tbaa !5
  %80 = sext i32 %78 to i64
  %81 = sub i64 0, %80
  %82 = getelementptr inbounds double, ptr %79, i64 %81
  store ptr %82, ptr %28, align 8, !tbaa !5
  %83 = load ptr, ptr %30, align 8, !tbaa !5
  %84 = getelementptr inbounds double, ptr %83, i32 -1
  store ptr %84, ptr %30, align 8, !tbaa !5
  %85 = load ptr, ptr %31, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = icmp slt i32 %86, 0
  %88 = zext i1 %87 to i32
  store i32 %88, ptr %50, align 4, !tbaa !9
  %89 = load ptr, ptr %18, align 8, !tbaa !5
  %90 = call i32 @lsame_(ptr noundef %89, ptr noundef @.str)
  store i32 %90, ptr %49, align 4, !tbaa !9
  %91 = load ptr, ptr %18, align 8, !tbaa !5
  %92 = call i32 @lsame_(ptr noundef %91, ptr noundef @.str.1)
  store i32 %92, ptr %43, align 4, !tbaa !9
  %93 = load ptr, ptr %17, align 8, !tbaa !5
  %94 = call i32 @lsame_(ptr noundef %93, ptr noundef @.str.2)
  store i32 %94, ptr %42, align 4, !tbaa !9
  %95 = load ptr, ptr %17, align 8, !tbaa !5
  %96 = call i32 @lsame_(ptr noundef %95, ptr noundef @.str.3)
  store i32 %96, ptr %45, align 4, !tbaa !9
  %97 = load i32, ptr %42, align 4, !tbaa !9
  %98 = icmp ne i32 %97, 0
  br i1 %98, label %99, label %105

99:                                               ; preds = %16
  %100 = load ptr, ptr %20, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = load ptr, ptr %23, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = mul nsw i32 %101, %103
  store i32 %104, ptr %48, align 4, !tbaa !9
  br label %111

105:                                              ; preds = %16
  %106 = load ptr, ptr %22, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = load ptr, ptr %23, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = mul nsw i32 %107, %109
  store i32 %110, ptr %48, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %105, %99
  %112 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %112, align 4, !tbaa !9
  %113 = load i32, ptr %42, align 4, !tbaa !9
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %120, label %115

115:                                              ; preds = %111
  %116 = load i32, ptr %45, align 4, !tbaa !9
  %117 = icmp ne i32 %116, 0
  br i1 %117, label %120, label %118

118:                                              ; preds = %115
  %119 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -1, ptr %119, align 4, !tbaa !9
  br label %215

120:                                              ; preds = %115, %111
  %121 = load i32, ptr %43, align 4, !tbaa !9
  %122 = icmp ne i32 %121, 0
  br i1 %122, label %128, label %123

123:                                              ; preds = %120
  %124 = load i32, ptr %49, align 4, !tbaa !9
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %128, label %126

126:                                              ; preds = %123
  %127 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -2, ptr %127, align 4, !tbaa !9
  br label %214

128:                                              ; preds = %123, %120
  %129 = load ptr, ptr %19, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !9
  %131 = icmp slt i32 %130, 0
  br i1 %131, label %132, label %134

132:                                              ; preds = %128
  %133 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -3, ptr %133, align 4, !tbaa !9
  br label %213

134:                                              ; preds = %128
  %135 = load ptr, ptr %20, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = icmp slt i32 %136, 0
  br i1 %137, label %138, label %140

138:                                              ; preds = %134
  %139 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -4, ptr %139, align 4, !tbaa !9
  br label %212

140:                                              ; preds = %134
  %141 = load ptr, ptr %21, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = icmp slt i32 %142, 0
  br i1 %143, label %144, label %146

144:                                              ; preds = %140
  %145 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -5, ptr %145, align 4, !tbaa !9
  br label %211

146:                                              ; preds = %140
  %147 = load ptr, ptr %25, align 8, !tbaa !5
  %148 = load i32, ptr %147, align 4, !tbaa !9
  %149 = load ptr, ptr %21, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp sge i32 1, %150
  br i1 %151, label %152, label %153

152:                                              ; preds = %146
  br label %156

153:                                              ; preds = %146
  %154 = load ptr, ptr %21, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %153, %152
  %157 = phi i32 [ 1, %152 ], [ %155, %153 ]
  %158 = icmp slt i32 %148, %157
  br i1 %158, label %159, label %161

159:                                              ; preds = %156
  %160 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -9, ptr %160, align 4, !tbaa !9
  br label %210

161:                                              ; preds = %156
  %162 = load ptr, ptr %27, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = load ptr, ptr %23, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = icmp sge i32 1, %165
  br i1 %166, label %167, label %168

167:                                              ; preds = %161
  br label %171

168:                                              ; preds = %161
  %169 = load ptr, ptr %23, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %168, %167
  %172 = phi i32 [ 1, %167 ], [ %170, %168 ]
  %173 = icmp slt i32 %163, %172
  br i1 %173, label %174, label %176

174:                                              ; preds = %171
  %175 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -11, ptr %175, align 4, !tbaa !9
  br label %209

176:                                              ; preds = %171
  %177 = load ptr, ptr %29, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = load ptr, ptr %19, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = icmp sge i32 1, %180
  br i1 %181, label %182, label %183

182:                                              ; preds = %176
  br label %186

183:                                              ; preds = %176
  %184 = load ptr, ptr %19, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %183, %182
  %187 = phi i32 [ 1, %182 ], [ %185, %183 ]
  %188 = icmp slt i32 %178, %187
  br i1 %188, label %189, label %191

189:                                              ; preds = %186
  %190 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -13, ptr %190, align 4, !tbaa !9
  br label %208

191:                                              ; preds = %186
  %192 = load ptr, ptr %31, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = load i32, ptr %48, align 4, !tbaa !9
  %195 = icmp sge i32 1, %194
  br i1 %195, label %196, label %197

196:                                              ; preds = %191
  br label %199

197:                                              ; preds = %191
  %198 = load i32, ptr %48, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %197, %196
  %200 = phi i32 [ 1, %196 ], [ %198, %197 ]
  %201 = icmp slt i32 %193, %200
  br i1 %201, label %202, label %207

202:                                              ; preds = %199
  %203 = load i32, ptr %50, align 4, !tbaa !9
  %204 = icmp ne i32 %203, 0
  br i1 %204, label %207, label %205

205:                                              ; preds = %202
  %206 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -15, ptr %206, align 4, !tbaa !9
  br label %207

207:                                              ; preds = %205, %202, %199
  br label %208

208:                                              ; preds = %207, %189
  br label %209

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

210:                                              ; preds = %209, %159
  br label %211

211:                                              ; preds = %210, %144
  br label %212

212:                                              ; preds = %211, %138
  br label %213

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

214:                                              ; preds = %213, %126
  br label %215

215:                                              ; preds = %214, %118
  %216 = load ptr, ptr %32, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  %218 = icmp eq i32 %217, 0
  br i1 %218, label %219, label %224

219:                                              ; preds = %215
  %220 = load i32, ptr %48, align 4, !tbaa !9
  %221 = sitofp i32 %220 to double
  %222 = load ptr, ptr %30, align 8, !tbaa !5
  %223 = getelementptr inbounds double, ptr %222, i64 1
  store double %221, ptr %223, align 8, !tbaa !11
  br label %224

224:                                              ; preds = %219, %215
  %225 = load ptr, ptr %32, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = icmp ne i32 %226, 0
  br i1 %227, label %228, label %233

228:                                              ; preds = %224
  %229 = load ptr, ptr %32, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = sub nsw i32 0, %230
  store i32 %231, ptr %39, align 4, !tbaa !9
  %232 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %39, i32 noundef 8)
  store i32 1, ptr %52, align 4
  br label %1056

233:                                              ; preds = %224
  %234 = load i32, ptr %50, align 4, !tbaa !9
  %235 = icmp ne i32 %234, 0
  br i1 %235, label %236, label %237

236:                                              ; preds = %233
  store i32 1, ptr %52, align 4
  br label %1056

237:                                              ; preds = %233
  br label %238

238:                                              ; preds = %237
  %239 = load ptr, ptr %19, align 8, !tbaa !5
  %240 = load i32, ptr %239, align 4, !tbaa !9
  %241 = load ptr, ptr %20, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = icmp sle i32 %240, %242
  br i1 %243, label %244, label %247

244:                                              ; preds = %238
  %245 = load ptr, ptr %19, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  br label %250

247:                                              ; preds = %238
  %248 = load ptr, ptr %20, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %247, %244
  %251 = phi i32 [ %246, %244 ], [ %249, %247 ]
  store i32 %251, ptr %39, align 4, !tbaa !9
  %252 = load i32, ptr %39, align 4, !tbaa !9
  %253 = load ptr, ptr %21, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = icmp sle i32 %252, %254
  br i1 %255, label %256, label %258

256:                                              ; preds = %250
  %257 = load i32, ptr %39, align 4, !tbaa !9
  br label %261

258:                                              ; preds = %250
  %259 = load ptr, ptr %21, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  br label %261

261:                                              ; preds = %258, %256
  %262 = phi i32 [ %257, %256 ], [ %260, %258 ]
  %263 = icmp eq i32 %262, 0
  br i1 %263, label %264, label %265

264:                                              ; preds = %261
  store i32 1, ptr %52, align 4
  br label %1056

265:                                              ; preds = %261
  %266 = load ptr, ptr %19, align 8, !tbaa !5
  %267 = load i32, ptr %266, align 4, !tbaa !9
  %268 = load ptr, ptr %20, align 8, !tbaa !5
  %269 = load i32, ptr %268, align 4, !tbaa !9
  %270 = icmp sge i32 %267, %269
  br i1 %270, label %271, label %274

271:                                              ; preds = %265
  %272 = load ptr, ptr %19, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  br label %277

274:                                              ; preds = %265
  %275 = load ptr, ptr %20, align 8, !tbaa !5
  %276 = load i32, ptr %275, align 4, !tbaa !9
  br label %277

277:                                              ; preds = %274, %271
  %278 = phi i32 [ %273, %271 ], [ %276, %274 ]
  store i32 %278, ptr %39, align 4, !tbaa !9
  %279 = load ptr, ptr %22, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  %281 = load ptr, ptr %21, align 8, !tbaa !5
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = icmp sle i32 %280, %282
  br i1 %283, label %299, label %284

284:                                              ; preds = %277
  %285 = load ptr, ptr %22, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = load i32, ptr %39, align 4, !tbaa !9
  %288 = load ptr, ptr %21, align 8, !tbaa !5
  %289 = load i32, ptr %288, align 4, !tbaa !9
  %290 = icmp sge i32 %287, %289
  br i1 %290, label %291, label %293

291:                                              ; preds = %284
  %292 = load i32, ptr %39, align 4, !tbaa !9
  br label %296

293:                                              ; preds = %284
  %294 = load ptr, ptr %21, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  br label %296

296:                                              ; preds = %293, %291
  %297 = phi i32 [ %292, %291 ], [ %295, %293 ]
  %298 = icmp sge i32 %286, %297
  br i1 %298, label %299, label %324

299:                                              ; preds = %296, %277
  %300 = load ptr, ptr %17, align 8, !tbaa !5
  %301 = load ptr, ptr %18, align 8, !tbaa !5
  %302 = load ptr, ptr %19, align 8, !tbaa !5
  %303 = load ptr, ptr %20, align 8, !tbaa !5
  %304 = load ptr, ptr %21, align 8, !tbaa !5
  %305 = load ptr, ptr %23, align 8, !tbaa !5
  %306 = load ptr, ptr %24, align 8, !tbaa !5
  %307 = load i32, ptr %34, align 4, !tbaa !9
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds double, ptr %306, i64 %308
  %310 = load ptr, ptr %25, align 8, !tbaa !5
  %311 = load ptr, ptr %26, align 8, !tbaa !5
  %312 = load i32, ptr %38, align 4, !tbaa !9
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds double, ptr %311, i64 %313
  %315 = load ptr, ptr %27, align 8, !tbaa !5
  %316 = load ptr, ptr %28, align 8, !tbaa !5
  %317 = load i32, ptr %36, align 4, !tbaa !9
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds double, ptr %316, i64 %318
  %320 = load ptr, ptr %29, align 8, !tbaa !5
  %321 = load ptr, ptr %30, align 8, !tbaa !5
  %322 = getelementptr inbounds double, ptr %321, i64 1
  %323 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dgemqrt_(ptr noundef %300, ptr noundef %301, ptr noundef %302, ptr noundef %303, ptr noundef %304, ptr noundef %305, ptr noundef %309, ptr noundef %310, ptr noundef %314, ptr noundef %315, ptr noundef %319, ptr noundef %320, ptr noundef %322, ptr noundef %323)
  store i32 1, ptr %52, align 4
  br label %1056

324:                                              ; preds = %296
  %325 = load i32, ptr %42, align 4, !tbaa !9
  %326 = icmp ne i32 %325, 0
  br i1 %326, label %327, label %511

327:                                              ; preds = %324
  %328 = load i32, ptr %49, align 4, !tbaa !9
  %329 = icmp ne i32 %328, 0
  br i1 %329, label %330, label %511

330:                                              ; preds = %327
  %331 = load ptr, ptr %19, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = load ptr, ptr %21, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = sub nsw i32 %332, %334
  %336 = load ptr, ptr %22, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = load ptr, ptr %21, align 8, !tbaa !5
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = sub nsw i32 %337, %339
  %341 = srem i32 %335, %340
  store i32 %341, ptr %47, align 4, !tbaa !9
  %342 = load ptr, ptr %19, align 8, !tbaa !5
  %343 = load i32, ptr %342, align 4, !tbaa !9
  %344 = load ptr, ptr %21, align 8, !tbaa !5
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = sub nsw i32 %343, %345
  %347 = load ptr, ptr %22, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = load ptr, ptr %21, align 8, !tbaa !5
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = sub nsw i32 %348, %350
  %352 = sdiv i32 %346, %351
  store i32 %352, ptr %51, align 4, !tbaa !9
  %353 = load i32, ptr %47, align 4, !tbaa !9
  %354 = icmp sgt i32 %353, 0
  br i1 %354, label %355, label %399

355:                                              ; preds = %330
  %356 = load ptr, ptr %19, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = load i32, ptr %47, align 4, !tbaa !9
  %359 = sub nsw i32 %357, %358
  %360 = add nsw i32 %359, 1
  store i32 %360, ptr %46, align 4, !tbaa !9
  %361 = load ptr, ptr %20, align 8, !tbaa !5
  %362 = load ptr, ptr %21, align 8, !tbaa !5
  %363 = load ptr, ptr %23, align 8, !tbaa !5
  %364 = load ptr, ptr %24, align 8, !tbaa !5
  %365 = load i32, ptr %46, align 4, !tbaa !9
  %366 = load i32, ptr %33, align 4, !tbaa !9
  %367 = add nsw i32 %365, %366
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds double, ptr %364, i64 %368
  %370 = load ptr, ptr %25, align 8, !tbaa !5
  %371 = load ptr, ptr %26, align 8, !tbaa !5
  %372 = load i32, ptr %51, align 4, !tbaa !9
  %373 = load ptr, ptr %21, align 8, !tbaa !5
  %374 = load i32, ptr %373, align 4, !tbaa !9
  %375 = mul nsw i32 %372, %374
  %376 = add nsw i32 %375, 1
  %377 = load i32, ptr %37, align 4, !tbaa !9
  %378 = mul nsw i32 %376, %377
  %379 = add nsw i32 %378, 1
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds double, ptr %371, i64 %380
  %382 = load ptr, ptr %27, align 8, !tbaa !5
  %383 = load ptr, ptr %28, align 8, !tbaa !5
  %384 = load i32, ptr %35, align 4, !tbaa !9
  %385 = add nsw i32 %384, 1
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds double, ptr %383, i64 %386
  %388 = load ptr, ptr %29, align 8, !tbaa !5
  %389 = load ptr, ptr %28, align 8, !tbaa !5
  %390 = load i32, ptr %46, align 4, !tbaa !9
  %391 = load i32, ptr %35, align 4, !tbaa !9
  %392 = add nsw i32 %390, %391
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %389, i64 %393
  %395 = load ptr, ptr %29, align 8, !tbaa !5
  %396 = load ptr, ptr %30, align 8, !tbaa !5
  %397 = getelementptr inbounds double, ptr %396, i64 1
  %398 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtpmqrt_(ptr noundef @.str.2, ptr noundef @.str, ptr noundef %47, ptr noundef %361, ptr noundef %362, ptr noundef @c__0, ptr noundef %363, ptr noundef %369, ptr noundef %370, ptr noundef %381, ptr noundef %382, ptr noundef %387, ptr noundef %388, ptr noundef %394, ptr noundef %395, ptr noundef %397, ptr noundef %398)
  br label %403

399:                                              ; preds = %330
  %400 = load ptr, ptr %19, align 8, !tbaa !5
  %401 = load i32, ptr %400, align 4, !tbaa !9
  %402 = add nsw i32 %401, 1
  store i32 %402, ptr %46, align 4, !tbaa !9
  br label %403

403:                                              ; preds = %399, %355
  %404 = load ptr, ptr %22, align 8, !tbaa !5
  %405 = load i32, ptr %404, align 4, !tbaa !9
  %406 = add nsw i32 %405, 1
  store i32 %406, ptr %39, align 4, !tbaa !9
  %407 = load ptr, ptr %22, align 8, !tbaa !5
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = load ptr, ptr %21, align 8, !tbaa !5
  %410 = load i32, ptr %409, align 4, !tbaa !9
  %411 = sub nsw i32 %408, %410
  %412 = sub nsw i32 0, %411
  store i32 %412, ptr %40, align 4, !tbaa !9
  %413 = load i32, ptr %46, align 4, !tbaa !9
  %414 = load ptr, ptr %22, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = load ptr, ptr %21, align 8, !tbaa !5
  %417 = load i32, ptr %416, align 4, !tbaa !9
  %418 = sub nsw i32 %415, %417
  %419 = sub nsw i32 %413, %418
  store i32 %419, ptr %44, align 4, !tbaa !9
  br label %420

420:                                              ; preds = %482, %403
  %421 = load i32, ptr %40, align 4, !tbaa !9
  %422 = icmp slt i32 %421, 0
  br i1 %422, label %423, label %428

423:                                              ; preds = %420
  %424 = load i32, ptr %44, align 4, !tbaa !9
  %425 = load i32, ptr %39, align 4, !tbaa !9
  %426 = icmp sge i32 %424, %425
  %427 = zext i1 %426 to i32
  br label %433

428:                                              ; preds = %420
  %429 = load i32, ptr %44, align 4, !tbaa !9
  %430 = load i32, ptr %39, align 4, !tbaa !9
  %431 = icmp sle i32 %429, %430
  %432 = zext i1 %431 to i32
  br label %433

433:                                              ; preds = %428, %423
  %434 = phi i32 [ %427, %423 ], [ %432, %428 ]
  %435 = icmp ne i32 %434, 0
  br i1 %435, label %436, label %486

436:                                              ; preds = %433
  %437 = load i32, ptr %51, align 4, !tbaa !9
  %438 = add nsw i32 %437, -1
  store i32 %438, ptr %51, align 4, !tbaa !9
  %439 = load ptr, ptr %22, align 8, !tbaa !5
  %440 = load i32, ptr %439, align 4, !tbaa !9
  %441 = load ptr, ptr %21, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = sub nsw i32 %440, %442
  store i32 %443, ptr %41, align 4, !tbaa !9
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = load ptr, ptr %21, align 8, !tbaa !5
  %446 = load ptr, ptr %23, align 8, !tbaa !5
  %447 = load ptr, ptr %24, align 8, !tbaa !5
  %448 = load i32, ptr %44, align 4, !tbaa !9
  %449 = load i32, ptr %33, align 4, !tbaa !9
  %450 = add nsw i32 %448, %449
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds double, ptr %447, i64 %451
  %453 = load ptr, ptr %25, align 8, !tbaa !5
  %454 = load ptr, ptr %26, align 8, !tbaa !5
  %455 = load i32, ptr %51, align 4, !tbaa !9
  %456 = load ptr, ptr %21, align 8, !tbaa !5
  %457 = load i32, ptr %456, align 4, !tbaa !9
  %458 = mul nsw i32 %455, %457
  %459 = add nsw i32 %458, 1
  %460 = load i32, ptr %37, align 4, !tbaa !9
  %461 = mul nsw i32 %459, %460
  %462 = add nsw i32 %461, 1
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds double, ptr %454, i64 %463
  %465 = load ptr, ptr %27, align 8, !tbaa !5
  %466 = load ptr, ptr %28, align 8, !tbaa !5
  %467 = load i32, ptr %35, align 4, !tbaa !9
  %468 = add nsw i32 %467, 1
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds double, ptr %466, i64 %469
  %471 = load ptr, ptr %29, align 8, !tbaa !5
  %472 = load ptr, ptr %28, align 8, !tbaa !5
  %473 = load i32, ptr %44, align 4, !tbaa !9
  %474 = load i32, ptr %35, align 4, !tbaa !9
  %475 = add nsw i32 %473, %474
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds double, ptr %472, i64 %476
  %478 = load ptr, ptr %29, align 8, !tbaa !5
  %479 = load ptr, ptr %30, align 8, !tbaa !5
  %480 = getelementptr inbounds double, ptr %479, i64 1
  %481 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtpmqrt_(ptr noundef @.str.2, ptr noundef @.str, ptr noundef %41, ptr noundef %444, ptr noundef %445, ptr noundef @c__0, ptr noundef %446, ptr noundef %452, ptr noundef %453, ptr noundef %464, ptr noundef %465, ptr noundef %470, ptr noundef %471, ptr noundef %477, ptr noundef %478, ptr noundef %480, ptr noundef %481)
  br label %482

482:                                              ; preds = %436
  %483 = load i32, ptr %40, align 4, !tbaa !9
  %484 = load i32, ptr %44, align 4, !tbaa !9
  %485 = add nsw i32 %484, %483
  store i32 %485, ptr %44, align 4, !tbaa !9
  br label %420, !llvm.loop !13

486:                                              ; preds = %433
  %487 = load ptr, ptr %22, align 8, !tbaa !5
  %488 = load ptr, ptr %20, align 8, !tbaa !5
  %489 = load ptr, ptr %21, align 8, !tbaa !5
  %490 = load ptr, ptr %23, align 8, !tbaa !5
  %491 = load ptr, ptr %24, align 8, !tbaa !5
  %492 = load i32, ptr %33, align 4, !tbaa !9
  %493 = add nsw i32 %492, 1
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %491, i64 %494
  %496 = load ptr, ptr %25, align 8, !tbaa !5
  %497 = load ptr, ptr %26, align 8, !tbaa !5
  %498 = load i32, ptr %38, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds double, ptr %497, i64 %499
  %501 = load ptr, ptr %27, align 8, !tbaa !5
  %502 = load ptr, ptr %28, align 8, !tbaa !5
  %503 = load i32, ptr %35, align 4, !tbaa !9
  %504 = add nsw i32 %503, 1
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds double, ptr %502, i64 %505
  %507 = load ptr, ptr %29, align 8, !tbaa !5
  %508 = load ptr, ptr %30, align 8, !tbaa !5
  %509 = getelementptr inbounds double, ptr %508, i64 1
  %510 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dgemqrt_(ptr noundef @.str.2, ptr noundef @.str, ptr noundef %487, ptr noundef %488, ptr noundef %489, ptr noundef %490, ptr noundef %495, ptr noundef %496, ptr noundef %500, ptr noundef %501, ptr noundef %506, ptr noundef %507, ptr noundef %509, ptr noundef %510)
  br label %1051

511:                                              ; preds = %327, %324
  %512 = load i32, ptr %42, align 4, !tbaa !9
  %513 = icmp ne i32 %512, 0
  br i1 %513, label %514, label %684

514:                                              ; preds = %511
  %515 = load i32, ptr %43, align 4, !tbaa !9
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %684

517:                                              ; preds = %514
  %518 = load ptr, ptr %19, align 8, !tbaa !5
  %519 = load i32, ptr %518, align 4, !tbaa !9
  %520 = load ptr, ptr %21, align 8, !tbaa !5
  %521 = load i32, ptr %520, align 4, !tbaa !9
  %522 = sub nsw i32 %519, %521
  %523 = load ptr, ptr %22, align 8, !tbaa !5
  %524 = load i32, ptr %523, align 4, !tbaa !9
  %525 = load ptr, ptr %21, align 8, !tbaa !5
  %526 = load i32, ptr %525, align 4, !tbaa !9
  %527 = sub nsw i32 %524, %526
  %528 = srem i32 %522, %527
  store i32 %528, ptr %47, align 4, !tbaa !9
  %529 = load ptr, ptr %19, align 8, !tbaa !5
  %530 = load i32, ptr %529, align 4, !tbaa !9
  %531 = load i32, ptr %47, align 4, !tbaa !9
  %532 = sub nsw i32 %530, %531
  %533 = add nsw i32 %532, 1
  store i32 %533, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %534 = load ptr, ptr %22, align 8, !tbaa !5
  %535 = load ptr, ptr %20, align 8, !tbaa !5
  %536 = load ptr, ptr %21, align 8, !tbaa !5
  %537 = load ptr, ptr %23, align 8, !tbaa !5
  %538 = load ptr, ptr %24, align 8, !tbaa !5
  %539 = load i32, ptr %33, align 4, !tbaa !9
  %540 = add nsw i32 %539, 1
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds double, ptr %538, i64 %541
  %543 = load ptr, ptr %25, align 8, !tbaa !5
  %544 = load ptr, ptr %26, align 8, !tbaa !5
  %545 = load i32, ptr %38, align 4, !tbaa !9
  %546 = sext i32 %545 to i64
  %547 = getelementptr inbounds double, ptr %544, i64 %546
  %548 = load ptr, ptr %27, align 8, !tbaa !5
  %549 = load ptr, ptr %28, align 8, !tbaa !5
  %550 = load i32, ptr %35, align 4, !tbaa !9
  %551 = add nsw i32 %550, 1
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds double, ptr %549, i64 %552
  %554 = load ptr, ptr %29, align 8, !tbaa !5
  %555 = load ptr, ptr %30, align 8, !tbaa !5
  %556 = getelementptr inbounds double, ptr %555, i64 1
  %557 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dgemqrt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %534, ptr noundef %535, ptr noundef %536, ptr noundef %537, ptr noundef %542, ptr noundef %543, ptr noundef %547, ptr noundef %548, ptr noundef %553, ptr noundef %554, ptr noundef %556, ptr noundef %557)
  %558 = load i32, ptr %46, align 4, !tbaa !9
  %559 = load ptr, ptr %22, align 8, !tbaa !5
  %560 = load i32, ptr %559, align 4, !tbaa !9
  %561 = sub nsw i32 %558, %560
  %562 = load ptr, ptr %21, align 8, !tbaa !5
  %563 = load i32, ptr %562, align 4, !tbaa !9
  %564 = add nsw i32 %561, %563
  store i32 %564, ptr %40, align 4, !tbaa !9
  %565 = load ptr, ptr %22, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = load ptr, ptr %21, align 8, !tbaa !5
  %568 = load i32, ptr %567, align 4, !tbaa !9
  %569 = sub nsw i32 %566, %568
  store i32 %569, ptr %39, align 4, !tbaa !9
  %570 = load ptr, ptr %22, align 8, !tbaa !5
  %571 = load i32, ptr %570, align 4, !tbaa !9
  %572 = add nsw i32 %571, 1
  store i32 %572, ptr %44, align 4, !tbaa !9
  br label %573

573:                                              ; preds = %635, %517
  %574 = load i32, ptr %39, align 4, !tbaa !9
  %575 = icmp slt i32 %574, 0
  br i1 %575, label %576, label %581

576:                                              ; preds = %573
  %577 = load i32, ptr %44, align 4, !tbaa !9
  %578 = load i32, ptr %40, align 4, !tbaa !9
  %579 = icmp sge i32 %577, %578
  %580 = zext i1 %579 to i32
  br label %586

581:                                              ; preds = %573
  %582 = load i32, ptr %44, align 4, !tbaa !9
  %583 = load i32, ptr %40, align 4, !tbaa !9
  %584 = icmp sle i32 %582, %583
  %585 = zext i1 %584 to i32
  br label %586

586:                                              ; preds = %581, %576
  %587 = phi i32 [ %580, %576 ], [ %585, %581 ]
  %588 = icmp ne i32 %587, 0
  br i1 %588, label %589, label %639

589:                                              ; preds = %586
  %590 = load ptr, ptr %22, align 8, !tbaa !5
  %591 = load i32, ptr %590, align 4, !tbaa !9
  %592 = load ptr, ptr %21, align 8, !tbaa !5
  %593 = load i32, ptr %592, align 4, !tbaa !9
  %594 = sub nsw i32 %591, %593
  store i32 %594, ptr %41, align 4, !tbaa !9
  %595 = load ptr, ptr %20, align 8, !tbaa !5
  %596 = load ptr, ptr %21, align 8, !tbaa !5
  %597 = load ptr, ptr %23, align 8, !tbaa !5
  %598 = load ptr, ptr %24, align 8, !tbaa !5
  %599 = load i32, ptr %44, align 4, !tbaa !9
  %600 = load i32, ptr %33, align 4, !tbaa !9
  %601 = add nsw i32 %599, %600
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds double, ptr %598, i64 %602
  %604 = load ptr, ptr %25, align 8, !tbaa !5
  %605 = load ptr, ptr %26, align 8, !tbaa !5
  %606 = load i32, ptr %51, align 4, !tbaa !9
  %607 = load ptr, ptr %21, align 8, !tbaa !5
  %608 = load i32, ptr %607, align 4, !tbaa !9
  %609 = mul nsw i32 %606, %608
  %610 = add nsw i32 %609, 1
  %611 = load i32, ptr %37, align 4, !tbaa !9
  %612 = mul nsw i32 %610, %611
  %613 = add nsw i32 %612, 1
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds double, ptr %605, i64 %614
  %616 = load ptr, ptr %27, align 8, !tbaa !5
  %617 = load ptr, ptr %28, align 8, !tbaa !5
  %618 = load i32, ptr %35, align 4, !tbaa !9
  %619 = add nsw i32 %618, 1
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds double, ptr %617, i64 %620
  %622 = load ptr, ptr %29, align 8, !tbaa !5
  %623 = load ptr, ptr %28, align 8, !tbaa !5
  %624 = load i32, ptr %44, align 4, !tbaa !9
  %625 = load i32, ptr %35, align 4, !tbaa !9
  %626 = add nsw i32 %624, %625
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds double, ptr %623, i64 %627
  %629 = load ptr, ptr %29, align 8, !tbaa !5
  %630 = load ptr, ptr %30, align 8, !tbaa !5
  %631 = getelementptr inbounds double, ptr %630, i64 1
  %632 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtpmqrt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %41, ptr noundef %595, ptr noundef %596, ptr noundef @c__0, ptr noundef %597, ptr noundef %603, ptr noundef %604, ptr noundef %615, ptr noundef %616, ptr noundef %621, ptr noundef %622, ptr noundef %628, ptr noundef %629, ptr noundef %631, ptr noundef %632)
  %633 = load i32, ptr %51, align 4, !tbaa !9
  %634 = add nsw i32 %633, 1
  store i32 %634, ptr %51, align 4, !tbaa !9
  br label %635

635:                                              ; preds = %589
  %636 = load i32, ptr %39, align 4, !tbaa !9
  %637 = load i32, ptr %44, align 4, !tbaa !9
  %638 = add nsw i32 %637, %636
  store i32 %638, ptr %44, align 4, !tbaa !9
  br label %573, !llvm.loop !15

639:                                              ; preds = %586
  %640 = load i32, ptr %46, align 4, !tbaa !9
  %641 = load ptr, ptr %19, align 8, !tbaa !5
  %642 = load i32, ptr %641, align 4, !tbaa !9
  %643 = icmp sle i32 %640, %642
  br i1 %643, label %644, label %683

644:                                              ; preds = %639
  %645 = load ptr, ptr %20, align 8, !tbaa !5
  %646 = load ptr, ptr %21, align 8, !tbaa !5
  %647 = load ptr, ptr %23, align 8, !tbaa !5
  %648 = load ptr, ptr %24, align 8, !tbaa !5
  %649 = load i32, ptr %46, align 4, !tbaa !9
  %650 = load i32, ptr %33, align 4, !tbaa !9
  %651 = add nsw i32 %649, %650
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %648, i64 %652
  %654 = load ptr, ptr %25, align 8, !tbaa !5
  %655 = load ptr, ptr %26, align 8, !tbaa !5
  %656 = load i32, ptr %51, align 4, !tbaa !9
  %657 = load ptr, ptr %21, align 8, !tbaa !5
  %658 = load i32, ptr %657, align 4, !tbaa !9
  %659 = mul nsw i32 %656, %658
  %660 = add nsw i32 %659, 1
  %661 = load i32, ptr %37, align 4, !tbaa !9
  %662 = mul nsw i32 %660, %661
  %663 = add nsw i32 %662, 1
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds double, ptr %655, i64 %664
  %666 = load ptr, ptr %27, align 8, !tbaa !5
  %667 = load ptr, ptr %28, align 8, !tbaa !5
  %668 = load i32, ptr %35, align 4, !tbaa !9
  %669 = add nsw i32 %668, 1
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds double, ptr %667, i64 %670
  %672 = load ptr, ptr %29, align 8, !tbaa !5
  %673 = load ptr, ptr %28, align 8, !tbaa !5
  %674 = load i32, ptr %46, align 4, !tbaa !9
  %675 = load i32, ptr %35, align 4, !tbaa !9
  %676 = add nsw i32 %674, %675
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %673, i64 %677
  %679 = load ptr, ptr %29, align 8, !tbaa !5
  %680 = load ptr, ptr %30, align 8, !tbaa !5
  %681 = getelementptr inbounds double, ptr %680, i64 1
  %682 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtpmqrt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %47, ptr noundef %645, ptr noundef %646, ptr noundef @c__0, ptr noundef %647, ptr noundef %653, ptr noundef %654, ptr noundef %665, ptr noundef %666, ptr noundef %671, ptr noundef %672, ptr noundef %678, ptr noundef %679, ptr noundef %681, ptr noundef %682)
  br label %683

683:                                              ; preds = %644, %639
  br label %1050

684:                                              ; preds = %514, %511
  %685 = load i32, ptr %45, align 4, !tbaa !9
  %686 = icmp ne i32 %685, 0
  br i1 %686, label %687, label %873

687:                                              ; preds = %684
  %688 = load i32, ptr %43, align 4, !tbaa !9
  %689 = icmp ne i32 %688, 0
  br i1 %689, label %690, label %873

690:                                              ; preds = %687
  %691 = load ptr, ptr %20, align 8, !tbaa !5
  %692 = load i32, ptr %691, align 4, !tbaa !9
  %693 = load ptr, ptr %21, align 8, !tbaa !5
  %694 = load i32, ptr %693, align 4, !tbaa !9
  %695 = sub nsw i32 %692, %694
  %696 = load ptr, ptr %22, align 8, !tbaa !5
  %697 = load i32, ptr %696, align 4, !tbaa !9
  %698 = load ptr, ptr %21, align 8, !tbaa !5
  %699 = load i32, ptr %698, align 4, !tbaa !9
  %700 = sub nsw i32 %697, %699
  %701 = srem i32 %695, %700
  store i32 %701, ptr %47, align 4, !tbaa !9
  %702 = load ptr, ptr %20, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  %704 = load ptr, ptr %21, align 8, !tbaa !5
  %705 = load i32, ptr %704, align 4, !tbaa !9
  %706 = sub nsw i32 %703, %705
  %707 = load ptr, ptr %22, align 8, !tbaa !5
  %708 = load i32, ptr %707, align 4, !tbaa !9
  %709 = load ptr, ptr %21, align 8, !tbaa !5
  %710 = load i32, ptr %709, align 4, !tbaa !9
  %711 = sub nsw i32 %708, %710
  %712 = sdiv i32 %706, %711
  store i32 %712, ptr %51, align 4, !tbaa !9
  %713 = load i32, ptr %47, align 4, !tbaa !9
  %714 = icmp sgt i32 %713, 0
  br i1 %714, label %715, label %760

715:                                              ; preds = %690
  %716 = load ptr, ptr %20, align 8, !tbaa !5
  %717 = load i32, ptr %716, align 4, !tbaa !9
  %718 = load i32, ptr %47, align 4, !tbaa !9
  %719 = sub nsw i32 %717, %718
  %720 = add nsw i32 %719, 1
  store i32 %720, ptr %46, align 4, !tbaa !9
  %721 = load ptr, ptr %19, align 8, !tbaa !5
  %722 = load ptr, ptr %21, align 8, !tbaa !5
  %723 = load ptr, ptr %23, align 8, !tbaa !5
  %724 = load ptr, ptr %24, align 8, !tbaa !5
  %725 = load i32, ptr %46, align 4, !tbaa !9
  %726 = load i32, ptr %33, align 4, !tbaa !9
  %727 = add nsw i32 %725, %726
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds double, ptr %724, i64 %728
  %730 = load ptr, ptr %25, align 8, !tbaa !5
  %731 = load ptr, ptr %26, align 8, !tbaa !5
  %732 = load i32, ptr %51, align 4, !tbaa !9
  %733 = load ptr, ptr %21, align 8, !tbaa !5
  %734 = load i32, ptr %733, align 4, !tbaa !9
  %735 = mul nsw i32 %732, %734
  %736 = add nsw i32 %735, 1
  %737 = load i32, ptr %37, align 4, !tbaa !9
  %738 = mul nsw i32 %736, %737
  %739 = add nsw i32 %738, 1
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds double, ptr %731, i64 %740
  %742 = load ptr, ptr %27, align 8, !tbaa !5
  %743 = load ptr, ptr %28, align 8, !tbaa !5
  %744 = load i32, ptr %35, align 4, !tbaa !9
  %745 = add nsw i32 %744, 1
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds double, ptr %743, i64 %746
  %748 = load ptr, ptr %29, align 8, !tbaa !5
  %749 = load ptr, ptr %28, align 8, !tbaa !5
  %750 = load i32, ptr %46, align 4, !tbaa !9
  %751 = load i32, ptr %35, align 4, !tbaa !9
  %752 = mul nsw i32 %750, %751
  %753 = add nsw i32 %752, 1
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds double, ptr %749, i64 %754
  %756 = load ptr, ptr %29, align 8, !tbaa !5
  %757 = load ptr, ptr %30, align 8, !tbaa !5
  %758 = getelementptr inbounds double, ptr %757, i64 1
  %759 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtpmqrt_(ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef %721, ptr noundef %47, ptr noundef %722, ptr noundef @c__0, ptr noundef %723, ptr noundef %729, ptr noundef %730, ptr noundef %741, ptr noundef %742, ptr noundef %747, ptr noundef %748, ptr noundef %755, ptr noundef %756, ptr noundef %758, ptr noundef %759)
  br label %764

760:                                              ; preds = %690
  %761 = load ptr, ptr %20, align 8, !tbaa !5
  %762 = load i32, ptr %761, align 4, !tbaa !9
  %763 = add nsw i32 %762, 1
  store i32 %763, ptr %46, align 4, !tbaa !9
  br label %764

764:                                              ; preds = %760, %715
  %765 = load ptr, ptr %22, align 8, !tbaa !5
  %766 = load i32, ptr %765, align 4, !tbaa !9
  %767 = add nsw i32 %766, 1
  store i32 %767, ptr %39, align 4, !tbaa !9
  %768 = load ptr, ptr %22, align 8, !tbaa !5
  %769 = load i32, ptr %768, align 4, !tbaa !9
  %770 = load ptr, ptr %21, align 8, !tbaa !5
  %771 = load i32, ptr %770, align 4, !tbaa !9
  %772 = sub nsw i32 %769, %771
  %773 = sub nsw i32 0, %772
  store i32 %773, ptr %40, align 4, !tbaa !9
  %774 = load i32, ptr %46, align 4, !tbaa !9
  %775 = load ptr, ptr %22, align 8, !tbaa !5
  %776 = load i32, ptr %775, align 4, !tbaa !9
  %777 = load ptr, ptr %21, align 8, !tbaa !5
  %778 = load i32, ptr %777, align 4, !tbaa !9
  %779 = sub nsw i32 %776, %778
  %780 = sub nsw i32 %774, %779
  store i32 %780, ptr %44, align 4, !tbaa !9
  br label %781

781:                                              ; preds = %844, %764
  %782 = load i32, ptr %40, align 4, !tbaa !9
  %783 = icmp slt i32 %782, 0
  br i1 %783, label %784, label %789

784:                                              ; preds = %781
  %785 = load i32, ptr %44, align 4, !tbaa !9
  %786 = load i32, ptr %39, align 4, !tbaa !9
  %787 = icmp sge i32 %785, %786
  %788 = zext i1 %787 to i32
  br label %794

789:                                              ; preds = %781
  %790 = load i32, ptr %44, align 4, !tbaa !9
  %791 = load i32, ptr %39, align 4, !tbaa !9
  %792 = icmp sle i32 %790, %791
  %793 = zext i1 %792 to i32
  br label %794

794:                                              ; preds = %789, %784
  %795 = phi i32 [ %788, %784 ], [ %793, %789 ]
  %796 = icmp ne i32 %795, 0
  br i1 %796, label %797, label %848

797:                                              ; preds = %794
  %798 = load i32, ptr %51, align 4, !tbaa !9
  %799 = add nsw i32 %798, -1
  store i32 %799, ptr %51, align 4, !tbaa !9
  %800 = load ptr, ptr %22, align 8, !tbaa !5
  %801 = load i32, ptr %800, align 4, !tbaa !9
  %802 = load ptr, ptr %21, align 8, !tbaa !5
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = sub nsw i32 %801, %803
  store i32 %804, ptr %41, align 4, !tbaa !9
  %805 = load ptr, ptr %19, align 8, !tbaa !5
  %806 = load ptr, ptr %21, align 8, !tbaa !5
  %807 = load ptr, ptr %23, align 8, !tbaa !5
  %808 = load ptr, ptr %24, align 8, !tbaa !5
  %809 = load i32, ptr %44, align 4, !tbaa !9
  %810 = load i32, ptr %33, align 4, !tbaa !9
  %811 = add nsw i32 %809, %810
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds double, ptr %808, i64 %812
  %814 = load ptr, ptr %25, align 8, !tbaa !5
  %815 = load ptr, ptr %26, align 8, !tbaa !5
  %816 = load i32, ptr %51, align 4, !tbaa !9
  %817 = load ptr, ptr %21, align 8, !tbaa !5
  %818 = load i32, ptr %817, align 4, !tbaa !9
  %819 = mul nsw i32 %816, %818
  %820 = add nsw i32 %819, 1
  %821 = load i32, ptr %37, align 4, !tbaa !9
  %822 = mul nsw i32 %820, %821
  %823 = add nsw i32 %822, 1
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds double, ptr %815, i64 %824
  %826 = load ptr, ptr %27, align 8, !tbaa !5
  %827 = load ptr, ptr %28, align 8, !tbaa !5
  %828 = load i32, ptr %35, align 4, !tbaa !9
  %829 = add nsw i32 %828, 1
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds double, ptr %827, i64 %830
  %832 = load ptr, ptr %29, align 8, !tbaa !5
  %833 = load ptr, ptr %28, align 8, !tbaa !5
  %834 = load i32, ptr %44, align 4, !tbaa !9
  %835 = load i32, ptr %35, align 4, !tbaa !9
  %836 = mul nsw i32 %834, %835
  %837 = add nsw i32 %836, 1
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds double, ptr %833, i64 %838
  %840 = load ptr, ptr %29, align 8, !tbaa !5
  %841 = load ptr, ptr %30, align 8, !tbaa !5
  %842 = getelementptr inbounds double, ptr %841, i64 1
  %843 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtpmqrt_(ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef %805, ptr noundef %41, ptr noundef %806, ptr noundef @c__0, ptr noundef %807, ptr noundef %813, ptr noundef %814, ptr noundef %825, ptr noundef %826, ptr noundef %831, ptr noundef %832, ptr noundef %839, ptr noundef %840, ptr noundef %842, ptr noundef %843)
  br label %844

844:                                              ; preds = %797
  %845 = load i32, ptr %40, align 4, !tbaa !9
  %846 = load i32, ptr %44, align 4, !tbaa !9
  %847 = add nsw i32 %846, %845
  store i32 %847, ptr %44, align 4, !tbaa !9
  br label %781, !llvm.loop !16

848:                                              ; preds = %794
  %849 = load ptr, ptr %19, align 8, !tbaa !5
  %850 = load ptr, ptr %22, align 8, !tbaa !5
  %851 = load ptr, ptr %21, align 8, !tbaa !5
  %852 = load ptr, ptr %23, align 8, !tbaa !5
  %853 = load ptr, ptr %24, align 8, !tbaa !5
  %854 = load i32, ptr %33, align 4, !tbaa !9
  %855 = add nsw i32 %854, 1
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds double, ptr %853, i64 %856
  %858 = load ptr, ptr %25, align 8, !tbaa !5
  %859 = load ptr, ptr %26, align 8, !tbaa !5
  %860 = load i32, ptr %38, align 4, !tbaa !9
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %859, i64 %861
  %863 = load ptr, ptr %27, align 8, !tbaa !5
  %864 = load ptr, ptr %28, align 8, !tbaa !5
  %865 = load i32, ptr %35, align 4, !tbaa !9
  %866 = add nsw i32 %865, 1
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds double, ptr %864, i64 %867
  %869 = load ptr, ptr %29, align 8, !tbaa !5
  %870 = load ptr, ptr %30, align 8, !tbaa !5
  %871 = getelementptr inbounds double, ptr %870, i64 1
  %872 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dgemqrt_(ptr noundef @.str.3, ptr noundef @.str.1, ptr noundef %849, ptr noundef %850, ptr noundef %851, ptr noundef %852, ptr noundef %857, ptr noundef %858, ptr noundef %862, ptr noundef %863, ptr noundef %868, ptr noundef %869, ptr noundef %871, ptr noundef %872)
  br label %1049

873:                                              ; preds = %687, %684
  %874 = load i32, ptr %45, align 4, !tbaa !9
  %875 = icmp ne i32 %874, 0
  br i1 %875, label %876, label %1048

876:                                              ; preds = %873
  %877 = load i32, ptr %49, align 4, !tbaa !9
  %878 = icmp ne i32 %877, 0
  br i1 %878, label %879, label %1048

879:                                              ; preds = %876
  %880 = load ptr, ptr %20, align 8, !tbaa !5
  %881 = load i32, ptr %880, align 4, !tbaa !9
  %882 = load ptr, ptr %21, align 8, !tbaa !5
  %883 = load i32, ptr %882, align 4, !tbaa !9
  %884 = sub nsw i32 %881, %883
  %885 = load ptr, ptr %22, align 8, !tbaa !5
  %886 = load i32, ptr %885, align 4, !tbaa !9
  %887 = load ptr, ptr %21, align 8, !tbaa !5
  %888 = load i32, ptr %887, align 4, !tbaa !9
  %889 = sub nsw i32 %886, %888
  %890 = srem i32 %884, %889
  store i32 %890, ptr %47, align 4, !tbaa !9
  %891 = load ptr, ptr %20, align 8, !tbaa !5
  %892 = load i32, ptr %891, align 4, !tbaa !9
  %893 = load i32, ptr %47, align 4, !tbaa !9
  %894 = sub nsw i32 %892, %893
  %895 = add nsw i32 %894, 1
  store i32 %895, ptr %46, align 4, !tbaa !9
  store i32 1, ptr %51, align 4, !tbaa !9
  %896 = load ptr, ptr %19, align 8, !tbaa !5
  %897 = load ptr, ptr %22, align 8, !tbaa !5
  %898 = load ptr, ptr %21, align 8, !tbaa !5
  %899 = load ptr, ptr %23, align 8, !tbaa !5
  %900 = load ptr, ptr %24, align 8, !tbaa !5
  %901 = load i32, ptr %33, align 4, !tbaa !9
  %902 = add nsw i32 %901, 1
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds double, ptr %900, i64 %903
  %905 = load ptr, ptr %25, align 8, !tbaa !5
  %906 = load ptr, ptr %26, align 8, !tbaa !5
  %907 = load i32, ptr %38, align 4, !tbaa !9
  %908 = sext i32 %907 to i64
  %909 = getelementptr inbounds double, ptr %906, i64 %908
  %910 = load ptr, ptr %27, align 8, !tbaa !5
  %911 = load ptr, ptr %28, align 8, !tbaa !5
  %912 = load i32, ptr %35, align 4, !tbaa !9
  %913 = add nsw i32 %912, 1
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %911, i64 %914
  %916 = load ptr, ptr %29, align 8, !tbaa !5
  %917 = load ptr, ptr %30, align 8, !tbaa !5
  %918 = getelementptr inbounds double, ptr %917, i64 1
  %919 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dgemqrt_(ptr noundef @.str.3, ptr noundef @.str, ptr noundef %896, ptr noundef %897, ptr noundef %898, ptr noundef %899, ptr noundef %904, ptr noundef %905, ptr noundef %909, ptr noundef %910, ptr noundef %915, ptr noundef %916, ptr noundef %918, ptr noundef %919)
  %920 = load i32, ptr %46, align 4, !tbaa !9
  %921 = load ptr, ptr %22, align 8, !tbaa !5
  %922 = load i32, ptr %921, align 4, !tbaa !9
  %923 = sub nsw i32 %920, %922
  %924 = load ptr, ptr %21, align 8, !tbaa !5
  %925 = load i32, ptr %924, align 4, !tbaa !9
  %926 = add nsw i32 %923, %925
  store i32 %926, ptr %40, align 4, !tbaa !9
  %927 = load ptr, ptr %22, align 8, !tbaa !5
  %928 = load i32, ptr %927, align 4, !tbaa !9
  %929 = load ptr, ptr %21, align 8, !tbaa !5
  %930 = load i32, ptr %929, align 4, !tbaa !9
  %931 = sub nsw i32 %928, %930
  store i32 %931, ptr %39, align 4, !tbaa !9
  %932 = load ptr, ptr %22, align 8, !tbaa !5
  %933 = load i32, ptr %932, align 4, !tbaa !9
  %934 = add nsw i32 %933, 1
  store i32 %934, ptr %44, align 4, !tbaa !9
  br label %935

935:                                              ; preds = %998, %879
  %936 = load i32, ptr %39, align 4, !tbaa !9
  %937 = icmp slt i32 %936, 0
  br i1 %937, label %938, label %943

938:                                              ; preds = %935
  %939 = load i32, ptr %44, align 4, !tbaa !9
  %940 = load i32, ptr %40, align 4, !tbaa !9
  %941 = icmp sge i32 %939, %940
  %942 = zext i1 %941 to i32
  br label %948

943:                                              ; preds = %935
  %944 = load i32, ptr %44, align 4, !tbaa !9
  %945 = load i32, ptr %40, align 4, !tbaa !9
  %946 = icmp sle i32 %944, %945
  %947 = zext i1 %946 to i32
  br label %948

948:                                              ; preds = %943, %938
  %949 = phi i32 [ %942, %938 ], [ %947, %943 ]
  %950 = icmp ne i32 %949, 0
  br i1 %950, label %951, label %1002

951:                                              ; preds = %948
  %952 = load ptr, ptr %22, align 8, !tbaa !5
  %953 = load i32, ptr %952, align 4, !tbaa !9
  %954 = load ptr, ptr %21, align 8, !tbaa !5
  %955 = load i32, ptr %954, align 4, !tbaa !9
  %956 = sub nsw i32 %953, %955
  store i32 %956, ptr %41, align 4, !tbaa !9
  %957 = load ptr, ptr %19, align 8, !tbaa !5
  %958 = load ptr, ptr %21, align 8, !tbaa !5
  %959 = load ptr, ptr %23, align 8, !tbaa !5
  %960 = load ptr, ptr %24, align 8, !tbaa !5
  %961 = load i32, ptr %44, align 4, !tbaa !9
  %962 = load i32, ptr %33, align 4, !tbaa !9
  %963 = add nsw i32 %961, %962
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds double, ptr %960, i64 %964
  %966 = load ptr, ptr %25, align 8, !tbaa !5
  %967 = load ptr, ptr %26, align 8, !tbaa !5
  %968 = load i32, ptr %51, align 4, !tbaa !9
  %969 = load ptr, ptr %21, align 8, !tbaa !5
  %970 = load i32, ptr %969, align 4, !tbaa !9
  %971 = mul nsw i32 %968, %970
  %972 = add nsw i32 %971, 1
  %973 = load i32, ptr %37, align 4, !tbaa !9
  %974 = mul nsw i32 %972, %973
  %975 = add nsw i32 %974, 1
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds double, ptr %967, i64 %976
  %978 = load ptr, ptr %27, align 8, !tbaa !5
  %979 = load ptr, ptr %28, align 8, !tbaa !5
  %980 = load i32, ptr %35, align 4, !tbaa !9
  %981 = add nsw i32 %980, 1
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds double, ptr %979, i64 %982
  %984 = load ptr, ptr %29, align 8, !tbaa !5
  %985 = load ptr, ptr %28, align 8, !tbaa !5
  %986 = load i32, ptr %44, align 4, !tbaa !9
  %987 = load i32, ptr %35, align 4, !tbaa !9
  %988 = mul nsw i32 %986, %987
  %989 = add nsw i32 %988, 1
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds double, ptr %985, i64 %990
  %992 = load ptr, ptr %29, align 8, !tbaa !5
  %993 = load ptr, ptr %30, align 8, !tbaa !5
  %994 = getelementptr inbounds double, ptr %993, i64 1
  %995 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtpmqrt_(ptr noundef @.str.3, ptr noundef @.str, ptr noundef %957, ptr noundef %41, ptr noundef %958, ptr noundef @c__0, ptr noundef %959, ptr noundef %965, ptr noundef %966, ptr noundef %977, ptr noundef %978, ptr noundef %983, ptr noundef %984, ptr noundef %991, ptr noundef %992, ptr noundef %994, ptr noundef %995)
  %996 = load i32, ptr %51, align 4, !tbaa !9
  %997 = add nsw i32 %996, 1
  store i32 %997, ptr %51, align 4, !tbaa !9
  br label %998

998:                                              ; preds = %951
  %999 = load i32, ptr %39, align 4, !tbaa !9
  %1000 = load i32, ptr %44, align 4, !tbaa !9
  %1001 = add nsw i32 %1000, %999
  store i32 %1001, ptr %44, align 4, !tbaa !9
  br label %935, !llvm.loop !17

1002:                                             ; preds = %948
  %1003 = load i32, ptr %46, align 4, !tbaa !9
  %1004 = load ptr, ptr %20, align 8, !tbaa !5
  %1005 = load i32, ptr %1004, align 4, !tbaa !9
  %1006 = icmp sle i32 %1003, %1005
  br i1 %1006, label %1007, label %1047

1007:                                             ; preds = %1002
  %1008 = load ptr, ptr %19, align 8, !tbaa !5
  %1009 = load ptr, ptr %21, align 8, !tbaa !5
  %1010 = load ptr, ptr %23, align 8, !tbaa !5
  %1011 = load ptr, ptr %24, align 8, !tbaa !5
  %1012 = load i32, ptr %46, align 4, !tbaa !9
  %1013 = load i32, ptr %33, align 4, !tbaa !9
  %1014 = add nsw i32 %1012, %1013
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds double, ptr %1011, i64 %1015
  %1017 = load ptr, ptr %25, align 8, !tbaa !5
  %1018 = load ptr, ptr %26, align 8, !tbaa !5
  %1019 = load i32, ptr %51, align 4, !tbaa !9
  %1020 = load ptr, ptr %21, align 8, !tbaa !5
  %1021 = load i32, ptr %1020, align 4, !tbaa !9
  %1022 = mul nsw i32 %1019, %1021
  %1023 = add nsw i32 %1022, 1
  %1024 = load i32, ptr %37, align 4, !tbaa !9
  %1025 = mul nsw i32 %1023, %1024
  %1026 = add nsw i32 %1025, 1
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds double, ptr %1018, i64 %1027
  %1029 = load ptr, ptr %27, align 8, !tbaa !5
  %1030 = load ptr, ptr %28, align 8, !tbaa !5
  %1031 = load i32, ptr %35, align 4, !tbaa !9
  %1032 = add nsw i32 %1031, 1
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds double, ptr %1030, i64 %1033
  %1035 = load ptr, ptr %29, align 8, !tbaa !5
  %1036 = load ptr, ptr %28, align 8, !tbaa !5
  %1037 = load i32, ptr %46, align 4, !tbaa !9
  %1038 = load i32, ptr %35, align 4, !tbaa !9
  %1039 = mul nsw i32 %1037, %1038
  %1040 = add nsw i32 %1039, 1
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds double, ptr %1036, i64 %1041
  %1043 = load ptr, ptr %29, align 8, !tbaa !5
  %1044 = load ptr, ptr %30, align 8, !tbaa !5
  %1045 = getelementptr inbounds double, ptr %1044, i64 1
  %1046 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtpmqrt_(ptr noundef @.str.3, ptr noundef @.str, ptr noundef %1008, ptr noundef %47, ptr noundef %1009, ptr noundef @c__0, ptr noundef %1010, ptr noundef %1016, ptr noundef %1017, ptr noundef %1028, ptr noundef %1029, ptr noundef %1034, ptr noundef %1035, ptr noundef %1042, ptr noundef %1043, ptr noundef %1045, ptr noundef %1046)
  br label %1047

1047:                                             ; preds = %1007, %1002
  br label %1048

1048:                                             ; preds = %1047, %876, %873
  br label %1049

1049:                                             ; preds = %1048, %848
  br label %1050

1050:                                             ; preds = %1049, %683
  br label %1051

1051:                                             ; preds = %1050, %486
  %1052 = load i32, ptr %48, align 4, !tbaa !9
  %1053 = sitofp i32 %1052 to double
  %1054 = load ptr, ptr %30, align 8, !tbaa !5
  %1055 = getelementptr inbounds double, ptr %1054, i64 1
  store double %1053, ptr %1055, align 8, !tbaa !11
  store i32 1, ptr %52, align 4
  br label %1056

1056:                                             ; preds = %1051, %299, %264, %236, %228
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  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
  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 @lsame_(ptr noundef, ptr noundef) #2

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

declare void @dgemqrt_(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

declare void @dtpmqrt_(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, 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"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [9 x i8], align 1
@c__0 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dlamtsqr_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr nocapture noundef readonly %14, ptr noundef %15) local_unnamed_addr #0 {
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #4
  %20 = load i32, ptr %8, align 4, !tbaa !5
  %narrow = xor i32 %20, -1
  %21 = sext i32 %narrow to i64
  %22 = getelementptr inbounds double, ptr %7, i64 %21
  %23 = load i32, ptr %10, align 4, !tbaa !5
  %narrow466 = xor i32 %23, -1
  %24 = sext i32 %narrow466 to i64
  %25 = getelementptr inbounds double, ptr %9, i64 %24
  %26 = load i32, ptr %12, align 4, !tbaa !5
  %narrow467 = xor i32 %26, -1
  %27 = sext i32 %narrow467 to i64
  %28 = getelementptr inbounds double, ptr %11, i64 %27
  %29 = load i32, ptr %14, align 4, !tbaa !5
  %30 = icmp slt i32 %29, 0
  %31 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %32 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #4
  %33 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #4
  %34 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #4
  %35 = icmp ne i32 %33, 0
  %36 = load i32, ptr %6, align 4, !tbaa !5
  br i1 %35, label %.thread, label %39

.thread:                                          ; preds = %16
  %37 = load i32, ptr %3, align 4, !tbaa !5
  store i32 0, ptr %15, align 4, !tbaa !5
  %38 = icmp ne i32 %34, 0
  br label %41

39:                                               ; preds = %16
  %40 = load i32, ptr %5, align 4, !tbaa !5
  store i32 0, ptr %15, align 4, !tbaa !5
  %.not = icmp eq i32 %34, 0
  br i1 %.not, label %.thread476, label %41

41:                                               ; preds = %.thread, %39
  %42 = phi i1 [ %38, %.thread ], [ true, %39 ]
  %.pn = phi i32 [ %37, %.thread ], [ %40, %39 ]
  %.0431474 = mul nsw i32 %36, %.pn
  %43 = icmp ne i32 %32, 0
  %44 = icmp ne i32 %31, 0
  %or.cond3 = select i1 %43, i1 true, i1 %44
  br i1 %or.cond3, label %45, label %.thread476

45:                                               ; preds = %41
  %46 = load i32, ptr %2, align 4, !tbaa !5
  %47 = icmp slt i32 %46, 0
  br i1 %47, label %.thread476, label %48

48:                                               ; preds = %45
  %49 = load i32, ptr %3, align 4, !tbaa !5
  %50 = icmp slt i32 %49, 0
  br i1 %50, label %.thread476, label %51

51:                                               ; preds = %48
  %52 = load i32, ptr %4, align 4, !tbaa !5
  %53 = icmp slt i32 %52, 0
  br i1 %53, label %.thread476, label %54

54:                                               ; preds = %51
  %55 = load i32, ptr %8, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %52, i32 1)
  %56 = icmp slt i32 %55, %spec.select
  br i1 %56, label %.thread476, label %57

57:                                               ; preds = %54
  %58 = load i32, ptr %10, align 4, !tbaa !5
  %59 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select468 = tail call i32 @llvm.smax.i32(i32 %59, i32 1)
  %60 = icmp slt i32 %58, %spec.select468
  br i1 %60, label %.thread476, label %61

61:                                               ; preds = %57
  %62 = load i32, ptr %12, align 4, !tbaa !5
  %spec.select469 = tail call i32 @llvm.umax.i32(i32 %46, i32 1)
  %63 = icmp slt i32 %62, %spec.select469
  br i1 %63, label %.thread476, label %64

64:                                               ; preds = %61
  %65 = load i32, ptr %14, align 4, !tbaa !5
  %66 = tail call i32 @llvm.smax.i32(i32 %.0431474, i32 1)
  %67 = icmp sge i32 %65, %66
  %or.cond5 = select i1 %67, i1 true, i1 %30
  br i1 %or.cond5, label %69, label %.thread476

.thread476:                                       ; preds = %64, %61, %57, %54, %51, %48, %45, %41, %39
  %.sink = phi i32 [ -1, %39 ], [ -2, %41 ], [ -3, %45 ], [ -4, %48 ], [ -5, %51 ], [ -9, %54 ], [ -11, %57 ], [ -13, %61 ], [ -15, %64 ]
  %.ph482.neg = phi i32 [ 1, %39 ], [ 2, %41 ], [ 3, %45 ], [ 4, %48 ], [ 5, %51 ], [ 9, %54 ], [ 11, %57 ], [ 13, %61 ], [ 15, %64 ]
  store i32 %.sink, ptr %15, align 4, !tbaa !5
  store i32 %.ph482.neg, ptr %17, align 4, !tbaa !5
  %68 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %17, i32 noundef 8) #4
  br label %268

69:                                               ; preds = %64
  %70 = sitofp i32 %.0431474 to double
  store double %70, ptr %13, align 8, !tbaa !9
  br i1 %30, label %268, label %71

71:                                               ; preds = %69
  %72 = tail call i32 @llvm.umin.i32(i32 %46, i32 %49)
  %73 = tail call i32 @llvm.umin.i32(i32 %72, i32 %52)
  %74 = icmp eq i32 %73, 0
  br i1 %74, label %268, label %75

75:                                               ; preds = %71
  %76 = tail call i32 @llvm.umax.i32(i32 %46, i32 %49)
  %77 = load i32, ptr %5, align 4, !tbaa !5
  %.not458 = icmp sgt i32 %77, %52
  %.not460 = icmp sgt i32 %76, %77
  %or.cond = and i1 %.not458, %.not460
  br i1 %or.cond, label %79, label %78

78:                                               ; preds = %75
  tail call void @dgemqrt_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  br label %268

79:                                               ; preds = %75
  %or.cond7 = select i1 %35, i1 %44, i1 false
  br i1 %or.cond7, label %80, label %125

80:                                               ; preds = %79
  %81 = sub nsw i32 %46, %52
  %82 = sub nsw i32 %77, %52
  %83 = srem i32 %81, %82
  store i32 %83, ptr %19, align 4, !tbaa !5
  %84 = sdiv i32 %81, %82
  %85 = icmp sgt i32 %83, 0
  br i1 %85, label %86, label %101

86:                                               ; preds = %80
  %87 = sub nsw i32 %46, %83
  %88 = add nsw i32 %87, 1
  %89 = add nsw i32 %88, %20
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds double, ptr %22, i64 %90
  %92 = mul nsw i32 %84, %52
  %93 = add nsw i32 %92, 1
  %94 = mul nsw i32 %93, %23
  %95 = sext i32 %94 to i64
  %96 = getelementptr double, ptr %25, i64 %95
  %97 = getelementptr i8, ptr %96, i64 8
  %98 = add nsw i32 %88, %26
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds double, ptr %28, i64 %99
  call void @dtpmqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull %19, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %91, ptr noundef nonnull %8, ptr noundef %97, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %100, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %.pre521 = load i32, ptr %5, align 4, !tbaa !5
  %.pre522 = load i32, ptr %4, align 4, !tbaa !5
  %.pre523 = sub nsw i32 %.pre521, %.pre522
  br label %103

101:                                              ; preds = %80
  %102 = add nuw nsw i32 %46, 1
  br label %103

103:                                              ; preds = %101, %86
  %.pre-phi = phi i32 [ %82, %101 ], [ %.pre523, %86 ]
  %104 = phi i32 [ %77, %101 ], [ %.pre521, %86 ]
  %.0432 = phi i32 [ %102, %101 ], [ %88, %86 ]
  %105 = add nsw i32 %104, 1
  %106 = icmp sgt i32 %.pre-phi, 0
  %invariant.gep510 = getelementptr i8, ptr %25, i64 8
  %.0434512 = sub i32 %.0432, %.pre-phi
  %107 = icmp sgt i32 %.0434512, %104
  %108 = icmp sle i32 %.0434512, %105
  %.in465513 = select i1 %106, i1 %107, i1 %108
  br i1 %.in465513, label %.lr.ph517, label %._crit_edge518

.lr.ph517:                                        ; preds = %103, %.lr.ph517
  %.0434515 = phi i32 [ %.0434, %.lr.ph517 ], [ %.0434512, %103 ]
  %.0514 = phi i32 [ %109, %.lr.ph517 ], [ %84, %103 ]
  %109 = add nsw i32 %.0514, -1
  %110 = load i32, ptr %5, align 4, !tbaa !5
  %111 = load i32, ptr %4, align 4, !tbaa !5
  %112 = sub nsw i32 %110, %111
  store i32 %112, ptr %18, align 4, !tbaa !5
  %113 = add nsw i32 %.0434515, %20
  %114 = sext i32 %113 to i64
  %115 = getelementptr inbounds double, ptr %22, i64 %114
  %116 = mul nsw i32 %111, %109
  %117 = add nsw i32 %116, 1
  %118 = mul nsw i32 %117, %23
  %119 = sext i32 %118 to i64
  %gep511 = getelementptr double, ptr %invariant.gep510, i64 %119
  %120 = add nsw i32 %.0434515, %26
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds double, ptr %28, i64 %121
  call void @dtpmqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %115, ptr noundef nonnull %8, ptr noundef %gep511, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %122, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %.0434 = sub i32 %.0434515, %.pre-phi
  %123 = icmp sgt i32 %.0434, %104
  %124 = icmp sle i32 %.0434, %105
  %.in465 = select i1 %106, i1 %123, i1 %124
  br i1 %.in465, label %.lr.ph517, label %._crit_edge518, !llvm.loop !11

._crit_edge518:                                   ; preds = %.lr.ph517, %103
  call void @dgemqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  br label %267

125:                                              ; preds = %79
  %or.cond9 = and i1 %35, %43
  br i1 %or.cond9, label %126, label %173

126:                                              ; preds = %125
  %127 = sub nsw i32 %46, %52
  %128 = sub nsw i32 %77, %52
  %129 = srem i32 %127, %128
  store i32 %129, ptr %19, align 4, !tbaa !5
  %130 = sub nsw i32 %46, %129
  %131 = add nsw i32 %130, 1
  tail call void @dgemqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %5, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %132 = load i32, ptr %5, align 4, !tbaa !5
  %133 = sub nsw i32 %131, %132
  %134 = load i32, ptr %4, align 4, !tbaa !5
  %135 = add nsw i32 %133, %134
  %136 = sub nsw i32 %132, %134
  %137 = add nsw i32 %132, 1
  %invariant.gep501 = getelementptr i8, ptr %25, i64 8
  %138 = icmp slt i32 %136, 0
  %139 = icmp sge i32 %137, %135
  %140 = icmp slt i32 %132, %135
  %.in463503 = select i1 %138, i1 %139, i1 %140
  br i1 %.in463503, label %.lr.ph507, label %._crit_edge508

.lr.ph507:                                        ; preds = %126, %.lr.ph507
  %.1505 = phi i32 [ %154, %.lr.ph507 ], [ 1, %126 ]
  %.1435504 = phi i32 [ %155, %.lr.ph507 ], [ %137, %126 ]
  %141 = load i32, ptr %5, align 4, !tbaa !5
  %142 = load i32, ptr %4, align 4, !tbaa !5
  %143 = sub nsw i32 %141, %142
  store i32 %143, ptr %18, align 4, !tbaa !5
  %144 = add nsw i32 %.1435504, %20
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds double, ptr %22, i64 %145
  %147 = mul nsw i32 %142, %.1505
  %148 = add nsw i32 %147, 1
  %149 = mul nsw i32 %148, %23
  %150 = sext i32 %149 to i64
  %gep502 = getelementptr double, ptr %invariant.gep501, i64 %150
  %151 = add nsw i32 %.1435504, %26
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds double, ptr %28, i64 %152
  call void @dtpmqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %18, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %146, ptr noundef nonnull %8, ptr noundef %gep502, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %153, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %154 = add nuw nsw i32 %.1505, 1
  %155 = add nsw i32 %136, %.1435504
  %156 = icmp sge i32 %155, %135
  %157 = icmp sle i32 %155, %135
  %.in463 = select i1 %138, i1 %156, i1 %157
  br i1 %.in463, label %.lr.ph507, label %._crit_edge508, !llvm.loop !13

._crit_edge508:                                   ; preds = %.lr.ph507, %126
  %.1.lcssa = phi i32 [ 1, %126 ], [ %154, %.lr.ph507 ]
  %158 = load i32, ptr %2, align 4, !tbaa !5
  %.not464.not = icmp slt i32 %130, %158
  br i1 %.not464.not, label %159, label %267

159:                                              ; preds = %._crit_edge508
  %160 = add nsw i32 %131, %20
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds double, ptr %22, i64 %161
  %163 = load i32, ptr %4, align 4, !tbaa !5
  %164 = mul nsw i32 %163, %.1.lcssa
  %165 = add nsw i32 %164, 1
  %166 = mul nsw i32 %165, %23
  %167 = sext i32 %166 to i64
  %168 = getelementptr double, ptr %25, i64 %167
  %169 = getelementptr i8, ptr %168, i64 8
  %170 = add nsw i32 %131, %26
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds double, ptr %28, i64 %171
  call void @dtpmqrt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %19, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %162, ptr noundef nonnull %8, ptr noundef %169, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %172, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  br label %267

173:                                              ; preds = %125
  %or.cond11 = and i1 %42, %43
  br i1 %or.cond11, label %174, label %219

174:                                              ; preds = %173
  %175 = sub nsw i32 %49, %52
  %176 = sub nsw i32 %77, %52
  %177 = srem i32 %175, %176
  store i32 %177, ptr %19, align 4, !tbaa !5
  %178 = sdiv i32 %175, %176
  %179 = icmp sgt i32 %177, 0
  br i1 %179, label %180, label %196

180:                                              ; preds = %174
  %181 = sub nsw i32 %49, %177
  %182 = add nsw i32 %181, 1
  %183 = add nsw i32 %182, %20
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds double, ptr %22, i64 %184
  %186 = mul nsw i32 %178, %52
  %187 = add nsw i32 %186, 1
  %188 = mul nsw i32 %187, %23
  %189 = sext i32 %188 to i64
  %190 = getelementptr double, ptr %25, i64 %189
  %191 = getelementptr i8, ptr %190, i64 8
  %192 = mul nsw i32 %182, %26
  %193 = sext i32 %192 to i64
  %194 = getelementptr double, ptr %28, i64 %193
  %195 = getelementptr i8, ptr %194, i64 8
  call void @dtpmqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %185, ptr noundef nonnull %8, ptr noundef %191, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %195, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %.pre = load i32, ptr %5, align 4, !tbaa !5
  %.pre520 = load i32, ptr %4, align 4, !tbaa !5
  %.pre524 = sub nsw i32 %.pre, %.pre520
  br label %198

196:                                              ; preds = %174
  %197 = add nuw nsw i32 %49, 1
  br label %198

198:                                              ; preds = %196, %180
  %.pre-phi525 = phi i32 [ %176, %196 ], [ %.pre524, %180 ]
  %199 = phi i32 [ %77, %196 ], [ %.pre, %180 ]
  %.1433 = phi i32 [ %197, %196 ], [ %182, %180 ]
  %200 = add nsw i32 %199, 1
  %201 = icmp sgt i32 %.pre-phi525, 0
  %invariant.gep490 = getelementptr i8, ptr %25, i64 8
  %invariant.gep492 = getelementptr i8, ptr %28, i64 8
  %.2436494 = sub i32 %.1433, %.pre-phi525
  %202 = icmp sgt i32 %.2436494, %199
  %203 = icmp sle i32 %.2436494, %200
  %.in462495 = select i1 %201, i1 %202, i1 %203
  br i1 %.in462495, label %.lr.ph499, label %._crit_edge500

.lr.ph499:                                        ; preds = %198, %.lr.ph499
  %.2436497 = phi i32 [ %.2436, %.lr.ph499 ], [ %.2436494, %198 ]
  %.2496 = phi i32 [ %204, %.lr.ph499 ], [ %178, %198 ]
  %204 = add nsw i32 %.2496, -1
  %205 = load i32, ptr %5, align 4, !tbaa !5
  %206 = load i32, ptr %4, align 4, !tbaa !5
  %207 = sub nsw i32 %205, %206
  store i32 %207, ptr %18, align 4, !tbaa !5
  %208 = add nsw i32 %.2436497, %20
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds double, ptr %22, i64 %209
  %211 = mul nsw i32 %206, %204
  %212 = add nsw i32 %211, 1
  %213 = mul nsw i32 %212, %23
  %214 = sext i32 %213 to i64
  %gep491 = getelementptr double, ptr %invariant.gep490, i64 %214
  %215 = mul nsw i32 %.2436497, %26
  %216 = sext i32 %215 to i64
  %gep493 = getelementptr double, ptr %invariant.gep492, i64 %216
  call void @dtpmqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %18, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %210, ptr noundef nonnull %8, ptr noundef %gep491, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %gep493, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %.2436 = sub i32 %.2436497, %.pre-phi525
  %217 = icmp sgt i32 %.2436, %199
  %218 = icmp sle i32 %.2436, %200
  %.in462 = select i1 %201, i1 %217, i1 %218
  br i1 %.in462, label %.lr.ph499, label %._crit_edge500, !llvm.loop !14

._crit_edge500:                                   ; preds = %.lr.ph499, %198
  call void @dgemqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  br label %267

219:                                              ; preds = %173
  %or.cond13 = select i1 %42, i1 %44, i1 false
  br i1 %or.cond13, label %220, label %267

220:                                              ; preds = %219
  %221 = sub nsw i32 %49, %52
  %222 = sub nsw i32 %77, %52
  %223 = srem i32 %221, %222
  store i32 %223, ptr %19, align 4, !tbaa !5
  %224 = sub nsw i32 %49, %223
  %225 = add nsw i32 %224, 1
  tail call void @dgemqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %226 = load i32, ptr %5, align 4, !tbaa !5
  %227 = sub nsw i32 %225, %226
  %228 = load i32, ptr %4, align 4, !tbaa !5
  %229 = add nsw i32 %227, %228
  %230 = sub nsw i32 %226, %228
  %231 = add nsw i32 %226, 1
  %invariant.gep = getelementptr i8, ptr %25, i64 8
  %invariant.gep485 = getelementptr i8, ptr %28, i64 8
  %232 = icmp slt i32 %230, 0
  %233 = icmp sge i32 %231, %229
  %234 = icmp slt i32 %226, %229
  %.in487 = select i1 %232, i1 %233, i1 %234
  br i1 %.in487, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %220, %.lr.ph
  %.3489 = phi i32 [ %247, %.lr.ph ], [ 1, %220 ]
  %.3437488 = phi i32 [ %248, %.lr.ph ], [ %231, %220 ]
  %235 = load i32, ptr %5, align 4, !tbaa !5
  %236 = load i32, ptr %4, align 4, !tbaa !5
  %237 = sub nsw i32 %235, %236
  store i32 %237, ptr %18, align 4, !tbaa !5
  %238 = add nsw i32 %.3437488, %20
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds double, ptr %22, i64 %239
  %241 = mul nsw i32 %236, %.3489
  %242 = add nsw i32 %241, 1
  %243 = mul nsw i32 %242, %23
  %244 = sext i32 %243 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %244
  %245 = mul nsw i32 %.3437488, %26
  %246 = sext i32 %245 to i64
  %gep486 = getelementptr double, ptr %invariant.gep485, i64 %246
  call void @dtpmqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %18, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %240, ptr noundef nonnull %8, ptr noundef %gep, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %gep486, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  %247 = add nuw nsw i32 %.3489, 1
  %248 = add nsw i32 %230, %.3437488
  %249 = icmp sge i32 %248, %229
  %250 = icmp sle i32 %248, %229
  %.in = select i1 %232, i1 %249, i1 %250
  br i1 %.in, label %.lr.ph, label %._crit_edge, !llvm.loop !15

._crit_edge:                                      ; preds = %.lr.ph, %220
  %.3.lcssa = phi i32 [ 1, %220 ], [ %247, %.lr.ph ]
  %251 = load i32, ptr %3, align 4, !tbaa !5
  %.not461.not = icmp slt i32 %224, %251
  br i1 %.not461.not, label %252, label %267

252:                                              ; preds = %._crit_edge
  %253 = add nsw i32 %225, %20
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds double, ptr %22, i64 %254
  %256 = load i32, ptr %4, align 4, !tbaa !5
  %257 = mul nsw i32 %256, %.3.lcssa
  %258 = add nsw i32 %257, 1
  %259 = mul nsw i32 %258, %23
  %260 = sext i32 %259 to i64
  %261 = getelementptr double, ptr %25, i64 %260
  %262 = getelementptr i8, ptr %261, i64 8
  %263 = mul nsw i32 %225, %26
  %264 = sext i32 %263 to i64
  %265 = getelementptr double, ptr %28, i64 %264
  %266 = getelementptr i8, ptr %265, i64 8
  call void @dtpmqrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %19, ptr noundef nonnull %4, ptr noundef nonnull @c__0, ptr noundef nonnull %6, ptr noundef %255, ptr noundef nonnull %8, ptr noundef %262, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %266, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15) #4
  br label %267

267:                                              ; preds = %159, %._crit_edge508, %219, %252, %._crit_edge, %._crit_edge500, %._crit_edge518
  store double %70, ptr %13, align 8, !tbaa !9
  br label %268

268:                                              ; preds = %71, %69, %267, %78, %.thread476
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #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 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @dgemqrt_(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

declare void @dtpmqrt_(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, 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.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"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}


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