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

; 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 [8 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 [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__0 = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dporfsx_(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, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22) #0 {
  %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 ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %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
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca [1 x i8], align 1
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca i32, align 4
  %69 = alloca double, align 8
  %70 = alloca i32, align 4
  %71 = alloca double, align 8
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca i32, align 4
  store ptr %0, ptr %24, align 8, !tbaa !5
  store ptr %1, ptr %25, align 8, !tbaa !5
  store ptr %2, ptr %26, align 8, !tbaa !5
  store ptr %3, ptr %27, align 8, !tbaa !5
  store ptr %4, ptr %28, align 8, !tbaa !5
  store ptr %5, ptr %29, align 8, !tbaa !5
  store ptr %6, ptr %30, align 8, !tbaa !5
  store ptr %7, ptr %31, align 8, !tbaa !5
  store ptr %8, ptr %32, align 8, !tbaa !5
  store ptr %9, ptr %33, align 8, !tbaa !5
  store ptr %10, ptr %34, align 8, !tbaa !5
  store ptr %11, ptr %35, align 8, !tbaa !5
  store ptr %12, ptr %36, align 8, !tbaa !5
  store ptr %13, ptr %37, align 8, !tbaa !5
  store ptr %14, ptr %38, align 8, !tbaa !5
  store ptr %15, ptr %39, align 8, !tbaa !5
  store ptr %16, ptr %40, align 8, !tbaa !5
  store ptr %17, ptr %41, align 8, !tbaa !5
  store ptr %18, ptr %42, align 8, !tbaa !5
  store ptr %19, ptr %43, align 8, !tbaa !5
  store ptr %20, ptr %44, align 8, !tbaa !5
  store ptr %21, ptr %45, align 8, !tbaa !5
  store ptr %22, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #4
  %78 = load ptr, ptr %27, align 8, !tbaa !5
  %79 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %79, ptr %57, align 4, !tbaa !9
  %80 = load i32, ptr %57, align 4, !tbaa !9
  %81 = mul nsw i32 %80, 1
  %82 = add nsw i32 1, %81
  store i32 %82, ptr %58, align 4, !tbaa !9
  %83 = load i32, ptr %58, align 4, !tbaa !9
  %84 = load ptr, ptr %41, align 8, !tbaa !5
  %85 = sext i32 %83 to i64
  %86 = sub i64 0, %85
  %87 = getelementptr inbounds double, ptr %84, i64 %86
  store ptr %87, ptr %41, align 8, !tbaa !5
  %88 = load ptr, ptr %27, align 8, !tbaa !5
  %89 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %89, ptr %55, align 4, !tbaa !9
  %90 = load i32, ptr %55, align 4, !tbaa !9
  %91 = mul nsw i32 %90, 1
  %92 = add nsw i32 1, %91
  store i32 %92, ptr %56, align 4, !tbaa !9
  %93 = load i32, ptr %56, align 4, !tbaa !9
  %94 = load ptr, ptr %40, align 8, !tbaa !5
  %95 = sext i32 %93 to i64
  %96 = sub i64 0, %95
  %97 = getelementptr inbounds double, ptr %94, i64 %96
  store ptr %97, ptr %40, align 8, !tbaa !5
  %98 = load ptr, ptr %29, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  store i32 %99, ptr %47, align 4, !tbaa !9
  %100 = load i32, ptr %47, align 4, !tbaa !9
  %101 = mul nsw i32 %100, 1
  %102 = add nsw i32 1, %101
  store i32 %102, ptr %48, align 4, !tbaa !9
  %103 = load i32, ptr %48, align 4, !tbaa !9
  %104 = load ptr, ptr %28, align 8, !tbaa !5
  %105 = sext i32 %103 to i64
  %106 = sub i64 0, %105
  %107 = getelementptr inbounds double, ptr %104, i64 %106
  store ptr %107, ptr %28, align 8, !tbaa !5
  %108 = load ptr, ptr %31, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  store i32 %109, ptr %49, align 4, !tbaa !9
  %110 = load i32, ptr %49, align 4, !tbaa !9
  %111 = mul nsw i32 %110, 1
  %112 = add nsw i32 1, %111
  store i32 %112, ptr %50, align 4, !tbaa !9
  %113 = load i32, ptr %50, align 4, !tbaa !9
  %114 = load ptr, ptr %30, align 8, !tbaa !5
  %115 = sext i32 %113 to i64
  %116 = sub i64 0, %115
  %117 = getelementptr inbounds double, ptr %114, i64 %116
  store ptr %117, ptr %30, align 8, !tbaa !5
  %118 = load ptr, ptr %32, align 8, !tbaa !5
  %119 = getelementptr inbounds double, ptr %118, i32 -1
  store ptr %119, ptr %32, align 8, !tbaa !5
  %120 = load ptr, ptr %34, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  store i32 %121, ptr %51, align 4, !tbaa !9
  %122 = load i32, ptr %51, align 4, !tbaa !9
  %123 = mul nsw i32 %122, 1
  %124 = add nsw i32 1, %123
  store i32 %124, ptr %52, align 4, !tbaa !9
  %125 = load i32, ptr %52, align 4, !tbaa !9
  %126 = load ptr, ptr %33, align 8, !tbaa !5
  %127 = sext i32 %125 to i64
  %128 = sub i64 0, %127
  %129 = getelementptr inbounds double, ptr %126, i64 %128
  store ptr %129, ptr %33, align 8, !tbaa !5
  %130 = load ptr, ptr %36, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  store i32 %131, ptr %53, align 4, !tbaa !9
  %132 = load i32, ptr %53, align 4, !tbaa !9
  %133 = mul nsw i32 %132, 1
  %134 = add nsw i32 1, %133
  store i32 %134, ptr %54, align 4, !tbaa !9
  %135 = load i32, ptr %54, align 4, !tbaa !9
  %136 = load ptr, ptr %35, align 8, !tbaa !5
  %137 = sext i32 %135 to i64
  %138 = sub i64 0, %137
  %139 = getelementptr inbounds double, ptr %136, i64 %138
  store ptr %139, ptr %35, align 8, !tbaa !5
  %140 = load ptr, ptr %38, align 8, !tbaa !5
  %141 = getelementptr inbounds double, ptr %140, i32 -1
  store ptr %141, ptr %38, align 8, !tbaa !5
  %142 = load ptr, ptr %43, align 8, !tbaa !5
  %143 = getelementptr inbounds double, ptr %142, i32 -1
  store ptr %143, ptr %43, align 8, !tbaa !5
  %144 = load ptr, ptr %44, align 8, !tbaa !5
  %145 = getelementptr inbounds double, ptr %144, i32 -1
  store ptr %145, ptr %44, align 8, !tbaa !5
  %146 = load ptr, ptr %45, align 8, !tbaa !5
  %147 = getelementptr inbounds i32, ptr %146, i32 -1
  store ptr %147, ptr %45, align 8, !tbaa !5
  %148 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 0, ptr %148, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  %149 = load ptr, ptr %42, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = icmp sge i32 %150, 1
  br i1 %151, label %152, label %166

152:                                              ; preds = %23
  %153 = load ptr, ptr %43, align 8, !tbaa !5
  %154 = getelementptr inbounds double, ptr %153, i64 1
  %155 = load double, ptr %154, align 8, !tbaa !11
  %156 = fcmp olt double %155, 0.000000e+00
  br i1 %156, label %157, label %160

157:                                              ; preds = %152
  %158 = load ptr, ptr %43, align 8, !tbaa !5
  %159 = getelementptr inbounds double, ptr %158, i64 1
  store double 1.000000e+00, ptr %159, align 8, !tbaa !11
  br label %165

160:                                              ; preds = %152
  %161 = load ptr, ptr %43, align 8, !tbaa !5
  %162 = getelementptr inbounds double, ptr %161, i64 1
  %163 = load double, ptr %162, align 8, !tbaa !11
  %164 = fptosi double %163 to i32
  store i32 %164, ptr %66, align 4, !tbaa !9
  br label %165

165:                                              ; preds = %160, %157
  br label %166

166:                                              ; preds = %165, %23
  %167 = load ptr, ptr %26, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = sitofp i32 %168 to double
  %170 = call double @dlamch_(ptr noundef @.str)
  %171 = fmul double %169, %170
  store double %171, ptr %62, align 8, !tbaa !11
  store i32 10, ptr %73, align 4, !tbaa !9
  store double 5.000000e-01, ptr %75, align 8, !tbaa !11
  store double 2.500000e-01, ptr %63, align 8, !tbaa !11
  store i32 0, ptr %67, align 4, !tbaa !9
  %172 = load ptr, ptr %42, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = icmp sge i32 %173, 2
  br i1 %174, label %175, label %191

175:                                              ; preds = %166
  %176 = load ptr, ptr %43, align 8, !tbaa !5
  %177 = getelementptr inbounds double, ptr %176, i64 2
  %178 = load double, ptr %177, align 8, !tbaa !11
  %179 = fcmp olt double %178, 0.000000e+00
  br i1 %179, label %180, label %185

180:                                              ; preds = %175
  %181 = load i32, ptr %73, align 4, !tbaa !9
  %182 = sitofp i32 %181 to double
  %183 = load ptr, ptr %43, align 8, !tbaa !5
  %184 = getelementptr inbounds double, ptr %183, i64 2
  store double %182, ptr %184, align 8, !tbaa !11
  br label %190

185:                                              ; preds = %175
  %186 = load ptr, ptr %43, align 8, !tbaa !5
  %187 = getelementptr inbounds double, ptr %186, i64 2
  %188 = load double, ptr %187, align 8, !tbaa !11
  %189 = fptosi double %188 to i32
  store i32 %189, ptr %73, align 4, !tbaa !9
  br label %190

190:                                              ; preds = %185, %180
  br label %191

191:                                              ; preds = %190, %166
  %192 = load ptr, ptr %42, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = icmp sge i32 %193, 3
  br i1 %194, label %195, label %217

195:                                              ; preds = %191
  %196 = load ptr, ptr %43, align 8, !tbaa !5
  %197 = getelementptr inbounds double, ptr %196, i64 3
  %198 = load double, ptr %197, align 8, !tbaa !11
  %199 = fcmp olt double %198, 0.000000e+00
  br i1 %199, label %200, label %210

200:                                              ; preds = %195
  %201 = load i32, ptr %67, align 4, !tbaa !9
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %203, label %206

203:                                              ; preds = %200
  %204 = load ptr, ptr %43, align 8, !tbaa !5
  %205 = getelementptr inbounds double, ptr %204, i64 3
  store double 0.000000e+00, ptr %205, align 8, !tbaa !11
  br label %209

206:                                              ; preds = %200
  %207 = load ptr, ptr %43, align 8, !tbaa !5
  %208 = getelementptr inbounds double, ptr %207, i64 3
  store double 1.000000e+00, ptr %208, align 8, !tbaa !11
  br label %209

209:                                              ; preds = %206, %203
  br label %216

210:                                              ; preds = %195
  %211 = load ptr, ptr %43, align 8, !tbaa !5
  %212 = getelementptr inbounds double, ptr %211, i64 3
  %213 = load double, ptr %212, align 8, !tbaa !11
  %214 = fcmp oeq double %213, 0.000000e+00
  %215 = zext i1 %214 to i32
  store i32 %215, ptr %67, align 4, !tbaa !9
  br label %216

216:                                              ; preds = %210, %209
  br label %217

217:                                              ; preds = %216, %191
  %218 = load i32, ptr %66, align 4, !tbaa !9
  %219 = icmp eq i32 %218, 0
  br i1 %219, label %224, label %220

220:                                              ; preds = %217
  %221 = load ptr, ptr %39, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = icmp eq i32 %222, 0
  br i1 %223, label %224, label %225

224:                                              ; preds = %220, %217
  store i32 0, ptr %74, align 4, !tbaa !9
  br label %231

225:                                              ; preds = %220
  %226 = load i32, ptr %67, align 4, !tbaa !9
  %227 = icmp ne i32 %226, 0
  br i1 %227, label %228, label %229

228:                                              ; preds = %225
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %230

229:                                              ; preds = %225
  store i32 2, ptr %74, align 4, !tbaa !9
  br label %230

230:                                              ; preds = %229, %228
  br label %231

231:                                              ; preds = %230, %224
  %232 = load ptr, ptr %25, align 8, !tbaa !5
  %233 = call i32 @lsame_(ptr noundef %232, ptr noundef @.str.1)
  store i32 %233, ptr %70, align 4, !tbaa !9
  %234 = load ptr, ptr %24, align 8, !tbaa !5
  %235 = call i32 @lsame_(ptr noundef %234, ptr noundef @.str.2)
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %243, label %237

237:                                              ; preds = %231
  %238 = load ptr, ptr %24, align 8, !tbaa !5
  %239 = call i32 @lsame_(ptr noundef %238, ptr noundef @.str.3)
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %243, label %241

241:                                              ; preds = %237
  %242 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -1, ptr %242, align 4, !tbaa !9
  br label %331

243:                                              ; preds = %237, %231
  %244 = load i32, ptr %70, align 4, !tbaa !9
  %245 = icmp ne i32 %244, 0
  br i1 %245, label %252, label %246

246:                                              ; preds = %243
  %247 = load ptr, ptr %25, align 8, !tbaa !5
  %248 = call i32 @lsame_(ptr noundef %247, ptr noundef @.str.4)
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %252, label %250

250:                                              ; preds = %246
  %251 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -2, ptr %251, align 4, !tbaa !9
  br label %330

252:                                              ; preds = %246, %243
  %253 = load ptr, ptr %26, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = icmp slt i32 %254, 0
  br i1 %255, label %256, label %258

256:                                              ; preds = %252
  %257 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -3, ptr %257, align 4, !tbaa !9
  br label %329

258:                                              ; preds = %252
  %259 = load ptr, ptr %27, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp slt i32 %260, 0
  br i1 %261, label %262, label %264

262:                                              ; preds = %258
  %263 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -4, ptr %263, align 4, !tbaa !9
  br label %328

264:                                              ; preds = %258
  %265 = load ptr, ptr %29, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = load ptr, ptr %26, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = icmp sge i32 1, %268
  br i1 %269, label %270, label %271

270:                                              ; preds = %264
  br label %274

271:                                              ; preds = %264
  %272 = load ptr, ptr %26, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  br label %274

274:                                              ; preds = %271, %270
  %275 = phi i32 [ 1, %270 ], [ %273, %271 ]
  %276 = icmp slt i32 %266, %275
  br i1 %276, label %277, label %279

277:                                              ; preds = %274
  %278 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -6, ptr %278, align 4, !tbaa !9
  br label %327

279:                                              ; preds = %274
  %280 = load ptr, ptr %31, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = load ptr, ptr %26, align 8, !tbaa !5
  %283 = load i32, ptr %282, align 4, !tbaa !9
  %284 = icmp sge i32 1, %283
  br i1 %284, label %285, label %286

285:                                              ; preds = %279
  br label %289

286:                                              ; preds = %279
  %287 = load ptr, ptr %26, align 8, !tbaa !5
  %288 = load i32, ptr %287, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %286, %285
  %290 = phi i32 [ 1, %285 ], [ %288, %286 ]
  %291 = icmp slt i32 %281, %290
  br i1 %291, label %292, label %294

292:                                              ; preds = %289
  %293 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -8, ptr %293, align 4, !tbaa !9
  br label %326

294:                                              ; preds = %289
  %295 = load ptr, ptr %34, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = load ptr, ptr %26, align 8, !tbaa !5
  %298 = load i32, ptr %297, align 4, !tbaa !9
  %299 = icmp sge i32 1, %298
  br i1 %299, label %300, label %301

300:                                              ; preds = %294
  br label %304

301:                                              ; preds = %294
  %302 = load ptr, ptr %26, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  br label %304

304:                                              ; preds = %301, %300
  %305 = phi i32 [ 1, %300 ], [ %303, %301 ]
  %306 = icmp slt i32 %296, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %304
  %308 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -11, ptr %308, align 4, !tbaa !9
  br label %325

309:                                              ; preds = %304
  %310 = load ptr, ptr %36, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = load ptr, ptr %26, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  %314 = icmp sge i32 1, %313
  br i1 %314, label %315, label %316

315:                                              ; preds = %309
  br label %319

316:                                              ; preds = %309
  %317 = load ptr, ptr %26, align 8, !tbaa !5
  %318 = load i32, ptr %317, align 4, !tbaa !9
  br label %319

319:                                              ; preds = %316, %315
  %320 = phi i32 [ 1, %315 ], [ %318, %316 ]
  %321 = icmp slt i32 %311, %320
  br i1 %321, label %322, label %324

322:                                              ; preds = %319
  %323 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -13, ptr %323, align 4, !tbaa !9
  br label %324

324:                                              ; preds = %322, %319
  br label %325

325:                                              ; preds = %324, %307
  br label %326

326:                                              ; preds = %325, %292
  br label %327

327:                                              ; preds = %326, %277
  br label %328

328:                                              ; preds = %327, %262
  br label %329

329:                                              ; preds = %328, %256
  br label %330

330:                                              ; preds = %329, %250
  br label %331

331:                                              ; preds = %330, %241
  %332 = load ptr, ptr %46, align 8, !tbaa !5
  %333 = load i32, ptr %332, align 4, !tbaa !9
  %334 = icmp ne i32 %333, 0
  br i1 %334, label %335, label %340

335:                                              ; preds = %331
  %336 = load ptr, ptr %46, align 8, !tbaa !5
  %337 = load i32, ptr %336, align 4, !tbaa !9
  %338 = sub nsw i32 0, %337
  store i32 %338, ptr %59, align 4, !tbaa !9
  %339 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %59, i32 noundef 7)
  store i32 1, ptr %77, align 4
  br label %905

340:                                              ; preds = %331
  %341 = load ptr, ptr %26, align 8, !tbaa !5
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = icmp eq i32 %342, 0
  br i1 %343, label %348, label %344

344:                                              ; preds = %340
  %345 = load ptr, ptr %27, align 8, !tbaa !5
  %346 = load i32, ptr %345, align 4, !tbaa !9
  %347 = icmp eq i32 %346, 0
  br i1 %347, label %348, label %420

348:                                              ; preds = %344, %340
  %349 = load ptr, ptr %37, align 8, !tbaa !5
  store double 1.000000e+00, ptr %349, align 8, !tbaa !11
  %350 = load ptr, ptr %27, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  store i32 %351, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %352

352:                                              ; preds = %416, %348
  %353 = load i32, ptr %68, align 4, !tbaa !9
  %354 = load i32, ptr %59, align 4, !tbaa !9
  %355 = icmp sle i32 %353, %354
  br i1 %355, label %356, label %419

356:                                              ; preds = %352
  %357 = load ptr, ptr %38, align 8, !tbaa !5
  %358 = load i32, ptr %68, align 4, !tbaa !9
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds double, ptr %357, i64 %359
  store double 0.000000e+00, ptr %360, align 8, !tbaa !11
  %361 = load ptr, ptr %39, align 8, !tbaa !5
  %362 = load i32, ptr %361, align 4, !tbaa !9
  %363 = icmp sge i32 %362, 1
  br i1 %363, label %364, label %377

364:                                              ; preds = %356
  %365 = load ptr, ptr %40, align 8, !tbaa !5
  %366 = load i32, ptr %68, align 4, !tbaa !9
  %367 = load i32, ptr %55, align 4, !tbaa !9
  %368 = add nsw i32 %366, %367
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %365, i64 %369
  store double 1.000000e+00, ptr %370, align 8, !tbaa !11
  %371 = load ptr, ptr %41, align 8, !tbaa !5
  %372 = load i32, ptr %68, align 4, !tbaa !9
  %373 = load i32, ptr %57, align 4, !tbaa !9
  %374 = add nsw i32 %372, %373
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds double, ptr %371, i64 %375
  store double 1.000000e+00, ptr %376, align 8, !tbaa !11
  br label %377

377:                                              ; preds = %364, %356
  %378 = load ptr, ptr %39, align 8, !tbaa !5
  %379 = load i32, ptr %378, align 4, !tbaa !9
  %380 = icmp sge i32 %379, 2
  br i1 %380, label %381, label %396

381:                                              ; preds = %377
  %382 = load ptr, ptr %40, align 8, !tbaa !5
  %383 = load i32, ptr %68, align 4, !tbaa !9
  %384 = load i32, ptr %55, align 4, !tbaa !9
  %385 = shl i32 %384, 1
  %386 = add nsw i32 %383, %385
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds double, ptr %382, i64 %387
  store double 0.000000e+00, ptr %388, align 8, !tbaa !11
  %389 = load ptr, ptr %41, align 8, !tbaa !5
  %390 = load i32, ptr %68, align 4, !tbaa !9
  %391 = load i32, ptr %57, align 4, !tbaa !9
  %392 = shl i32 %391, 1
  %393 = add nsw i32 %390, %392
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds double, ptr %389, i64 %394
  store double 0.000000e+00, ptr %395, align 8, !tbaa !11
  br label %396

396:                                              ; preds = %381, %377
  %397 = load ptr, ptr %39, align 8, !tbaa !5
  %398 = load i32, ptr %397, align 4, !tbaa !9
  %399 = icmp sge i32 %398, 3
  br i1 %399, label %400, label %415

400:                                              ; preds = %396
  %401 = load ptr, ptr %40, align 8, !tbaa !5
  %402 = load i32, ptr %68, align 4, !tbaa !9
  %403 = load i32, ptr %55, align 4, !tbaa !9
  %404 = mul nsw i32 %403, 3
  %405 = add nsw i32 %402, %404
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %401, i64 %406
  store double 1.000000e+00, ptr %407, align 8, !tbaa !11
  %408 = load ptr, ptr %41, align 8, !tbaa !5
  %409 = load i32, ptr %68, align 4, !tbaa !9
  %410 = load i32, ptr %57, align 4, !tbaa !9
  %411 = mul nsw i32 %410, 3
  %412 = add nsw i32 %409, %411
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds double, ptr %408, i64 %413
  store double 1.000000e+00, ptr %414, align 8, !tbaa !11
  br label %415

415:                                              ; preds = %400, %396
  br label %416

416:                                              ; preds = %415
  %417 = load i32, ptr %68, align 4, !tbaa !9
  %418 = add nsw i32 %417, 1
  store i32 %418, ptr %68, align 4, !tbaa !9
  br label %352, !llvm.loop !13

419:                                              ; preds = %352
  store i32 1, ptr %77, align 4
  br label %905

420:                                              ; preds = %344
  %421 = load ptr, ptr %37, align 8, !tbaa !5
  store double 0.000000e+00, ptr %421, align 8, !tbaa !11
  %422 = load ptr, ptr %27, align 8, !tbaa !5
  %423 = load i32, ptr %422, align 4, !tbaa !9
  store i32 %423, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %424

424:                                              ; preds = %488, %420
  %425 = load i32, ptr %68, align 4, !tbaa !9
  %426 = load i32, ptr %59, align 4, !tbaa !9
  %427 = icmp sle i32 %425, %426
  br i1 %427, label %428, label %491

428:                                              ; preds = %424
  %429 = load ptr, ptr %38, align 8, !tbaa !5
  %430 = load i32, ptr %68, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds double, ptr %429, i64 %431
  store double 1.000000e+00, ptr %432, align 8, !tbaa !11
  %433 = load ptr, ptr %39, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = icmp sge i32 %434, 1
  br i1 %435, label %436, label %449

436:                                              ; preds = %428
  %437 = load ptr, ptr %40, align 8, !tbaa !5
  %438 = load i32, ptr %68, align 4, !tbaa !9
  %439 = load i32, ptr %55, align 4, !tbaa !9
  %440 = add nsw i32 %438, %439
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %437, i64 %441
  store double 1.000000e+00, ptr %442, align 8, !tbaa !11
  %443 = load ptr, ptr %41, align 8, !tbaa !5
  %444 = load i32, ptr %68, align 4, !tbaa !9
  %445 = load i32, ptr %57, align 4, !tbaa !9
  %446 = add nsw i32 %444, %445
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds double, ptr %443, i64 %447
  store double 1.000000e+00, ptr %448, align 8, !tbaa !11
  br label %449

449:                                              ; preds = %436, %428
  %450 = load ptr, ptr %39, align 8, !tbaa !5
  %451 = load i32, ptr %450, align 4, !tbaa !9
  %452 = icmp sge i32 %451, 2
  br i1 %452, label %453, label %468

453:                                              ; preds = %449
  %454 = load ptr, ptr %40, align 8, !tbaa !5
  %455 = load i32, ptr %68, align 4, !tbaa !9
  %456 = load i32, ptr %55, align 4, !tbaa !9
  %457 = shl i32 %456, 1
  %458 = add nsw i32 %455, %457
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds double, ptr %454, i64 %459
  store double 1.000000e+00, ptr %460, align 8, !tbaa !11
  %461 = load ptr, ptr %41, align 8, !tbaa !5
  %462 = load i32, ptr %68, align 4, !tbaa !9
  %463 = load i32, ptr %57, align 4, !tbaa !9
  %464 = shl i32 %463, 1
  %465 = add nsw i32 %462, %464
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds double, ptr %461, i64 %466
  store double 1.000000e+00, ptr %467, align 8, !tbaa !11
  br label %468

468:                                              ; preds = %453, %449
  %469 = load ptr, ptr %39, align 8, !tbaa !5
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = icmp sge i32 %470, 3
  br i1 %471, label %472, label %487

472:                                              ; preds = %468
  %473 = load ptr, ptr %40, align 8, !tbaa !5
  %474 = load i32, ptr %68, align 4, !tbaa !9
  %475 = load i32, ptr %55, align 4, !tbaa !9
  %476 = mul nsw i32 %475, 3
  %477 = add nsw i32 %474, %476
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds double, ptr %473, i64 %478
  store double 0.000000e+00, ptr %479, align 8, !tbaa !11
  %480 = load ptr, ptr %41, align 8, !tbaa !5
  %481 = load i32, ptr %68, align 4, !tbaa !9
  %482 = load i32, ptr %57, align 4, !tbaa !9
  %483 = mul nsw i32 %482, 3
  %484 = add nsw i32 %481, %483
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %480, i64 %485
  store double 0.000000e+00, ptr %486, align 8, !tbaa !11
  br label %487

487:                                              ; preds = %472, %468
  br label %488

488:                                              ; preds = %487
  %489 = load i32, ptr %68, align 4, !tbaa !9
  %490 = add nsw i32 %489, 1
  store i32 %490, ptr %68, align 4, !tbaa !9
  br label %424, !llvm.loop !15

491:                                              ; preds = %424
  %492 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  store i8 73, ptr %492, align 1, !tbaa !16
  %493 = getelementptr inbounds [1 x i8], ptr %65, i64 0, i64 0
  %494 = load ptr, ptr %24, align 8, !tbaa !5
  %495 = load ptr, ptr %26, align 8, !tbaa !5
  %496 = load ptr, ptr %28, align 8, !tbaa !5
  %497 = load i32, ptr %48, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %496, i64 %498
  %500 = load ptr, ptr %29, align 8, !tbaa !5
  %501 = load ptr, ptr %44, align 8, !tbaa !5
  %502 = getelementptr inbounds double, ptr %501, i64 1
  %503 = call double @dlansy_(ptr noundef %493, ptr noundef %494, ptr noundef %495, ptr noundef %499, ptr noundef %500, ptr noundef %502)
  store double %503, ptr %69, align 8, !tbaa !11
  %504 = load ptr, ptr %24, align 8, !tbaa !5
  %505 = load ptr, ptr %26, align 8, !tbaa !5
  %506 = load ptr, ptr %30, align 8, !tbaa !5
  %507 = load i32, ptr %50, align 4, !tbaa !9
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds double, ptr %506, i64 %508
  %510 = load ptr, ptr %31, align 8, !tbaa !5
  %511 = load ptr, ptr %37, align 8, !tbaa !5
  %512 = load ptr, ptr %44, align 8, !tbaa !5
  %513 = getelementptr inbounds double, ptr %512, i64 1
  %514 = load ptr, ptr %45, align 8, !tbaa !5
  %515 = getelementptr inbounds i32, ptr %514, i64 1
  %516 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dpocon_(ptr noundef %504, ptr noundef %505, ptr noundef %509, ptr noundef %510, ptr noundef %69, ptr noundef %511, ptr noundef %513, ptr noundef %515, ptr noundef %516)
  %517 = load i32, ptr %66, align 4, !tbaa !9
  %518 = icmp ne i32 %517, 0
  br i1 %518, label %519, label %575

519:                                              ; preds = %491
  %520 = call i32 @ilaprec_(ptr noundef @.str.6)
  store i32 %520, ptr %72, align 4, !tbaa !9
  %521 = load ptr, ptr %24, align 8, !tbaa !5
  %522 = load ptr, ptr %26, align 8, !tbaa !5
  %523 = load ptr, ptr %27, align 8, !tbaa !5
  %524 = load ptr, ptr %28, align 8, !tbaa !5
  %525 = load i32, ptr %48, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %524, i64 %526
  %528 = load ptr, ptr %29, align 8, !tbaa !5
  %529 = load ptr, ptr %30, align 8, !tbaa !5
  %530 = load i32, ptr %50, align 4, !tbaa !9
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds double, ptr %529, i64 %531
  %533 = load ptr, ptr %31, align 8, !tbaa !5
  %534 = load ptr, ptr %32, align 8, !tbaa !5
  %535 = getelementptr inbounds double, ptr %534, i64 1
  %536 = load ptr, ptr %33, align 8, !tbaa !5
  %537 = load i32, ptr %52, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds double, ptr %536, i64 %538
  %540 = load ptr, ptr %34, align 8, !tbaa !5
  %541 = load ptr, ptr %35, align 8, !tbaa !5
  %542 = load i32, ptr %54, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds double, ptr %541, i64 %543
  %545 = load ptr, ptr %36, align 8, !tbaa !5
  %546 = load ptr, ptr %38, align 8, !tbaa !5
  %547 = getelementptr inbounds double, ptr %546, i64 1
  %548 = load ptr, ptr %40, align 8, !tbaa !5
  %549 = load i32, ptr %56, align 4, !tbaa !9
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds double, ptr %548, i64 %550
  %552 = load ptr, ptr %41, align 8, !tbaa !5
  %553 = load i32, ptr %58, align 4, !tbaa !9
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds double, ptr %552, i64 %554
  %556 = load ptr, ptr %44, align 8, !tbaa !5
  %557 = load ptr, ptr %26, align 8, !tbaa !5
  %558 = load i32, ptr %557, align 4, !tbaa !9
  %559 = add nsw i32 %558, 1
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds double, ptr %556, i64 %560
  %562 = load ptr, ptr %44, align 8, !tbaa !5
  %563 = getelementptr inbounds double, ptr %562, i64 1
  %564 = load ptr, ptr %44, align 8, !tbaa !5
  %565 = load ptr, ptr %26, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  %567 = shl i32 %566, 1
  %568 = add nsw i32 %567, 1
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds double, ptr %564, i64 %569
  %571 = load ptr, ptr %44, align 8, !tbaa !5
  %572 = getelementptr inbounds double, ptr %571, i64 1
  %573 = load ptr, ptr %37, align 8, !tbaa !5
  %574 = load ptr, ptr %46, align 8, !tbaa !5
  call void @dla_porfsx_extended_(ptr noundef %72, ptr noundef %521, ptr noundef %522, ptr noundef %523, ptr noundef %527, ptr noundef %528, ptr noundef %532, ptr noundef %533, ptr noundef %70, ptr noundef %535, ptr noundef %539, ptr noundef %540, ptr noundef %544, ptr noundef %545, ptr noundef %547, ptr noundef %74, ptr noundef %551, ptr noundef %555, ptr noundef %561, ptr noundef %563, ptr noundef %570, ptr noundef %572, ptr noundef %573, ptr noundef %73, ptr noundef %75, ptr noundef %63, ptr noundef %67, ptr noundef %574)
  br label %575

575:                                              ; preds = %519, %491
  store double 1.000000e+01, ptr %60, align 8, !tbaa !11
  %576 = load ptr, ptr %26, align 8, !tbaa !5
  %577 = load i32, ptr %576, align 4, !tbaa !9
  %578 = sitofp i32 %577 to double
  %579 = call double @sqrt(double noundef %578) #4
  store double %579, ptr %61, align 8, !tbaa !11
  %580 = load double, ptr %60, align 8, !tbaa !11
  %581 = load double, ptr %61, align 8, !tbaa !11
  %582 = fcmp oge double %580, %581
  br i1 %582, label %583, label %585

583:                                              ; preds = %575
  %584 = load double, ptr %60, align 8, !tbaa !11
  br label %587

585:                                              ; preds = %575
  %586 = load double, ptr %61, align 8, !tbaa !11
  br label %587

587:                                              ; preds = %585, %583
  %588 = phi double [ %584, %583 ], [ %586, %585 ]
  %589 = call double @dlamch_(ptr noundef @.str)
  %590 = fmul double %588, %589
  store double %590, ptr %64, align 8, !tbaa !11
  %591 = load ptr, ptr %39, align 8, !tbaa !5
  %592 = load i32, ptr %591, align 4, !tbaa !9
  %593 = icmp sge i32 %592, 1
  br i1 %593, label %594, label %746

594:                                              ; preds = %587
  %595 = load i32, ptr %74, align 4, !tbaa !9
  %596 = icmp sge i32 %595, 1
  br i1 %596, label %597, label %746

597:                                              ; preds = %594
  %598 = load i32, ptr %70, align 4, !tbaa !9
  %599 = icmp ne i32 %598, 0
  br i1 %599, label %600, label %621

600:                                              ; preds = %597
  %601 = load ptr, ptr %24, align 8, !tbaa !5
  %602 = load ptr, ptr %26, align 8, !tbaa !5
  %603 = load ptr, ptr %28, align 8, !tbaa !5
  %604 = load i32, ptr %48, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds double, ptr %603, i64 %605
  %607 = load ptr, ptr %29, align 8, !tbaa !5
  %608 = load ptr, ptr %30, align 8, !tbaa !5
  %609 = load i32, ptr %50, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds double, ptr %608, i64 %610
  %612 = load ptr, ptr %31, align 8, !tbaa !5
  %613 = load ptr, ptr %32, align 8, !tbaa !5
  %614 = getelementptr inbounds double, ptr %613, i64 1
  %615 = load ptr, ptr %46, align 8, !tbaa !5
  %616 = load ptr, ptr %44, align 8, !tbaa !5
  %617 = getelementptr inbounds double, ptr %616, i64 1
  %618 = load ptr, ptr %45, align 8, !tbaa !5
  %619 = getelementptr inbounds i32, ptr %618, i64 1
  %620 = call double @dla_porcond_(ptr noundef %601, ptr noundef %602, ptr noundef %606, ptr noundef %607, ptr noundef %611, ptr noundef %612, ptr noundef @c_n1, ptr noundef %614, ptr noundef %615, ptr noundef %617, ptr noundef %619)
  store double %620, ptr %71, align 8, !tbaa !11
  br label %642

621:                                              ; preds = %597
  %622 = load ptr, ptr %24, align 8, !tbaa !5
  %623 = load ptr, ptr %26, align 8, !tbaa !5
  %624 = load ptr, ptr %28, align 8, !tbaa !5
  %625 = load i32, ptr %48, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %624, i64 %626
  %628 = load ptr, ptr %29, align 8, !tbaa !5
  %629 = load ptr, ptr %30, align 8, !tbaa !5
  %630 = load i32, ptr %50, align 4, !tbaa !9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds double, ptr %629, i64 %631
  %633 = load ptr, ptr %31, align 8, !tbaa !5
  %634 = load ptr, ptr %32, align 8, !tbaa !5
  %635 = getelementptr inbounds double, ptr %634, i64 1
  %636 = load ptr, ptr %46, align 8, !tbaa !5
  %637 = load ptr, ptr %44, align 8, !tbaa !5
  %638 = getelementptr inbounds double, ptr %637, i64 1
  %639 = load ptr, ptr %45, align 8, !tbaa !5
  %640 = getelementptr inbounds i32, ptr %639, i64 1
  %641 = call double @dla_porcond_(ptr noundef %622, ptr noundef %623, ptr noundef %627, ptr noundef %628, ptr noundef %632, ptr noundef %633, ptr noundef @c__0, ptr noundef %635, ptr noundef %636, ptr noundef %638, ptr noundef %640)
  store double %641, ptr %71, align 8, !tbaa !11
  br label %642

642:                                              ; preds = %621, %600
  %643 = load ptr, ptr %27, align 8, !tbaa !5
  %644 = load i32, ptr %643, align 4, !tbaa !9
  store i32 %644, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %645

645:                                              ; preds = %742, %642
  %646 = load i32, ptr %68, align 4, !tbaa !9
  %647 = load i32, ptr %59, align 4, !tbaa !9
  %648 = icmp sle i32 %646, %647
  br i1 %648, label %649, label %745

649:                                              ; preds = %645
  %650 = load ptr, ptr %39, align 8, !tbaa !5
  %651 = load i32, ptr %650, align 4, !tbaa !9
  %652 = icmp sge i32 %651, 2
  br i1 %652, label %653, label %671

653:                                              ; preds = %649
  %654 = load ptr, ptr %40, align 8, !tbaa !5
  %655 = load i32, ptr %68, align 4, !tbaa !9
  %656 = load i32, ptr %55, align 4, !tbaa !9
  %657 = shl i32 %656, 1
  %658 = add nsw i32 %655, %657
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds double, ptr %654, i64 %659
  %661 = load double, ptr %660, align 8, !tbaa !11
  %662 = fcmp ogt double %661, 1.000000e+00
  br i1 %662, label %663, label %671

663:                                              ; preds = %653
  %664 = load ptr, ptr %40, align 8, !tbaa !5
  %665 = load i32, ptr %68, align 4, !tbaa !9
  %666 = load i32, ptr %55, align 4, !tbaa !9
  %667 = shl i32 %666, 1
  %668 = add nsw i32 %665, %667
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds double, ptr %664, i64 %669
  store double 1.000000e+00, ptr %670, align 8, !tbaa !11
  br label %671

671:                                              ; preds = %663, %653, %649
  %672 = load double, ptr %71, align 8, !tbaa !11
  %673 = load double, ptr %62, align 8, !tbaa !11
  %674 = fcmp olt double %672, %673
  br i1 %674, label %675, label %701

675:                                              ; preds = %671
  %676 = load ptr, ptr %40, align 8, !tbaa !5
  %677 = load i32, ptr %68, align 4, !tbaa !9
  %678 = load i32, ptr %55, align 4, !tbaa !9
  %679 = shl i32 %678, 1
  %680 = add nsw i32 %677, %679
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds double, ptr %676, i64 %681
  store double 1.000000e+00, ptr %682, align 8, !tbaa !11
  %683 = load ptr, ptr %40, align 8, !tbaa !5
  %684 = load i32, ptr %68, align 4, !tbaa !9
  %685 = load i32, ptr %55, align 4, !tbaa !9
  %686 = add nsw i32 %684, %685
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds double, ptr %683, i64 %687
  store double 0.000000e+00, ptr %688, align 8, !tbaa !11
  %689 = load ptr, ptr %46, align 8, !tbaa !5
  %690 = load i32, ptr %689, align 4, !tbaa !9
  %691 = load ptr, ptr %26, align 8, !tbaa !5
  %692 = load i32, ptr %691, align 4, !tbaa !9
  %693 = icmp sle i32 %690, %692
  br i1 %693, label %694, label %700

694:                                              ; preds = %675
  %695 = load ptr, ptr %26, align 8, !tbaa !5
  %696 = load i32, ptr %695, align 4, !tbaa !9
  %697 = load i32, ptr %68, align 4, !tbaa !9
  %698 = add nsw i32 %696, %697
  %699 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 %698, ptr %699, align 4, !tbaa !9
  br label %700

700:                                              ; preds = %694, %675
  br label %728

701:                                              ; preds = %671
  %702 = load ptr, ptr %40, align 8, !tbaa !5
  %703 = load i32, ptr %68, align 4, !tbaa !9
  %704 = load i32, ptr %55, align 4, !tbaa !9
  %705 = shl i32 %704, 1
  %706 = add nsw i32 %703, %705
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %702, i64 %707
  %709 = load double, ptr %708, align 8, !tbaa !11
  %710 = load double, ptr %64, align 8, !tbaa !11
  %711 = fcmp olt double %709, %710
  br i1 %711, label %712, label %727

712:                                              ; preds = %701
  %713 = load double, ptr %64, align 8, !tbaa !11
  %714 = load ptr, ptr %40, align 8, !tbaa !5
  %715 = load i32, ptr %68, align 4, !tbaa !9
  %716 = load i32, ptr %55, align 4, !tbaa !9
  %717 = shl i32 %716, 1
  %718 = add nsw i32 %715, %717
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds double, ptr %714, i64 %719
  store double %713, ptr %720, align 8, !tbaa !11
  %721 = load ptr, ptr %40, align 8, !tbaa !5
  %722 = load i32, ptr %68, align 4, !tbaa !9
  %723 = load i32, ptr %55, align 4, !tbaa !9
  %724 = add nsw i32 %722, %723
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %721, i64 %725
  store double 1.000000e+00, ptr %726, align 8, !tbaa !11
  br label %727

727:                                              ; preds = %712, %701
  br label %728

728:                                              ; preds = %727, %700
  %729 = load ptr, ptr %39, align 8, !tbaa !5
  %730 = load i32, ptr %729, align 4, !tbaa !9
  %731 = icmp sge i32 %730, 3
  br i1 %731, label %732, label %741

732:                                              ; preds = %728
  %733 = load double, ptr %71, align 8, !tbaa !11
  %734 = load ptr, ptr %40, align 8, !tbaa !5
  %735 = load i32, ptr %68, align 4, !tbaa !9
  %736 = load i32, ptr %55, align 4, !tbaa !9
  %737 = mul nsw i32 %736, 3
  %738 = add nsw i32 %735, %737
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds double, ptr %734, i64 %739
  store double %733, ptr %740, align 8, !tbaa !11
  br label %741

741:                                              ; preds = %732, %728
  br label %742

742:                                              ; preds = %741
  %743 = load i32, ptr %68, align 4, !tbaa !9
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr %68, align 4, !tbaa !9
  br label %645, !llvm.loop !17

745:                                              ; preds = %645
  br label %746

746:                                              ; preds = %745, %594, %587
  %747 = load ptr, ptr %39, align 8, !tbaa !5
  %748 = load i32, ptr %747, align 4, !tbaa !9
  %749 = icmp sge i32 %748, 1
  br i1 %749, label %750, label %904

750:                                              ; preds = %746
  %751 = load i32, ptr %74, align 4, !tbaa !9
  %752 = icmp sge i32 %751, 2
  br i1 %752, label %753, label %904

753:                                              ; preds = %750
  %754 = call double @dlamch_(ptr noundef @.str)
  %755 = call double @sqrt(double noundef %754) #4
  store double %755, ptr %76, align 8, !tbaa !11
  %756 = load ptr, ptr %27, align 8, !tbaa !5
  %757 = load i32, ptr %756, align 4, !tbaa !9
  store i32 %757, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %758

758:                                              ; preds = %900, %753
  %759 = load i32, ptr %68, align 4, !tbaa !9
  %760 = load i32, ptr %59, align 4, !tbaa !9
  %761 = icmp sle i32 %759, %760
  br i1 %761, label %762, label %903

762:                                              ; preds = %758
  %763 = load ptr, ptr %41, align 8, !tbaa !5
  %764 = load i32, ptr %68, align 4, !tbaa !9
  %765 = load i32, ptr %57, align 4, !tbaa !9
  %766 = shl i32 %765, 1
  %767 = add nsw i32 %764, %766
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %763, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !11
  %771 = load double, ptr %76, align 8, !tbaa !11
  %772 = fcmp olt double %770, %771
  br i1 %772, label %773, label %799

773:                                              ; preds = %762
  %774 = load ptr, ptr %24, align 8, !tbaa !5
  %775 = load ptr, ptr %26, align 8, !tbaa !5
  %776 = load ptr, ptr %28, align 8, !tbaa !5
  %777 = load i32, ptr %48, align 4, !tbaa !9
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds double, ptr %776, i64 %778
  %780 = load ptr, ptr %29, align 8, !tbaa !5
  %781 = load ptr, ptr %30, align 8, !tbaa !5
  %782 = load i32, ptr %50, align 4, !tbaa !9
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds double, ptr %781, i64 %783
  %785 = load ptr, ptr %31, align 8, !tbaa !5
  %786 = load ptr, ptr %35, align 8, !tbaa !5
  %787 = load i32, ptr %68, align 4, !tbaa !9
  %788 = load i32, ptr %53, align 4, !tbaa !9
  %789 = mul nsw i32 %787, %788
  %790 = add nsw i32 %789, 1
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %786, i64 %791
  %793 = load ptr, ptr %46, align 8, !tbaa !5
  %794 = load ptr, ptr %44, align 8, !tbaa !5
  %795 = getelementptr inbounds double, ptr %794, i64 1
  %796 = load ptr, ptr %45, align 8, !tbaa !5
  %797 = getelementptr inbounds i32, ptr %796, i64 1
  %798 = call double @dla_porcond_(ptr noundef %774, ptr noundef %775, ptr noundef %779, ptr noundef %780, ptr noundef %784, ptr noundef %785, ptr noundef @c__1, ptr noundef %792, ptr noundef %793, ptr noundef %795, ptr noundef %797)
  store double %798, ptr %71, align 8, !tbaa !11
  br label %800

799:                                              ; preds = %762
  store double 0.000000e+00, ptr %71, align 8, !tbaa !11
  br label %800

800:                                              ; preds = %799, %773
  %801 = load ptr, ptr %39, align 8, !tbaa !5
  %802 = load i32, ptr %801, align 4, !tbaa !9
  %803 = icmp sge i32 %802, 2
  br i1 %803, label %804, label %822

804:                                              ; preds = %800
  %805 = load ptr, ptr %41, align 8, !tbaa !5
  %806 = load i32, ptr %68, align 4, !tbaa !9
  %807 = load i32, ptr %57, align 4, !tbaa !9
  %808 = shl i32 %807, 1
  %809 = add nsw i32 %806, %808
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds double, ptr %805, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !11
  %813 = fcmp ogt double %812, 1.000000e+00
  br i1 %813, label %814, label %822

814:                                              ; preds = %804
  %815 = load ptr, ptr %41, align 8, !tbaa !5
  %816 = load i32, ptr %68, align 4, !tbaa !9
  %817 = load i32, ptr %57, align 4, !tbaa !9
  %818 = shl i32 %817, 1
  %819 = add nsw i32 %816, %818
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds double, ptr %815, i64 %820
  store double 1.000000e+00, ptr %821, align 8, !tbaa !11
  br label %822

822:                                              ; preds = %814, %804, %800
  %823 = load double, ptr %71, align 8, !tbaa !11
  %824 = load double, ptr %62, align 8, !tbaa !11
  %825 = fcmp olt double %823, %824
  br i1 %825, label %826, label %859

826:                                              ; preds = %822
  %827 = load ptr, ptr %41, align 8, !tbaa !5
  %828 = load i32, ptr %68, align 4, !tbaa !9
  %829 = load i32, ptr %57, align 4, !tbaa !9
  %830 = shl i32 %829, 1
  %831 = add nsw i32 %828, %830
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds double, ptr %827, i64 %832
  store double 1.000000e+00, ptr %833, align 8, !tbaa !11
  %834 = load ptr, ptr %41, align 8, !tbaa !5
  %835 = load i32, ptr %68, align 4, !tbaa !9
  %836 = load i32, ptr %57, align 4, !tbaa !9
  %837 = add nsw i32 %835, %836
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds double, ptr %834, i64 %838
  store double 0.000000e+00, ptr %839, align 8, !tbaa !11
  %840 = load ptr, ptr %43, align 8, !tbaa !5
  %841 = getelementptr inbounds double, ptr %840, i64 3
  %842 = load double, ptr %841, align 8, !tbaa !11
  %843 = fcmp oeq double %842, 1.000000e+00
  br i1 %843, label %844, label %858

844:                                              ; preds = %826
  %845 = load ptr, ptr %46, align 8, !tbaa !5
  %846 = load i32, ptr %845, align 4, !tbaa !9
  %847 = load ptr, ptr %26, align 8, !tbaa !5
  %848 = load i32, ptr %847, align 4, !tbaa !9
  %849 = load i32, ptr %68, align 4, !tbaa !9
  %850 = add nsw i32 %848, %849
  %851 = icmp slt i32 %846, %850
  br i1 %851, label %852, label %858

852:                                              ; preds = %844
  %853 = load ptr, ptr %26, align 8, !tbaa !5
  %854 = load i32, ptr %853, align 4, !tbaa !9
  %855 = load i32, ptr %68, align 4, !tbaa !9
  %856 = add nsw i32 %854, %855
  %857 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 %856, ptr %857, align 4, !tbaa !9
  br label %858

858:                                              ; preds = %852, %844, %826
  br label %886

859:                                              ; preds = %822
  %860 = load ptr, ptr %41, align 8, !tbaa !5
  %861 = load i32, ptr %68, align 4, !tbaa !9
  %862 = load i32, ptr %57, align 4, !tbaa !9
  %863 = shl i32 %862, 1
  %864 = add nsw i32 %861, %863
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds double, ptr %860, i64 %865
  %867 = load double, ptr %866, align 8, !tbaa !11
  %868 = load double, ptr %64, align 8, !tbaa !11
  %869 = fcmp olt double %867, %868
  br i1 %869, label %870, label %885

870:                                              ; preds = %859
  %871 = load double, ptr %64, align 8, !tbaa !11
  %872 = load ptr, ptr %41, align 8, !tbaa !5
  %873 = load i32, ptr %68, align 4, !tbaa !9
  %874 = load i32, ptr %57, align 4, !tbaa !9
  %875 = shl i32 %874, 1
  %876 = add nsw i32 %873, %875
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds double, ptr %872, i64 %877
  store double %871, ptr %878, align 8, !tbaa !11
  %879 = load ptr, ptr %41, align 8, !tbaa !5
  %880 = load i32, ptr %68, align 4, !tbaa !9
  %881 = load i32, ptr %57, align 4, !tbaa !9
  %882 = add nsw i32 %880, %881
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds double, ptr %879, i64 %883
  store double 1.000000e+00, ptr %884, align 8, !tbaa !11
  br label %885

885:                                              ; preds = %870, %859
  br label %886

886:                                              ; preds = %885, %858
  %887 = load ptr, ptr %39, align 8, !tbaa !5
  %888 = load i32, ptr %887, align 4, !tbaa !9
  %889 = icmp sge i32 %888, 3
  br i1 %889, label %890, label %899

890:                                              ; preds = %886
  %891 = load double, ptr %71, align 8, !tbaa !11
  %892 = load ptr, ptr %41, align 8, !tbaa !5
  %893 = load i32, ptr %68, align 4, !tbaa !9
  %894 = load i32, ptr %57, align 4, !tbaa !9
  %895 = mul nsw i32 %894, 3
  %896 = add nsw i32 %893, %895
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %892, i64 %897
  store double %891, ptr %898, align 8, !tbaa !11
  br label %899

899:                                              ; preds = %890, %886
  br label %900

900:                                              ; preds = %899
  %901 = load i32, ptr %68, align 4, !tbaa !9
  %902 = add nsw i32 %901, 1
  store i32 %902, ptr %68, align 4, !tbaa !9
  br label %758, !llvm.loop !18

903:                                              ; preds = %758
  br label %904

904:                                              ; preds = %903, %750, %746
  store i32 1, ptr %77, align 4
  br label %905

905:                                              ; preds = %904, %419, %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  ret void
}

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

declare double @dlamch_(ptr noundef) #2

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

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

declare double @dlansy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @ilaprec_(ptr noundef) #2

declare void @dla_porfsx_extended_(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, 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: nounwind
declare double @sqrt(double noundef) #3

declare double @dla_porcond_(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 "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 #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 = !{!"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 = !{!7, !7, i64 0}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !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 [8 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 [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@c__0 = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dporfsx_(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 nocapture noundef readonly %15, ptr noundef %16, ptr noundef %17, ptr nocapture noundef readonly %18, ptr nocapture noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22) local_unnamed_addr #0 {
  %24 = ptrtoint ptr %17 to i64
  %25 = ptrtoint ptr %14 to i64
  %26 = ptrtoint ptr %16 to i64
  %27 = ptrtoint ptr %17 to i64
  %28 = ptrtoint ptr %14 to i64
  %29 = ptrtoint ptr %16 to i64
  %30 = alloca i32, align 4
  %31 = alloca double, align 8
  %32 = alloca [1 x i8], align 1
  %33 = alloca i32, align 4
  %34 = alloca double, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  %40 = load i32, ptr %3, align 4, !tbaa !5
  %narrow329 = xor i32 %40, -1
  %41 = sext i32 %narrow329 to i64
  %42 = getelementptr inbounds double, ptr %17, i64 %41
  %43 = getelementptr inbounds double, ptr %16, i64 %41
  %44 = load i32, ptr %12, align 4, !tbaa !5
  %narrow = xor i32 %44, -1
  %45 = sext i32 %narrow to i64
  %46 = getelementptr inbounds double, ptr %11, i64 %45
  %47 = getelementptr inbounds i8, ptr %14, i64 -8
  %48 = getelementptr inbounds i8, ptr %20, i64 -8
  store i32 0, ptr %22, align 4, !tbaa !5
  %49 = load i32, ptr %18, align 4, !tbaa !5
  %50 = icmp sgt i32 %49, 0
  br i1 %50, label %51, label %57

51:                                               ; preds = %23
  %52 = load double, ptr %19, align 8, !tbaa !9
  %53 = fcmp olt double %52, 0.000000e+00
  br i1 %53, label %54, label %55

54:                                               ; preds = %51
  store double 1.000000e+00, ptr %19, align 8, !tbaa !9
  br label %57

55:                                               ; preds = %51
  %56 = fptosi double %52 to i32
  br label %57

57:                                               ; preds = %54, %55, %23
  %.0308 = phi i32 [ 1, %54 ], [ %56, %55 ], [ 1, %23 ]
  %58 = load i32, ptr %2, align 4, !tbaa !5
  %59 = sitofp i32 %58 to double
  %60 = tail call double @dlamch_(ptr noundef nonnull @.str) #6
  %61 = fmul double %60, %59
  store i32 10, ptr %37, align 4, !tbaa !5
  store double 5.000000e-01, ptr %39, align 8, !tbaa !9
  store double 2.500000e-01, ptr %31, align 8, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !5
  %62 = load i32, ptr %18, align 4, !tbaa !5
  %63 = icmp sgt i32 %62, 1
  br i1 %63, label %64, label %.thread

64:                                               ; preds = %57
  %65 = getelementptr inbounds i8, ptr %19, i64 8
  %66 = load double, ptr %65, align 8, !tbaa !9
  %67 = fcmp olt double %66, 0.000000e+00
  br i1 %67, label %68, label %69

68:                                               ; preds = %64
  store double 1.000000e+01, ptr %65, align 8, !tbaa !9
  br label %71

69:                                               ; preds = %64
  %70 = fptosi double %66 to i32
  store i32 %70, ptr %37, align 4, !tbaa !5
  br label %71

71:                                               ; preds = %68, %69
  %.not = icmp eq i32 %62, 2
  br i1 %.not, label %.thread, label %72

72:                                               ; preds = %71
  %73 = getelementptr inbounds i8, ptr %19, i64 16
  %74 = load double, ptr %73, align 8, !tbaa !9
  %75 = fcmp olt double %74, 0.000000e+00
  br i1 %75, label %76, label %77

76:                                               ; preds = %72
  store double 1.000000e+00, ptr %73, align 8, !tbaa !9
  br label %.thread

77:                                               ; preds = %72
  %78 = fcmp oeq double %74, 0.000000e+00
  %79 = zext i1 %78 to i32
  store i32 %79, ptr %33, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %57, %77, %76, %71
  %80 = phi i32 [ 0, %57 ], [ %79, %77 ], [ 0, %76 ], [ 0, %71 ]
  %81 = icmp eq i32 %.0308, 0
  br i1 %81, label %85, label %82

82:                                               ; preds = %.thread
  %83 = load i32, ptr %15, align 4, !tbaa !5
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %86

85:                                               ; preds = %82, %.thread
  store i32 0, ptr %38, align 4, !tbaa !5
  br label %89

86:                                               ; preds = %82
  %.not321 = icmp eq i32 %80, 0
  br i1 %.not321, label %88, label %87

87:                                               ; preds = %86
  store i32 1, ptr %38, align 4, !tbaa !5
  br label %89

88:                                               ; preds = %86
  store i32 2, ptr %38, align 4, !tbaa !5
  br label %89

89:                                               ; preds = %87, %88, %85
  %90 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  store i32 %90, ptr %35, align 4, !tbaa !5
  %91 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not322 = icmp eq i32 %91, 0
  br i1 %.not322, label %92, label %94

92:                                               ; preds = %89
  %93 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not323 = icmp eq i32 %93, 0
  br i1 %.not323, label %.thread338.sink.split, label %94

94:                                               ; preds = %92, %89
  %.not324 = icmp eq i32 %90, 0
  br i1 %.not324, label %95, label %97

95:                                               ; preds = %94
  %96 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not325 = icmp eq i32 %96, 0
  br i1 %.not325, label %.thread338.sink.split, label %97

97:                                               ; preds = %95, %94
  %98 = load i32, ptr %2, align 4, !tbaa !5
  %99 = icmp slt i32 %98, 0
  br i1 %99, label %.thread338.sink.split, label %100

100:                                              ; preds = %97
  %101 = load i32, ptr %3, align 4, !tbaa !5
  %102 = icmp slt i32 %101, 0
  br i1 %102, label %.thread338.sink.split, label %103

103:                                              ; preds = %100
  %104 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %98, i32 1)
  %105 = icmp slt i32 %104, %spec.select
  br i1 %105, label %.thread338.sink.split, label %106

106:                                              ; preds = %103
  %107 = load i32, ptr %7, align 4, !tbaa !5
  %108 = icmp slt i32 %107, %spec.select
  br i1 %108, label %.thread338.sink.split, label %109

109:                                              ; preds = %106
  %110 = load i32, ptr %10, align 4, !tbaa !5
  %111 = icmp slt i32 %110, %spec.select
  br i1 %111, label %.thread338.sink.split, label %112

112:                                              ; preds = %109
  %113 = load i32, ptr %12, align 4, !tbaa !5
  %114 = icmp slt i32 %113, %spec.select
  br i1 %114, label %.thread338.sink.split, label %115

115:                                              ; preds = %112
  %.pr = load i32, ptr %22, align 4, !tbaa !5
  %.not326 = icmp eq i32 %.pr, 0
  br i1 %.not326, label %119, label %.thread338

.thread338.sink.split:                            ; preds = %112, %109, %106, %103, %100, %97, %95, %92
  %.sink = phi i32 [ -1, %92 ], [ -2, %95 ], [ -3, %97 ], [ -4, %100 ], [ -6, %103 ], [ -8, %106 ], [ -11, %109 ], [ -13, %112 ]
  store i32 %.sink, ptr %22, align 4, !tbaa !5
  br label %.thread338

.thread338:                                       ; preds = %.thread338.sink.split, %115
  %116 = phi i32 [ %.pr, %115 ], [ %.sink, %.thread338.sink.split ]
  %117 = sub nsw i32 0, %116
  store i32 %117, ptr %30, align 4, !tbaa !5
  %118 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30, i32 noundef 7) #6
  br label %.loopexit

119:                                              ; preds = %115
  %120 = icmp eq i32 %98, 0
  br i1 %120, label %123, label %121

121:                                              ; preds = %119
  %122 = icmp eq i32 %101, 0
  br i1 %122, label %.thread403, label %.lr.ph

.thread403:                                       ; preds = %121
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  br label %.loopexit

123:                                              ; preds = %119
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  %.not334360 = icmp eq i32 %101, 0
  br i1 %.not334360, label %.loopexit, label %.lr.ph363

.lr.ph363:                                        ; preds = %123
  %124 = load i32, ptr %15, align 4, !tbaa !5
  %125 = icmp sgt i32 %124, 0
  %126 = shl i32 %40, 1
  %127 = icmp ugt i32 %124, 2
  %128 = mul nsw i32 %40, 3
  br i1 %125, label %.lr.ph363.split.us, label %.thread342.preheader

.thread342.preheader:                             ; preds = %.lr.ph363
  %129 = zext nneg i32 %101 to i64
  %130 = shl nuw nsw i64 %129, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %130, i1 false), !tbaa !9
  br label %.loopexit

.lr.ph363.split.us:                               ; preds = %.lr.ph363
  %.not347 = icmp eq i32 %124, 1
  %131 = sext i32 %40 to i64
  br i1 %.not347, label %.thread342.us.us.preheader, label %.lr.ph363.split.us.split.preheader

.lr.ph363.split.us.split.preheader:               ; preds = %.lr.ph363.split.us
  %132 = sext i32 %126 to i64
  %133 = sext i32 %128 to i64
  %134 = add nuw i32 %101, 1
  %wide.trip.count394 = zext i32 %134 to i64
  br label %.lr.ph363.split.us.split

.thread342.us.us.preheader:                       ; preds = %.lr.ph363.split.us
  %135 = add nuw i32 %101, 1
  %wide.trip.count399 = zext i32 %135 to i64
  %136 = zext nneg i32 %101 to i64
  %min.iters.check457 = icmp ult i32 %101, 18
  br i1 %min.iters.check457, label %.thread342.us.us.preheader468, label %vector.memcheck449

vector.memcheck449:                               ; preds = %.thread342.us.us.preheader
  %137 = shl nsw i64 %131, 3
  %138 = add i64 %137, %26
  %139 = shl nsw i64 %41, 3
  %140 = add i64 %138, %139
  %141 = add i64 %140, 8
  %142 = sub i64 %141, %25
  %diff.check450 = icmp ult i64 %142, 32
  %143 = add i64 %137, %24
  %144 = add i64 %143, %139
  %145 = add i64 %144, 8
  %146 = sub i64 %145, %25
  %diff.check451 = icmp ult i64 %146, 32
  %conflict.rdx452 = or i1 %diff.check450, %diff.check451
  %147 = sub i64 %24, %26
  %diff.check453 = icmp ult i64 %147, 32
  %conflict.rdx454 = or i1 %conflict.rdx452, %diff.check453
  br i1 %conflict.rdx454, label %.thread342.us.us.preheader468, label %vector.ph458

vector.ph458:                                     ; preds = %vector.memcheck449
  %n.vec460 = and i64 %136, 2147483644
  %ind.end461 = or disjoint i64 %n.vec460, 1
  br label %vector.body463

vector.body463:                                   ; preds = %vector.body463, %vector.ph458
  %index464 = phi i64 [ 0, %vector.ph458 ], [ %index.next466, %vector.body463 ]
  %offset.idx465 = or disjoint i64 %index464, 1
  %148 = getelementptr double, ptr %14, i64 %index464
  %149 = getelementptr inbounds i8, ptr %148, i64 16
  store <2 x double> zeroinitializer, ptr %148, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %149, align 8, !tbaa !9
  %150 = add nsw i64 %offset.idx465, %131
  %151 = getelementptr inbounds double, ptr %43, i64 %150
  %152 = getelementptr inbounds i8, ptr %151, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %151, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %152, align 8, !tbaa !9
  %153 = getelementptr inbounds double, ptr %42, i64 %150
  %154 = getelementptr inbounds i8, ptr %153, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %153, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %154, align 8, !tbaa !9
  %index.next466 = add nuw i64 %index464, 4
  %155 = icmp eq i64 %index.next466, %n.vec460
  br i1 %155, label %middle.block455, label %vector.body463, !llvm.loop !11

middle.block455:                                  ; preds = %vector.body463
  %cmp.n467 = icmp eq i64 %n.vec460, %136
  br i1 %cmp.n467, label %.loopexit, label %.thread342.us.us.preheader468

.thread342.us.us.preheader468:                    ; preds = %middle.block455, %vector.memcheck449, %.thread342.us.us.preheader
  %indvars.iv396.ph = phi i64 [ 1, %vector.memcheck449 ], [ 1, %.thread342.us.us.preheader ], [ %ind.end461, %middle.block455 ]
  %156 = zext nneg i32 %101 to i64
  %157 = and i32 %101, 1
  %lcmp.mod476.not = icmp eq i32 %157, 0
  br i1 %lcmp.mod476.not, label %.thread342.us.us.prol.loopexit, label %.thread342.us.us.prol

.thread342.us.us.prol:                            ; preds = %.thread342.us.us.preheader468
  %158 = getelementptr inbounds double, ptr %47, i64 %indvars.iv396.ph
  store double 0.000000e+00, ptr %158, align 8, !tbaa !9
  %159 = add nsw i64 %indvars.iv396.ph, %131
  %160 = getelementptr inbounds double, ptr %43, i64 %159
  store double 1.000000e+00, ptr %160, align 8, !tbaa !9
  %161 = getelementptr inbounds double, ptr %42, i64 %159
  store double 1.000000e+00, ptr %161, align 8, !tbaa !9
  %indvars.iv.next397.prol = add nuw nsw i64 %indvars.iv396.ph, 1
  br label %.thread342.us.us.prol.loopexit

.thread342.us.us.prol.loopexit:                   ; preds = %.thread342.us.us.prol, %.thread342.us.us.preheader468
  %indvars.iv396.unr = phi i64 [ %indvars.iv396.ph, %.thread342.us.us.preheader468 ], [ %indvars.iv.next397.prol, %.thread342.us.us.prol ]
  %162 = icmp eq i64 %indvars.iv396.ph, %156
  br i1 %162, label %.loopexit, label %.thread342.us.us

.thread342.us.us:                                 ; preds = %.thread342.us.us.prol.loopexit, %.thread342.us.us
  %indvars.iv396 = phi i64 [ %indvars.iv.next397.1, %.thread342.us.us ], [ %indvars.iv396.unr, %.thread342.us.us.prol.loopexit ]
  %163 = getelementptr inbounds double, ptr %47, i64 %indvars.iv396
  store double 0.000000e+00, ptr %163, align 8, !tbaa !9
  %164 = add nsw i64 %indvars.iv396, %131
  %165 = getelementptr inbounds double, ptr %43, i64 %164
  store double 1.000000e+00, ptr %165, align 8, !tbaa !9
  %166 = getelementptr inbounds double, ptr %42, i64 %164
  store double 1.000000e+00, ptr %166, align 8, !tbaa !9
  %indvars.iv.next397 = add nuw nsw i64 %indvars.iv396, 1
  %167 = getelementptr double, ptr %14, i64 %indvars.iv396
  store double 0.000000e+00, ptr %167, align 8, !tbaa !9
  %168 = add nsw i64 %indvars.iv.next397, %131
  %169 = getelementptr inbounds double, ptr %43, i64 %168
  store double 1.000000e+00, ptr %169, align 8, !tbaa !9
  %170 = getelementptr inbounds double, ptr %42, i64 %168
  store double 1.000000e+00, ptr %170, align 8, !tbaa !9
  %indvars.iv.next397.1 = add nuw nsw i64 %indvars.iv396, 2
  %exitcond400.not.1 = icmp eq i64 %indvars.iv.next397.1, %wide.trip.count399
  br i1 %exitcond400.not.1, label %.loopexit, label %.thread342.us.us, !llvm.loop !15

.lr.ph363.split.us.split:                         ; preds = %.lr.ph363.split.us.split.preheader, %.thread342.us
  %indvars.iv391 = phi i64 [ 1, %.lr.ph363.split.us.split.preheader ], [ %indvars.iv.next392, %.thread342.us ]
  %171 = getelementptr inbounds double, ptr %47, i64 %indvars.iv391
  store double 0.000000e+00, ptr %171, align 8, !tbaa !9
  %172 = add nsw i64 %indvars.iv391, %131
  %173 = getelementptr inbounds double, ptr %43, i64 %172
  store double 1.000000e+00, ptr %173, align 8, !tbaa !9
  %174 = getelementptr inbounds double, ptr %42, i64 %172
  store double 1.000000e+00, ptr %174, align 8, !tbaa !9
  %175 = add nsw i64 %indvars.iv391, %132
  %176 = getelementptr inbounds double, ptr %43, i64 %175
  store double 0.000000e+00, ptr %176, align 8, !tbaa !9
  %177 = getelementptr inbounds double, ptr %42, i64 %175
  store double 0.000000e+00, ptr %177, align 8, !tbaa !9
  br i1 %127, label %178, label %.thread342.us

178:                                              ; preds = %.lr.ph363.split.us.split
  %179 = add nsw i64 %indvars.iv391, %133
  %180 = getelementptr inbounds double, ptr %43, i64 %179
  store double 1.000000e+00, ptr %180, align 8, !tbaa !9
  %181 = getelementptr inbounds double, ptr %42, i64 %179
  store double 1.000000e+00, ptr %181, align 8, !tbaa !9
  br label %.thread342.us

.thread342.us:                                    ; preds = %178, %.lr.ph363.split.us.split
  %indvars.iv.next392 = add nuw nsw i64 %indvars.iv391, 1
  %exitcond395.not = icmp eq i64 %indvars.iv.next392, %wide.trip.count394
  br i1 %exitcond395.not, label %.loopexit, label %.lr.ph363.split.us.split, !llvm.loop !16

.lr.ph:                                           ; preds = %121
  store double 0.000000e+00, ptr %13, align 8, !tbaa !9
  %182 = load i32, ptr %15, align 4, !tbaa !5
  %183 = icmp sgt i32 %182, 0
  %184 = shl i32 %40, 1
  %185 = icmp ugt i32 %182, 2
  %186 = mul nsw i32 %40, 3
  br i1 %183, label %.lr.ph.split.us, label %.thread345.preheader

.thread345.preheader:                             ; preds = %.lr.ph
  %187 = add nuw i32 %101, 1
  %wide.trip.count = zext i32 %187 to i64
  %188 = zext nneg i32 %101 to i64
  %min.iters.check = icmp ult i32 %101, 4
  br i1 %min.iters.check, label %.thread345.preheader473, label %vector.ph

.thread345.preheader473:                          ; preds = %middle.block, %.thread345.preheader
  %indvars.iv.ph = phi i64 [ 1, %.thread345.preheader ], [ %ind.end, %middle.block ]
  br label %.thread345

vector.ph:                                        ; preds = %.thread345.preheader
  %n.vec = and i64 %188, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %189 = getelementptr double, ptr %14, i64 %index
  %190 = getelementptr inbounds i8, ptr %189, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %189, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %190, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %191 = icmp eq i64 %index.next, %n.vec
  br i1 %191, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %188
  br i1 %cmp.n, label %._crit_edge, label %.thread345.preheader473

.lr.ph.split.us:                                  ; preds = %.lr.ph
  %.not346 = icmp eq i32 %182, 1
  %192 = sext i32 %40 to i64
  br i1 %.not346, label %.thread345.us.us.preheader, label %.lr.ph.split.us.split.preheader

.lr.ph.split.us.split.preheader:                  ; preds = %.lr.ph.split.us
  %193 = sext i32 %184 to i64
  %194 = sext i32 %186 to i64
  %195 = add nuw i32 %101, 1
  %wide.trip.count373 = zext i32 %195 to i64
  br label %.lr.ph.split.us.split

.thread345.us.us.preheader:                       ; preds = %.lr.ph.split.us
  %196 = add nuw i32 %101, 1
  %wide.trip.count378 = zext i32 %196 to i64
  %197 = zext nneg i32 %101 to i64
  %min.iters.check438 = icmp ult i32 %101, 18
  br i1 %min.iters.check438, label %.thread345.us.us.preheader471, label %vector.memcheck

vector.memcheck:                                  ; preds = %.thread345.us.us.preheader
  %198 = shl nsw i64 %192, 3
  %199 = add i64 %198, %29
  %200 = shl nsw i64 %41, 3
  %201 = add i64 %199, %200
  %202 = add i64 %201, 8
  %203 = sub i64 %202, %28
  %diff.check = icmp ult i64 %203, 32
  %204 = add i64 %198, %27
  %205 = add i64 %204, %200
  %206 = add i64 %205, 8
  %207 = sub i64 %206, %28
  %diff.check433 = icmp ult i64 %207, 32
  %conflict.rdx = or i1 %diff.check, %diff.check433
  %208 = sub i64 %27, %29
  %diff.check434 = icmp ult i64 %208, 32
  %conflict.rdx435 = or i1 %conflict.rdx, %diff.check434
  br i1 %conflict.rdx435, label %.thread345.us.us.preheader471, label %vector.ph439

vector.ph439:                                     ; preds = %vector.memcheck
  %n.vec441 = and i64 %197, 2147483644
  %ind.end442 = or disjoint i64 %n.vec441, 1
  br label %vector.body444

vector.body444:                                   ; preds = %vector.body444, %vector.ph439
  %index445 = phi i64 [ 0, %vector.ph439 ], [ %index.next447, %vector.body444 ]
  %offset.idx446 = or disjoint i64 %index445, 1
  %209 = getelementptr double, ptr %14, i64 %index445
  %210 = getelementptr inbounds i8, ptr %209, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %209, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %210, align 8, !tbaa !9
  %211 = add nsw i64 %offset.idx446, %192
  %212 = getelementptr inbounds double, ptr %43, i64 %211
  %213 = getelementptr inbounds i8, ptr %212, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %212, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %213, align 8, !tbaa !9
  %214 = getelementptr inbounds double, ptr %42, i64 %211
  %215 = getelementptr inbounds i8, ptr %214, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %214, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %215, align 8, !tbaa !9
  %index.next447 = add nuw i64 %index445, 4
  %216 = icmp eq i64 %index.next447, %n.vec441
  br i1 %216, label %middle.block436, label %vector.body444, !llvm.loop !18

middle.block436:                                  ; preds = %vector.body444
  %cmp.n448 = icmp eq i64 %n.vec441, %197
  br i1 %cmp.n448, label %._crit_edge, label %.thread345.us.us.preheader471

.thread345.us.us.preheader471:                    ; preds = %middle.block436, %vector.memcheck, %.thread345.us.us.preheader
  %indvars.iv375.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.thread345.us.us.preheader ], [ %ind.end442, %middle.block436 ]
  %217 = zext nneg i32 %101 to i64
  %218 = and i32 %101, 1
  %lcmp.mod.not = icmp eq i32 %218, 0
  br i1 %lcmp.mod.not, label %.thread345.us.us.prol.loopexit, label %.thread345.us.us.prol

.thread345.us.us.prol:                            ; preds = %.thread345.us.us.preheader471
  %219 = getelementptr inbounds double, ptr %47, i64 %indvars.iv375.ph
  store double 1.000000e+00, ptr %219, align 8, !tbaa !9
  %220 = add nsw i64 %indvars.iv375.ph, %192
  %221 = getelementptr inbounds double, ptr %43, i64 %220
  store double 1.000000e+00, ptr %221, align 8, !tbaa !9
  %222 = getelementptr inbounds double, ptr %42, i64 %220
  store double 1.000000e+00, ptr %222, align 8, !tbaa !9
  %indvars.iv.next376.prol = add nuw nsw i64 %indvars.iv375.ph, 1
  br label %.thread345.us.us.prol.loopexit

.thread345.us.us.prol.loopexit:                   ; preds = %.thread345.us.us.prol, %.thread345.us.us.preheader471
  %indvars.iv375.unr = phi i64 [ %indvars.iv375.ph, %.thread345.us.us.preheader471 ], [ %indvars.iv.next376.prol, %.thread345.us.us.prol ]
  %223 = icmp eq i64 %indvars.iv375.ph, %217
  br i1 %223, label %._crit_edge, label %.thread345.us.us

.thread345.us.us:                                 ; preds = %.thread345.us.us.prol.loopexit, %.thread345.us.us
  %indvars.iv375 = phi i64 [ %indvars.iv.next376.1, %.thread345.us.us ], [ %indvars.iv375.unr, %.thread345.us.us.prol.loopexit ]
  %224 = getelementptr inbounds double, ptr %47, i64 %indvars.iv375
  store double 1.000000e+00, ptr %224, align 8, !tbaa !9
  %225 = add nsw i64 %indvars.iv375, %192
  %226 = getelementptr inbounds double, ptr %43, i64 %225
  store double 1.000000e+00, ptr %226, align 8, !tbaa !9
  %227 = getelementptr inbounds double, ptr %42, i64 %225
  store double 1.000000e+00, ptr %227, align 8, !tbaa !9
  %indvars.iv.next376 = add nuw nsw i64 %indvars.iv375, 1
  %228 = getelementptr double, ptr %14, i64 %indvars.iv375
  store double 1.000000e+00, ptr %228, align 8, !tbaa !9
  %229 = add nsw i64 %indvars.iv.next376, %192
  %230 = getelementptr inbounds double, ptr %43, i64 %229
  store double 1.000000e+00, ptr %230, align 8, !tbaa !9
  %231 = getelementptr inbounds double, ptr %42, i64 %229
  store double 1.000000e+00, ptr %231, align 8, !tbaa !9
  %indvars.iv.next376.1 = add nuw nsw i64 %indvars.iv375, 2
  %exitcond379.not.1 = icmp eq i64 %indvars.iv.next376.1, %wide.trip.count378
  br i1 %exitcond379.not.1, label %._crit_edge, label %.thread345.us.us, !llvm.loop !19

.lr.ph.split.us.split:                            ; preds = %.lr.ph.split.us.split.preheader, %.thread345.us
  %indvars.iv370 = phi i64 [ 1, %.lr.ph.split.us.split.preheader ], [ %indvars.iv.next371, %.thread345.us ]
  %232 = getelementptr inbounds double, ptr %47, i64 %indvars.iv370
  store double 1.000000e+00, ptr %232, align 8, !tbaa !9
  %233 = add nsw i64 %indvars.iv370, %192
  %234 = getelementptr inbounds double, ptr %43, i64 %233
  store double 1.000000e+00, ptr %234, align 8, !tbaa !9
  %235 = getelementptr inbounds double, ptr %42, i64 %233
  store double 1.000000e+00, ptr %235, align 8, !tbaa !9
  %236 = add nsw i64 %indvars.iv370, %193
  %237 = getelementptr inbounds double, ptr %43, i64 %236
  store double 1.000000e+00, ptr %237, align 8, !tbaa !9
  %238 = getelementptr inbounds double, ptr %42, i64 %236
  store double 1.000000e+00, ptr %238, align 8, !tbaa !9
  br i1 %185, label %239, label %.thread345.us

239:                                              ; preds = %.lr.ph.split.us.split
  %240 = add nsw i64 %indvars.iv370, %194
  %241 = getelementptr inbounds double, ptr %43, i64 %240
  store double 0.000000e+00, ptr %241, align 8, !tbaa !9
  %242 = getelementptr inbounds double, ptr %42, i64 %240
  store double 0.000000e+00, ptr %242, align 8, !tbaa !9
  br label %.thread345.us

.thread345.us:                                    ; preds = %239, %.lr.ph.split.us.split
  %indvars.iv.next371 = add nuw nsw i64 %indvars.iv370, 1
  %exitcond374.not = icmp eq i64 %indvars.iv.next371, %wide.trip.count373
  br i1 %exitcond374.not, label %._crit_edge, label %.lr.ph.split.us.split, !llvm.loop !20

.thread345:                                       ; preds = %.thread345.preheader473, %.thread345
  %indvars.iv = phi i64 [ %indvars.iv.next, %.thread345 ], [ %indvars.iv.ph, %.thread345.preheader473 ]
  %243 = getelementptr inbounds double, ptr %47, i64 %indvars.iv
  store double 1.000000e+00, ptr %243, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.thread345, !llvm.loop !21

._crit_edge:                                      ; preds = %.thread345, %.thread345.us, %.thread345.us.us.prol.loopexit, %.thread345.us.us, %middle.block, %middle.block436
  store i8 73, ptr %32, align 1, !tbaa !22
  %244 = call double @dlansy_(ptr noundef nonnull %32, ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %20) #6
  store double %244, ptr %34, align 8, !tbaa !9
  call void @dpocon_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %34, ptr noundef nonnull %13, ptr noundef %20, ptr noundef %21, ptr noundef nonnull %22) #6
  br i1 %81, label %255, label %245

245:                                              ; preds = %._crit_edge
  %246 = call i32 @ilaprec_(ptr noundef nonnull @.str.6) #6
  store i32 %246, ptr %36, align 4, !tbaa !5
  %247 = load i32, ptr %2, align 4, !tbaa !5
  %248 = sext i32 %247 to i64
  %249 = getelementptr double, ptr %48, i64 %248
  %250 = getelementptr i8, ptr %249, i64 8
  %251 = shl i32 %247, 1
  %252 = or disjoint i32 %251, 1
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds double, ptr %48, i64 %253
  call void @dla_porfsx_extended_(ptr noundef nonnull %36, ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %35, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %38, ptr noundef %16, ptr noundef %17, ptr noundef %250, ptr noundef %20, ptr noundef nonnull %254, ptr noundef %20, ptr noundef nonnull %13, ptr noundef nonnull %37, ptr noundef nonnull %39, ptr noundef nonnull %31, ptr noundef nonnull %33, ptr noundef nonnull %22) #6
  br label %255

255:                                              ; preds = %245, %._crit_edge
  %256 = load i32, ptr %2, align 4, !tbaa !5
  %257 = sitofp i32 %256 to double
  %258 = call double @sqrt(double noundef %257) #6
  %259 = fcmp ole double %258, 1.000000e+01
  %260 = select i1 %259, double 1.000000e+01, double %258
  %261 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %262 = fmul double %261, %260
  %263 = load i32, ptr %15, align 4, !tbaa !5
  %264 = icmp sgt i32 %263, 0
  %265 = load i32, ptr %38, align 4
  %266 = icmp sgt i32 %265, 0
  %or.cond = select i1 %264, i1 %266, i1 false
  br i1 %or.cond, label %267, label %.loopexit349

267:                                              ; preds = %255
  %268 = load i32, ptr %35, align 4, !tbaa !5
  %.not330 = icmp eq i32 %268, 0
  %c__0.c_n1 = select i1 %.not330, ptr @c__0, ptr @c_n1
  %269 = call double @dla_porcond_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %c__0.c_n1, ptr noundef %8, ptr noundef nonnull %22, ptr noundef %20, ptr noundef %21) #6
  %270 = load i32, ptr %3, align 4, !tbaa !5
  %.not331352 = icmp slt i32 %270, 1
  %.pre402 = load i32, ptr %15, align 4, !tbaa !5
  br i1 %.not331352, label %.loopexit349, label %.lr.ph355

.lr.ph355:                                        ; preds = %267
  %271 = shl i32 %40, 1
  %272 = fcmp olt double %269, %61
  %273 = mul nsw i32 %40, 3
  %274 = sext i32 %271 to i64
  %275 = sext i32 %40 to i64
  %276 = sext i32 %273 to i64
  %277 = add nuw i32 %270, 1
  %wide.trip.count383 = zext i32 %277 to i64
  %invariant.gep409 = getelementptr double, ptr %43, i64 %274
  %invariant.gep411 = getelementptr double, ptr %43, i64 %274
  %invariant.gep413 = getelementptr double, ptr %43, i64 %275
  %invariant.gep415 = getelementptr double, ptr %43, i64 %274
  %invariant.gep417 = getelementptr double, ptr %43, i64 %275
  %invariant.gep419 = getelementptr double, ptr %43, i64 %276
  br label %278

278:                                              ; preds = %.lr.ph355, %300
  %279 = phi i32 [ %.pre402, %.lr.ph355 ], [ %297, %300 ]
  %indvars.iv380 = phi i64 [ 1, %.lr.ph355 ], [ %indvars.iv.next381, %300 ]
  %280 = icmp sgt i32 %279, 1
  br i1 %280, label %281, label %285

281:                                              ; preds = %278
  %gep410 = getelementptr double, ptr %invariant.gep409, i64 %indvars.iv380
  %282 = load double, ptr %gep410, align 8, !tbaa !9
  %283 = fcmp ogt double %282, 1.000000e+00
  br i1 %283, label %284, label %285

284:                                              ; preds = %281
  store double 1.000000e+00, ptr %gep410, align 8, !tbaa !9
  br label %285

285:                                              ; preds = %284, %281, %278
  br i1 %272, label %286, label %292

286:                                              ; preds = %285
  %gep416 = getelementptr double, ptr %invariant.gep415, i64 %indvars.iv380
  store double 1.000000e+00, ptr %gep416, align 8, !tbaa !9
  %gep418 = getelementptr double, ptr %invariant.gep417, i64 %indvars.iv380
  store double 0.000000e+00, ptr %gep418, align 8, !tbaa !9
  %287 = load i32, ptr %22, align 4, !tbaa !5
  %288 = load i32, ptr %2, align 4, !tbaa !5
  %.not333 = icmp sgt i32 %287, %288
  br i1 %.not333, label %296, label %289

289:                                              ; preds = %286
  %290 = trunc nuw nsw i64 %indvars.iv380 to i32
  %291 = add nsw i32 %288, %290
  store i32 %291, ptr %22, align 4, !tbaa !5
  %.pre401 = load i32, ptr %15, align 4, !tbaa !5
  br label %296

292:                                              ; preds = %285
  %gep412 = getelementptr double, ptr %invariant.gep411, i64 %indvars.iv380
  %293 = load double, ptr %gep412, align 8, !tbaa !9
  %294 = fcmp olt double %293, %262
  br i1 %294, label %295, label %296

295:                                              ; preds = %292
  store double %262, ptr %gep412, align 8, !tbaa !9
  %gep414 = getelementptr double, ptr %invariant.gep413, i64 %indvars.iv380
  store double 1.000000e+00, ptr %gep414, align 8, !tbaa !9
  br label %296

296:                                              ; preds = %292, %295, %286, %289
  %297 = phi i32 [ %279, %292 ], [ %279, %295 ], [ %279, %286 ], [ %.pre401, %289 ]
  %298 = icmp sgt i32 %297, 2
  br i1 %298, label %299, label %300

299:                                              ; preds = %296
  %gep420 = getelementptr double, ptr %invariant.gep419, i64 %indvars.iv380
  store double %269, ptr %gep420, align 8, !tbaa !9
  br label %300

300:                                              ; preds = %296, %299
  %indvars.iv.next381 = add nuw nsw i64 %indvars.iv380, 1
  %exitcond384.not = icmp eq i64 %indvars.iv.next381, %wide.trip.count383
  br i1 %exitcond384.not, label %.loopexit349, label %278, !llvm.loop !23

.loopexit349:                                     ; preds = %300, %267, %255
  %301 = phi i32 [ %.pre402, %267 ], [ %263, %255 ], [ %297, %300 ]
  %302 = icmp sgt i32 %301, 0
  %303 = load i32, ptr %38, align 4
  %304 = icmp sgt i32 %303, 1
  %or.cond3 = select i1 %302, i1 %304, i1 false
  br i1 %or.cond3, label %305, label %.loopexit

305:                                              ; preds = %.loopexit349
  %306 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %307 = call double @sqrt(double noundef %306) #6
  %308 = load i32, ptr %3, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %46, i64 8
  %.not332356 = icmp slt i32 %308, 1
  br i1 %.not332356, label %.loopexit, label %.lr.ph359

.lr.ph359:                                        ; preds = %305
  %309 = shl i32 %40, 1
  %310 = getelementptr inbounds i8, ptr %19, i64 16
  %311 = mul nsw i32 %40, 3
  %312 = sext i32 %309 to i64
  %313 = sext i32 %44 to i64
  %314 = sext i32 %40 to i64
  %315 = sext i32 %311 to i64
  %invariant.gep421 = getelementptr double, ptr %42, i64 %312
  %invariant.gep423 = getelementptr double, ptr %42, i64 %314
  %invariant.gep425 = getelementptr double, ptr %42, i64 %314
  %invariant.gep427 = getelementptr double, ptr %42, i64 %315
  %316 = zext nneg i32 %308 to i64
  br label %317

317:                                              ; preds = %.lr.ph359, %350
  %indvars.iv385 = phi i64 [ 1, %.lr.ph359 ], [ %indvars.iv.next386, %350 ]
  %gep422 = getelementptr double, ptr %invariant.gep421, i64 %indvars.iv385
  %318 = load double, ptr %gep422, align 8, !tbaa !9
  %319 = fcmp olt double %318, %307
  br i1 %319, label %320, label %323

320:                                              ; preds = %317
  %321 = mul nsw i64 %indvars.iv385, %313
  %gep = getelementptr double, ptr %invariant.gep, i64 %321
  %322 = call double @dla_porcond_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull @c__1, ptr noundef %gep, ptr noundef nonnull %22, ptr noundef %20, ptr noundef %21) #6
  br label %323

323:                                              ; preds = %317, %320
  %.1 = phi double [ %322, %320 ], [ 0.000000e+00, %317 ]
  %324 = load i32, ptr %15, align 4, !tbaa !5
  %325 = icmp sgt i32 %324, 1
  br i1 %325, label %326, label %330

326:                                              ; preds = %323
  %327 = load double, ptr %gep422, align 8, !tbaa !9
  %328 = fcmp ogt double %327, 1.000000e+00
  br i1 %328, label %329, label %330

329:                                              ; preds = %326
  store double 1.000000e+00, ptr %gep422, align 8, !tbaa !9
  br label %330

330:                                              ; preds = %329, %326, %323
  %331 = fcmp olt double %.1, %61
  br i1 %331, label %332, label %342

332:                                              ; preds = %330
  store double 1.000000e+00, ptr %gep422, align 8, !tbaa !9
  %gep426 = getelementptr double, ptr %invariant.gep425, i64 %indvars.iv385
  store double 0.000000e+00, ptr %gep426, align 8, !tbaa !9
  %333 = load double, ptr %310, align 8, !tbaa !9
  %334 = fcmp oeq double %333, 1.000000e+00
  br i1 %334, label %335, label %346

335:                                              ; preds = %332
  %336 = load i32, ptr %22, align 4, !tbaa !5
  %337 = load i32, ptr %2, align 4, !tbaa !5
  %338 = trunc nuw nsw i64 %indvars.iv385 to i32
  %339 = add nsw i32 %337, %338
  %340 = icmp slt i32 %336, %339
  br i1 %340, label %341, label %346

341:                                              ; preds = %335
  store i32 %339, ptr %22, align 4, !tbaa !5
  %.pre = load i32, ptr %15, align 4, !tbaa !5
  br label %346

342:                                              ; preds = %330
  %343 = load double, ptr %gep422, align 8, !tbaa !9
  %344 = fcmp olt double %343, %262
  br i1 %344, label %345, label %346

345:                                              ; preds = %342
  store double %262, ptr %gep422, align 8, !tbaa !9
  %gep424 = getelementptr double, ptr %invariant.gep423, i64 %indvars.iv385
  store double 1.000000e+00, ptr %gep424, align 8, !tbaa !9
  br label %346

346:                                              ; preds = %342, %345, %332, %335, %341
  %347 = phi i32 [ %324, %342 ], [ %324, %345 ], [ %324, %332 ], [ %324, %335 ], [ %.pre, %341 ]
  %348 = icmp sgt i32 %347, 2
  br i1 %348, label %349, label %350

349:                                              ; preds = %346
  %gep428 = getelementptr double, ptr %invariant.gep427, i64 %indvars.iv385
  store double %.1, ptr %gep428, align 8, !tbaa !9
  br label %350

350:                                              ; preds = %346, %349
  %indvars.iv.next386 = add nuw nsw i64 %indvars.iv385, 1
  %.not332.not = icmp ult i64 %indvars.iv385, %316
  br i1 %.not332.not, label %317, label %.loopexit, !llvm.loop !24

.loopexit:                                        ; preds = %350, %.thread342.us, %.thread342.us.us.prol.loopexit, %.thread342.us.us, %middle.block455, %.thread403, %.thread342.preheader, %305, %123, %.loopexit349, %.thread338
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #6
  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 double @dlamch_(ptr noundef) local_unnamed_addr #2

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 double @dlansy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @ilaprec_(ptr noundef) local_unnamed_addr #2

declare void @dla_porfsx_extended_(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, 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 nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

declare double @dla_porcond_(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.umax.i32(i32, i32) #4

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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 = { mustprogress nofree nounwind willreturn memory(write) "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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { 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, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !12, !13}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12, !13, !14}
!18 = distinct !{!18, !12, !13, !14}
!19 = distinct !{!19, !12, !13}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12, !14, !13}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass