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

; 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 @dlamswlq_(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 %22, 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 %19, align 8, !tbaa !5
  %107 = load i32, ptr %106, align 4, !tbaa !9
  %108 = load ptr, ptr %22, 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 %22, 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 %22, 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 ne i32 %217, 0
  br i1 %218, label %219, label %228

219:                                              ; preds = %215
  %220 = load ptr, ptr %32, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = sub nsw i32 0, %221
  store i32 %222, ptr %39, align 4, !tbaa !9
  %223 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %39, i32 noundef 8)
  %224 = load i32, ptr %48, align 4, !tbaa !9
  %225 = sitofp i32 %224 to double
  %226 = load ptr, ptr %30, align 8, !tbaa !5
  %227 = getelementptr inbounds double, ptr %226, i64 1
  store double %225, ptr %227, align 8, !tbaa !11
  store i32 1, ptr %52, align 4
  br label %1063

228:                                              ; preds = %215
  %229 = load i32, ptr %50, align 4, !tbaa !9
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %231, label %236

231:                                              ; preds = %228
  %232 = load i32, ptr %48, align 4, !tbaa !9
  %233 = sitofp i32 %232 to double
  %234 = load ptr, ptr %30, align 8, !tbaa !5
  %235 = getelementptr inbounds double, ptr %234, i64 1
  store double %233, ptr %235, align 8, !tbaa !11
  store i32 1, ptr %52, align 4
  br label %1063

236:                                              ; preds = %228
  br label %237

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

243:                                              ; preds = %237
  %244 = load ptr, ptr %19, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  br label %249

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

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

255:                                              ; preds = %249
  %256 = load i32, ptr %39, align 4, !tbaa !9
  br label %260

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

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

263:                                              ; preds = %260
  store i32 1, ptr %52, align 4
  br label %1063

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

270:                                              ; preds = %264
  %271 = load ptr, ptr %19, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  br label %276

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

276:                                              ; preds = %273, %270
  %277 = phi i32 [ %272, %270 ], [ %275, %273 ]
  store i32 %277, ptr %39, align 4, !tbaa !9
  %278 = load ptr, ptr %23, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = load ptr, ptr %21, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = icmp sle i32 %279, %281
  br i1 %282, label %298, label %283

283:                                              ; preds = %276
  %284 = load ptr, ptr %23, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = load i32, ptr %39, align 4, !tbaa !9
  %287 = load ptr, ptr %21, align 8, !tbaa !5
  %288 = load i32, ptr %287, align 4, !tbaa !9
  %289 = icmp sge i32 %286, %288
  br i1 %289, label %290, label %292

290:                                              ; preds = %283
  %291 = load i32, ptr %39, align 4, !tbaa !9
  br label %295

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

295:                                              ; preds = %292, %290
  %296 = phi i32 [ %291, %290 ], [ %294, %292 ]
  %297 = icmp sge i32 %285, %296
  br i1 %297, label %298, label %323

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

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

326:                                              ; preds = %323
  %327 = load i32, ptr %43, align 4, !tbaa !9
  %328 = icmp ne i32 %327, 0
  br i1 %328, label %329, label %512

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

354:                                              ; preds = %329
  %355 = load ptr, ptr %19, align 8, !tbaa !5
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = load i32, ptr %47, align 4, !tbaa !9
  %358 = sub nsw i32 %356, %357
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr %46, align 4, !tbaa !9
  %360 = load ptr, ptr %20, align 8, !tbaa !5
  %361 = load ptr, ptr %21, align 8, !tbaa !5
  %362 = load ptr, ptr %22, align 8, !tbaa !5
  %363 = load ptr, ptr %24, align 8, !tbaa !5
  %364 = load i32, ptr %46, align 4, !tbaa !9
  %365 = load i32, ptr %33, align 4, !tbaa !9
  %366 = mul nsw i32 %364, %365
  %367 = add nsw i32 %366, 1
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds double, ptr %363, 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 @dtpmlqt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %47, ptr noundef %360, ptr noundef %361, ptr noundef @c__0, ptr noundef %362, 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 = %329
  %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, %354
  %404 = load ptr, ptr %23, 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 %23, 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 %23, 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 = %483, %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 %487

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 %23, 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 %22, 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 = mul nsw i32 %448, %449
  %451 = add nsw i32 %450, 1
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %447, i64 %452
  %454 = load ptr, ptr %25, align 8, !tbaa !5
  %455 = load ptr, ptr %26, align 8, !tbaa !5
  %456 = load i32, ptr %51, align 4, !tbaa !9
  %457 = load ptr, ptr %21, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = mul nsw i32 %456, %458
  %460 = add nsw i32 %459, 1
  %461 = load i32, ptr %37, align 4, !tbaa !9
  %462 = mul nsw i32 %460, %461
  %463 = add nsw i32 %462, 1
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds double, ptr %455, i64 %464
  %466 = load ptr, ptr %27, align 8, !tbaa !5
  %467 = load ptr, ptr %28, align 8, !tbaa !5
  %468 = load i32, ptr %35, align 4, !tbaa !9
  %469 = add nsw i32 %468, 1
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %467, i64 %470
  %472 = load ptr, ptr %29, align 8, !tbaa !5
  %473 = load ptr, ptr %28, align 8, !tbaa !5
  %474 = load i32, ptr %44, align 4, !tbaa !9
  %475 = load i32, ptr %35, align 4, !tbaa !9
  %476 = add nsw i32 %474, %475
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %473, i64 %477
  %479 = load ptr, ptr %29, align 8, !tbaa !5
  %480 = load ptr, ptr %30, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 1
  %482 = load ptr, ptr %32, align 8, !tbaa !5
  call void @dtpmlqt_(ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %41, ptr noundef %444, ptr noundef %445, ptr noundef @c__0, ptr noundef %446, ptr noundef %453, ptr noundef %454, ptr noundef %465, ptr noundef %466, ptr noundef %471, ptr noundef %472, ptr noundef %478, ptr noundef %479, ptr noundef %481, ptr noundef %482)
  br label %483

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

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

512:                                              ; preds = %326, %323
  %513 = load i32, ptr %42, align 4, !tbaa !9
  %514 = icmp ne i32 %513, 0
  br i1 %514, label %515, label %687

515:                                              ; preds = %512
  %516 = load i32, ptr %49, align 4, !tbaa !9
  %517 = icmp ne i32 %516, 0
  br i1 %517, label %518, label %687

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

574:                                              ; preds = %637, %518
  %575 = load i32, ptr %39, align 4, !tbaa !9
  %576 = icmp slt i32 %575, 0
  br i1 %576, label %577, label %582

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

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

587:                                              ; preds = %582, %577
  %588 = phi i32 [ %581, %577 ], [ %586, %582 ]
  %589 = icmp ne i32 %588, 0
  br i1 %589, label %590, label %641

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

637:                                              ; preds = %590
  %638 = load i32, ptr %39, align 4, !tbaa !9
  %639 = load i32, ptr %44, align 4, !tbaa !9
  %640 = add nsw i32 %639, %638
  store i32 %640, ptr %44, align 4, !tbaa !9
  br label %574, !llvm.loop !15

641:                                              ; preds = %587
  %642 = load i32, ptr %46, align 4, !tbaa !9
  %643 = load ptr, ptr %19, align 8, !tbaa !5
  %644 = load i32, ptr %643, align 4, !tbaa !9
  %645 = icmp sle i32 %642, %644
  br i1 %645, label %646, label %686

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

686:                                              ; preds = %646, %641
  br label %1057

687:                                              ; preds = %515, %512
  %688 = load i32, ptr %45, align 4, !tbaa !9
  %689 = icmp ne i32 %688, 0
  br i1 %689, label %690, label %878

690:                                              ; preds = %687
  %691 = load i32, ptr %49, align 4, !tbaa !9
  %692 = icmp ne i32 %691, 0
  br i1 %692, label %693, label %878

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

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

764:                                              ; preds = %693
  %765 = load ptr, ptr %20, align 8, !tbaa !5
  %766 = load i32, ptr %765, align 4, !tbaa !9
  %767 = add nsw i32 %766, 1
  store i32 %767, ptr %46, align 4, !tbaa !9
  br label %768

768:                                              ; preds = %764, %718
  %769 = load ptr, ptr %23, align 8, !tbaa !5
  %770 = load i32, ptr %769, align 4, !tbaa !9
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr %39, align 4, !tbaa !9
  %772 = load ptr, ptr %23, align 8, !tbaa !5
  %773 = load i32, ptr %772, align 4, !tbaa !9
  %774 = load ptr, ptr %21, align 8, !tbaa !5
  %775 = load i32, ptr %774, align 4, !tbaa !9
  %776 = sub nsw i32 %773, %775
  %777 = sub nsw i32 0, %776
  store i32 %777, ptr %40, align 4, !tbaa !9
  %778 = load i32, ptr %46, align 4, !tbaa !9
  %779 = load ptr, ptr %23, align 8, !tbaa !5
  %780 = load i32, ptr %779, align 4, !tbaa !9
  %781 = load ptr, ptr %21, align 8, !tbaa !5
  %782 = load i32, ptr %781, align 4, !tbaa !9
  %783 = sub nsw i32 %780, %782
  %784 = sub nsw i32 %778, %783
  store i32 %784, ptr %44, align 4, !tbaa !9
  br label %785

785:                                              ; preds = %849, %768
  %786 = load i32, ptr %40, align 4, !tbaa !9
  %787 = icmp slt i32 %786, 0
  br i1 %787, label %788, label %793

788:                                              ; preds = %785
  %789 = load i32, ptr %44, align 4, !tbaa !9
  %790 = load i32, ptr %39, align 4, !tbaa !9
  %791 = icmp sge i32 %789, %790
  %792 = zext i1 %791 to i32
  br label %798

793:                                              ; preds = %785
  %794 = load i32, ptr %44, align 4, !tbaa !9
  %795 = load i32, ptr %39, align 4, !tbaa !9
  %796 = icmp sle i32 %794, %795
  %797 = zext i1 %796 to i32
  br label %798

798:                                              ; preds = %793, %788
  %799 = phi i32 [ %792, %788 ], [ %797, %793 ]
  %800 = icmp ne i32 %799, 0
  br i1 %800, label %801, label %853

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

849:                                              ; preds = %801
  %850 = load i32, ptr %40, align 4, !tbaa !9
  %851 = load i32, ptr %44, align 4, !tbaa !9
  %852 = add nsw i32 %851, %850
  store i32 %852, ptr %44, align 4, !tbaa !9
  br label %785, !llvm.loop !16

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

878:                                              ; preds = %690, %687
  %879 = load i32, ptr %45, align 4, !tbaa !9
  %880 = icmp ne i32 %879, 0
  br i1 %880, label %881, label %1055

881:                                              ; preds = %878
  %882 = load i32, ptr %43, align 4, !tbaa !9
  %883 = icmp ne i32 %882, 0
  br i1 %883, label %884, label %1055

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

940:                                              ; preds = %1004, %884
  %941 = load i32, ptr %39, align 4, !tbaa !9
  %942 = icmp slt i32 %941, 0
  br i1 %942, label %943, label %948

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

948:                                              ; preds = %940
  %949 = load i32, ptr %44, align 4, !tbaa !9
  %950 = load i32, ptr %40, align 4, !tbaa !9
  %951 = icmp sle i32 %949, %950
  %952 = zext i1 %951 to i32
  br label %953

953:                                              ; preds = %948, %943
  %954 = phi i32 [ %947, %943 ], [ %952, %948 ]
  %955 = icmp ne i32 %954, 0
  br i1 %955, label %956, label %1008

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

1004:                                             ; preds = %956
  %1005 = load i32, ptr %39, align 4, !tbaa !9
  %1006 = load i32, ptr %44, align 4, !tbaa !9
  %1007 = add nsw i32 %1006, %1005
  store i32 %1007, ptr %44, align 4, !tbaa !9
  br label %940, !llvm.loop !17

1008:                                             ; preds = %953
  %1009 = load i32, ptr %46, align 4, !tbaa !9
  %1010 = load ptr, ptr %20, align 8, !tbaa !5
  %1011 = load i32, ptr %1010, align 4, !tbaa !9
  %1012 = icmp sle i32 %1009, %1011
  br i1 %1012, label %1013, label %1054

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

1054:                                             ; preds = %1013, %1008
  br label %1055

1055:                                             ; preds = %1054, %881, %878
  br label %1056

1056:                                             ; preds = %1055, %853
  br label %1057

1057:                                             ; preds = %1056, %686
  br label %1058

1058:                                             ; preds = %1057, %487
  %1059 = load i32, ptr %48, align 4, !tbaa !9
  %1060 = sitofp i32 %1059 to double
  %1061 = load ptr, ptr %30, align 8, !tbaa !5
  %1062 = getelementptr inbounds double, ptr %1061, i64 1
  store double %1060, ptr %1062, align 8, !tbaa !11
  store i32 1, ptr %52, align 4
  br label %1063

1063:                                             ; preds = %1058, %298, %263, %231, %219
  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 @dgemlqt_(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 @dtpmlqt_(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 @dlamswlq_(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
  %narrow467 = xor i32 %23, -1
  %24 = sext i32 %narrow467 to i64
  %25 = getelementptr inbounds double, ptr %9, i64 %24
  %26 = load i32, ptr %12, align 4, !tbaa !5
  %narrow468 = xor i32 %26, -1
  %27 = sext i32 %narrow468 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 %5, align 4, !tbaa !5
  br i1 %35, label %.thread, label %40

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

40:                                               ; preds = %16
  %41 = load i32, ptr %2, align 4, !tbaa !5
  %42 = mul nsw i32 %36, %41
  store i32 0, ptr %15, align 4, !tbaa !5
  %.not = icmp eq i32 %34, 0
  br i1 %.not, label %.thread477, label %43

43:                                               ; preds = %.thread, %40
  %44 = phi i1 [ %39, %.thread ], [ true, %40 ]
  %.0432475 = phi i32 [ %38, %.thread ], [ %42, %40 ]
  %45 = icmp ne i32 %32, 0
  %46 = icmp ne i32 %31, 0
  %or.cond3 = select i1 %45, i1 true, i1 %46
  br i1 %or.cond3, label %47, label %.thread477

47:                                               ; preds = %43
  %48 = load i32, ptr %2, align 4, !tbaa !5
  %49 = icmp slt i32 %48, 0
  br i1 %49, label %.thread477, label %50

50:                                               ; preds = %47
  %51 = load i32, ptr %3, align 4, !tbaa !5
  %52 = icmp slt i32 %51, 0
  br i1 %52, label %.thread477, label %53

53:                                               ; preds = %50
  %54 = load i32, ptr %4, align 4, !tbaa !5
  %55 = icmp slt i32 %54, 0
  br i1 %55, label %.thread477, label %56

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

59:                                               ; preds = %56
  %60 = load i32, ptr %10, align 4, !tbaa !5
  %61 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select469 = tail call i32 @llvm.smax.i32(i32 %61, i32 1)
  %62 = icmp slt i32 %60, %spec.select469
  br i1 %62, label %.thread477, label %63

63:                                               ; preds = %59
  %64 = load i32, ptr %12, align 4, !tbaa !5
  %spec.select470 = tail call i32 @llvm.umax.i32(i32 %48, i32 1)
  %65 = icmp slt i32 %64, %spec.select470
  br i1 %65, label %.thread477, label %66

66:                                               ; preds = %63
  %67 = load i32, ptr %14, align 4, !tbaa !5
  %68 = tail call i32 @llvm.smax.i32(i32 %.0432475, i32 1)
  %69 = icmp sge i32 %67, %68
  %or.cond5 = select i1 %69, i1 true, i1 %30
  br i1 %or.cond5, label %72, label %.thread477

.thread477:                                       ; preds = %66, %63, %59, %56, %53, %50, %47, %43, %40
  %.sink = phi i32 [ -1, %40 ], [ -2, %43 ], [ -3, %47 ], [ -4, %50 ], [ -5, %53 ], [ -9, %56 ], [ -11, %59 ], [ -13, %63 ], [ -15, %66 ]
  %.0432474480 = phi i32 [ %42, %40 ], [ %.0432475, %43 ], [ %.0432475, %47 ], [ %.0432475, %50 ], [ %.0432475, %53 ], [ %.0432475, %56 ], [ %.0432475, %59 ], [ %.0432475, %63 ], [ %.0432475, %66 ]
  %.neg = phi i32 [ 1, %40 ], [ 2, %43 ], [ 3, %47 ], [ 4, %50 ], [ 5, %53 ], [ 9, %56 ], [ 11, %59 ], [ 13, %63 ], [ 15, %66 ]
  store i32 %.sink, ptr %15, align 4, !tbaa !5
  store i32 %.neg, ptr %17, align 4, !tbaa !5
  %70 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %17, i32 noundef 8) #4
  %71 = sitofp i32 %.0432474480 to double
  store double %71, ptr %13, align 8, !tbaa !9
  br label %273

72:                                               ; preds = %66
  br i1 %30, label %73, label %75

73:                                               ; preds = %72
  %74 = sitofp i32 %.0432475 to double
  store double %74, ptr %13, align 8, !tbaa !9
  br label %273

75:                                               ; preds = %72
  %76 = tail call i32 @llvm.umin.i32(i32 %48, i32 %51)
  %77 = tail call i32 @llvm.umin.i32(i32 %76, i32 %54)
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %273, label %79

79:                                               ; preds = %75
  %80 = tail call i32 @llvm.umax.i32(i32 %48, i32 %51)
  %81 = load i32, ptr %6, align 4, !tbaa !5
  %.not459 = icmp sgt i32 %81, %54
  %.not461 = icmp sgt i32 %80, %81
  %or.cond = and i1 %.not459, %.not461
  br i1 %or.cond, label %83, label %82

82:                                               ; preds = %79
  tail call void @dgemlqt_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  br label %273

83:                                               ; preds = %79
  %or.cond7 = and i1 %35, %45
  br i1 %or.cond7, label %84, label %129

84:                                               ; preds = %83
  %85 = sub nsw i32 %48, %54
  %86 = sub nsw i32 %81, %54
  %87 = srem i32 %85, %86
  store i32 %87, ptr %19, align 4, !tbaa !5
  %88 = sdiv i32 %85, %86
  %89 = icmp sgt i32 %87, 0
  br i1 %89, label %90, label %106

90:                                               ; preds = %84
  %91 = sub nsw i32 %48, %87
  %92 = add nsw i32 %91, 1
  %93 = mul nsw i32 %92, %20
  %94 = sext i32 %93 to i64
  %95 = getelementptr double, ptr %22, i64 %94
  %96 = getelementptr i8, ptr %95, i64 8
  %97 = mul nsw i32 %88, %54
  %98 = add nsw i32 %97, 1
  %99 = mul nsw i32 %98, %23
  %100 = sext i32 %99 to i64
  %101 = getelementptr double, ptr %25, i64 %100
  %102 = getelementptr i8, ptr %101, i64 8
  %103 = add nsw i32 %92, %26
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds double, ptr %28, i64 %104
  call void @dtpmlqt_(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 %5, ptr noundef %96, ptr noundef nonnull %8, ptr noundef %102, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %105, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %.pre525 = load i32, ptr %6, align 4, !tbaa !5
  %.pre526 = load i32, ptr %4, align 4, !tbaa !5
  %.pre527 = sub nsw i32 %.pre525, %.pre526
  br label %108

106:                                              ; preds = %84
  %107 = add nuw nsw i32 %48, 1
  br label %108

108:                                              ; preds = %106, %90
  %.pre-phi = phi i32 [ %86, %106 ], [ %.pre527, %90 ]
  %109 = phi i32 [ %81, %106 ], [ %.pre525, %90 ]
  %.0433 = phi i32 [ %107, %106 ], [ %92, %90 ]
  %110 = add nsw i32 %109, 1
  %111 = icmp sgt i32 %.pre-phi, 0
  %invariant.gep512 = getelementptr i8, ptr %22, i64 8
  %invariant.gep514 = getelementptr i8, ptr %25, i64 8
  %.0435516 = sub i32 %.0433, %.pre-phi
  %112 = icmp sgt i32 %.0435516, %109
  %113 = icmp sle i32 %.0435516, %110
  %.in466517 = select i1 %111, i1 %112, i1 %113
  br i1 %.in466517, label %.lr.ph521, label %._crit_edge522

.lr.ph521:                                        ; preds = %108, %.lr.ph521
  %.0435519 = phi i32 [ %.0435, %.lr.ph521 ], [ %.0435516, %108 ]
  %.0518 = phi i32 [ %114, %.lr.ph521 ], [ %88, %108 ]
  %114 = add nsw i32 %.0518, -1
  %115 = load i32, ptr %6, align 4, !tbaa !5
  %116 = load i32, ptr %4, align 4, !tbaa !5
  %117 = sub nsw i32 %115, %116
  store i32 %117, ptr %18, align 4, !tbaa !5
  %118 = mul nsw i32 %.0435519, %20
  %119 = sext i32 %118 to i64
  %gep513 = getelementptr double, ptr %invariant.gep512, i64 %119
  %120 = mul nsw i32 %116, %114
  %121 = add nsw i32 %120, 1
  %122 = mul nsw i32 %121, %23
  %123 = sext i32 %122 to i64
  %gep515 = getelementptr double, ptr %invariant.gep514, i64 %123
  %124 = add nsw i32 %.0435519, %26
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds double, ptr %28, i64 %125
  call void @dtpmlqt_(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 %5, ptr noundef %gep513, ptr noundef nonnull %8, ptr noundef %gep515, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %126, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %.0435 = sub i32 %.0435519, %.pre-phi
  %127 = icmp sgt i32 %.0435, %109
  %128 = icmp sle i32 %.0435, %110
  %.in466 = select i1 %111, i1 %127, i1 %128
  br i1 %.in466, label %.lr.ph521, label %._crit_edge522, !llvm.loop !11

._crit_edge522:                                   ; preds = %.lr.ph521, %108
  call void @dgemlqt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %6, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  br label %271

129:                                              ; preds = %83
  %or.cond9 = select i1 %35, i1 %46, i1 false
  br i1 %or.cond9, label %130, label %177

130:                                              ; preds = %129
  %131 = sub nsw i32 %48, %54
  %132 = sub nsw i32 %81, %54
  %133 = srem i32 %131, %132
  store i32 %133, ptr %19, align 4, !tbaa !5
  %134 = sub nsw i32 %48, %133
  %135 = add nsw i32 %134, 1
  tail call void @dgemlqt_(ptr noundef nonnull @.str.2, ptr noundef nonnull @.str, ptr noundef nonnull %6, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %136 = load i32, ptr %6, align 4, !tbaa !5
  %137 = sub nsw i32 %135, %136
  %138 = load i32, ptr %4, align 4, !tbaa !5
  %139 = add nsw i32 %137, %138
  %140 = sub nsw i32 %136, %138
  %141 = add nsw i32 %136, 1
  %invariant.gep501 = getelementptr i8, ptr %22, i64 8
  %invariant.gep503 = getelementptr i8, ptr %25, i64 8
  %142 = icmp slt i32 %140, 0
  %143 = icmp sge i32 %141, %139
  %144 = icmp slt i32 %136, %139
  %.in464505 = select i1 %142, i1 %143, i1 %144
  br i1 %.in464505, label %.lr.ph509, label %._crit_edge510

.lr.ph509:                                        ; preds = %130, %.lr.ph509
  %.1507 = phi i32 [ %157, %.lr.ph509 ], [ 1, %130 ]
  %.1436506 = phi i32 [ %158, %.lr.ph509 ], [ %141, %130 ]
  %145 = load i32, ptr %6, align 4, !tbaa !5
  %146 = load i32, ptr %4, align 4, !tbaa !5
  %147 = sub nsw i32 %145, %146
  store i32 %147, ptr %18, align 4, !tbaa !5
  %148 = mul nsw i32 %.1436506, %20
  %149 = sext i32 %148 to i64
  %gep502 = getelementptr double, ptr %invariant.gep501, i64 %149
  %150 = mul nsw i32 %146, %.1507
  %151 = add nsw i32 %150, 1
  %152 = mul nsw i32 %151, %23
  %153 = sext i32 %152 to i64
  %gep504 = getelementptr double, ptr %invariant.gep503, i64 %153
  %154 = add nsw i32 %.1436506, %26
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds double, ptr %28, i64 %155
  call void @dtpmlqt_(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 %5, ptr noundef %gep502, ptr noundef nonnull %8, ptr noundef %gep504, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %156, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %157 = add nuw nsw i32 %.1507, 1
  %158 = add nsw i32 %140, %.1436506
  %159 = icmp sge i32 %158, %139
  %160 = icmp sle i32 %158, %139
  %.in464 = select i1 %142, i1 %159, i1 %160
  br i1 %.in464, label %.lr.ph509, label %._crit_edge510, !llvm.loop !13

._crit_edge510:                                   ; preds = %.lr.ph509, %130
  %.1.lcssa = phi i32 [ 1, %130 ], [ %157, %.lr.ph509 ]
  %161 = load i32, ptr %2, align 4, !tbaa !5
  %.not465.not = icmp slt i32 %134, %161
  br i1 %.not465.not, label %162, label %271

162:                                              ; preds = %._crit_edge510
  %163 = mul nsw i32 %135, %20
  %164 = sext i32 %163 to i64
  %165 = getelementptr double, ptr %22, i64 %164
  %166 = getelementptr i8, ptr %165, i64 8
  %167 = load i32, ptr %4, align 4, !tbaa !5
  %168 = mul nsw i32 %167, %.1.lcssa
  %169 = add nsw i32 %168, 1
  %170 = mul nsw i32 %169, %23
  %171 = sext i32 %170 to i64
  %172 = getelementptr double, ptr %25, i64 %171
  %173 = getelementptr i8, ptr %172, i64 8
  %174 = add nsw i32 %135, %26
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds double, ptr %28, i64 %175
  call void @dtpmlqt_(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 %5, ptr noundef %166, ptr noundef nonnull %8, ptr noundef %173, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %176, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  br label %271

177:                                              ; preds = %129
  %or.cond11 = select i1 %44, i1 %46, i1 false
  br i1 %or.cond11, label %178, label %223

178:                                              ; preds = %177
  %179 = sub nsw i32 %51, %54
  %180 = sub nsw i32 %81, %54
  %181 = srem i32 %179, %180
  store i32 %181, ptr %19, align 4, !tbaa !5
  %182 = sdiv i32 %179, %180
  %183 = icmp sgt i32 %181, 0
  br i1 %183, label %184, label %201

184:                                              ; preds = %178
  %185 = sub nsw i32 %51, %181
  %186 = add nsw i32 %185, 1
  %187 = mul nsw i32 %186, %20
  %188 = sext i32 %187 to i64
  %189 = getelementptr double, ptr %22, i64 %188
  %190 = getelementptr i8, ptr %189, i64 8
  %191 = mul nsw i32 %182, %54
  %192 = add nsw i32 %191, 1
  %193 = mul nsw i32 %192, %23
  %194 = sext i32 %193 to i64
  %195 = getelementptr double, ptr %25, i64 %194
  %196 = getelementptr i8, ptr %195, i64 8
  %197 = mul nsw i32 %186, %26
  %198 = sext i32 %197 to i64
  %199 = getelementptr double, ptr %28, i64 %198
  %200 = getelementptr i8, ptr %199, i64 8
  call void @dtpmlqt_(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 %5, ptr noundef %190, ptr noundef nonnull %8, ptr noundef %196, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %200, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %.pre = load i32, ptr %6, align 4, !tbaa !5
  %.pre524 = load i32, ptr %4, align 4, !tbaa !5
  %.pre528 = sub nsw i32 %.pre, %.pre524
  br label %203

201:                                              ; preds = %178
  %202 = add nuw nsw i32 %51, 1
  br label %203

203:                                              ; preds = %201, %184
  %.pre-phi529 = phi i32 [ %180, %201 ], [ %.pre528, %184 ]
  %204 = phi i32 [ %81, %201 ], [ %.pre, %184 ]
  %.1434 = phi i32 [ %202, %201 ], [ %186, %184 ]
  %205 = add nsw i32 %204, 1
  %206 = icmp sgt i32 %.pre-phi529, 0
  %invariant.gep488 = getelementptr i8, ptr %22, i64 8
  %invariant.gep490 = getelementptr i8, ptr %25, i64 8
  %invariant.gep492 = getelementptr i8, ptr %28, i64 8
  %.2437494 = sub i32 %.1434, %.pre-phi529
  %207 = icmp sgt i32 %.2437494, %204
  %208 = icmp sle i32 %.2437494, %205
  %.in463495 = select i1 %206, i1 %207, i1 %208
  br i1 %.in463495, label %.lr.ph499, label %._crit_edge500

.lr.ph499:                                        ; preds = %203, %.lr.ph499
  %.2437497 = phi i32 [ %.2437, %.lr.ph499 ], [ %.2437494, %203 ]
  %.2496 = phi i32 [ %209, %.lr.ph499 ], [ %182, %203 ]
  %209 = add nsw i32 %.2496, -1
  %210 = load i32, ptr %6, align 4, !tbaa !5
  %211 = load i32, ptr %4, align 4, !tbaa !5
  %212 = sub nsw i32 %210, %211
  store i32 %212, ptr %18, align 4, !tbaa !5
  %213 = mul nsw i32 %.2437497, %20
  %214 = sext i32 %213 to i64
  %gep489 = getelementptr double, ptr %invariant.gep488, i64 %214
  %215 = mul nsw i32 %211, %209
  %216 = add nsw i32 %215, 1
  %217 = mul nsw i32 %216, %23
  %218 = sext i32 %217 to i64
  %gep491 = getelementptr double, ptr %invariant.gep490, i64 %218
  %219 = mul nsw i32 %.2437497, %26
  %220 = sext i32 %219 to i64
  %gep493 = getelementptr double, ptr %invariant.gep492, i64 %220
  call void @dtpmlqt_(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 %5, ptr noundef %gep489, 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 %13, ptr noundef nonnull %15) #4
  %.2437 = sub i32 %.2437497, %.pre-phi529
  %221 = icmp sgt i32 %.2437, %204
  %222 = icmp sle i32 %.2437, %205
  %.in463 = select i1 %206, i1 %221, i1 %222
  br i1 %.in463, label %.lr.ph499, label %._crit_edge500, !llvm.loop !14

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

223:                                              ; preds = %177
  %or.cond13 = and i1 %44, %45
  br i1 %or.cond13, label %224, label %271

224:                                              ; preds = %223
  %225 = sub nsw i32 %51, %54
  %226 = sub nsw i32 %81, %54
  %227 = srem i32 %225, %226
  store i32 %227, ptr %19, align 4, !tbaa !5
  %228 = sub nsw i32 %51, %227
  %229 = add nsw i32 %228, 1
  tail call void @dgemlqt_(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %6, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %230 = load i32, ptr %6, align 4, !tbaa !5
  %231 = sub nsw i32 %229, %230
  %232 = load i32, ptr %4, align 4, !tbaa !5
  %233 = add nsw i32 %231, %232
  %234 = sub nsw i32 %230, %232
  %235 = add nsw i32 %230, 1
  %invariant.gep = getelementptr i8, ptr %22, i64 8
  %invariant.gep481 = getelementptr i8, ptr %25, i64 8
  %invariant.gep483 = getelementptr i8, ptr %28, i64 8
  %236 = icmp slt i32 %234, 0
  %237 = icmp sge i32 %235, %233
  %238 = icmp slt i32 %230, %233
  %.in485 = select i1 %236, i1 %237, i1 %238
  br i1 %.in485, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %224, %.lr.ph
  %.3487 = phi i32 [ %250, %.lr.ph ], [ 1, %224 ]
  %.3438486 = phi i32 [ %251, %.lr.ph ], [ %235, %224 ]
  %239 = load i32, ptr %6, align 4, !tbaa !5
  %240 = load i32, ptr %4, align 4, !tbaa !5
  %241 = sub nsw i32 %239, %240
  store i32 %241, ptr %18, align 4, !tbaa !5
  %242 = mul nsw i32 %.3438486, %20
  %243 = sext i32 %242 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %243
  %244 = mul nsw i32 %240, %.3487
  %245 = add nsw i32 %244, 1
  %246 = mul nsw i32 %245, %23
  %247 = sext i32 %246 to i64
  %gep482 = getelementptr double, ptr %invariant.gep481, i64 %247
  %248 = mul nsw i32 %.3438486, %26
  %249 = sext i32 %248 to i64
  %gep484 = getelementptr double, ptr %invariant.gep483, i64 %249
  call void @dtpmlqt_(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 %5, ptr noundef %gep, ptr noundef nonnull %8, ptr noundef %gep482, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %gep484, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  %250 = add nuw nsw i32 %.3487, 1
  %251 = add nsw i32 %234, %.3438486
  %252 = icmp sge i32 %251, %233
  %253 = icmp sle i32 %251, %233
  %.in = select i1 %236, i1 %252, i1 %253
  br i1 %.in, label %.lr.ph, label %._crit_edge, !llvm.loop !15

._crit_edge:                                      ; preds = %.lr.ph, %224
  %.3.lcssa = phi i32 [ 1, %224 ], [ %250, %.lr.ph ]
  %254 = load i32, ptr %3, align 4, !tbaa !5
  %.not462.not = icmp slt i32 %228, %254
  br i1 %.not462.not, label %255, label %271

255:                                              ; preds = %._crit_edge
  %256 = mul nsw i32 %229, %20
  %257 = sext i32 %256 to i64
  %258 = getelementptr double, ptr %22, i64 %257
  %259 = getelementptr i8, ptr %258, i64 8
  %260 = load i32, ptr %4, align 4, !tbaa !5
  %261 = mul nsw i32 %260, %.3.lcssa
  %262 = add nsw i32 %261, 1
  %263 = mul nsw i32 %262, %23
  %264 = sext i32 %263 to i64
  %265 = getelementptr double, ptr %25, i64 %264
  %266 = getelementptr i8, ptr %265, i64 8
  %267 = mul nsw i32 %229, %26
  %268 = sext i32 %267 to i64
  %269 = getelementptr double, ptr %28, i64 %268
  %270 = getelementptr i8, ptr %269, i64 8
  call void @dtpmlqt_(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 %5, ptr noundef %259, ptr noundef nonnull %8, ptr noundef %266, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %270, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %15) #4
  br label %271

271:                                              ; preds = %162, %._crit_edge510, %223, %255, %._crit_edge, %._crit_edge500, %._crit_edge522
  %272 = sitofp i32 %.0432475 to double
  store double %272, ptr %13, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %75, %271, %82, %73, %.thread477
  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 @dgemlqt_(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 @dtpmlqt_(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